| 1234567891011121314151617181920212223242526272829303132333435 | /** * 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;
 |