Spaces:
Sleeping
Sleeping
classifieur
/
frontend
/node_modules
/@pmmmwh
/react-refresh-webpack-plugin
/sockets
/utils
/getUrlFromParts.js
/** | |
* Create a valid URL from parsed URL parts. | |
* @param {import('./getSocketUrlParts').SocketUrlParts} urlParts The parsed URL parts. | |
* @param {import('./getWDSMetadata').WDSMetaObj} [metadata] The parsed WDS metadata object. | |
* @returns {string} The generated URL. | |
*/ | |
function urlFromParts(urlParts, metadata) { | |
if (typeof metadata === 'undefined') { | |
metadata = {}; | |
} | |
let fullProtocol = 'http:'; | |
if (urlParts.protocol) { | |
fullProtocol = urlParts.protocol; | |
} | |
if (metadata.enforceWs) { | |
fullProtocol = fullProtocol.replace(/^(?:http|.+-extension|file)/i, 'ws'); | |
} | |
fullProtocol = fullProtocol + '//'; | |
let fullHost = urlParts.hostname; | |
if (urlParts.auth) { | |
const fullAuth = urlParts.auth.split(':').map(encodeURIComponent).join(':') + '@'; | |
fullHost = fullAuth + fullHost; | |
} | |
if (urlParts.port) { | |
fullHost = fullHost + ':' + urlParts.port; | |
} | |
const url = new URL(urlParts.pathname, fullProtocol + fullHost); | |
return url.href; | |
} | |
module.exports = urlFromParts; | |