UNPKG

@azure/msal-common

Version:
71 lines (68 loc) 2.45 kB
/*! @azure/msal-common v15.7.0 2025-05-30 */ 'use strict'; import { createClientAuthError } from '../error/ClientAuthError.mjs'; import { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ /** * Parses hash string from given string. Returns empty string if no hash symbol is found. * @param hashString */ function stripLeadingHashOrQuery(responseString) { if (responseString.startsWith("#/")) { return responseString.substring(2); } else if (responseString.startsWith("#") || responseString.startsWith("?")) { return responseString.substring(1); } return responseString; } /** * Returns URL hash as server auth code response object. */ function getDeserializedResponse(responseString) { // Check if given hash is empty if (!responseString || responseString.indexOf("=") < 0) { return null; } try { // Strip the # or ? symbol if present const normalizedResponse = stripLeadingHashOrQuery(responseString); // If # symbol was not present, above will return empty string, so give original hash value const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse)); // Check for known response properties if (deserializedHash.code || deserializedHash.ear_jwe || deserializedHash.error || deserializedHash.error_description || deserializedHash.state) { return deserializedHash; } } catch (e) { throw createClientAuthError(hashNotDeserialized); } return null; } /** * Utility to create a URL from the params map */ function mapToQueryString(parameters, encodeExtraParams = true, extraQueryParameters) { const queryParameterArray = new Array(); parameters.forEach((value, key) => { if (!encodeExtraParams && extraQueryParameters && key in extraQueryParameters) { queryParameterArray.push(`${key}=${value}`); } else { queryParameterArray.push(`${key}=${encodeURIComponent(value)}`); } }); return queryParameterArray.join("&"); } export { getDeserializedResponse, mapToQueryString, stripLeadingHashOrQuery }; //# sourceMappingURL=UrlUtils.mjs.map