| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.checkBypass = exports.getProxyUrl = void 0; |
| function getProxyUrl(reqUrl) { |
| const usingSsl = reqUrl.protocol === 'https:'; |
| if (checkBypass(reqUrl)) { |
| return undefined; |
| } |
| const proxyVar = (() => { |
| if (usingSsl) { |
| return process.env['https_proxy'] || process.env['HTTPS_PROXY']; |
| } |
| else { |
| return process.env['http_proxy'] || process.env['HTTP_PROXY']; |
| } |
| })(); |
| if (proxyVar) { |
| try { |
| return new URL(proxyVar); |
| } |
| catch (_a) { |
| if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) |
| return new URL(`http://${proxyVar}`); |
| } |
| } |
| else { |
| return undefined; |
| } |
| } |
| exports.getProxyUrl = getProxyUrl; |
| function checkBypass(reqUrl) { |
| if (!reqUrl.hostname) { |
| return false; |
| } |
| const reqHost = reqUrl.hostname; |
| if (isLoopbackAddress(reqHost)) { |
| return true; |
| } |
| const 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 |
| const upperReqHosts = [reqUrl.hostname.toUpperCase()]; |
| if (typeof reqPort === 'number') { |
| upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); |
| } |
| // Compare request host against noproxy |
| for (const upperNoProxyItem of noProxy |
| .split(',') |
| .map(x => x.trim().toUpperCase()) |
| .filter(x => x)) { |
| if (upperNoProxyItem === '*' || |
| upperReqHosts.some(x => x === upperNoProxyItem || |
| x.endsWith(`.${upperNoProxyItem}`) || |
| (upperNoProxyItem.startsWith('.') && |
| x.endsWith(`${upperNoProxyItem}`)))) { |
| return true; |
| } |
| } |
| return false; |
| } |
| exports.checkBypass = checkBypass; |
| function isLoopbackAddress(host) { |
| const hostLower = host.toLowerCase(); |
| return (hostLower === 'localhost' || |
| hostLower.startsWith('127.') || |
| hostLower.startsWith('[::1]') || |
| hostLower.startsWith('[0:0:0:0:0:0:0:1]')); |
| } |
| //# sourceMappingURL=proxy.js.map |