You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					50 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/// <reference types="node" />
							 | 
						||
| 
								 | 
							
								import { Readable } from 'stream';
							 | 
						||
| 
								 | 
							
								import { FindProxyForURL } from 'pac-resolver';
							 | 
						||
| 
								 | 
							
								import { Agent, AgentCallbackReturn, ClientRequest, RequestOptions } from 'agent-base';
							 | 
						||
| 
								 | 
							
								import { PacProxyAgentOptions } from '.';
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The `PacProxyAgent` class.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * A few different "protocol" modes are supported (supported protocols are
							 | 
						||
| 
								 | 
							
								 * backed by the `get-uri` module):
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *   - "pac+data", "data" - refers to an embedded "data:" URI
							 | 
						||
| 
								 | 
							
								 *   - "pac+file", "file" - refers to a local file
							 | 
						||
| 
								 | 
							
								 *   - "pac+ftp", "ftp" - refers to a file located on an FTP server
							 | 
						||
| 
								 | 
							
								 *   - "pac+http", "http" - refers to an HTTP endpoint
							 | 
						||
| 
								 | 
							
								 *   - "pac+https", "https" - refers to an HTTPS endpoint
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export default class PacProxyAgent extends Agent {
							 | 
						||
| 
								 | 
							
								    uri: string;
							 | 
						||
| 
								 | 
							
								    opts: PacProxyAgentOptions;
							 | 
						||
| 
								 | 
							
								    cache?: Readable;
							 | 
						||
| 
								 | 
							
								    resolver?: FindProxyForURL;
							 | 
						||
| 
								 | 
							
								    resolverHash: string;
							 | 
						||
| 
								 | 
							
								    resolverPromise?: Promise<FindProxyForURL>;
							 | 
						||
| 
								 | 
							
								    constructor(uri: string, opts?: PacProxyAgentOptions);
							 | 
						||
| 
								 | 
							
								    private clearResolverPromise;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Loads the PAC proxy file from the source if necessary, and returns
							 | 
						||
| 
								 | 
							
								     * a generated `FindProxyForURL()` resolver function to use.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @api private
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private getResolver;
							 | 
						||
| 
								 | 
							
								    private loadResolver;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Loads the contents of the PAC proxy file.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @api private
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    private loadPacFile;
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Called when the node-core HTTP client library is creating a new HTTP request.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @api protected
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    callback(req: ClientRequest, opts: RequestOptions): Promise<AgentCallbackReturn>;
							 | 
						||
| 
								 | 
							
								}
							 |