{"version":3,"file":"SignedHttpRequest.js","sources":["../../src/crypto/SignedHttpRequest.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CryptoOps } from \"./CryptoOps\";\nimport { Logger, LoggerOptions, PopTokenGenerator, SignedHttpRequestParameters } from \"@azure/msal-common\";\nimport { version, name } from \"../packageMetadata\";\n\nexport type SignedHttpRequestOptions = {\n loggerOptions: LoggerOptions\n};\n\nexport class SignedHttpRequest {\n private popTokenGenerator: PopTokenGenerator;\n private cryptoOps: CryptoOps;\n private shrParameters: SignedHttpRequestParameters;\n private logger: Logger;\n\n constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions) {\n const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};\n this.logger = new Logger(loggerOptions, name, version);\n this.cryptoOps = new CryptoOps(this.logger);\n this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);\n this.shrParameters = shrParameters;\n }\n\n /**\n * Generates and caches a keypair for the given request options.\n * @returns Public key digest, which should be sent to the token issuer.\n */\n async generatePublicKeyThumbprint(): Promise<string> {\n const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);\n\n return kid;\n }\n\n /**\n * Generates a signed http request for the given payload with the given key.\n * @param payload Payload to sign (e.g. access token)\n * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)\n * @param claims Additional claims to include/override in the signed JWT \n * @returns Pop token signed with the corresponding private key\n */\n async signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string> {\n return this.popTokenGenerator.signPayload(\n payload, \n publicKeyThumbprint,\n this.shrParameters, \n claims\n );\n }\n\n /**\n * Removes cached keys from browser for given public key thumbprint\n * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)\n * @returns If keys are properly deleted\n */\n async removeKeys(publicKeyThumbprint: string): Promise<boolean> {\n return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAA;;;;;IAmBI,2BAAY,aAA0C,EAAE,UAAqC;QACzF,IAAM,aAAa,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,KAAK,EAAE,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;;;;;IAMK,uDAA2B,GAAjC;;;;;4BACoB,qBAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAApE,GAAG,GAAK,CAAA,SAA4D,KAAjE;wBAEX,sBAAO,GAAG,EAAC;;;;KACd;;;;;;;;IASK,uCAAW,GAAjB,UAAkB,OAAe,EAAE,mBAA2B,EAAE,MAAe;;;gBAC3E,sBAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACrC,OAAO,EACP,mBAAmB,EACnB,IAAI,CAAC,aAAa,EAClB,MAAM,CACT,EAAC;;;KACL;;;;;;IAOK,sCAAU,GAAhB,UAAiB,mBAA2B;;;;4BACjC,qBAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,EAAA;4BAAtE,sBAAO,SAA+D,EAAC;;;;KAC1E;IACL,wBAAC;AAAD,CAAC;;;;"}
* Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create
* These requests must go through eSTS to ensure eSTS is aware of the new account
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
/**
* BrowserAuthErrorMessage class containing string constants used by error codes and messages.
*/
varBrowserAuthErrorMessage={
pkceNotGenerated:{
code:"pkce_not_created",
desc:"The PKCE code challenge and verifier could not be generated."
},
cryptoDoesNotExist:{
code:"crypto_nonexistent",
desc:"The crypto object or function is not available."
},
httpMethodNotImplementedError:{
code:"http_method_not_implemented",
desc:"The HTTP method given has not been implemented in this library."
},
emptyNavigateUriError:{
code:"empty_navigate_uri",
desc:"Navigation URI is empty. Please check stack trace for more info."
},
hashEmptyError:{
code:"hash_empty_error",
desc:"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors."
},
hashDoesNotContainStateError:{
code:"no_state_in_hash",
desc:"Hash does not contain state. Please verify that the request originated from msal."
},
hashDoesNotContainKnownPropertiesError:{
code:"hash_does_not_contain_known_properties",
desc:"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors."
},
unableToParseStateError:{
code:"unable_to_parse_state",
desc:"Unable to parse state. Please verify that the request originated from msal."
},
stateInteractionTypeMismatchError:{
code:"state_interaction_type_mismatch",
desc:"Hash contains state but the interaction type does not match the caller."
},
interactionInProgress:{
code:"interaction_in_progress",
desc:"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors."
},
popupWindowError:{
code:"popup_window_error",
desc:"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser."
},
emptyWindowError:{
code:"empty_window_error",
desc:"window.open returned null or undefined window object."
},
userCancelledError:{
code:"user_cancelled",
desc:"User cancelled the flow."
},
monitorPopupTimeoutError:{
code:"monitor_window_timeout",
desc:"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors."
},
monitorIframeTimeoutError:{
code:"monitor_window_timeout",
desc:"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors."
},
redirectInIframeError:{
code:"redirect_in_iframe",
desc:"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."
},
blockTokenRequestsInHiddenIframeError:{
code:"block_iframe_reload",
desc:"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors"
},
blockAcquireTokenInPopupsError:{
code:"block_nested_popups",
desc:"Request was blocked inside a popup because MSAL detected it was running in a popup."
},
iframeClosedPrematurelyError:{
code:"iframe_closed_prematurely",
desc:"The iframe being monitored was closed prematurely."
},
silentLogoutUnsupportedError:{
code:"silent_logout_unsupported",
desc:"Silent logout not supported. Please call logoutRedirect or logoutPopup instead."
},
noAccountError:{
code:"no_account_error",
desc:"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request."
},
silentPromptValueError:{
code:"silent_prompt_value_error",
desc:"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'."
},
noTokenRequestCacheError:{
code:"no_token_request_cache_error",
desc:"No token request found in cache."
},
unableToParseTokenRequestCacheError:{
code:"unable_to_parse_token_request_cache_error",
desc:"The cached token request could not be parsed."
},
noCachedAuthorityError:{
code:"no_cached_authority_error",
desc:"No cached authority found."
},
authRequestNotSet:{
code:"auth_request_not_set_error",
desc:"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler"
},
invalidCacheType:{
code:"invalid_cache_type",
desc:"Invalid cache type"
},
notInBrowserEnvironment:{
code:"non_browser_environment",
desc:"Login and token requests are not supported in non-browser environments."
},
databaseNotOpen:{
code:"database_not_open",
desc:"Database is not open!"
},
noNetworkConnectivity:{
code:"no_network_connectivity",
desc:"No network connectivity. Check your internet connection."
},
postRequestFailed:{
code:"post_request_failed",
desc:"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:{
code:"get_request_failed",
desc:"Network request failed. Please check the network trace to determine root cause."
},
failedToParseNetworkResponse:{
code:"failed_to_parse_response",
desc:"Failed to parse network response. Check network trace."
},
unableToLoadTokenError:{
code:"unable_to_load_token",
desc:"Error loading token to cache."
},
signingKeyNotFoundInStorage:{
code:"crypto_key_not_found",
desc:"Cryptographic Key or Keypair not found in browser storage."
},
authCodeRequired:{
code:"auth_code_required",
desc:"An authorization code must be provided (as the `code` property on the request) to this flow."
},
authCodeOrNativeAccountRequired:{
code:"auth_code_or_nativeAccountId_required",
desc:"An authorization code or nativeAccountId must be provided to this flow."
},
databaseUnavailable:{
code:"database_unavailable",
desc:"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."
desc:"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors."
},
nativeHandshakeTimeout:{
code:"native_handshake_timeout",
desc:"Timed out while attempting to establish connection to browser extension"
},
nativeExtensionNotInstalled:{
code:"native_extension_not_installed",
desc:"Native extension is not installed. If you think this is a mistake call the initialize function."
},
nativeConnectionNotEstablished:{
code:"native_connection_not_established",
desc:"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors."
},
nativeBrokerCalledBeforeInitialize:{
code:"native_broker_called_before_initialize",
desc:"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors."
},
nativePromptNotSupported:{
code:"native_prompt_not_supported",
desc:"The provided prompt is not supported by the native platform. This request should be routed to the web based flow."
}
};
/**
* Browser library error class thrown by the MSAL.js library for SPAs
returnnewBrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,BrowserAuthErrorMessage.httpMethodNotImplementedError.desc+" Given Method: "+method);
};
/**
* Creates an error thrown when the navigation URI is empty.
returnnewBrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code,BrowserAuthErrorMessage.silentPromptValueError.desc+" Given value: "+givenPrompt);
};
/**
* Creates an error thrown when the cached token request could not be retrieved from the cache
returnnewBrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code,BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc+" | No match found for KeyId: "+keyId);
};
/**
* Create an error when an authorization code is required but not provided
* Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create
* These requests must go through eSTS to ensure eSTS is aware of the new account
{"version":3,"file":"BrowserAuthError.js","sources":["../../src/error/BrowserAuthError.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserAuthErrorMessage = {\n pkceNotGenerated: {\n code: \"pkce_not_created\",\n desc: \"The PKCE code challenge and verifier could not be generated.\"\n },\n cryptoDoesNotExist: {\n code: \"crypto_nonexistent\",\n desc: \"The crypto object or function is not available.\"\n },\n httpMethodNotImplementedError: {\n code: \"http_method_not_implemented\",\n desc: \"The HTTP method given has not been implemented in this library.\"\n },\n emptyNavigateUriError: {\n code: \"empty_navigate_uri\",\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\n },\n hashEmptyError: {\n code: \"hash_empty_error\",\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n hashDoesNotContainStateError: {\n code: \"no_state_in_hash\",\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\n },\n hashDoesNotContainKnownPropertiesError: {\n code: \"hash_does_not_contain_known_properties\",\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n unableToParseStateError: {\n code: \"unable_to_parse_state\",\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\n },\n stateInteractionTypeMismatchError: {\n code: \"state_interaction_type_mismatch\",\n desc: \"Hash contains state but the interaction type does not match the caller.\"\n },\n interactionInProgress: {\n code: \"interaction_in_progress\",\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n popupWindowError: {\n code: \"popup_window_error\",\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\n },\n emptyWindowError: {\n code: \"empty_window_error\",\n desc: \"window.open returned null or undefined window object.\"\n },\n userCancelledError: {\n code: \"user_cancelled\",\n desc: \"User cancelled the flow.\"\n },\n monitorPopupTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n monitorIframeTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n redirectInIframeError: {\n code: \"redirect_in_iframe\",\n desc: \"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.\"\n },\n blockTokenRequestsInHiddenIframeError: {\n code: \"block_iframe_reload\",\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\n },\n blockAcquireTokenInPopupsError: {\n code: \"block_nested_popups\",\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\n },\n iframeClosedPrematurelyError: {\n code: \"iframe_closed_prematurely\",\n desc: \"The iframe being monitored was closed prematurely.\"\n },\n silentLogoutUnsupportedError: {\n code: \"silent_logout_unsupported\",\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\n },\n noAccountError: {\n code: \"no_account_error\",\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\n },\n silentPromptValueError: {\n code: \"silent_prompt_value_error\",\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.\"\n },\n noTokenRequestCacheError: {\n code: \"no_token_request_cache_error\",\n desc: \"No token request found in cache.\"\n },\n unableToParseTokenRequestCacheError: {\n code: \"unable_to_parse_token_request_cache_error\",\n desc: \"The cached token request could not be parsed.\"\n },\n noCachedAuthorityError: {\n code: \"no_cached_authority_error\",\n desc: \"No cached authority found.\"\n },\n authRequestNotSet: {\n code: \"auth_request_not_set_error\",\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\n },\n invalidCacheType: {\n code: \"invalid_cache_type\",\n desc: \"Invalid cache type\"\n },\n notInBrowserEnvironment: {\n code: \"non_browser_environment\",\n desc: \"Login and token requests are not supported in non-browser environments.\"\n },\n databaseNotOpen: {\n code: \"database_not_open\",\n desc: \"Database is not open!\"\n },\n noNetworkConnectivity: {\n code: \"no_network_connectivity\",\n desc: \"No network connectivity. Check your internet connection.\"\n },\n postRequestFailed: {\n code: \"post_request_failed\",\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\n },\n getRequestFailed: {\n code: \"get_request_failed\",\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\n },\n failedToParseNetworkResponse: {\n code: \"failed_to_parse_response\",\n desc: \"Failed to parse network response. Check network trace.\"\n },\n unableToLoadTokenError: {\n code: \"unable_to_load_token\",\n desc: \"Error loading token to cache.\"\n },\n signingKeyNotFoundInStorage: {\n code: \"crypto_key_not_found\",\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\n },\n authCodeRequired: {\n code: \"auth_code_required\",\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\n },\n authCodeOrNativeAccountRequired: {\n code: \"auth_code_or_nativeAccountId_required\",\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\n },\n databaseUnavailable: {\n code: \"database_unavailable\",\n desc: \"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.\"\n },\n unableToAcquireTokenFromNativePlatform: {\n code: \"unable_to_acquire_token_from_native_platform\",\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\n },\n nativeHandshakeTimeout: {\n code: \"native_handshake_timeout\",\n desc: \"Timed out while attempting to establish connection to browser extension\"\n },\n nativeExtensionNotInstalled: {\n code: \"native_extension_not_installed\",\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\n },\n nativeConnectionNotEstablished: {\n code: \"native_connection_not_established\",\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\n },\n nativeBrokerCalledBeforeInitialize: {\n code: \"native_broker_called_before_initialize\",\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\n },\n nativePromptNotSupported: {\n code: \"native_prompt_not_supported\",\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\n this.name = \"BrowserAuthError\";\n }\n\n /**\n * Creates an error thrown when PKCE is not implemented.\n * @param errDetail\n */\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the crypto object is unavailable.\n * @param errDetail\n */\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\n * @param method\n */\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\n }\n\n /**\n * Creates an error thrown when the navigation URI is empty.\n */\n static createEmptyNavigationUriError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n * @param hashValue\n */\n static createEmptyHashError(hashValue: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createHashDoesNotContainStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value does not contain known properties\n */\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createUnableToParseStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\n }\n\n /**\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\n */\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\n */\n static createInteractionInProgressError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\n }\n\n /**\n * Creates an error thrown when the popup window could not be opened.\n * @param errDetail\n */\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\n }\n\n /**\n * Creates an error thrown when window.open returns an empty window object.\n * @param errDetail\n */\n static createEmptyWindowCreatedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\n }\n\n /**\n * Creates an error thrown when the user closes a popup.\n */\n static createUserCancelledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\n BrowserAuthErrorMessage.userCancelledError.desc);\n }\n\n /**\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\n */\n static createMonitorPopupTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\n */\n static createMonitorIframeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\n * @param windowParentCheck\n */\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code,\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\n }\n\n /**\n * Creates an error thrown when an auth reload is done inside an iframe.\n */\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\n }\n\n /**\n * Creates an error thrown when a popup attempts to call an acquireToken API\n * @returns\n */\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code,\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\n }\n\n /**\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\n */\n static createIframeClosedPrematurelyError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\n }\n\n /**\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\n */\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\n }\n\n /**\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\n */\n static createNoAccountError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\n }\n\n /**\n * Creates an error thrown when a given prompt value is invalid for silent requests.\n */\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\n }\n\n /**\n * Creates an error thrown when the cached token request could not be retrieved from the cache\n */\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when the token request could not be retrieved from the cache\n */\n static createNoTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\n */\n static createAuthRequestNotSetError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\n BrowserAuthErrorMessage.authRequestNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the authority could not be retrieved from the cache\n */\n static createNoCachedAuthorityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\n }\n\n /**\n * Creates an error thrown if cache type is invalid.\n */\n static createInvalidCacheTypeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\n }\n\n /**\n * Create an error thrown when login and token requests are made from a non-browser environment\n */\n static createNonBrowserEnvironmentError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\n }\n\n /**\n * Create an error thrown when indexDB database is not open\n */\n static createDatabaseNotOpenError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to no internet\n */\n static createNoNetworkConnectivityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\n */\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when get request fails due to reasons other than internet connectivity\n */\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when network client fails to parse network response\n */\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when the necessary information is not available to sideload tokens\n */\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\n }\n\n /**\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\n */\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\n }\n\n /**\n * Create an error when an authorization code is required but not provided\n */\n static createAuthCodeRequiredError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\n }\n\n /**\n * Create an error when an authorization code or native account ID is required but not provided\n */\n static createAuthCodeOrNativeAccountIdRequiredError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\n }\n\n /**\n * Create an error when IndexedDB is unavailable\n */\n static createDatabaseUnavailableError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\n }\n\n /**\n * Create an error when native token acquisition is not possible\n */\n static createUnableToAcquireTokenFromNativePlatformError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\n }\n\n /**\n * Create an error thrown when Handshake with browser extension times out\n */\n static createNativeHandshakeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\n }\n\n /**\n * Create an error thrown when browser extension is not installed\n */\n static createNativeExtensionNotInstalledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\n }\n\n /**\n * Create an error when native connection has not been established\n * @returns\n */\n static createNativeConnectionNotEstablishedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\n }\n\n /**\n * Create an error thrown when the initialize function hasn't been called\n */\n static createNativeBrokerCalledBeforeInitialize(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\n }\n\n /**\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\n * These requests must go through eSTS to ensure eSTS is aware of the new account\n */\n static createNativePromptParameterNotSupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\n }\n}\n"],"names":[],"mappings":"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"}