/** * Given a URL as a string and a base URL it will make the URL relative * if the parsed protocol and host is the same as the one in the base * URL. Otherwise it returns the same URL string. */ export function relativizeURL(url: string | string, base: string | URL) { const baseURL = typeof base === 'string' ? new URL(base) : base const relative = new URL(url, base) const origin = `${baseURL.protocol}//${baseURL.host}` return `${relative.protocol}//${relative.host}` === origin ? relative.toString().replace(origin, '') : relative.toString() }