rezo 1.0.29 → 1.0.30

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.
@@ -1,6 +1,6 @@
1
- const _mod_qxjloy = require('./picker.cjs');
2
- exports.detectRuntime = _mod_qxjloy.detectRuntime;
3
- exports.getAdapterCapabilities = _mod_qxjloy.getAdapterCapabilities;
4
- exports.buildAdapterContext = _mod_qxjloy.buildAdapterContext;
5
- exports.getAvailableAdapters = _mod_qxjloy.getAvailableAdapters;
6
- exports.selectAdapter = _mod_qxjloy.selectAdapter;;
1
+ const _mod_jvt2y3 = require('./picker.cjs');
2
+ exports.detectRuntime = _mod_jvt2y3.detectRuntime;
3
+ exports.getAdapterCapabilities = _mod_jvt2y3.getAdapterCapabilities;
4
+ exports.buildAdapterContext = _mod_jvt2y3.buildAdapterContext;
5
+ exports.getAvailableAdapters = _mod_jvt2y3.getAvailableAdapters;
6
+ exports.selectAdapter = _mod_jvt2y3.selectAdapter;;
@@ -1,13 +1,13 @@
1
- const _mod_9ss1fi = require('./lru-cache.cjs');
2
- exports.LRUCache = _mod_9ss1fi.LRUCache;;
3
- const _mod_5jpjzg = require('./dns-cache.cjs');
4
- exports.DNSCache = _mod_5jpjzg.DNSCache;
5
- exports.getGlobalDNSCache = _mod_5jpjzg.getGlobalDNSCache;
6
- exports.resetGlobalDNSCache = _mod_5jpjzg.resetGlobalDNSCache;;
7
- const _mod_q250sz = require('./response-cache.cjs');
8
- exports.ResponseCache = _mod_q250sz.ResponseCache;
9
- exports.normalizeResponseCacheConfig = _mod_q250sz.normalizeResponseCacheConfig;;
10
- const _mod_dri495 = require('./file-cacher.cjs');
11
- exports.FileCacher = _mod_dri495.FileCacher;;
12
- const _mod_2lvgyz = require('./url-store.cjs');
13
- exports.UrlStore = _mod_2lvgyz.UrlStore;;
1
+ const _mod_rmp3wu = require('./lru-cache.cjs');
2
+ exports.LRUCache = _mod_rmp3wu.LRUCache;;
3
+ const _mod_r7c9g6 = require('./dns-cache.cjs');
4
+ exports.DNSCache = _mod_r7c9g6.DNSCache;
5
+ exports.getGlobalDNSCache = _mod_r7c9g6.getGlobalDNSCache;
6
+ exports.resetGlobalDNSCache = _mod_r7c9g6.resetGlobalDNSCache;;
7
+ const _mod_hc21ei = require('./response-cache.cjs');
8
+ exports.ResponseCache = _mod_hc21ei.ResponseCache;
9
+ exports.normalizeResponseCacheConfig = _mod_hc21ei.normalizeResponseCacheConfig;;
10
+ const _mod_e129fq = require('./file-cacher.cjs');
11
+ exports.FileCacher = _mod_e129fq.FileCacher;;
12
+ const _mod_wyslbn = require('./url-store.cjs');
13
+ exports.UrlStore = _mod_wyslbn.UrlStore;;
@@ -1,5 +1,5 @@
1
- const _mod_0xllqe = require('../plugin/crawler.cjs');
2
- exports.Crawler = _mod_0xllqe.Crawler;;
3
- const _mod_txr5mp = require('../plugin/crawler-options.cjs');
4
- exports.CrawlerOptions = _mod_txr5mp.CrawlerOptions;
5
- exports.Domain = _mod_txr5mp.Domain;;
1
+ const _mod_rmr6y9 = require('../plugin/crawler.cjs');
2
+ exports.Crawler = _mod_rmr6y9.Crawler;;
3
+ const _mod_b09fov = require('../plugin/crawler-options.cjs');
4
+ exports.CrawlerOptions = _mod_b09fov.CrawlerOptions;
5
+ exports.Domain = _mod_b09fov.Domain;;
package/dist/index.cjs CHANGED
@@ -1,27 +1,27 @@
1
- const _mod_96xj9i = require('./core/rezo.cjs');
2
- exports.Rezo = _mod_96xj9i.Rezo;
3
- exports.createRezoInstance = _mod_96xj9i.createRezoInstance;
4
- exports.createDefaultInstance = _mod_96xj9i.createDefaultInstance;;
5
- const _mod_3lqd9a = require('./errors/rezo-error.cjs');
6
- exports.RezoError = _mod_3lqd9a.RezoError;
7
- exports.RezoErrorCode = _mod_3lqd9a.RezoErrorCode;;
8
- const _mod_59zgej = require('./utils/headers.cjs');
9
- exports.RezoHeaders = _mod_59zgej.RezoHeaders;;
10
- const _mod_skmrv6 = require('./utils/form-data.cjs');
11
- exports.RezoFormData = _mod_skmrv6.RezoFormData;;
12
- const _mod_4gufqx = require('./utils/cookies.cjs');
13
- exports.RezoCookieJar = _mod_4gufqx.RezoCookieJar;
14
- exports.Cookie = _mod_4gufqx.Cookie;;
15
- const _mod_mdhx7m = require('./core/hooks.cjs');
16
- exports.createDefaultHooks = _mod_mdhx7m.createDefaultHooks;
17
- exports.mergeHooks = _mod_mdhx7m.mergeHooks;;
18
- const _mod_kl23ha = require('./proxy/manager.cjs');
19
- exports.ProxyManager = _mod_kl23ha.ProxyManager;;
20
- const _mod_og1k7b = require('./queue/index.cjs');
21
- exports.RezoQueue = _mod_og1k7b.RezoQueue;
22
- exports.HttpQueue = _mod_og1k7b.HttpQueue;
23
- exports.Priority = _mod_og1k7b.Priority;
24
- exports.HttpMethodPriority = _mod_og1k7b.HttpMethodPriority;;
1
+ const _mod_a2uu3a = require('./core/rezo.cjs');
2
+ exports.Rezo = _mod_a2uu3a.Rezo;
3
+ exports.createRezoInstance = _mod_a2uu3a.createRezoInstance;
4
+ exports.createDefaultInstance = _mod_a2uu3a.createDefaultInstance;;
5
+ const _mod_tu09se = require('./errors/rezo-error.cjs');
6
+ exports.RezoError = _mod_tu09se.RezoError;
7
+ exports.RezoErrorCode = _mod_tu09se.RezoErrorCode;;
8
+ const _mod_y3keed = require('./utils/headers.cjs');
9
+ exports.RezoHeaders = _mod_y3keed.RezoHeaders;;
10
+ const _mod_goh1u6 = require('./utils/form-data.cjs');
11
+ exports.RezoFormData = _mod_goh1u6.RezoFormData;;
12
+ const _mod_ku4hh5 = require('./utils/cookies.cjs');
13
+ exports.RezoCookieJar = _mod_ku4hh5.RezoCookieJar;
14
+ exports.Cookie = _mod_ku4hh5.Cookie;;
15
+ const _mod_f06gp2 = require('./core/hooks.cjs');
16
+ exports.createDefaultHooks = _mod_f06gp2.createDefaultHooks;
17
+ exports.mergeHooks = _mod_f06gp2.mergeHooks;;
18
+ const _mod_tx60cr = require('./proxy/manager.cjs');
19
+ exports.ProxyManager = _mod_tx60cr.ProxyManager;;
20
+ const _mod_wz29v4 = require('./queue/index.cjs');
21
+ exports.RezoQueue = _mod_wz29v4.RezoQueue;
22
+ exports.HttpQueue = _mod_wz29v4.HttpQueue;
23
+ exports.Priority = _mod_wz29v4.Priority;
24
+ exports.HttpMethodPriority = _mod_wz29v4.HttpMethodPriority;;
25
25
  const { RezoError } = require('./errors/rezo-error.cjs');
26
26
  const isRezoError = exports.isRezoError = RezoError.isRezoError;
27
27
  const Cancel = exports.Cancel = RezoError;
@@ -1,36 +1,36 @@
1
- const _mod_rss0b2 = require('./crawler.cjs');
2
- exports.Crawler = _mod_rss0b2.Crawler;;
3
- const _mod_0ywu4a = require('./crawler-options.cjs');
4
- exports.CrawlerOptions = _mod_0ywu4a.CrawlerOptions;;
5
- const _mod_r6tzca = require('../cache/file-cacher.cjs');
6
- exports.FileCacher = _mod_r6tzca.FileCacher;;
7
- const _mod_aw0pxt = require('../cache/url-store.cjs');
8
- exports.UrlStore = _mod_aw0pxt.UrlStore;;
9
- const _mod_6rsznf = require('./addon/oxylabs/index.cjs');
10
- exports.Oxylabs = _mod_6rsznf.Oxylabs;;
11
- const _mod_kgy3pf = require('./addon/oxylabs/options.cjs');
12
- exports.OXYLABS_BROWSER_TYPES = _mod_kgy3pf.OXYLABS_BROWSER_TYPES;
13
- exports.OXYLABS_COMMON_LOCALES = _mod_kgy3pf.OXYLABS_COMMON_LOCALES;
14
- exports.OXYLABS_COMMON_GEO_LOCATIONS = _mod_kgy3pf.OXYLABS_COMMON_GEO_LOCATIONS;
15
- exports.OXYLABS_US_STATES = _mod_kgy3pf.OXYLABS_US_STATES;
16
- exports.OXYLABS_EUROPEAN_COUNTRIES = _mod_kgy3pf.OXYLABS_EUROPEAN_COUNTRIES;
17
- exports.OXYLABS_ASIAN_COUNTRIES = _mod_kgy3pf.OXYLABS_ASIAN_COUNTRIES;
18
- exports.getRandomOxylabsBrowserType = _mod_kgy3pf.getRandomBrowserType;
19
- exports.getRandomOxylabsLocale = _mod_kgy3pf.getRandomLocale;
20
- exports.getRandomOxylabsGeoLocation = _mod_kgy3pf.getRandomGeoLocation;;
21
- const _mod_4335qv = require('./addon/decodo/index.cjs');
22
- exports.Decodo = _mod_4335qv.Decodo;;
23
- const _mod_0ry06s = require('./addon/decodo/options.cjs');
24
- exports.DECODO_DEVICE_TYPES = _mod_0ry06s.DECODO_DEVICE_TYPES;
25
- exports.DECODO_HEADLESS_MODES = _mod_0ry06s.DECODO_HEADLESS_MODES;
26
- exports.DECODO_COMMON_LOCALES = _mod_0ry06s.DECODO_COMMON_LOCALES;
27
- exports.DECODO_COMMON_COUNTRIES = _mod_0ry06s.DECODO_COMMON_COUNTRIES;
28
- exports.DECODO_EUROPEAN_COUNTRIES = _mod_0ry06s.DECODO_EUROPEAN_COUNTRIES;
29
- exports.DECODO_ASIAN_COUNTRIES = _mod_0ry06s.DECODO_ASIAN_COUNTRIES;
30
- exports.DECODO_US_STATES = _mod_0ry06s.DECODO_US_STATES;
31
- exports.DECODO_COMMON_CITIES = _mod_0ry06s.DECODO_COMMON_CITIES;
32
- exports.getRandomDecodoDeviceType = _mod_0ry06s.getRandomDeviceType;
33
- exports.getRandomDecodoLocale = _mod_0ry06s.getRandomLocale;
34
- exports.getRandomDecodoCountry = _mod_0ry06s.getRandomCountry;
35
- exports.getRandomDecodoCity = _mod_0ry06s.getRandomCity;
36
- exports.generateDecodoSessionId = _mod_0ry06s.generateSessionId;;
1
+ const _mod_yi47xm = require('./crawler.cjs');
2
+ exports.Crawler = _mod_yi47xm.Crawler;;
3
+ const _mod_adybyd = require('./crawler-options.cjs');
4
+ exports.CrawlerOptions = _mod_adybyd.CrawlerOptions;;
5
+ const _mod_tz3o9k = require('../cache/file-cacher.cjs');
6
+ exports.FileCacher = _mod_tz3o9k.FileCacher;;
7
+ const _mod_qopdx6 = require('../cache/url-store.cjs');
8
+ exports.UrlStore = _mod_qopdx6.UrlStore;;
9
+ const _mod_cgmauf = require('./addon/oxylabs/index.cjs');
10
+ exports.Oxylabs = _mod_cgmauf.Oxylabs;;
11
+ const _mod_rsaj94 = require('./addon/oxylabs/options.cjs');
12
+ exports.OXYLABS_BROWSER_TYPES = _mod_rsaj94.OXYLABS_BROWSER_TYPES;
13
+ exports.OXYLABS_COMMON_LOCALES = _mod_rsaj94.OXYLABS_COMMON_LOCALES;
14
+ exports.OXYLABS_COMMON_GEO_LOCATIONS = _mod_rsaj94.OXYLABS_COMMON_GEO_LOCATIONS;
15
+ exports.OXYLABS_US_STATES = _mod_rsaj94.OXYLABS_US_STATES;
16
+ exports.OXYLABS_EUROPEAN_COUNTRIES = _mod_rsaj94.OXYLABS_EUROPEAN_COUNTRIES;
17
+ exports.OXYLABS_ASIAN_COUNTRIES = _mod_rsaj94.OXYLABS_ASIAN_COUNTRIES;
18
+ exports.getRandomOxylabsBrowserType = _mod_rsaj94.getRandomBrowserType;
19
+ exports.getRandomOxylabsLocale = _mod_rsaj94.getRandomLocale;
20
+ exports.getRandomOxylabsGeoLocation = _mod_rsaj94.getRandomGeoLocation;;
21
+ const _mod_rhi157 = require('./addon/decodo/index.cjs');
22
+ exports.Decodo = _mod_rhi157.Decodo;;
23
+ const _mod_i5pjvf = require('./addon/decodo/options.cjs');
24
+ exports.DECODO_DEVICE_TYPES = _mod_i5pjvf.DECODO_DEVICE_TYPES;
25
+ exports.DECODO_HEADLESS_MODES = _mod_i5pjvf.DECODO_HEADLESS_MODES;
26
+ exports.DECODO_COMMON_LOCALES = _mod_i5pjvf.DECODO_COMMON_LOCALES;
27
+ exports.DECODO_COMMON_COUNTRIES = _mod_i5pjvf.DECODO_COMMON_COUNTRIES;
28
+ exports.DECODO_EUROPEAN_COUNTRIES = _mod_i5pjvf.DECODO_EUROPEAN_COUNTRIES;
29
+ exports.DECODO_ASIAN_COUNTRIES = _mod_i5pjvf.DECODO_ASIAN_COUNTRIES;
30
+ exports.DECODO_US_STATES = _mod_i5pjvf.DECODO_US_STATES;
31
+ exports.DECODO_COMMON_CITIES = _mod_i5pjvf.DECODO_COMMON_CITIES;
32
+ exports.getRandomDecodoDeviceType = _mod_i5pjvf.getRandomDeviceType;
33
+ exports.getRandomDecodoLocale = _mod_i5pjvf.getRandomLocale;
34
+ exports.getRandomDecodoCountry = _mod_i5pjvf.getRandomCountry;
35
+ exports.getRandomDecodoCity = _mod_i5pjvf.getRandomCity;
36
+ exports.generateDecodoSessionId = _mod_i5pjvf.generateSessionId;;
@@ -1,8 +1,11 @@
1
1
  const { SocksProxyAgent: RezoSocksProxy } = require("socks-proxy-agent");
2
2
  const { HttpsProxyAgent: RezoHttpsSocks } = require("https-proxy-agent");
3
3
  const { HttpProxyAgent: RezoHttpSocks } = require("http-proxy-agent");
4
- const _mod_ejtoqv = require('./manager.cjs');
5
- exports.ProxyManager = _mod_ejtoqv.ProxyManager;;
4
+ const { parseProxyString } = require('./parse.cjs');
5
+ const _mod_050i71 = require('./manager.cjs');
6
+ exports.ProxyManager = _mod_050i71.ProxyManager;;
7
+ const _mod_cxafjm = require('./parse.cjs');
8
+ exports.parseProxyString = _mod_cxafjm.parseProxyString;;
6
9
  function createOptions(uri, opts) {
7
10
  if (uri instanceof URL || typeof uri === "string") {
8
11
  return {
@@ -18,83 +21,6 @@ function createOptions(uri, opts) {
18
21
  uri: `${protocol}://${authstr}${host}:${port}`
19
22
  };
20
23
  }
21
- function isIPv4(host) {
22
- const ipv4Regex = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/;
23
- return ipv4Regex.test(host);
24
- }
25
- function isDomain(host) {
26
- const domainRegex = /^(?=.{1,253}$)(?!-)([a-zA-Z0-9-]{1,63}\.)+[a-zA-Z]{2,63}$/;
27
- return domainRegex.test(host);
28
- }
29
- function isNumeric(value) {
30
- if (typeof value === "number")
31
- return isFinite(value);
32
- if (typeof value === "string" && value.trim() !== "") {
33
- return !isNaN(Number(value));
34
- }
35
- return false;
36
- }
37
- function parseProxyString(input) {
38
- if (!input)
39
- return null;
40
- let host = "";
41
- let port = 0;
42
- let username;
43
- let password;
44
- const proto = input.includes("://") ? input.split("://")[0].toLowerCase() : "";
45
- const protocol = proto.startsWith("http") ? "http" : proto.startsWith("https") ? "https" : "socks5";
46
- if (protocol !== "socks5" || input.includes("://")) {
47
- input = input.split("://")[1];
48
- }
49
- const getProxy = (authPart, hostPart) => {
50
- if (authPart && authPart.includes(":")) {
51
- const [p1, ..._p2] = authPart.split(":");
52
- const p2 = _p2.join(":");
53
- if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
54
- host = p1;
55
- port = parseInt(p2, 10);
56
- } else {
57
- username = p1;
58
- password = p2;
59
- }
60
- }
61
- if (hostPart && hostPart.includes(":")) {
62
- const [p1, ..._p2] = hostPart.split(":");
63
- const p2 = _p2.join(":");
64
- if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
65
- host = p1;
66
- port = parseInt(p2, 10);
67
- } else {
68
- username = p1;
69
- password = p2;
70
- }
71
- }
72
- if (!host && !port)
73
- return null;
74
- if (username && password) {
75
- return { protocol, host, port, auth: { username, password } };
76
- }
77
- return {
78
- protocol,
79
- host,
80
- port
81
- };
82
- };
83
- input = input.trim();
84
- if (input.includes("@")) {
85
- const [authPart, hostPart] = input.split("@");
86
- if (!authPart && !hostPart)
87
- return null;
88
- return getProxy(authPart, hostPart);
89
- } else if (input.split(":").length === 4 || input.split(":").length === 2) {
90
- const parts = input.split(":");
91
- const authPart = input.split(":").length === 2 ? undefined : parts[2] + ":" + parts[3];
92
- const hostPart = parts[0] + ":" + parts[1];
93
- return getProxy(authPart || "", hostPart || "");
94
- } else {
95
- return null;
96
- }
97
- }
98
24
  function rezoProxy(uri, over, opts) {
99
25
  if (typeof uri === "string") {
100
26
  if (typeof over === "string") {
@@ -139,5 +65,4 @@ function rezoProxy(uri, over, opts) {
139
65
  return new RezoSocksProxy(config.uri, config.opts);
140
66
  }
141
67
 
142
- exports.parseProxyString = parseProxyString;
143
68
  exports.rezoProxy = rezoProxy;
@@ -1,7 +1,9 @@
1
1
  import { SocksProxyAgent as RezoSocksProxy } from "socks-proxy-agent";
2
2
  import { HttpsProxyAgent as RezoHttpsSocks } from "https-proxy-agent";
3
3
  import { HttpProxyAgent as RezoHttpSocks } from "http-proxy-agent";
4
+ import { parseProxyString } from './parse.js';
4
5
  export { ProxyManager } from './manager.js';
6
+ export { parseProxyString } from './parse.js';
5
7
  function createOptions(uri, opts) {
6
8
  if (uri instanceof URL || typeof uri === "string") {
7
9
  return {
@@ -17,83 +19,6 @@ function createOptions(uri, opts) {
17
19
  uri: `${protocol}://${authstr}${host}:${port}`
18
20
  };
19
21
  }
20
- function isIPv4(host) {
21
- const ipv4Regex = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/;
22
- return ipv4Regex.test(host);
23
- }
24
- function isDomain(host) {
25
- const domainRegex = /^(?=.{1,253}$)(?!-)([a-zA-Z0-9-]{1,63}\.)+[a-zA-Z]{2,63}$/;
26
- return domainRegex.test(host);
27
- }
28
- function isNumeric(value) {
29
- if (typeof value === "number")
30
- return isFinite(value);
31
- if (typeof value === "string" && value.trim() !== "") {
32
- return !isNaN(Number(value));
33
- }
34
- return false;
35
- }
36
- export function parseProxyString(input) {
37
- if (!input)
38
- return null;
39
- let host = "";
40
- let port = 0;
41
- let username;
42
- let password;
43
- const proto = input.includes("://") ? input.split("://")[0].toLowerCase() : "";
44
- const protocol = proto.startsWith("http") ? "http" : proto.startsWith("https") ? "https" : "socks5";
45
- if (protocol !== "socks5" || input.includes("://")) {
46
- input = input.split("://")[1];
47
- }
48
- const getProxy = (authPart, hostPart) => {
49
- if (authPart && authPart.includes(":")) {
50
- const [p1, ..._p2] = authPart.split(":");
51
- const p2 = _p2.join(":");
52
- if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
53
- host = p1;
54
- port = parseInt(p2, 10);
55
- } else {
56
- username = p1;
57
- password = p2;
58
- }
59
- }
60
- if (hostPart && hostPart.includes(":")) {
61
- const [p1, ..._p2] = hostPart.split(":");
62
- const p2 = _p2.join(":");
63
- if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
64
- host = p1;
65
- port = parseInt(p2, 10);
66
- } else {
67
- username = p1;
68
- password = p2;
69
- }
70
- }
71
- if (!host && !port)
72
- return null;
73
- if (username && password) {
74
- return { protocol, host, port, auth: { username, password } };
75
- }
76
- return {
77
- protocol,
78
- host,
79
- port
80
- };
81
- };
82
- input = input.trim();
83
- if (input.includes("@")) {
84
- const [authPart, hostPart] = input.split("@");
85
- if (!authPart && !hostPart)
86
- return null;
87
- return getProxy(authPart, hostPart);
88
- } else if (input.split(":").length === 4 || input.split(":").length === 2) {
89
- const parts = input.split(":");
90
- const authPart = input.split(":").length === 2 ? undefined : parts[2] + ":" + parts[3];
91
- const hostPart = parts[0] + ":" + parts[1];
92
- return getProxy(authPart || "", hostPart || "");
93
- } else {
94
- return null;
95
- }
96
- }
97
22
  export function rezoProxy(uri, over, opts) {
98
23
  if (typeof uri === "string") {
99
24
  if (typeof over === "string") {
@@ -0,0 +1,79 @@
1
+ function isIPv4(host) {
2
+ const ipv4Regex = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/;
3
+ return ipv4Regex.test(host);
4
+ }
5
+ function isDomain(host) {
6
+ const domainRegex = /^(?=.{1,253}$)(?!-)([a-zA-Z0-9-]{1,63}\.)+[a-zA-Z]{2,63}$/;
7
+ return domainRegex.test(host);
8
+ }
9
+ function isNumeric(value) {
10
+ if (typeof value === "number")
11
+ return isFinite(value);
12
+ if (typeof value === "string" && value.trim() !== "") {
13
+ return !isNaN(Number(value));
14
+ }
15
+ return false;
16
+ }
17
+ function parseProxyString(input) {
18
+ if (!input)
19
+ return null;
20
+ let host = "";
21
+ let port = 0;
22
+ let username;
23
+ let password;
24
+ const proto = input.includes("://") ? input.split("://")[0].toLowerCase() : "";
25
+ const protocol = proto.startsWith("http") ? "http" : proto.startsWith("https") ? "https" : "socks5";
26
+ if (protocol !== "socks5" || input.includes("://")) {
27
+ input = input.split("://")[1];
28
+ }
29
+ const getProxy = (authPart, hostPart) => {
30
+ if (authPart && authPart.includes(":")) {
31
+ const [p1, ..._p2] = authPart.split(":");
32
+ const p2 = _p2.join(":");
33
+ if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
34
+ host = p1;
35
+ port = parseInt(p2, 10);
36
+ } else {
37
+ username = p1;
38
+ password = p2;
39
+ }
40
+ }
41
+ if (hostPart && hostPart.includes(":")) {
42
+ const [p1, ..._p2] = hostPart.split(":");
43
+ const p2 = _p2.join(":");
44
+ if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
45
+ host = p1;
46
+ port = parseInt(p2, 10);
47
+ } else {
48
+ username = p1;
49
+ password = p2;
50
+ }
51
+ }
52
+ if (!host && !port)
53
+ return null;
54
+ if (username && password) {
55
+ return { protocol, host, port, auth: { username, password } };
56
+ }
57
+ return {
58
+ protocol,
59
+ host,
60
+ port
61
+ };
62
+ };
63
+ input = input.trim();
64
+ if (input.includes("@")) {
65
+ const [authPart, hostPart] = input.split("@");
66
+ if (!authPart && !hostPart)
67
+ return null;
68
+ return getProxy(authPart, hostPart);
69
+ } else if (input.split(":").length === 4 || input.split(":").length === 2) {
70
+ const parts = input.split(":");
71
+ const authPart = input.split(":").length === 2 ? undefined : parts[2] + ":" + parts[3];
72
+ const hostPart = parts[0] + ":" + parts[1];
73
+ return getProxy(authPart || "", hostPart || "");
74
+ } else {
75
+ return null;
76
+ }
77
+ }
78
+
79
+ exports.parseProxyString = parseProxyString;
@@ -0,0 +1,77 @@
1
+ function isIPv4(host) {
2
+ const ipv4Regex = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/;
3
+ return ipv4Regex.test(host);
4
+ }
5
+ function isDomain(host) {
6
+ const domainRegex = /^(?=.{1,253}$)(?!-)([a-zA-Z0-9-]{1,63}\.)+[a-zA-Z]{2,63}$/;
7
+ return domainRegex.test(host);
8
+ }
9
+ function isNumeric(value) {
10
+ if (typeof value === "number")
11
+ return isFinite(value);
12
+ if (typeof value === "string" && value.trim() !== "") {
13
+ return !isNaN(Number(value));
14
+ }
15
+ return false;
16
+ }
17
+ export function parseProxyString(input) {
18
+ if (!input)
19
+ return null;
20
+ let host = "";
21
+ let port = 0;
22
+ let username;
23
+ let password;
24
+ const proto = input.includes("://") ? input.split("://")[0].toLowerCase() : "";
25
+ const protocol = proto.startsWith("http") ? "http" : proto.startsWith("https") ? "https" : "socks5";
26
+ if (protocol !== "socks5" || input.includes("://")) {
27
+ input = input.split("://")[1];
28
+ }
29
+ const getProxy = (authPart, hostPart) => {
30
+ if (authPart && authPart.includes(":")) {
31
+ const [p1, ..._p2] = authPart.split(":");
32
+ const p2 = _p2.join(":");
33
+ if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
34
+ host = p1;
35
+ port = parseInt(p2, 10);
36
+ } else {
37
+ username = p1;
38
+ password = p2;
39
+ }
40
+ }
41
+ if (hostPart && hostPart.includes(":")) {
42
+ const [p1, ..._p2] = hostPart.split(":");
43
+ const p2 = _p2.join(":");
44
+ if ((isIPv4(p1) || isDomain(p1)) && isNumeric(p2)) {
45
+ host = p1;
46
+ port = parseInt(p2, 10);
47
+ } else {
48
+ username = p1;
49
+ password = p2;
50
+ }
51
+ }
52
+ if (!host && !port)
53
+ return null;
54
+ if (username && password) {
55
+ return { protocol, host, port, auth: { username, password } };
56
+ }
57
+ return {
58
+ protocol,
59
+ host,
60
+ port
61
+ };
62
+ };
63
+ input = input.trim();
64
+ if (input.includes("@")) {
65
+ const [authPart, hostPart] = input.split("@");
66
+ if (!authPart && !hostPart)
67
+ return null;
68
+ return getProxy(authPart, hostPart);
69
+ } else if (input.split(":").length === 4 || input.split(":").length === 2) {
70
+ const parts = input.split(":");
71
+ const authPart = input.split(":").length === 2 ? undefined : parts[2] + ":" + parts[3];
72
+ const hostPart = parts[0] + ":" + parts[1];
73
+ return getProxy(authPart || "", hostPart || "");
74
+ } else {
75
+ return null;
76
+ }
77
+ }
@@ -1,8 +1,8 @@
1
- const _mod_12321u = require('./queue.cjs');
2
- exports.RezoQueue = _mod_12321u.RezoQueue;;
3
- const _mod_qrk8sw = require('./http-queue.cjs');
4
- exports.HttpQueue = _mod_qrk8sw.HttpQueue;
5
- exports.extractDomain = _mod_qrk8sw.extractDomain;;
6
- const _mod_bamjlz = require('./types.cjs');
7
- exports.Priority = _mod_bamjlz.Priority;
8
- exports.HttpMethodPriority = _mod_bamjlz.HttpMethodPriority;;
1
+ const _mod_7u4oi2 = require('./queue.cjs');
2
+ exports.RezoQueue = _mod_7u4oi2.RezoQueue;;
3
+ const _mod_zkptdl = require('./http-queue.cjs');
4
+ exports.HttpQueue = _mod_zkptdl.HttpQueue;
5
+ exports.extractDomain = _mod_zkptdl.extractDomain;;
6
+ const _mod_84nawv = require('./types.cjs');
7
+ exports.Priority = _mod_84nawv.Priority;
8
+ exports.HttpMethodPriority = _mod_84nawv.HttpMethodPriority;;
@@ -2,8 +2,7 @@ const { RezoCookieJar } = require('./cookies.cjs');
2
2
  const RezoFormData = require('./form-data.cjs');
3
3
  const { RezoHeaders } = require('./headers.cjs');
4
4
  const { RezoURLSearchParams } = require('./data-operations.cjs');
5
- const path = require("node:path");
6
- const { parseProxyString } = require('../proxy/index.cjs');
5
+ const { parseProxyString } = require('../proxy/parse.cjs');
7
6
  const { createDefaultHooks, mergeHooks, serializeHooks } = require('../core/hooks.cjs');
8
7
  const ERROR_INFO = exports.ERROR_INFO = {
9
8
  ECONNREFUSED: {
@@ -642,13 +641,21 @@ As a workaround, process.env.NODE_TLS_REJECT_UNAUTHORIZED is being set to '0'.
642
641
  } else if (!fs) {
643
642
  throw new Error(`You can only use this feature in nodejs module, not in Edge module.`);
644
643
  }
645
- const name = path.basename(saveTo);
646
- if (checkISPermission && checkISPermission(saveTo.length ? path.dirname(saveTo) : path.resolve(process.cwd()), fs)) {
647
- const dir = name.length < saveTo.length ? path.dirname(saveTo) : path.join(process.cwd(), "download");
644
+ const basename = (p) => p.split(/[/\\]/).pop() || "";
645
+ const dirname = (p) => {
646
+ const parts = p.split(/[/\\]/);
647
+ parts.pop();
648
+ return parts.join("/") || ".";
649
+ };
650
+ const join = (...parts) => parts.join("/").replace(/\/+/g, "/");
651
+ const name = basename(saveTo);
652
+ const cwd = typeof process !== "undefined" && process.cwd ? process.cwd() : ".";
653
+ if (checkISPermission && checkISPermission(saveTo.length ? dirname(saveTo) : cwd, fs)) {
654
+ const dir = name.length < saveTo.length ? dirname(saveTo) : join(cwd, "download");
648
655
  if (!fs.existsSync(dir)) {
649
656
  fs.mkdirSync(dir, { recursive: true });
650
657
  }
651
- fileName = path.join(dir, name);
658
+ fileName = join(dir, name);
652
659
  config.fileName = fileName;
653
660
  } else {
654
661
  throw new Error(`Permission denied to save to ${saveTo}`);
@@ -2,8 +2,7 @@ import { RezoCookieJar } from './cookies.js';
2
2
  import RezoFormData from './form-data.js';
3
3
  import { RezoHeaders } from './headers.js';
4
4
  import { RezoURLSearchParams } from './data-operations.js';
5
- import path from "node:path";
6
- import { parseProxyString } from '../proxy/index.js';
5
+ import { parseProxyString } from '../proxy/parse.js';
7
6
  import { createDefaultHooks, mergeHooks, serializeHooks } from '../core/hooks.js';
8
7
  export const ERROR_INFO = {
9
8
  ECONNREFUSED: {
@@ -642,13 +641,21 @@ As a workaround, process.env.NODE_TLS_REJECT_UNAUTHORIZED is being set to '0'.
642
641
  } else if (!fs) {
643
642
  throw new Error(`You can only use this feature in nodejs module, not in Edge module.`);
644
643
  }
645
- const name = path.basename(saveTo);
646
- if (checkISPermission && checkISPermission(saveTo.length ? path.dirname(saveTo) : path.resolve(process.cwd()), fs)) {
647
- const dir = name.length < saveTo.length ? path.dirname(saveTo) : path.join(process.cwd(), "download");
644
+ const basename = (p) => p.split(/[/\\]/).pop() || "";
645
+ const dirname = (p) => {
646
+ const parts = p.split(/[/\\]/);
647
+ parts.pop();
648
+ return parts.join("/") || ".";
649
+ };
650
+ const join = (...parts) => parts.join("/").replace(/\/+/g, "/");
651
+ const name = basename(saveTo);
652
+ const cwd = typeof process !== "undefined" && process.cwd ? process.cwd() : ".";
653
+ if (checkISPermission && checkISPermission(saveTo.length ? dirname(saveTo) : cwd, fs)) {
654
+ const dir = name.length < saveTo.length ? dirname(saveTo) : join(cwd, "download");
648
655
  if (!fs.existsSync(dir)) {
649
656
  fs.mkdirSync(dir, { recursive: true });
650
657
  }
651
- fileName = path.join(dir, name);
658
+ fileName = join(dir, name);
652
659
  config.fileName = fileName;
653
660
  } else {
654
661
  throw new Error(`Permission denied to save to ${saveTo}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rezo",
3
- "version": "1.0.29",
3
+ "version": "1.0.30",
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",