@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
63 lines • 2.2 kB
JavaScript
import { urlCombine } from "@aurigma/design-atoms-model/Utils/Utils";
export function addUrlParameter(startUrl, name, value) {
const separator = startUrl.indexOf('?') == -1 ? '?' : '&';
return startUrl + separator + encodeURIComponent(name) + '=' + encodeURIComponent(value);
}
export function buildUrl(baseUrl, endpoint, endpointParams, queryParams) {
if (endpointParams)
for (let item in endpointParams)
endpoint = endpoint.replace(`{${item}}`, encodeURIComponent(endpointParams[item]));
let url = urlCombine(baseUrl, endpoint);
if (queryParams)
for (let item in queryParams)
url = addUrlParameter(url, item, queryParams[item]);
return url;
}
export function shouldEncodeUrl(url) {
try {
const [route, query] = url.split('?');
if (decodeURIComponent(route) !== route) {
return false;
}
if (query) {
let params = query.split('&');
for (let item in params) {
let [key, value] = params[item].split('=');
if (key && decodeURIComponent(key) !== key) {
return false;
}
if (value && decodeURIComponent(value) !== value) {
return false;
}
}
}
return true;
}
catch (e) {
return false;
}
}
export function getQueryParams(url) {
try {
const params = new URL(url).searchParams;
const result = {};
params.forEach((value, key) => {
const num = Number(value);
result[key] = Number.isFinite(num) && value.trim() !== ''
? num
: value;
});
return result;
}
catch (_a) {
return {};
}
}
export function queryParamsChanged(oldParams, newParams, ignoreKeys = []) {
const ignore = new Set(ignoreKeys);
const keys = new Set([...Object.keys(oldParams), ...Object.keys(newParams)]);
return [...keys]
.filter((k) => !ignore.has(k))
.some((k) => oldParams[k] !== newParams[k]);
}
//# sourceMappingURL=UrlUtils.js.map