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;
|