diff options
Diffstat (limited to 'node_modules/http-proxy-agent')
| -rw-r--r-- | node_modules/http-proxy-agent/README.md | 74 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/dist/agent.d.ts | 32 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/dist/agent.js | 145 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/dist/agent.js.map | 1 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/dist/index.d.ts | 21 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/dist/index.js | 14 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/dist/index.js.map | 1 | ||||
| -rw-r--r-- | node_modules/http-proxy-agent/package.json | 57 | 
8 files changed, 345 insertions, 0 deletions
diff --git a/node_modules/http-proxy-agent/README.md b/node_modules/http-proxy-agent/README.md new file mode 100644 index 0000000..d60e206 --- /dev/null +++ b/node_modules/http-proxy-agent/README.md @@ -0,0 +1,74 @@ +http-proxy-agent +================ +### An HTTP(s) proxy `http.Agent` implementation for HTTP +[](https://github.com/TooTallNate/node-http-proxy-agent/actions?workflow=Node+CI) + +This module provides an `http.Agent` implementation that connects to a specified +HTTP or HTTPS proxy server, and can be used with the built-in `http` module. + +__Note:__ For HTTP proxy usage with the `https` module, check out +[`node-https-proxy-agent`](https://github.com/TooTallNate/node-https-proxy-agent). + +Installation +------------ + +Install with `npm`: + +``` bash +$ npm install http-proxy-agent +``` + + +Example +------- + +``` js +var url = require('url'); +var http = require('http'); +var HttpProxyAgent = require('http-proxy-agent'); + +// HTTP/HTTPS proxy to connect to +var proxy = process.env.http_proxy || 'http://168.63.76.32:3128'; +console.log('using proxy server %j', proxy); + +// HTTP endpoint for the proxy to connect to +var endpoint = process.argv[2] || 'http://nodejs.org/api/'; +console.log('attempting to GET %j', endpoint); +var opts = url.parse(endpoint); + +// create an instance of the `HttpProxyAgent` class with the proxy server information +var agent = new HttpProxyAgent(proxy); +opts.agent = agent; + +http.get(opts, function (res) { +  console.log('"response" event!', res.headers); +  res.pipe(process.stdout); +}); +``` + + +License +------- + +(The MIT License) + +Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/http-proxy-agent/dist/agent.d.ts b/node_modules/http-proxy-agent/dist/agent.d.ts new file mode 100644 index 0000000..3f043f7 --- /dev/null +++ b/node_modules/http-proxy-agent/dist/agent.d.ts @@ -0,0 +1,32 @@ +/// <reference types="node" /> +import net from 'net'; +import { Agent, ClientRequest, RequestOptions } from 'agent-base'; +import { HttpProxyAgentOptions } from '.'; +interface HttpProxyAgentClientRequest extends ClientRequest { +    path: string; +    output?: string[]; +    outputData?: { +        data: string; +    }[]; +    _header?: string | null; +    _implicitHeader(): void; +} +/** + * The `HttpProxyAgent` implements an HTTP Agent subclass that connects + * to the specified "HTTP proxy server" in order to proxy HTTP requests. + * + * @api public + */ +export default class HttpProxyAgent extends Agent { +    private secureProxy; +    private proxy; +    constructor(_opts: string | HttpProxyAgentOptions); +    /** +     * Called when the node-core HTTP client library is creating a +     * new HTTP request. +     * +     * @api protected +     */ +    callback(req: HttpProxyAgentClientRequest, opts: RequestOptions): Promise<net.Socket>; +} +export {}; diff --git a/node_modules/http-proxy-agent/dist/agent.js b/node_modules/http-proxy-agent/dist/agent.js new file mode 100644 index 0000000..0252850 --- /dev/null +++ b/node_modules/http-proxy-agent/dist/agent.js @@ -0,0 +1,145 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { +    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } +    return new (P || (P = Promise))(function (resolve, reject) { +        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } +        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } +        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } +        step((generator = generator.apply(thisArg, _arguments || [])).next()); +    }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { +    return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const net_1 = __importDefault(require("net")); +const tls_1 = __importDefault(require("tls")); +const url_1 = __importDefault(require("url")); +const debug_1 = __importDefault(require("debug")); +const once_1 = __importDefault(require("@tootallnate/once")); +const agent_base_1 = require("agent-base"); +const debug = debug_1.default('http-proxy-agent'); +function isHTTPS(protocol) { +    return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false; +} +/** + * The `HttpProxyAgent` implements an HTTP Agent subclass that connects + * to the specified "HTTP proxy server" in order to proxy HTTP requests. + * + * @api public + */ +class HttpProxyAgent extends agent_base_1.Agent { +    constructor(_opts) { +        let opts; +        if (typeof _opts === 'string') { +            opts = url_1.default.parse(_opts); +        } +        else { +            opts = _opts; +        } +        if (!opts) { +            throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!'); +        } +        debug('Creating new HttpProxyAgent instance: %o', opts); +        super(opts); +        const proxy = Object.assign({}, opts); +        // If `true`, then connect to the proxy server over TLS. +        // Defaults to `false`. +        this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol); +        // Prefer `hostname` over `host`, and set the `port` if needed. +        proxy.host = proxy.hostname || proxy.host; +        if (typeof proxy.port === 'string') { +            proxy.port = parseInt(proxy.port, 10); +        } +        if (!proxy.port && proxy.host) { +            proxy.port = this.secureProxy ? 443 : 80; +        } +        if (proxy.host && proxy.path) { +            // If both a `host` and `path` are specified then it's most likely +            // the result of a `url.parse()` call... we need to remove the +            // `path` portion so that `net.connect()` doesn't attempt to open +            // that as a Unix socket file. +            delete proxy.path; +            delete proxy.pathname; +        } +        this.proxy = proxy; +    } +    /** +     * Called when the node-core HTTP client library is creating a +     * new HTTP request. +     * +     * @api protected +     */ +    callback(req, opts) { +        return __awaiter(this, void 0, void 0, function* () { +            const { proxy, secureProxy } = this; +            const parsed = url_1.default.parse(req.path); +            if (!parsed.protocol) { +                parsed.protocol = 'http:'; +            } +            if (!parsed.hostname) { +                parsed.hostname = opts.hostname || opts.host || null; +            } +            if (parsed.port == null && typeof opts.port) { +                parsed.port = String(opts.port); +            } +            if (parsed.port === '80') { +                // if port is 80, then we can remove the port so that the +                // ":80" portion is not on the produced URL +                delete parsed.port; +            } +            // Change the `http.ClientRequest` instance's "path" field +            // to the absolute path of the URL that will be requested. +            req.path = url_1.default.format(parsed); +            // Inject the `Proxy-Authorization` header if necessary. +            if (proxy.auth) { +                req.setHeader('Proxy-Authorization', `Basic ${Buffer.from(proxy.auth).toString('base64')}`); +            } +            // Create a socket connection to the proxy server. +            let socket; +            if (secureProxy) { +                debug('Creating `tls.Socket`: %o', proxy); +                socket = tls_1.default.connect(proxy); +            } +            else { +                debug('Creating `net.Socket`: %o', proxy); +                socket = net_1.default.connect(proxy); +            } +            // At this point, the http ClientRequest's internal `_header` field +            // might have already been set. If this is the case then we'll need +            // to re-generate the string since we just changed the `req.path`. +            if (req._header) { +                let first; +                let endOfHeaders; +                debug('Regenerating stored HTTP header string for request'); +                req._header = null; +                req._implicitHeader(); +                if (req.output && req.output.length > 0) { +                    // Node < 12 +                    debug('Patching connection write() output buffer with updated header'); +                    first = req.output[0]; +                    endOfHeaders = first.indexOf('\r\n\r\n') + 4; +                    req.output[0] = req._header + first.substring(endOfHeaders); +                    debug('Output buffer: %o', req.output); +                } +                else if (req.outputData && req.outputData.length > 0) { +                    // Node >= 12 +                    debug('Patching connection write() output buffer with updated header'); +                    first = req.outputData[0].data; +                    endOfHeaders = first.indexOf('\r\n\r\n') + 4; +                    req.outputData[0].data = +                        req._header + first.substring(endOfHeaders); +                    debug('Output buffer: %o', req.outputData[0].data); +                } +            } +            // Wait for the socket's `connect` event, so that this `callback()` +            // function throws instead of the `http` request machinery. This is +            // important for i.e. `PacProxyAgent` which determines a failed proxy +            // connection via the `callback()` function throwing. +            yield once_1.default(socket, 'connect'); +            return socket; +        }); +    } +} +exports.default = HttpProxyAgent; +//# sourceMappingURL=agent.js.map
\ No newline at end of file diff --git a/node_modules/http-proxy-agent/dist/agent.js.map b/node_modules/http-proxy-agent/dist/agent.js.map new file mode 100644 index 0000000..7a40762 --- /dev/null +++ b/node_modules/http-proxy-agent/dist/agent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
\ No newline at end of file diff --git a/node_modules/http-proxy-agent/dist/index.d.ts b/node_modules/http-proxy-agent/dist/index.d.ts new file mode 100644 index 0000000..24bdb52 --- /dev/null +++ b/node_modules/http-proxy-agent/dist/index.d.ts @@ -0,0 +1,21 @@ +/// <reference types="node" /> +import net from 'net'; +import tls from 'tls'; +import { Url } from 'url'; +import { AgentOptions } from 'agent-base'; +import _HttpProxyAgent from './agent'; +declare function createHttpProxyAgent(opts: string | createHttpProxyAgent.HttpProxyAgentOptions): _HttpProxyAgent; +declare namespace createHttpProxyAgent { +    interface BaseHttpProxyAgentOptions { +        secureProxy?: boolean; +        host?: string | null; +        path?: string | null; +        port?: string | number | null; +    } +    export interface HttpProxyAgentOptions extends AgentOptions, BaseHttpProxyAgentOptions, Partial<Omit<Url & net.NetConnectOpts & tls.ConnectionOptions, keyof BaseHttpProxyAgentOptions>> { +    } +    export type HttpProxyAgent = _HttpProxyAgent; +    export const HttpProxyAgent: typeof _HttpProxyAgent; +    export {}; +} +export = createHttpProxyAgent; diff --git a/node_modules/http-proxy-agent/dist/index.js b/node_modules/http-proxy-agent/dist/index.js new file mode 100644 index 0000000..0a71180 --- /dev/null +++ b/node_modules/http-proxy-agent/dist/index.js @@ -0,0 +1,14 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { +    return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const agent_1 = __importDefault(require("./agent")); +function createHttpProxyAgent(opts) { +    return new agent_1.default(opts); +} +(function (createHttpProxyAgent) { +    createHttpProxyAgent.HttpProxyAgent = agent_1.default; +    createHttpProxyAgent.prototype = agent_1.default.prototype; +})(createHttpProxyAgent || (createHttpProxyAgent = {})); +module.exports = createHttpProxyAgent; +//# sourceMappingURL=index.js.map
\ No newline at end of file diff --git a/node_modules/http-proxy-agent/dist/index.js.map b/node_modules/http-proxy-agent/dist/index.js.map new file mode 100644 index 0000000..e07dae5 --- /dev/null +++ b/node_modules/http-proxy-agent/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAIA,oDAAsC;AAEtC,SAAS,oBAAoB,CAC5B,IAAyD;IAEzD,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,WAAU,oBAAoB;IAmBhB,mCAAc,GAAG,eAAe,CAAC;IAE9C,oBAAoB,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AAC5D,CAAC,EAtBS,oBAAoB,KAApB,oBAAoB,QAsB7B;AAED,iBAAS,oBAAoB,CAAC"}
\ No newline at end of file diff --git a/node_modules/http-proxy-agent/package.json b/node_modules/http-proxy-agent/package.json new file mode 100644 index 0000000..870dd5d --- /dev/null +++ b/node_modules/http-proxy-agent/package.json @@ -0,0 +1,57 @@ +{ +  "name": "http-proxy-agent", +  "version": "4.0.1", +  "description": "An HTTP(s) proxy `http.Agent` implementation for HTTP", +  "main": "./dist/index.js", +  "types": "./dist/index.d.ts", +  "files": [ +    "dist" +  ], +  "scripts": { +    "prebuild": "rimraf dist", +    "build": "tsc", +    "test": "mocha", +    "test-lint": "eslint src --ext .js,.ts", +    "prepublishOnly": "npm run build" +  }, +  "repository": { +    "type": "git", +    "url": "git://github.com/TooTallNate/node-http-proxy-agent.git" +  }, +  "keywords": [ +    "http", +    "proxy", +    "endpoint", +    "agent" +  ], +  "author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)", +  "license": "MIT", +  "bugs": { +    "url": "https://github.com/TooTallNate/node-http-proxy-agent/issues" +  }, +  "dependencies": { +    "@tootallnate/once": "1", +    "agent-base": "6", +    "debug": "4" +  }, +  "devDependencies": { +    "@types/debug": "4", +    "@types/node": "^12.12.11", +    "@typescript-eslint/eslint-plugin": "1.6.0", +    "@typescript-eslint/parser": "1.1.0", +    "eslint": "5.16.0", +    "eslint-config-airbnb": "17.1.0", +    "eslint-config-prettier": "4.1.0", +    "eslint-import-resolver-typescript": "1.1.1", +    "eslint-plugin-import": "2.16.0", +    "eslint-plugin-jsx-a11y": "6.2.1", +    "eslint-plugin-react": "7.12.4", +    "mocha": "^6.2.2", +    "proxy": "1", +    "rimraf": "^3.0.0", +    "typescript": "^3.5.3" +  }, +  "engines": { +    "node": ">= 6" +  } +}  | 
