| "use strict"; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| function getProxyUrl(reqUrl) { | |
| let usingSsl = reqUrl.protocol === 'https:'; | |
| let proxyUrl; | |
| if (checkBypass(reqUrl)) { | |
| return proxyUrl; | |
| } | |
| let proxyVar; | |
| if (usingSsl) { | |
| proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY']; | |
| } | |
| else { | |
| proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY']; | |
| } | |
| if (proxyVar) { | |
| proxyUrl = new URL(proxyVar); | |
| } | |
| return proxyUrl; | |
| } | |
| exports.getProxyUrl = getProxyUrl; | |
| function checkBypass(reqUrl) { | |
| if (!reqUrl.hostname) { | |
| return false; | |
| } | |
| let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; | |
| if (!noProxy) { | |
| return false; | |
| } | |
| // Determine the request port | |
| let reqPort; | |
| if (reqUrl.port) { | |
| reqPort = Number(reqUrl.port); | |
| } | |
| else if (reqUrl.protocol === 'http:') { | |
| reqPort = 80; | |
| } | |
| else if (reqUrl.protocol === 'https:') { | |
| reqPort = 443; | |
| } | |
| // Format the request hostname and hostname with port | |
| let upperReqHosts = [reqUrl.hostname.toUpperCase()]; | |
| if (typeof reqPort === 'number') { | |
| upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); | |
| } | |
| // Compare request host against noproxy | |
| for (let upperNoProxyItem of noProxy | |
| .split(',') | |
| .map(x => x.trim().toUpperCase()) | |
| .filter(x => x)) { | |
| if (upperReqHosts.some(x => x === upperNoProxyItem)) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| exports.checkBypass = checkBypass; |