| "use strict"; |
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { |
| if (k2 === undefined) k2 = k; |
| var desc = Object.getOwnPropertyDescriptor(m, k); |
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { |
| desc = { enumerable: true, get: function() { return m[k]; } }; |
| } |
| Object.defineProperty(o, k2, desc); |
| }) : (function(o, m, k, k2) { |
| if (k2 === undefined) k2 = k; |
| o[k2] = m[k]; |
| })); |
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { |
| Object.defineProperty(o, "default", { enumerable: true, value: v }); |
| }) : function(o, v) { |
| o["default"] = v; |
| }); |
| var __importStar = (this && this.__importStar) || function (mod) { |
| if (mod && mod.__esModule) return mod; |
| var result = {}; |
| if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); |
| __setModuleDefault(result, mod); |
| return result; |
| }; |
| var __exportStar = (this && this.__exportStar) || function(m, exports) { |
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); |
| }; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.Agent = void 0; |
| const http = __importStar(require("http")); |
| __exportStar(require("./helpers"), exports); |
| const INTERNAL = Symbol('AgentBaseInternalState'); |
| class Agent extends http.Agent { |
| constructor(opts) { |
| super(opts); |
| this[INTERNAL] = {}; |
| } |
| /** |
| * Determine whether this is an `http` or `https` request. |
| */ |
| isSecureEndpoint(options) { |
| if (options) { |
| // First check the `secureEndpoint` property explicitly, since this |
| // means that a parent `Agent` is "passing through" to this instance. |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any |
| if (typeof options.secureEndpoint === 'boolean') { |
| return options.secureEndpoint; |
| } |
| // If no explicit `secure` endpoint, check if `protocol` property is |
| // set. This will usually be the case since using a full string URL |
| // or `URL` instance should be the most common usage. |
| if (typeof options.protocol === 'string') { |
| return options.protocol === 'https:'; |
| } |
| } |
| // Finally, if no `protocol` property was set, then fall back to |
| // checking the stack trace of the current call stack, and try to |
| // detect the "https" module. |
| const { stack } = new Error(); |
| if (typeof stack !== 'string') |
| return false; |
| return stack |
| .split('\n') |
| .some((l) => l.indexOf('(https.js:') !== -1 || |
| l.indexOf('node:https:') !== -1); |
| } |
| createSocket(req, options, cb) { |
| const connectOpts = { |
| ...options, |
| secureEndpoint: this.isSecureEndpoint(options), |
| }; |
| Promise.resolve() |
| .then(() => this.connect(req, connectOpts)) |
| .then((socket) => { |
| if (socket instanceof http.Agent) { |
| // @ts-expect-error `addRequest()` isn't defined in `@types/node` |
| return socket.addRequest(req, connectOpts); |
| } |
| this[INTERNAL].currentSocket = socket; |
| // @ts-expect-error `createSocket()` isn't defined in `@types/node` |
| super.createSocket(req, options, cb); |
| }, cb); |
| } |
| createConnection() { |
| const socket = this[INTERNAL].currentSocket; |
| this[INTERNAL].currentSocket = undefined; |
| if (!socket) { |
| throw new Error('No socket was returned in the `connect()` function'); |
| } |
| return socket; |
| } |
| get defaultPort() { |
| return (this[INTERNAL].defaultPort ?? |
| (this.protocol === 'https:' ? 443 : 80)); |
| } |
| set defaultPort(v) { |
| if (this[INTERNAL]) { |
| this[INTERNAL].defaultPort = v; |
| } |
| } |
| get protocol() { |
| return (this[INTERNAL].protocol ?? |
| (this.isSecureEndpoint() ? 'https:' : 'http:')); |
| } |
| set protocol(v) { |
| if (this[INTERNAL]) { |
| this[INTERNAL].protocol = v; |
| } |
| } |
| } |
| exports.Agent = Agent; |
| //# sourceMappingURL=index.js.map |