rezo 1.0.42 → 1.0.44
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/curl.cjs +131 -29
- package/dist/adapters/curl.js +131 -29
- package/dist/adapters/entries/curl.d.ts +65 -0
- package/dist/adapters/entries/fetch.d.ts +65 -0
- package/dist/adapters/entries/http.d.ts +65 -0
- package/dist/adapters/entries/http2.d.ts +65 -0
- package/dist/adapters/entries/react-native.d.ts +65 -0
- package/dist/adapters/entries/xhr.d.ts +65 -0
- package/dist/adapters/http2.cjs +209 -22
- package/dist/adapters/http2.js +209 -22
- package/dist/adapters/index.cjs +6 -6
- package/dist/cache/index.cjs +9 -13
- package/dist/cache/index.js +0 -2
- package/dist/core/rezo.cjs +7 -0
- package/dist/core/rezo.js +7 -0
- package/dist/crawler/addon/decodo/index.cjs +1 -0
- package/dist/crawler/addon/decodo/index.js +1 -0
- package/dist/crawler/crawler-options.cjs +1 -0
- package/dist/crawler/crawler-options.js +1 -0
- package/dist/crawler/crawler.cjs +1070 -0
- package/dist/crawler/crawler.js +1068 -0
- package/dist/crawler/index.cjs +40 -0
- package/dist/{plugin → crawler}/index.js +4 -2
- package/dist/crawler/plugin/file-cacher.cjs +19 -0
- package/dist/crawler/plugin/file-cacher.js +19 -0
- package/dist/crawler/plugin/index.cjs +1 -0
- package/dist/crawler/plugin/index.js +1 -0
- package/dist/crawler/plugin/navigation-history.cjs +43 -0
- package/dist/crawler/plugin/navigation-history.js +43 -0
- package/dist/crawler/plugin/robots-txt.cjs +2 -0
- package/dist/crawler/plugin/robots-txt.js +2 -0
- package/dist/crawler/plugin/url-store.cjs +18 -0
- package/dist/crawler/plugin/url-store.js +18 -0
- package/dist/crawler.d.ts +511 -183
- package/dist/entries/crawler.cjs +5 -5
- package/dist/entries/crawler.js +2 -2
- package/dist/index.cjs +27 -24
- package/dist/index.d.ts +73 -0
- package/dist/index.js +1 -0
- package/dist/internal/agents/base.cjs +113 -0
- package/dist/internal/agents/base.js +110 -0
- package/dist/internal/agents/http-proxy.cjs +89 -0
- package/dist/internal/agents/http-proxy.js +86 -0
- package/dist/internal/agents/https-proxy.cjs +176 -0
- package/dist/internal/agents/https-proxy.js +173 -0
- package/dist/internal/agents/index.cjs +10 -0
- package/dist/internal/agents/index.js +5 -0
- package/dist/internal/agents/socks-client.cjs +571 -0
- package/dist/internal/agents/socks-client.js +567 -0
- package/dist/internal/agents/socks-proxy.cjs +75 -0
- package/dist/internal/agents/socks-proxy.js +72 -0
- package/dist/platform/browser.d.ts +65 -0
- package/dist/platform/bun.d.ts +65 -0
- package/dist/platform/deno.d.ts +65 -0
- package/dist/platform/node.d.ts +65 -0
- package/dist/platform/react-native.d.ts +65 -0
- package/dist/platform/worker.d.ts +65 -0
- package/dist/proxy/index.cjs +18 -16
- package/dist/proxy/index.js +17 -12
- package/dist/queue/index.cjs +8 -8
- package/dist/responses/buildError.cjs +11 -2
- package/dist/responses/buildError.js +11 -2
- package/dist/responses/universal/index.cjs +11 -11
- package/dist/utils/curl.cjs +317 -0
- package/dist/utils/curl.js +314 -0
- package/package.json +2 -6
- package/dist/cache/file-cacher.cjs +0 -264
- package/dist/cache/file-cacher.js +0 -261
- package/dist/cache/url-store.cjs +0 -288
- package/dist/cache/url-store.js +0 -285
- package/dist/plugin/addon/decodo/index.cjs +0 -1
- package/dist/plugin/addon/decodo/index.js +0 -1
- package/dist/plugin/crawler-options.cjs +0 -1
- package/dist/plugin/crawler-options.js +0 -1
- package/dist/plugin/crawler.cjs +0 -519
- package/dist/plugin/crawler.js +0 -517
- package/dist/plugin/index.cjs +0 -36
- /package/dist/{plugin → crawler}/addon/decodo/options.cjs +0 -0
- /package/dist/{plugin → crawler}/addon/decodo/options.js +0 -0
- /package/dist/{plugin → crawler}/addon/decodo/types.cjs +0 -0
- /package/dist/{plugin → crawler}/addon/decodo/types.js +0 -0
- /package/dist/{plugin → crawler}/addon/oxylabs/index.cjs +0 -0
- /package/dist/{plugin → crawler}/addon/oxylabs/index.js +0 -0
- /package/dist/{plugin → crawler}/addon/oxylabs/options.cjs +0 -0
- /package/dist/{plugin → crawler}/addon/oxylabs/options.js +0 -0
- /package/dist/{plugin → crawler}/addon/oxylabs/types.cjs +0 -0
- /package/dist/{plugin → crawler}/addon/oxylabs/types.js +0 -0
- /package/dist/{plugin → crawler}/scraper.cjs +0 -0
- /package/dist/{plugin → crawler}/scraper.js +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as net from "node:net";
|
|
2
|
+
import * as tls from "node:tls";
|
|
3
|
+
import { Agent } from './base.js';
|
|
4
|
+
import { SocksClient } from './socks-client.js';
|
|
5
|
+
function parseSocksURL(url) {
|
|
6
|
+
let type;
|
|
7
|
+
switch (url.protocol.replace(":", "")) {
|
|
8
|
+
case "socks4":
|
|
9
|
+
type = 4;
|
|
10
|
+
break;
|
|
11
|
+
case "socks4a":
|
|
12
|
+
type = 4;
|
|
13
|
+
break;
|
|
14
|
+
case "socks5":
|
|
15
|
+
case "socks":
|
|
16
|
+
case "socks5h":
|
|
17
|
+
default:
|
|
18
|
+
type = 5;
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
const host = url.hostname;
|
|
22
|
+
const port = url.port ? parseInt(url.port, 10) : 1080;
|
|
23
|
+
const userId = url.username ? decodeURIComponent(url.username) : undefined;
|
|
24
|
+
const password = url.password ? decodeURIComponent(url.password) : undefined;
|
|
25
|
+
return { host, port, type, userId, password };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export class SocksProxyAgent extends Agent {
|
|
29
|
+
static protocols = [
|
|
30
|
+
"socks",
|
|
31
|
+
"socks4",
|
|
32
|
+
"socks4a",
|
|
33
|
+
"socks5",
|
|
34
|
+
"socks5h"
|
|
35
|
+
];
|
|
36
|
+
proxy;
|
|
37
|
+
tlsConnectionOptions;
|
|
38
|
+
timeout;
|
|
39
|
+
constructor(proxy, opts) {
|
|
40
|
+
super(opts);
|
|
41
|
+
const url = typeof proxy === "string" ? new URL(proxy) : proxy;
|
|
42
|
+
this.proxy = parseSocksURL(url);
|
|
43
|
+
this.timeout = opts?.timeout ?? null;
|
|
44
|
+
this.tlsConnectionOptions = opts ?? {};
|
|
45
|
+
}
|
|
46
|
+
async connect(_req, opts) {
|
|
47
|
+
const { host, port } = opts;
|
|
48
|
+
if (!host) {
|
|
49
|
+
throw new Error('No "host" provided');
|
|
50
|
+
}
|
|
51
|
+
const socksOpts = {
|
|
52
|
+
proxy: this.proxy,
|
|
53
|
+
destination: { host, port },
|
|
54
|
+
command: "connect"
|
|
55
|
+
};
|
|
56
|
+
if (this.timeout !== null) {
|
|
57
|
+
socksOpts.timeout = this.timeout;
|
|
58
|
+
}
|
|
59
|
+
const { socket } = await SocksClient.createConnection(socksOpts);
|
|
60
|
+
if (opts.secureEndpoint) {
|
|
61
|
+
const servername = opts.servername ?? host;
|
|
62
|
+
const tlsSocket = tls.connect({
|
|
63
|
+
...this.tlsConnectionOptions,
|
|
64
|
+
socket,
|
|
65
|
+
servername: !net.isIP(servername) ? servername : undefined
|
|
66
|
+
});
|
|
67
|
+
return tlsSocket;
|
|
68
|
+
}
|
|
69
|
+
return socket;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export default SocksProxyAgent;
|
|
@@ -4355,6 +4355,71 @@ export declare class Rezo {
|
|
|
4355
4355
|
* @see {@link cookieJar} - Access the underlying RezoCookieJar for more control
|
|
4356
4356
|
*/
|
|
4357
4357
|
clearCookies(): void;
|
|
4358
|
+
/**
|
|
4359
|
+
* Convert a Rezo request configuration to a cURL command string.
|
|
4360
|
+
*
|
|
4361
|
+
* Generates a valid cURL command that can be executed in a terminal to
|
|
4362
|
+
* reproduce the same HTTP request. Useful for:
|
|
4363
|
+
* - Debugging and sharing requests
|
|
4364
|
+
* - Documentation and examples
|
|
4365
|
+
* - Testing requests outside of Node.js
|
|
4366
|
+
* - Exporting requests to other tools
|
|
4367
|
+
*
|
|
4368
|
+
* @param config - Request configuration object
|
|
4369
|
+
* @returns A cURL command string
|
|
4370
|
+
*
|
|
4371
|
+
* @example
|
|
4372
|
+
* ```typescript
|
|
4373
|
+
* const curl = Rezo.toCurl({
|
|
4374
|
+
* url: 'https://api.example.com/users',
|
|
4375
|
+
* method: 'POST',
|
|
4376
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
4377
|
+
* body: { name: 'John', email: 'john@example.com' }
|
|
4378
|
+
* });
|
|
4379
|
+
* // Output: curl -X POST -H 'content-type: application/json' --data-raw '{"name":"John","email":"john@example.com"}' -L --compressed 'https://api.example.com/users'
|
|
4380
|
+
* ```
|
|
4381
|
+
*/
|
|
4382
|
+
static toCurl(config: RezoRequestConfig | RezoRequestOptions): string;
|
|
4383
|
+
/**
|
|
4384
|
+
* Parse a cURL command string into a Rezo request configuration.
|
|
4385
|
+
*
|
|
4386
|
+
* Converts a cURL command into a configuration object that can be
|
|
4387
|
+
* passed directly to Rezo request methods. Useful for:
|
|
4388
|
+
* - Importing requests from browser DevTools
|
|
4389
|
+
* - Converting curl examples from API documentation
|
|
4390
|
+
* - Migrating scripts from curl to Rezo
|
|
4391
|
+
*
|
|
4392
|
+
* Supports common cURL options:
|
|
4393
|
+
* - `-X, --request` - HTTP method
|
|
4394
|
+
* - `-H, --header` - Request headers
|
|
4395
|
+
* - `-d, --data, --data-raw, --data-binary` - Request body
|
|
4396
|
+
* - `-u, --user` - Basic authentication
|
|
4397
|
+
* - `-x, --proxy` - Proxy configuration
|
|
4398
|
+
* - `--socks5, --socks4` - SOCKS proxy
|
|
4399
|
+
* - `-L, --location` - Follow redirects
|
|
4400
|
+
* - `--max-redirs` - Maximum redirects
|
|
4401
|
+
* - `--max-time` - Request timeout
|
|
4402
|
+
* - `-k, --insecure` - Skip TLS verification
|
|
4403
|
+
* - `-A, --user-agent` - User agent header
|
|
4404
|
+
*
|
|
4405
|
+
* @param curlCommand - A cURL command string
|
|
4406
|
+
* @returns A request configuration object
|
|
4407
|
+
*
|
|
4408
|
+
* @example
|
|
4409
|
+
* ```typescript
|
|
4410
|
+
* // From browser DevTools "Copy as cURL"
|
|
4411
|
+
* const config = Rezo.fromCurl(`
|
|
4412
|
+
* curl 'https://api.example.com/data' \\
|
|
4413
|
+
* -H 'Authorization: Bearer token123' \\
|
|
4414
|
+
* -H 'Content-Type: application/json'
|
|
4415
|
+
* `);
|
|
4416
|
+
*
|
|
4417
|
+
* // Use with Rezo
|
|
4418
|
+
* const rezo = new Rezo();
|
|
4419
|
+
* const response = await rezo.request(config);
|
|
4420
|
+
* ```
|
|
4421
|
+
*/
|
|
4422
|
+
static fromCurl(curlCommand: string): RezoRequestOptions;
|
|
4358
4423
|
}
|
|
4359
4424
|
/**
|
|
4360
4425
|
* Extended Rezo instance with Axios-compatible static helpers.
|
package/dist/platform/bun.d.ts
CHANGED
|
@@ -4355,6 +4355,71 @@ export declare class Rezo {
|
|
|
4355
4355
|
* @see {@link cookieJar} - Access the underlying RezoCookieJar for more control
|
|
4356
4356
|
*/
|
|
4357
4357
|
clearCookies(): void;
|
|
4358
|
+
/**
|
|
4359
|
+
* Convert a Rezo request configuration to a cURL command string.
|
|
4360
|
+
*
|
|
4361
|
+
* Generates a valid cURL command that can be executed in a terminal to
|
|
4362
|
+
* reproduce the same HTTP request. Useful for:
|
|
4363
|
+
* - Debugging and sharing requests
|
|
4364
|
+
* - Documentation and examples
|
|
4365
|
+
* - Testing requests outside of Node.js
|
|
4366
|
+
* - Exporting requests to other tools
|
|
4367
|
+
*
|
|
4368
|
+
* @param config - Request configuration object
|
|
4369
|
+
* @returns A cURL command string
|
|
4370
|
+
*
|
|
4371
|
+
* @example
|
|
4372
|
+
* ```typescript
|
|
4373
|
+
* const curl = Rezo.toCurl({
|
|
4374
|
+
* url: 'https://api.example.com/users',
|
|
4375
|
+
* method: 'POST',
|
|
4376
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
4377
|
+
* body: { name: 'John', email: 'john@example.com' }
|
|
4378
|
+
* });
|
|
4379
|
+
* // Output: curl -X POST -H 'content-type: application/json' --data-raw '{"name":"John","email":"john@example.com"}' -L --compressed 'https://api.example.com/users'
|
|
4380
|
+
* ```
|
|
4381
|
+
*/
|
|
4382
|
+
static toCurl(config: RezoRequestConfig | RezoRequestOptions): string;
|
|
4383
|
+
/**
|
|
4384
|
+
* Parse a cURL command string into a Rezo request configuration.
|
|
4385
|
+
*
|
|
4386
|
+
* Converts a cURL command into a configuration object that can be
|
|
4387
|
+
* passed directly to Rezo request methods. Useful for:
|
|
4388
|
+
* - Importing requests from browser DevTools
|
|
4389
|
+
* - Converting curl examples from API documentation
|
|
4390
|
+
* - Migrating scripts from curl to Rezo
|
|
4391
|
+
*
|
|
4392
|
+
* Supports common cURL options:
|
|
4393
|
+
* - `-X, --request` - HTTP method
|
|
4394
|
+
* - `-H, --header` - Request headers
|
|
4395
|
+
* - `-d, --data, --data-raw, --data-binary` - Request body
|
|
4396
|
+
* - `-u, --user` - Basic authentication
|
|
4397
|
+
* - `-x, --proxy` - Proxy configuration
|
|
4398
|
+
* - `--socks5, --socks4` - SOCKS proxy
|
|
4399
|
+
* - `-L, --location` - Follow redirects
|
|
4400
|
+
* - `--max-redirs` - Maximum redirects
|
|
4401
|
+
* - `--max-time` - Request timeout
|
|
4402
|
+
* - `-k, --insecure` - Skip TLS verification
|
|
4403
|
+
* - `-A, --user-agent` - User agent header
|
|
4404
|
+
*
|
|
4405
|
+
* @param curlCommand - A cURL command string
|
|
4406
|
+
* @returns A request configuration object
|
|
4407
|
+
*
|
|
4408
|
+
* @example
|
|
4409
|
+
* ```typescript
|
|
4410
|
+
* // From browser DevTools "Copy as cURL"
|
|
4411
|
+
* const config = Rezo.fromCurl(`
|
|
4412
|
+
* curl 'https://api.example.com/data' \\
|
|
4413
|
+
* -H 'Authorization: Bearer token123' \\
|
|
4414
|
+
* -H 'Content-Type: application/json'
|
|
4415
|
+
* `);
|
|
4416
|
+
*
|
|
4417
|
+
* // Use with Rezo
|
|
4418
|
+
* const rezo = new Rezo();
|
|
4419
|
+
* const response = await rezo.request(config);
|
|
4420
|
+
* ```
|
|
4421
|
+
*/
|
|
4422
|
+
static fromCurl(curlCommand: string): RezoRequestOptions;
|
|
4358
4423
|
}
|
|
4359
4424
|
/**
|
|
4360
4425
|
* Extended Rezo instance with Axios-compatible static helpers.
|
package/dist/platform/deno.d.ts
CHANGED
|
@@ -4355,6 +4355,71 @@ export declare class Rezo {
|
|
|
4355
4355
|
* @see {@link cookieJar} - Access the underlying RezoCookieJar for more control
|
|
4356
4356
|
*/
|
|
4357
4357
|
clearCookies(): void;
|
|
4358
|
+
/**
|
|
4359
|
+
* Convert a Rezo request configuration to a cURL command string.
|
|
4360
|
+
*
|
|
4361
|
+
* Generates a valid cURL command that can be executed in a terminal to
|
|
4362
|
+
* reproduce the same HTTP request. Useful for:
|
|
4363
|
+
* - Debugging and sharing requests
|
|
4364
|
+
* - Documentation and examples
|
|
4365
|
+
* - Testing requests outside of Node.js
|
|
4366
|
+
* - Exporting requests to other tools
|
|
4367
|
+
*
|
|
4368
|
+
* @param config - Request configuration object
|
|
4369
|
+
* @returns A cURL command string
|
|
4370
|
+
*
|
|
4371
|
+
* @example
|
|
4372
|
+
* ```typescript
|
|
4373
|
+
* const curl = Rezo.toCurl({
|
|
4374
|
+
* url: 'https://api.example.com/users',
|
|
4375
|
+
* method: 'POST',
|
|
4376
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
4377
|
+
* body: { name: 'John', email: 'john@example.com' }
|
|
4378
|
+
* });
|
|
4379
|
+
* // Output: curl -X POST -H 'content-type: application/json' --data-raw '{"name":"John","email":"john@example.com"}' -L --compressed 'https://api.example.com/users'
|
|
4380
|
+
* ```
|
|
4381
|
+
*/
|
|
4382
|
+
static toCurl(config: RezoRequestConfig | RezoRequestOptions): string;
|
|
4383
|
+
/**
|
|
4384
|
+
* Parse a cURL command string into a Rezo request configuration.
|
|
4385
|
+
*
|
|
4386
|
+
* Converts a cURL command into a configuration object that can be
|
|
4387
|
+
* passed directly to Rezo request methods. Useful for:
|
|
4388
|
+
* - Importing requests from browser DevTools
|
|
4389
|
+
* - Converting curl examples from API documentation
|
|
4390
|
+
* - Migrating scripts from curl to Rezo
|
|
4391
|
+
*
|
|
4392
|
+
* Supports common cURL options:
|
|
4393
|
+
* - `-X, --request` - HTTP method
|
|
4394
|
+
* - `-H, --header` - Request headers
|
|
4395
|
+
* - `-d, --data, --data-raw, --data-binary` - Request body
|
|
4396
|
+
* - `-u, --user` - Basic authentication
|
|
4397
|
+
* - `-x, --proxy` - Proxy configuration
|
|
4398
|
+
* - `--socks5, --socks4` - SOCKS proxy
|
|
4399
|
+
* - `-L, --location` - Follow redirects
|
|
4400
|
+
* - `--max-redirs` - Maximum redirects
|
|
4401
|
+
* - `--max-time` - Request timeout
|
|
4402
|
+
* - `-k, --insecure` - Skip TLS verification
|
|
4403
|
+
* - `-A, --user-agent` - User agent header
|
|
4404
|
+
*
|
|
4405
|
+
* @param curlCommand - A cURL command string
|
|
4406
|
+
* @returns A request configuration object
|
|
4407
|
+
*
|
|
4408
|
+
* @example
|
|
4409
|
+
* ```typescript
|
|
4410
|
+
* // From browser DevTools "Copy as cURL"
|
|
4411
|
+
* const config = Rezo.fromCurl(`
|
|
4412
|
+
* curl 'https://api.example.com/data' \\
|
|
4413
|
+
* -H 'Authorization: Bearer token123' \\
|
|
4414
|
+
* -H 'Content-Type: application/json'
|
|
4415
|
+
* `);
|
|
4416
|
+
*
|
|
4417
|
+
* // Use with Rezo
|
|
4418
|
+
* const rezo = new Rezo();
|
|
4419
|
+
* const response = await rezo.request(config);
|
|
4420
|
+
* ```
|
|
4421
|
+
*/
|
|
4422
|
+
static fromCurl(curlCommand: string): RezoRequestOptions;
|
|
4358
4423
|
}
|
|
4359
4424
|
/**
|
|
4360
4425
|
* Extended Rezo instance with Axios-compatible static helpers.
|
package/dist/platform/node.d.ts
CHANGED
|
@@ -4355,6 +4355,71 @@ export declare class Rezo {
|
|
|
4355
4355
|
* @see {@link cookieJar} - Access the underlying RezoCookieJar for more control
|
|
4356
4356
|
*/
|
|
4357
4357
|
clearCookies(): void;
|
|
4358
|
+
/**
|
|
4359
|
+
* Convert a Rezo request configuration to a cURL command string.
|
|
4360
|
+
*
|
|
4361
|
+
* Generates a valid cURL command that can be executed in a terminal to
|
|
4362
|
+
* reproduce the same HTTP request. Useful for:
|
|
4363
|
+
* - Debugging and sharing requests
|
|
4364
|
+
* - Documentation and examples
|
|
4365
|
+
* - Testing requests outside of Node.js
|
|
4366
|
+
* - Exporting requests to other tools
|
|
4367
|
+
*
|
|
4368
|
+
* @param config - Request configuration object
|
|
4369
|
+
* @returns A cURL command string
|
|
4370
|
+
*
|
|
4371
|
+
* @example
|
|
4372
|
+
* ```typescript
|
|
4373
|
+
* const curl = Rezo.toCurl({
|
|
4374
|
+
* url: 'https://api.example.com/users',
|
|
4375
|
+
* method: 'POST',
|
|
4376
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
4377
|
+
* body: { name: 'John', email: 'john@example.com' }
|
|
4378
|
+
* });
|
|
4379
|
+
* // Output: curl -X POST -H 'content-type: application/json' --data-raw '{"name":"John","email":"john@example.com"}' -L --compressed 'https://api.example.com/users'
|
|
4380
|
+
* ```
|
|
4381
|
+
*/
|
|
4382
|
+
static toCurl(config: RezoRequestConfig | RezoRequestOptions): string;
|
|
4383
|
+
/**
|
|
4384
|
+
* Parse a cURL command string into a Rezo request configuration.
|
|
4385
|
+
*
|
|
4386
|
+
* Converts a cURL command into a configuration object that can be
|
|
4387
|
+
* passed directly to Rezo request methods. Useful for:
|
|
4388
|
+
* - Importing requests from browser DevTools
|
|
4389
|
+
* - Converting curl examples from API documentation
|
|
4390
|
+
* - Migrating scripts from curl to Rezo
|
|
4391
|
+
*
|
|
4392
|
+
* Supports common cURL options:
|
|
4393
|
+
* - `-X, --request` - HTTP method
|
|
4394
|
+
* - `-H, --header` - Request headers
|
|
4395
|
+
* - `-d, --data, --data-raw, --data-binary` - Request body
|
|
4396
|
+
* - `-u, --user` - Basic authentication
|
|
4397
|
+
* - `-x, --proxy` - Proxy configuration
|
|
4398
|
+
* - `--socks5, --socks4` - SOCKS proxy
|
|
4399
|
+
* - `-L, --location` - Follow redirects
|
|
4400
|
+
* - `--max-redirs` - Maximum redirects
|
|
4401
|
+
* - `--max-time` - Request timeout
|
|
4402
|
+
* - `-k, --insecure` - Skip TLS verification
|
|
4403
|
+
* - `-A, --user-agent` - User agent header
|
|
4404
|
+
*
|
|
4405
|
+
* @param curlCommand - A cURL command string
|
|
4406
|
+
* @returns A request configuration object
|
|
4407
|
+
*
|
|
4408
|
+
* @example
|
|
4409
|
+
* ```typescript
|
|
4410
|
+
* // From browser DevTools "Copy as cURL"
|
|
4411
|
+
* const config = Rezo.fromCurl(`
|
|
4412
|
+
* curl 'https://api.example.com/data' \\
|
|
4413
|
+
* -H 'Authorization: Bearer token123' \\
|
|
4414
|
+
* -H 'Content-Type: application/json'
|
|
4415
|
+
* `);
|
|
4416
|
+
*
|
|
4417
|
+
* // Use with Rezo
|
|
4418
|
+
* const rezo = new Rezo();
|
|
4419
|
+
* const response = await rezo.request(config);
|
|
4420
|
+
* ```
|
|
4421
|
+
*/
|
|
4422
|
+
static fromCurl(curlCommand: string): RezoRequestOptions;
|
|
4358
4423
|
}
|
|
4359
4424
|
/**
|
|
4360
4425
|
* Extended Rezo instance with Axios-compatible static helpers.
|
|
@@ -4355,6 +4355,71 @@ export declare class Rezo {
|
|
|
4355
4355
|
* @see {@link cookieJar} - Access the underlying RezoCookieJar for more control
|
|
4356
4356
|
*/
|
|
4357
4357
|
clearCookies(): void;
|
|
4358
|
+
/**
|
|
4359
|
+
* Convert a Rezo request configuration to a cURL command string.
|
|
4360
|
+
*
|
|
4361
|
+
* Generates a valid cURL command that can be executed in a terminal to
|
|
4362
|
+
* reproduce the same HTTP request. Useful for:
|
|
4363
|
+
* - Debugging and sharing requests
|
|
4364
|
+
* - Documentation and examples
|
|
4365
|
+
* - Testing requests outside of Node.js
|
|
4366
|
+
* - Exporting requests to other tools
|
|
4367
|
+
*
|
|
4368
|
+
* @param config - Request configuration object
|
|
4369
|
+
* @returns A cURL command string
|
|
4370
|
+
*
|
|
4371
|
+
* @example
|
|
4372
|
+
* ```typescript
|
|
4373
|
+
* const curl = Rezo.toCurl({
|
|
4374
|
+
* url: 'https://api.example.com/users',
|
|
4375
|
+
* method: 'POST',
|
|
4376
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
4377
|
+
* body: { name: 'John', email: 'john@example.com' }
|
|
4378
|
+
* });
|
|
4379
|
+
* // Output: curl -X POST -H 'content-type: application/json' --data-raw '{"name":"John","email":"john@example.com"}' -L --compressed 'https://api.example.com/users'
|
|
4380
|
+
* ```
|
|
4381
|
+
*/
|
|
4382
|
+
static toCurl(config: RezoRequestConfig | RezoRequestOptions): string;
|
|
4383
|
+
/**
|
|
4384
|
+
* Parse a cURL command string into a Rezo request configuration.
|
|
4385
|
+
*
|
|
4386
|
+
* Converts a cURL command into a configuration object that can be
|
|
4387
|
+
* passed directly to Rezo request methods. Useful for:
|
|
4388
|
+
* - Importing requests from browser DevTools
|
|
4389
|
+
* - Converting curl examples from API documentation
|
|
4390
|
+
* - Migrating scripts from curl to Rezo
|
|
4391
|
+
*
|
|
4392
|
+
* Supports common cURL options:
|
|
4393
|
+
* - `-X, --request` - HTTP method
|
|
4394
|
+
* - `-H, --header` - Request headers
|
|
4395
|
+
* - `-d, --data, --data-raw, --data-binary` - Request body
|
|
4396
|
+
* - `-u, --user` - Basic authentication
|
|
4397
|
+
* - `-x, --proxy` - Proxy configuration
|
|
4398
|
+
* - `--socks5, --socks4` - SOCKS proxy
|
|
4399
|
+
* - `-L, --location` - Follow redirects
|
|
4400
|
+
* - `--max-redirs` - Maximum redirects
|
|
4401
|
+
* - `--max-time` - Request timeout
|
|
4402
|
+
* - `-k, --insecure` - Skip TLS verification
|
|
4403
|
+
* - `-A, --user-agent` - User agent header
|
|
4404
|
+
*
|
|
4405
|
+
* @param curlCommand - A cURL command string
|
|
4406
|
+
* @returns A request configuration object
|
|
4407
|
+
*
|
|
4408
|
+
* @example
|
|
4409
|
+
* ```typescript
|
|
4410
|
+
* // From browser DevTools "Copy as cURL"
|
|
4411
|
+
* const config = Rezo.fromCurl(`
|
|
4412
|
+
* curl 'https://api.example.com/data' \\
|
|
4413
|
+
* -H 'Authorization: Bearer token123' \\
|
|
4414
|
+
* -H 'Content-Type: application/json'
|
|
4415
|
+
* `);
|
|
4416
|
+
*
|
|
4417
|
+
* // Use with Rezo
|
|
4418
|
+
* const rezo = new Rezo();
|
|
4419
|
+
* const response = await rezo.request(config);
|
|
4420
|
+
* ```
|
|
4421
|
+
*/
|
|
4422
|
+
static fromCurl(curlCommand: string): RezoRequestOptions;
|
|
4358
4423
|
}
|
|
4359
4424
|
/**
|
|
4360
4425
|
* Extended Rezo instance with Axios-compatible static helpers.
|
|
@@ -4355,6 +4355,71 @@ export declare class Rezo {
|
|
|
4355
4355
|
* @see {@link cookieJar} - Access the underlying RezoCookieJar for more control
|
|
4356
4356
|
*/
|
|
4357
4357
|
clearCookies(): void;
|
|
4358
|
+
/**
|
|
4359
|
+
* Convert a Rezo request configuration to a cURL command string.
|
|
4360
|
+
*
|
|
4361
|
+
* Generates a valid cURL command that can be executed in a terminal to
|
|
4362
|
+
* reproduce the same HTTP request. Useful for:
|
|
4363
|
+
* - Debugging and sharing requests
|
|
4364
|
+
* - Documentation and examples
|
|
4365
|
+
* - Testing requests outside of Node.js
|
|
4366
|
+
* - Exporting requests to other tools
|
|
4367
|
+
*
|
|
4368
|
+
* @param config - Request configuration object
|
|
4369
|
+
* @returns A cURL command string
|
|
4370
|
+
*
|
|
4371
|
+
* @example
|
|
4372
|
+
* ```typescript
|
|
4373
|
+
* const curl = Rezo.toCurl({
|
|
4374
|
+
* url: 'https://api.example.com/users',
|
|
4375
|
+
* method: 'POST',
|
|
4376
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
4377
|
+
* body: { name: 'John', email: 'john@example.com' }
|
|
4378
|
+
* });
|
|
4379
|
+
* // Output: curl -X POST -H 'content-type: application/json' --data-raw '{"name":"John","email":"john@example.com"}' -L --compressed 'https://api.example.com/users'
|
|
4380
|
+
* ```
|
|
4381
|
+
*/
|
|
4382
|
+
static toCurl(config: RezoRequestConfig | RezoRequestOptions): string;
|
|
4383
|
+
/**
|
|
4384
|
+
* Parse a cURL command string into a Rezo request configuration.
|
|
4385
|
+
*
|
|
4386
|
+
* Converts a cURL command into a configuration object that can be
|
|
4387
|
+
* passed directly to Rezo request methods. Useful for:
|
|
4388
|
+
* - Importing requests from browser DevTools
|
|
4389
|
+
* - Converting curl examples from API documentation
|
|
4390
|
+
* - Migrating scripts from curl to Rezo
|
|
4391
|
+
*
|
|
4392
|
+
* Supports common cURL options:
|
|
4393
|
+
* - `-X, --request` - HTTP method
|
|
4394
|
+
* - `-H, --header` - Request headers
|
|
4395
|
+
* - `-d, --data, --data-raw, --data-binary` - Request body
|
|
4396
|
+
* - `-u, --user` - Basic authentication
|
|
4397
|
+
* - `-x, --proxy` - Proxy configuration
|
|
4398
|
+
* - `--socks5, --socks4` - SOCKS proxy
|
|
4399
|
+
* - `-L, --location` - Follow redirects
|
|
4400
|
+
* - `--max-redirs` - Maximum redirects
|
|
4401
|
+
* - `--max-time` - Request timeout
|
|
4402
|
+
* - `-k, --insecure` - Skip TLS verification
|
|
4403
|
+
* - `-A, --user-agent` - User agent header
|
|
4404
|
+
*
|
|
4405
|
+
* @param curlCommand - A cURL command string
|
|
4406
|
+
* @returns A request configuration object
|
|
4407
|
+
*
|
|
4408
|
+
* @example
|
|
4409
|
+
* ```typescript
|
|
4410
|
+
* // From browser DevTools "Copy as cURL"
|
|
4411
|
+
* const config = Rezo.fromCurl(`
|
|
4412
|
+
* curl 'https://api.example.com/data' \\
|
|
4413
|
+
* -H 'Authorization: Bearer token123' \\
|
|
4414
|
+
* -H 'Content-Type: application/json'
|
|
4415
|
+
* `);
|
|
4416
|
+
*
|
|
4417
|
+
* // Use with Rezo
|
|
4418
|
+
* const rezo = new Rezo();
|
|
4419
|
+
* const response = await rezo.request(config);
|
|
4420
|
+
* ```
|
|
4421
|
+
*/
|
|
4422
|
+
static fromCurl(curlCommand: string): RezoRequestOptions;
|
|
4358
4423
|
}
|
|
4359
4424
|
/**
|
|
4360
4425
|
* Extended Rezo instance with Axios-compatible static helpers.
|
package/dist/proxy/index.cjs
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
const { SocksProxyAgent
|
|
2
|
-
const { HttpsProxyAgent: RezoHttpsSocks } = require("https-proxy-agent");
|
|
3
|
-
const { HttpProxyAgent: RezoHttpSocks } = require("http-proxy-agent");
|
|
1
|
+
const { Agent, HttpProxyAgent, HttpsProxyAgent, SocksProxyAgent } = require('../internal/agents.cjs');
|
|
4
2
|
const { parseProxyString } = require('./parse.cjs');
|
|
5
|
-
const
|
|
6
|
-
exports.ProxyManager =
|
|
7
|
-
const
|
|
8
|
-
exports.parseProxyString =
|
|
3
|
+
const _mod_ecqdmn = require('./manager.cjs');
|
|
4
|
+
exports.ProxyManager = _mod_ecqdmn.ProxyManager;;
|
|
5
|
+
const _mod_4x1jdb = require('./parse.cjs');
|
|
6
|
+
exports.parseProxyString = _mod_4x1jdb.parseProxyString;;
|
|
9
7
|
function createOptions(uri, opts) {
|
|
10
8
|
if (uri instanceof URL || typeof uri === "string") {
|
|
11
9
|
return {
|
|
@@ -26,29 +24,29 @@ function rezoProxy(uri, over, opts) {
|
|
|
26
24
|
if (typeof over === "string") {
|
|
27
25
|
const config = createOptions(uri, opts);
|
|
28
26
|
if (over === "http") {
|
|
29
|
-
return new
|
|
27
|
+
return new HttpProxyAgent(config.uri, config.opts);
|
|
30
28
|
}
|
|
31
|
-
return new
|
|
29
|
+
return new HttpsProxyAgent(config.uri, { ...config.opts, rejectUnauthorized: config.opts?.rejectUnauthorized ?? false });
|
|
32
30
|
} else {
|
|
33
31
|
const isHttp = uri.startsWith("http:");
|
|
34
32
|
const isHttps = uri.startsWith("https:");
|
|
35
33
|
const isSocks = uri.startsWith("sock");
|
|
36
34
|
if (isSocks) {
|
|
37
35
|
const config = createOptions(uri, over || opts);
|
|
38
|
-
return new
|
|
36
|
+
return new SocksProxyAgent(config.uri, config.opts);
|
|
39
37
|
}
|
|
40
38
|
if (isHttp) {
|
|
41
39
|
const config = createOptions(uri, over || opts);
|
|
42
|
-
return new
|
|
40
|
+
return new HttpProxyAgent(config.uri, config.opts);
|
|
43
41
|
}
|
|
44
42
|
if (isHttps) {
|
|
45
43
|
const config = createOptions(uri, over || opts);
|
|
46
|
-
return new
|
|
44
|
+
return new HttpsProxyAgent(config.uri, { ...config.opts, rejectUnauthorized: config.opts?.rejectUnauthorized ?? false });
|
|
47
45
|
}
|
|
48
46
|
const proxy = parseProxyString(uri);
|
|
49
47
|
if (proxy) {
|
|
50
48
|
const config = createOptions(proxy, over || opts);
|
|
51
|
-
return new
|
|
49
|
+
return new SocksProxyAgent(config.uri, config.opts);
|
|
52
50
|
}
|
|
53
51
|
throw new Error("Invalid proxy protocol");
|
|
54
52
|
}
|
|
@@ -57,12 +55,16 @@ function rezoProxy(uri, over, opts) {
|
|
|
57
55
|
delete uri.client;
|
|
58
56
|
const config = createOptions(uri, opts);
|
|
59
57
|
if (over === "http") {
|
|
60
|
-
return new
|
|
58
|
+
return new HttpProxyAgent(config.uri, config.opts);
|
|
61
59
|
}
|
|
62
|
-
return new
|
|
60
|
+
return new HttpsProxyAgent(config.uri, { ...config.opts, rejectUnauthorized: config.opts?.rejectUnauthorized ?? false });
|
|
63
61
|
}
|
|
64
62
|
const config = createOptions(uri, opts);
|
|
65
|
-
return new
|
|
63
|
+
return new SocksProxyAgent(config.uri, config.opts);
|
|
66
64
|
}
|
|
67
65
|
|
|
66
|
+
exports.Agent = Agent;
|
|
67
|
+
exports.HttpProxyAgent = HttpProxyAgent;
|
|
68
|
+
exports.HttpsProxyAgent = HttpsProxyAgent;
|
|
69
|
+
exports.SocksProxyAgent = SocksProxyAgent;
|
|
68
70
|
exports.rezoProxy = rezoProxy;
|
package/dist/proxy/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import {
|
|
2
|
+
Agent,
|
|
3
|
+
HttpProxyAgent,
|
|
4
|
+
HttpsProxyAgent,
|
|
5
|
+
SocksProxyAgent
|
|
6
|
+
} from '../internal/agents.js';
|
|
4
7
|
import { parseProxyString } from './parse.js';
|
|
5
8
|
export { ProxyManager } from './manager.js';
|
|
6
9
|
export { parseProxyString } from './parse.js';
|
|
@@ -24,29 +27,29 @@ export function rezoProxy(uri, over, opts) {
|
|
|
24
27
|
if (typeof over === "string") {
|
|
25
28
|
const config = createOptions(uri, opts);
|
|
26
29
|
if (over === "http") {
|
|
27
|
-
return new
|
|
30
|
+
return new HttpProxyAgent(config.uri, config.opts);
|
|
28
31
|
}
|
|
29
|
-
return new
|
|
32
|
+
return new HttpsProxyAgent(config.uri, { ...config.opts, rejectUnauthorized: config.opts?.rejectUnauthorized ?? false });
|
|
30
33
|
} else {
|
|
31
34
|
const isHttp = uri.startsWith("http:");
|
|
32
35
|
const isHttps = uri.startsWith("https:");
|
|
33
36
|
const isSocks = uri.startsWith("sock");
|
|
34
37
|
if (isSocks) {
|
|
35
38
|
const config = createOptions(uri, over || opts);
|
|
36
|
-
return new
|
|
39
|
+
return new SocksProxyAgent(config.uri, config.opts);
|
|
37
40
|
}
|
|
38
41
|
if (isHttp) {
|
|
39
42
|
const config = createOptions(uri, over || opts);
|
|
40
|
-
return new
|
|
43
|
+
return new HttpProxyAgent(config.uri, config.opts);
|
|
41
44
|
}
|
|
42
45
|
if (isHttps) {
|
|
43
46
|
const config = createOptions(uri, over || opts);
|
|
44
|
-
return new
|
|
47
|
+
return new HttpsProxyAgent(config.uri, { ...config.opts, rejectUnauthorized: config.opts?.rejectUnauthorized ?? false });
|
|
45
48
|
}
|
|
46
49
|
const proxy = parseProxyString(uri);
|
|
47
50
|
if (proxy) {
|
|
48
51
|
const config = createOptions(proxy, over || opts);
|
|
49
|
-
return new
|
|
52
|
+
return new SocksProxyAgent(config.uri, config.opts);
|
|
50
53
|
}
|
|
51
54
|
throw new Error("Invalid proxy protocol");
|
|
52
55
|
}
|
|
@@ -55,10 +58,12 @@ export function rezoProxy(uri, over, opts) {
|
|
|
55
58
|
delete uri.client;
|
|
56
59
|
const config = createOptions(uri, opts);
|
|
57
60
|
if (over === "http") {
|
|
58
|
-
return new
|
|
61
|
+
return new HttpProxyAgent(config.uri, config.opts);
|
|
59
62
|
}
|
|
60
|
-
return new
|
|
63
|
+
return new HttpsProxyAgent(config.uri, { ...config.opts, rejectUnauthorized: config.opts?.rejectUnauthorized ?? false });
|
|
61
64
|
}
|
|
62
65
|
const config = createOptions(uri, opts);
|
|
63
|
-
return new
|
|
66
|
+
return new SocksProxyAgent(config.uri, config.opts);
|
|
64
67
|
}
|
|
68
|
+
|
|
69
|
+
export { Agent, HttpProxyAgent, HttpsProxyAgent, SocksProxyAgent };
|
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_hijcy5 = require('./queue.cjs');
|
|
2
|
+
exports.RezoQueue = _mod_hijcy5.RezoQueue;;
|
|
3
|
+
const _mod_ccb3p2 = require('./http-queue.cjs');
|
|
4
|
+
exports.HttpQueue = _mod_ccb3p2.HttpQueue;
|
|
5
|
+
exports.extractDomain = _mod_ccb3p2.extractDomain;;
|
|
6
|
+
const _mod_h69bcv = require('./types.cjs');
|
|
7
|
+
exports.Priority = _mod_h69bcv.Priority;
|
|
8
|
+
exports.HttpMethodPriority = _mod_h69bcv.HttpMethodPriority;;
|