koffi-curl
Version:
Node.js libcurl bindings using koffi with browser fingerprint capabilities
1,161 lines (1,146 loc) • 85.3 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var __defProp = Object.defineProperty;
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
}) : x)(function(x) {
if (typeof require !== "undefined") return require.apply(this, arguments);
throw Error('Dynamic require of "' + x + '" is not supported');
});
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
// src/core/curl.ts
var _koffi = require('koffi'); var _koffi2 = _interopRequireDefault(_koffi);
// src/bindings/constants.ts
var constants_exports = {};
__export(constants_exports, {
CURLE: () => CURLE,
CURLINFO: () => CURLINFO,
CURLOPT: () => CURLOPT,
CURL_HTTP_VERSION: () => CURL_HTTP_VERSION,
CURL_IP_RESOLVE: () => CURL_IP_RESOLVE,
CURL_SSLVERSION: () => CURL_SSLVERSION
});
var CURLOPT = /* @__PURE__ */ ((CURLOPT2) => {
CURLOPT2[CURLOPT2["WRITEDATA"] = 10001] = "WRITEDATA";
CURLOPT2[CURLOPT2["URL"] = 10002] = "URL";
CURLOPT2[CURLOPT2["PORT"] = 3] = "PORT";
CURLOPT2[CURLOPT2["PROXY"] = 10004] = "PROXY";
CURLOPT2[CURLOPT2["USERPWD"] = 10005] = "USERPWD";
CURLOPT2[CURLOPT2["PROXYUSERPWD"] = 10006] = "PROXYUSERPWD";
CURLOPT2[CURLOPT2["RANGE"] = 10007] = "RANGE";
CURLOPT2[CURLOPT2["READDATA"] = 10009] = "READDATA";
CURLOPT2[CURLOPT2["ERRORBUFFER"] = 10010] = "ERRORBUFFER";
CURLOPT2[CURLOPT2["WRITEFUNCTION"] = 20011] = "WRITEFUNCTION";
CURLOPT2[CURLOPT2["READFUNCTION"] = 20012] = "READFUNCTION";
CURLOPT2[CURLOPT2["TIMEOUT"] = 13] = "TIMEOUT";
CURLOPT2[CURLOPT2["INFILESIZE"] = 14] = "INFILESIZE";
CURLOPT2[CURLOPT2["POSTFIELDS"] = 10015] = "POSTFIELDS";
CURLOPT2[CURLOPT2["REFERER"] = 10016] = "REFERER";
CURLOPT2[CURLOPT2["FTPPORT"] = 10017] = "FTPPORT";
CURLOPT2[CURLOPT2["USERAGENT"] = 10018] = "USERAGENT";
CURLOPT2[CURLOPT2["LOW_SPEED_LIMIT"] = 19] = "LOW_SPEED_LIMIT";
CURLOPT2[CURLOPT2["LOW_SPEED_TIME"] = 20] = "LOW_SPEED_TIME";
CURLOPT2[CURLOPT2["RESUME_FROM"] = 21] = "RESUME_FROM";
CURLOPT2[CURLOPT2["COOKIE"] = 10022] = "COOKIE";
CURLOPT2[CURLOPT2["HTTPHEADER"] = 10023] = "HTTPHEADER";
CURLOPT2[CURLOPT2["HTTPPOST"] = 10024] = "HTTPPOST";
CURLOPT2[CURLOPT2["SSLCERT"] = 10025] = "SSLCERT";
CURLOPT2[CURLOPT2["KEYPASSWD"] = 10026] = "KEYPASSWD";
CURLOPT2[CURLOPT2["CRLF"] = 27] = "CRLF";
CURLOPT2[CURLOPT2["QUOTE"] = 10028] = "QUOTE";
CURLOPT2[CURLOPT2["HEADERDATA"] = 10029] = "HEADERDATA";
CURLOPT2[CURLOPT2["COOKIEFILE"] = 10031] = "COOKIEFILE";
CURLOPT2[CURLOPT2["SSLVERSION"] = 32] = "SSLVERSION";
CURLOPT2[CURLOPT2["TIMECONDITION"] = 33] = "TIMECONDITION";
CURLOPT2[CURLOPT2["TIMEVALUE"] = 34] = "TIMEVALUE";
CURLOPT2[CURLOPT2["CUSTOMREQUEST"] = 10036] = "CUSTOMREQUEST";
CURLOPT2[CURLOPT2["STDERR"] = 10037] = "STDERR";
CURLOPT2[CURLOPT2["POSTQUOTE"] = 10039] = "POSTQUOTE";
CURLOPT2[CURLOPT2["VERBOSE"] = 41] = "VERBOSE";
CURLOPT2[CURLOPT2["HEADER"] = 42] = "HEADER";
CURLOPT2[CURLOPT2["NOPROGRESS"] = 43] = "NOPROGRESS";
CURLOPT2[CURLOPT2["NOBODY"] = 44] = "NOBODY";
CURLOPT2[CURLOPT2["FAILONERROR"] = 45] = "FAILONERROR";
CURLOPT2[CURLOPT2["UPLOAD"] = 46] = "UPLOAD";
CURLOPT2[CURLOPT2["POST"] = 47] = "POST";
CURLOPT2[CURLOPT2["DIRLISTONLY"] = 48] = "DIRLISTONLY";
CURLOPT2[CURLOPT2["APPEND"] = 50] = "APPEND";
CURLOPT2[CURLOPT2["NETRC"] = 51] = "NETRC";
CURLOPT2[CURLOPT2["FOLLOWLOCATION"] = 52] = "FOLLOWLOCATION";
CURLOPT2[CURLOPT2["TRANSFERTEXT"] = 53] = "TRANSFERTEXT";
CURLOPT2[CURLOPT2["PUT"] = 54] = "PUT";
CURLOPT2[CURLOPT2["PROGRESSFUNCTION"] = 20056] = "PROGRESSFUNCTION";
CURLOPT2[CURLOPT2["XFERINFODATA"] = 10057] = "XFERINFODATA";
CURLOPT2[CURLOPT2["AUTOREFERER"] = 58] = "AUTOREFERER";
CURLOPT2[CURLOPT2["PROXYPORT"] = 59] = "PROXYPORT";
CURLOPT2[CURLOPT2["POSTFIELDSIZE"] = 60] = "POSTFIELDSIZE";
CURLOPT2[CURLOPT2["HTTPPROXYTUNNEL"] = 61] = "HTTPPROXYTUNNEL";
CURLOPT2[CURLOPT2["INTERFACE"] = 10062] = "INTERFACE";
CURLOPT2[CURLOPT2["KRBLEVEL"] = 10063] = "KRBLEVEL";
CURLOPT2[CURLOPT2["SSL_VERIFYPEER"] = 64] = "SSL_VERIFYPEER";
CURLOPT2[CURLOPT2["CAINFO"] = 10065] = "CAINFO";
CURLOPT2[CURLOPT2["MAXREDIRS"] = 68] = "MAXREDIRS";
CURLOPT2[CURLOPT2["FILETIME"] = 69] = "FILETIME";
CURLOPT2[CURLOPT2["TELNETOPTIONS"] = 10070] = "TELNETOPTIONS";
CURLOPT2[CURLOPT2["MAXCONNECTS"] = 71] = "MAXCONNECTS";
CURLOPT2[CURLOPT2["FRESH_CONNECT"] = 74] = "FRESH_CONNECT";
CURLOPT2[CURLOPT2["FORBID_REUSE"] = 75] = "FORBID_REUSE";
CURLOPT2[CURLOPT2["RANDOM_FILE"] = 10076] = "RANDOM_FILE";
CURLOPT2[CURLOPT2["EGDSOCKET"] = 10077] = "EGDSOCKET";
CURLOPT2[CURLOPT2["CONNECTTIMEOUT"] = 78] = "CONNECTTIMEOUT";
CURLOPT2[CURLOPT2["HEADERFUNCTION"] = 20079] = "HEADERFUNCTION";
CURLOPT2[CURLOPT2["HTTPGET"] = 80] = "HTTPGET";
CURLOPT2[CURLOPT2["SSL_VERIFYHOST"] = 81] = "SSL_VERIFYHOST";
CURLOPT2[CURLOPT2["COOKIEJAR"] = 10082] = "COOKIEJAR";
CURLOPT2[CURLOPT2["SSL_CIPHER_LIST"] = 10083] = "SSL_CIPHER_LIST";
CURLOPT2[CURLOPT2["HTTP_VERSION"] = 84] = "HTTP_VERSION";
CURLOPT2[CURLOPT2["FTP_USE_EPSV"] = 85] = "FTP_USE_EPSV";
CURLOPT2[CURLOPT2["SSLCERTTYPE"] = 10086] = "SSLCERTTYPE";
CURLOPT2[CURLOPT2["SSLKEY"] = 10087] = "SSLKEY";
CURLOPT2[CURLOPT2["SSLKEYTYPE"] = 10088] = "SSLKEYTYPE";
CURLOPT2[CURLOPT2["SSLENGINE"] = 10089] = "SSLENGINE";
CURLOPT2[CURLOPT2["SSLENGINE_DEFAULT"] = 90] = "SSLENGINE_DEFAULT";
CURLOPT2[CURLOPT2["DNS_USE_GLOBAL_CACHE"] = 91] = "DNS_USE_GLOBAL_CACHE";
CURLOPT2[CURLOPT2["DNS_CACHE_TIMEOUT"] = 92] = "DNS_CACHE_TIMEOUT";
CURLOPT2[CURLOPT2["PREQUOTE"] = 10093] = "PREQUOTE";
CURLOPT2[CURLOPT2["DEBUGFUNCTION"] = 20094] = "DEBUGFUNCTION";
CURLOPT2[CURLOPT2["DEBUGDATA"] = 10095] = "DEBUGDATA";
CURLOPT2[CURLOPT2["COOKIESESSION"] = 96] = "COOKIESESSION";
CURLOPT2[CURLOPT2["CAPATH"] = 10097] = "CAPATH";
CURLOPT2[CURLOPT2["BUFFERSIZE"] = 98] = "BUFFERSIZE";
CURLOPT2[CURLOPT2["NOSIGNAL"] = 99] = "NOSIGNAL";
CURLOPT2[CURLOPT2["SHARE"] = 10100] = "SHARE";
CURLOPT2[CURLOPT2["PROXYTYPE"] = 101] = "PROXYTYPE";
CURLOPT2[CURLOPT2["ACCEPT_ENCODING"] = 10102] = "ACCEPT_ENCODING";
CURLOPT2[CURLOPT2["PRIVATE"] = 10103] = "PRIVATE";
CURLOPT2[CURLOPT2["HTTP200ALIASES"] = 10104] = "HTTP200ALIASES";
CURLOPT2[CURLOPT2["UNRESTRICTED_AUTH"] = 105] = "UNRESTRICTED_AUTH";
CURLOPT2[CURLOPT2["FTP_USE_EPRT"] = 106] = "FTP_USE_EPRT";
CURLOPT2[CURLOPT2["HTTPAUTH"] = 107] = "HTTPAUTH";
CURLOPT2[CURLOPT2["SSL_CTX_FUNCTION"] = 20108] = "SSL_CTX_FUNCTION";
CURLOPT2[CURLOPT2["SSL_CTX_DATA"] = 10109] = "SSL_CTX_DATA";
CURLOPT2[CURLOPT2["FTP_CREATE_MISSING_DIRS"] = 110] = "FTP_CREATE_MISSING_DIRS";
CURLOPT2[CURLOPT2["PROXYAUTH"] = 111] = "PROXYAUTH";
CURLOPT2[CURLOPT2["SERVER_RESPONSE_TIMEOUT"] = 112] = "SERVER_RESPONSE_TIMEOUT";
CURLOPT2[CURLOPT2["IPRESOLVE"] = 113] = "IPRESOLVE";
CURLOPT2[CURLOPT2["MAXFILESIZE"] = 114] = "MAXFILESIZE";
CURLOPT2[CURLOPT2["INFILESIZE_LARGE"] = 30115] = "INFILESIZE_LARGE";
CURLOPT2[CURLOPT2["RESUME_FROM_LARGE"] = 30116] = "RESUME_FROM_LARGE";
CURLOPT2[CURLOPT2["MAXFILESIZE_LARGE"] = 30117] = "MAXFILESIZE_LARGE";
CURLOPT2[CURLOPT2["NETRC_FILE"] = 10118] = "NETRC_FILE";
CURLOPT2[CURLOPT2["USE_SSL"] = 119] = "USE_SSL";
CURLOPT2[CURLOPT2["POSTFIELDSIZE_LARGE"] = 30120] = "POSTFIELDSIZE_LARGE";
CURLOPT2[CURLOPT2["TCP_NODELAY"] = 121] = "TCP_NODELAY";
CURLOPT2[CURLOPT2["FTPSSLAUTH"] = 129] = "FTPSSLAUTH";
CURLOPT2[CURLOPT2["IOCTLFUNCTION"] = 20130] = "IOCTLFUNCTION";
CURLOPT2[CURLOPT2["IOCTLDATA"] = 10131] = "IOCTLDATA";
CURLOPT2[CURLOPT2["FTP_ACCOUNT"] = 10134] = "FTP_ACCOUNT";
CURLOPT2[CURLOPT2["COOKIELIST"] = 10135] = "COOKIELIST";
CURLOPT2[CURLOPT2["IGNORE_CONTENT_LENGTH"] = 136] = "IGNORE_CONTENT_LENGTH";
CURLOPT2[CURLOPT2["FTP_SKIP_PASV_IP"] = 137] = "FTP_SKIP_PASV_IP";
CURLOPT2[CURLOPT2["FTP_FILEMETHOD"] = 138] = "FTP_FILEMETHOD";
CURLOPT2[CURLOPT2["LOCALPORT"] = 139] = "LOCALPORT";
CURLOPT2[CURLOPT2["LOCALPORTRANGE"] = 140] = "LOCALPORTRANGE";
CURLOPT2[CURLOPT2["CONNECT_ONLY"] = 141] = "CONNECT_ONLY";
CURLOPT2[CURLOPT2["CONV_FROM_NETWORK_FUNCTION"] = 20142] = "CONV_FROM_NETWORK_FUNCTION";
CURLOPT2[CURLOPT2["CONV_TO_NETWORK_FUNCTION"] = 20143] = "CONV_TO_NETWORK_FUNCTION";
CURLOPT2[CURLOPT2["CONV_FROM_UTF8_FUNCTION"] = 20144] = "CONV_FROM_UTF8_FUNCTION";
CURLOPT2[CURLOPT2["MAX_SEND_SPEED_LARGE"] = 30145] = "MAX_SEND_SPEED_LARGE";
CURLOPT2[CURLOPT2["MAX_RECV_SPEED_LARGE"] = 30146] = "MAX_RECV_SPEED_LARGE";
CURLOPT2[CURLOPT2["FTP_ALTERNATIVE_TO_USER"] = 10147] = "FTP_ALTERNATIVE_TO_USER";
CURLOPT2[CURLOPT2["SOCKOPTFUNCTION"] = 20148] = "SOCKOPTFUNCTION";
CURLOPT2[CURLOPT2["SOCKOPTDATA"] = 10149] = "SOCKOPTDATA";
CURLOPT2[CURLOPT2["SSL_SESSIONID_CACHE"] = 150] = "SSL_SESSIONID_CACHE";
CURLOPT2[CURLOPT2["SSH_AUTH_TYPES"] = 151] = "SSH_AUTH_TYPES";
CURLOPT2[CURLOPT2["SSH_PUBLIC_KEYFILE"] = 10152] = "SSH_PUBLIC_KEYFILE";
CURLOPT2[CURLOPT2["SSH_PRIVATE_KEYFILE"] = 10153] = "SSH_PRIVATE_KEYFILE";
CURLOPT2[CURLOPT2["FTP_SSL_CCC"] = 154] = "FTP_SSL_CCC";
CURLOPT2[CURLOPT2["TIMEOUT_MS"] = 155] = "TIMEOUT_MS";
CURLOPT2[CURLOPT2["CONNECTTIMEOUT_MS"] = 156] = "CONNECTTIMEOUT_MS";
CURLOPT2[CURLOPT2["HTTP_TRANSFER_DECODING"] = 157] = "HTTP_TRANSFER_DECODING";
CURLOPT2[CURLOPT2["HTTP_CONTENT_DECODING"] = 158] = "HTTP_CONTENT_DECODING";
CURLOPT2[CURLOPT2["NEW_FILE_PERMS"] = 159] = "NEW_FILE_PERMS";
CURLOPT2[CURLOPT2["NEW_DIRECTORY_PERMS"] = 160] = "NEW_DIRECTORY_PERMS";
CURLOPT2[CURLOPT2["POSTREDIR"] = 161] = "POSTREDIR";
CURLOPT2[CURLOPT2["SSH_HOST_PUBLIC_KEY_MD5"] = 10162] = "SSH_HOST_PUBLIC_KEY_MD5";
CURLOPT2[CURLOPT2["OPENSOCKETFUNCTION"] = 20163] = "OPENSOCKETFUNCTION";
CURLOPT2[CURLOPT2["OPENSOCKETDATA"] = 10164] = "OPENSOCKETDATA";
CURLOPT2[CURLOPT2["COPYPOSTFIELDS"] = 10165] = "COPYPOSTFIELDS";
CURLOPT2[CURLOPT2["PROXY_TRANSFER_MODE"] = 166] = "PROXY_TRANSFER_MODE";
CURLOPT2[CURLOPT2["SEEKFUNCTION"] = 20167] = "SEEKFUNCTION";
CURLOPT2[CURLOPT2["SEEKDATA"] = 10168] = "SEEKDATA";
CURLOPT2[CURLOPT2["CRLFILE"] = 10169] = "CRLFILE";
CURLOPT2[CURLOPT2["ISSUERCERT"] = 10170] = "ISSUERCERT";
CURLOPT2[CURLOPT2["ADDRESS_SCOPE"] = 171] = "ADDRESS_SCOPE";
CURLOPT2[CURLOPT2["CERTINFO"] = 172] = "CERTINFO";
CURLOPT2[CURLOPT2["USERNAME"] = 10173] = "USERNAME";
CURLOPT2[CURLOPT2["PASSWORD"] = 10174] = "PASSWORD";
CURLOPT2[CURLOPT2["PROXYUSERNAME"] = 10175] = "PROXYUSERNAME";
CURLOPT2[CURLOPT2["PROXYPASSWORD"] = 10176] = "PROXYPASSWORD";
CURLOPT2[CURLOPT2["NOPROXY"] = 10177] = "NOPROXY";
CURLOPT2[CURLOPT2["TFTP_BLKSIZE"] = 178] = "TFTP_BLKSIZE";
CURLOPT2[CURLOPT2["SOCKS5_GSSAPI_SERVICE"] = 10179] = "SOCKS5_GSSAPI_SERVICE";
CURLOPT2[CURLOPT2["SOCKS5_GSSAPI_NEC"] = 180] = "SOCKS5_GSSAPI_NEC";
CURLOPT2[CURLOPT2["PROTOCOLS"] = 181] = "PROTOCOLS";
CURLOPT2[CURLOPT2["REDIR_PROTOCOLS"] = 182] = "REDIR_PROTOCOLS";
CURLOPT2[CURLOPT2["SSH_KNOWNHOSTS"] = 10183] = "SSH_KNOWNHOSTS";
CURLOPT2[CURLOPT2["SSH_KEYFUNCTION"] = 20184] = "SSH_KEYFUNCTION";
CURLOPT2[CURLOPT2["SSH_KEYDATA"] = 10185] = "SSH_KEYDATA";
CURLOPT2[CURLOPT2["MAIL_FROM"] = 10186] = "MAIL_FROM";
CURLOPT2[CURLOPT2["MAIL_RCPT"] = 10187] = "MAIL_RCPT";
CURLOPT2[CURLOPT2["FTP_USE_PRET"] = 188] = "FTP_USE_PRET";
CURLOPT2[CURLOPT2["RTSP_REQUEST"] = 189] = "RTSP_REQUEST";
CURLOPT2[CURLOPT2["RTSP_SESSION_ID"] = 10190] = "RTSP_SESSION_ID";
CURLOPT2[CURLOPT2["RTSP_STREAM_URI"] = 10191] = "RTSP_STREAM_URI";
CURLOPT2[CURLOPT2["RTSP_TRANSPORT"] = 10192] = "RTSP_TRANSPORT";
CURLOPT2[CURLOPT2["RTSP_CLIENT_CSEQ"] = 193] = "RTSP_CLIENT_CSEQ";
CURLOPT2[CURLOPT2["RTSP_SERVER_CSEQ"] = 194] = "RTSP_SERVER_CSEQ";
CURLOPT2[CURLOPT2["INTERLEAVEDATA"] = 10195] = "INTERLEAVEDATA";
CURLOPT2[CURLOPT2["INTERLEAVEFUNCTION"] = 20196] = "INTERLEAVEFUNCTION";
CURLOPT2[CURLOPT2["WILDCARDMATCH"] = 197] = "WILDCARDMATCH";
CURLOPT2[CURLOPT2["CHUNK_BGN_FUNCTION"] = 20198] = "CHUNK_BGN_FUNCTION";
CURLOPT2[CURLOPT2["CHUNK_END_FUNCTION"] = 20199] = "CHUNK_END_FUNCTION";
CURLOPT2[CURLOPT2["FNMATCH_FUNCTION"] = 20200] = "FNMATCH_FUNCTION";
CURLOPT2[CURLOPT2["CHUNK_DATA"] = 10201] = "CHUNK_DATA";
CURLOPT2[CURLOPT2["FNMATCH_DATA"] = 10202] = "FNMATCH_DATA";
CURLOPT2[CURLOPT2["RESOLVE"] = 10203] = "RESOLVE";
CURLOPT2[CURLOPT2["TLSAUTH_USERNAME"] = 10204] = "TLSAUTH_USERNAME";
CURLOPT2[CURLOPT2["TLSAUTH_PASSWORD"] = 10205] = "TLSAUTH_PASSWORD";
CURLOPT2[CURLOPT2["TLSAUTH_TYPE"] = 10206] = "TLSAUTH_TYPE";
CURLOPT2[CURLOPT2["TRANSFER_ENCODING"] = 207] = "TRANSFER_ENCODING";
CURLOPT2[CURLOPT2["CLOSESOCKETFUNCTION"] = 20208] = "CLOSESOCKETFUNCTION";
CURLOPT2[CURLOPT2["CLOSESOCKETDATA"] = 10209] = "CLOSESOCKETDATA";
CURLOPT2[CURLOPT2["GSSAPI_DELEGATION"] = 210] = "GSSAPI_DELEGATION";
CURLOPT2[CURLOPT2["DNS_SERVERS"] = 10211] = "DNS_SERVERS";
CURLOPT2[CURLOPT2["ACCEPTTIMEOUT_MS"] = 212] = "ACCEPTTIMEOUT_MS";
CURLOPT2[CURLOPT2["TCP_KEEPALIVE"] = 213] = "TCP_KEEPALIVE";
CURLOPT2[CURLOPT2["TCP_KEEPIDLE"] = 214] = "TCP_KEEPIDLE";
CURLOPT2[CURLOPT2["TCP_KEEPINTVL"] = 215] = "TCP_KEEPINTVL";
CURLOPT2[CURLOPT2["SSL_OPTIONS"] = 216] = "SSL_OPTIONS";
CURLOPT2[CURLOPT2["MAIL_AUTH"] = 10217] = "MAIL_AUTH";
CURLOPT2[CURLOPT2["SASL_IR"] = 218] = "SASL_IR";
CURLOPT2[CURLOPT2["XFERINFOFUNCTION"] = 20219] = "XFERINFOFUNCTION";
CURLOPT2[CURLOPT2["XOAUTH2_BEARER"] = 10220] = "XOAUTH2_BEARER";
CURLOPT2[CURLOPT2["DNS_INTERFACE"] = 10221] = "DNS_INTERFACE";
CURLOPT2[CURLOPT2["DNS_LOCAL_IP4"] = 10222] = "DNS_LOCAL_IP4";
CURLOPT2[CURLOPT2["DNS_LOCAL_IP6"] = 10223] = "DNS_LOCAL_IP6";
CURLOPT2[CURLOPT2["LOGIN_OPTIONS"] = 10224] = "LOGIN_OPTIONS";
CURLOPT2[CURLOPT2["SSL_ENABLE_NPN"] = 225] = "SSL_ENABLE_NPN";
CURLOPT2[CURLOPT2["SSL_ENABLE_ALPN"] = 226] = "SSL_ENABLE_ALPN";
CURLOPT2[CURLOPT2["EXPECT_100_TIMEOUT_MS"] = 227] = "EXPECT_100_TIMEOUT_MS";
CURLOPT2[CURLOPT2["PROXYHEADER"] = 10228] = "PROXYHEADER";
CURLOPT2[CURLOPT2["HEADEROPT"] = 229] = "HEADEROPT";
CURLOPT2[CURLOPT2["PINNEDPUBLICKEY"] = 10230] = "PINNEDPUBLICKEY";
CURLOPT2[CURLOPT2["UNIX_SOCKET_PATH"] = 10231] = "UNIX_SOCKET_PATH";
CURLOPT2[CURLOPT2["SSL_VERIFYSTATUS"] = 232] = "SSL_VERIFYSTATUS";
CURLOPT2[CURLOPT2["SSL_FALSESTART"] = 233] = "SSL_FALSESTART";
CURLOPT2[CURLOPT2["PATH_AS_IS"] = 234] = "PATH_AS_IS";
CURLOPT2[CURLOPT2["PROXY_SERVICE_NAME"] = 10235] = "PROXY_SERVICE_NAME";
CURLOPT2[CURLOPT2["SERVICE_NAME"] = 10236] = "SERVICE_NAME";
CURLOPT2[CURLOPT2["PIPEWAIT"] = 237] = "PIPEWAIT";
CURLOPT2[CURLOPT2["DEFAULT_PROTOCOL"] = 10238] = "DEFAULT_PROTOCOL";
CURLOPT2[CURLOPT2["STREAM_WEIGHT"] = 239] = "STREAM_WEIGHT";
CURLOPT2[CURLOPT2["STREAM_DEPENDS"] = 10240] = "STREAM_DEPENDS";
CURLOPT2[CURLOPT2["STREAM_DEPENDS_E"] = 10241] = "STREAM_DEPENDS_E";
CURLOPT2[CURLOPT2["TFTP_NO_OPTIONS"] = 242] = "TFTP_NO_OPTIONS";
CURLOPT2[CURLOPT2["CONNECT_TO"] = 10243] = "CONNECT_TO";
CURLOPT2[CURLOPT2["TCP_FASTOPEN"] = 244] = "TCP_FASTOPEN";
CURLOPT2[CURLOPT2["KEEP_SENDING_ON_ERROR"] = 245] = "KEEP_SENDING_ON_ERROR";
CURLOPT2[CURLOPT2["PROXY_CAINFO"] = 10246] = "PROXY_CAINFO";
CURLOPT2[CURLOPT2["PROXY_CAPATH"] = 10247] = "PROXY_CAPATH";
CURLOPT2[CURLOPT2["PROXY_SSL_VERIFYPEER"] = 248] = "PROXY_SSL_VERIFYPEER";
CURLOPT2[CURLOPT2["PROXY_SSL_VERIFYHOST"] = 249] = "PROXY_SSL_VERIFYHOST";
CURLOPT2[CURLOPT2["PROXY_SSLVERSION"] = 250] = "PROXY_SSLVERSION";
CURLOPT2[CURLOPT2["PROXY_TLSAUTH_USERNAME"] = 10251] = "PROXY_TLSAUTH_USERNAME";
CURLOPT2[CURLOPT2["PROXY_TLSAUTH_PASSWORD"] = 10252] = "PROXY_TLSAUTH_PASSWORD";
CURLOPT2[CURLOPT2["PROXY_TLSAUTH_TYPE"] = 10253] = "PROXY_TLSAUTH_TYPE";
CURLOPT2[CURLOPT2["PROXY_SSLCERT"] = 10254] = "PROXY_SSLCERT";
CURLOPT2[CURLOPT2["PROXY_SSLCERTTYPE"] = 10255] = "PROXY_SSLCERTTYPE";
CURLOPT2[CURLOPT2["PROXY_SSLKEY"] = 10256] = "PROXY_SSLKEY";
CURLOPT2[CURLOPT2["PROXY_SSLKEYTYPE"] = 10257] = "PROXY_SSLKEYTYPE";
CURLOPT2[CURLOPT2["PROXY_KEYPASSWD"] = 10258] = "PROXY_KEYPASSWD";
CURLOPT2[CURLOPT2["PROXY_SSL_CIPHER_LIST"] = 10259] = "PROXY_SSL_CIPHER_LIST";
CURLOPT2[CURLOPT2["PROXY_CRLFILE"] = 10260] = "PROXY_CRLFILE";
CURLOPT2[CURLOPT2["PROXY_SSL_OPTIONS"] = 261] = "PROXY_SSL_OPTIONS";
CURLOPT2[CURLOPT2["PRE_PROXY"] = 10262] = "PRE_PROXY";
CURLOPT2[CURLOPT2["PROXY_PINNEDPUBLICKEY"] = 10263] = "PROXY_PINNEDPUBLICKEY";
CURLOPT2[CURLOPT2["ABSTRACT_UNIX_SOCKET"] = 10264] = "ABSTRACT_UNIX_SOCKET";
CURLOPT2[CURLOPT2["SUPPRESS_CONNECT_HEADERS"] = 265] = "SUPPRESS_CONNECT_HEADERS";
CURLOPT2[CURLOPT2["REQUEST_TARGET"] = 10266] = "REQUEST_TARGET";
CURLOPT2[CURLOPT2["SOCKS5_AUTH"] = 267] = "SOCKS5_AUTH";
CURLOPT2[CURLOPT2["SSH_COMPRESSION"] = 268] = "SSH_COMPRESSION";
CURLOPT2[CURLOPT2["MIMEPOST"] = 10269] = "MIMEPOST";
CURLOPT2[CURLOPT2["TIMEVALUE_LARGE"] = 30270] = "TIMEVALUE_LARGE";
CURLOPT2[CURLOPT2["HAPPY_EYEBALLS_TIMEOUT_MS"] = 271] = "HAPPY_EYEBALLS_TIMEOUT_MS";
CURLOPT2[CURLOPT2["RESOLVER_START_FUNCTION"] = 20272] = "RESOLVER_START_FUNCTION";
CURLOPT2[CURLOPT2["RESOLVER_START_DATA"] = 10273] = "RESOLVER_START_DATA";
CURLOPT2[CURLOPT2["HAPROXYPROTOCOL"] = 274] = "HAPROXYPROTOCOL";
CURLOPT2[CURLOPT2["DNS_SHUFFLE_ADDRESSES"] = 275] = "DNS_SHUFFLE_ADDRESSES";
CURLOPT2[CURLOPT2["TLS13_CIPHERS"] = 10276] = "TLS13_CIPHERS";
CURLOPT2[CURLOPT2["PROXY_TLS13_CIPHERS"] = 10277] = "PROXY_TLS13_CIPHERS";
CURLOPT2[CURLOPT2["DISALLOW_USERNAME_IN_URL"] = 278] = "DISALLOW_USERNAME_IN_URL";
CURLOPT2[CURLOPT2["DOH_URL"] = 10279] = "DOH_URL";
CURLOPT2[CURLOPT2["UPLOAD_BUFFERSIZE"] = 280] = "UPLOAD_BUFFERSIZE";
CURLOPT2[CURLOPT2["UPKEEP_INTERVAL_MS"] = 281] = "UPKEEP_INTERVAL_MS";
CURLOPT2[CURLOPT2["CURLU"] = 10282] = "CURLU";
CURLOPT2[CURLOPT2["TRAILERFUNCTION"] = 20283] = "TRAILERFUNCTION";
CURLOPT2[CURLOPT2["TRAILERDATA"] = 10284] = "TRAILERDATA";
CURLOPT2[CURLOPT2["HTTP09_ALLOWED"] = 285] = "HTTP09_ALLOWED";
CURLOPT2[CURLOPT2["ALTSVC_CTRL"] = 286] = "ALTSVC_CTRL";
CURLOPT2[CURLOPT2["ALTSVC"] = 10287] = "ALTSVC";
CURLOPT2[CURLOPT2["MAXAGE_CONN"] = 288] = "MAXAGE_CONN";
CURLOPT2[CURLOPT2["SASL_AUTHZID"] = 10289] = "SASL_AUTHZID";
CURLOPT2[CURLOPT2["MAIL_RCPT_ALLOWFAILS"] = 290] = "MAIL_RCPT_ALLOWFAILS";
CURLOPT2[CURLOPT2["SSLCERT_BLOB"] = 40291] = "SSLCERT_BLOB";
CURLOPT2[CURLOPT2["SSLKEY_BLOB"] = 40292] = "SSLKEY_BLOB";
CURLOPT2[CURLOPT2["PROXY_SSLCERT_BLOB"] = 40293] = "PROXY_SSLCERT_BLOB";
CURLOPT2[CURLOPT2["PROXY_SSLKEY_BLOB"] = 40294] = "PROXY_SSLKEY_BLOB";
CURLOPT2[CURLOPT2["ISSUERCERT_BLOB"] = 40295] = "ISSUERCERT_BLOB";
CURLOPT2[CURLOPT2["PROXY_ISSUERCERT"] = 10296] = "PROXY_ISSUERCERT";
CURLOPT2[CURLOPT2["PROXY_ISSUERCERT_BLOB"] = 40297] = "PROXY_ISSUERCERT_BLOB";
CURLOPT2[CURLOPT2["SSL_EC_CURVES"] = 10298] = "SSL_EC_CURVES";
CURLOPT2[CURLOPT2["HSTS_CTRL"] = 299] = "HSTS_CTRL";
CURLOPT2[CURLOPT2["HSTS"] = 10300] = "HSTS";
CURLOPT2[CURLOPT2["HSTSREADFUNCTION"] = 20301] = "HSTSREADFUNCTION";
CURLOPT2[CURLOPT2["HSTSREADDATA"] = 10302] = "HSTSREADDATA";
CURLOPT2[CURLOPT2["HSTSWRITEFUNCTION"] = 20303] = "HSTSWRITEFUNCTION";
CURLOPT2[CURLOPT2["HSTSWRITEDATA"] = 10304] = "HSTSWRITEDATA";
CURLOPT2[CURLOPT2["AWS_SIGV4"] = 10305] = "AWS_SIGV4";
CURLOPT2[CURLOPT2["DOH_SSL_VERIFYPEER"] = 306] = "DOH_SSL_VERIFYPEER";
CURLOPT2[CURLOPT2["DOH_SSL_VERIFYHOST"] = 307] = "DOH_SSL_VERIFYHOST";
CURLOPT2[CURLOPT2["DOH_SSL_VERIFYSTATUS"] = 308] = "DOH_SSL_VERIFYSTATUS";
CURLOPT2[CURLOPT2["CAINFO_BLOB"] = 40309] = "CAINFO_BLOB";
CURLOPT2[CURLOPT2["PROXY_CAINFO_BLOB"] = 40310] = "PROXY_CAINFO_BLOB";
CURLOPT2[CURLOPT2["SSH_HOST_PUBLIC_KEY_SHA256"] = 10311] = "SSH_HOST_PUBLIC_KEY_SHA256";
CURLOPT2[CURLOPT2["PREREQFUNCTION"] = 20312] = "PREREQFUNCTION";
CURLOPT2[CURLOPT2["PREREQDATA"] = 10313] = "PREREQDATA";
CURLOPT2[CURLOPT2["MAXLIFETIME_CONN"] = 314] = "MAXLIFETIME_CONN";
CURLOPT2[CURLOPT2["MIME_OPTIONS"] = 315] = "MIME_OPTIONS";
CURLOPT2[CURLOPT2["SSH_HOSTKEYFUNCTION"] = 20316] = "SSH_HOSTKEYFUNCTION";
CURLOPT2[CURLOPT2["SSH_HOSTKEYDATA"] = 10317] = "SSH_HOSTKEYDATA";
CURLOPT2[CURLOPT2["PROTOCOLS_STR"] = 10318] = "PROTOCOLS_STR";
CURLOPT2[CURLOPT2["REDIR_PROTOCOLS_STR"] = 10319] = "REDIR_PROTOCOLS_STR";
CURLOPT2[CURLOPT2["WS_OPTIONS"] = 320] = "WS_OPTIONS";
CURLOPT2[CURLOPT2["CA_CACHE_TIMEOUT"] = 321] = "CA_CACHE_TIMEOUT";
CURLOPT2[CURLOPT2["QUICK_EXIT"] = 322] = "QUICK_EXIT";
CURLOPT2[CURLOPT2["HAPROXY_CLIENT_IP"] = 10323] = "HAPROXY_CLIENT_IP";
CURLOPT2[CURLOPT2["SERVER_RESPONSE_TIMEOUT_MS"] = 324] = "SERVER_RESPONSE_TIMEOUT_MS";
CURLOPT2[CURLOPT2["ECH"] = 10325] = "ECH";
CURLOPT2[CURLOPT2["TCP_KEEPCNT"] = 326] = "TCP_KEEPCNT";
CURLOPT2[CURLOPT2["UPLOAD_FLAGS"] = 327] = "UPLOAD_FLAGS";
CURLOPT2[CURLOPT2["HTTPBASEHEADER"] = 11e3] = "HTTPBASEHEADER";
CURLOPT2[CURLOPT2["SSL_SIG_HASH_ALGS"] = 11001] = "SSL_SIG_HASH_ALGS";
CURLOPT2[CURLOPT2["SSL_ENABLE_ALPS"] = 1002] = "SSL_ENABLE_ALPS";
CURLOPT2[CURLOPT2["SSL_CERT_COMPRESSION"] = 11003] = "SSL_CERT_COMPRESSION";
CURLOPT2[CURLOPT2["SSL_ENABLE_TICKET"] = 1004] = "SSL_ENABLE_TICKET";
CURLOPT2[CURLOPT2["HTTP2_PSEUDO_HEADERS_ORDER"] = 11005] = "HTTP2_PSEUDO_HEADERS_ORDER";
CURLOPT2[CURLOPT2["HTTP2_SETTINGS"] = 11006] = "HTTP2_SETTINGS";
CURLOPT2[CURLOPT2["SSL_PERMUTE_EXTENSIONS"] = 1007] = "SSL_PERMUTE_EXTENSIONS";
CURLOPT2[CURLOPT2["HTTP2_WINDOW_UPDATE"] = 1008] = "HTTP2_WINDOW_UPDATE";
CURLOPT2[CURLOPT2["HTTP2_STREAMS"] = 11010] = "HTTP2_STREAMS";
CURLOPT2[CURLOPT2["TLS_GREASE"] = 1011] = "TLS_GREASE";
CURLOPT2[CURLOPT2["TLS_EXTENSION_ORDER"] = 11012] = "TLS_EXTENSION_ORDER";
CURLOPT2[CURLOPT2["STREAM_EXCLUSIVE"] = 1013] = "STREAM_EXCLUSIVE";
CURLOPT2[CURLOPT2["TLS_KEY_USAGE_NO_CHECK"] = 1014] = "TLS_KEY_USAGE_NO_CHECK";
CURLOPT2[CURLOPT2["TLS_SIGNED_CERT_TIMESTAMPS"] = 1015] = "TLS_SIGNED_CERT_TIMESTAMPS";
CURLOPT2[CURLOPT2["TLS_STATUS_REQUEST"] = 1016] = "TLS_STATUS_REQUEST";
CURLOPT2[CURLOPT2["TLS_DELEGATED_CREDENTIALS"] = 11017] = "TLS_DELEGATED_CREDENTIALS";
CURLOPT2[CURLOPT2["TLS_RECORD_SIZE_LIMIT"] = 1018] = "TLS_RECORD_SIZE_LIMIT";
CURLOPT2[CURLOPT2["TLS_KEY_SHARES_LIMIT"] = 1019] = "TLS_KEY_SHARES_LIMIT";
CURLOPT2[CURLOPT2["TLS_USE_NEW_ALPS_CODEPOINT"] = 1020] = "TLS_USE_NEW_ALPS_CODEPOINT";
CURLOPT2[CURLOPT2["TLS_USE_FIREFOX_TLS13_CIPHERS"] = 1021] = "TLS_USE_FIREFOX_TLS13_CIPHERS";
return CURLOPT2;
})(CURLOPT || {});
var CURLINFO = {
TEXT: 0,
EFFECTIVE_URL: 1048576 + 1,
RESPONSE_CODE: 2097152 + 2,
TOTAL_TIME: 3145728 + 3,
NAMELOOKUP_TIME: 3145728 + 4,
CONNECT_TIME: 3145728 + 5,
PRETRANSFER_TIME: 3145728 + 6,
SIZE_UPLOAD_T: 6291456 + 7,
SIZE_DOWNLOAD_T: 6291456 + 8,
SPEED_DOWNLOAD_T: 6291456 + 9,
SPEED_UPLOAD_T: 6291456 + 10,
HEADER_SIZE: 2097152 + 11,
REQUEST_SIZE: 2097152 + 12,
SSL_VERIFYRESULT: 2097152 + 13,
FILETIME: 2097152 + 14,
FILETIME_T: 6291456 + 14,
CONTENT_LENGTH_DOWNLOAD_T: 6291456 + 15,
CONTENT_LENGTH_UPLOAD_T: 6291456 + 16,
STARTTRANSFER_TIME: 3145728 + 17,
CONTENT_TYPE: 1048576 + 18,
REDIRECT_TIME: 3145728 + 19,
REDIRECT_COUNT: 2097152 + 20,
PRIVATE: 1048576 + 21,
HTTP_CONNECTCODE: 2097152 + 22,
HTTPAUTH_AVAIL: 2097152 + 23,
PROXYAUTH_AVAIL: 2097152 + 24,
OS_ERRNO: 2097152 + 25,
NUM_CONNECTS: 2097152 + 26,
SSL_ENGINES: 4194304 + 27,
COOKIELIST: 4194304 + 28,
FTP_ENTRY_PATH: 1048576 + 30,
REDIRECT_URL: 1048576 + 31,
PRIMARY_IP: 1048576 + 32,
APPCONNECT_TIME: 3145728 + 33,
CERTINFO: 4194304 + 34,
CONDITION_UNMET: 2097152 + 35,
RTSP_SESSION_ID: 1048576 + 36,
RTSP_CLIENT_CSEQ: 2097152 + 37,
RTSP_SERVER_CSEQ: 2097152 + 38,
RTSP_CSEQ_RECV: 2097152 + 39,
PRIMARY_PORT: 2097152 + 40,
LOCAL_IP: 1048576 + 41,
LOCAL_PORT: 2097152 + 42,
ACTIVESOCKET: 5242880 + 44,
TLS_SSL_PTR: 4194304 + 45,
HTTP_VERSION: 2097152 + 46,
PROXY_SSL_VERIFYRESULT: 2097152 + 47,
SCHEME: 1048576 + 49,
TOTAL_TIME_T: 6291456 + 50,
NAMELOOKUP_TIME_T: 6291456 + 51,
CONNECT_TIME_T: 6291456 + 52,
PRETRANSFER_TIME_T: 6291456 + 53,
STARTTRANSFER_TIME_T: 6291456 + 54,
REDIRECT_TIME_T: 6291456 + 55,
APPCONNECT_TIME_T: 6291456 + 56,
RETRY_AFTER: 6291456 + 57,
EFFECTIVE_METHOD: 1048576 + 58,
PROXY_ERROR: 2097152 + 59,
REFERER: 1048576 + 60,
CAINFO: 1048576 + 61,
CAPATH: 1048576 + 62,
XFER_ID: 6291456 + 63,
CONN_ID: 6291456 + 64,
QUEUE_TIME_T: 6291456 + 65,
USED_PROXY: 2097152 + 66,
POSTTRANSFER_TIME_T: 6291456 + 67,
EARLYDATA_SENT_T: 6291456 + 68,
HTTPAUTH_USED: 2097152 + 69,
PROXYAUTH_USED: 2097152 + 70,
LASTONE: 70
};
var CURL_HTTP_VERSION = /* @__PURE__ */ ((CURL_HTTP_VERSION2) => {
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["NONE"] = 0] = "NONE";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V1_0"] = 1] = "V1_0";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V1_1"] = 2] = "V1_1";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V2_0"] = 3] = "V2_0";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V2TLS"] = 4] = "V2TLS";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V2_PRIOR_KNOWLEDGE"] = 5] = "V2_PRIOR_KNOWLEDGE";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V3"] = 30] = "V3";
CURL_HTTP_VERSION2[CURL_HTTP_VERSION2["V3ONLY"] = 31] = "V3ONLY";
return CURL_HTTP_VERSION2;
})(CURL_HTTP_VERSION || {});
var CURLE = {
OK: 0,
UNSUPPORTED_PROTOCOL: 1,
FAILED_INIT: 2,
URL_MALFORMAT: 3,
NOT_BUILT_IN: 4,
COULDNT_RESOLVE_PROXY: 5,
COULDNT_RESOLVE_HOST: 6,
COULDNT_CONNECT: 7,
WEIRD_SERVER_REPLY: 8,
REMOTE_ACCESS_DENIED: 9,
FTP_ACCEPT_FAILED: 10,
FTP_WEIRD_PASS_REPLY: 11,
FTP_ACCEPT_TIMEOUT: 12,
FTP_WEIRD_PASV_REPLY: 13,
FTP_WEIRD_227_FORMAT: 14,
FTP_CANT_GET_HOST: 15,
HTTP2: 16,
FTP_COULDNT_SET_TYPE: 17,
PARTIAL_FILE: 18,
FTP_COULDNT_RETR_FILE: 19,
OBSOLETE20: 20,
QUOTE_ERROR: 21,
HTTP_RETURNED_ERROR: 22,
WRITE_ERROR: 23,
OBSOLETE24: 24,
UPLOAD_FAILED: 25,
READ_ERROR: 26,
OUT_OF_MEMORY: 27,
OPERATION_TIMEDOUT: 28,
FTP_PORT_FAILED: 30,
FTP_COULDNT_USE_REST: 31,
OBSOLETE32: 32,
RANGE_ERROR: 33,
HTTP_POST_ERROR: 34,
SSL_CONNECT_ERROR: 35,
BAD_DOWNLOAD_RESUME: 36,
FILE_COULDNT_READ_FILE: 37,
LDAP_CANNOT_BIND: 38,
LDAP_SEARCH_FAILED: 39,
OBSOLETE40: 40,
FUNCTION_NOT_FOUND: 41,
ABORTED_BY_CALLBACK: 42,
BAD_FUNCTION_ARGUMENT: 43,
OBSOLETE44: 44,
INTERFACE_FAILED: 45,
OBSOLETE46: 46,
TOO_MANY_REDIRECTS: 47,
UNKNOWN_OPTION: 48,
TELNET_OPTION_SYNTAX: 49,
OBSOLETE50: 50,
PEER_FAILED_VERIFICATION: 51,
GOT_NOTHING: 52,
SSL_ENGINE_NOTFOUND: 53,
SSL_ENGINE_SETFAILED: 54,
SEND_ERROR: 55,
RECV_ERROR: 56,
OBSOLETE57: 57,
SSL_CERTPROBLEM: 58,
SSL_CIPHER: 59,
SSL_CACERT: 60,
BAD_CONTENT_ENCODING: 61,
LDAP_INVALID_URL: 62,
FILESIZE_EXCEEDED: 63,
USE_SSL_FAILED: 64,
SEND_FAIL_REWIND: 65,
SSL_ENGINE_INITFAILED: 66,
LOGIN_DENIED: 67,
TFTP_NOTFOUND: 68,
TFTP_PERM: 69,
REMOTE_DISK_FULL: 70,
TFTP_ILLEGAL: 71,
TFTP_UNKNOWNID: 72,
REMOTE_FILE_EXISTS: 73,
TFTP_NOSUCHUSER: 74,
CONV_FAILED: 75,
CONV_REQD: 76,
SSL_CACERT_BADFILE: 77,
REMOTE_FILE_NOT_FOUND: 78,
SSH: 79,
SSL_SHUTDOWN_FAILED: 80,
AGAIN: 81,
SSL_CRL_BADFILE: 82,
SSL_ISSUER_ERROR: 83,
FTP_PRET_FAILED: 84,
RTSP_CSEQ_ERROR: 85,
RTSP_SESSION_ERROR: 86,
FTP_BAD_FILE_LIST: 87,
CHUNK_FAILED: 88,
NO_CONNECTION_AVAILABLE: 89,
SSL_PINNEDPUBKEYNOTMATCH: 90,
SSL_INVALIDCERTSTATUS: 91,
HTTP2_STREAM: 92,
RECURSIVE_API_CALL: 93,
AUTH_ERROR: 94,
HTTP3: 95,
QUIC_CONNECT_ERROR: 96,
PROXY: 97,
SSL_CLIENTCERT: 98,
UNRECOVERABLE_POLL: 99
};
var CURL_SSLVERSION = /* @__PURE__ */ ((CURL_SSLVERSION2) => {
CURL_SSLVERSION2[CURL_SSLVERSION2["DEFAULT"] = 0] = "DEFAULT";
CURL_SSLVERSION2[CURL_SSLVERSION2["TLSv1"] = 1] = "TLSv1";
CURL_SSLVERSION2[CURL_SSLVERSION2["SSLv2"] = 2] = "SSLv2";
CURL_SSLVERSION2[CURL_SSLVERSION2["SSLv3"] = 3] = "SSLv3";
CURL_SSLVERSION2[CURL_SSLVERSION2["TLSv1_0"] = 4] = "TLSv1_0";
CURL_SSLVERSION2[CURL_SSLVERSION2["TLSv1_1"] = 5] = "TLSv1_1";
CURL_SSLVERSION2[CURL_SSLVERSION2["TLSv1_2"] = 6] = "TLSv1_2";
CURL_SSLVERSION2[CURL_SSLVERSION2["TLSv1_3"] = 7] = "TLSv1_3";
CURL_SSLVERSION2[CURL_SSLVERSION2["MAX_DEFAULT"] = 65536] = "MAX_DEFAULT";
return CURL_SSLVERSION2;
})(CURL_SSLVERSION || {});
var CURL_IP_RESOLVE = /* @__PURE__ */ ((CURL_IP_RESOLVE2) => {
CURL_IP_RESOLVE2[CURL_IP_RESOLVE2["WHATEVER"] = 0] = "WHATEVER";
CURL_IP_RESOLVE2[CURL_IP_RESOLVE2["V4"] = 1] = "V4";
CURL_IP_RESOLVE2[CURL_IP_RESOLVE2["V6"] = 2] = "V6";
return CURL_IP_RESOLVE2;
})(CURL_IP_RESOLVE || {});
// src/bindings/library.ts
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);
var _os = require('os'); var _os2 = _interopRequireDefault(_os);
var CURL_VERSION = "1.0.0";
function getLibHome() {
let libPath = _path2.default.join(__dirname, "..", "lib");
if (!_fs2.default.existsSync(libPath)) {
libPath = _path2.default.join(__dirname, "..", "..", "lib");
}
if (!_fs2.default.existsSync(libPath)) {
throw new Error(`\u627E\u4E0D\u5230\u5E93\u76EE\u5F55: ${libPath}`);
}
return libPath;
}
function getPlatformName() {
const platform = _os2.default.platform();
if (platform === "win32") return "win32";
if (platform === "darwin") return "macos";
if (platform === "linux") {
try {
const lddOutput = __require("child_process").execSync("ldd --version 2>&1 || true").toString();
if (/musl/.test(lddOutput)) {
return "linux-musl";
} else {
return "linux-gnu";
}
} catch (e) {
return "linux-gnu";
}
}
throw new Error(`\u4E0D\u652F\u6301\u7684\u5E73\u53F0: ${platform}`);
}
function getLibraryPath() {
const platform = getPlatformName();
const arch = _os2.default.arch() === "x64" ? "x86_64" : _os2.default.arch() === "ia32" ? "i686" : _os2.default.arch() === "arm64" ? "aarch64" : _os2.default.arch();
const libPath = _path2.default.join(getLibHome(), `${CURL_VERSION}-${platform}`);
if (!_fs2.default.existsSync(libPath)) {
throw new Error(`\u627E\u4E0D\u5230\u5E93\u76EE\u5F55: ${libPath}`);
}
let libName;
if (platform === "win32") {
libName = "libcurl.dll";
} else if (platform === "macos") {
libName = "libcurl-impersonate.4.dylib";
} else {
libName = "libcurl-impersonate.so";
}
const fullPath = _path2.default.join(libPath, libName);
if (!_fs2.default.existsSync(fullPath)) {
throw new Error(`\u627E\u4E0D\u5230\u5E93\u6587\u4EF6: ${fullPath}`);
}
return fullPath;
}
var libcurl = _koffi2.default.load(getLibraryPath());
var headerCallbackProto = _koffi2.default.proto("size_t HeaderCallbackProto(void*, size_t, size_t, void*)");
var progressCallbackProto = _koffi2.default.proto("int ProgressCallbackProto(void*, double, double, double, double)");
var curl = {
// 初始化/清理函数
curl_global_init: libcurl.func("curl_global_init", "int", ["long"]),
curl_global_cleanup: libcurl.func("curl_global_cleanup", "void", []),
// 句柄管理 - 使用void*替代pointer
curl_easy_init: libcurl.func("curl_easy_init", "void*", []),
curl_easy_cleanup: libcurl.func("curl_easy_cleanup", "void", ["void*"]),
curl_easy_reset: libcurl.func("curl_easy_reset", "void", ["void*"]),
curl_easy_duphandle: libcurl.func("curl_easy_duphandle", "void*", ["void*"]),
// 选项和信息 - 使用正确的类型声明
curl_easy_setopt_string: libcurl.func("curl_easy_setopt", "int", ["void*", "int", "string"]),
curl_easy_setopt_long: libcurl.func("curl_easy_setopt", "int", ["void*", "int", "int64_t"]),
curl_easy_setopt_pointer: libcurl.func("curl_easy_setopt", "int", ["void*", "int", "void*"]),
curl_easy_setopt_callback: libcurl.func("curl_easy_setopt", "int", ["void*", "int", _koffi2.default.pointer(headerCallbackProto)]),
// 添加通用 curl_easy_setopt 函数,用于处理回调函数
curl_easy_setopt: libcurl.func("curl_easy_setopt", "int", ["void*", "int", "void*"]),
// 修复 getinfo 函数的参数类型 - 使用 char** 来接收字符串指针
curl_easy_getinfo_string: libcurl.func("curl_easy_getinfo", "int", ["void*", "int", "void*"]),
curl_easy_getinfo_long: libcurl.func("curl_easy_getinfo", "int", ["void*", "int", "void*"]),
curl_easy_getinfo_double: libcurl.func("curl_easy_getinfo", "int", ["void*", "int", "void*"]),
curl_easy_getinfo_pointer: libcurl.func("curl_easy_getinfo", "int", ["void*", "int", "void*"]),
// cdef.c中定义的额外函数
curl_easy_impersonate: libcurl.func("curl_easy_impersonate", "int", ["void*", "string", "int"]),
curl_easy_upkeep: libcurl.func("curl_easy_upkeep", "int", ["void*"]),
// 执行和错误处理
curl_easy_perform: libcurl.func("curl_easy_perform", "int", ["void*"]),
curl_easy_strerror: libcurl.func("curl_easy_strerror", "string", ["int"]),
// 链表管理 - 使用void*替代指向结构的指针
curl_slist_append: libcurl.func("curl_slist_append", "void*", ["void*", "string"]),
curl_slist_free_all: libcurl.func("curl_slist_free_all", "void", ["void*"]),
// 版本信息
curl_version: libcurl.func("curl_version", "string", []),
// WebSocket支持
curl_ws_recv: libcurl.func("curl_ws_recv", "int", ["void*", "void*", "int", "void*", "void*"]),
curl_ws_send: libcurl.func("curl_ws_send", "int", ["void*", "void*", "int", "void*", "int", "unsigned int"]),
// MIME支持
curl_mime_init: libcurl.func("curl_mime_init", "void*", ["void*"]),
curl_mime_addpart: libcurl.func("curl_mime_addpart", "void*", ["void*"]),
curl_mime_name: libcurl.func("curl_mime_name", "int", ["void*", "string"]),
curl_mime_data: libcurl.func("curl_mime_data", "int", ["void*", "string", "int"]),
curl_mime_type: libcurl.func("curl_mime_type", "int", ["void*", "string"]),
curl_mime_filename: libcurl.func("curl_mime_filename", "int", ["void*", "string"]),
curl_mime_filedata: libcurl.func("curl_mime_filedata", "int", ["void*", "string"]),
curl_mime_free: libcurl.func("curl_mime_free", "void", ["void*"])
};
curl.curl_global_init(3);
process.on("exit", () => {
curl.curl_global_cleanup();
});
// src/bindings/memory.ts
var memory_exports = {};
__export(memory_exports, {
bufferToPointer: () => bufferToPointer,
createDoublePointerBuffer: () => createDoublePointerBuffer,
createIntPointer: () => createIntPointer,
createLongPointerBuffer: () => createLongPointerBuffer,
createStringPointer: () => createStringPointer,
createStringPointerBuffer: () => createStringPointerBuffer,
getReference: () => getReference,
pointerToBuffer: () => pointerToBuffer,
releaseReference: () => releaseReference,
saveReference: () => saveReference
});
var _buffer = require('buffer');
// src/utils/logger.ts
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
LogLevel2[LogLevel2["ERROR"] = 0] = "ERROR";
LogLevel2[LogLevel2["WARN"] = 1] = "WARN";
LogLevel2[LogLevel2["INFO"] = 2] = "INFO";
LogLevel2[LogLevel2["DEBUG"] = 3] = "DEBUG";
return LogLevel2;
})(LogLevel || {});
var Logger = class {
// 默认只显示错误
constructor() {
this.level = 0 /* ERROR */;
const envLevel = _optionalChain([process, 'access', _2 => _2.env, 'access', _3 => _3.KOFFI_CURL_LOG_LEVEL, 'optionalAccess', _4 => _4.toUpperCase, 'call', _5 => _5()]);
switch (envLevel) {
case "ERROR":
this.level = 0 /* ERROR */;
break;
case "WARN":
this.level = 1 /* WARN */;
break;
case "INFO":
this.level = 2 /* INFO */;
break;
case "DEBUG":
this.level = 3 /* DEBUG */;
break;
default:
if (process.env.NODE_ENV === "development" || process.env.DEBUG === "1" || process.env.DEBUG === "koffi-curl") {
this.level = 3 /* DEBUG */;
}
}
}
/**
* 设置日志级别
*/
setLevel(level) {
this.level = level;
}
/**
* 获取当前日志级别
*/
getLevel() {
return this.level;
}
/**
* 错误日志
*/
error(...args) {
if (this.level >= 0 /* ERROR */) {
console.error("[ERROR]", ...args);
}
}
/**
* 警告日志
*/
warn(...args) {
if (this.level >= 1 /* WARN */) {
console.warn("[WARN]", ...args);
}
}
/**
* 信息日志
*/
info(...args) {
if (this.level >= 2 /* INFO */) {
console.log("[INFO]", ...args);
}
}
/**
* 调试日志
*/
debug(...args) {
if (this.level >= 3 /* DEBUG */) {
console.log("[DEBUG]", ...args);
}
}
/**
* 检查是否启用了调试模式
*/
isDebugEnabled() {
return this.level >= 3 /* DEBUG */;
}
/**
* 检查是否启用了警告模式
*/
isWarnEnabled() {
return this.level >= 1 /* WARN */;
}
};
var logger = new Logger();
var warn = (...args) => logger.warn(...args);
var debug = (...args) => logger.debug(...args);
// src/bindings/memory.ts
var references = /* @__PURE__ */ new Map();
var nextRefId = 1;
function saveReference(obj) {
const id = nextRefId++;
references.set(id, obj);
return id;
}
function getReference(id) {
return references.get(id);
}
function releaseReference(id) {
references.delete(id);
}
function bufferToPointer(buffer) {
return _koffi2.default.as(buffer, _koffi2.default.pointer("void"));
}
function pointerToBuffer(ptr, size) {
const buffer = _buffer.Buffer.alloc(size);
try {
for (let i = 0; i < size; i++) {
try {
buffer[i] = _koffi2.default.decode(ptr, i, "uint8_t");
} catch (e) {
buffer[i] = 0;
}
}
} catch (e) {
console.error("\u8BFB\u53D6\u6307\u9488\u5185\u5B58\u5931\u8D25:", e);
}
return buffer;
}
function createIntPointer(value = 0) {
const buffer = _buffer.Buffer.alloc(4);
buffer.writeInt32LE(value, 0);
return {
ptr: bufferToPointer(buffer),
value: () => buffer.readInt32LE(0),
free: () => {
}
// Buffer 会被 GC 处理
};
}
function createStringPointer(str) {
return _koffi2.default.as(str, _koffi2.default.pointer("char"));
}
function createStringPointerBuffer() {
const buffer = _buffer.Buffer.alloc(8);
buffer.fill(0);
return {
buffer,
ptr: bufferToPointer(buffer),
readString: () => {
try {
const ptrValue = buffer.readBigUInt64LE(0);
if (ptrValue === BigInt(0)) {
return "";
}
if (ptrValue < BigInt(4096)) {
debug("\u68C0\u6D4B\u5230\u53EF\u80FD\u65E0\u6548\u7684\u6307\u9488\u5730\u5740:", ptrValue.toString(16));
return "";
}
try {
const result = _koffi2.default.decode(_koffi2.default.as(ptrValue, "void*"), "string");
return result || "";
} catch (decodeError) {
debug("\u89E3\u7801\u5B57\u7B26\u4E32\u5931\u8D25\uFF0C\u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32:", decodeError.message);
return "";
}
} catch (e) {
debug("\u8BFB\u53D6\u5B57\u7B26\u4E32\u6307\u9488\u5931\u8D25:", e.message);
return "";
}
}
};
}
function createLongPointerBuffer() {
const buffer = _buffer.Buffer.alloc(8);
buffer.fill(0);
return {
buffer,
ptr: bufferToPointer(buffer),
readLong: () => {
return Number(buffer.readBigInt64LE(0));
}
};
}
function createDoublePointerBuffer() {
const buffer = _buffer.Buffer.alloc(8);
buffer.fill(0);
return {
buffer,
ptr: bufferToPointer(buffer),
readDouble: () => {
return buffer.readDoubleLE(0);
}
};
}
// src/bindings/callbacks.ts
var callbacks_exports = {};
__export(callbacks_exports, {
cleanupCallbacks: () => cleanupCallbacks,
createBufferCallback: () => createBufferCallback,
createProgressCallback: () => createProgressCallback,
releaseCallback: () => releaseCallback
});
var REGISTERED_CALLBACKS = /* @__PURE__ */ new Map();
var nextCallbackId = 1;
function createBufferCallback(callback) {
const id = saveReference(callback);
const writeCallback = function(ptr, size, nmemb, userdata) {
try {
const totalSize = size * nmemb;
if (totalSize === 0) return 0;
const data = pointerToBuffer(ptr, totalSize);
const jsCallback = getReference(id);
return jsCallback(data);
} catch (err) {
debug("Write callback \u9519\u8BEF:", err);
return 0;
}
};
const callbackId = nextCallbackId++;
const functionPointer = _koffi2.default.register(writeCallback, _koffi2.default.pointer(headerCallbackProto));
REGISTERED_CALLBACKS.set(callbackId, functionPointer);
return { callback: functionPointer, id: callbackId };
}
function createProgressCallback(callback) {
const id = saveReference(callback);
const progressCallback = function(clientp, dltotal, dlnow, ultotal, ulnow) {
try {
const jsCallback = getReference(id);
return jsCallback(dltotal, dlnow, ultotal, ulnow);
} catch (err) {
debug("Progress callback \u9519\u8BEF:", err);
return 0;
}
};
const callbackId = nextCallbackId++;
const functionPointer = _koffi2.default.register(progressCallback, _koffi2.default.pointer(progressCallbackProto));
REGISTERED_CALLBACKS.set(callbackId, functionPointer);
return { callback: functionPointer, id: callbackId };
}
function releaseCallback(callbackId) {
_koffi2.default.unregister(REGISTERED_CALLBACKS.get(callbackId));
releaseReference(callbackId);
REGISTERED_CALLBACKS.delete(callbackId);
}
function cleanupCallbacks() {
REGISTERED_CALLBACKS.clear();
}
process.on("exit", () => {
cleanupCallbacks();
});
// src/bindings/index.ts
var constants = constants_exports;
var memory = memory_exports;
var callbacks = callbacks_exports;
var libcurlVersion = () => curl.curl_version();
// src/core/curl.ts
// src/bindings/tls.ts
var TLS_VERSION_MAP = {
769: 4 /* TLSv1_0 */,
// 769
770: 5 /* TLSv1_1 */,
// 770
771: 6 /* TLSv1_2 */,
// 771
772: 7 /* TLSv1_3 */
// 772
};
var TLS_CIPHER_NAME_MAP = {
10: "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
47: "TLS_RSA_WITH_AES_128_CBC_SHA",
51: "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",
53: "TLS_RSA_WITH_AES_256_CBC_SHA",
57: "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
60: "TLS_RSA_WITH_AES_128_CBC_SHA256",
61: "TLS_RSA_WITH_AES_256_CBC_SHA256",
103: "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256",
107: "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",
140: "TLS_PSK_WITH_AES_128_CBC_SHA",
141: "TLS_PSK_WITH_AES_256_CBC_SHA",
156: "TLS_RSA_WITH_AES_128_GCM_SHA256",
157: "TLS_RSA_WITH_AES_256_GCM_SHA384",
158: "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
159: "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",
4865: "TLS_AES_128_GCM_SHA256",
4866: "TLS_AES_256_GCM_SHA384",
4867: "TLS_CHACHA20_POLY1305_SHA256",
49160: "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
49161: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
49162: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
49170: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
49171: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
49172: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
49187: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",
49188: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",
49191: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
49192: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
49195: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
49196: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
49199: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
49200: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
49205: "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA",
49206: "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA",
52392: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
52393: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
52396: "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256"
};
var TLS_EC_CURVES_MAP = {
19: "P-192",
21: "P-224",
23: "P-256",
24: "P-384",
25: "P-521",
29: "X25519",
4588: "X25519MLKEM768",
25497: "X25519Kyber768Draft00"
};
var DEFAULT_ENABLED_EXTENSIONS = /* @__PURE__ */ new Set([0, 51, 13, 43, 65281, 23, 10, 45, 35, 11, 16]);
// src/core/curl.ts
var Curl = class _Curl {
/**
* 创建新的 Curl 实例
*/
constructor() {
// 回调引用,用于后续释放
this.callbackRefs = {};
// 链表引用
this.slists = {};
this.nextSlistId = 1;
this.handle = curl.curl_easy_init();
if (!this.handle) {
throw new Error("\u65E0\u6CD5\u521D\u59CB\u5316 CURL \u53E5\u67C4");
}
}
/**
* 关闭并清理 CURL 句柄
*/
close() {
if (this.handle) {
Object.values(this.slists).forEach((slist) => {
curl.curl_slist_free_all(slist);
});
this.slists = {};
Object.values(this.callbackRefs).forEach((id) => {
callbacks.releaseCallback(id);
});
this.callbackRefs = {};
curl.curl_easy_cleanup(this.handle);
this.handle = null;
}
}
/**
* 重置 CURL 句柄为初始状态
*/
reset() {
if (!this.handle) throw new Error("CURL \u53E5\u67C4\u5DF2\u5173\u95ED");
curl.curl_easy_reset(this.handle);
Object.values(this.slists).forEach((slist) => {
curl.curl_slist_free_all(slist);
});
this.slists = {};
Object.values(this.callbackRefs).forEach((id) => {
callbacks.releaseCallback(id);
});
this.callbackRefs = {};
}
/**
* 设置 CURL 选项
* @param option CURLOPT 选项
* @param value 选项值
*/
setopt(option, value) {
if (!this.handle) throw new Error("CURL \u53E5\u67C4\u5DF2\u5173\u95ED");
try {
if (typeof value === "number") {
const numValue = Number(value);
const result = curl.curl_easy_setopt_long(this.handle, option, numValue);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E\u6570\u503C\u9009\u9879\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
} else if (typeof value === "string") {
const strValue = String(value);
const result = curl.curl_easy_setopt_string(this.handle, option, strValue);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E\u5B57\u7B26\u4E32\u9009\u9879\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
} else if (typeof value === "boolean") {
const numValue = value ? 1 : 0;
const result = curl.curl_easy_setopt_long(this.handle, option, numValue);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E\u5E03\u5C14\u9009\u9879\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
} else if (typeof value === "function") {
const callbackType = option;
if (this.callbackRefs[callbackType]) {
callbacks.releaseCallback(this.callbackRefs[callbackType]);
delete this.callbackRefs[callbackType];
}
const cb = callbacks.createBufferCallback(value);
let result = curl.curl_easy_setopt_callback(this.handle, option, cb.callback);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E\u56DE\u8C03\u9009\u9879\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
this.callbackRefs[callbackType] = cb.id;
} else if (Array.isArray(value)) {
let slist = null;
for (const header of value) {
const headerStr = header.toString();
slist = curl.curl_slist_append(slist, headerStr);
}
const id = this.nextSlistId++;
if (slist) {
const result = curl.curl_easy_setopt_pointer(this.handle, option, slist);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E\u94FE\u8868\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
this.slists[id] = slist;
}
} else if (value instanceof _buffer.Buffer) {
const dataPtr = memory.bufferToPointer(value);
const result = curl.curl_easy_setopt_pointer(this.handle, option, dataPtr);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E Buffer \u9009\u9879\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
} else {
const result = curl.curl_easy_setopt_pointer(this.handle, option, value);
if (result !== 0) {
throw new Error(`\u8BBE\u7F6E\u9009\u9879\u5931\u8D25: ${curl.curl_easy_strerror(result)}`);
}
}
} catch (err) {
console.error(err);
const optionName = _optionalChain([Object, 'access', _6 => _6.entries, 'call', _7 => _7(constants.CURLOPT), 'access', _8 => _8.find, 'call', _9 => _9(([_, val]) => val === option), 'optionalAccess', _10 => _10[0]]) || option;
throw new Error(`\u8BBE\u7F6E\u9009\u9879 ${optionName} \u5931\u8D25: ${err.message}`);
}
}
/**
* 执行 HTTP 请求
* @returns 错误码
*/
perform() {
if (!this.handle) throw new Error("CURL \u53E5\u67C4\u5DF2\u5173\u95ED");
return curl.curl_easy_perform(this.handle);
}
impersonate(impersonate, isDefaultHeader = true) {
return curl.curl_easy_impersonate(this.handle, impersonate, isDefaultHeader ? 1 : 0);
}
/**
* 获取 CURL 信息
* @param info 信息类型
* @returns 信息值
*/
getinfo(info2) {
if (!this.handle) throw new Error("CURL \u53E5\u67C4\u5DF2\u5173\u95ED");
const infoType = info2 & 15728640;
try {
switch (infoType) {
// 字符串类型
case 1048576: {
const { ptr, readString } = memory.createStringPointerBuffer();
const result = curl.curl_easy_getinfo_string(this.handle, info2, ptr);
if (result !== 0) {
debug(`\u83B7\u53D6\u5B57\u7B26\u4E32\u4FE1\u606F\u5931\u8D25 (${info2}): ${curl.curl_easy_strerror(result)}`);
return "";
}
const stringResult = readString();
return stringResult;
}
// 长整数类型
case 2097152: {
const { ptr, readLong } = memory.createLongPointerBuffer();
const result = curl.curl_easy_getinfo_long(this.handle, info2, ptr);
if (result !== 0) {
throw new Error(`\u83B7\u53D6\u4FE1\u606F\u5931\u8D25: ${curl.curl_easy_strerror(r