@itwin/core-frontend
Version:
iTwin.js frontend components
48 lines • 1.84 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.appendQueryParams = appendQueryParams;
/** Append custom parameters for settings to provided URL object.
* Make sure custom parameters do no override query parameters already part of the URL (lower case comparison)
* @internal
*/
function appendQueryParams(url, queryParams) {
if (!queryParams)
return url;
// create a lower-case array of keys
const currentParams = [];
const currentUrl = new URL(url);
currentUrl.searchParams.forEach((_value, key, _parent) => {
currentParams.push(key.toLowerCase());
});
const urlParamsFromIndexArray = (indexArray, result) => {
const urlParams = (result ? result : new URLSearchParams());
if (!indexArray)
return urlParams;
Object.keys(indexArray).forEach((key) => {
if (!currentParams.includes(key.toLowerCase()))
urlParams.append(key, indexArray[key]);
});
return urlParams;
};
const params = urlParamsFromIndexArray(queryParams);
const getSeparator = (u) => {
let separator = "&";
if (u.includes("?")) {
if (u.endsWith("?"))
separator = "";
}
else {
separator = "?";
}
return separator;
};
if (params.size > 0) {
url = `${url}${getSeparator(url)}${params.toString()}`;
}
return url;
}
//# sourceMappingURL=UrlUtils.js.map
;