iso-url
Version:
Isomorphic/Universal WHATWG URL API with some support legacy node URL API
33 lines (26 loc) • 791 B
JavaScript
const { URLWithLegacySupport, format } = require('./url')
/**
* @param {string | undefined} url
* @param {any} [location]
* @param {any} [protocolMap]
* @param {any} [defaultProtocol]
*/
module.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {
let protocol = location.protocol
? location.protocol.replace(':', '')
: 'http'
// Check protocol map
protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':'
let urlParsed
try {
urlParsed = new URLWithLegacySupport(url)
} catch (err) {
urlParsed = {}
}
const base = Object.assign({}, location, {
protocol: protocol || urlParsed.protocol,
host: location.host || urlParsed.host
})
return new URLWithLegacySupport(url, format(base)).toString()
}