rezo 1.0.6 → 1.0.7

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.
@@ -21,7 +21,8 @@ class ProxyManager {
21
21
  beforeProxyDisable: [],
22
22
  afterProxyDisable: [],
23
23
  afterProxyRotate: [],
24
- afterProxyEnable: []
24
+ afterProxyEnable: [],
25
+ onNoProxiesAvailable: []
25
26
  };
26
27
  constructor(config) {
27
28
  const parsedProxies = [];
@@ -454,6 +455,47 @@ class ProxyManager {
454
455
  }
455
456
  }
456
457
  }
458
+ runOnNoProxiesAvailableHooksSync(context) {
459
+ for (const hook of this.hooks.onNoProxiesAvailable) {
460
+ try {
461
+ hook(context);
462
+ } catch (error) {
463
+ console.error("[ProxyManager] onNoProxiesAvailable hook error:", error);
464
+ }
465
+ }
466
+ }
467
+ async runOnNoProxiesAvailableHooks(context) {
468
+ for (const hook of this.hooks.onNoProxiesAvailable) {
469
+ try {
470
+ await hook(context);
471
+ } catch (error) {
472
+ console.error("[ProxyManager] onNoProxiesAvailable hook error:", error);
473
+ }
474
+ }
475
+ }
476
+ notifyNoProxiesAvailable(url, error) {
477
+ const allProxies = Array.from(this.states.values());
478
+ const active = allProxies.filter((s) => s.isActive);
479
+ const disabled = allProxies.filter((s) => !s.isActive && !s.reenableAt);
480
+ const cooldown = allProxies.filter((s) => !s.isActive && s.reenableAt);
481
+ const disabledReasons = {
482
+ dead: allProxies.filter((s) => s.disabledReason === "dead").length,
483
+ limitReached: allProxies.filter((s) => s.disabledReason === "limit-reached").length,
484
+ manual: allProxies.filter((s) => s.disabledReason === "manual").length
485
+ };
486
+ const context = {
487
+ url,
488
+ error,
489
+ allProxies,
490
+ activeCount: active.length,
491
+ disabledCount: disabled.length,
492
+ cooldownCount: cooldown.length,
493
+ disabledReasons,
494
+ timestamp: Date.now()
495
+ };
496
+ this.runOnNoProxiesAvailableHooksSync(context);
497
+ return context;
498
+ }
457
499
  }
458
500
 
459
501
  exports.ProxyManager = ProxyManager;
@@ -21,7 +21,8 @@ export class ProxyManager {
21
21
  beforeProxyDisable: [],
22
22
  afterProxyDisable: [],
23
23
  afterProxyRotate: [],
24
- afterProxyEnable: []
24
+ afterProxyEnable: [],
25
+ onNoProxiesAvailable: []
25
26
  };
26
27
  constructor(config) {
27
28
  const parsedProxies = [];
@@ -454,4 +455,45 @@ export class ProxyManager {
454
455
  }
455
456
  }
456
457
  }
458
+ runOnNoProxiesAvailableHooksSync(context) {
459
+ for (const hook of this.hooks.onNoProxiesAvailable) {
460
+ try {
461
+ hook(context);
462
+ } catch (error) {
463
+ console.error("[ProxyManager] onNoProxiesAvailable hook error:", error);
464
+ }
465
+ }
466
+ }
467
+ async runOnNoProxiesAvailableHooks(context) {
468
+ for (const hook of this.hooks.onNoProxiesAvailable) {
469
+ try {
470
+ await hook(context);
471
+ } catch (error) {
472
+ console.error("[ProxyManager] onNoProxiesAvailable hook error:", error);
473
+ }
474
+ }
475
+ }
476
+ notifyNoProxiesAvailable(url, error) {
477
+ const allProxies = Array.from(this.states.values());
478
+ const active = allProxies.filter((s) => s.isActive);
479
+ const disabled = allProxies.filter((s) => !s.isActive && !s.reenableAt);
480
+ const cooldown = allProxies.filter((s) => !s.isActive && s.reenableAt);
481
+ const disabledReasons = {
482
+ dead: allProxies.filter((s) => s.disabledReason === "dead").length,
483
+ limitReached: allProxies.filter((s) => s.disabledReason === "limit-reached").length,
484
+ manual: allProxies.filter((s) => s.disabledReason === "manual").length
485
+ };
486
+ const context = {
487
+ url,
488
+ error,
489
+ allProxies,
490
+ activeCount: active.length,
491
+ disabledCount: disabled.length,
492
+ cooldownCount: cooldown.length,
493
+ disabledReasons,
494
+ timestamp: Date.now()
495
+ };
496
+ this.runOnNoProxiesAvailableHooksSync(context);
497
+ return context;
498
+ }
457
499
  }
@@ -1,8 +1,8 @@
1
- const _mod_gz0pjo = require('./queue.cjs');
2
- exports.RezoQueue = _mod_gz0pjo.RezoQueue;;
3
- const _mod_yjadbd = require('./http-queue.cjs');
4
- exports.HttpQueue = _mod_yjadbd.HttpQueue;
5
- exports.extractDomain = _mod_yjadbd.extractDomain;;
6
- const _mod_h1rr2i = require('./types.cjs');
7
- exports.Priority = _mod_h1rr2i.Priority;
8
- exports.HttpMethodPriority = _mod_h1rr2i.HttpMethodPriority;;
1
+ const _mod_1hdvgg = require('./queue.cjs');
2
+ exports.RezoQueue = _mod_1hdvgg.RezoQueue;;
3
+ const _mod_89rege = require('./http-queue.cjs');
4
+ exports.HttpQueue = _mod_89rege.HttpQueue;
5
+ exports.extractDomain = _mod_89rege.extractDomain;;
6
+ const _mod_bw5pkd = require('./types.cjs');
7
+ exports.Priority = _mod_bw5pkd.Priority;
8
+ exports.HttpMethodPriority = _mod_bw5pkd.HttpMethodPriority;;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rezo",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
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",