@okta/okta-auth-js 7.0.1 → 7.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 +2 -0
- package/cjs/authn/AuthnTransactionImpl.js +6 -8
- package/cjs/authn/AuthnTransactionImpl.js.map +1 -1
- package/cjs/authn/api.js +3 -18
- package/cjs/authn/api.js.map +1 -1
- package/cjs/authn/factory.js +1 -7
- package/cjs/authn/factory.js.map +1 -1
- package/cjs/authn/index.js +0 -5
- package/cjs/authn/index.js.map +1 -1
- package/cjs/authn/mixin.js +14 -22
- package/cjs/authn/mixin.js.map +1 -1
- package/cjs/authn/util/flattenEmbedded.js +5 -12
- package/cjs/authn/util/flattenEmbedded.js.map +1 -1
- package/cjs/authn/util/link2fn.js +0 -22
- package/cjs/authn/util/link2fn.js.map +1 -1
- package/cjs/authn/util/links2fns.js +0 -12
- package/cjs/authn/util/links2fns.js.map +1 -1
- package/cjs/authn/util/poll.js +9 -27
- package/cjs/authn/util/poll.js.map +1 -1
- package/cjs/authn/util/stateToken.js +3 -4
- package/cjs/authn/util/stateToken.js.map +1 -1
- package/cjs/base/factory.js +6 -14
- package/cjs/base/factory.js.map +1 -1
- package/cjs/base/index.js +0 -5
- package/cjs/base/index.js.map +1 -1
- package/cjs/base/options.js +1 -2
- package/cjs/base/options.js.map +1 -1
- package/cjs/browser/browserStorage.js +15 -43
- package/cjs/browser/browserStorage.js.map +1 -1
- package/cjs/browser/fingerprint.js +3 -15
- package/cjs/browser/fingerprint.js.map +1 -1
- package/cjs/clock.js +5 -7
- package/cjs/clock.js.map +1 -1
- package/cjs/constants.js +4 -3
- package/cjs/constants.js.map +1 -1
- package/cjs/core/AuthStateManager.js +24 -48
- package/cjs/core/AuthStateManager.js.map +1 -1
- package/cjs/core/ServiceManager/browser.js +13 -33
- package/cjs/core/ServiceManager/browser.js.map +1 -1
- package/cjs/core/ServiceManager/index.js +0 -1
- package/cjs/core/ServiceManager/index.js.map +1 -1
- package/cjs/core/ServiceManager/node.js +3 -9
- package/cjs/core/ServiceManager/node.js.map +1 -1
- package/cjs/core/factory.js +0 -7
- package/cjs/core/factory.js.map +1 -1
- package/cjs/core/index.js +0 -13
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/mixin.js +16 -20
- package/cjs/core/mixin.js.map +1 -1
- package/cjs/core/options.js +1 -3
- package/cjs/core/options.js.map +1 -1
- package/cjs/core/storage.js +0 -2
- package/cjs/core/storage.js.map +1 -1
- package/cjs/core/types/index.js +0 -5
- package/cjs/core/types/index.js.map +1 -1
- package/cjs/crypto/base64.js +9 -22
- package/cjs/crypto/base64.js.map +1 -1
- package/cjs/crypto/browser.js +0 -4
- package/cjs/crypto/browser.js.map +1 -1
- package/cjs/crypto/index.js +0 -9
- package/cjs/crypto/index.js.map +1 -1
- package/cjs/crypto/node.js +0 -13
- package/cjs/crypto/node.js.map +1 -1
- package/cjs/crypto/oidcHash.js +1 -4
- package/cjs/crypto/oidcHash.js.map +1 -1
- package/cjs/crypto/verifyToken.js +6 -7
- package/cjs/crypto/verifyToken.js.map +1 -1
- package/cjs/crypto/webcrypto.js +0 -1
- package/cjs/crypto/webcrypto.js.map +1 -1
- package/cjs/errors/AuthApiError.js +1 -7
- package/cjs/errors/AuthApiError.js.map +1 -1
- package/cjs/errors/AuthPollStopError.js +1 -5
- package/cjs/errors/AuthPollStopError.js.map +1 -1
- package/cjs/errors/AuthSdkError.js +1 -6
- package/cjs/errors/AuthSdkError.js.map +1 -1
- package/cjs/errors/CustomError.js +1 -4
- package/cjs/errors/CustomError.js.map +1 -1
- package/cjs/errors/OAuthError.js +4 -7
- package/cjs/errors/OAuthError.js.map +1 -1
- package/cjs/errors/index.js +1 -9
- package/cjs/errors/index.js.map +1 -1
- package/cjs/exports/authn.js +0 -9
- package/cjs/exports/authn.js.map +1 -1
- package/cjs/exports/cdn/authn.js +0 -2
- package/cjs/exports/cdn/authn.js.map +1 -1
- package/cjs/exports/cdn/core.js +0 -2
- package/cjs/exports/cdn/core.js.map +1 -1
- package/cjs/exports/cdn/default.js +0 -2
- package/cjs/exports/cdn/default.js.map +1 -1
- package/cjs/exports/cdn/idx.js +0 -2
- package/cjs/exports/cdn/idx.js.map +1 -1
- package/cjs/exports/cdn/myaccount.js +0 -2
- package/cjs/exports/cdn/myaccount.js.map +1 -1
- package/cjs/exports/common.js +0 -22
- package/cjs/exports/common.js.map +1 -1
- package/cjs/exports/core.js +0 -9
- package/cjs/exports/core.js.map +1 -1
- package/cjs/exports/default.js +2 -12
- package/cjs/exports/default.js.map +1 -1
- package/cjs/exports/idx.js +3 -7
- package/cjs/exports/idx.js.map +1 -1
- package/cjs/exports/myaccount.js +0 -9
- package/cjs/exports/myaccount.js.map +1 -1
- package/cjs/features.js +1 -18
- package/cjs/features.js.map +1 -1
- package/cjs/fetch/fetchRequest.js +6 -20
- package/cjs/fetch/fetchRequest.js.map +1 -1
- package/cjs/http/OktaUserAgent.js +3 -11
- package/cjs/http/OktaUserAgent.js.map +1 -1
- package/cjs/http/headers.js +1 -1
- package/cjs/http/headers.js.map +1 -1
- package/cjs/http/index.js +0 -11
- package/cjs/http/index.js.map +1 -1
- package/cjs/http/mixin.js +2 -10
- package/cjs/http/mixin.js.map +1 -1
- package/cjs/http/options.js +1 -5
- package/cjs/http/options.js.map +1 -1
- package/cjs/http/request.js +75 -57
- package/cjs/http/request.js.map +1 -1
- package/cjs/idx/IdxTransactionManager.js +2 -22
- package/cjs/idx/IdxTransactionManager.js.map +1 -1
- package/cjs/idx/authenticate.js +3 -5
- package/cjs/idx/authenticate.js.map +1 -1
- package/cjs/idx/authenticator/Authenticator.js +2 -4
- package/cjs/idx/authenticator/Authenticator.js.map +1 -1
- package/cjs/idx/authenticator/OktaPassword.js +2 -10
- package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
- package/cjs/idx/authenticator/OktaVerifyTotp.js +0 -6
- package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +0 -10
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionVerification.js +1 -10
- package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +2 -10
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/WebauthnEnrollment.js +0 -8
- package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -1
- package/cjs/idx/authenticator/WebauthnVerification.js +0 -8
- package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -1
- package/cjs/idx/authenticator/getAuthenticator.js +0 -15
- package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/index.js +0 -15
- package/cjs/idx/authenticator/index.js.map +1 -1
- package/cjs/idx/authenticator/util.js +8 -18
- package/cjs/idx/authenticator/util.js.map +1 -1
- package/cjs/idx/cancel.js +3 -4
- package/cjs/idx/cancel.js.map +1 -1
- package/cjs/idx/emailVerify.js +5 -13
- package/cjs/idx/emailVerify.js.map +1 -1
- package/cjs/idx/factory/OktaAuthIdx.js +0 -3
- package/cjs/idx/factory/OktaAuthIdx.js.map +1 -1
- package/cjs/idx/factory/api.js +1 -17
- package/cjs/idx/factory/api.js.map +1 -1
- package/cjs/idx/factory/index.js +0 -3
- package/cjs/idx/factory/index.js.map +1 -1
- package/cjs/idx/flow/AccountUnlockFlow.js +1 -2
- package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -1
- package/cjs/idx/flow/AuthenticationFlow.js +1 -2
- package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
- package/cjs/idx/flow/FlowSpecification.js +2 -13
- package/cjs/idx/flow/FlowSpecification.js.map +1 -1
- package/cjs/idx/flow/PasswordRecoveryFlow.js +1 -2
- package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
- package/cjs/idx/flow/RegistrationFlow.js +1 -2
- package/cjs/idx/flow/RegistrationFlow.js.map +1 -1
- package/cjs/idx/flow/index.js +0 -11
- package/cjs/idx/flow/index.js.map +1 -1
- package/cjs/idx/handleInteractionCodeRedirect.js +7 -12
- package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
- package/cjs/idx/idxState/index.js +1 -11
- package/cjs/idx/idxState/index.js.map +1 -1
- package/cjs/idx/idxState/v1/actionParser.js +1 -12
- package/cjs/idx/idxState/v1/actionParser.js.map +1 -1
- package/cjs/idx/idxState/v1/generateIdxAction.js +10 -15
- package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
- package/cjs/idx/idxState/v1/idxResponseParser.js +7 -23
- package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
- package/cjs/idx/idxState/v1/makeIdxState.js +2 -10
- package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
- package/cjs/idx/idxState/v1/parsers.js +0 -2
- package/cjs/idx/idxState/v1/parsers.js.map +1 -1
- package/cjs/idx/idxState/v1/remediationParser.js +2 -4
- package/cjs/idx/idxState/v1/remediationParser.js.map +1 -1
- package/cjs/idx/index.js +0 -26
- package/cjs/idx/index.js.map +1 -1
- package/cjs/idx/interact.js +18 -18
- package/cjs/idx/interact.js.map +1 -1
- package/cjs/idx/introspect.js +5 -14
- package/cjs/idx/introspect.js.map +1 -1
- package/cjs/idx/mixin.js +0 -9
- package/cjs/idx/mixin.js.map +1 -1
- package/cjs/idx/options.js +2 -3
- package/cjs/idx/options.js.map +1 -1
- package/cjs/idx/poll.js +1 -10
- package/cjs/idx/poll.js.map +1 -1
- package/cjs/idx/proceed.js +3 -9
- package/cjs/idx/proceed.js.map +1 -1
- package/cjs/idx/recoverPassword.js +3 -4
- package/cjs/idx/recoverPassword.js.map +1 -1
- package/cjs/idx/register.js +5 -11
- package/cjs/idx/register.js.map +1 -1
- package/cjs/idx/remediate.js +24 -45
- package/cjs/idx/remediate.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +7 -16
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorVerificationData.js +7 -15
- package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
- package/cjs/idx/remediators/Base/AuthenticatorData.js +7 -22
- package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
- package/cjs/idx/remediators/Base/Remediator.js +38 -67
- package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
- package/cjs/idx/remediators/Base/SelectAuthenticator.js +13 -30
- package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js +5 -13
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengeAuthenticator.js +1 -5
- package/cjs/idx/remediators/ChallengeAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengePoll.js +1 -6
- package/cjs/idx/remediators/ChallengePoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollAuthenticator.js +1 -5
- package/cjs/idx/remediators/EnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/EnrollPoll.js +5 -12
- package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollProfile.js +8 -30
- package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/EnrollmentChannelData.js +5 -13
- package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +13 -19
- package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/index.js +0 -1
- package/cjs/idx/remediators/GenericRemediator/index.js.map +1 -1
- package/cjs/idx/remediators/GenericRemediator/util.js +19 -31
- package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -1
- package/cjs/idx/remediators/Identify.js +3 -12
- package/cjs/idx/remediators/Identify.js.map +1 -1
- package/cjs/idx/remediators/ReEnrollAuthenticator.js +3 -10
- package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/RedirectIdp.js +1 -7
- package/cjs/idx/remediators/RedirectIdp.js.map +1 -1
- package/cjs/idx/remediators/ResetAuthenticator.js +1 -5
- package/cjs/idx/remediators/ResetAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +3 -11
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +1 -5
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +6 -15
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
- package/cjs/idx/remediators/SelectEnrollProfile.js +1 -6
- package/cjs/idx/remediators/SelectEnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/SelectEnrollmentChannel.js +5 -16
- package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
- package/cjs/idx/remediators/Skip.js +1 -6
- package/cjs/idx/remediators/Skip.js.map +1 -1
- package/cjs/idx/remediators/index.js +0 -39
- package/cjs/idx/remediators/index.js.map +1 -1
- package/cjs/idx/remediators/util.js +1 -7
- package/cjs/idx/remediators/util.js.map +1 -1
- package/cjs/idx/run.js +37 -52
- package/cjs/idx/run.js.map +1 -1
- package/cjs/idx/startTransaction.js +1 -2
- package/cjs/idx/startTransaction.js.map +1 -1
- package/cjs/idx/storage.js +3 -22
- package/cjs/idx/storage.js.map +1 -1
- package/cjs/idx/transactionMeta.js +24 -42
- package/cjs/idx/transactionMeta.js.map +1 -1
- package/cjs/idx/types/api.js +1 -9
- package/cjs/idx/types/api.js.map +1 -1
- package/cjs/idx/types/idx-js.js +3 -3
- package/cjs/idx/types/idx-js.js.map +1 -1
- package/cjs/idx/types/index.js +0 -7
- package/cjs/idx/types/index.js.map +1 -1
- package/cjs/idx/types/meta.js.map +1 -1
- package/cjs/idx/types/options.js.map +1 -1
- package/cjs/idx/unlockAccount.js +7 -11
- package/cjs/idx/unlockAccount.js.map +1 -1
- package/cjs/idx/util.js +24 -76
- package/cjs/idx/util.js.map +1 -1
- package/cjs/idx/webauthn.js +13 -18
- package/cjs/idx/webauthn.js.map +1 -1
- package/cjs/myaccount/api.js +0 -5
- package/cjs/myaccount/api.js.map +1 -1
- package/cjs/myaccount/emailApi.js +6 -21
- package/cjs/myaccount/emailApi.js.map +1 -1
- package/cjs/myaccount/factory.js +0 -3
- package/cjs/myaccount/factory.js.map +1 -1
- package/cjs/myaccount/index.js +0 -7
- package/cjs/myaccount/index.js.map +1 -1
- package/cjs/myaccount/mixin.js +0 -5
- package/cjs/myaccount/mixin.js.map +1 -1
- package/cjs/myaccount/phoneApi.js +5 -18
- package/cjs/myaccount/phoneApi.js.map +1 -1
- package/cjs/myaccount/profileApi.js +2 -9
- package/cjs/myaccount/profileApi.js.map +1 -1
- package/cjs/myaccount/request.js +12 -78
- package/cjs/myaccount/request.js.map +1 -1
- package/cjs/myaccount/transactions/Base.js +5 -7
- package/cjs/myaccount/transactions/Base.js.map +1 -1
- package/cjs/myaccount/transactions/EmailChallengeTransaction.js +5 -10
- package/cjs/myaccount/transactions/EmailChallengeTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/EmailStatusTransaction.js +2 -7
- package/cjs/myaccount/transactions/EmailStatusTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/EmailTransaction.js +5 -13
- package/cjs/myaccount/transactions/EmailTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/PhoneTransaction.js +5 -12
- package/cjs/myaccount/transactions/PhoneTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/ProfileSchemaTransaction.js +0 -5
- package/cjs/myaccount/transactions/ProfileSchemaTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/ProfileTransaction.js +0 -5
- package/cjs/myaccount/transactions/ProfileTransaction.js.map +1 -1
- package/cjs/myaccount/transactions/index.js +0 -8
- package/cjs/myaccount/transactions/index.js.map +1 -1
- package/cjs/myaccount/types.js +0 -5
- package/cjs/myaccount/types.js.map +1 -1
- package/cjs/oidc/TokenManager.js +39 -100
- package/cjs/oidc/TokenManager.js.map +1 -1
- package/cjs/oidc/TransactionManager.js +19 -26
- package/cjs/oidc/TransactionManager.js.map +1 -1
- package/cjs/oidc/decodeToken.js +1 -5
- package/cjs/oidc/decodeToken.js.map +1 -1
- package/cjs/oidc/endpoints/authorize.js +9 -13
- package/cjs/oidc/endpoints/authorize.js.map +1 -1
- package/cjs/oidc/endpoints/index.js +0 -5
- package/cjs/oidc/endpoints/index.js.map +1 -1
- package/cjs/oidc/endpoints/token.js +5 -17
- package/cjs/oidc/endpoints/token.js.map +1 -1
- package/cjs/oidc/endpoints/well-known.js +7 -14
- package/cjs/oidc/endpoints/well-known.js.map +1 -1
- package/cjs/oidc/exchangeCodeForTokens.js +7 -12
- package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
- package/cjs/oidc/factory/OktaAuthOAuth.js +0 -6
- package/cjs/oidc/factory/OktaAuthOAuth.js.map +1 -1
- package/cjs/oidc/factory/api.js +6 -20
- package/cjs/oidc/factory/api.js.map +1 -1
- package/cjs/oidc/factory/index.js +0 -3
- package/cjs/oidc/factory/index.js.map +1 -1
- package/cjs/oidc/getToken.js +18 -30
- package/cjs/oidc/getToken.js.map +1 -1
- package/cjs/oidc/getUserInfo.js +1 -15
- package/cjs/oidc/getUserInfo.js.map +1 -1
- package/cjs/oidc/getWithPopup.js +4 -8
- package/cjs/oidc/getWithPopup.js.map +1 -1
- package/cjs/oidc/getWithRedirect.js +1 -8
- package/cjs/oidc/getWithRedirect.js.map +1 -1
- package/cjs/oidc/getWithoutPrompt.js +1 -5
- package/cjs/oidc/getWithoutPrompt.js.map +1 -1
- package/cjs/oidc/handleOAuthResponse.js +23 -40
- package/cjs/oidc/handleOAuthResponse.js.map +1 -1
- package/cjs/oidc/index.js +0 -32
- package/cjs/oidc/index.js.map +1 -1
- package/cjs/oidc/mixin/browser.js +6 -18
- package/cjs/oidc/mixin/browser.js.map +1 -1
- package/cjs/oidc/mixin/index.js +37 -89
- package/cjs/oidc/mixin/index.js.map +1 -1
- package/cjs/oidc/mixin/node.js +2 -9
- package/cjs/oidc/mixin/node.js.map +1 -1
- package/cjs/oidc/options/OAuthOptionsConstructor.js +17 -24
- package/cjs/oidc/options/OAuthOptionsConstructor.js.map +1 -1
- package/cjs/oidc/options/browser.js.map +1 -1
- package/cjs/oidc/options/index.js +0 -1
- package/cjs/oidc/options/index.js.map +1 -1
- package/cjs/oidc/options/node.js.map +1 -1
- package/cjs/oidc/parseFromUrl.js +1 -32
- package/cjs/oidc/parseFromUrl.js.map +1 -1
- package/cjs/oidc/renewToken.js +5 -16
- package/cjs/oidc/renewToken.js.map +1 -1
- package/cjs/oidc/renewTokens.js +3 -15
- package/cjs/oidc/renewTokens.js.map +1 -1
- package/cjs/oidc/renewTokensWithRefresh.js +3 -13
- package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
- package/cjs/oidc/revokeToken.js +3 -14
- package/cjs/oidc/revokeToken.js.map +1 -1
- package/cjs/oidc/storage.js +0 -8
- package/cjs/oidc/storage.js.map +1 -1
- package/cjs/oidc/types/Token.js +1 -5
- package/cjs/oidc/types/Token.js.map +1 -1
- package/cjs/oidc/types/TokenManager.js +1 -1
- package/cjs/oidc/types/TokenManager.js.map +1 -1
- package/cjs/oidc/types/Transaction.js +1 -12
- package/cjs/oidc/types/Transaction.js.map +1 -1
- package/cjs/oidc/types/UserClaims.js.map +1 -1
- package/cjs/oidc/types/api.js.map +1 -1
- package/cjs/oidc/types/index.js +0 -21
- package/cjs/oidc/types/index.js.map +1 -1
- package/cjs/oidc/types/meta.js.map +1 -1
- package/cjs/oidc/types/options.js.map +1 -1
- package/cjs/oidc/types/proto.js.map +1 -1
- package/cjs/oidc/util/browser.js +4 -13
- package/cjs/oidc/util/browser.js.map +1 -1
- package/cjs/oidc/util/defaultTokenParams.js +5 -5
- package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
- package/cjs/oidc/util/errors.js +3 -8
- package/cjs/oidc/util/errors.js.map +1 -1
- package/cjs/oidc/util/index.js +0 -24
- package/cjs/oidc/util/index.js.map +1 -1
- package/cjs/oidc/util/loginRedirect.js +11 -25
- package/cjs/oidc/util/loginRedirect.js.map +1 -1
- package/cjs/oidc/util/oauth.js +3 -12
- package/cjs/oidc/util/oauth.js.map +1 -1
- package/cjs/oidc/util/oauthMeta.js +5 -6
- package/cjs/oidc/util/oauthMeta.js.map +1 -1
- package/cjs/oidc/util/pkce.js +1 -12
- package/cjs/oidc/util/pkce.js.map +1 -1
- package/cjs/oidc/util/prepareTokenParams.js +13 -26
- package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
- package/cjs/oidc/util/refreshToken.js +0 -7
- package/cjs/oidc/util/refreshToken.js.map +1 -1
- package/cjs/oidc/util/sharedStorage.js +0 -8
- package/cjs/oidc/util/sharedStorage.js.map +1 -1
- package/cjs/oidc/util/urlParams.js +9 -12
- package/cjs/oidc/util/urlParams.js.map +1 -1
- package/cjs/oidc/util/validateClaims.js +9 -17
- package/cjs/oidc/util/validateClaims.js.map +1 -1
- package/cjs/oidc/util/validateToken.js +1 -6
- package/cjs/oidc/util/validateToken.js.map +1 -1
- package/cjs/oidc/verifyToken.js +13 -23
- package/cjs/oidc/verifyToken.js.map +1 -1
- package/cjs/server/serverStorage.js +9 -27
- package/cjs/server/serverStorage.js.map +1 -1
- package/cjs/services/AutoRenewService.js +1 -17
- package/cjs/services/AutoRenewService.js.map +1 -1
- package/cjs/services/LeaderElectionService.js +1 -23
- package/cjs/services/LeaderElectionService.js.map +1 -1
- package/cjs/services/SyncStorageService.js +3 -37
- package/cjs/services/SyncStorageService.js.map +1 -1
- package/cjs/services/index.js +0 -5
- package/cjs/services/index.js.map +1 -1
- package/cjs/session/api.js +1 -12
- package/cjs/session/api.js.map +1 -1
- package/cjs/session/factory.js +0 -2
- package/cjs/session/factory.js.map +1 -1
- package/cjs/session/index.js +0 -7
- package/cjs/session/index.js.map +1 -1
- package/cjs/session/mixin.js +2 -6
- package/cjs/session/mixin.js.map +1 -1
- package/cjs/storage/BaseStorageManager.js +13 -25
- package/cjs/storage/BaseStorageManager.js.map +1 -1
- package/cjs/storage/SavedObject.js +7 -19
- package/cjs/storage/SavedObject.js.map +1 -1
- package/cjs/storage/index.js +0 -9
- package/cjs/storage/index.js.map +1 -1
- package/cjs/storage/mixin.js +2 -4
- package/cjs/storage/mixin.js.map +1 -1
- package/cjs/storage/options/StorageOptionsConstructor.js +3 -6
- package/cjs/storage/options/StorageOptionsConstructor.js.map +1 -1
- package/cjs/storage/options/browser.js +7 -15
- package/cjs/storage/options/browser.js.map +1 -1
- package/cjs/storage/options/node.js +3 -6
- package/cjs/storage/options/node.js.map +1 -1
- package/cjs/util/PromiseQueue.js +7 -15
- package/cjs/util/PromiseQueue.js.map +1 -1
- package/cjs/util/console.js +3 -7
- package/cjs/util/console.js.map +1 -1
- package/cjs/util/index.js +0 -11
- package/cjs/util/index.js.map +1 -1
- package/cjs/util/misc.js +3 -8
- package/cjs/util/misc.js.map +1 -1
- package/cjs/util/object.js +9 -23
- package/cjs/util/object.js.map +1 -1
- package/cjs/util/types.js +1 -5
- package/cjs/util/types.js.map +1 -1
- package/cjs/util/url.js +5 -14
- package/cjs/util/url.js.map +1 -1
- package/dist/okta-auth-js.authn.min.analyzer.html +3 -3
- package/dist/okta-auth-js.authn.min.js +1 -1
- package/dist/okta-auth-js.authn.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.authn.min.js.map +1 -1
- package/dist/okta-auth-js.core.min.analyzer.html +3 -3
- package/dist/okta-auth-js.core.min.js +1 -1
- package/dist/okta-auth-js.core.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.core.min.js.map +1 -1
- package/dist/okta-auth-js.idx.min.analyzer.html +3 -3
- package/dist/okta-auth-js.idx.min.js +1 -1
- package/dist/okta-auth-js.idx.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.idx.min.js.map +1 -1
- package/dist/okta-auth-js.min.analyzer.html +3 -3
- package/dist/okta-auth-js.min.js +1 -1
- package/dist/okta-auth-js.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.min.js.map +1 -1
- package/dist/okta-auth-js.myaccount.min.analyzer.html +3 -3
- package/dist/okta-auth-js.myaccount.min.js +1 -1
- package/dist/okta-auth-js.myaccount.min.js.LICENSE.txt +2 -0
- package/dist/okta-auth-js.myaccount.min.js.map +1 -1
- package/dist/okta-auth-js.polyfill.js +1 -1
- package/dist/okta-auth-js.polyfill.js.map +1 -1
- package/esm/browser/http/OktaUserAgent.js +2 -2
- package/esm/browser/http/request.js +56 -23
- package/esm/browser/http/request.js.map +1 -1
- package/esm/browser/idx/interact.js +2 -2
- package/esm/browser/idx/interact.js.map +1 -1
- package/esm/browser/idx/run.js +2 -1
- package/esm/browser/idx/run.js.map +1 -1
- package/esm/browser/idx/transactionMeta.js +3 -2
- package/esm/browser/idx/transactionMeta.js.map +1 -1
- package/esm/browser/myaccount/request.js +2 -43
- package/esm/browser/myaccount/request.js.map +1 -1
- package/esm/browser/oidc/endpoints/authorize.js +1 -0
- package/esm/browser/oidc/endpoints/authorize.js.map +1 -1
- package/esm/browser/oidc/exchangeCodeForTokens.js +2 -1
- package/esm/browser/oidc/exchangeCodeForTokens.js.map +1 -1
- package/esm/browser/oidc/handleOAuthResponse.js +17 -16
- package/esm/browser/oidc/handleOAuthResponse.js.map +1 -1
- package/esm/browser/oidc/options/OAuthOptionsConstructor.js +2 -0
- package/esm/browser/oidc/options/OAuthOptionsConstructor.js.map +1 -1
- package/esm/browser/oidc/util/defaultTokenParams.js +3 -1
- package/esm/browser/oidc/util/defaultTokenParams.js.map +1 -1
- package/esm/browser/oidc/util/oauthMeta.js +1 -0
- package/esm/browser/oidc/util/oauthMeta.js.map +1 -1
- package/esm/browser/oidc/util/validateClaims.js +9 -4
- package/esm/browser/oidc/util/validateClaims.js.map +1 -1
- package/esm/browser/oidc/verifyToken.js +2 -2
- package/esm/browser/oidc/verifyToken.js.map +1 -1
- package/esm/browser/package.json +1 -1
- package/esm/node/http/OktaUserAgent.js +2 -2
- package/esm/node/http/request.js +56 -23
- package/esm/node/http/request.js.map +1 -1
- package/esm/node/idx/interact.js +2 -2
- package/esm/node/idx/interact.js.map +1 -1
- package/esm/node/idx/run.js +2 -1
- package/esm/node/idx/run.js.map +1 -1
- package/esm/node/idx/transactionMeta.js +3 -2
- package/esm/node/idx/transactionMeta.js.map +1 -1
- package/esm/node/myaccount/request.js +2 -43
- package/esm/node/myaccount/request.js.map +1 -1
- package/esm/node/oidc/endpoints/authorize.js +1 -0
- package/esm/node/oidc/endpoints/authorize.js.map +1 -1
- package/esm/node/oidc/exchangeCodeForTokens.js +2 -1
- package/esm/node/oidc/exchangeCodeForTokens.js.map +1 -1
- package/esm/node/oidc/handleOAuthResponse.js +17 -16
- package/esm/node/oidc/handleOAuthResponse.js.map +1 -1
- package/esm/node/oidc/options/OAuthOptionsConstructor.js +2 -0
- package/esm/node/oidc/options/OAuthOptionsConstructor.js.map +1 -1
- package/esm/node/oidc/util/defaultTokenParams.js +3 -1
- package/esm/node/oidc/util/defaultTokenParams.js.map +1 -1
- package/esm/node/oidc/util/oauthMeta.js +1 -0
- package/esm/node/oidc/util/oauthMeta.js.map +1 -1
- package/esm/node/oidc/util/validateClaims.js +9 -4
- package/esm/node/oidc/util/validateClaims.js.map +1 -1
- package/esm/node/oidc/verifyToken.js +2 -2
- package/esm/node/oidc/verifyToken.js.map +1 -1
- package/esm/node/package.json +1 -1
- package/package.json +12 -13
- package/polyfill/index.js +8 -5
- package/types/lib/core/options.d.ts +2 -0
- package/types/lib/idx/interact.d.ts +1 -0
- package/types/lib/idx/options.d.ts +2 -0
- package/types/lib/idx/types/meta.d.ts +1 -0
- package/types/lib/idx/types/options.d.ts +1 -0
- package/types/lib/oidc/options/OAuthOptionsConstructor.d.ts +2 -0
- package/types/lib/oidc/types/UserClaims.d.ts +1 -0
- package/types/lib/oidc/types/api.d.ts +1 -0
- package/types/lib/oidc/types/meta.d.ts +1 -1
- package/types/lib/oidc/types/options.d.ts +2 -1
- package/types/lib/oidc/types/proto.d.ts +1 -0
- package/umd/authn.js +1 -1
- package/umd/authn.js.LICENSE.txt +2 -0
- package/umd/authn.js.map +1 -1
- package/umd/core.js +1 -1
- package/umd/core.js.LICENSE.txt +2 -0
- package/umd/core.js.map +1 -1
- package/umd/default.js +1 -1
- package/umd/default.js.LICENSE.txt +2 -0
- package/umd/default.js.map +1 -1
- package/umd/idx.js +1 -1
- package/umd/idx.js.LICENSE.txt +2 -0
- package/umd/idx.js.map +1 -1
- package/umd/myaccount.js +1 -1
- package/umd/myaccount.js.LICENSE.txt +2 -0
- package/umd/myaccount.js.map +1 -1
package/cjs/idx/util.js
CHANGED
|
@@ -11,19 +11,12 @@ exports.getNextStep = getNextStep;
|
|
|
11
11
|
exports.getRemediator = getRemediator;
|
|
12
12
|
exports.handleFailedResponse = handleFailedResponse;
|
|
13
13
|
exports.isTerminalResponse = isTerminalResponse;
|
|
14
|
-
|
|
15
14
|
var _util = require("../util");
|
|
16
|
-
|
|
17
15
|
var remediators = _interopRequireWildcard(require("./remediators"));
|
|
18
|
-
|
|
19
16
|
var _GenericRemediator = require("./remediators/GenericRemediator");
|
|
20
|
-
|
|
21
17
|
var _types = require("./types");
|
|
22
|
-
|
|
23
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
|
-
|
|
25
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
|
-
|
|
27
20
|
function isTerminalResponse(idxResponse) {
|
|
28
21
|
const {
|
|
29
22
|
neededToProceed,
|
|
@@ -31,127 +24,106 @@ function isTerminalResponse(idxResponse) {
|
|
|
31
24
|
} = idxResponse;
|
|
32
25
|
return !neededToProceed.length && !interactionCode;
|
|
33
26
|
}
|
|
34
|
-
|
|
35
27
|
function canSkipFn(idxResponse) {
|
|
36
28
|
return idxResponse.neededToProceed.some(({
|
|
37
29
|
name
|
|
38
30
|
}) => name === 'skip');
|
|
39
31
|
}
|
|
40
|
-
|
|
41
32
|
function canResendFn(idxResponse) {
|
|
42
33
|
return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));
|
|
43
34
|
}
|
|
44
|
-
|
|
45
35
|
function getMessagesFromIdxRemediationValue(value) {
|
|
46
36
|
if (!value || !Array.isArray(value)) {
|
|
47
37
|
return;
|
|
48
38
|
}
|
|
49
|
-
|
|
50
39
|
return value.reduce((messages, value) => {
|
|
51
40
|
if (value.messages) {
|
|
52
41
|
messages = [...messages, ...value.messages.value];
|
|
53
42
|
}
|
|
54
|
-
|
|
55
43
|
if (value.form) {
|
|
56
44
|
const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];
|
|
57
45
|
messages = [...messages, ...messagesFromForm];
|
|
58
46
|
}
|
|
59
|
-
|
|
60
47
|
if (value.options) {
|
|
61
48
|
let optionValues = [];
|
|
62
49
|
value.options.forEach(option => {
|
|
63
50
|
if (!option.value || typeof option.value === 'string') {
|
|
64
51
|
return;
|
|
65
52
|
}
|
|
66
|
-
|
|
67
53
|
optionValues = [...optionValues, option.value];
|
|
68
54
|
});
|
|
69
55
|
const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];
|
|
70
56
|
messages = [...messages, ...messagesFromOptions];
|
|
71
57
|
}
|
|
72
|
-
|
|
73
58
|
return messages;
|
|
74
59
|
}, []);
|
|
75
60
|
}
|
|
76
|
-
|
|
77
61
|
function getMessagesFromResponse(idxResponse, options) {
|
|
78
62
|
var _rawIdxState$messages;
|
|
79
|
-
|
|
80
63
|
let messages = [];
|
|
81
64
|
const {
|
|
82
65
|
rawIdxState,
|
|
83
66
|
neededToProceed
|
|
84
|
-
} = idxResponse;
|
|
67
|
+
} = idxResponse;
|
|
85
68
|
|
|
69
|
+
// Handle global messages
|
|
86
70
|
const globalMessages = (_rawIdxState$messages = rawIdxState.messages) === null || _rawIdxState$messages === void 0 ? void 0 : _rawIdxState$messages.value.map(message => message);
|
|
87
|
-
|
|
88
71
|
if (globalMessages) {
|
|
89
72
|
messages = [...messages, ...globalMessages];
|
|
90
|
-
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Handle field messages for current flow
|
|
91
76
|
// Preserve existing logic for general cases, remove in the next major version
|
|
92
77
|
// Follow ion response format for top level messages when useGenericRemediator is true
|
|
93
|
-
|
|
94
|
-
|
|
95
78
|
if (!options.useGenericRemediator) {
|
|
96
79
|
for (let remediation of neededToProceed) {
|
|
97
80
|
const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);
|
|
98
|
-
|
|
99
81
|
if (fieldMessages) {
|
|
100
82
|
messages = [...messages, ...fieldMessages];
|
|
101
83
|
}
|
|
102
84
|
}
|
|
103
|
-
}
|
|
104
|
-
|
|
85
|
+
}
|
|
105
86
|
|
|
87
|
+
// API may return identical error on same field, filter by i18n key
|
|
106
88
|
const seen = {};
|
|
107
89
|
messages = messages.reduce((filtered, message) => {
|
|
108
90
|
var _message$i18n;
|
|
109
|
-
|
|
110
91
|
const key = (_message$i18n = message.i18n) === null || _message$i18n === void 0 ? void 0 : _message$i18n.key;
|
|
111
|
-
|
|
112
92
|
if (key && seen[key]) {
|
|
113
93
|
return filtered;
|
|
114
94
|
}
|
|
115
|
-
|
|
116
95
|
seen[key] = message;
|
|
117
96
|
filtered = [...filtered, message];
|
|
118
97
|
return filtered;
|
|
119
98
|
}, []);
|
|
120
99
|
return messages;
|
|
121
100
|
}
|
|
122
|
-
|
|
123
101
|
function getEnabledFeatures(idxResponse) {
|
|
124
102
|
const res = [];
|
|
125
103
|
const {
|
|
126
104
|
actions,
|
|
127
105
|
neededToProceed
|
|
128
106
|
} = idxResponse;
|
|
129
|
-
|
|
130
107
|
if (actions['currentAuthenticator-recover']) {
|
|
131
108
|
res.push(_types.IdxFeature.PASSWORD_RECOVERY);
|
|
132
109
|
}
|
|
133
|
-
|
|
134
110
|
if (neededToProceed.some(({
|
|
135
111
|
name
|
|
136
112
|
}) => name === 'select-enroll-profile')) {
|
|
137
113
|
res.push(_types.IdxFeature.REGISTRATION);
|
|
138
114
|
}
|
|
139
|
-
|
|
140
115
|
if (neededToProceed.some(({
|
|
141
116
|
name
|
|
142
117
|
}) => name === 'redirect-idp')) {
|
|
143
118
|
res.push(_types.IdxFeature.SOCIAL_IDP);
|
|
144
119
|
}
|
|
145
|
-
|
|
146
120
|
if (neededToProceed.some(({
|
|
147
121
|
name
|
|
148
122
|
}) => name === 'unlock-account')) {
|
|
149
123
|
res.push(_types.IdxFeature.ACCOUNT_UNLOCK);
|
|
150
124
|
}
|
|
151
|
-
|
|
152
125
|
return res;
|
|
153
126
|
}
|
|
154
|
-
|
|
155
127
|
function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
156
128
|
const res = [];
|
|
157
129
|
const remediatorMap = Object.values(remediators).reduce((map, remediatorClass) => {
|
|
@@ -159,22 +131,18 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
159
131
|
if (remediatorClass.remediationName) {
|
|
160
132
|
map[remediatorClass.remediationName] = remediatorClass;
|
|
161
133
|
}
|
|
162
|
-
|
|
163
134
|
return map;
|
|
164
135
|
}, {});
|
|
165
|
-
|
|
166
136
|
for (let remediation of idxResponse.neededToProceed) {
|
|
167
137
|
const T = getRemediatorClass(remediation, {
|
|
168
138
|
useGenericRemediator,
|
|
169
139
|
remediators: remediatorMap
|
|
170
140
|
});
|
|
171
|
-
|
|
172
141
|
if (T) {
|
|
173
142
|
const remediator = new T(remediation);
|
|
174
143
|
res.push(remediator.getNextStep(authClient, idxResponse.context));
|
|
175
144
|
}
|
|
176
145
|
}
|
|
177
|
-
|
|
178
146
|
for (const [name] of Object.entries(idxResponse.actions || {})) {
|
|
179
147
|
let stepObj = {
|
|
180
148
|
name,
|
|
@@ -187,14 +155,11 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
187
155
|
});
|
|
188
156
|
}
|
|
189
157
|
};
|
|
190
|
-
|
|
191
158
|
if (name.startsWith('currentAuthenticator')) {
|
|
192
159
|
var _actionObj$value;
|
|
193
|
-
|
|
194
160
|
const [part1, part2] = (0, _util.split2)(name, '-');
|
|
195
161
|
const actionObj = idxResponse.rawIdxState[part1].value[part2];
|
|
196
162
|
/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
197
|
-
|
|
198
163
|
const {
|
|
199
164
|
href,
|
|
200
165
|
method,
|
|
@@ -204,39 +169,34 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
|
|
|
204
169
|
...rest
|
|
205
170
|
} = actionObj;
|
|
206
171
|
/* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */
|
|
207
|
-
|
|
208
172
|
const value = (_actionObj$value = actionObj.value) === null || _actionObj$value === void 0 ? void 0 : _actionObj$value.filter(item => item.name !== 'stateHandle');
|
|
209
|
-
stepObj = {
|
|
173
|
+
stepObj = {
|
|
174
|
+
...rest,
|
|
210
175
|
...(value && {
|
|
211
176
|
value
|
|
212
177
|
}),
|
|
213
178
|
...stepObj
|
|
214
179
|
};
|
|
215
180
|
}
|
|
216
|
-
|
|
217
181
|
res.push(stepObj);
|
|
218
182
|
}
|
|
219
|
-
|
|
220
183
|
return res;
|
|
221
184
|
}
|
|
222
|
-
|
|
223
185
|
function filterValuesForRemediation(idxResponse, remediationName, values) {
|
|
224
186
|
const remediations = idxResponse.neededToProceed || [];
|
|
225
187
|
const remediation = remediations.find(r => r.name === remediationName);
|
|
226
|
-
|
|
227
188
|
if (!remediation) {
|
|
228
189
|
// step was specified, but remediation was not found. This is unexpected!
|
|
229
190
|
(0, _util.warn)(`filterValuesForRemediation: "${remediationName}" did not match any remediations`);
|
|
230
191
|
return values;
|
|
231
|
-
}
|
|
232
|
-
|
|
192
|
+
}
|
|
233
193
|
|
|
194
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
234
195
|
const valuesForRemediation = remediation.value.reduce((res, entry) => {
|
|
235
196
|
const {
|
|
236
197
|
name,
|
|
237
198
|
value
|
|
238
199
|
} = entry;
|
|
239
|
-
|
|
240
200
|
if (name === 'stateHandle') {
|
|
241
201
|
res[name] = value; // use the stateHandle value in the remediation
|
|
242
202
|
} else {
|
|
@@ -247,39 +207,35 @@ function filterValuesForRemediation(idxResponse, remediationName, values) {
|
|
|
247
207
|
}, {});
|
|
248
208
|
return valuesForRemediation;
|
|
249
209
|
}
|
|
250
|
-
|
|
251
210
|
function getRemediatorClass(remediation, options) {
|
|
252
211
|
const {
|
|
253
212
|
useGenericRemediator,
|
|
254
213
|
remediators
|
|
255
214
|
} = options;
|
|
256
|
-
|
|
257
215
|
if (!remediation) {
|
|
258
216
|
return undefined;
|
|
259
217
|
}
|
|
260
|
-
|
|
261
218
|
if (useGenericRemediator) {
|
|
262
219
|
return _GenericRemediator.GenericRemediator;
|
|
263
|
-
}
|
|
264
|
-
|
|
220
|
+
}
|
|
265
221
|
|
|
222
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
266
223
|
return remediators[remediation.name];
|
|
267
|
-
}
|
|
268
|
-
// eslint-disable-next-line complexity
|
|
269
|
-
|
|
224
|
+
}
|
|
270
225
|
|
|
226
|
+
// Return first match idxRemediation in allowed remediators
|
|
227
|
+
// eslint-disable-next-line complexity
|
|
271
228
|
function getRemediator(idxRemediations, values, options) {
|
|
272
229
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
273
230
|
const remediators = options.remediators;
|
|
274
231
|
const useGenericRemediator = options.useGenericRemediator;
|
|
275
|
-
let remediator;
|
|
276
|
-
|
|
232
|
+
let remediator;
|
|
233
|
+
// remediation name specified by caller - fast-track remediator lookup
|
|
277
234
|
if (options.step) {
|
|
278
235
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
279
236
|
const remediation = idxRemediations.find(({
|
|
280
237
|
name
|
|
281
238
|
}) => name === options.step);
|
|
282
|
-
|
|
283
239
|
if (remediation) {
|
|
284
240
|
const T = getRemediatorClass(remediation, options);
|
|
285
241
|
return T ? new T(remediation, values, options) : undefined;
|
|
@@ -289,43 +245,37 @@ function getRemediator(idxRemediations, values, options) {
|
|
|
289
245
|
return;
|
|
290
246
|
}
|
|
291
247
|
}
|
|
292
|
-
|
|
293
248
|
const remediatorCandidates = [];
|
|
294
|
-
|
|
295
249
|
if (useGenericRemediator) {
|
|
296
250
|
// always pick the first remediation for when use GenericRemediator
|
|
297
251
|
remediatorCandidates.push(new _GenericRemediator.GenericRemediator(idxRemediations[0], values, options));
|
|
298
252
|
} else {
|
|
299
253
|
for (let remediation of idxRemediations) {
|
|
300
254
|
const isRemeditionInFlow = Object.keys(remediators).includes(remediation.name);
|
|
301
|
-
|
|
302
255
|
if (!isRemeditionInFlow) {
|
|
303
256
|
continue;
|
|
304
|
-
}
|
|
305
|
-
|
|
257
|
+
}
|
|
306
258
|
|
|
259
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
307
260
|
const T = getRemediatorClass(remediation, options);
|
|
308
261
|
remediator = new T(remediation, values, options);
|
|
309
|
-
|
|
310
262
|
if (remediator.canRemediate()) {
|
|
311
263
|
// found the remediator
|
|
312
264
|
return remediator;
|
|
313
|
-
}
|
|
265
|
+
}
|
|
266
|
+
// remediator cannot handle the current values
|
|
314
267
|
// maybe return for next step
|
|
315
|
-
|
|
316
|
-
|
|
317
268
|
remediatorCandidates.push(remediator);
|
|
318
269
|
}
|
|
319
270
|
}
|
|
320
|
-
|
|
321
271
|
return remediatorCandidates[0];
|
|
322
272
|
}
|
|
323
|
-
|
|
324
273
|
function getNextStep(authClient, remediator, idxResponse) {
|
|
325
274
|
const nextStep = remediator.getNextStep(authClient, idxResponse.context);
|
|
326
275
|
const canSkip = canSkipFn(idxResponse);
|
|
327
276
|
const canResend = canResendFn(idxResponse);
|
|
328
|
-
return {
|
|
277
|
+
return {
|
|
278
|
+
...nextStep,
|
|
329
279
|
...(canSkip && {
|
|
330
280
|
canSkip
|
|
331
281
|
}),
|
|
@@ -334,11 +284,9 @@ function getNextStep(authClient, remediator, idxResponse) {
|
|
|
334
284
|
})
|
|
335
285
|
};
|
|
336
286
|
}
|
|
337
|
-
|
|
338
287
|
function handleFailedResponse(authClient, idxResponse, options = {}) {
|
|
339
288
|
const terminal = isTerminalResponse(idxResponse);
|
|
340
289
|
const messages = getMessagesFromResponse(idxResponse, options);
|
|
341
|
-
|
|
342
290
|
if (terminal) {
|
|
343
291
|
return {
|
|
344
292
|
idxResponse,
|
package/cjs/idx/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":["isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","Object","keys","actions","actionName","includes","getMessagesFromIdxRemediationValue","value","Array","isArray","reduce","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","map","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","values","remediators","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","entries","stepObj","action","params","idx","proceed","startsWith","part1","part2","split2","actionObj","href","method","rel","accepts","produces","rest","filter","item","filterValuesForRemediation","remediations","find","r","warn","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleFailedResponse","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { OktaAuthIdxInterface, IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record<string, RemediatorConstructor> = Object.values(remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n const useGenericRemediator = options.useGenericRemediator;\n\n let remediator: Remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = getRemediatorClass(remediation, options);\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","names":["isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","Object","keys","actions","actionName","includes","getMessagesFromIdxRemediationValue","value","Array","isArray","reduce","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","map","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","values","remediators","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","entries","stepObj","action","params","idx","proceed","startsWith","part1","part2","split2","actionObj","href","method","rel","accepts","produces","rest","filter","item","filterValuesForRemediation","remediations","find","r","warn","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleFailedResponse","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { OktaAuthIdxInterface, IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record<string, RemediatorConstructor> = Object.values(remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n const useGenericRemediator = options.useGenericRemediator;\n\n let remediator: Remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = getRemediatorClass(remediation, options);\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n"],"mappings":"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"}
|
package/cjs/idx/webauthn.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.getAttestation = exports.getAssertion = exports.buildCredentialRequestOptions = exports.buildCredentialCreationOptions = void 0;
|
|
4
|
-
|
|
5
4
|
var _base = require("../crypto/base64");
|
|
6
|
-
|
|
7
5
|
/*!
|
|
8
6
|
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
9
7
|
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
@@ -15,6 +13,7 @@ var _base = require("../crypto/base64");
|
|
|
15
13
|
*
|
|
16
14
|
* See the License for the specific language governing permissions and limitations under the License.
|
|
17
15
|
*/
|
|
16
|
+
|
|
18
17
|
// Get known credentials from list of enrolled authenticators
|
|
19
18
|
const getEnrolledCredentials = (authenticatorEnrollments = []) => {
|
|
20
19
|
const credentials = [];
|
|
@@ -27,10 +26,10 @@ const getEnrolledCredentials = (authenticatorEnrollments = []) => {
|
|
|
27
26
|
}
|
|
28
27
|
});
|
|
29
28
|
return credentials;
|
|
30
|
-
};
|
|
31
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create
|
|
32
|
-
|
|
29
|
+
};
|
|
33
30
|
|
|
31
|
+
// Build options for navigator.credentials.create
|
|
32
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create
|
|
34
33
|
const buildCredentialCreationOptions = (activationData, authenticatorEnrollments) => {
|
|
35
34
|
return {
|
|
36
35
|
publicKey: {
|
|
@@ -47,12 +46,11 @@ const buildCredentialCreationOptions = (activationData, authenticatorEnrollments
|
|
|
47
46
|
excludeCredentials: getEnrolledCredentials(authenticatorEnrollments)
|
|
48
47
|
}
|
|
49
48
|
};
|
|
50
|
-
};
|
|
51
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get
|
|
52
|
-
|
|
49
|
+
};
|
|
53
50
|
|
|
51
|
+
// Build options for navigator.credentials.get
|
|
52
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get
|
|
54
53
|
exports.buildCredentialCreationOptions = buildCredentialCreationOptions;
|
|
55
|
-
|
|
56
54
|
const buildCredentialRequestOptions = (challengeData, authenticatorEnrollments) => {
|
|
57
55
|
return {
|
|
58
56
|
publicKey: {
|
|
@@ -61,12 +59,11 @@ const buildCredentialRequestOptions = (challengeData, authenticatorEnrollments)
|
|
|
61
59
|
allowCredentials: getEnrolledCredentials(authenticatorEnrollments)
|
|
62
60
|
}
|
|
63
61
|
};
|
|
64
|
-
};
|
|
65
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse
|
|
66
|
-
|
|
62
|
+
};
|
|
67
63
|
|
|
64
|
+
// Build attestation for webauthn enroll
|
|
65
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse
|
|
68
66
|
exports.buildCredentialRequestOptions = buildCredentialRequestOptions;
|
|
69
|
-
|
|
70
67
|
const getAttestation = credential => {
|
|
71
68
|
const response = credential.response;
|
|
72
69
|
const id = credential.id;
|
|
@@ -77,12 +74,11 @@ const getAttestation = credential => {
|
|
|
77
74
|
clientData,
|
|
78
75
|
attestation
|
|
79
76
|
};
|
|
80
|
-
};
|
|
81
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse
|
|
82
|
-
|
|
77
|
+
};
|
|
83
78
|
|
|
79
|
+
// Build assertion for webauthn verification
|
|
80
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse
|
|
84
81
|
exports.getAttestation = getAttestation;
|
|
85
|
-
|
|
86
82
|
const getAssertion = credential => {
|
|
87
83
|
const response = credential.response;
|
|
88
84
|
const id = credential.id;
|
|
@@ -96,6 +92,5 @@ const getAssertion = credential => {
|
|
|
96
92
|
signatureData
|
|
97
93
|
};
|
|
98
94
|
};
|
|
99
|
-
|
|
100
95
|
exports.getAssertion = getAssertion;
|
|
101
96
|
//# sourceMappingURL=webauthn.js.map
|
package/cjs/idx/webauthn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webauthn.js","names":["getEnrolledCredentials","authenticatorEnrollments","credentials","forEach","enrollement","key","push","type","id","base64UrlToBuffer","credentialId","buildCredentialCreationOptions","activationData","publicKey","rp","user","name","displayName","challenge","pubKeyCredParams","attestation","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","challengeData","userVerification","allowCredentials","getAttestation","credential","response","clientData","bufferToBase64Url","clientDataJSON","attestationObject","getAssertion","authenticatorData","signatureData","signature"],"sources":["../../../lib/idx/webauthn.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n ActivationData,\n ChallengeData,\n IdxAuthenticator,\n WebauthnEnrollValues,\n WebauthnVerificationValues\n} from './types';\n\n\nexport interface WebauthnAPI {\n getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n buildCredentialRequestOptions(\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialRequestOptions;\n buildCredentialCreationOptions(\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialCreationOptions;\n}\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n const credentials: PublicKeyCredentialDescriptor[] = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: base64UrlToBuffer(enrollement.credentialId),\n });\n }\n });\n return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n rp: activationData.rp,\n user: {\n id: base64UrlToBuffer(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n challenge: base64UrlToBuffer(activationData.challenge),\n pubKeyCredParams: activationData.pubKeyCredParams,\n attestation: activationData.attestation,\n authenticatorSelection: activationData.authenticatorSelection,\n excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n challenge: base64UrlToBuffer(challengeData.challenge),\n userVerification: challengeData.userVerification,\n allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAttestationResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const attestation = bufferToBase64Url(response.attestationObject);\n return {\n id,\n clientData,\n attestation\n };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAssertionResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const authenticatorData = bufferToBase64Url(response.authenticatorData);\n const signatureData = bufferToBase64Url(response.signature);\n return {\n id,\n clientData,\n authenticatorData,\n signatureData\n };\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"webauthn.js","names":["getEnrolledCredentials","authenticatorEnrollments","credentials","forEach","enrollement","key","push","type","id","base64UrlToBuffer","credentialId","buildCredentialCreationOptions","activationData","publicKey","rp","user","name","displayName","challenge","pubKeyCredParams","attestation","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","challengeData","userVerification","allowCredentials","getAttestation","credential","response","clientData","bufferToBase64Url","clientDataJSON","attestationObject","getAssertion","authenticatorData","signatureData","signature"],"sources":["../../../lib/idx/webauthn.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n ActivationData,\n ChallengeData,\n IdxAuthenticator,\n WebauthnEnrollValues,\n WebauthnVerificationValues\n} from './types';\n\n\nexport interface WebauthnAPI {\n getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n buildCredentialRequestOptions(\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialRequestOptions;\n buildCredentialCreationOptions(\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialCreationOptions;\n}\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n const credentials: PublicKeyCredentialDescriptor[] = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: base64UrlToBuffer(enrollement.credentialId),\n });\n }\n });\n return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n rp: activationData.rp,\n user: {\n id: base64UrlToBuffer(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n challenge: base64UrlToBuffer(activationData.challenge),\n pubKeyCredParams: activationData.pubKeyCredParams,\n attestation: activationData.attestation,\n authenticatorSelection: activationData.authenticatorSelection,\n excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n challenge: base64UrlToBuffer(challengeData.challenge),\n userVerification: challengeData.userVerification,\n allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAttestationResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const attestation = bufferToBase64Url(response.attestationObject);\n return {\n id,\n clientData,\n attestation\n };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAssertionResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const authenticatorData = bufferToBase64Url(response.authenticatorData);\n const signatureData = bufferToBase64Url(response.signature);\n return {\n id,\n clientData,\n authenticatorData,\n signatureData\n };\n};\n"],"mappings":";;;AAYA;AAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA,MAAMA,sBAAsB,GAAG,CAACC,wBAA4C,GAAG,EAAE,KAAK;EACpF,MAAMC,WAA4C,GAAG,EAAE;EACvDD,wBAAwB,CAACE,OAAO,CAAEC,WAAW,IAAK;IAChD,IAAIA,WAAW,CAACC,GAAG,KAAK,UAAU,EAAE;MAClCH,WAAW,CAACI,IAAI,CAAC;QACfC,IAAI,EAAE,YAAY;QAClBC,EAAE,EAAE,IAAAC,uBAAiB,EAACL,WAAW,CAACM,YAAY;MAChD,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EACF,OAAOR,WAAW;AACpB,CAAC;;AAED;AACA;AACO,MAAMS,8BAA8B,GAAG,CAC5CC,cAA8B,EAAEX,wBAA4C,KACzE;EACH,OAAO;IACLY,SAAS,EAAE;MACTC,EAAE,EAAEF,cAAc,CAACE,EAAE;MACrBC,IAAI,EAAE;QACJP,EAAE,EAAE,IAAAC,uBAAiB,EAACG,cAAc,CAACG,IAAI,CAACP,EAAE,CAAC;QAC7CQ,IAAI,EAAEJ,cAAc,CAACG,IAAI,CAACC,IAAI;QAC9BC,WAAW,EAAEL,cAAc,CAACG,IAAI,CAACE;MACnC,CAAC;MACDC,SAAS,EAAE,IAAAT,uBAAiB,EAACG,cAAc,CAACM,SAAS,CAAC;MACtDC,gBAAgB,EAAEP,cAAc,CAACO,gBAAgB;MACjDC,WAAW,EAAER,cAAc,CAACQ,WAAW;MACvCC,sBAAsB,EAAET,cAAc,CAACS,sBAAsB;MAC7DC,kBAAkB,EAAEtB,sBAAsB,CAACC,wBAAwB;IACrE;EACF,CAAC;AACH,CAAC;;AAGD;AACA;AAAA;AACO,MAAMsB,6BAA6B,GAAG,CAC3CC,aAA4B,EAAEvB,wBAA4C,KACvE;EACH,OAAO;IACLY,SAAS,EAAE;MACTK,SAAS,EAAE,IAAAT,uBAAiB,EAACe,aAAa,CAACN,SAAS,CAAC;MACrDO,gBAAgB,EAAED,aAAa,CAACC,gBAAgB;MAChDC,gBAAgB,EAAE1B,sBAAsB,CAACC,wBAAwB;IACnE;EACF,CAAC;AACH,CAAC;;AAED;AACA;AAAA;AACO,MAAM0B,cAAc,GAAIC,UAA+B,IAAK;EACjE,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAA4C;EACxE,MAAMrB,EAAE,GAAGoB,UAAU,CAACpB,EAAE;EACxB,MAAMsB,UAAU,GAAG,IAAAC,uBAAiB,EAACF,QAAQ,CAACG,cAAc,CAAC;EAC7D,MAAMZ,WAAW,GAAG,IAAAW,uBAAiB,EAACF,QAAQ,CAACI,iBAAiB,CAAC;EACjE,OAAO;IACLzB,EAAE;IACFsB,UAAU;IACVV;EACF,CAAC;AACH,CAAC;;AAED;AACA;AAAA;AACO,MAAMc,YAAY,GAAIN,UAA+B,IAAK;EAC/D,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAA0C;EACtE,MAAMrB,EAAE,GAAGoB,UAAU,CAACpB,EAAE;EACxB,MAAMsB,UAAU,GAAG,IAAAC,uBAAiB,EAACF,QAAQ,CAACG,cAAc,CAAC;EAC7D,MAAMG,iBAAiB,GAAG,IAAAJ,uBAAiB,EAACF,QAAQ,CAACM,iBAAiB,CAAC;EACvE,MAAMC,aAAa,GAAG,IAAAL,uBAAiB,EAACF,QAAQ,CAACQ,SAAS,CAAC;EAC3D,OAAO;IACL7B,EAAE;IACFsB,UAAU;IACVK,iBAAiB;IACjBC;EACF,CAAC;AACH,CAAC;AAAC"}
|
package/cjs/myaccount/api.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _profileApi = require("./profileApi");
|
|
4
|
-
|
|
5
4
|
Object.keys(_profileApi).forEach(function (key) {
|
|
6
5
|
if (key === "default" || key === "__esModule") return;
|
|
7
6
|
if (key in exports && exports[key] === _profileApi[key]) return;
|
|
@@ -12,9 +11,7 @@ Object.keys(_profileApi).forEach(function (key) {
|
|
|
12
11
|
}
|
|
13
12
|
});
|
|
14
13
|
});
|
|
15
|
-
|
|
16
14
|
var _emailApi = require("./emailApi");
|
|
17
|
-
|
|
18
15
|
Object.keys(_emailApi).forEach(function (key) {
|
|
19
16
|
if (key === "default" || key === "__esModule") return;
|
|
20
17
|
if (key in exports && exports[key] === _emailApi[key]) return;
|
|
@@ -25,9 +22,7 @@ Object.keys(_emailApi).forEach(function (key) {
|
|
|
25
22
|
}
|
|
26
23
|
});
|
|
27
24
|
});
|
|
28
|
-
|
|
29
25
|
var _phoneApi = require("./phoneApi");
|
|
30
|
-
|
|
31
26
|
Object.keys(_phoneApi).forEach(function (key) {
|
|
32
27
|
if (key === "default" || key === "__esModule") return;
|
|
33
28
|
if (key in exports && exports[key] === _phoneApi[key]) return;
|
package/cjs/myaccount/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","names":[],"sources":["../../../lib/myaccount/api.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n// exports all public methods from myaccount module\n\nexport * from './profileApi';\nexport * from './emailApi';\nexport * from './phoneApi';\n"],"mappings":";;AAeA
|
|
1
|
+
{"version":3,"file":"api.js","names":[],"sources":["../../../lib/myaccount/api.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n// exports all public methods from myaccount module\n\nexport * from './profileApi';\nexport * from './emailApi';\nexport * from './phoneApi';\n"],"mappings":";;AAeA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|