rezo 1.0.58 → 1.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/index.cjs +6 -6
- package/dist/cache/index.cjs +9 -9
- package/dist/crawler/addon/oxylabs/index.cjs +1 -1
- package/dist/crawler/index.cjs +40 -40
- package/dist/entries/crawler.cjs +4 -4
- package/dist/index.cjs +27 -27
- package/dist/internal/agents/index.cjs +10 -10
- package/dist/proxy/index.cjs +4 -4
- package/dist/queue/index.cjs +8 -8
- package/dist/queue/queue.cjs +1 -0
- package/dist/queue/queue.js +1 -0
- package/dist/responses/universal/index.cjs +11 -11
- package/dist/utils/agent-pool.cjs +43 -2
- package/dist/utils/agent-pool.js +43 -2
- package/package.json +1 -1
package/dist/adapters/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.detectRuntime =
|
|
3
|
-
exports.getAdapterCapabilities =
|
|
4
|
-
exports.buildAdapterContext =
|
|
5
|
-
exports.getAvailableAdapters =
|
|
6
|
-
exports.selectAdapter =
|
|
1
|
+
const _mod_nokt0c = require('./picker.cjs');
|
|
2
|
+
exports.detectRuntime = _mod_nokt0c.detectRuntime;
|
|
3
|
+
exports.getAdapterCapabilities = _mod_nokt0c.getAdapterCapabilities;
|
|
4
|
+
exports.buildAdapterContext = _mod_nokt0c.buildAdapterContext;
|
|
5
|
+
exports.getAvailableAdapters = _mod_nokt0c.getAvailableAdapters;
|
|
6
|
+
exports.selectAdapter = _mod_nokt0c.selectAdapter;;
|
package/dist/cache/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.LRUCache =
|
|
3
|
-
const
|
|
4
|
-
exports.DNSCache =
|
|
5
|
-
exports.getGlobalDNSCache =
|
|
6
|
-
exports.resetGlobalDNSCache =
|
|
7
|
-
const
|
|
8
|
-
exports.ResponseCache =
|
|
9
|
-
exports.normalizeResponseCacheConfig =
|
|
1
|
+
const _mod_7oe5nv = require('./lru-cache.cjs');
|
|
2
|
+
exports.LRUCache = _mod_7oe5nv.LRUCache;;
|
|
3
|
+
const _mod_eq897z = require('./dns-cache.cjs');
|
|
4
|
+
exports.DNSCache = _mod_eq897z.DNSCache;
|
|
5
|
+
exports.getGlobalDNSCache = _mod_eq897z.getGlobalDNSCache;
|
|
6
|
+
exports.resetGlobalDNSCache = _mod_eq897z.resetGlobalDNSCache;;
|
|
7
|
+
const _mod_g6t5mx = require('./response-cache.cjs');
|
|
8
|
+
exports.ResponseCache = _mod_g6t5mx.ResponseCache;
|
|
9
|
+
exports.normalizeResponseCacheConfig = _mod_g6t5mx.normalizeResponseCacheConfig;;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var{Rezo:
|
|
1
|
+
var{Rezo:h}=require("../../../core/rezo.cjs"),a=require("./options.cjs");exports.OXYLABS_BROWSER_TYPES=a.OXYLABS_BROWSER_TYPES;exports.OXYLABS_COMMON_LOCALES=a.OXYLABS_COMMON_LOCALES;exports.OXYLABS_COMMON_GEO_LOCATIONS=a.OXYLABS_COMMON_GEO_LOCATIONS;exports.OXYLABS_US_STATES=a.OXYLABS_US_STATES;exports.OXYLABS_EUROPEAN_COUNTRIES=a.OXYLABS_EUROPEAN_COUNTRIES;exports.OXYLABS_ASIAN_COUNTRIES=a.OXYLABS_ASIAN_COUNTRIES;exports.getRandomBrowserType=a.getRandomBrowserType;exports.getRandomLocale=a.getRandomLocale;exports.getRandomGeoLocation=a.getRandomGeoLocation;var c="https://realtime.oxylabs.io/v1/queries";class u{config;http;authHeader;constructor(e){if(!e.username||!e.password)throw Error("Oxylabs username and password are required");this.config={username:e.username,password:e.password,browserType:e.browserType??"desktop",locale:e.locale??"en-US",geoLocation:e.geoLocation??"",render:e.render??!1,context:e.context??{},timeout:e.timeout??120000},this.http=new h({baseURL:c,timeout:this.config.timeout}),this.authHeader=`Basic ${Buffer.from(`${e.username}:${e.password}`).toString("base64")}`}async scrape(e,t){let r={...this.config,...t},s=this.buildRequestBody(e,r),o=(await this.http.postJson(c,s,{headers:{Authorization:this.authHeader,"Content-Type":"application/json"}})).data;if(o.error)throw Error(`Oxylabs API error: ${o.error}`);if(!o.results||o.results.length===0)throw Error("Oxylabs API returned no results");let n=o.results[0],d=n._response?.cookies||[],l=n._response?.headers||{};return{statusCode:n.status_code,url:n.url,content:n.content,cookies:d,headers:l,jobId:o.job_id||n.job_id,rendered:r.render,geoLocation:r.geoLocation||void 0,locale:r.locale,browserType:r.browserType,raw:o}}async scrapeMany(e,t,r=1000){let s=[];for(let i=0;i<e.length;i++){let o=await this.scrape(e[i],t);if(s.push(o),i<e.length-1&&r>0)await new Promise((n)=>setTimeout(n,r))}return s}buildRequestBody(e,t){let r=[];if(r.push({key:"return_page_cookies",value:!0}),r.push({key:"return_page_headers",value:!0}),t.context)for(let[i,o]of Object.entries(t.context))r.push({key:i,value:o});let s={source:"universal",url:e,context:r};if(t.render)s.render="html";if(t.browserType)s.user_agent_type=t.browserType;if(t.locale)s.locale=t.locale;if(t.geoLocation)s.geo_location=t.geoLocation;return s}getConfig(){return{...this.config,password:"***"}}withConfig(e){return new u({...this.config,...e})}async testConnection(){try{return await this.scrape("https://httpbin.org/ip"),!0}catch(e){throw Error(`Oxylabs connection test failed: ${e.message}`)}}}exports.Oxylabs=u;exports.default=u;module.exports=Object.assign(u,exports);
|
package/dist/crawler/index.cjs
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.Crawler =
|
|
3
|
-
const
|
|
4
|
-
exports.CrawlerOptions =
|
|
5
|
-
const
|
|
6
|
-
exports.RobotsTxt =
|
|
7
|
-
const
|
|
8
|
-
exports.FileCacher =
|
|
9
|
-
const
|
|
10
|
-
exports.UrlStore =
|
|
11
|
-
const
|
|
12
|
-
exports.NavigationHistory =
|
|
13
|
-
const
|
|
14
|
-
exports.Oxylabs =
|
|
15
|
-
const
|
|
16
|
-
exports.OXYLABS_BROWSER_TYPES =
|
|
17
|
-
exports.OXYLABS_COMMON_LOCALES =
|
|
18
|
-
exports.OXYLABS_COMMON_GEO_LOCATIONS =
|
|
19
|
-
exports.OXYLABS_US_STATES =
|
|
20
|
-
exports.OXYLABS_EUROPEAN_COUNTRIES =
|
|
21
|
-
exports.OXYLABS_ASIAN_COUNTRIES =
|
|
22
|
-
exports.getRandomOxylabsBrowserType =
|
|
23
|
-
exports.getRandomOxylabsLocale =
|
|
24
|
-
exports.getRandomOxylabsGeoLocation =
|
|
25
|
-
const
|
|
26
|
-
exports.Decodo =
|
|
27
|
-
const
|
|
28
|
-
exports.DECODO_DEVICE_TYPES =
|
|
29
|
-
exports.DECODO_HEADLESS_MODES =
|
|
30
|
-
exports.DECODO_COMMON_LOCALES =
|
|
31
|
-
exports.DECODO_COMMON_COUNTRIES =
|
|
32
|
-
exports.DECODO_EUROPEAN_COUNTRIES =
|
|
33
|
-
exports.DECODO_ASIAN_COUNTRIES =
|
|
34
|
-
exports.DECODO_US_STATES =
|
|
35
|
-
exports.DECODO_COMMON_CITIES =
|
|
36
|
-
exports.getRandomDecodoDeviceType =
|
|
37
|
-
exports.getRandomDecodoLocale =
|
|
38
|
-
exports.getRandomDecodoCountry =
|
|
39
|
-
exports.getRandomDecodoCity =
|
|
40
|
-
exports.generateDecodoSessionId =
|
|
1
|
+
const _mod_zggpqi = require('./crawler.cjs');
|
|
2
|
+
exports.Crawler = _mod_zggpqi.Crawler;;
|
|
3
|
+
const _mod_w5j7ew = require('./crawler-options.cjs');
|
|
4
|
+
exports.CrawlerOptions = _mod_w5j7ew.CrawlerOptions;;
|
|
5
|
+
const _mod_7tdth8 = require('./plugin/robots-txt.cjs');
|
|
6
|
+
exports.RobotsTxt = _mod_7tdth8.RobotsTxt;;
|
|
7
|
+
const _mod_u7vv7i = require('./plugin/file-cacher.cjs');
|
|
8
|
+
exports.FileCacher = _mod_u7vv7i.FileCacher;;
|
|
9
|
+
const _mod_d1ldj8 = require('./plugin/url-store.cjs');
|
|
10
|
+
exports.UrlStore = _mod_d1ldj8.UrlStore;;
|
|
11
|
+
const _mod_k72ti5 = require('./plugin/navigation-history.cjs');
|
|
12
|
+
exports.NavigationHistory = _mod_k72ti5.NavigationHistory;;
|
|
13
|
+
const _mod_pt5rej = require('./addon/oxylabs/index.cjs');
|
|
14
|
+
exports.Oxylabs = _mod_pt5rej.Oxylabs;;
|
|
15
|
+
const _mod_mnmjv5 = require('./addon/oxylabs/options.cjs');
|
|
16
|
+
exports.OXYLABS_BROWSER_TYPES = _mod_mnmjv5.OXYLABS_BROWSER_TYPES;
|
|
17
|
+
exports.OXYLABS_COMMON_LOCALES = _mod_mnmjv5.OXYLABS_COMMON_LOCALES;
|
|
18
|
+
exports.OXYLABS_COMMON_GEO_LOCATIONS = _mod_mnmjv5.OXYLABS_COMMON_GEO_LOCATIONS;
|
|
19
|
+
exports.OXYLABS_US_STATES = _mod_mnmjv5.OXYLABS_US_STATES;
|
|
20
|
+
exports.OXYLABS_EUROPEAN_COUNTRIES = _mod_mnmjv5.OXYLABS_EUROPEAN_COUNTRIES;
|
|
21
|
+
exports.OXYLABS_ASIAN_COUNTRIES = _mod_mnmjv5.OXYLABS_ASIAN_COUNTRIES;
|
|
22
|
+
exports.getRandomOxylabsBrowserType = _mod_mnmjv5.getRandomBrowserType;
|
|
23
|
+
exports.getRandomOxylabsLocale = _mod_mnmjv5.getRandomLocale;
|
|
24
|
+
exports.getRandomOxylabsGeoLocation = _mod_mnmjv5.getRandomGeoLocation;;
|
|
25
|
+
const _mod_15fgrr = require('./addon/decodo/index.cjs');
|
|
26
|
+
exports.Decodo = _mod_15fgrr.Decodo;;
|
|
27
|
+
const _mod_mpk0ak = require('./addon/decodo/options.cjs');
|
|
28
|
+
exports.DECODO_DEVICE_TYPES = _mod_mpk0ak.DECODO_DEVICE_TYPES;
|
|
29
|
+
exports.DECODO_HEADLESS_MODES = _mod_mpk0ak.DECODO_HEADLESS_MODES;
|
|
30
|
+
exports.DECODO_COMMON_LOCALES = _mod_mpk0ak.DECODO_COMMON_LOCALES;
|
|
31
|
+
exports.DECODO_COMMON_COUNTRIES = _mod_mpk0ak.DECODO_COMMON_COUNTRIES;
|
|
32
|
+
exports.DECODO_EUROPEAN_COUNTRIES = _mod_mpk0ak.DECODO_EUROPEAN_COUNTRIES;
|
|
33
|
+
exports.DECODO_ASIAN_COUNTRIES = _mod_mpk0ak.DECODO_ASIAN_COUNTRIES;
|
|
34
|
+
exports.DECODO_US_STATES = _mod_mpk0ak.DECODO_US_STATES;
|
|
35
|
+
exports.DECODO_COMMON_CITIES = _mod_mpk0ak.DECODO_COMMON_CITIES;
|
|
36
|
+
exports.getRandomDecodoDeviceType = _mod_mpk0ak.getRandomDeviceType;
|
|
37
|
+
exports.getRandomDecodoLocale = _mod_mpk0ak.getRandomLocale;
|
|
38
|
+
exports.getRandomDecodoCountry = _mod_mpk0ak.getRandomCountry;
|
|
39
|
+
exports.getRandomDecodoCity = _mod_mpk0ak.getRandomCity;
|
|
40
|
+
exports.generateDecodoSessionId = _mod_mpk0ak.generateSessionId;;
|
package/dist/entries/crawler.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.Crawler =
|
|
3
|
-
const
|
|
4
|
-
exports.CrawlerOptions =
|
|
1
|
+
const _mod_92x3i3 = require('../crawler/crawler.cjs');
|
|
2
|
+
exports.Crawler = _mod_92x3i3.Crawler;;
|
|
3
|
+
const _mod_n5bqoe = require('../crawler/crawler-options.cjs');
|
|
4
|
+
exports.CrawlerOptions = _mod_n5bqoe.CrawlerOptions;;
|
package/dist/index.cjs
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.Rezo =
|
|
3
|
-
exports.createRezoInstance =
|
|
4
|
-
exports.createDefaultInstance =
|
|
5
|
-
const
|
|
6
|
-
exports.RezoError =
|
|
7
|
-
exports.RezoErrorCode =
|
|
8
|
-
const
|
|
9
|
-
exports.RezoHeaders =
|
|
10
|
-
const
|
|
11
|
-
exports.RezoFormData =
|
|
12
|
-
const
|
|
13
|
-
exports.RezoCookieJar =
|
|
14
|
-
exports.Cookie =
|
|
15
|
-
const
|
|
16
|
-
exports.toCurl =
|
|
17
|
-
exports.fromCurl =
|
|
18
|
-
const
|
|
19
|
-
exports.createDefaultHooks =
|
|
20
|
-
exports.mergeHooks =
|
|
21
|
-
const
|
|
22
|
-
exports.ProxyManager =
|
|
23
|
-
const
|
|
24
|
-
exports.RezoQueue =
|
|
25
|
-
exports.HttpQueue =
|
|
26
|
-
exports.Priority =
|
|
27
|
-
exports.HttpMethodPriority =
|
|
1
|
+
const _mod_q6srzt = require('./core/rezo.cjs');
|
|
2
|
+
exports.Rezo = _mod_q6srzt.Rezo;
|
|
3
|
+
exports.createRezoInstance = _mod_q6srzt.createRezoInstance;
|
|
4
|
+
exports.createDefaultInstance = _mod_q6srzt.createDefaultInstance;;
|
|
5
|
+
const _mod_gn3oqh = require('./errors/rezo-error.cjs');
|
|
6
|
+
exports.RezoError = _mod_gn3oqh.RezoError;
|
|
7
|
+
exports.RezoErrorCode = _mod_gn3oqh.RezoErrorCode;;
|
|
8
|
+
const _mod_a4aibp = require('./utils/headers.cjs');
|
|
9
|
+
exports.RezoHeaders = _mod_a4aibp.RezoHeaders;;
|
|
10
|
+
const _mod_55sc23 = require('./utils/form-data.cjs');
|
|
11
|
+
exports.RezoFormData = _mod_55sc23.RezoFormData;;
|
|
12
|
+
const _mod_fh683m = require('./utils/cookies.cjs');
|
|
13
|
+
exports.RezoCookieJar = _mod_fh683m.RezoCookieJar;
|
|
14
|
+
exports.Cookie = _mod_fh683m.Cookie;;
|
|
15
|
+
const _mod_zbzua6 = require('./utils/curl.cjs');
|
|
16
|
+
exports.toCurl = _mod_zbzua6.toCurl;
|
|
17
|
+
exports.fromCurl = _mod_zbzua6.fromCurl;;
|
|
18
|
+
const _mod_76yfai = require('./core/hooks.cjs');
|
|
19
|
+
exports.createDefaultHooks = _mod_76yfai.createDefaultHooks;
|
|
20
|
+
exports.mergeHooks = _mod_76yfai.mergeHooks;;
|
|
21
|
+
const _mod_3b2yju = require('./proxy/manager.cjs');
|
|
22
|
+
exports.ProxyManager = _mod_3b2yju.ProxyManager;;
|
|
23
|
+
const _mod_8pnv4s = require('./queue/index.cjs');
|
|
24
|
+
exports.RezoQueue = _mod_8pnv4s.RezoQueue;
|
|
25
|
+
exports.HttpQueue = _mod_8pnv4s.HttpQueue;
|
|
26
|
+
exports.Priority = _mod_8pnv4s.Priority;
|
|
27
|
+
exports.HttpMethodPriority = _mod_8pnv4s.HttpMethodPriority;;
|
|
28
28
|
const { RezoError } = require('./errors/rezo-error.cjs');
|
|
29
29
|
const isRezoError = exports.isRezoError = RezoError.isRezoError;
|
|
30
30
|
const Cancel = exports.Cancel = RezoError;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.Agent =
|
|
3
|
-
const
|
|
4
|
-
exports.HttpProxyAgent =
|
|
5
|
-
const
|
|
6
|
-
exports.HttpsProxyAgent =
|
|
7
|
-
const
|
|
8
|
-
exports.SocksProxyAgent =
|
|
9
|
-
const
|
|
10
|
-
exports.SocksClient =
|
|
1
|
+
const _mod_bf5fu2 = require('./base.cjs');
|
|
2
|
+
exports.Agent = _mod_bf5fu2.Agent;;
|
|
3
|
+
const _mod_kwrpcj = require('./http-proxy.cjs');
|
|
4
|
+
exports.HttpProxyAgent = _mod_kwrpcj.HttpProxyAgent;;
|
|
5
|
+
const _mod_ykdpvq = require('./https-proxy.cjs');
|
|
6
|
+
exports.HttpsProxyAgent = _mod_ykdpvq.HttpsProxyAgent;;
|
|
7
|
+
const _mod_a0kdcz = require('./socks-proxy.cjs');
|
|
8
|
+
exports.SocksProxyAgent = _mod_a0kdcz.SocksProxyAgent;;
|
|
9
|
+
const _mod_itvmz3 = require('./socks-client.cjs');
|
|
10
|
+
exports.SocksClient = _mod_itvmz3.SocksClient;;
|
package/dist/proxy/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const { Agent, HttpProxyAgent, HttpsProxyAgent, SocksProxyAgent } = require('../internal/agents/index.cjs');
|
|
2
2
|
const { parseProxyString } = require('./parse.cjs');
|
|
3
|
-
const
|
|
4
|
-
exports.ProxyManager =
|
|
5
|
-
const
|
|
6
|
-
exports.parseProxyString =
|
|
3
|
+
const _mod_kclb7u = require('./manager.cjs');
|
|
4
|
+
exports.ProxyManager = _mod_kclb7u.ProxyManager;;
|
|
5
|
+
const _mod_33tnsz = require('./parse.cjs');
|
|
6
|
+
exports.parseProxyString = _mod_33tnsz.parseProxyString;;
|
|
7
7
|
function createOptions(uri, opts) {
|
|
8
8
|
if (uri instanceof URL || typeof uri === "string") {
|
|
9
9
|
return {
|
package/dist/queue/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.RezoQueue =
|
|
3
|
-
const
|
|
4
|
-
exports.HttpQueue =
|
|
5
|
-
exports.extractDomain =
|
|
6
|
-
const
|
|
7
|
-
exports.Priority =
|
|
8
|
-
exports.HttpMethodPriority =
|
|
1
|
+
const _mod_mzwr2r = require('./queue.cjs');
|
|
2
|
+
exports.RezoQueue = _mod_mzwr2r.RezoQueue;;
|
|
3
|
+
const _mod_lepqvc = require('./http-queue.cjs');
|
|
4
|
+
exports.HttpQueue = _mod_lepqvc.HttpQueue;
|
|
5
|
+
exports.extractDomain = _mod_lepqvc.extractDomain;;
|
|
6
|
+
const _mod_g0cvqm = require('./types.cjs');
|
|
7
|
+
exports.Priority = _mod_g0cvqm.Priority;
|
|
8
|
+
exports.HttpMethodPriority = _mod_g0cvqm.HttpMethodPriority;;
|
package/dist/queue/queue.cjs
CHANGED
package/dist/queue/queue.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const
|
|
2
|
-
exports.UniversalEventEmitter =
|
|
3
|
-
const
|
|
4
|
-
exports.UniversalStreamResponse =
|
|
5
|
-
exports.StreamResponse =
|
|
6
|
-
const
|
|
7
|
-
exports.UniversalDownloadResponse =
|
|
8
|
-
exports.DownloadResponse =
|
|
9
|
-
const
|
|
10
|
-
exports.UniversalUploadResponse =
|
|
11
|
-
exports.UploadResponse =
|
|
1
|
+
const _mod_p57m80 = require('./event-emitter.cjs');
|
|
2
|
+
exports.UniversalEventEmitter = _mod_p57m80.UniversalEventEmitter;;
|
|
3
|
+
const _mod_c77x9z = require('./stream.cjs');
|
|
4
|
+
exports.UniversalStreamResponse = _mod_c77x9z.UniversalStreamResponse;
|
|
5
|
+
exports.StreamResponse = _mod_c77x9z.StreamResponse;;
|
|
6
|
+
const _mod_4rsxgf = require('./download.cjs');
|
|
7
|
+
exports.UniversalDownloadResponse = _mod_4rsxgf.UniversalDownloadResponse;
|
|
8
|
+
exports.DownloadResponse = _mod_4rsxgf.DownloadResponse;;
|
|
9
|
+
const _mod_kbsfm9 = require('./upload.cjs');
|
|
10
|
+
exports.UniversalUploadResponse = _mod_kbsfm9.UniversalUploadResponse;
|
|
11
|
+
exports.UploadResponse = _mod_kbsfm9.UploadResponse;;
|
|
@@ -69,7 +69,16 @@ class AgentPool {
|
|
|
69
69
|
if (lookup) {
|
|
70
70
|
agentOptions.lookup = lookup;
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
const agent = new http.Agent(agentOptions);
|
|
73
|
+
this.setupAgentSocketUnref(agent);
|
|
74
|
+
return agent;
|
|
75
|
+
}
|
|
76
|
+
setupAgentSocketUnref(agent) {
|
|
77
|
+
agent.on("free", (socket) => {
|
|
78
|
+
if (socket && typeof socket.unref === "function") {
|
|
79
|
+
socket.unref();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
73
82
|
}
|
|
74
83
|
createHttpsAgent(key, tlsOptions) {
|
|
75
84
|
const agentOptions = {
|
|
@@ -85,7 +94,9 @@ class AgentPool {
|
|
|
85
94
|
if (lookup) {
|
|
86
95
|
agentOptions.lookup = lookup;
|
|
87
96
|
}
|
|
88
|
-
|
|
97
|
+
const agent = new https.Agent(agentOptions);
|
|
98
|
+
this.setupAgentSocketUnref(agent);
|
|
99
|
+
return agent;
|
|
89
100
|
}
|
|
90
101
|
getHttpAgent(options) {
|
|
91
102
|
const key = this.buildAgentKey(options);
|
|
@@ -152,14 +163,44 @@ class AgentPool {
|
|
|
152
163
|
this.evictionTimer = null;
|
|
153
164
|
}
|
|
154
165
|
for (const pooled of this.httpAgents.values()) {
|
|
166
|
+
this.destroyAgentSockets(pooled.agent);
|
|
155
167
|
pooled.agent.destroy();
|
|
156
168
|
}
|
|
157
169
|
this.httpAgents.clear();
|
|
158
170
|
for (const pooled of this.httpsAgents.values()) {
|
|
171
|
+
this.destroyAgentSockets(pooled.agent);
|
|
159
172
|
pooled.agent.destroy();
|
|
160
173
|
}
|
|
161
174
|
this.httpsAgents.clear();
|
|
162
175
|
}
|
|
176
|
+
destroyAgentSockets(agent) {
|
|
177
|
+
const sockets = agent.sockets;
|
|
178
|
+
if (sockets && typeof sockets === "object") {
|
|
179
|
+
for (const key of Object.keys(sockets)) {
|
|
180
|
+
const socketList = sockets[key];
|
|
181
|
+
if (Array.isArray(socketList)) {
|
|
182
|
+
for (const socket of socketList) {
|
|
183
|
+
try {
|
|
184
|
+
socket.destroy();
|
|
185
|
+
} catch {}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const freeSockets = agent.freeSockets;
|
|
191
|
+
if (freeSockets && typeof freeSockets === "object") {
|
|
192
|
+
for (const key of Object.keys(freeSockets)) {
|
|
193
|
+
const socketList = freeSockets[key];
|
|
194
|
+
if (Array.isArray(socketList)) {
|
|
195
|
+
for (const socket of socketList) {
|
|
196
|
+
try {
|
|
197
|
+
socket.destroy();
|
|
198
|
+
} catch {}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
163
204
|
clear() {
|
|
164
205
|
this.destroy();
|
|
165
206
|
if (this.config.idleEvictionMs > 0) {
|
package/dist/utils/agent-pool.js
CHANGED
|
@@ -69,7 +69,16 @@ class AgentPool {
|
|
|
69
69
|
if (lookup) {
|
|
70
70
|
agentOptions.lookup = lookup;
|
|
71
71
|
}
|
|
72
|
-
|
|
72
|
+
const agent = new http.Agent(agentOptions);
|
|
73
|
+
this.setupAgentSocketUnref(agent);
|
|
74
|
+
return agent;
|
|
75
|
+
}
|
|
76
|
+
setupAgentSocketUnref(agent) {
|
|
77
|
+
agent.on("free", (socket) => {
|
|
78
|
+
if (socket && typeof socket.unref === "function") {
|
|
79
|
+
socket.unref();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
73
82
|
}
|
|
74
83
|
createHttpsAgent(key, tlsOptions) {
|
|
75
84
|
const agentOptions = {
|
|
@@ -85,7 +94,9 @@ class AgentPool {
|
|
|
85
94
|
if (lookup) {
|
|
86
95
|
agentOptions.lookup = lookup;
|
|
87
96
|
}
|
|
88
|
-
|
|
97
|
+
const agent = new https.Agent(agentOptions);
|
|
98
|
+
this.setupAgentSocketUnref(agent);
|
|
99
|
+
return agent;
|
|
89
100
|
}
|
|
90
101
|
getHttpAgent(options) {
|
|
91
102
|
const key = this.buildAgentKey(options);
|
|
@@ -152,14 +163,44 @@ class AgentPool {
|
|
|
152
163
|
this.evictionTimer = null;
|
|
153
164
|
}
|
|
154
165
|
for (const pooled of this.httpAgents.values()) {
|
|
166
|
+
this.destroyAgentSockets(pooled.agent);
|
|
155
167
|
pooled.agent.destroy();
|
|
156
168
|
}
|
|
157
169
|
this.httpAgents.clear();
|
|
158
170
|
for (const pooled of this.httpsAgents.values()) {
|
|
171
|
+
this.destroyAgentSockets(pooled.agent);
|
|
159
172
|
pooled.agent.destroy();
|
|
160
173
|
}
|
|
161
174
|
this.httpsAgents.clear();
|
|
162
175
|
}
|
|
176
|
+
destroyAgentSockets(agent) {
|
|
177
|
+
const sockets = agent.sockets;
|
|
178
|
+
if (sockets && typeof sockets === "object") {
|
|
179
|
+
for (const key of Object.keys(sockets)) {
|
|
180
|
+
const socketList = sockets[key];
|
|
181
|
+
if (Array.isArray(socketList)) {
|
|
182
|
+
for (const socket of socketList) {
|
|
183
|
+
try {
|
|
184
|
+
socket.destroy();
|
|
185
|
+
} catch {}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const freeSockets = agent.freeSockets;
|
|
191
|
+
if (freeSockets && typeof freeSockets === "object") {
|
|
192
|
+
for (const key of Object.keys(freeSockets)) {
|
|
193
|
+
const socketList = freeSockets[key];
|
|
194
|
+
if (Array.isArray(socketList)) {
|
|
195
|
+
for (const socket of socketList) {
|
|
196
|
+
try {
|
|
197
|
+
socket.destroy();
|
|
198
|
+
} catch {}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
163
204
|
clear() {
|
|
164
205
|
this.destroy();
|
|
165
206
|
if (this.config.idleEvictionMs > 0) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rezo",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.60",
|
|
4
4
|
"description": "Lightning-fast, enterprise-grade HTTP client for modern JavaScript. Full HTTP/2 support, intelligent cookie management, multiple adapters (HTTP, Fetch, cURL, XHR), streaming, proxy support (HTTP/HTTPS/SOCKS), and cross-environment compatibility.",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.js",
|