nlcurl 0.3.1 → 0.5.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 +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +84 -90
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.js +25 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +2 -2
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +55 -55
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +1 -1
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +20 -22
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +1 -1
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +20 -22
- package/dist/cookies/parser.js.map +1 -1
- package/dist/core/client.d.ts +3 -3
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +9 -8
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +64 -21
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +112 -36
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +10 -5
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +2 -2
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +6 -8
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +7 -6
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +58 -43
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +96 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +246 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/fingerprints/akamai.d.ts +1 -1
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +3 -7
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +7 -7
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +12 -18
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +4 -4
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +1 -1
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +12 -12
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +59 -100
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +1 -1
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +26 -26
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +35 -85
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +1 -1
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +35 -68
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +1 -1
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +24 -57
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +1 -1
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/http/h1/client.d.ts +4 -4
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +31 -31
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +1 -1
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +21 -20
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +1 -1
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +29 -33
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +5 -4
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +88 -76
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +7 -3
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +16 -12
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +331 -130
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +4 -4
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +45 -48
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +5 -5
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +5 -5
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +16 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +2 -2
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +2 -0
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry.d.ts +6 -4
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +9 -7
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +1 -1
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +14 -14
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +1 -1
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +57 -28
- package/dist/proxy/socks.js.map +1 -1
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +1 -4
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts +2 -2
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +58 -58
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +1 -1
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +8 -14
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +2 -2
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +23 -26
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +3 -3
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +62 -74
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +2 -2
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +20 -20
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +1 -1
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +13 -13
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/types.d.ts +4 -4
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +6 -0
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/encoding.d.ts +1 -1
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +23 -25
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/happy-eyeballs.d.ts +26 -0
- package/dist/utils/happy-eyeballs.d.ts.map +1 -0
- package/dist/utils/happy-eyeballs.js +201 -0
- package/dist/utils/happy-eyeballs.js.map +1 -0
- package/dist/utils/logger.d.ts +48 -7
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +61 -13
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +2 -2
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +2 -2
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +76 -71
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +8 -8
- package/dist/ws/frame.js.map +1 -1
- package/package.json +61 -57
package/dist/http/h2/frames.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BufferWriter } from
|
|
1
|
+
import { BufferWriter } from "../../utils/buffer-writer.js";
|
|
2
2
|
/**
|
|
3
3
|
* HTTP/2 frame type identifiers as defined in RFC 7540 §11.2.
|
|
4
4
|
*
|
|
@@ -41,27 +41,31 @@ export const SettingsParam = {
|
|
|
41
41
|
MAX_FRAME_SIZE: 0x5,
|
|
42
42
|
MAX_HEADER_LIST_SIZE: 0x6,
|
|
43
43
|
};
|
|
44
|
+
/** RFC 7540 §4.2: Maximum value for SETTINGS_MAX_FRAME_SIZE (2^24 - 1). */
|
|
45
|
+
const PROTOCOL_MAX_FRAME_SIZE = 16_777_215;
|
|
44
46
|
/**
|
|
45
47
|
* Attempts to parse one HTTP/2 frame starting at `offset` in `data`.
|
|
46
48
|
* Returns `null` if insufficient bytes are available for a complete frame.
|
|
47
49
|
*
|
|
48
|
-
* @param {Buffer} data
|
|
49
|
-
* @param {number} offset
|
|
50
|
+
* @param {Buffer} data - Input buffer potentially containing one or more frames.
|
|
51
|
+
* @param {number} offset - Byte offset within `data` at which to start parsing.
|
|
52
|
+
* @param {number} [maxFrameSize=16777215] - Maximum permitted payload length.
|
|
53
|
+
* Frames whose length field exceeds this value cause a `FRAME_SIZE_ERROR`.
|
|
54
|
+
* Callers should pass the peer's `SETTINGS_MAX_FRAME_SIZE` value here.
|
|
50
55
|
* @returns {{ frame: H2Frame; bytesRead: number } | null} Parsed frame and total bytes consumed,
|
|
51
56
|
* or `null` if more data is required.
|
|
57
|
+
* @throws {Error} If the frame's length field exceeds `maxFrameSize`.
|
|
52
58
|
*/
|
|
53
|
-
export function readFrame(data, offset) {
|
|
59
|
+
export function readFrame(data, offset, maxFrameSize = PROTOCOL_MAX_FRAME_SIZE) {
|
|
54
60
|
if (data.length - offset < 9)
|
|
55
61
|
return null;
|
|
56
|
-
const length = (data[offset] << 16) |
|
|
57
|
-
|
|
58
|
-
|
|
62
|
+
const length = (data[offset] << 16) | (data[offset + 1] << 8) | data[offset + 2];
|
|
63
|
+
if (length > maxFrameSize) {
|
|
64
|
+
throw new Error(`FRAME_SIZE_ERROR: frame payload length ${length} exceeds limit ${maxFrameSize}`);
|
|
65
|
+
}
|
|
59
66
|
const type = data[offset + 3];
|
|
60
67
|
const flags = data[offset + 4];
|
|
61
|
-
const streamId = ((data[offset + 5] & 0x7f) << 24) |
|
|
62
|
-
(data[offset + 6] << 16) |
|
|
63
|
-
(data[offset + 7] << 8) |
|
|
64
|
-
data[offset + 8];
|
|
68
|
+
const streamId = ((data[offset + 5] & 0x7f) << 24) | (data[offset + 6] << 16) | (data[offset + 7] << 8) | data[offset + 8];
|
|
65
69
|
if (data.length - offset - 9 < length)
|
|
66
70
|
return null;
|
|
67
71
|
const payload = data.subarray(offset + 9, offset + 9 + length);
|
|
@@ -259,5 +263,5 @@ export function buildRstStreamFrame(streamId, errorCode) {
|
|
|
259
263
|
*
|
|
260
264
|
* @see {@link https://datatracker.ietf.org/doc/html/rfc7540#section-3.5}
|
|
261
265
|
*/
|
|
262
|
-
export const H2_PREFACE = Buffer.from(
|
|
266
|
+
export const H2_PREFACE = Buffer.from("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n", "ascii");
|
|
263
267
|
//# 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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hpack.d.ts","sourceRoot":"","sources":["../../../src/http/h2/hpack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hpack.d.ts","sourceRoot":"","sources":["../../../src/http/h2/hpack.ts"],"names":[],"mappings":"AAqKA;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,eAAe,CAAsB;IAE7C;;;;OAIG;gBACS,SAAS,GAAE,MAAa;IAiBpC;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM;IA6BhD;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGvC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAe;IAEnC;;;;OAIG;gBACS,SAAS,GAAE,MAAa;IAIpC;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAyD7C,OAAO,CAAC,QAAQ;CAcjB"}
|
package/dist/http/h2/hpack.js
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
import { BufferWriter } from
|
|
1
|
+
import { BufferWriter } from "../../utils/buffer-writer.js";
|
|
2
2
|
const STATIC_TABLE = [
|
|
3
|
-
[
|
|
4
|
-
[
|
|
5
|
-
[
|
|
6
|
-
[
|
|
7
|
-
[
|
|
8
|
-
[
|
|
9
|
-
[
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
24
|
-
[
|
|
25
|
-
[
|
|
26
|
-
[
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
40
|
-
[
|
|
41
|
-
[
|
|
42
|
-
[
|
|
43
|
-
[
|
|
44
|
-
[
|
|
45
|
-
[
|
|
46
|
-
[
|
|
47
|
-
[
|
|
48
|
-
[
|
|
49
|
-
[
|
|
50
|
-
[
|
|
51
|
-
[
|
|
52
|
-
[
|
|
53
|
-
[
|
|
54
|
-
[
|
|
55
|
-
[
|
|
56
|
-
[
|
|
57
|
-
[
|
|
58
|
-
[
|
|
59
|
-
[
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
[
|
|
63
|
-
[
|
|
64
|
-
[
|
|
3
|
+
["", ""],
|
|
4
|
+
[":authority", ""],
|
|
5
|
+
[":method", "GET"],
|
|
6
|
+
[":method", "POST"],
|
|
7
|
+
[":path", "/"],
|
|
8
|
+
[":path", "/index.html"],
|
|
9
|
+
[":scheme", "http"],
|
|
10
|
+
[":scheme", "https"],
|
|
11
|
+
[":status", "200"],
|
|
12
|
+
[":status", "204"],
|
|
13
|
+
[":status", "206"],
|
|
14
|
+
[":status", "304"],
|
|
15
|
+
[":status", "400"],
|
|
16
|
+
[":status", "404"],
|
|
17
|
+
[":status", "500"],
|
|
18
|
+
["accept-charset", ""],
|
|
19
|
+
["accept-encoding", "gzip, deflate"],
|
|
20
|
+
["accept-language", ""],
|
|
21
|
+
["accept-ranges", ""],
|
|
22
|
+
["accept", ""],
|
|
23
|
+
["access-control-allow-origin", ""],
|
|
24
|
+
["age", ""],
|
|
25
|
+
["allow", ""],
|
|
26
|
+
["authorization", ""],
|
|
27
|
+
["cache-control", ""],
|
|
28
|
+
["content-disposition", ""],
|
|
29
|
+
["content-encoding", ""],
|
|
30
|
+
["content-language", ""],
|
|
31
|
+
["content-length", ""],
|
|
32
|
+
["content-location", ""],
|
|
33
|
+
["content-range", ""],
|
|
34
|
+
["content-type", ""],
|
|
35
|
+
["cookie", ""],
|
|
36
|
+
["date", ""],
|
|
37
|
+
["etag", ""],
|
|
38
|
+
["expect", ""],
|
|
39
|
+
["expires", ""],
|
|
40
|
+
["from", ""],
|
|
41
|
+
["host", ""],
|
|
42
|
+
["if-match", ""],
|
|
43
|
+
["if-modified-since", ""],
|
|
44
|
+
["if-none-match", ""],
|
|
45
|
+
["if-range", ""],
|
|
46
|
+
["if-unmodified-since", ""],
|
|
47
|
+
["last-modified", ""],
|
|
48
|
+
["link", ""],
|
|
49
|
+
["location", ""],
|
|
50
|
+
["max-forwards", ""],
|
|
51
|
+
["proxy-authenticate", ""],
|
|
52
|
+
["proxy-authorization", ""],
|
|
53
|
+
["range", ""],
|
|
54
|
+
["referer", ""],
|
|
55
|
+
["refresh", ""],
|
|
56
|
+
["retry-after", ""],
|
|
57
|
+
["server", ""],
|
|
58
|
+
["set-cookie", ""],
|
|
59
|
+
["strict-transport-security", ""],
|
|
60
|
+
["transfer-encoding", ""],
|
|
61
|
+
["user-agent", ""],
|
|
62
|
+
["vary", ""],
|
|
63
|
+
["via", ""],
|
|
64
|
+
["www-authenticate", ""],
|
|
65
65
|
];
|
|
66
66
|
class DynamicTable {
|
|
67
67
|
entries = [];
|
|
@@ -118,6 +118,12 @@ function decodeInteger(data, offset, prefix) {
|
|
|
118
118
|
let shift = 0;
|
|
119
119
|
let byte;
|
|
120
120
|
do {
|
|
121
|
+
if (offset + bytesRead >= data.length) {
|
|
122
|
+
throw new Error("HPACK: unexpected end of integer encoding");
|
|
123
|
+
}
|
|
124
|
+
if (shift > 28) {
|
|
125
|
+
throw new Error("HPACK: integer overflow in decoding");
|
|
126
|
+
}
|
|
121
127
|
byte = data[offset + bytesRead];
|
|
122
128
|
bytesRead++;
|
|
123
129
|
value += (byte & 0x7f) << shift;
|
|
@@ -127,7 +133,7 @@ function decodeInteger(data, offset, prefix) {
|
|
|
127
133
|
return { value, bytesRead };
|
|
128
134
|
}
|
|
129
135
|
function encodeString(w, str, huffman = false) {
|
|
130
|
-
const buf = Buffer.from(str,
|
|
136
|
+
const buf = Buffer.from(str, "latin1");
|
|
131
137
|
if (huffman) {
|
|
132
138
|
const encoded = huffmanEncode(buf);
|
|
133
139
|
encodeInteger(w, encoded.length, 7, 0x80);
|
|
@@ -142,7 +148,7 @@ function decodeString(data, offset) {
|
|
|
142
148
|
const isHuffman = !!(data[offset] & 0x80);
|
|
143
149
|
const { value: length, bytesRead: intBytes } = decodeInteger(data, offset, 7);
|
|
144
150
|
const raw = data.subarray(offset + intBytes, offset + intBytes + length);
|
|
145
|
-
const str = isHuffman ? huffmanDecode(raw).toString(
|
|
151
|
+
const str = isHuffman ? huffmanDecode(raw).toString("latin1") : raw.toString("latin1");
|
|
146
152
|
return { value: str, bytesRead: intBytes + length };
|
|
147
153
|
}
|
|
148
154
|
/**
|
|
@@ -298,6 +304,9 @@ export class HPACKDecoder {
|
|
|
298
304
|
return headers;
|
|
299
305
|
}
|
|
300
306
|
getEntry(index) {
|
|
307
|
+
if (index === 0) {
|
|
308
|
+
throw new Error("HPACK: invalid index 0");
|
|
309
|
+
}
|
|
301
310
|
if (index < STATIC_TABLE.length) {
|
|
302
311
|
return STATIC_TABLE[index];
|
|
303
312
|
}
|
|
@@ -310,70 +319,262 @@ export class HPACKDecoder {
|
|
|
310
319
|
}
|
|
311
320
|
}
|
|
312
321
|
const HUFFMAN_TABLE = [
|
|
313
|
-
[0x1ff8, 13],
|
|
314
|
-
[
|
|
315
|
-
[
|
|
316
|
-
[
|
|
317
|
-
[
|
|
318
|
-
[
|
|
319
|
-
[
|
|
320
|
-
[
|
|
321
|
-
[
|
|
322
|
-
[
|
|
323
|
-
[
|
|
324
|
-
[
|
|
325
|
-
[
|
|
326
|
-
[
|
|
327
|
-
[
|
|
328
|
-
[
|
|
329
|
-
[
|
|
330
|
-
[
|
|
331
|
-
[
|
|
332
|
-
[
|
|
333
|
-
[
|
|
334
|
-
[
|
|
335
|
-
[
|
|
336
|
-
[
|
|
337
|
-
[
|
|
338
|
-
[
|
|
339
|
-
[
|
|
340
|
-
[
|
|
341
|
-
[
|
|
342
|
-
[
|
|
343
|
-
[
|
|
344
|
-
[
|
|
345
|
-
[
|
|
346
|
-
[
|
|
347
|
-
[
|
|
348
|
-
[
|
|
349
|
-
[
|
|
350
|
-
[
|
|
351
|
-
[
|
|
352
|
-
[
|
|
353
|
-
[
|
|
354
|
-
[
|
|
355
|
-
[
|
|
356
|
-
[
|
|
357
|
-
[
|
|
358
|
-
[
|
|
359
|
-
[
|
|
360
|
-
[
|
|
361
|
-
[
|
|
362
|
-
[
|
|
363
|
-
[
|
|
364
|
-
[
|
|
365
|
-
[
|
|
366
|
-
[
|
|
367
|
-
[
|
|
368
|
-
[
|
|
369
|
-
[
|
|
370
|
-
[
|
|
371
|
-
[
|
|
372
|
-
[
|
|
373
|
-
[
|
|
374
|
-
[
|
|
375
|
-
[
|
|
376
|
-
[
|
|
322
|
+
[0x1ff8, 13],
|
|
323
|
+
[0x7fffd8, 23],
|
|
324
|
+
[0xfffffe2, 28],
|
|
325
|
+
[0xfffffe3, 28],
|
|
326
|
+
[0xfffffe4, 28],
|
|
327
|
+
[0xfffffe5, 28],
|
|
328
|
+
[0xfffffe6, 28],
|
|
329
|
+
[0xfffffe7, 28],
|
|
330
|
+
[0xfffffe8, 28],
|
|
331
|
+
[0xffffea, 24],
|
|
332
|
+
[0x3ffffffc, 30],
|
|
333
|
+
[0xfffffe9, 28],
|
|
334
|
+
[0xfffffea, 28],
|
|
335
|
+
[0x3ffffffd, 30],
|
|
336
|
+
[0xfffffeb, 28],
|
|
337
|
+
[0xfffffec, 28],
|
|
338
|
+
[0xfffffed, 28],
|
|
339
|
+
[0xfffffee, 28],
|
|
340
|
+
[0xfffffef, 28],
|
|
341
|
+
[0xffffff0, 28],
|
|
342
|
+
[0xffffff1, 28],
|
|
343
|
+
[0xffffff2, 28],
|
|
344
|
+
[0x3ffffffe, 30],
|
|
345
|
+
[0xffffff3, 28],
|
|
346
|
+
[0xffffff4, 28],
|
|
347
|
+
[0xffffff5, 28],
|
|
348
|
+
[0xffffff6, 28],
|
|
349
|
+
[0xffffff7, 28],
|
|
350
|
+
[0xffffff8, 28],
|
|
351
|
+
[0xffffff9, 28],
|
|
352
|
+
[0xffffffa, 28],
|
|
353
|
+
[0xffffffb, 28],
|
|
354
|
+
[0x14, 6],
|
|
355
|
+
[0x3f8, 10],
|
|
356
|
+
[0x3f9, 10],
|
|
357
|
+
[0xffa, 12],
|
|
358
|
+
[0x1ff9, 13],
|
|
359
|
+
[0x15, 6],
|
|
360
|
+
[0xf8, 8],
|
|
361
|
+
[0x7fa, 11],
|
|
362
|
+
[0x3fa, 10],
|
|
363
|
+
[0x3fb, 10],
|
|
364
|
+
[0xf9, 8],
|
|
365
|
+
[0x7fb, 11],
|
|
366
|
+
[0xfa, 8],
|
|
367
|
+
[0x16, 6],
|
|
368
|
+
[0x17, 6],
|
|
369
|
+
[0x18, 6],
|
|
370
|
+
[0x0, 5],
|
|
371
|
+
[0x1, 5],
|
|
372
|
+
[0x2, 5],
|
|
373
|
+
[0x19, 6],
|
|
374
|
+
[0x1a, 6],
|
|
375
|
+
[0x1b, 6],
|
|
376
|
+
[0x1c, 6],
|
|
377
|
+
[0x1d, 6],
|
|
378
|
+
[0x1e, 6],
|
|
379
|
+
[0x1f, 6],
|
|
380
|
+
[0x5c, 7],
|
|
381
|
+
[0xfb, 8],
|
|
382
|
+
[0x7ffc, 15],
|
|
383
|
+
[0x20, 6],
|
|
384
|
+
[0xffb, 12],
|
|
385
|
+
[0x3fc, 10],
|
|
386
|
+
[0x1ffa, 13],
|
|
387
|
+
[0x21, 6],
|
|
388
|
+
[0x5d, 7],
|
|
389
|
+
[0x5e, 7],
|
|
390
|
+
[0x5f, 7],
|
|
391
|
+
[0x60, 7],
|
|
392
|
+
[0x61, 7],
|
|
393
|
+
[0x62, 7],
|
|
394
|
+
[0x63, 7],
|
|
395
|
+
[0x64, 7],
|
|
396
|
+
[0x65, 7],
|
|
397
|
+
[0x66, 7],
|
|
398
|
+
[0x67, 7],
|
|
399
|
+
[0x68, 7],
|
|
400
|
+
[0x69, 7],
|
|
401
|
+
[0x6a, 7],
|
|
402
|
+
[0x6b, 7],
|
|
403
|
+
[0x6c, 7],
|
|
404
|
+
[0x6d, 7],
|
|
405
|
+
[0x6e, 7],
|
|
406
|
+
[0x6f, 7],
|
|
407
|
+
[0x70, 7],
|
|
408
|
+
[0x71, 7],
|
|
409
|
+
[0x72, 7],
|
|
410
|
+
[0xfc, 8],
|
|
411
|
+
[0x73, 7],
|
|
412
|
+
[0xfd, 8],
|
|
413
|
+
[0x1ffb, 13],
|
|
414
|
+
[0x7fff0, 19],
|
|
415
|
+
[0x1ffc, 13],
|
|
416
|
+
[0x3ffc, 14],
|
|
417
|
+
[0x22, 6],
|
|
418
|
+
[0x7ffd, 15],
|
|
419
|
+
[0x3, 5],
|
|
420
|
+
[0x23, 6],
|
|
421
|
+
[0x4, 5],
|
|
422
|
+
[0x24, 6],
|
|
423
|
+
[0x5, 5],
|
|
424
|
+
[0x25, 6],
|
|
425
|
+
[0x26, 6],
|
|
426
|
+
[0x27, 6],
|
|
427
|
+
[0x6, 5],
|
|
428
|
+
[0x74, 7],
|
|
429
|
+
[0x75, 7],
|
|
430
|
+
[0x28, 6],
|
|
431
|
+
[0x29, 6],
|
|
432
|
+
[0x2a, 6],
|
|
433
|
+
[0x7, 5],
|
|
434
|
+
[0x2b, 6],
|
|
435
|
+
[0x76, 7],
|
|
436
|
+
[0x2c, 6],
|
|
437
|
+
[0x8, 5],
|
|
438
|
+
[0x9, 5],
|
|
439
|
+
[0x2d, 6],
|
|
440
|
+
[0x77, 7],
|
|
441
|
+
[0x78, 7],
|
|
442
|
+
[0x79, 7],
|
|
443
|
+
[0x7a, 7],
|
|
444
|
+
[0x7b, 7],
|
|
445
|
+
[0x7ffe, 15],
|
|
446
|
+
[0x7fc, 11],
|
|
447
|
+
[0x3ffd, 14],
|
|
448
|
+
[0x1ffd, 13],
|
|
449
|
+
[0xffffffc, 28],
|
|
450
|
+
[0xfffe6, 20],
|
|
451
|
+
[0x3fffd2, 22],
|
|
452
|
+
[0xfffe7, 20],
|
|
453
|
+
[0xfffe8, 20],
|
|
454
|
+
[0x3fffd3, 22],
|
|
455
|
+
[0x3fffd4, 22],
|
|
456
|
+
[0x3fffd5, 22],
|
|
457
|
+
[0x7fffd9, 23],
|
|
458
|
+
[0x3fffd6, 22],
|
|
459
|
+
[0x7fffda, 23],
|
|
460
|
+
[0x7fffdb, 23],
|
|
461
|
+
[0x7fffdc, 23],
|
|
462
|
+
[0x7fffdd, 23],
|
|
463
|
+
[0x7fffde, 23],
|
|
464
|
+
[0xffffeb, 24],
|
|
465
|
+
[0x7fffdf, 23],
|
|
466
|
+
[0xffffec, 24],
|
|
467
|
+
[0xffffed, 24],
|
|
468
|
+
[0x3fffd7, 22],
|
|
469
|
+
[0x7fffe0, 23],
|
|
470
|
+
[0xffffee, 24],
|
|
471
|
+
[0x7fffe1, 23],
|
|
472
|
+
[0x7fffe2, 23],
|
|
473
|
+
[0x7fffe3, 23],
|
|
474
|
+
[0x7fffe4, 23],
|
|
475
|
+
[0x1fffdc, 21],
|
|
476
|
+
[0x3fffd8, 22],
|
|
477
|
+
[0x7fffe5, 23],
|
|
478
|
+
[0x3fffd9, 22],
|
|
479
|
+
[0x7fffe6, 23],
|
|
480
|
+
[0x7fffe7, 23],
|
|
481
|
+
[0xffffef, 24],
|
|
482
|
+
[0x3fffda, 22],
|
|
483
|
+
[0x1fffdd, 21],
|
|
484
|
+
[0xfffe9, 20],
|
|
485
|
+
[0x3fffdb, 22],
|
|
486
|
+
[0x3fffdc, 22],
|
|
487
|
+
[0x7fffe8, 23],
|
|
488
|
+
[0x7fffe9, 23],
|
|
489
|
+
[0x1fffde, 21],
|
|
490
|
+
[0x7fffea, 23],
|
|
491
|
+
[0x3fffdd, 22],
|
|
492
|
+
[0x3fffde, 22],
|
|
493
|
+
[0xfffff0, 24],
|
|
494
|
+
[0x1fffdf, 21],
|
|
495
|
+
[0x3fffdf, 22],
|
|
496
|
+
[0x7fffeb, 23],
|
|
497
|
+
[0x7fffec, 23],
|
|
498
|
+
[0x1fffe0, 21],
|
|
499
|
+
[0x1fffe1, 21],
|
|
500
|
+
[0x3fffe0, 22],
|
|
501
|
+
[0x1fffe2, 21],
|
|
502
|
+
[0x7fffed, 23],
|
|
503
|
+
[0x3fffe1, 22],
|
|
504
|
+
[0x7fffee, 23],
|
|
505
|
+
[0x7fffef, 23],
|
|
506
|
+
[0xfffea, 20],
|
|
507
|
+
[0x3fffe2, 22],
|
|
508
|
+
[0x3fffe3, 22],
|
|
509
|
+
[0x3fffe4, 22],
|
|
510
|
+
[0x7ffff0, 23],
|
|
511
|
+
[0x3fffe5, 22],
|
|
512
|
+
[0x3fffe6, 22],
|
|
513
|
+
[0x7ffff1, 23],
|
|
514
|
+
[0x3ffffe0, 26],
|
|
515
|
+
[0x3ffffe1, 26],
|
|
516
|
+
[0xfffeb, 20],
|
|
517
|
+
[0x7fff1, 19],
|
|
518
|
+
[0x3fffe7, 22],
|
|
519
|
+
[0x7ffff2, 23],
|
|
520
|
+
[0x3fffe8, 22],
|
|
521
|
+
[0x1ffffec, 25],
|
|
522
|
+
[0x3ffffe2, 26],
|
|
523
|
+
[0x3ffffe3, 26],
|
|
524
|
+
[0x3ffffe4, 26],
|
|
525
|
+
[0x7ffffde, 27],
|
|
526
|
+
[0x7ffffdf, 27],
|
|
527
|
+
[0x3ffffe5, 26],
|
|
528
|
+
[0xfffff1, 24],
|
|
529
|
+
[0x1ffffed, 25],
|
|
530
|
+
[0x7fff2, 19],
|
|
531
|
+
[0x1fffe3, 21],
|
|
532
|
+
[0x3ffffe6, 26],
|
|
533
|
+
[0x7ffffe0, 27],
|
|
534
|
+
[0x7ffffe1, 27],
|
|
535
|
+
[0x3ffffe7, 26],
|
|
536
|
+
[0x7ffffe2, 27],
|
|
537
|
+
[0xfffff2, 24],
|
|
538
|
+
[0x1fffe4, 21],
|
|
539
|
+
[0x1fffe5, 21],
|
|
540
|
+
[0x3ffffe8, 26],
|
|
541
|
+
[0x3ffffe9, 26],
|
|
542
|
+
[0xffffffd, 28],
|
|
543
|
+
[0x7ffffe3, 27],
|
|
544
|
+
[0x7ffffe4, 27],
|
|
545
|
+
[0x7ffffe5, 27],
|
|
546
|
+
[0xfffec, 20],
|
|
547
|
+
[0xfffff3, 24],
|
|
548
|
+
[0xfffed, 20],
|
|
549
|
+
[0x1fffe6, 21],
|
|
550
|
+
[0x3fffe9, 22],
|
|
551
|
+
[0x1fffe7, 21],
|
|
552
|
+
[0x1fffe8, 21],
|
|
553
|
+
[0x7ffff3, 23],
|
|
554
|
+
[0x3fffea, 22],
|
|
555
|
+
[0x3fffeb, 22],
|
|
556
|
+
[0x1ffffee, 25],
|
|
557
|
+
[0x1ffffef, 25],
|
|
558
|
+
[0xfffff4, 24],
|
|
559
|
+
[0xfffff5, 24],
|
|
560
|
+
[0x3ffffea, 26],
|
|
561
|
+
[0x7ffff4, 23],
|
|
562
|
+
[0x3ffffeb, 26],
|
|
563
|
+
[0x7ffffe6, 27],
|
|
564
|
+
[0x3ffffec, 26],
|
|
565
|
+
[0x3ffffed, 26],
|
|
566
|
+
[0x7ffffe7, 27],
|
|
567
|
+
[0x7ffffe8, 27],
|
|
568
|
+
[0x7ffffe9, 27],
|
|
569
|
+
[0x7ffffea, 27],
|
|
570
|
+
[0x7ffffeb, 27],
|
|
571
|
+
[0xffffffe, 28],
|
|
572
|
+
[0x7ffffec, 27],
|
|
573
|
+
[0x7ffffed, 27],
|
|
574
|
+
[0x7ffffee, 27],
|
|
575
|
+
[0x7ffffef, 27],
|
|
576
|
+
[0x7fffff0, 27],
|
|
577
|
+
[0x3ffffee, 26],
|
|
377
578
|
[0x3fffffff, 30],
|
|
378
579
|
];
|
|
379
580
|
function huffmanEncode(input) {
|
|
@@ -422,7 +623,7 @@ function huffmanDecode(input) {
|
|
|
422
623
|
const bit = (input[i] >> j) & 1;
|
|
423
624
|
node = node.children[bit];
|
|
424
625
|
if (!node) {
|
|
425
|
-
throw new Error(
|
|
626
|
+
throw new Error("HPACK: invalid Huffman code");
|
|
426
627
|
}
|
|
427
628
|
if (node.value !== undefined) {
|
|
428
629
|
if (node.value === 256)
|