40 lines
841 B
JavaScript
40 lines
841 B
JavaScript
// ==========================================================================
|
|
// URL utils
|
|
// ==========================================================================
|
|
|
|
import is from './is';
|
|
|
|
/**
|
|
* Parse a string to a URL object
|
|
* @param {String} input - the URL to be parsed
|
|
* @param {Boolean} safe - failsafe parsing
|
|
*/
|
|
export function parseUrl(input, safe = true) {
|
|
let url = input;
|
|
|
|
if (safe) {
|
|
const parser = document.createElement('a');
|
|
parser.href = url;
|
|
url = parser.href;
|
|
}
|
|
|
|
try {
|
|
return new URL(url);
|
|
} catch (_) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
// Convert object to URLSearchParams
|
|
export function buildUrlParams(input) {
|
|
const params = new URLSearchParams();
|
|
|
|
if (is.object(input)) {
|
|
Object.entries(input).forEach(([key, value]) => {
|
|
params.set(key, value);
|
|
});
|
|
}
|
|
|
|
return params;
|
|
}
|