@azure/msal-browser
Version:
Microsoft Authentication Library for js
274 lines (271 loc) • 14.7 kB
JavaScript
/*! @azure/msal-browser v4.12.0 2025-05-06 */
'use strict';
import { AuthError } from '@azure/msal-common/browser';
import { pkceNotCreated, cryptoNonExistent, emptyNavigateUri, hashEmptyError, noStateInHash, hashDoesNotContainKnownProperties, unableToParseState, stateInteractionTypeMismatch, interactionInProgress, popupWindowError, emptyWindowError, userCancelled, monitorPopupTimeout, monitorWindowTimeout, redirectInIframe, blockIframeReload, blockNestedPopups, iframeClosedPrematurely, silentLogoutUnsupported, noAccountError, silentPromptValueError, noTokenRequestCacheError, unableToParseTokenRequestCacheError, authRequestNotSetError, invalidCacheType, nonBrowserEnvironment, databaseNotOpen, noNetworkConnectivity, postRequestFailed, getRequestFailed, failedToParseResponse, unableToLoadToken, cryptoKeyNotFound, authCodeRequired, authCodeOrNativeAccountIdRequired, spaCodeAndNativeAccountIdPresent, databaseUnavailable, unableToAcquireTokenFromNativePlatform, nativeHandshakeTimeout, nativeExtensionNotInstalled, nativeConnectionNotEstablished, uninitializedPublicClientApplication, nativePromptNotSupported, invalidBase64String, invalidPopTokenRequest, earJwkEmpty, earJweEmpty, failedToBuildHeaders, failedToParseHeaders, failedToDecryptEarResponse } from './BrowserAuthErrorCodes.mjs';
import * as BrowserAuthErrorCodes from './BrowserAuthErrorCodes.mjs';
export { BrowserAuthErrorCodes };
/*
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
const ErrorLink = "For more visit: aka.ms/msaljs/browser-errors";
/**
* BrowserAuthErrorMessage class containing string constants used by error codes and messages.
*/
const BrowserAuthErrorMessages = {
[pkceNotCreated]: "The PKCE code challenge and verifier could not be generated.",
[earJwkEmpty]: "No EAR encryption key provided. This is unexpected.",
[earJweEmpty]: "Server response does not contain ear_jwe property. This is unexpected.",
[cryptoNonExistent]: "The crypto object or function is not available.",
[emptyNavigateUri]: "Navigation URI is empty. Please check stack trace for more info.",
[hashEmptyError]: `Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${ErrorLink}`,
[noStateInHash]: "Hash does not contain state. Please verify that the request originated from msal.",
[hashDoesNotContainKnownProperties]: `Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${ErrorLink}`,
[unableToParseState]: "Unable to parse state. Please verify that the request originated from msal.",
[stateInteractionTypeMismatch]: "Hash contains state but the interaction type does not match the caller.",
[interactionInProgress]: `Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${ErrorLink}`,
[popupWindowError]: "Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.",
[emptyWindowError]: "window.open returned null or undefined window object.",
[userCancelled]: "User cancelled the flow.",
[monitorPopupTimeout]: `Token acquisition in popup failed due to timeout. ${ErrorLink}`,
[monitorWindowTimeout]: `Token acquisition in iframe failed due to timeout. ${ErrorLink}`,
[redirectInIframe]: "Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.",
[blockIframeReload]: `Request was blocked inside an iframe because MSAL detected an authentication response. ${ErrorLink}`,
[blockNestedPopups]: "Request was blocked inside a popup because MSAL detected it was running in a popup.",
[iframeClosedPrematurely]: "The iframe being monitored was closed prematurely.",
[silentLogoutUnsupported]: "Silent logout not supported. Please call logoutRedirect or logoutPopup instead.",
[noAccountError]: "No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.",
[silentPromptValueError]: "The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.",
[noTokenRequestCacheError]: "No token request found in cache.",
[unableToParseTokenRequestCacheError]: "The cached token request could not be parsed.",
[authRequestNotSetError]: "Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler",
[invalidCacheType]: "Invalid cache type",
[nonBrowserEnvironment]: "Login and token requests are not supported in non-browser environments.",
[databaseNotOpen]: "Database is not open!",
[noNetworkConnectivity]: "No network connectivity. Check your internet connection.",
[postRequestFailed]: "Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'",
[getRequestFailed]: "Network request failed. Please check the network trace to determine root cause.",
[failedToParseResponse]: "Failed to parse network response. Check network trace.",
[unableToLoadToken]: "Error loading token to cache.",
[cryptoKeyNotFound]: "Cryptographic Key or Keypair not found in browser storage.",
[authCodeRequired]: "An authorization code must be provided (as the `code` property on the request) to this flow.",
[authCodeOrNativeAccountIdRequired]: "An authorization code or nativeAccountId must be provided to this flow.",
[spaCodeAndNativeAccountIdPresent]: "Request cannot contain both spa code and native account id.",
[databaseUnavailable]: "IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.",
[unableToAcquireTokenFromNativePlatform]: `Unable to acquire token from native platform. ${ErrorLink}`,
[nativeHandshakeTimeout]: "Timed out while attempting to establish connection to browser extension",
[nativeExtensionNotInstalled]: "Native extension is not installed. If you think this is a mistake call the initialize function.",
[nativeConnectionNotEstablished]: `Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${ErrorLink}`,
[uninitializedPublicClientApplication]: `You must call and await the initialize function before attempting to call any other MSAL API. ${ErrorLink}`,
[nativePromptNotSupported]: "The provided prompt is not supported by the native platform. This request should be routed to the web based flow.",
[invalidBase64String]: "Invalid base64 encoded string.",
[invalidPopTokenRequest]: "Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.",
[failedToBuildHeaders]: "Failed to build request headers object.",
[failedToParseHeaders]: "Failed to parse response headers",
[failedToDecryptEarResponse]: "Failed to decrypt ear response",
};
/**
* BrowserAuthErrorMessage class containing string constants used by error codes and messages.
* @deprecated Use exported BrowserAuthErrorCodes instead.
* In your app you can do :
* ```
* import { BrowserAuthErrorCodes } from "@azure/msal-browser";
* ```
*/
const BrowserAuthErrorMessage = {
pkceNotGenerated: {
code: pkceNotCreated,
desc: BrowserAuthErrorMessages[pkceNotCreated],
},
cryptoDoesNotExist: {
code: cryptoNonExistent,
desc: BrowserAuthErrorMessages[cryptoNonExistent],
},
emptyNavigateUriError: {
code: emptyNavigateUri,
desc: BrowserAuthErrorMessages[emptyNavigateUri],
},
hashEmptyError: {
code: hashEmptyError,
desc: BrowserAuthErrorMessages[hashEmptyError],
},
hashDoesNotContainStateError: {
code: noStateInHash,
desc: BrowserAuthErrorMessages[noStateInHash],
},
hashDoesNotContainKnownPropertiesError: {
code: hashDoesNotContainKnownProperties,
desc: BrowserAuthErrorMessages[hashDoesNotContainKnownProperties],
},
unableToParseStateError: {
code: unableToParseState,
desc: BrowserAuthErrorMessages[unableToParseState],
},
stateInteractionTypeMismatchError: {
code: stateInteractionTypeMismatch,
desc: BrowserAuthErrorMessages[stateInteractionTypeMismatch],
},
interactionInProgress: {
code: interactionInProgress,
desc: BrowserAuthErrorMessages[interactionInProgress],
},
popupWindowError: {
code: popupWindowError,
desc: BrowserAuthErrorMessages[popupWindowError],
},
emptyWindowError: {
code: emptyWindowError,
desc: BrowserAuthErrorMessages[emptyWindowError],
},
userCancelledError: {
code: userCancelled,
desc: BrowserAuthErrorMessages[userCancelled],
},
monitorPopupTimeoutError: {
code: monitorPopupTimeout,
desc: BrowserAuthErrorMessages[monitorPopupTimeout],
},
monitorIframeTimeoutError: {
code: monitorWindowTimeout,
desc: BrowserAuthErrorMessages[monitorWindowTimeout],
},
redirectInIframeError: {
code: redirectInIframe,
desc: BrowserAuthErrorMessages[redirectInIframe],
},
blockTokenRequestsInHiddenIframeError: {
code: blockIframeReload,
desc: BrowserAuthErrorMessages[blockIframeReload],
},
blockAcquireTokenInPopupsError: {
code: blockNestedPopups,
desc: BrowserAuthErrorMessages[blockNestedPopups],
},
iframeClosedPrematurelyError: {
code: iframeClosedPrematurely,
desc: BrowserAuthErrorMessages[iframeClosedPrematurely],
},
silentLogoutUnsupportedError: {
code: silentLogoutUnsupported,
desc: BrowserAuthErrorMessages[silentLogoutUnsupported],
},
noAccountError: {
code: noAccountError,
desc: BrowserAuthErrorMessages[noAccountError],
},
silentPromptValueError: {
code: silentPromptValueError,
desc: BrowserAuthErrorMessages[silentPromptValueError],
},
noTokenRequestCacheError: {
code: noTokenRequestCacheError,
desc: BrowserAuthErrorMessages[noTokenRequestCacheError],
},
unableToParseTokenRequestCacheError: {
code: unableToParseTokenRequestCacheError,
desc: BrowserAuthErrorMessages[unableToParseTokenRequestCacheError],
},
authRequestNotSet: {
code: authRequestNotSetError,
desc: BrowserAuthErrorMessages[authRequestNotSetError],
},
invalidCacheType: {
code: invalidCacheType,
desc: BrowserAuthErrorMessages[invalidCacheType],
},
notInBrowserEnvironment: {
code: nonBrowserEnvironment,
desc: BrowserAuthErrorMessages[nonBrowserEnvironment],
},
databaseNotOpen: {
code: databaseNotOpen,
desc: BrowserAuthErrorMessages[databaseNotOpen],
},
noNetworkConnectivity: {
code: noNetworkConnectivity,
desc: BrowserAuthErrorMessages[noNetworkConnectivity],
},
postRequestFailed: {
code: postRequestFailed,
desc: BrowserAuthErrorMessages[postRequestFailed],
},
getRequestFailed: {
code: getRequestFailed,
desc: BrowserAuthErrorMessages[getRequestFailed],
},
failedToParseNetworkResponse: {
code: failedToParseResponse,
desc: BrowserAuthErrorMessages[failedToParseResponse],
},
unableToLoadTokenError: {
code: unableToLoadToken,
desc: BrowserAuthErrorMessages[unableToLoadToken],
},
signingKeyNotFoundInStorage: {
code: cryptoKeyNotFound,
desc: BrowserAuthErrorMessages[cryptoKeyNotFound],
},
authCodeRequired: {
code: authCodeRequired,
desc: BrowserAuthErrorMessages[authCodeRequired],
},
authCodeOrNativeAccountRequired: {
code: authCodeOrNativeAccountIdRequired,
desc: BrowserAuthErrorMessages[authCodeOrNativeAccountIdRequired],
},
spaCodeAndNativeAccountPresent: {
code: spaCodeAndNativeAccountIdPresent,
desc: BrowserAuthErrorMessages[spaCodeAndNativeAccountIdPresent],
},
databaseUnavailable: {
code: databaseUnavailable,
desc: BrowserAuthErrorMessages[databaseUnavailable],
},
unableToAcquireTokenFromNativePlatform: {
code: unableToAcquireTokenFromNativePlatform,
desc: BrowserAuthErrorMessages[unableToAcquireTokenFromNativePlatform],
},
nativeHandshakeTimeout: {
code: nativeHandshakeTimeout,
desc: BrowserAuthErrorMessages[nativeHandshakeTimeout],
},
nativeExtensionNotInstalled: {
code: nativeExtensionNotInstalled,
desc: BrowserAuthErrorMessages[nativeExtensionNotInstalled],
},
nativeConnectionNotEstablished: {
code: nativeConnectionNotEstablished,
desc: BrowserAuthErrorMessages[nativeConnectionNotEstablished],
},
uninitializedPublicClientApplication: {
code: uninitializedPublicClientApplication,
desc: BrowserAuthErrorMessages[uninitializedPublicClientApplication],
},
nativePromptNotSupported: {
code: nativePromptNotSupported,
desc: BrowserAuthErrorMessages[nativePromptNotSupported],
},
invalidBase64StringError: {
code: invalidBase64String,
desc: BrowserAuthErrorMessages[invalidBase64String],
},
invalidPopTokenRequest: {
code: invalidPopTokenRequest,
desc: BrowserAuthErrorMessages[invalidPopTokenRequest],
},
};
/**
* Browser library error class thrown by the MSAL.js library for SPAs
*/
class BrowserAuthError extends AuthError {
constructor(errorCode, subError) {
super(errorCode, BrowserAuthErrorMessages[errorCode], subError);
Object.setPrototypeOf(this, BrowserAuthError.prototype);
this.name = "BrowserAuthError";
}
}
function createBrowserAuthError(errorCode, subError) {
return new BrowserAuthError(errorCode, subError);
}
export { BrowserAuthError, BrowserAuthErrorMessage, BrowserAuthErrorMessages, createBrowserAuthError };
//# sourceMappingURL=BrowserAuthError.mjs.map