nlcurl 0.6.0 → 0.8.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 +143 -140
- package/dist/cache/groups.d.ts +75 -0
- package/dist/cache/groups.d.ts.map +1 -0
- package/dist/cache/groups.js +118 -0
- package/dist/cache/groups.js.map +1 -0
- package/dist/cache/no-vary-search.d.ts +33 -0
- package/dist/cache/no-vary-search.d.ts.map +1 -0
- package/dist/cache/no-vary-search.js +148 -0
- package/dist/cache/no-vary-search.js.map +1 -0
- package/dist/cache/range.d.ts +120 -0
- package/dist/cache/range.d.ts.map +1 -0
- package/dist/cache/range.js +193 -0
- package/dist/cache/range.js.map +1 -0
- package/dist/cache/store.d.ts +111 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +414 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cache/types.d.ts +69 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +2 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/cli/args.d.ts +4 -37
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +3 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.d.ts +0 -5
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +14 -20
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +14 -20
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +33 -31
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +69 -33
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +14 -16
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +30 -13
- package/dist/cookies/parser.js.map +1 -1
- package/dist/cookies/psl-data.d.ts +1 -1
- package/dist/cookies/psl-data.js +1 -1
- package/dist/cookies/public-suffix.d.ts +5 -27
- package/dist/cookies/public-suffix.d.ts.map +1 -1
- package/dist/cookies/public-suffix.js +5 -37
- package/dist/cookies/public-suffix.js.map +1 -1
- package/dist/core/auth.d.ts +30 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +34 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/client.d.ts +28 -40
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +34 -41
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +64 -88
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +64 -88
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +63 -85
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +64 -59
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +70 -52
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +81 -70
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +198 -71
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +44 -42
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +47 -58
- package/dist/core/validation.js.map +1 -1
- package/dist/dns/cache.d.ts +59 -0
- package/dist/dns/cache.d.ts.map +1 -0
- package/dist/dns/cache.js +99 -0
- package/dist/dns/cache.js.map +1 -0
- package/dist/dns/codec.d.ts +39 -0
- package/dist/dns/codec.d.ts.map +1 -0
- package/dist/dns/codec.js +238 -0
- package/dist/dns/codec.js.map +1 -0
- package/dist/dns/doh-resolver.d.ts +38 -0
- package/dist/dns/doh-resolver.d.ts.map +1 -0
- package/dist/dns/doh-resolver.js +191 -0
- package/dist/dns/doh-resolver.js.map +1 -0
- package/dist/dns/dot-resolver.d.ts +89 -0
- package/dist/dns/dot-resolver.d.ts.map +1 -0
- package/dist/dns/dot-resolver.js +158 -0
- package/dist/dns/dot-resolver.js.map +1 -0
- package/dist/dns/https-rr.d.ts +40 -0
- package/dist/dns/https-rr.d.ts.map +1 -0
- package/dist/dns/https-rr.js +109 -0
- package/dist/dns/https-rr.js.map +1 -0
- package/dist/dns/types.d.ts +82 -0
- package/dist/dns/types.d.ts.map +1 -0
- package/dist/dns/types.js +23 -0
- package/dist/dns/types.js.map +1 -0
- package/dist/fingerprints/akamai.d.ts +3 -11
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +3 -11
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +6 -14
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +6 -14
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts +56 -71
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +58 -71
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +12 -30
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +12 -30
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/ja4.d.ts +18 -0
- package/dist/fingerprints/ja4.d.ts.map +1 -0
- package/dist/fingerprints/ja4.js +83 -0
- package/dist/fingerprints/ja4.js.map +1 -0
- package/dist/fingerprints/profiles/chrome.d.ts +18 -21
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +35 -31
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +7 -10
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +7 -10
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +8 -11
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +8 -11
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +11 -14
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +11 -14
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +5 -8
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +5 -8
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +42 -73
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/hsts/store.d.ts +39 -0
- package/dist/hsts/store.d.ts.map +1 -0
- package/dist/hsts/store.js +163 -0
- package/dist/hsts/store.js.map +1 -0
- package/dist/hsts/types.d.ts +24 -0
- package/dist/hsts/types.d.ts.map +1 -0
- package/dist/hsts/types.js +2 -0
- package/dist/hsts/types.js.map +1 -0
- package/dist/http/alt-svc.d.ts +67 -0
- package/dist/http/alt-svc.d.ts.map +1 -0
- package/dist/http/alt-svc.js +186 -0
- package/dist/http/alt-svc.js.map +1 -0
- package/dist/http/early-hints.d.ts +23 -0
- package/dist/http/early-hints.d.ts.map +1 -0
- package/dist/http/early-hints.js +33 -0
- package/dist/http/early-hints.js.map +1 -0
- package/dist/http/form-data.d.ts +17 -35
- package/dist/http/form-data.d.ts.map +1 -1
- package/dist/http/form-data.js +12 -34
- package/dist/http/form-data.js.map +1 -1
- package/dist/http/h1/client.d.ts +14 -26
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +29 -22
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +10 -17
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +10 -17
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +22 -59
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +15 -47
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +18 -59
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +29 -64
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +53 -84
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +48 -76
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +16 -35
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +16 -35
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/h3/detection.d.ts +15 -0
- package/dist/http/h3/detection.d.ts.map +1 -0
- package/dist/http/h3/detection.js +41 -0
- package/dist/http/h3/detection.js.map +1 -0
- package/dist/http/negotiator.d.ts +43 -33
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +99 -41
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +34 -64
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +22 -41
- package/dist/http/pool.js.map +1 -1
- package/dist/http/resumable-upload.d.ts +76 -0
- package/dist/http/resumable-upload.d.ts.map +1 -0
- package/dist/http/resumable-upload.js +104 -0
- package/dist/http/resumable-upload.js.map +1 -0
- package/dist/http/trailers.d.ts +29 -0
- package/dist/http/trailers.d.ts.map +1 -0
- package/dist/http/trailers.js +57 -0
- package/dist/http/trailers.js.map +1 -0
- package/dist/index.d.ts +36 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +13 -32
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js +11 -16
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts +8 -17
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +15 -12
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry-after.d.ts +15 -0
- package/dist/middleware/retry-after.d.ts.map +1 -0
- package/dist/middleware/retry-after.js +36 -0
- package/dist/middleware/retry-after.js.map +1 -0
- package/dist/middleware/retry.d.ts +9 -18
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +12 -9
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/auth.d.ts +73 -0
- package/dist/proxy/auth.d.ts.map +1 -0
- package/dist/proxy/auth.js +128 -0
- package/dist/proxy/auth.js.map +1 -0
- package/dist/proxy/env-proxy.d.ts +11 -0
- package/dist/proxy/env-proxy.d.ts.map +1 -0
- package/dist/proxy/env-proxy.js +56 -0
- package/dist/proxy/env-proxy.js.map +1 -0
- package/dist/proxy/http-proxy.d.ts +13 -18
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +24 -14
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +13 -20
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +6 -9
- package/dist/proxy/socks.js.map +1 -1
- package/dist/sse/parser.d.ts +47 -0
- package/dist/sse/parser.d.ts.map +1 -0
- package/dist/sse/parser.js +139 -0
- package/dist/sse/parser.js.map +1 -0
- package/dist/tls/constants.d.ts +15 -74
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +15 -74
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/ct.d.ts +78 -0
- package/dist/tls/ct.d.ts.map +1 -0
- package/dist/tls/ct.js +175 -0
- package/dist/tls/ct.js.map +1 -0
- package/dist/tls/early-data.d.ts +45 -0
- package/dist/tls/early-data.d.ts.map +1 -0
- package/dist/tls/early-data.js +46 -0
- package/dist/tls/early-data.js.map +1 -0
- package/dist/tls/ech.d.ts +130 -0
- package/dist/tls/ech.d.ts.map +1 -0
- package/dist/tls/ech.js +353 -0
- package/dist/tls/ech.js.map +1 -0
- package/dist/tls/keylog.d.ts +34 -0
- package/dist/tls/keylog.d.ts.map +1 -0
- package/dist/tls/keylog.js +64 -0
- package/dist/tls/keylog.js.map +1 -0
- package/dist/tls/node-engine.d.ts +15 -14
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +54 -14
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/ocsp.d.ts +55 -0
- package/dist/tls/ocsp.d.ts.map +1 -0
- package/dist/tls/ocsp.js +131 -0
- package/dist/tls/ocsp.js.map +1 -0
- package/dist/tls/pin-verification.d.ts +10 -0
- package/dist/tls/pin-verification.d.ts.map +1 -0
- package/dist/tls/pin-verification.js +28 -0
- package/dist/tls/pin-verification.js.map +1 -0
- package/dist/tls/session-cache.d.ts +58 -0
- package/dist/tls/session-cache.d.ts.map +1 -0
- package/dist/tls/session-cache.js +76 -0
- package/dist/tls/session-cache.js.map +1 -0
- package/dist/tls/stealth/client-hello.d.ts +34 -32
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +116 -11
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +5 -15
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +163 -47
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +23 -32
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +112 -27
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +59 -86
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +46 -58
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +52 -75
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +47 -63
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/stealth/tls12-handshake.d.ts +30 -0
- package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -0
- package/dist/tls/stealth/tls12-handshake.js +470 -0
- package/dist/tls/stealth/tls12-handshake.js.map +1 -0
- package/dist/tls/types.d.ts +46 -48
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/utils/buffer-reader.d.ts +26 -81
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js +26 -81
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts +30 -66
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +30 -66
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/compression.d.ts +18 -0
- package/dist/utils/compression.d.ts.map +1 -0
- package/dist/utils/compression.js +34 -0
- package/dist/utils/compression.js.map +1 -0
- package/dist/utils/dictionary-transport.d.ts +97 -0
- package/dist/utils/dictionary-transport.d.ts.map +1 -0
- package/dist/utils/dictionary-transport.js +171 -0
- package/dist/utils/dictionary-transport.js.map +1 -0
- package/dist/utils/encoding.d.ts +12 -28
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +77 -40
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/happy-eyeballs.d.ts +20 -7
- package/dist/utils/happy-eyeballs.d.ts.map +1 -1
- package/dist/utils/happy-eyeballs.js +57 -25
- package/dist/utils/happy-eyeballs.js.map +1 -1
- package/dist/utils/logger.d.ts +54 -81
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +92 -64
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/tcp-fast-open.d.ts +30 -0
- package/dist/utils/tcp-fast-open.d.ts.map +1 -0
- package/dist/utils/tcp-fast-open.js +36 -0
- package/dist/utils/tcp-fast-open.js.map +1 -0
- package/dist/utils/url.d.ts +18 -25
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +18 -25
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +35 -52
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +92 -37
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +27 -42
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +25 -37
- package/dist/ws/frame.js.map +1 -1
- package/dist/ws/permessage-deflate.d.ts +53 -0
- package/dist/ws/permessage-deflate.d.ts.map +1 -0
- package/dist/ws/permessage-deflate.js +140 -0
- package/dist/ws/permessage-deflate.js.map +1 -0
- package/package.json +62 -62
package/dist/http/h2/frames.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP/2 frame type identifiers as defined in RFC 7540 §11.2.
|
|
3
|
-
*
|
|
4
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-11.2}
|
|
5
|
-
*/
|
|
1
|
+
/** HTTP/2 frame type identifiers. */
|
|
6
2
|
export declare const FrameType: {
|
|
7
3
|
readonly DATA: 0;
|
|
8
4
|
readonly HEADERS: 1;
|
|
@@ -15,11 +11,7 @@ export declare const FrameType: {
|
|
|
15
11
|
readonly WINDOW_UPDATE: 8;
|
|
16
12
|
readonly CONTINUATION: 9;
|
|
17
13
|
};
|
|
18
|
-
/**
|
|
19
|
-
* HTTP/2 frame flag bit masks as defined in RFC 7540. Flags are frame-type
|
|
20
|
-
* specific; e.g. `END_STREAM` is valid on DATA and HEADERS frames while `ACK`
|
|
21
|
-
* shares the same value `0x1` but applies to SETTINGS and PING frames.
|
|
22
|
-
*/
|
|
14
|
+
/** HTTP/2 frame flag bitmasks. */
|
|
23
15
|
export declare const Flags: {
|
|
24
16
|
readonly END_STREAM: 1;
|
|
25
17
|
readonly ACK: 1;
|
|
@@ -27,11 +19,7 @@ export declare const Flags: {
|
|
|
27
19
|
readonly PADDED: 8;
|
|
28
20
|
readonly PRIORITY: 32;
|
|
29
21
|
};
|
|
30
|
-
/**
|
|
31
|
-
* HTTP/2 SETTINGS parameter identifiers as defined in RFC 7540 §6.5.2.
|
|
32
|
-
*
|
|
33
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-6.5.2}
|
|
34
|
-
*/
|
|
22
|
+
/** HTTP/2 SETTINGS parameter identifiers. */
|
|
35
23
|
export declare const SettingsParam: {
|
|
36
24
|
readonly HEADER_TABLE_SIZE: 1;
|
|
37
25
|
readonly ENABLE_PUSH: 2;
|
|
@@ -40,127 +28,108 @@ export declare const SettingsParam: {
|
|
|
40
28
|
readonly MAX_FRAME_SIZE: 5;
|
|
41
29
|
readonly MAX_HEADER_LIST_SIZE: 6;
|
|
42
30
|
};
|
|
43
|
-
/**
|
|
44
|
-
* Represents a decoded HTTP/2 frame.
|
|
45
|
-
*
|
|
46
|
-
* @typedef {Object} H2Frame
|
|
47
|
-
* @property {number} type - Frame type identifier (see `FrameType`).
|
|
48
|
-
* @property {number} flags - Frame flags bitmask (see `Flags`).
|
|
49
|
-
* @property {number} streamId - Associated stream identifier (0 for connection-level frames).
|
|
50
|
-
* @property {Buffer} payload - Raw frame payload (excludes the 9-byte header).
|
|
51
|
-
*/
|
|
31
|
+
/** Parsed HTTP/2 frame. */
|
|
52
32
|
export interface H2Frame {
|
|
33
|
+
/** Frame type code. */
|
|
53
34
|
type: number;
|
|
35
|
+
/** Frame flags bitmask. */
|
|
54
36
|
flags: number;
|
|
37
|
+
/** Stream identifier. */
|
|
55
38
|
streamId: number;
|
|
39
|
+
/** Frame payload data. */
|
|
56
40
|
payload: Buffer;
|
|
57
41
|
}
|
|
58
42
|
/**
|
|
59
|
-
*
|
|
60
|
-
* Returns `null` if insufficient bytes are available for a complete frame.
|
|
43
|
+
* Read a single HTTP/2 frame from a buffer.
|
|
61
44
|
*
|
|
62
|
-
* @param {Buffer} data
|
|
63
|
-
* @param {number} offset
|
|
64
|
-
* @param {number} [maxFrameSize
|
|
65
|
-
*
|
|
66
|
-
* Callers should pass the peer's `SETTINGS_MAX_FRAME_SIZE` value here.
|
|
67
|
-
* @returns {{ frame: H2Frame; bytesRead: number } | null} Parsed frame and total bytes consumed,
|
|
68
|
-
* or `null` if more data is required.
|
|
69
|
-
* @throws {Error} If the frame's length field exceeds `maxFrameSize`.
|
|
45
|
+
* @param {Buffer} data - Buffer to read from.
|
|
46
|
+
* @param {number} offset - Byte offset to start reading.
|
|
47
|
+
* @param {number} [maxFrameSize] - Maximum allowed frame payload size.
|
|
48
|
+
* @returns {{ frame: H2Frame; bytesRead: number } | null} Parsed frame and bytes consumed, or `null` if insufficient data.
|
|
70
49
|
*/
|
|
71
50
|
export declare function readFrame(data: Buffer, offset: number, maxFrameSize?: number): {
|
|
72
51
|
frame: H2Frame;
|
|
73
52
|
bytesRead: number;
|
|
74
53
|
} | null;
|
|
75
54
|
/**
|
|
76
|
-
*
|
|
55
|
+
* Serialize an HTTP/2 frame to a wire-format buffer.
|
|
77
56
|
*
|
|
78
57
|
* @param {H2Frame} frame - Frame to serialize.
|
|
79
|
-
* @returns {Buffer}
|
|
58
|
+
* @returns {Buffer} Wire-format buffer.
|
|
80
59
|
*/
|
|
81
60
|
export declare function writeFrame(frame: H2Frame): Buffer;
|
|
82
61
|
/**
|
|
83
|
-
*
|
|
84
|
-
* When `ack` is `true` the frame acknowledges a peer SETTINGS frame and the
|
|
85
|
-
* `settings` array is ignored.
|
|
62
|
+
* Build an HTTP/2 SETTINGS frame.
|
|
86
63
|
*
|
|
87
|
-
* @param {Array<{id: number; value: number}>} settings -
|
|
88
|
-
* @param {boolean} [ack
|
|
89
|
-
* @returns {Buffer}
|
|
64
|
+
* @param {Array<{ id: number; value: number }>} settings - Setting id/value pairs.
|
|
65
|
+
* @param {boolean} [ack] - Whether this is a SETTINGS acknowledgment.
|
|
66
|
+
* @returns {Buffer} Serialized SETTINGS frame.
|
|
90
67
|
*/
|
|
91
68
|
export declare function buildSettingsFrame(settings: Array<{
|
|
92
69
|
id: number;
|
|
93
70
|
value: number;
|
|
94
71
|
}>, ack?: boolean): Buffer;
|
|
95
72
|
/**
|
|
96
|
-
*
|
|
73
|
+
* Build an HTTP/2 WINDOW_UPDATE frame.
|
|
97
74
|
*
|
|
98
|
-
* @param {number} streamId
|
|
99
|
-
* @param {number} increment -
|
|
100
|
-
* @returns {Buffer}
|
|
75
|
+
* @param {number} streamId - Target stream (0 for connection-level).
|
|
76
|
+
* @param {number} increment - Window size increment.
|
|
77
|
+
* @returns {Buffer} Serialized WINDOW_UPDATE frame.
|
|
101
78
|
*/
|
|
102
79
|
export declare function buildWindowUpdateFrame(streamId: number, increment: number): Buffer;
|
|
103
80
|
/**
|
|
104
|
-
*
|
|
81
|
+
* Build an HTTP/2 HEADERS frame.
|
|
105
82
|
*
|
|
106
|
-
* @param {number}
|
|
107
|
-
* @param {Buffer}
|
|
108
|
-
* @param {boolean} endStream
|
|
109
|
-
* @param {boolean} endHeaders
|
|
110
|
-
* @returns {Buffer}
|
|
83
|
+
* @param {number} streamId - Target stream.
|
|
84
|
+
* @param {Buffer} headerBlock - HPACK-encoded header block.
|
|
85
|
+
* @param {boolean} endStream - Whether this completes the stream.
|
|
86
|
+
* @param {boolean} endHeaders - Whether the header block is complete.
|
|
87
|
+
* @returns {Buffer} Serialized HEADERS frame.
|
|
111
88
|
*/
|
|
112
89
|
export declare function buildHeadersFrame(streamId: number, headerBlock: Buffer, endStream: boolean, endHeaders: boolean): Buffer;
|
|
113
90
|
/**
|
|
114
|
-
*
|
|
91
|
+
* Build an HTTP/2 DATA frame.
|
|
115
92
|
*
|
|
116
|
-
* @param {number}
|
|
117
|
-
* @param {Buffer}
|
|
118
|
-
* @param {boolean} endStream - Whether
|
|
119
|
-
* @returns {Buffer}
|
|
93
|
+
* @param {number} streamId - Target stream.
|
|
94
|
+
* @param {Buffer} data - Payload data.
|
|
95
|
+
* @param {boolean} endStream - Whether this completes the stream.
|
|
96
|
+
* @returns {Buffer} Serialized DATA frame.
|
|
120
97
|
*/
|
|
121
98
|
export declare function buildDataFrame(streamId: number, data: Buffer, endStream: boolean): Buffer;
|
|
122
99
|
/**
|
|
123
|
-
*
|
|
124
|
-
* and dependency tree position of a stream.
|
|
100
|
+
* Build an HTTP/2 PRIORITY frame.
|
|
125
101
|
*
|
|
126
|
-
* @param {number}
|
|
127
|
-
* @param {boolean} exclusive - Whether
|
|
128
|
-
* @param {number}
|
|
129
|
-
* @param {number}
|
|
130
|
-
* @returns {Buffer}
|
|
102
|
+
* @param {number} streamId - Target stream.
|
|
103
|
+
* @param {boolean} exclusive - Whether to use exclusive dependency.
|
|
104
|
+
* @param {number} dependsOn - Stream dependency.
|
|
105
|
+
* @param {number} weight - Priority weight (1–256).
|
|
106
|
+
* @returns {Buffer} Serialized PRIORITY frame.
|
|
131
107
|
*/
|
|
132
108
|
export declare function buildPriorityFrame(streamId: number, exclusive: boolean, dependsOn: number, weight: number): Buffer;
|
|
133
109
|
/**
|
|
134
|
-
*
|
|
135
|
-
* gracefully shut down.
|
|
110
|
+
* Build an HTTP/2 GOAWAY frame.
|
|
136
111
|
*
|
|
137
|
-
* @param {number} lastStreamId -
|
|
138
|
-
* @param {number} errorCode
|
|
139
|
-
* @returns {Buffer}
|
|
112
|
+
* @param {number} lastStreamId - Last processed stream identifier.
|
|
113
|
+
* @param {number} errorCode - Error code.
|
|
114
|
+
* @returns {Buffer} Serialized GOAWAY frame.
|
|
140
115
|
*/
|
|
141
116
|
export declare function buildGoawayFrame(lastStreamId: number, errorCode: number): Buffer;
|
|
142
117
|
/**
|
|
143
|
-
*
|
|
118
|
+
* Build an HTTP/2 PING frame.
|
|
144
119
|
*
|
|
145
|
-
* @param {Buffer}
|
|
146
|
-
* @param {boolean} [ack
|
|
147
|
-
* @returns {Buffer}
|
|
120
|
+
* @param {Buffer} data - 8-byte ping payload.
|
|
121
|
+
* @param {boolean} [ack] - Whether this is a PING acknowledgment.
|
|
122
|
+
* @returns {Buffer} Serialized PING frame.
|
|
148
123
|
*/
|
|
149
124
|
export declare function buildPingFrame(data: Buffer, ack?: boolean): Buffer;
|
|
150
125
|
/**
|
|
151
|
-
*
|
|
126
|
+
* Build an HTTP/2 RST_STREAM frame.
|
|
152
127
|
*
|
|
153
|
-
* @param {number} streamId
|
|
154
|
-
* @param {number} errorCode -
|
|
155
|
-
* @returns {Buffer}
|
|
128
|
+
* @param {number} streamId - Stream to reset.
|
|
129
|
+
* @param {number} errorCode - Error code.
|
|
130
|
+
* @returns {Buffer} Serialized RST_STREAM frame.
|
|
156
131
|
*/
|
|
157
132
|
export declare function buildRstStreamFrame(streamId: number, errorCode: number): Buffer;
|
|
158
|
-
/**
|
|
159
|
-
* The HTTP/2 client connection preface as defined in RFC 7540 §3.5.
|
|
160
|
-
* Must be the first bytes sent by a client after the transport connection is
|
|
161
|
-
* established and before any SETTINGS frame.
|
|
162
|
-
*
|
|
163
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-3.5}
|
|
164
|
-
*/
|
|
133
|
+
/** HTTP/2 connection preface sent by the client. */
|
|
165
134
|
export declare const H2_PREFACE: Buffer<ArrayBuffer>;
|
|
166
135
|
//# sourceMappingURL=frames.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../src/http/h2/frames.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../src/http/h2/frames.ts"],"names":[],"mappings":"AAEA,qCAAqC;AACrC,eAAO,MAAM,SAAS;;;;;;;;;;;CAWZ,CAAC;AAEX,kCAAkC;AAClC,eAAO,MAAM,KAAK;;;;;;CAMR,CAAC;AAEX,6CAA6C;AAC7C,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX,2BAA2B;AAC3B,MAAM,WAAW,OAAO;IACtB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,MAAgC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBpJ;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUjD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,GAAG,UAAQ,GAAG,MAAM,CAoBtG;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAUxH;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CASzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYlH;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAUhF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAQ,GAAG,MAAM,CAShE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAS/E;AAED,oDAAoD;AACpD,eAAO,MAAM,UAAU,qBAA2D,CAAC"}
|
package/dist/http/h2/frames.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { BufferWriter } from "../../utils/buffer-writer.js";
|
|
2
|
-
/**
|
|
3
|
-
* HTTP/2 frame type identifiers as defined in RFC 7540 §11.2.
|
|
4
|
-
*
|
|
5
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-11.2}
|
|
6
|
-
*/
|
|
2
|
+
/** HTTP/2 frame type identifiers. */
|
|
7
3
|
export const FrameType = {
|
|
8
4
|
DATA: 0x0,
|
|
9
5
|
HEADERS: 0x1,
|
|
@@ -16,11 +12,7 @@ export const FrameType = {
|
|
|
16
12
|
WINDOW_UPDATE: 0x8,
|
|
17
13
|
CONTINUATION: 0x9,
|
|
18
14
|
};
|
|
19
|
-
/**
|
|
20
|
-
* HTTP/2 frame flag bit masks as defined in RFC 7540. Flags are frame-type
|
|
21
|
-
* specific; e.g. `END_STREAM` is valid on DATA and HEADERS frames while `ACK`
|
|
22
|
-
* shares the same value `0x1` but applies to SETTINGS and PING frames.
|
|
23
|
-
*/
|
|
15
|
+
/** HTTP/2 frame flag bitmasks. */
|
|
24
16
|
export const Flags = {
|
|
25
17
|
END_STREAM: 0x1,
|
|
26
18
|
ACK: 0x1,
|
|
@@ -28,11 +20,7 @@ export const Flags = {
|
|
|
28
20
|
PADDED: 0x8,
|
|
29
21
|
PRIORITY: 0x20,
|
|
30
22
|
};
|
|
31
|
-
/**
|
|
32
|
-
* HTTP/2 SETTINGS parameter identifiers as defined in RFC 7540 §6.5.2.
|
|
33
|
-
*
|
|
34
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-6.5.2}
|
|
35
|
-
*/
|
|
23
|
+
/** HTTP/2 SETTINGS parameter identifiers. */
|
|
36
24
|
export const SettingsParam = {
|
|
37
25
|
HEADER_TABLE_SIZE: 0x1,
|
|
38
26
|
ENABLE_PUSH: 0x2,
|
|
@@ -41,20 +29,14 @@ export const SettingsParam = {
|
|
|
41
29
|
MAX_FRAME_SIZE: 0x5,
|
|
42
30
|
MAX_HEADER_LIST_SIZE: 0x6,
|
|
43
31
|
};
|
|
44
|
-
/** RFC 7540 §4.2: Maximum value for SETTINGS_MAX_FRAME_SIZE (2^24 - 1). */
|
|
45
32
|
const PROTOCOL_MAX_FRAME_SIZE = 16_777_215;
|
|
46
33
|
/**
|
|
47
|
-
*
|
|
48
|
-
* Returns `null` if insufficient bytes are available for a complete frame.
|
|
34
|
+
* Read a single HTTP/2 frame from a buffer.
|
|
49
35
|
*
|
|
50
|
-
* @param {Buffer} data
|
|
51
|
-
* @param {number} offset
|
|
52
|
-
* @param {number} [maxFrameSize
|
|
53
|
-
*
|
|
54
|
-
* Callers should pass the peer's `SETTINGS_MAX_FRAME_SIZE` value here.
|
|
55
|
-
* @returns {{ frame: H2Frame; bytesRead: number } | null} Parsed frame and total bytes consumed,
|
|
56
|
-
* or `null` if more data is required.
|
|
57
|
-
* @throws {Error} If the frame's length field exceeds `maxFrameSize`.
|
|
36
|
+
* @param {Buffer} data - Buffer to read from.
|
|
37
|
+
* @param {number} offset - Byte offset to start reading.
|
|
38
|
+
* @param {number} [maxFrameSize] - Maximum allowed frame payload size.
|
|
39
|
+
* @returns {{ frame: H2Frame; bytesRead: number } | null} Parsed frame and bytes consumed, or `null` if insufficient data.
|
|
58
40
|
*/
|
|
59
41
|
export function readFrame(data, offset, maxFrameSize = PROTOCOL_MAX_FRAME_SIZE) {
|
|
60
42
|
if (data.length - offset < 9)
|
|
@@ -75,10 +57,10 @@ export function readFrame(data, offset, maxFrameSize = PROTOCOL_MAX_FRAME_SIZE)
|
|
|
75
57
|
};
|
|
76
58
|
}
|
|
77
59
|
/**
|
|
78
|
-
*
|
|
60
|
+
* Serialize an HTTP/2 frame to a wire-format buffer.
|
|
79
61
|
*
|
|
80
62
|
* @param {H2Frame} frame - Frame to serialize.
|
|
81
|
-
* @returns {Buffer}
|
|
63
|
+
* @returns {Buffer} Wire-format buffer.
|
|
82
64
|
*/
|
|
83
65
|
export function writeFrame(frame) {
|
|
84
66
|
const w = new BufferWriter(9 + frame.payload.length);
|
|
@@ -92,13 +74,11 @@ export function writeFrame(frame) {
|
|
|
92
74
|
return w.toBuffer();
|
|
93
75
|
}
|
|
94
76
|
/**
|
|
95
|
-
*
|
|
96
|
-
* When `ack` is `true` the frame acknowledges a peer SETTINGS frame and the
|
|
97
|
-
* `settings` array is ignored.
|
|
77
|
+
* Build an HTTP/2 SETTINGS frame.
|
|
98
78
|
*
|
|
99
|
-
* @param {Array<{id: number; value: number}>} settings -
|
|
100
|
-
* @param {boolean} [ack
|
|
101
|
-
* @returns {Buffer}
|
|
79
|
+
* @param {Array<{ id: number; value: number }>} settings - Setting id/value pairs.
|
|
80
|
+
* @param {boolean} [ack] - Whether this is a SETTINGS acknowledgment.
|
|
81
|
+
* @returns {Buffer} Serialized SETTINGS frame.
|
|
102
82
|
*/
|
|
103
83
|
export function buildSettingsFrame(settings, ack = false) {
|
|
104
84
|
if (ack) {
|
|
@@ -122,11 +102,11 @@ export function buildSettingsFrame(settings, ack = false) {
|
|
|
122
102
|
});
|
|
123
103
|
}
|
|
124
104
|
/**
|
|
125
|
-
*
|
|
105
|
+
* Build an HTTP/2 WINDOW_UPDATE frame.
|
|
126
106
|
*
|
|
127
|
-
* @param {number} streamId
|
|
128
|
-
* @param {number} increment -
|
|
129
|
-
* @returns {Buffer}
|
|
107
|
+
* @param {number} streamId - Target stream (0 for connection-level).
|
|
108
|
+
* @param {number} increment - Window size increment.
|
|
109
|
+
* @returns {Buffer} Serialized WINDOW_UPDATE frame.
|
|
130
110
|
*/
|
|
131
111
|
export function buildWindowUpdateFrame(streamId, increment) {
|
|
132
112
|
const w = new BufferWriter(4);
|
|
@@ -139,13 +119,13 @@ export function buildWindowUpdateFrame(streamId, increment) {
|
|
|
139
119
|
});
|
|
140
120
|
}
|
|
141
121
|
/**
|
|
142
|
-
*
|
|
122
|
+
* Build an HTTP/2 HEADERS frame.
|
|
143
123
|
*
|
|
144
|
-
* @param {number}
|
|
145
|
-
* @param {Buffer}
|
|
146
|
-
* @param {boolean} endStream
|
|
147
|
-
* @param {boolean} endHeaders
|
|
148
|
-
* @returns {Buffer}
|
|
124
|
+
* @param {number} streamId - Target stream.
|
|
125
|
+
* @param {Buffer} headerBlock - HPACK-encoded header block.
|
|
126
|
+
* @param {boolean} endStream - Whether this completes the stream.
|
|
127
|
+
* @param {boolean} endHeaders - Whether the header block is complete.
|
|
128
|
+
* @returns {Buffer} Serialized HEADERS frame.
|
|
149
129
|
*/
|
|
150
130
|
export function buildHeadersFrame(streamId, headerBlock, endStream, endHeaders) {
|
|
151
131
|
let flags = 0;
|
|
@@ -161,12 +141,12 @@ export function buildHeadersFrame(streamId, headerBlock, endStream, endHeaders)
|
|
|
161
141
|
});
|
|
162
142
|
}
|
|
163
143
|
/**
|
|
164
|
-
*
|
|
144
|
+
* Build an HTTP/2 DATA frame.
|
|
165
145
|
*
|
|
166
|
-
* @param {number}
|
|
167
|
-
* @param {Buffer}
|
|
168
|
-
* @param {boolean} endStream - Whether
|
|
169
|
-
* @returns {Buffer}
|
|
146
|
+
* @param {number} streamId - Target stream.
|
|
147
|
+
* @param {Buffer} data - Payload data.
|
|
148
|
+
* @param {boolean} endStream - Whether this completes the stream.
|
|
149
|
+
* @returns {Buffer} Serialized DATA frame.
|
|
170
150
|
*/
|
|
171
151
|
export function buildDataFrame(streamId, data, endStream) {
|
|
172
152
|
let flags = 0;
|
|
@@ -180,14 +160,13 @@ export function buildDataFrame(streamId, data, endStream) {
|
|
|
180
160
|
});
|
|
181
161
|
}
|
|
182
162
|
/**
|
|
183
|
-
*
|
|
184
|
-
* and dependency tree position of a stream.
|
|
163
|
+
* Build an HTTP/2 PRIORITY frame.
|
|
185
164
|
*
|
|
186
|
-
* @param {number}
|
|
187
|
-
* @param {boolean} exclusive - Whether
|
|
188
|
-
* @param {number}
|
|
189
|
-
* @param {number}
|
|
190
|
-
* @returns {Buffer}
|
|
165
|
+
* @param {number} streamId - Target stream.
|
|
166
|
+
* @param {boolean} exclusive - Whether to use exclusive dependency.
|
|
167
|
+
* @param {number} dependsOn - Stream dependency.
|
|
168
|
+
* @param {number} weight - Priority weight (1–256).
|
|
169
|
+
* @returns {Buffer} Serialized PRIORITY frame.
|
|
191
170
|
*/
|
|
192
171
|
export function buildPriorityFrame(streamId, exclusive, dependsOn, weight) {
|
|
193
172
|
const w = new BufferWriter(5);
|
|
@@ -204,12 +183,11 @@ export function buildPriorityFrame(streamId, exclusive, dependsOn, weight) {
|
|
|
204
183
|
});
|
|
205
184
|
}
|
|
206
185
|
/**
|
|
207
|
-
*
|
|
208
|
-
* gracefully shut down.
|
|
186
|
+
* Build an HTTP/2 GOAWAY frame.
|
|
209
187
|
*
|
|
210
|
-
* @param {number} lastStreamId -
|
|
211
|
-
* @param {number} errorCode
|
|
212
|
-
* @returns {Buffer}
|
|
188
|
+
* @param {number} lastStreamId - Last processed stream identifier.
|
|
189
|
+
* @param {number} errorCode - Error code.
|
|
190
|
+
* @returns {Buffer} Serialized GOAWAY frame.
|
|
213
191
|
*/
|
|
214
192
|
export function buildGoawayFrame(lastStreamId, errorCode) {
|
|
215
193
|
const w = new BufferWriter(8);
|
|
@@ -223,11 +201,11 @@ export function buildGoawayFrame(lastStreamId, errorCode) {
|
|
|
223
201
|
});
|
|
224
202
|
}
|
|
225
203
|
/**
|
|
226
|
-
*
|
|
204
|
+
* Build an HTTP/2 PING frame.
|
|
227
205
|
*
|
|
228
|
-
* @param {Buffer}
|
|
229
|
-
* @param {boolean} [ack
|
|
230
|
-
* @returns {Buffer}
|
|
206
|
+
* @param {Buffer} data - 8-byte ping payload.
|
|
207
|
+
* @param {boolean} [ack] - Whether this is a PING acknowledgment.
|
|
208
|
+
* @returns {Buffer} Serialized PING frame.
|
|
231
209
|
*/
|
|
232
210
|
export function buildPingFrame(data, ack = false) {
|
|
233
211
|
const payload = Buffer.alloc(8);
|
|
@@ -240,11 +218,11 @@ export function buildPingFrame(data, ack = false) {
|
|
|
240
218
|
});
|
|
241
219
|
}
|
|
242
220
|
/**
|
|
243
|
-
*
|
|
221
|
+
* Build an HTTP/2 RST_STREAM frame.
|
|
244
222
|
*
|
|
245
|
-
* @param {number} streamId
|
|
246
|
-
* @param {number} errorCode -
|
|
247
|
-
* @returns {Buffer}
|
|
223
|
+
* @param {number} streamId - Stream to reset.
|
|
224
|
+
* @param {number} errorCode - Error code.
|
|
225
|
+
* @returns {Buffer} Serialized RST_STREAM frame.
|
|
248
226
|
*/
|
|
249
227
|
export function buildRstStreamFrame(streamId, errorCode) {
|
|
250
228
|
const w = new BufferWriter(4);
|
|
@@ -256,12 +234,6 @@ export function buildRstStreamFrame(streamId, errorCode) {
|
|
|
256
234
|
payload: w.toBuffer(),
|
|
257
235
|
});
|
|
258
236
|
}
|
|
259
|
-
/**
|
|
260
|
-
* The HTTP/2 client connection preface as defined in RFC 7540 §3.5.
|
|
261
|
-
* Must be the first bytes sent by a client after the transport connection is
|
|
262
|
-
* established and before any SETTINGS frame.
|
|
263
|
-
*
|
|
264
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-3.5}
|
|
265
|
-
*/
|
|
237
|
+
/** HTTP/2 connection preface sent by the client. */
|
|
266
238
|
export const H2_PREFACE = Buffer.from("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n", "ascii");
|
|
267
239
|
//# sourceMappingURL=frames.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../src/http/h2/frames.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../src/http/h2/frames.ts"],"names":[],"mappings":"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"}
|
package/dist/http/h2/hpack.d.ts
CHANGED
|
@@ -1,67 +1,48 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HPACK header compression encoder (RFC 7541). Maintains a dynamic header
|
|
3
|
-
* table and encodes header lists into compact HPACK binary format using
|
|
4
|
-
* Huffman coding and indexed representations.
|
|
5
|
-
*
|
|
6
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7541}
|
|
7
|
-
*/
|
|
1
|
+
/** HPACK header compression encoder for HTTP/2. */
|
|
8
2
|
export declare class HPACKEncoder {
|
|
9
3
|
private dynamicTable;
|
|
10
4
|
private staticIndex;
|
|
11
5
|
private staticFullIndex;
|
|
12
6
|
/**
|
|
13
|
-
*
|
|
7
|
+
* Create a new HPACK encoder.
|
|
14
8
|
*
|
|
15
|
-
* @param {number} [tableSize
|
|
9
|
+
* @param {number} [tableSize] - Maximum dynamic table size in bytes.
|
|
16
10
|
*/
|
|
17
11
|
constructor(tableSize?: number);
|
|
18
12
|
/**
|
|
19
|
-
*
|
|
20
|
-
* placed in an HTTP/2 HEADERS or PUSH_PROMISE frame payload.
|
|
13
|
+
* Encode headers into an HPACK header block.
|
|
21
14
|
*
|
|
22
|
-
* @param {Array<[string, string]>} headers - Header name
|
|
23
|
-
* @returns {Buffer}
|
|
15
|
+
* @param {Array<[string, string]>} headers - Header name/value pairs to encode.
|
|
16
|
+
* @returns {Buffer} Compressed header block buffer.
|
|
24
17
|
*/
|
|
25
18
|
encode(headers: Array<[string, string]>): Buffer;
|
|
26
19
|
/**
|
|
27
|
-
*
|
|
28
|
-
* `SETTINGS_HEADER_TABLE_SIZE` value is received from the remote peer so
|
|
29
|
-
* that subsequent {@link encode} calls respect the new limit.
|
|
20
|
+
* Update the dynamic table maximum size.
|
|
30
21
|
*
|
|
31
|
-
* @param {number} newSize - New maximum
|
|
22
|
+
* @param {number} newSize - New maximum size in bytes.
|
|
32
23
|
*/
|
|
33
24
|
updateTableSize(newSize: number): void;
|
|
34
25
|
}
|
|
35
|
-
/**
|
|
36
|
-
* HPACK header decompression decoder (RFC 7541). Maintains a synchronized
|
|
37
|
-
* dynamic header table and decodes HPACK binary blocks received in
|
|
38
|
-
* HTTP/2 HEADERS and PUSH_PROMISE frames.
|
|
39
|
-
*
|
|
40
|
-
* @see {@link https://datatracker.ietf.org/doc/html/rfc7541}
|
|
41
|
-
*/
|
|
26
|
+
/** HPACK header compression decoder for HTTP/2. */
|
|
42
27
|
export declare class HPACKDecoder {
|
|
43
28
|
private dynamicTable;
|
|
44
29
|
/**
|
|
45
|
-
*
|
|
30
|
+
* Create a new HPACK decoder.
|
|
46
31
|
*
|
|
47
|
-
* @param {number} [tableSize
|
|
32
|
+
* @param {number} [tableSize] - Maximum dynamic table size in bytes.
|
|
48
33
|
*/
|
|
49
34
|
constructor(tableSize?: number);
|
|
50
35
|
/**
|
|
51
|
-
*
|
|
52
|
-
* SETTINGS_HEADER_TABLE_SIZE frame is received from the server.
|
|
36
|
+
* Update the dynamic table maximum size.
|
|
53
37
|
*
|
|
54
|
-
* @param {number} maxSize - New maximum
|
|
38
|
+
* @param {number} maxSize - New maximum size in bytes.
|
|
55
39
|
*/
|
|
56
40
|
setMaxTableSize(maxSize: number): void;
|
|
57
41
|
/**
|
|
58
|
-
*
|
|
59
|
-
* name-value pairs. Updates the internal dynamic table as required by the
|
|
60
|
-
* HPACK state machine.
|
|
42
|
+
* Decode an HPACK header block into header pairs.
|
|
61
43
|
*
|
|
62
|
-
* @param {Buffer} data - HPACK
|
|
63
|
-
* @returns {Array<[string, string]>} Decoded header name
|
|
64
|
-
* @throws {Error} If the encoded data references an invalid table index.
|
|
44
|
+
* @param {Buffer} data - HPACK encoded data.
|
|
45
|
+
* @returns {Array<[string, string]>} Decoded header name/value pairs.
|
|
65
46
|
*/
|
|
66
47
|
decode(data: Buffer): Array<[string, string]>;
|
|
67
48
|
private getEntry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hpack.d.ts","sourceRoot":"","sources":["../../../src/http/h2/hpack.ts"],"names":[],"mappings":"AAqKA
|
|
1
|
+
{"version":3,"file":"hpack.d.ts","sourceRoot":"","sources":["../../../src/http/h2/hpack.ts"],"names":[],"mappings":"AAqKA,mDAAmD;AACnD,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,eAAe,CAAsB;IAE7C;;;;OAIG;gBACS,SAAS,GAAE,MAAa;IAiBpC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM;IA6BhD;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGvC;AAED,mDAAmD;AACnD,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAe;IAEnC;;;;OAIG;gBACS,SAAS,GAAE,MAAa;IAIpC;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAItC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyD7C,OAAO,CAAC,QAAQ;CAcjB"}
|