nlcurl 0.1.0 → 0.2.0
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/README.md +5 -13
- package/dist/cli/args.d.ts +37 -5
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +6 -17
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +25 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +24 -7
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +24 -12
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +45 -13
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +88 -29
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +25 -3
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +12 -7
- package/dist/cookies/parser.js.map +1 -1
- package/dist/core/client.d.ts +49 -33
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +64 -38
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +94 -6
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +95 -6
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +96 -30
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/request.js +0 -3
- package/dist/core/request.js.map +1 -1
- package/dist/core/response.d.ts +92 -8
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +92 -7
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +109 -14
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +124 -46
- package/dist/core/session.js.map +1 -1
- package/dist/fingerprints/akamai.d.ts +11 -11
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +10 -14
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +14 -15
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +14 -19
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts +121 -27
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +132 -49
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +34 -18
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +34 -18
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts +21 -10
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +25 -22
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +10 -7
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +10 -10
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +11 -3
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +15 -14
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +14 -3
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +16 -13
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +8 -7
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +8 -14
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +70 -47
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/fingerprints/types.js +0 -7
- package/dist/fingerprints/types.js.map +1 -1
- package/dist/http/h1/client.d.ts +30 -9
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +152 -15
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +9 -6
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +8 -12
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +68 -14
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +92 -37
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +81 -14
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +465 -63
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +103 -6
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +96 -17
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +30 -5
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +39 -35
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +35 -12
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +89 -24
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +66 -17
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +47 -20
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +40 -8
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js +28 -6
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts +18 -5
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +12 -7
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry.d.ts +17 -5
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +13 -11
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +17 -9
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +9 -13
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +20 -9
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +20 -31
- package/dist/proxy/socks.js.map +1 -1
- package/dist/tls/constants.d.ts +74 -4
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +75 -21
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts +17 -16
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +20 -27
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +32 -16
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +13 -37
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +18 -10
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +18 -24
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +31 -17
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +173 -74
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +89 -32
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +62 -42
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +76 -25
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +66 -36
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/types.d.ts +33 -25
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/tls/types.js +0 -4
- package/dist/tls/types.js.map +1 -1
- package/dist/utils/buffer-reader.d.ts +99 -7
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js +99 -7
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts +99 -10
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +101 -12
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/encoding.d.ts +33 -8
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +58 -13
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/logger.d.ts +61 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +52 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/url.d.ts +47 -7
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +47 -7
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +59 -15
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +34 -27
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +43 -9
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +35 -19
- package/dist/ws/frame.js.map +1 -1
- package/package.json +2 -2
package/dist/http/h2/client.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP/2 client.
|
|
3
|
-
*
|
|
4
|
-
* Multiplexed HTTP/2 client that runs over a TLS Duplex stream.
|
|
5
|
-
* Sends the connection preface with browser-profile-matched SETTINGS
|
|
6
|
-
* and WINDOW_UPDATE for Akamai HTTP/2 fingerprint control.
|
|
7
|
-
*/
|
|
8
1
|
import type { Duplex } from 'node:stream';
|
|
9
2
|
import type { NLcURLRequest, RequestTimings } from '../../core/request.js';
|
|
10
3
|
import { NLcURLResponse } from '../../core/response.js';
|
|
11
4
|
import type { H2Profile } from '../../fingerprints/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Multiplexed HTTP/2 client that operates over an existing duplex stream.
|
|
7
|
+
* Handles all aspects of the HTTP/2 connection lifecycle: connection preface,
|
|
8
|
+
* settings negotiation, flow control (both stream-level and connection-level),
|
|
9
|
+
* HPACK header compression, and stream multiplexing.
|
|
10
|
+
*
|
|
11
|
+
* Create one `H2Client` per underlying TCP/TLS connection; each call to
|
|
12
|
+
* {@link H2Client.request} or {@link H2Client.streamRequest} opens a new HTTP/2 stream.
|
|
13
|
+
*/
|
|
12
14
|
export declare class H2Client {
|
|
13
15
|
private readonly stream;
|
|
14
16
|
private readonly encoder;
|
|
@@ -19,30 +21,95 @@ export declare class H2Client {
|
|
|
19
21
|
private streams;
|
|
20
22
|
private readBuffer;
|
|
21
23
|
private prefaceSent;
|
|
22
|
-
private
|
|
24
|
+
private _closed;
|
|
25
|
+
private connectionRecvWindow;
|
|
26
|
+
private initialStreamRecvWindow;
|
|
27
|
+
private streamRecvWindows;
|
|
28
|
+
private serverMaxConcurrentStreams;
|
|
29
|
+
private serverMaxFrameSize;
|
|
30
|
+
private connectionSendWindow;
|
|
31
|
+
private initialStreamSendWindow;
|
|
32
|
+
private streamSendWindows;
|
|
33
|
+
private pendingSendData;
|
|
34
|
+
private pendingHeaderStreamId;
|
|
35
|
+
private pendingHeaderBlock;
|
|
36
|
+
private pendingHeaderFlags;
|
|
37
|
+
/**
|
|
38
|
+
* Optional callback invoked when the underlying connection closes, regardless
|
|
39
|
+
* of the reason (graceful GOAWAY, remote reset, or network error).
|
|
40
|
+
*
|
|
41
|
+
* @type {(() => void) | undefined}
|
|
42
|
+
*/
|
|
43
|
+
onClose?: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new H2Client and begins listening for frames on `stream`.
|
|
46
|
+
*
|
|
47
|
+
* @param {Duplex} stream - Connected transport stream (TLS or plain TCP).
|
|
48
|
+
* @param {H2Profile} [h2Profile] - Browser HTTP/2 fingerprint settings (SETTINGS frame values,
|
|
49
|
+
* window update sizes, and priority frames). Defaults to Chrome-like settings when omitted.
|
|
50
|
+
* @param {Array<[string, string]>} [defaultHeaders=[]] - Profile-level request headers prepended to every request.
|
|
51
|
+
*/
|
|
23
52
|
constructor(stream: Duplex, h2Profile?: H2Profile, defaultHeaders?: Array<[string, string]>);
|
|
24
53
|
/**
|
|
25
|
-
*
|
|
54
|
+
* Returns `true` if the connection has been closed or destroyed and is no
|
|
55
|
+
* longer usable.
|
|
26
56
|
*
|
|
27
|
-
*
|
|
57
|
+
* @returns {boolean} Whether the connection is closed.
|
|
58
|
+
*/
|
|
59
|
+
get isClosed(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Sends the HTTP/2 client connection preface (magic PRI bytes) and the
|
|
62
|
+
* initial SETTINGS frame derived from the browser profile. Idempotent —
|
|
63
|
+
* calling more than once has no effect.
|
|
28
64
|
*/
|
|
29
65
|
sendPreface(): void;
|
|
30
66
|
/**
|
|
31
|
-
*
|
|
67
|
+
* Sends an HTTP/2 request and buffers the entire response body before
|
|
68
|
+
* resolving. This is the standard (non-streaming) request path.
|
|
69
|
+
*
|
|
70
|
+
* @param {NLcURLRequest} req - Request descriptor.
|
|
71
|
+
* @param {Partial<RequestTimings>} [timings={}] - Partial timings object populated with `firstByte`.
|
|
72
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the fully received, decompressed response.
|
|
73
|
+
* @throws {ProtocolError} If the connection is already closed or stream IDs are exhausted.
|
|
74
|
+
* @throws {TimeoutError} If the per-request timeout elapses before a response is received.
|
|
32
75
|
*/
|
|
33
76
|
request(req: NLcURLRequest, timings?: Partial<RequestTimings>): Promise<NLcURLResponse>;
|
|
34
77
|
/**
|
|
35
|
-
*
|
|
78
|
+
* Sends an HTTP/2 request and returns a streaming response. The returned
|
|
79
|
+
* `NLcURLResponse` resolves once the status and headers are received;
|
|
80
|
+
* the response body is exposed as a `PassThrough` readable stream via
|
|
81
|
+
* `response.body`.
|
|
82
|
+
*
|
|
83
|
+
* @param {NLcURLRequest} req - Request descriptor.
|
|
84
|
+
* @param {Partial<RequestTimings>} [timings={}] - Partial timings object populated with `firstByte`.
|
|
85
|
+
* @returns {Promise<NLcURLResponse>} Resolves once headers are received; body is streamed via `response.body`.
|
|
86
|
+
* @throws {ProtocolError} If the connection is already closed or stream IDs are exhausted.
|
|
87
|
+
* @throws {TimeoutError} If the per-request timeout elapses before the stream begins.
|
|
88
|
+
*/
|
|
89
|
+
streamRequest(req: NLcURLRequest, timings?: Partial<RequestTimings>): Promise<NLcURLResponse>;
|
|
90
|
+
/**
|
|
91
|
+
* Initiates a graceful shutdown by sending a GOAWAY frame and ending the
|
|
92
|
+
* underlying stream. In-flight requests will fail with `ProtocolError`.
|
|
36
93
|
*/
|
|
37
94
|
close(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Immediately destroys the underlying transport stream, aborting all
|
|
97
|
+
* pending requests with a `ProtocolError`.
|
|
98
|
+
*/
|
|
38
99
|
destroy(): void;
|
|
39
100
|
private buildRequestHeaders;
|
|
40
101
|
private write;
|
|
41
102
|
private onData;
|
|
42
103
|
private processFrames;
|
|
43
104
|
private handleFrame;
|
|
105
|
+
private processDecodedHeaders;
|
|
106
|
+
private resolveStreamingResponse;
|
|
44
107
|
private finalizeStream;
|
|
45
|
-
private
|
|
46
|
-
private
|
|
108
|
+
private applyServerSettings;
|
|
109
|
+
private consumeRecvWindow;
|
|
110
|
+
private handleError;
|
|
111
|
+
private handleClose;
|
|
112
|
+
private sendDataWithFlowControl;
|
|
113
|
+
private flushPendingSendData;
|
|
47
114
|
}
|
|
48
115
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/http/h2/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/http/h2/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAqC7D;;;;;;;;GAQG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IAEzD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,uBAAuB,CAA+B;IAC9D,OAAO,CAAC,iBAAiB,CAA6B;IAEtD,OAAO,CAAC,0BAA0B,CAAY;IAC9C,OAAO,CAAC,kBAAkB,CAAS;IAEnC,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,uBAAuB,CAA+B;IAC9D,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,eAAe,CAAkF;IAEzG,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,kBAAkB,CAAa;IAEvC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;;;OAOG;gBAED,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAa9C;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;OAIG;IACH,WAAW,IAAI,IAAI;IA8CnB;;;;;;;;;OASG;IACG,OAAO,CACX,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACpC,OAAO,CAAC,cAAc,CAAC;IA4D1B;;;;;;;;;;;OAWG;IACG,aAAa,CACjB,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACpC,OAAO,CAAC,cAAc,CAAC;IAoE1B;;;OAGG;IACH,KAAK,IAAI,IAAI;IAQb;;;OAGG;IACH,OAAO,IAAI,IAAI;IAcf,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,WAAW;IA4LnB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,wBAAwB;YAuClB,cAAc;IAoD5B,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,oBAAoB;CAuC7B"}
|