@okta/okta-auth-js 6.0.0 → 6.3.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/CHANGELOG.md +65 -0
- package/README.md +58 -27
- package/cjs/AuthStateManager.js +21 -7
- package/cjs/AuthStateManager.js.map +1 -1
- package/cjs/OktaAuth.js +96 -40
- package/cjs/OktaAuth.js.map +1 -1
- package/cjs/OktaUserAgent.js +2 -2
- package/cjs/PromiseQueue.js +14 -3
- package/cjs/PromiseQueue.js.map +1 -1
- package/cjs/SavedObject.js +4 -2
- package/cjs/SavedObject.js.map +1 -1
- package/cjs/ServiceManager.js +195 -0
- package/cjs/ServiceManager.js.map +1 -0
- package/cjs/StorageManager.js +13 -8
- package/cjs/StorageManager.js.map +1 -1
- package/cjs/TokenManager.js +34 -32
- package/cjs/TokenManager.js.map +1 -1
- package/cjs/TransactionManager.js +17 -5
- package/cjs/TransactionManager.js.map +1 -1
- package/cjs/browser/browserStorage.js +48 -33
- package/cjs/browser/browserStorage.js.map +1 -1
- package/cjs/browser/fingerprint.js +9 -3
- package/cjs/browser/fingerprint.js.map +1 -1
- package/cjs/builderUtil.js +4 -2
- package/cjs/builderUtil.js.map +1 -1
- package/cjs/clock.js +5 -1
- package/cjs/clock.js.map +1 -1
- package/cjs/crypto/base64.js +18 -0
- package/cjs/crypto/base64.js.map +1 -1
- package/cjs/crypto/index.js +6 -4
- package/cjs/crypto/index.js.map +1 -1
- package/cjs/crypto/node.js +19 -13
- package/cjs/crypto/node.js.map +1 -1
- package/cjs/crypto/oidcHash.js +5 -1
- package/cjs/crypto/oidcHash.js.map +1 -1
- package/cjs/crypto/webauthn.js +101 -0
- package/cjs/crypto/webauthn.js.map +1 -0
- package/cjs/crypto/webcrypto.js +3 -1
- package/cjs/crypto/webcrypto.js.map +1 -1
- package/cjs/errors/AuthApiError.js +1 -1
- package/cjs/errors/AuthPollStopError.js +1 -1
- package/cjs/errors/AuthSdkError.js +1 -1
- package/cjs/errors/CustomError.js +5 -1
- package/cjs/errors/CustomError.js.map +1 -1
- package/cjs/errors/OAuthError.js +1 -1
- package/cjs/errors/index.js +1 -1
- package/cjs/fetch/fetchRequest.js +18 -6
- package/cjs/fetch/fetchRequest.js.map +1 -1
- package/cjs/http/headers.js.map +1 -1
- package/cjs/http/index.js +4 -2
- package/cjs/http/index.js.map +1 -1
- package/cjs/http/request.js +9 -5
- package/cjs/http/request.js.map +1 -1
- package/cjs/idx/authenticate.js.map +1 -1
- package/cjs/idx/authenticator/Authenticator.js.map +1 -1
- package/cjs/idx/authenticator/OktaPassword.js +12 -3
- package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
- package/cjs/idx/authenticator/OktaVerifyTotp.js +9 -1
- package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +15 -2
- package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
- package/cjs/idx/authenticator/SecurityQuestionVerification.js +10 -2
- package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +13 -3
- package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/WebauthnEnrollment.js +51 -0
- package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -0
- package/cjs/idx/authenticator/WebauthnVerification.js +60 -0
- package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -0
- package/cjs/idx/authenticator/getAuthenticator.js +13 -1
- package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
- package/cjs/idx/authenticator/index.js +34 -6
- package/cjs/idx/authenticator/index.js.map +1 -1
- package/cjs/idx/authenticator/util.js +64 -0
- package/cjs/idx/authenticator/util.js.map +1 -0
- package/cjs/idx/cancel.js.map +1 -1
- package/cjs/idx/emailVerify.js +1 -1
- package/cjs/idx/emailVerify.js.map +1 -1
- package/cjs/idx/flow/AccountUnlockFlow.js +30 -0
- package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -0
- package/cjs/idx/flow/FlowSpecification.js +8 -0
- package/cjs/idx/flow/FlowSpecification.js.map +1 -1
- package/cjs/idx/flow/PasswordRecoveryFlow.js +4 -1
- package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
- package/cjs/idx/flow/index.js +20 -5
- package/cjs/idx/flow/index.js.map +1 -1
- package/cjs/idx/handleInteractionCodeRedirect.js +5 -1
- package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
- package/cjs/idx/headers.js +21 -5
- package/cjs/idx/headers.js.map +1 -1
- package/cjs/idx/idx-js/client.js +91 -0
- package/cjs/idx/idx-js/client.js.map +1 -0
- package/cjs/idx/idx-js/index.js +40 -0
- package/cjs/idx/idx-js/index.js.map +1 -0
- package/cjs/idx/idx-js/interact.js +83 -0
- package/cjs/idx/idx-js/interact.js.map +1 -0
- package/cjs/idx/idx-js/introspect.js +62 -0
- package/cjs/idx/idx-js/introspect.js.map +1 -0
- package/cjs/idx/idx-js/parsers.js +41 -0
- package/cjs/idx/idx-js/parsers.js.map +1 -0
- package/cjs/idx/idx-js/util.js +34 -0
- package/cjs/idx/idx-js/util.js.map +1 -0
- package/cjs/idx/idx-js/v1/actionParser.js +90 -0
- package/cjs/idx/idx-js/v1/actionParser.js.map +1 -0
- package/cjs/idx/idx-js/v1/generateIdxAction.js +111 -0
- package/cjs/idx/idx-js/v1/generateIdxAction.js.map +1 -0
- package/cjs/idx/idx-js/v1/idxResponseParser.js +137 -0
- package/cjs/idx/idx-js/v1/idxResponseParser.js.map +1 -0
- package/cjs/idx/idx-js/v1/makeIdxState.js +65 -0
- package/cjs/idx/idx-js/v1/makeIdxState.js.map +1 -0
- package/cjs/idx/idx-js/v1/parsers.js +24 -0
- package/cjs/idx/idx-js/v1/parsers.js.map +1 -0
- package/cjs/idx/idx-js/v1/remediationParser.js +32 -0
- package/cjs/idx/idx-js/v1/remediationParser.js.map +1 -0
- package/cjs/idx/index.js +120 -121
- package/cjs/idx/index.js.map +1 -1
- package/cjs/idx/interact.js +9 -4
- package/cjs/idx/interact.js.map +1 -1
- package/cjs/idx/introspect.js +19 -9
- package/cjs/idx/introspect.js.map +1 -1
- package/cjs/idx/poll.js +13 -3
- package/cjs/idx/poll.js.map +1 -1
- package/cjs/idx/proceed.js +14 -11
- package/cjs/idx/proceed.js.map +1 -1
- package/cjs/idx/recoverPassword.js.map +1 -1
- package/cjs/idx/register.js +5 -1
- package/cjs/idx/register.js.map +1 -1
- package/cjs/idx/remediate.js +112 -88
- package/cjs/idx/remediate.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +16 -6
- package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
- package/cjs/idx/remediators/AuthenticatorVerificationData.js +61 -16
- package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
- package/cjs/idx/remediators/Base/AuthenticatorData.js +44 -20
- package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
- package/cjs/idx/remediators/Base/Remediator.js +116 -82
- package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
- package/cjs/idx/remediators/Base/SelectAuthenticator.js +58 -34
- package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js +30 -7
- package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/ChallengeAuthenticator.js +2 -2
- package/cjs/idx/remediators/ChallengePoll.js +10 -3
- package/cjs/idx/remediators/ChallengePoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollAuthenticator.js +2 -2
- package/cjs/idx/remediators/EnrollPoll.js +16 -6
- package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
- package/cjs/idx/remediators/EnrollProfile.js +34 -16
- package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
- package/cjs/idx/remediators/EnrollmentChannelData.js +25 -17
- package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
- package/cjs/idx/remediators/Identify.js +16 -7
- package/cjs/idx/remediators/Identify.js.map +1 -1
- package/cjs/idx/remediators/ReEnrollAuthenticator.js +13 -10
- package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
- package/cjs/idx/remediators/RedirectIdp.js +2 -2
- package/cjs/idx/remediators/ResetAuthenticator.js +2 -2
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +9 -6
- package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
- package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +2 -2
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +71 -0
- package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -0
- package/cjs/idx/remediators/SelectEnrollProfile.js +2 -2
- package/cjs/idx/remediators/SelectEnrollmentChannel.js +22 -10
- package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
- package/cjs/idx/remediators/Skip.js +5 -10
- package/cjs/idx/remediators/Skip.js.map +1 -1
- package/cjs/idx/remediators/index.js +33 -18
- package/cjs/idx/remediators/index.js.map +1 -1
- package/cjs/idx/remediators/util.js +13 -3
- package/cjs/idx/remediators/util.js.map +1 -1
- package/cjs/idx/run.js +276 -177
- package/cjs/idx/run.js.map +1 -1
- package/cjs/idx/startTransaction.js.map +1 -1
- package/cjs/idx/transactionMeta.js.map +1 -1
- package/cjs/idx/types/idx-js.js.map +1 -1
- package/cjs/idx/types/index.js +82 -9
- package/cjs/idx/types/index.js.map +1 -1
- package/cjs/idx/unlockAccount.js +48 -0
- package/cjs/idx/unlockAccount.js.map +1 -0
- package/cjs/idx/util.js +198 -0
- package/cjs/idx/util.js.map +1 -0
- package/cjs/index.js +20 -14
- package/cjs/index.js.map +1 -1
- package/cjs/oidc/endpoints/authorize.js +8 -2
- package/cjs/oidc/endpoints/authorize.js.map +1 -1
- package/cjs/oidc/endpoints/index.js +5 -3
- package/cjs/oidc/endpoints/index.js.map +1 -1
- package/cjs/oidc/endpoints/token.js +15 -3
- package/cjs/oidc/endpoints/token.js.map +1 -1
- package/cjs/oidc/endpoints/well-known.js +7 -3
- package/cjs/oidc/endpoints/well-known.js.map +1 -1
- package/cjs/oidc/exchangeCodeForTokens.js +10 -2
- package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
- package/cjs/oidc/getToken.js +9 -5
- package/cjs/oidc/getToken.js.map +1 -1
- package/cjs/oidc/getUserInfo.js +7 -3
- package/cjs/oidc/getUserInfo.js.map +1 -1
- package/cjs/oidc/getWithPopup.js +8 -2
- package/cjs/oidc/getWithPopup.js.map +1 -1
- package/cjs/oidc/getWithRedirect.js +5 -1
- package/cjs/oidc/getWithRedirect.js.map +1 -1
- package/cjs/oidc/getWithoutPrompt.js +8 -2
- package/cjs/oidc/getWithoutPrompt.js.map +1 -1
- package/cjs/oidc/handleOAuthResponse.js +9 -3
- package/cjs/oidc/handleOAuthResponse.js.map +1 -1
- package/cjs/oidc/index.js +4 -2
- package/cjs/oidc/index.js.map +1 -1
- package/cjs/oidc/parseFromUrl.js +9 -3
- package/cjs/oidc/parseFromUrl.js.map +1 -1
- package/cjs/oidc/renewToken.js.map +1 -1
- package/cjs/oidc/renewTokens.js +5 -1
- package/cjs/oidc/renewTokens.js.map +1 -1
- package/cjs/oidc/renewTokensWithRefresh.js +5 -1
- package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
- package/cjs/oidc/revokeToken.js +7 -3
- package/cjs/oidc/revokeToken.js.map +1 -1
- package/cjs/oidc/util/browser.js +5 -1
- package/cjs/oidc/util/browser.js.map +1 -1
- package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
- package/cjs/oidc/util/errors.js.map +1 -1
- package/cjs/oidc/util/index.js +14 -12
- package/cjs/oidc/util/index.js.map +1 -1
- package/cjs/oidc/util/loginRedirect.js +5 -1
- package/cjs/oidc/util/loginRedirect.js.map +1 -1
- package/cjs/oidc/util/oauth.js +4 -2
- package/cjs/oidc/util/oauth.js.map +1 -1
- package/cjs/oidc/util/oauthMeta.js.map +1 -1
- package/cjs/oidc/util/pkce.js +11 -3
- package/cjs/oidc/util/pkce.js.map +1 -1
- package/cjs/oidc/util/prepareTokenParams.js +7 -5
- package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
- package/cjs/oidc/util/validateClaims.js +1 -1
- package/cjs/oidc/util/validateClaims.js.map +1 -1
- package/cjs/oidc/verifyToken.js +11 -3
- package/cjs/oidc/verifyToken.js.map +1 -1
- package/cjs/options/browser.js +86 -0
- package/cjs/options/browser.js.map +1 -0
- package/cjs/options/index.js +94 -0
- package/cjs/options/index.js.map +1 -0
- package/cjs/options/node.js +45 -0
- package/cjs/options/node.js.map +1 -0
- package/cjs/options.js +17 -5
- package/cjs/options.js.map +1 -1
- package/cjs/server/serverStorage.js +8 -4
- package/cjs/server/serverStorage.js.map +1 -1
- package/cjs/services/AutoRenewService.js +94 -0
- package/cjs/services/AutoRenewService.js.map +1 -0
- package/cjs/services/SyncStorageService.js +93 -0
- package/cjs/services/SyncStorageService.js.map +1 -0
- package/cjs/services/index.js +30 -0
- package/cjs/services/index.js.map +1 -0
- package/cjs/tx/AuthTransaction.js +15 -9
- package/cjs/tx/AuthTransaction.js.map +1 -1
- package/cjs/tx/api.js +8 -4
- package/cjs/tx/api.js.map +1 -1
- package/cjs/tx/index.js +7 -5
- package/cjs/tx/index.js.map +1 -1
- package/cjs/tx/poll.js +6 -4
- package/cjs/tx/poll.js.map +1 -1
- package/cjs/tx/util.js +5 -1
- package/cjs/tx/util.js.map +1 -1
- package/cjs/types/Service.js +2 -0
- package/cjs/types/Service.js.map +1 -0
- package/cjs/types/Transaction.js +10 -2
- package/cjs/types/Transaction.js.map +1 -1
- package/cjs/types/index.js +29 -14
- package/cjs/types/index.js.map +1 -1
- package/cjs/util/index.js +7 -5
- package/cjs/util/index.js.map +1 -1
- package/cjs/util/misc.js +5 -1
- package/cjs/util/misc.js.map +1 -1
- package/cjs/util/object.js +16 -6
- package/cjs/util/object.js.map +1 -1
- package/cjs/util/sharedStorage.js +5 -1
- package/cjs/util/sharedStorage.js.map +1 -1
- package/dist/okta-auth-js.min.js +1 -1
- package/dist/okta-auth-js.min.js.LICENSE.txt +0 -20
- package/dist/okta-auth-js.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/dist/okta-auth-js.umd.js +1 -1
- package/dist/okta-auth-js.umd.js.LICENSE.txt +1 -19
- package/dist/okta-auth-js.umd.js.map +1 -1
- package/esm/{index.js → esm.browser.js} +2978 -2585
- package/esm/esm.browser.js.map +1 -0
- package/esm/esm.node.mjs +9595 -0
- package/esm/esm.node.mjs.map +1 -0
- package/lib/AuthStateManager.d.ts +3 -3
- package/lib/OktaAuth.d.ts +10 -6
- package/lib/PromiseQueue.d.ts +6 -2
- package/lib/ServiceManager.d.ts +38 -0
- package/lib/StorageManager.d.ts +1 -1
- package/lib/TokenManager.d.ts +2 -3
- package/lib/TransactionManager.d.ts +4 -5
- package/lib/browser/fingerprint.d.ts +2 -3
- package/lib/crypto/base64.d.ts +2 -0
- package/lib/crypto/webauthn.d.ts +25 -0
- package/lib/http/headers.d.ts +2 -2
- package/lib/http/request.d.ts +4 -4
- package/lib/idx/authenticate.d.ts +2 -2
- package/lib/idx/authenticator/Authenticator.d.ts +4 -5
- package/lib/idx/authenticator/OktaPassword.d.ts +8 -9
- package/lib/idx/authenticator/OktaVerifyTotp.d.ts +1 -1
- package/lib/idx/authenticator/SecurityQuestionEnrollment.d.ts +11 -12
- package/lib/idx/authenticator/SecurityQuestionVerification.d.ts +7 -7
- package/lib/idx/authenticator/VerificationCodeAuthenticator.d.ts +8 -3
- package/lib/idx/authenticator/WebauthnEnrollment.d.ts +16 -0
- package/lib/idx/authenticator/WebauthnVerification.d.ts +17 -0
- package/lib/idx/authenticator/getAuthenticator.d.ts +1 -1
- package/lib/idx/authenticator/index.d.ts +9 -0
- package/lib/idx/authenticator/util.d.ts +4 -0
- package/lib/idx/cancel.d.ts +2 -2
- package/lib/idx/emailVerify.d.ts +2 -2
- package/lib/idx/flow/AccountUnlockFlow.d.ts +13 -0
- package/lib/idx/flow/FlowSpecification.d.ts +2 -2
- package/lib/idx/flow/index.d.ts +1 -0
- package/lib/idx/headers.d.ts +3 -2
- package/lib/idx/idx-js/client.d.ts +36 -0
- package/lib/idx/idx-js/index.d.ts +35 -0
- package/lib/idx/idx-js/interact.d.ts +25 -0
- package/lib/idx/idx-js/introspect.d.ts +21 -0
- package/lib/idx/idx-js/parsers.d.ts +15 -0
- package/lib/idx/idx-js/util.d.ts +12 -0
- package/lib/idx/idx-js/v1/actionParser.d.ts +16 -0
- package/lib/idx/idx-js/v1/generateIdxAction.d.ts +13 -0
- package/lib/idx/idx-js/v1/idxResponseParser.d.ts +20 -0
- package/lib/idx/idx-js/v1/makeIdxState.d.ts +13 -0
- package/lib/idx/idx-js/v1/parsers.d.ts +16 -0
- package/lib/idx/idx-js/v1/remediationParser.d.ts +12 -0
- package/lib/idx/index.d.ts +12 -11
- package/lib/idx/interact.d.ts +3 -2
- package/lib/idx/introspect.d.ts +2 -2
- package/lib/idx/poll.d.ts +2 -2
- package/lib/idx/proceed.d.ts +5 -6
- package/lib/idx/recoverPassword.d.ts +2 -2
- package/lib/idx/register.d.ts +2 -2
- package/lib/idx/remediate.d.ts +2 -2
- package/lib/idx/remediators/AuthenticatorVerificationData.d.ts +6 -5
- package/lib/idx/remediators/Base/AuthenticatorData.d.ts +5 -8
- package/lib/idx/remediators/Base/Remediator.d.ts +6 -5
- package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +9 -8
- package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +9 -16
- package/lib/idx/remediators/ChallengePoll.d.ts +1 -0
- package/lib/idx/remediators/EnrollProfile.d.ts +0 -3
- package/lib/idx/remediators/EnrollmentChannelData.d.ts +1 -4
- package/lib/idx/remediators/Identify.d.ts +3 -5
- package/lib/idx/remediators/ReEnrollAuthenticator.d.ts +2 -5
- package/lib/idx/remediators/SelectAuthenticatorAuthenticate.d.ts +2 -1
- package/lib/idx/remediators/SelectAuthenticatorUnlockAccount.d.ts +37 -0
- package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +1 -0
- package/lib/idx/remediators/Skip.d.ts +0 -3
- package/lib/idx/remediators/index.d.ts +1 -0
- package/lib/idx/run.d.ts +2 -2
- package/lib/idx/startTransaction.d.ts +2 -2
- package/lib/idx/transactionMeta.d.ts +7 -7
- package/lib/idx/types/FlowIdentifier.d.ts +1 -1
- package/lib/idx/types/idx-js.d.ts +41 -1
- package/lib/idx/types/index.d.ts +27 -7
- package/lib/idx/unlockAccount.d.ts +15 -0
- package/lib/idx/util.d.ts +11 -0
- package/lib/oidc/endpoints/well-known.d.ts +3 -3
- package/lib/oidc/exchangeCodeForTokens.d.ts +2 -2
- package/lib/oidc/getToken.d.ts +2 -2
- package/lib/oidc/getWithPopup.d.ts +2 -2
- package/lib/oidc/getWithRedirect.d.ts +2 -2
- package/lib/oidc/getWithoutPrompt.d.ts +2 -2
- package/lib/oidc/handleOAuthResponse.d.ts +2 -2
- package/lib/oidc/renewToken.d.ts +2 -2
- package/lib/oidc/renewTokensWithRefresh.d.ts +2 -2
- package/lib/oidc/revokeToken.d.ts +2 -2
- package/lib/oidc/util/browser.d.ts +2 -2
- package/lib/oidc/util/defaultTokenParams.d.ts +2 -2
- package/lib/oidc/util/errors.d.ts +2 -2
- package/lib/oidc/util/loginRedirect.d.ts +4 -4
- package/lib/oidc/util/oauth.d.ts +4 -4
- package/lib/oidc/util/oauthMeta.d.ts +2 -2
- package/lib/oidc/util/prepareTokenParams.d.ts +5 -5
- package/lib/oidc/util/validateClaims.d.ts +2 -2
- package/lib/oidc/verifyToken.d.ts +2 -2
- package/lib/options/browser.d.ts +16 -0
- package/lib/options/index.d.ts +14 -0
- package/lib/options/node.d.ts +16 -0
- package/lib/services/AutoRenewService.d.ts +27 -0
- package/lib/services/{TokenService.d.ts → SyncStorageService.d.ts} +8 -5
- package/lib/services/index.d.ts +13 -0
- package/lib/types/OktaAuthOptions.d.ts +6 -2
- package/lib/types/Service.d.ts +23 -0
- package/lib/types/Storage.d.ts +7 -5
- package/lib/types/Transaction.d.ts +2 -10
- package/lib/types/api.d.ts +23 -10
- package/lib/types/index.d.ts +1 -1
- package/lib/util/sharedStorage.d.ts +1 -1
- package/package.json +32 -14
- package/polyfill/index.js +1 -0
- package/cjs/services/TokenService.js +0 -111
- package/cjs/services/TokenService.js.map +0 -1
- package/esm/index.js.map +0 -1
package/cjs/PromiseQueue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../lib/PromiseQueue.ts"],"names":["PromiseQueue","constructor","queue","running","push","method","thisObject","args","
|
|
1
|
+
{"version":3,"sources":["../../lib/PromiseQueue.ts"],"names":["PromiseQueue","constructor","options","quiet","queue","running","push","method","thisObject","args","resolve","reject","length","run","queueItem","shift","res","apply","then","finally"],"mappings":";;;;;;;;AAgBA;;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAeA,MAAMA,YAAN,CAAmB;AAKjBC,EAAAA,WAAW,CAACC,OAA4B,GAAG;AAAEC,IAAAA,KAAK,EAAE;AAAT,GAAhC,EAAkD;AAC3D,SAAKC,KAAL,GAAa,EAAb;AACA,SAAKC,OAAL,GAAe,KAAf;AACA,SAAKH,OAAL,GAAeA,OAAf;AACD,GATgB,CAWjB;AACA;AACA;;;AACAI,EAAAA,IAAI,CAACC,MAAD,EAAgCC,UAAhC,EAAiD,GAAGC,IAApD,EAAiE;AACnE,WAAO,qBAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,UAAI,KAAKP,KAAL,CAAWQ,MAAX,GAAoB,CAAxB,EAA2B;AACzB;AACA;AACA,YAAI,KAAKV,OAAL,CAAaC,KAAb,KAAuB,KAA3B,EAAkC;AAChC,0BACE,+EACA,qEAFF;AAID;AACF;;AACD,WAAKC,KAAL,CAAWE,IAAX,CAAgB;AACdC,QAAAA,MADc;AAEdC,QAAAA,UAFc;AAGdC,QAAAA,IAHc;AAIdC,QAAAA,OAJc;AAKdC,QAAAA;AALc,OAAhB;AAOA,WAAKE,GAAL;AACD,KAnBM,CAAP;AAoBD;;AAEDA,EAAAA,GAAG,GAAG;AACJ,QAAI,KAAKR,OAAT,EAAkB;AAChB;AACD;;AACD,QAAI,KAAKD,KAAL,CAAWQ,MAAX,KAAsB,CAA1B,EAA6B;AAC3B;AACD;;AACD,SAAKP,OAAL,GAAe,IAAf,CAPI,CAQJ;;AACA,QAAIS,SAAS,GAAG,KAAKV,KAAL,CAAWW,KAAX,EAAhB;AACA,QAAIC,GAAG,GAAGF,SAAS,CAACP,MAAV,CAAiBU,KAAjB,CAAuBH,SAAS,CAACN,UAAjC,EAA6CM,SAAS,CAACL,IAAvD,CAAV;;AACA,QAAI,qBAAUO,GAAV,CAAJ,EAAoB;AACjBA,MAAAA,GAAD,CAA0BE,IAA1B,CAA+BJ,SAAS,CAACJ,OAAzC,EAAkDI,SAAS,CAACH,MAA5D,EAAoEQ,OAApE,CAA4E,MAAM;AAChF,aAAKd,OAAL,GAAe,KAAf;AACA,aAAKQ,GAAL;AACD,OAHD;AAID,KALD,MAKO;AACLC,MAAAA,SAAS,CAACJ,OAAV,CAAkBM,GAAlB;AACA,WAAKX,OAAL,GAAe,KAAf;AACA,WAAKQ,GAAL;AACD;AACF;;AA1DgB;;eA6DJb,Y","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// Implements a queue for synchronous or asynchronous methods\n// Methods will be wrapped in a promise and execute sequentially\n// This can be used to prevent concurrent calls to a single method or a set of methods\n\nimport { isPromise, warn } from './util';\n\ninterface QueueItem {\n method: () => void;\n thisObject: object;\n args: any[];\n resolve: (value?: unknown) => void;\n reject: (reason?: unknown) => void;\n}\n\ninterface PromiseQueueOptions {\n quiet?: boolean; // if false, concurrrency warnings will not be logged\n}\nclass PromiseQueue {\n queue: QueueItem[];\n running: boolean;\n options: PromiseQueueOptions;\n\n constructor(options: PromiseQueueOptions = { quiet: false }) {\n this.queue = [];\n this.running = false;\n this.options = options;\n }\n\n // Returns a promise\n // If the method is synchronous, it will resolve when the method completes\n // If the method returns a promise, it will resolve (or reject) with the value from the method's promise\n push(method: (...args: any) => any, thisObject: any, ...args: any[]) {\n return new Promise((resolve, reject) => {\n if (this.queue.length > 0) {\n // There is at least one other pending call.\n // The PromiseQueue will prevent these methods from running concurrently.\n if (this.options.quiet !== false) {\n warn(\n 'Async method is being called but another async method is already running. ' +\n 'The new method will be delayed until the previous method completes.'\n );\n }\n }\n this.queue.push({\n method,\n thisObject,\n args,\n resolve,\n reject\n });\n this.run();\n });\n }\n\n run() {\n if (this.running) {\n return;\n }\n if (this.queue.length === 0) {\n return;\n }\n this.running = true;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n var queueItem = this.queue.shift()!;\n var res = queueItem.method.apply(queueItem.thisObject, queueItem.args as never) as unknown;\n if (isPromise(res)) {\n (res as Promise<unknown>).then(queueItem.resolve, queueItem.reject).finally(() => {\n this.running = false;\n this.run();\n });\n } else {\n queueItem.resolve(res);\n this.running = false;\n this.run();\n }\n }\n}\n\nexport default PromiseQueue;"],"file":"PromiseQueue.js"}
|
package/cjs/SavedObject.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.default = void 0;
|
|
6
6
|
|
|
7
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
|
|
8
|
+
|
|
7
9
|
var _AuthSdkError = _interopRequireDefault(require("./errors/AuthSdkError"));
|
|
8
10
|
|
|
9
11
|
/*!
|
|
@@ -64,7 +66,7 @@ class SavedObject {
|
|
|
64
66
|
|
|
65
67
|
setStorage(obj) {
|
|
66
68
|
try {
|
|
67
|
-
var storageString = obj ?
|
|
69
|
+
var storageString = obj ? (0, _stringify.default)(obj) : '{}';
|
|
68
70
|
this.storageProvider.setItem(this.storageName, storageString);
|
|
69
71
|
} catch (e) {
|
|
70
72
|
throw new _AuthSdkError.default('Unable to set storage: ' + this.storageName);
|
package/cjs/SavedObject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../lib/SavedObject.ts"],"names":["SavedObject","constructor","storage","storageName","AuthSdkError","length","storageProvider","getItem","key","getStorage","setItem","value","updateStorage","removeItem","clearStorage","storageString","JSON","parse","e","setStorage","obj"
|
|
1
|
+
{"version":3,"sources":["../../lib/SavedObject.ts"],"names":["SavedObject","constructor","storage","storageName","AuthSdkError","length","storageProvider","getItem","key","getStorage","setItem","value","updateStorage","removeItem","clearStorage","storageString","JSON","parse","e","setStorage","obj"],"mappings":";;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACe,MAAMA,WAAN,CAA6C;AAI1DC,EAAAA,WAAW,CAACC,OAAD,EAAyBC,WAAzB,EAA8C;AACvD,QAAI,CAACD,OAAL,EAAc;AACZ,YAAM,IAAIE,qBAAJ,CAAiB,uBAAjB,CAAN;AACD;;AAED,QAAI,OAAOD,WAAP,KAAuB,QAAvB,IAAmC,CAACA,WAAW,CAACE,MAApD,EAA4D;AAC1D,YAAM,IAAID,qBAAJ,CAAiB,2BAAjB,CAAN;AACD;;AAED,SAAKD,WAAL,GAAmBA,WAAnB;AACA,SAAKG,eAAL,GAAuBJ,OAAvB;AACD,GAfyD,CAiB1D;AACA;AACA;;;AAEAK,EAAAA,OAAO,CAACC,GAAD,EAAc;AACnB,WAAO,KAAKC,UAAL,GAAkBD,GAAlB,CAAP;AACD;;AAEDE,EAAAA,OAAO,CAACF,GAAD,EAAcG,KAAd,EAA0B;AAC/B,WAAO,KAAKC,aAAL,CAAmBJ,GAAnB,EAAwBG,KAAxB,CAAP;AACD;;AAEDE,EAAAA,UAAU,CAACL,GAAD,EAAc;AACtB,WAAO,KAAKM,YAAL,CAAkBN,GAAlB,CAAP;AACD,GA/ByD,CAiC1D;AACA;AACA;;;AAEAC,EAAAA,UAAU,GAAG;AACX,QAAIM,aAAa,GAAG,KAAKT,eAAL,CAAqBC,OAArB,CAA6B,KAAKJ,WAAlC,CAApB;AACAY,IAAAA,aAAa,GAAGA,aAAa,IAAI,IAAjC;;AACA,QAAI;AACF,aAAOC,IAAI,CAACC,KAAL,CAAWF,aAAX,CAAP;AACD,KAFD,CAEE,OAAMG,CAAN,EAAS;AACT,YAAM,IAAId,qBAAJ,CAAiB,qCAAqC,KAAKD,WAA3D,CAAN;AACD;AACF;;AAEDgB,EAAAA,UAAU,CAACC,GAAD,EAAY;AACpB,QAAI;AACF,UAAIL,aAAa,GAAGK,GAAG,GAAG,wBAAeA,GAAf,CAAH,GAAyB,IAAhD;AACA,WAAKd,eAAL,CAAqBI,OAArB,CAA6B,KAAKP,WAAlC,EAA+CY,aAA/C;AACD,KAHD,CAGE,OAAMG,CAAN,EAAS;AACT,YAAM,IAAId,qBAAJ,CAAiB,4BAA4B,KAAKD,WAAlD,CAAN;AACD;AACF;;AAEDW,EAAAA,YAAY,CAACN,GAAD,EAAe;AACzB,QAAI,CAACA,GAAL,EAAU;AACR;AACA,UAAI,KAAKF,eAAL,CAAqBO,UAAzB,EAAqC;AACnC,aAAKP,eAAL,CAAqBO,UAArB,CAAgC,KAAKV,WAArC;AACD,OAFD,MAEO;AACL,aAAKgB,UAAL;AACD;;AACD;AACD;;AAED,QAAIC,GAAG,GAAG,KAAKX,UAAL,EAAV;AACA,WAAOW,GAAG,CAACZ,GAAD,CAAV;AACA,SAAKW,UAAL,CAAgBC,GAAhB;AACD;;AAEDR,EAAAA,aAAa,CAACJ,GAAD,EAAMG,KAAN,EAAa;AACxB,QAAIS,GAAG,GAAG,KAAKX,UAAL,EAAV;AACAW,IAAAA,GAAG,CAACZ,GAAD,CAAH,GAAWG,KAAX;AACA,SAAKQ,UAAL,CAAgBC,GAAhB;AACD;;AA5EyD","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\nimport AuthSdkError from './errors/AuthSdkError';\nimport { StorageProvider, SimpleStorage } from './types';\n\n// formerly known as \"storageBuilder\". Represents an object saved under a key/name.\nexport default class SavedObject implements StorageProvider {\n storageProvider: SimpleStorage;\n storageName: string;\n\n constructor(storage: SimpleStorage, storageName: string) {\n if (!storage) {\n throw new AuthSdkError('\"storage\" is required');\n }\n\n if (typeof storageName !== 'string' || !storageName.length) {\n throw new AuthSdkError('\"storageName\" is required');\n }\n\n this.storageName = storageName;\n this.storageProvider = storage;\n }\n\n //\n // SimpleStorage interface\n //\n\n getItem(key: string) {\n return this.getStorage()[key];\n }\n\n setItem(key: string, value: any) {\n return this.updateStorage(key, value);\n }\n\n removeItem(key: string) {\n return this.clearStorage(key);\n }\n\n //\n // StorageProvider interface\n //\n\n getStorage() {\n var storageString = this.storageProvider.getItem(this.storageName);\n storageString = storageString || '{}';\n try {\n return JSON.parse(storageString);\n } catch(e) {\n throw new AuthSdkError('Unable to parse storage string: ' + this.storageName);\n }\n }\n\n setStorage(obj?: any) {\n try {\n var storageString = obj ? JSON.stringify(obj) : '{}';\n this.storageProvider.setItem(this.storageName, storageString);\n } catch(e) {\n throw new AuthSdkError('Unable to set storage: ' + this.storageName);\n }\n }\n\n clearStorage(key?: string) {\n if (!key) {\n // clear all\n if (this.storageProvider.removeItem) {\n this.storageProvider.removeItem(this.storageName);\n } else {\n this.setStorage();\n }\n return;\n }\n\n var obj = this.getStorage();\n delete obj[key];\n this.setStorage(obj);\n }\n\n updateStorage(key, value) {\n var obj = this.getStorage();\n obj[key] = value;\n this.setStorage(obj);\n }\n}\n"],"file":"SavedObject.js"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.ServiceManager = void 0;
|
|
6
|
+
|
|
7
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
8
|
+
|
|
9
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map"));
|
|
10
|
+
|
|
11
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
|
|
12
|
+
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
14
|
+
|
|
15
|
+
var _broadcastChannel = require("broadcast-channel");
|
|
16
|
+
|
|
17
|
+
var _services = require("./services");
|
|
18
|
+
|
|
19
|
+
var _features = require("./features");
|
|
20
|
+
|
|
21
|
+
/*!
|
|
22
|
+
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
23
|
+
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
|
|
24
|
+
*
|
|
25
|
+
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
|
26
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
27
|
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
28
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
29
|
+
*
|
|
30
|
+
* See the License for the specific language governing permissions and limitations under the License.
|
|
31
|
+
*/
|
|
32
|
+
class ServiceManager {
|
|
33
|
+
constructor(sdk, options = {}) {
|
|
34
|
+
this.sdk = sdk; // TODO: backwards compatibility, remove in next major version - OKTA-473815
|
|
35
|
+
|
|
36
|
+
const {
|
|
37
|
+
autoRenew,
|
|
38
|
+
autoRemove,
|
|
39
|
+
syncStorage
|
|
40
|
+
} = sdk.tokenManager.getOptions();
|
|
41
|
+
this.options = (0, _assign.default)({}, ServiceManager.defaultOptions, {
|
|
42
|
+
autoRenew,
|
|
43
|
+
autoRemove,
|
|
44
|
+
syncStorage
|
|
45
|
+
}, options);
|
|
46
|
+
this.started = false;
|
|
47
|
+
this.services = new _map.default();
|
|
48
|
+
this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);
|
|
49
|
+
this.onLeader = this.onLeader.bind(this);
|
|
50
|
+
ServiceManager.knownServices.forEach(name => {
|
|
51
|
+
const svc = this.createService(name);
|
|
52
|
+
|
|
53
|
+
if (svc) {
|
|
54
|
+
this.services.set(name, svc);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static canUseLeaderElection() {
|
|
60
|
+
return (0, _features.isBrowser)();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
onLeader() {
|
|
64
|
+
if (this.started) {
|
|
65
|
+
// Start services that requires leadership
|
|
66
|
+
this.startServices();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
onLeaderDuplicate() {}
|
|
71
|
+
|
|
72
|
+
isLeader() {
|
|
73
|
+
var _this$elector;
|
|
74
|
+
|
|
75
|
+
return !!((_this$elector = this.elector) !== null && _this$elector !== void 0 && _this$elector.isLeader);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
hasLeader() {
|
|
79
|
+
var _this$elector2;
|
|
80
|
+
|
|
81
|
+
return (_this$elector2 = this.elector) === null || _this$elector2 === void 0 ? void 0 : _this$elector2.hasLeader;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
isLeaderRequired() {
|
|
85
|
+
var _context;
|
|
86
|
+
|
|
87
|
+
return [...(0, _values.default)(_context = this.services).call(_context)].some(srv => srv.requiresLeadership());
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
start() {
|
|
91
|
+
if (this.started) {
|
|
92
|
+
this.stop();
|
|
93
|
+
} // only start election if a leader is required
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
if (this.isLeaderRequired()) {
|
|
97
|
+
this.startElector();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
this.startServices();
|
|
101
|
+
this.started = true;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
stop() {
|
|
105
|
+
this.stopElector();
|
|
106
|
+
this.stopServices();
|
|
107
|
+
this.started = false;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
getService(name) {
|
|
111
|
+
return this.services.get(name);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
startServices() {
|
|
115
|
+
for (const srv of (0, _values.default)(_context2 = this.services).call(_context2)) {
|
|
116
|
+
var _context2;
|
|
117
|
+
|
|
118
|
+
const canStart = srv.canStart() && !srv.isStarted() && (srv.requiresLeadership() ? this.isLeader() : true);
|
|
119
|
+
|
|
120
|
+
if (canStart) {
|
|
121
|
+
srv.start();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
stopServices() {
|
|
127
|
+
for (const srv of (0, _values.default)(_context3 = this.services).call(_context3)) {
|
|
128
|
+
var _context3;
|
|
129
|
+
|
|
130
|
+
srv.stop();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
startElector() {
|
|
135
|
+
this.stopElector();
|
|
136
|
+
|
|
137
|
+
if (ServiceManager.canUseLeaderElection()) {
|
|
138
|
+
if (!this.channel) {
|
|
139
|
+
const {
|
|
140
|
+
broadcastChannelName
|
|
141
|
+
} = this.options;
|
|
142
|
+
this.channel = new _broadcastChannel.BroadcastChannel(broadcastChannelName);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (!this.elector) {
|
|
146
|
+
this.elector = (0, _broadcastChannel.createLeaderElection)(this.channel);
|
|
147
|
+
this.elector.onduplicate = this.onLeaderDuplicate;
|
|
148
|
+
this.elector.awaitLeadership().then(this.onLeader);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
stopElector() {
|
|
154
|
+
if (this.elector) {
|
|
155
|
+
var _this$elector3, _this$channel;
|
|
156
|
+
|
|
157
|
+
(_this$elector3 = this.elector) === null || _this$elector3 === void 0 ? void 0 : _this$elector3.die();
|
|
158
|
+
this.elector = undefined;
|
|
159
|
+
(_this$channel = this.channel) === null || _this$channel === void 0 ? void 0 : _this$channel.close();
|
|
160
|
+
this.channel = undefined;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
createService(name) {
|
|
165
|
+
const tokenManager = this.sdk.tokenManager;
|
|
166
|
+
let service;
|
|
167
|
+
|
|
168
|
+
switch (name) {
|
|
169
|
+
case 'autoRenew':
|
|
170
|
+
service = new _services.AutoRenewService(tokenManager, { ...this.options
|
|
171
|
+
});
|
|
172
|
+
break;
|
|
173
|
+
|
|
174
|
+
case 'syncStorage':
|
|
175
|
+
service = new _services.SyncStorageService(tokenManager, { ...this.options
|
|
176
|
+
});
|
|
177
|
+
break;
|
|
178
|
+
|
|
179
|
+
default:
|
|
180
|
+
throw new Error(`Unknown service ${name}`);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return service;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
exports.ServiceManager = ServiceManager;
|
|
189
|
+
(0, _defineProperty2.default)(ServiceManager, "knownServices", ['autoRenew', 'syncStorage']);
|
|
190
|
+
(0, _defineProperty2.default)(ServiceManager, "defaultOptions", {
|
|
191
|
+
autoRenew: true,
|
|
192
|
+
autoRemove: true,
|
|
193
|
+
syncStorage: true
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=ServiceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../lib/ServiceManager.ts"],"names":["ServiceManager","constructor","sdk","options","autoRenew","autoRemove","syncStorage","tokenManager","getOptions","defaultOptions","started","services","onLeaderDuplicate","bind","onLeader","knownServices","forEach","name","svc","createService","set","canUseLeaderElection","startServices","isLeader","elector","hasLeader","isLeaderRequired","some","srv","requiresLeadership","start","stop","startElector","stopElector","stopServices","getService","get","canStart","isStarted","channel","broadcastChannelName","BroadcastChannel","onduplicate","awaitLeadership","then","die","undefined","close","service","AutoRenewService","SyncStorageService","Error"],"mappings":"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","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\nimport {\n ServiceManagerInterface,\n ServiceInterface,\n ServiceManagerOptions\n} from './types';\nimport { OktaAuth } from '.';\nimport {\n BroadcastChannel,\n createLeaderElection,\n LeaderElector\n} from 'broadcast-channel';\nimport { AutoRenewService, SyncStorageService } from './services';\nimport { isBrowser } from './features';\n\nexport class ServiceManager implements ServiceManagerInterface {\n private sdk: OktaAuth;\n private options: ServiceManagerOptions;\n private services: Map<string, ServiceInterface>;\n private channel?: BroadcastChannel;\n private elector?: LeaderElector;\n private started: boolean;\n\n private static knownServices = ['autoRenew', 'syncStorage'];\n\n private static defaultOptions = {\n autoRenew: true,\n autoRemove: true,\n syncStorage: true\n };\n\n constructor(sdk: OktaAuth, options: ServiceManagerOptions = {}) {\n this.sdk = sdk;\n\n // TODO: backwards compatibility, remove in next major version - OKTA-473815\n const { autoRenew, autoRemove, syncStorage } = sdk.tokenManager.getOptions();\n this.options = Object.assign({}, \n ServiceManager.defaultOptions,\n { autoRenew, autoRemove, syncStorage },\n options\n );\n\n this.started = false;\n this.services = new Map();\n this.onLeaderDuplicate = this.onLeaderDuplicate.bind(this);\n this.onLeader = this.onLeader.bind(this);\n\n ServiceManager.knownServices.forEach(name => {\n const svc = this.createService(name);\n if (svc) {\n this.services.set(name, svc);\n }\n });\n }\n\n public static canUseLeaderElection() {\n return isBrowser();\n }\n\n private onLeader() {\n if (this.started) {\n // Start services that requires leadership\n this.startServices();\n }\n }\n\n private onLeaderDuplicate() {\n }\n\n isLeader() {\n return !!this.elector?.isLeader;\n }\n\n hasLeader() {\n return this.elector?.hasLeader;\n }\n\n isLeaderRequired() {\n return [...this.services.values()].some(srv => srv.requiresLeadership());\n }\n\n start() {\n if (this.started) {\n this.stop();\n }\n // only start election if a leader is required\n if (this.isLeaderRequired()) {\n this.startElector();\n }\n this.startServices();\n this.started = true;\n }\n \n stop() {\n this.stopElector();\n this.stopServices();\n this.started = false;\n }\n\n getService(name: string): ServiceInterface | undefined {\n return this.services.get(name);\n }\n\n private startServices() {\n for (const srv of this.services.values()) {\n const canStart = srv.canStart() && !srv.isStarted() && (srv.requiresLeadership() ? this.isLeader() : true);\n if (canStart) {\n srv.start();\n }\n }\n }\n\n private stopServices() {\n for (const srv of this.services.values()) {\n srv.stop();\n }\n }\n\n private startElector() {\n this.stopElector();\n if (ServiceManager.canUseLeaderElection()) {\n if (!this.channel) {\n const { broadcastChannelName } = this.options;\n this.channel = new BroadcastChannel(broadcastChannelName as string);\n }\n if (!this.elector) {\n this.elector = createLeaderElection(this.channel);\n this.elector.onduplicate = this.onLeaderDuplicate;\n this.elector.awaitLeadership().then(this.onLeader);\n }\n }\n }\n\n private stopElector() {\n if (this.elector) {\n this.elector?.die();\n this.elector = undefined;\n this.channel?.close();\n this.channel = undefined;\n }\n }\n\n private createService(name: string): ServiceInterface {\n const tokenManager = this.sdk.tokenManager;\n\n let service: ServiceInterface | undefined;\n switch (name) {\n case 'autoRenew':\n service = new AutoRenewService(tokenManager, {...this.options});\n break;\n case 'syncStorage':\n service = new SyncStorageService(tokenManager, {...this.options});\n break;\n default:\n throw new Error(`Unknown service ${name}`);\n }\n return service;\n }\n\n}\n"],"file":"ServiceManager.js"}
|
package/cjs/StorageManager.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
exports.
|
|
5
|
+
exports.StorageManager = void 0;
|
|
6
|
+
|
|
7
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
8
|
+
|
|
9
|
+
var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
|
|
10
|
+
|
|
11
|
+
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
6
12
|
|
|
7
13
|
var _constants = require("./constants");
|
|
8
14
|
|
|
@@ -41,13 +47,13 @@ class StorageManager {
|
|
|
41
47
|
|
|
42
48
|
|
|
43
49
|
getOptionsForSection(sectionName, overrideOptions) {
|
|
44
|
-
return
|
|
50
|
+
return (0, _assign.default)({}, this.storageManagerOptions[sectionName], overrideOptions);
|
|
45
51
|
} // generic method to get any available storage provider
|
|
46
52
|
// eslint-disable-next-line complexity
|
|
47
53
|
|
|
48
54
|
|
|
49
55
|
getStorage(options) {
|
|
50
|
-
options =
|
|
56
|
+
options = (0, _assign.default)({}, this.cookieOptions, options); // set defaults
|
|
51
57
|
|
|
52
58
|
if (options.storageProvider) {
|
|
53
59
|
return options.storageProvider;
|
|
@@ -64,10 +70,10 @@ class StorageManager {
|
|
|
64
70
|
|
|
65
71
|
|
|
66
72
|
if (storageType && storageTypes) {
|
|
67
|
-
const idx = storageTypes.
|
|
73
|
+
const idx = (0, _indexOf.default)(storageTypes).call(storageTypes, storageType);
|
|
68
74
|
|
|
69
75
|
if (idx >= 0) {
|
|
70
|
-
storageTypes = storageTypes.
|
|
76
|
+
storageTypes = (0, _slice.default)(storageTypes).call(storageTypes, idx);
|
|
71
77
|
storageType = undefined;
|
|
72
78
|
}
|
|
73
79
|
}
|
|
@@ -200,6 +206,5 @@ class StorageManager {
|
|
|
200
206
|
|
|
201
207
|
}
|
|
202
208
|
|
|
203
|
-
exports.
|
|
204
|
-
module.exports = exports.default;
|
|
209
|
+
exports.StorageManager = StorageManager;
|
|
205
210
|
//# sourceMappingURL=StorageManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../lib/StorageManager.ts"],"names":["logServerSideMemoryStorageWarning","options","storageProvider","StorageManager","constructor","storageManagerOptions","cookieOptions","storageUtil","getOptionsForSection","sectionName","overrideOptions","Object","assign","getStorage","storageType","storageTypes","sessionCookie","idx","indexOf","slice","undefined","findStorageType","getStorageByType","getTransactionStorage","storage","storageKey","TRANSACTION_STORAGE_NAME","SavedObject","getSharedTansactionStorage","SHARED_TRANSACTION_STORAGE_NAME","getOriginalUriStorage","ORIGINAL_URI_STORAGE_NAME","getIdxResponseStorage","e","transactionStorage","getItem","key","transaction","setItem","val","AuthSdkError","setStorage","removeItem","IDX_RESPONSE_STORAGE_NAME","getTokenStorage","TOKEN_STORAGE_NAME","getHttpCache","CACHE_STORAGE_NAME","getLegacyPKCEStorage","PKCE_STORAGE_NAME","getLegacyOAuthParamsStorage","REDIRECT_OAUTH_PARAMS_NAME"],"mappings":"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","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\nimport {\n PKCE_STORAGE_NAME,\n TOKEN_STORAGE_NAME,\n TRANSACTION_STORAGE_NAME,\n SHARED_TRANSACTION_STORAGE_NAME,\n ORIGINAL_URI_STORAGE_NAME,\n IDX_RESPONSE_STORAGE_NAME,\n CACHE_STORAGE_NAME,\n REDIRECT_OAUTH_PARAMS_NAME\n} from './constants';\nimport {\n StorageUtil,\n StorageProvider,\n StorageOptions,\n PKCEStorage,\n CookieOptions,\n TransactionStorage,\n IdxResponseStorage,\n StorageManagerOptions,\n SimpleStorage\n} from './types';\nimport SavedObject from './SavedObject';\nimport { isBrowser } from './features';\nimport { warn } from './util';\nimport { AuthSdkError } from './errors';\n\nfunction logServerSideMemoryStorageWarning(options: StorageOptions) {\n if (!isBrowser() && !options.storageProvider && !options.storageProvider) {\n // eslint-disable-next-line max-len\n warn('Memory storage can only support simple single user use case on server side, please provide custom storageProvider or storageKey if advanced scenarios need to be supported.');\n }\n}\n\nexport default class StorageManager {\n storageManagerOptions: StorageManagerOptions;\n cookieOptions: CookieOptions;\n storageUtil: StorageUtil;\n\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n this.storageManagerOptions = storageManagerOptions;\n this.cookieOptions = cookieOptions;\n this.storageUtil = storageUtil;\n }\n\n // combines defaults in order\n getOptionsForSection(sectionName: string, overrideOptions?: StorageOptions) {\n return Object.assign({}, this.storageManagerOptions[sectionName], overrideOptions);\n }\n \n // generic method to get any available storage provider\n // eslint-disable-next-line complexity\n getStorage(options: StorageOptions): SimpleStorage {\n options = Object.assign({}, this.cookieOptions, options); // set defaults\n\n if (options.storageProvider) {\n return options.storageProvider;\n }\n\n let { storageType, storageTypes } = options;\n\n if(storageType === 'sessionStorage') {\n options.sessionCookie = true;\n }\n\n // Maintain compatibility. Automatically fallback. May change in next major version. OKTA-362589\n if (storageType && storageTypes) {\n const idx = storageTypes.indexOf(storageType);\n if (idx >= 0) {\n storageTypes = storageTypes.slice(idx);\n storageType = undefined;\n }\n }\n\n if (!storageType) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storageType = this.storageUtil.findStorageType(storageTypes!);\n }\n return this.storageUtil.getStorageByType(storageType, options);\n }\n\n // stateToken, interactionHandle\n getTransactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getSharedTansactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('shared-transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || SHARED_TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getOriginalUriStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('original-uri', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || ORIGINAL_URI_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // intermediate idxResponse\n // store for network traffic optimazation purpose\n // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791\n getIdxResponseStorage(options?: StorageOptions): IdxResponseStorage | null {\n let storage;\n if (isBrowser()) {\n // on browser side only use memory storage \n try {\n storage = this.storageUtil.getStorageByType('memory', options);\n } catch (e) {\n // it's ok to miss response storage\n // eslint-disable-next-line max-len\n warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n }\n } else {\n // on server side re-use transaction custom storage\n const transactionStorage = this.getTransactionStorage(options);\n if (transactionStorage) {\n storage = {\n getItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (transaction && transaction[key]) {\n return transaction[key];\n }\n return null;\n },\n setItem: (key, val) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n }\n transaction[key] = val;\n transactionStorage.setStorage(transaction);\n },\n removeItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n return;\n }\n delete transaction[key];\n transactionStorage.setStorage(transaction);\n }\n };\n }\n }\n\n if (!storage) {\n return null;\n }\n\n return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n }\n\n // access_token, id_token, refresh_token\n getTokenStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('token', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TOKEN_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // caches well-known response, among others\n getHttpCache(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('cache', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || CACHE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // Will be removed in an upcoming major version. OKTA-362589\n getLegacyPKCEStorage(options?: StorageOptions): PKCEStorage {\n options = this.getOptionsForSection('legacy-pkce', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || PKCE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getLegacyOAuthParamsStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('legacy-oauth-params', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || REDIRECT_OAUTH_PARAMS_NAME;\n return new SavedObject(storage, storageKey);\n }\n}\n"],"file":"StorageManager.js"}
|
|
1
|
+
{"version":3,"sources":["../../lib/StorageManager.ts"],"names":["logServerSideMemoryStorageWarning","options","storageProvider","StorageManager","constructor","storageManagerOptions","cookieOptions","storageUtil","getOptionsForSection","sectionName","overrideOptions","getStorage","storageType","storageTypes","sessionCookie","idx","undefined","findStorageType","getStorageByType","getTransactionStorage","storage","storageKey","TRANSACTION_STORAGE_NAME","SavedObject","getSharedTansactionStorage","SHARED_TRANSACTION_STORAGE_NAME","getOriginalUriStorage","ORIGINAL_URI_STORAGE_NAME","getIdxResponseStorage","e","transactionStorage","getItem","key","transaction","setItem","val","AuthSdkError","setStorage","removeItem","IDX_RESPONSE_STORAGE_NAME","getTokenStorage","TOKEN_STORAGE_NAME","getHttpCache","CACHE_STORAGE_NAME","getLegacyPKCEStorage","PKCE_STORAGE_NAME","getLegacyOAuthParamsStorage","REDIRECT_OAUTH_PARAMS_NAME"],"mappings":"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","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\nimport {\n PKCE_STORAGE_NAME,\n TOKEN_STORAGE_NAME,\n TRANSACTION_STORAGE_NAME,\n SHARED_TRANSACTION_STORAGE_NAME,\n ORIGINAL_URI_STORAGE_NAME,\n IDX_RESPONSE_STORAGE_NAME,\n CACHE_STORAGE_NAME,\n REDIRECT_OAUTH_PARAMS_NAME\n} from './constants';\nimport {\n StorageUtil,\n StorageProvider,\n StorageOptions,\n PKCEStorage,\n CookieOptions,\n TransactionStorage,\n IdxResponseStorage,\n StorageManagerOptions,\n SimpleStorage\n} from './types';\nimport SavedObject from './SavedObject';\nimport { isBrowser } from './features';\nimport { warn } from './util';\nimport { AuthSdkError } from './errors';\n\nfunction logServerSideMemoryStorageWarning(options: StorageOptions) {\n if (!isBrowser() && !options.storageProvider && !options.storageProvider) {\n // eslint-disable-next-line max-len\n warn('Memory storage can only support simple single user use case on server side, please provide custom storageProvider or storageKey if advanced scenarios need to be supported.');\n }\n}\n\nexport class StorageManager {\n storageManagerOptions: StorageManagerOptions;\n cookieOptions: CookieOptions;\n storageUtil: StorageUtil;\n\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n this.storageManagerOptions = storageManagerOptions;\n this.cookieOptions = cookieOptions;\n this.storageUtil = storageUtil;\n }\n\n // combines defaults in order\n getOptionsForSection(sectionName: string, overrideOptions?: StorageOptions) {\n return Object.assign({}, this.storageManagerOptions[sectionName], overrideOptions);\n }\n \n // generic method to get any available storage provider\n // eslint-disable-next-line complexity\n getStorage(options: StorageOptions): SimpleStorage {\n options = Object.assign({}, this.cookieOptions, options); // set defaults\n\n if (options.storageProvider) {\n return options.storageProvider;\n }\n\n let { storageType, storageTypes } = options;\n\n if(storageType === 'sessionStorage') {\n options.sessionCookie = true;\n }\n\n // Maintain compatibility. Automatically fallback. May change in next major version. OKTA-362589\n if (storageType && storageTypes) {\n const idx = storageTypes.indexOf(storageType);\n if (idx >= 0) {\n storageTypes = storageTypes.slice(idx);\n storageType = undefined;\n }\n }\n\n if (!storageType) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n storageType = this.storageUtil.findStorageType(storageTypes!);\n }\n return this.storageUtil.getStorageByType(storageType, options);\n }\n\n // stateToken, interactionHandle\n getTransactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getSharedTansactionStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('shared-transaction', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || SHARED_TRANSACTION_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getOriginalUriStorage(options?: StorageOptions): TransactionStorage {\n options = this.getOptionsForSection('original-uri', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || ORIGINAL_URI_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // intermediate idxResponse\n // store for network traffic optimazation purpose\n // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791\n getIdxResponseStorage(options?: StorageOptions): IdxResponseStorage | null {\n let storage;\n if (isBrowser()) {\n // on browser side only use memory storage \n try {\n storage = this.storageUtil.getStorageByType('memory', options);\n } catch (e) {\n // it's ok to miss response storage\n // eslint-disable-next-line max-len\n warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n }\n } else {\n // on server side re-use transaction custom storage\n const transactionStorage = this.getTransactionStorage(options);\n if (transactionStorage) {\n storage = {\n getItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (transaction && transaction[key]) {\n return transaction[key];\n }\n return null;\n },\n setItem: (key, val) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n }\n transaction[key] = val;\n transactionStorage.setStorage(transaction);\n },\n removeItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n return;\n }\n delete transaction[key];\n transactionStorage.setStorage(transaction);\n }\n };\n }\n }\n\n if (!storage) {\n return null;\n }\n\n return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n }\n\n // access_token, id_token, refresh_token\n getTokenStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('token', options);\n logServerSideMemoryStorageWarning(options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || TOKEN_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // caches well-known response, among others\n getHttpCache(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('cache', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || CACHE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n // Will be removed in an upcoming major version. OKTA-362589\n getLegacyPKCEStorage(options?: StorageOptions): PKCEStorage {\n options = this.getOptionsForSection('legacy-pkce', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || PKCE_STORAGE_NAME;\n return new SavedObject(storage, storageKey);\n }\n\n getLegacyOAuthParamsStorage(options?: StorageOptions): StorageProvider {\n options = this.getOptionsForSection('legacy-oauth-params', options);\n const storage = this.getStorage(options);\n const storageKey = options.storageKey || REDIRECT_OAUTH_PARAMS_NAME;\n return new SavedObject(storage, storageKey);\n }\n}\n"],"file":"StorageManager.js"}
|
package/cjs/TokenManager.js
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.TokenManager = exports.EVENT_ERROR = exports.EVENT_REMOVED = exports.EVENT_ADDED = exports.EVENT_RENEWED = exports.EVENT_EXPIRED = void 0;
|
|
6
6
|
|
|
7
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
|
|
8
|
+
|
|
9
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
10
|
+
|
|
11
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
|
|
12
|
+
|
|
13
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
14
|
+
|
|
15
|
+
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
16
|
+
|
|
17
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
18
|
+
|
|
7
19
|
var _util = require("./util");
|
|
8
20
|
|
|
9
21
|
var _errors = require("./errors");
|
|
@@ -12,13 +24,11 @@ var _util2 = require("./oidc/util");
|
|
|
12
24
|
|
|
13
25
|
var _features = require("./features");
|
|
14
26
|
|
|
15
|
-
var _constants = require("./constants");
|
|
16
|
-
|
|
17
27
|
var _clock = _interopRequireDefault(require("./clock"));
|
|
18
28
|
|
|
19
29
|
var _types = require("./types");
|
|
20
30
|
|
|
21
|
-
var
|
|
31
|
+
var _constants = require("./constants");
|
|
22
32
|
|
|
23
33
|
/*!
|
|
24
34
|
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
|
|
@@ -33,14 +43,16 @@ var _TokenService = require("./services/TokenService");
|
|
|
33
43
|
*
|
|
34
44
|
*/
|
|
35
45
|
const DEFAULT_OPTIONS = {
|
|
46
|
+
// TODO: remove in next major version - OKTA-473815
|
|
36
47
|
autoRenew: true,
|
|
37
48
|
autoRemove: true,
|
|
49
|
+
syncStorage: true,
|
|
50
|
+
// --- //
|
|
38
51
|
clearPendingRemoveTokens: true,
|
|
39
52
|
storage: undefined,
|
|
40
53
|
// will use value from storageManager config
|
|
41
54
|
expireEarlySeconds: 30,
|
|
42
55
|
storageKey: _constants.TOKEN_STORAGE_NAME,
|
|
43
|
-
syncStorage: true,
|
|
44
56
|
_storageEventDelay: 0
|
|
45
57
|
};
|
|
46
58
|
const EVENT_EXPIRED = 'expired';
|
|
@@ -62,6 +74,7 @@ function defaultState() {
|
|
|
62
74
|
}
|
|
63
75
|
|
|
64
76
|
class TokenManager {
|
|
77
|
+
// eslint-disable-next-line complexity
|
|
65
78
|
constructor(sdk, options = {}) {
|
|
66
79
|
this.sdk = sdk;
|
|
67
80
|
this.emitter = sdk.emitter;
|
|
@@ -70,8 +83,7 @@ class TokenManager {
|
|
|
70
83
|
throw new _errors.AuthSdkError('Emitter should be initialized before TokenManager');
|
|
71
84
|
}
|
|
72
85
|
|
|
73
|
-
|
|
74
|
-
options = Object.assign({}, DEFAULT_OPTIONS, (0, _util.removeNils)(options));
|
|
86
|
+
options = (0, _assign.default)({}, DEFAULT_OPTIONS, (0, _util.removeNils)(options));
|
|
75
87
|
|
|
76
88
|
if ((0, _features.isIE11OrLess)()) {
|
|
77
89
|
options._storageEventDelay = options._storageEventDelay || 1000;
|
|
@@ -104,23 +116,15 @@ class TokenManager {
|
|
|
104
116
|
}
|
|
105
117
|
|
|
106
118
|
start() {
|
|
107
|
-
if (this.service) {
|
|
108
|
-
this.stop();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
119
|
if (this.options.clearPendingRemoveTokens) {
|
|
112
120
|
this.clearPendingRemoveTokens();
|
|
113
121
|
}
|
|
114
122
|
|
|
115
|
-
this.
|
|
116
|
-
this.service.start();
|
|
123
|
+
this.setExpireEventTimeoutAll();
|
|
117
124
|
}
|
|
118
125
|
|
|
119
126
|
stop() {
|
|
120
|
-
|
|
121
|
-
this.service.stop();
|
|
122
|
-
this.service = null;
|
|
123
|
-
}
|
|
127
|
+
this.clearExpireEventTimeoutAll();
|
|
124
128
|
}
|
|
125
129
|
|
|
126
130
|
getOptions() {
|
|
@@ -161,15 +165,15 @@ class TokenManager {
|
|
|
161
165
|
emitEventsForCrossTabsStorageUpdate(newValue, oldValue) {
|
|
162
166
|
const oldTokens = this.getTokensFromStorageValue(oldValue);
|
|
163
167
|
const newTokens = this.getTokensFromStorageValue(newValue);
|
|
164
|
-
|
|
168
|
+
(0, _keys.default)(newTokens).forEach(key => {
|
|
165
169
|
const oldToken = oldTokens[key];
|
|
166
170
|
const newToken = newTokens[key];
|
|
167
171
|
|
|
168
|
-
if (
|
|
172
|
+
if ((0, _stringify.default)(oldToken) !== (0, _stringify.default)(newToken)) {
|
|
169
173
|
this.emitAdded(key, newToken);
|
|
170
174
|
}
|
|
171
175
|
});
|
|
172
|
-
|
|
176
|
+
(0, _keys.default)(oldTokens).forEach(key => {
|
|
173
177
|
const oldToken = oldTokens[key];
|
|
174
178
|
const newToken = newTokens[key];
|
|
175
179
|
|
|
@@ -254,7 +258,7 @@ class TokenManager {
|
|
|
254
258
|
getTokensSync() {
|
|
255
259
|
const tokens = {};
|
|
256
260
|
const tokenStorage = this.storage.getStorage();
|
|
257
|
-
|
|
261
|
+
(0, _keys.default)(tokenStorage).forEach(key => {
|
|
258
262
|
const token = tokenStorage[key];
|
|
259
263
|
|
|
260
264
|
if ((0, _types.isAccessToken)(token)) {
|
|
@@ -273,8 +277,10 @@ class TokenManager {
|
|
|
273
277
|
}
|
|
274
278
|
|
|
275
279
|
getStorageKeyByType(type) {
|
|
280
|
+
var _context;
|
|
281
|
+
|
|
276
282
|
const tokenStorage = this.storage.getStorage();
|
|
277
|
-
const key =
|
|
283
|
+
const key = (0, _filter.default)(_context = (0, _keys.default)(tokenStorage)).call(_context, key => {
|
|
278
284
|
const token = tokenStorage[key];
|
|
279
285
|
return (0, _types.isAccessToken)(token) && type === 'accessToken' || (0, _types.isIDToken)(token) && type === 'idToken' || (0, _types.isRefreshToken)(token) && type === 'refreshToken';
|
|
280
286
|
})[0];
|
|
@@ -341,7 +347,7 @@ class TokenManager {
|
|
|
341
347
|
}
|
|
342
348
|
}); // add token to storage
|
|
343
349
|
|
|
344
|
-
const storage = types.
|
|
350
|
+
const storage = (0, _reduce.default)(types).call(types, (storage, type) => {
|
|
345
351
|
const token = tokens[type];
|
|
346
352
|
|
|
347
353
|
if (token) {
|
|
@@ -410,7 +416,7 @@ class TokenManager {
|
|
|
410
416
|
throw new _errors.AuthSdkError('The tokenManager has no token for the key: ' + key);
|
|
411
417
|
}
|
|
412
418
|
} catch (e) {
|
|
413
|
-
return
|
|
419
|
+
return _promise.default.reject(e);
|
|
414
420
|
} // Remove existing autoRenew timeout
|
|
415
421
|
|
|
416
422
|
|
|
@@ -423,12 +429,8 @@ class TokenManager {
|
|
|
423
429
|
const tokenType = this.getTokenType(token);
|
|
424
430
|
return tokens[tokenType];
|
|
425
431
|
}).catch(err => {
|
|
426
|
-
// If renew fails, remove token and emit error
|
|
427
|
-
|
|
428
|
-
// remove token from storage
|
|
429
|
-
this.remove(key);
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
+
// If renew fails, remove token from storage and emit error
|
|
433
|
+
this.remove(key);
|
|
432
434
|
err.tokenKey = key;
|
|
433
435
|
this.emitError(err);
|
|
434
436
|
throw err;
|
|
@@ -446,7 +448,7 @@ class TokenManager {
|
|
|
446
448
|
|
|
447
449
|
clearPendingRemoveTokens() {
|
|
448
450
|
const tokens = this.getTokensSync();
|
|
449
|
-
|
|
451
|
+
(0, _keys.default)(tokens).forEach(key => {
|
|
450
452
|
if (tokens[key].pendingRemove) {
|
|
451
453
|
this.remove(key);
|
|
452
454
|
}
|
|
@@ -477,7 +479,7 @@ class TokenManager {
|
|
|
477
479
|
|
|
478
480
|
addPendingRemoveFlags() {
|
|
479
481
|
const tokens = this.getTokensSync();
|
|
480
|
-
|
|
482
|
+
(0, _keys.default)(tokens).forEach(key => {
|
|
481
483
|
tokens[key].pendingRemove = true;
|
|
482
484
|
});
|
|
483
485
|
this.setTokens(tokens);
|