Spaces:
Sleeping
Sleeping
; | |
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 |