function isAbsoluteUrl(url) {
  try {
    new URL(url)
    return true
  } catch (err) {
    return false
  }
}

function absolutizeUrl(url, baseUrl) {
  if (isAbsoluteUrl(url)) return url
  let isEncoded = true
  try {
    isEncoded = url !== decodeURI(url)
  } catch (err) {
    isEncoded = true
  }
  try {
    const absoluteUrl = new URL(url, baseUrl).href
    return !isEncoded ? decodeURI(absoluteUrl) : absoluteUrl
  } catch (err) {
    return !isEncoded ? decodeURI(url) : url
  }
}

module.exports = absolutizeUrl
