nlcurl 0.7.0 → 0.9.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 +149 -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 +75 -37
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +217 -85
- package/dist/cache/store.js.map +1 -1
- package/dist/cache/types.d.ts +10 -39
- package/dist/cache/types.d.ts.map +1 -1
- 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 +41 -40
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +65 -42
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +13 -17
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +23 -15
- 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 +61 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +159 -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 +31 -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 +33 -113
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +49 -66
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +45 -59
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +66 -78
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +136 -77
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +58 -43
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +141 -56
- package/dist/core/validation.js.map +1 -1
- package/dist/dns/cache.d.ts +65 -0
- package/dist/dns/cache.d.ts.map +1 -0
- package/dist/dns/cache.js +119 -0
- package/dist/dns/cache.js.map +1 -0
- package/dist/dns/codec.d.ts +29 -19
- package/dist/dns/codec.d.ts.map +1 -1
- package/dist/dns/codec.js +73 -39
- package/dist/dns/codec.js.map +1 -1
- package/dist/dns/doh-resolver.d.ts +17 -31
- package/dist/dns/doh-resolver.d.ts.map +1 -1
- package/dist/dns/doh-resolver.js +47 -48
- package/dist/dns/doh-resolver.js.map +1 -1
- 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 +166 -0
- package/dist/dns/dot-resolver.js.map +1 -0
- package/dist/dns/https-rr.d.ts +19 -30
- package/dist/dns/https-rr.d.ts.map +1 -1
- package/dist/dns/https-rr.js +22 -40
- package/dist/dns/https-rr.js.map +1 -1
- package/dist/dns/types.d.ts +31 -59
- package/dist/dns/types.d.ts.map +1 -1
- package/dist/dns/types.js +3 -14
- package/dist/dns/types.js.map +1 -1
- 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 +81 -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 +19 -21
- package/dist/hsts/store.d.ts.map +1 -1
- package/dist/hsts/store.js +20 -28
- package/dist/hsts/store.js.map +1 -1
- package/dist/hsts/types.d.ts +10 -14
- package/dist/hsts/types.d.ts.map +1 -1
- package/dist/http/alt-svc.d.ts +27 -52
- package/dist/http/alt-svc.d.ts.map +1 -1
- package/dist/http/alt-svc.js +17 -67
- package/dist/http/alt-svc.js.map +1 -1
- 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 +14 -23
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +21 -17
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +56 -20
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +23 -59
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +61 -55
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +23 -59
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +107 -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 +20 -36
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +41 -36
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +25 -38
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +17 -38
- 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 +24 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -3
- package/dist/index.js.map +1 -1
- package/dist/middleware/circuit-breaker.d.ts +44 -0
- package/dist/middleware/circuit-breaker.d.ts.map +1 -0
- package/dist/middleware/circuit-breaker.js +96 -0
- package/dist/middleware/circuit-breaker.js.map +1 -0
- 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 +11 -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 +129 -0
- package/dist/proxy/auth.js.map +1 -0
- package/dist/proxy/env-proxy.d.ts +5 -15
- package/dist/proxy/env-proxy.d.ts.map +1 -1
- package/dist/proxy/env-proxy.js +5 -23
- package/dist/proxy/env-proxy.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +12 -19
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +5 -8
- 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 +8 -10
- package/dist/proxy/socks.js.map +1 -1
- package/dist/sse/parser.d.ts +16 -37
- package/dist/sse/parser.d.ts.map +1 -1
- package/dist/sse/parser.js +31 -28
- package/dist/sse/parser.js.map +1 -1
- package/dist/tls/constants.d.ts +21 -72
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +21 -72
- 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 +68 -85
- package/dist/tls/ech.d.ts.map +1 -1
- package/dist/tls/ech.js +54 -102
- package/dist/tls/ech.js.map +1 -1
- 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 +10 -17
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +41 -18
- 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 +5 -4
- package/dist/tls/pin-verification.d.ts.map +1 -1
- package/dist/tls/pin-verification.js +5 -11
- package/dist/tls/pin-verification.js.map +1 -1
- package/dist/tls/session-cache.d.ts +27 -39
- package/dist/tls/session-cache.d.ts.map +1 -1
- package/dist/tls/session-cache.js +20 -24
- package/dist/tls/session-cache.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +26 -45
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +15 -31
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +10 -15
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +98 -18
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +32 -31
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +74 -47
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +81 -86
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +70 -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 +16 -0
- package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -1
- package/dist/tls/stealth/tls12-handshake.js +10 -2
- package/dist/tls/stealth/tls12-handshake.js.map +1 -1
- package/dist/tls/types.d.ts +46 -60
- 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 -30
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +15 -46
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/happy-eyeballs.d.ts +18 -8
- package/dist/utils/happy-eyeballs.d.ts.map +1 -1
- package/dist/utils/happy-eyeballs.js +19 -27
- 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 -53
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +96 -38
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +24 -41
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +26 -33
- package/dist/ws/frame.js.map +1 -1
- package/dist/ws/permessage-deflate.d.ts +23 -28
- package/dist/ws/permessage-deflate.d.ts.map +1 -1
- package/dist/ws/permessage-deflate.js +18 -26
- package/dist/ws/permessage-deflate.js.map +1 -1
- package/package.json +2 -2
- package/dist/http/h3/detection.d.ts +0 -17
- package/dist/http/h3/detection.d.ts.map +0 -1
- package/dist/http/h3/detection.js +0 -59
- package/dist/http/h3/detection.js.map +0 -1
|
@@ -1,84 +1,58 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stateful cursor for reading typed values from a `Buffer` in big-endian byte
|
|
3
|
-
* order. Advances an internal position pointer after every read so callers
|
|
4
|
-
* don't need to track offsets manually.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* const r = new BufferReader(buf);
|
|
8
|
-
* const version = r.readUInt8();
|
|
9
|
-
* const length = r.readUInt16();
|
|
10
|
-
* const payload = r.readBytes(length);
|
|
11
|
-
*/
|
|
1
|
+
/** Sequential big-endian reader over a fixed-size buffer. */
|
|
12
2
|
export class BufferReader {
|
|
13
3
|
_buf;
|
|
14
4
|
_pos;
|
|
15
5
|
/**
|
|
16
|
-
*
|
|
6
|
+
* Create a reader over the given buffer.
|
|
17
7
|
*
|
|
18
|
-
* @param {Buffer} buf
|
|
19
|
-
* @param {number}
|
|
8
|
+
* @param {Buffer} buf - Source buffer.
|
|
9
|
+
* @param {number} offset - Initial read position.
|
|
20
10
|
*/
|
|
21
11
|
constructor(buf, offset = 0) {
|
|
22
12
|
this._buf = buf;
|
|
23
13
|
this._pos = offset;
|
|
24
14
|
}
|
|
25
|
-
/** Current
|
|
15
|
+
/** Current read position within the buffer. */
|
|
26
16
|
get position() {
|
|
27
17
|
return this._pos;
|
|
28
18
|
}
|
|
29
|
-
/** Number of bytes remaining after the current
|
|
19
|
+
/** Number of bytes remaining after the current position. */
|
|
30
20
|
get remaining() {
|
|
31
21
|
return this._buf.length - this._pos;
|
|
32
22
|
}
|
|
33
|
-
/** Total length
|
|
23
|
+
/** Total buffer length. */
|
|
34
24
|
get length() {
|
|
35
25
|
return this._buf.length;
|
|
36
26
|
}
|
|
37
|
-
/**
|
|
27
|
+
/** Return the underlying buffer. */
|
|
38
28
|
get buffer() {
|
|
39
29
|
return this._buf;
|
|
40
30
|
}
|
|
41
31
|
/**
|
|
42
|
-
*
|
|
32
|
+
* Preview bytes at the current position without advancing.
|
|
43
33
|
*
|
|
44
|
-
* @param {number} length - Number of bytes to peek
|
|
45
|
-
* @returns {Buffer}
|
|
46
|
-
* @throws {RangeError} If `length` bytes are not available.
|
|
34
|
+
* @param {number} length - Number of bytes to peek.
|
|
35
|
+
* @returns {Buffer} Buffer slice.
|
|
47
36
|
*/
|
|
48
37
|
peek(length) {
|
|
49
38
|
this.assertAvailable(length);
|
|
50
39
|
return this._buf.subarray(this._pos, this._pos + length);
|
|
51
40
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Reads one unsigned 8-bit integer and advances the cursor by 1.
|
|
54
|
-
*
|
|
55
|
-
* @returns {number} Unsigned byte value (0–255).
|
|
56
|
-
* @throws {RangeError} If fewer than 1 byte remains.
|
|
57
|
-
*/
|
|
41
|
+
/** Read a single unsigned 8-bit integer. */
|
|
58
42
|
readUInt8() {
|
|
59
43
|
this.assertAvailable(1);
|
|
60
44
|
const v = this._buf[this._pos];
|
|
61
45
|
this._pos += 1;
|
|
62
46
|
return v;
|
|
63
47
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Reads one big-endian unsigned 16-bit integer and advances the cursor by 2.
|
|
66
|
-
*
|
|
67
|
-
* @returns {number} Unsigned 16-bit value (0–65 535).
|
|
68
|
-
* @throws {RangeError} If fewer than 2 bytes remain.
|
|
69
|
-
*/
|
|
48
|
+
/** Read an unsigned 16-bit big-endian integer. */
|
|
70
49
|
readUInt16() {
|
|
71
50
|
this.assertAvailable(2);
|
|
72
51
|
const v = this._buf.readUInt16BE(this._pos);
|
|
73
52
|
this._pos += 2;
|
|
74
53
|
return v;
|
|
75
54
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Reads one big-endian unsigned 24-bit integer and advances the cursor by 3.
|
|
78
|
-
*
|
|
79
|
-
* @returns {number} Unsigned 24-bit value (0–16 777 215).
|
|
80
|
-
* @throws {RangeError} If fewer than 3 bytes remain.
|
|
81
|
-
*/
|
|
55
|
+
/** Read an unsigned 24-bit big-endian integer. */
|
|
82
56
|
readUInt24() {
|
|
83
57
|
this.assertAvailable(3);
|
|
84
58
|
const b0 = this._buf[this._pos];
|
|
@@ -87,12 +61,7 @@ export class BufferReader {
|
|
|
87
61
|
this._pos += 3;
|
|
88
62
|
return (b0 << 16) | (b1 << 8) | b2;
|
|
89
63
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Reads one big-endian unsigned 32-bit integer and advances the cursor by 4.
|
|
92
|
-
*
|
|
93
|
-
* @returns {number} Unsigned 32-bit value (0–4 294 967 295).
|
|
94
|
-
* @throws {RangeError} If fewer than 4 bytes remain.
|
|
95
|
-
*/
|
|
64
|
+
/** Read an unsigned 32-bit big-endian integer. */
|
|
96
65
|
readUInt32() {
|
|
97
66
|
this.assertAvailable(4);
|
|
98
67
|
const v = this._buf.readUInt32BE(this._pos);
|
|
@@ -100,11 +69,10 @@ export class BufferReader {
|
|
|
100
69
|
return v;
|
|
101
70
|
}
|
|
102
71
|
/**
|
|
103
|
-
*
|
|
72
|
+
* Read a fixed number of bytes and advance the position.
|
|
104
73
|
*
|
|
105
74
|
* @param {number} length - Number of bytes to read.
|
|
106
|
-
* @returns {Buffer}
|
|
107
|
-
* @throws {RangeError} If `length` bytes are not available.
|
|
75
|
+
* @returns {Buffer} Copied buffer slice.
|
|
108
76
|
*/
|
|
109
77
|
readBytes(length) {
|
|
110
78
|
this.assertAvailable(length);
|
|
@@ -112,54 +80,34 @@ export class BufferReader {
|
|
|
112
80
|
this._pos += length;
|
|
113
81
|
return slice;
|
|
114
82
|
}
|
|
115
|
-
/**
|
|
116
|
-
* Reads a length-prefixed byte vector where the length is encoded as a
|
|
117
|
-
* one-byte (8-bit) unsigned integer immediately preceding the data.
|
|
118
|
-
*
|
|
119
|
-
* @returns {Buffer} The vector payload bytes.
|
|
120
|
-
* @throws {RangeError} If insufficient bytes remain.
|
|
121
|
-
*/
|
|
83
|
+
/** Read a length-prefixed vector with a 1-byte length prefix. */
|
|
122
84
|
readVector8() {
|
|
123
85
|
const len = this.readUInt8();
|
|
124
86
|
return this.readBytes(len);
|
|
125
87
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Reads a length-prefixed byte vector where the length is encoded as a
|
|
128
|
-
* big-endian two-byte (16-bit) unsigned integer immediately preceding the data.
|
|
129
|
-
*
|
|
130
|
-
* @returns {Buffer} The vector payload bytes.
|
|
131
|
-
* @throws {RangeError} If insufficient bytes remain.
|
|
132
|
-
*/
|
|
88
|
+
/** Read a length-prefixed vector with a 2-byte big-endian length prefix. */
|
|
133
89
|
readVector16() {
|
|
134
90
|
const len = this.readUInt16();
|
|
135
91
|
return this.readBytes(len);
|
|
136
92
|
}
|
|
137
|
-
/**
|
|
138
|
-
* Reads a length-prefixed byte vector where the length is encoded as a
|
|
139
|
-
* big-endian three-byte (24-bit) unsigned integer immediately preceding the data.
|
|
140
|
-
*
|
|
141
|
-
* @returns {Buffer} The vector payload bytes.
|
|
142
|
-
* @throws {RangeError} If insufficient bytes remain.
|
|
143
|
-
*/
|
|
93
|
+
/** Read a length-prefixed vector with a 3-byte big-endian length prefix. */
|
|
144
94
|
readVector24() {
|
|
145
95
|
const len = this.readUInt24();
|
|
146
96
|
return this.readBytes(len);
|
|
147
97
|
}
|
|
148
98
|
/**
|
|
149
|
-
*
|
|
99
|
+
* Advance the read position without returning data.
|
|
150
100
|
*
|
|
151
101
|
* @param {number} length - Number of bytes to skip.
|
|
152
|
-
* @throws {RangeError} If `length` bytes are not available.
|
|
153
102
|
*/
|
|
154
103
|
skip(length) {
|
|
155
104
|
this.assertAvailable(length);
|
|
156
105
|
this._pos += length;
|
|
157
106
|
}
|
|
158
107
|
/**
|
|
159
|
-
*
|
|
108
|
+
* Set the read position to an absolute offset.
|
|
160
109
|
*
|
|
161
|
-
* @param {number} position - Target
|
|
162
|
-
* @throws {RangeError} If `position` is negative or beyond the buffer length.
|
|
110
|
+
* @param {number} position - Target position.
|
|
163
111
|
*/
|
|
164
112
|
seek(position) {
|
|
165
113
|
if (position < 0 || position > this._buf.length) {
|
|
@@ -168,13 +116,10 @@ export class BufferReader {
|
|
|
168
116
|
this._pos = position;
|
|
169
117
|
}
|
|
170
118
|
/**
|
|
171
|
-
*
|
|
172
|
-
* `BufferReader` positioned at offset 0 within that sub-slice. The parent
|
|
173
|
-
* cursor advances by `length` bytes.
|
|
119
|
+
* Create a sub-reader covering the next `length` bytes and advance.
|
|
174
120
|
*
|
|
175
|
-
* @param {number} length -
|
|
176
|
-
* @returns {BufferReader}
|
|
177
|
-
* @throws {RangeError} If `length` bytes are not available.
|
|
121
|
+
* @param {number} length - Number of bytes for the sub-reader.
|
|
122
|
+
* @returns {BufferReader} New `BufferReader` over the sub-range.
|
|
178
123
|
*/
|
|
179
124
|
subReader(length) {
|
|
180
125
|
this.assertAvailable(length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer-reader.js","sourceRoot":"","sources":["../../src/utils/buffer-reader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buffer-reader.js","sourceRoot":"","sources":["../../src/utils/buffer-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,122 +1,86 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Growable binary buffer writer that serializes typed values in big-endian byte
|
|
3
|
-
* order. The internal buffer doubles in capacity as needed. Call
|
|
4
|
-
* {@link BufferWriter.toBuffer} to obtain the written bytes as a new `Buffer`.
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* const w = new BufferWriter();
|
|
8
|
-
* w.writeUInt8(0x16);
|
|
9
|
-
* w.writeUInt16(0x0303);
|
|
10
|
-
* w.writeVector16(data);
|
|
11
|
-
* return w.toBuffer();
|
|
12
|
-
*/
|
|
1
|
+
/** Auto-growing big-endian buffer builder. */
|
|
13
2
|
export declare class BufferWriter {
|
|
14
3
|
private _buf;
|
|
15
4
|
private _pos;
|
|
16
5
|
/**
|
|
17
|
-
*
|
|
6
|
+
* Create a writer with the given initial capacity.
|
|
18
7
|
*
|
|
19
|
-
* @param {number} [capacity
|
|
8
|
+
* @param {number} [capacity] - Initial buffer allocation in bytes.
|
|
20
9
|
*/
|
|
21
10
|
constructor(capacity?: number);
|
|
22
|
-
/** Current write position (
|
|
11
|
+
/** Current write position (identical to the number of bytes written). */
|
|
23
12
|
get position(): number;
|
|
24
|
-
/** Number of bytes
|
|
13
|
+
/** Number of bytes written so far. */
|
|
25
14
|
get length(): number;
|
|
26
|
-
/**
|
|
27
|
-
* Returns a copy of the written bytes as a new `Buffer`. The returned buffer
|
|
28
|
-
* contains only the bytes that have been written, regardless of the internal
|
|
29
|
-
* capacity.
|
|
30
|
-
*
|
|
31
|
-
* @returns {Buffer} Copy of all written data.
|
|
32
|
-
*/
|
|
15
|
+
/** Copy the written region into a new buffer and return it. */
|
|
33
16
|
toBuffer(): Buffer;
|
|
34
17
|
/**
|
|
35
|
-
*
|
|
18
|
+
* Write an unsigned 8-bit integer.
|
|
36
19
|
*
|
|
37
|
-
* @param {number} value -
|
|
38
|
-
* @returns {this} This instance for chaining.
|
|
20
|
+
* @param {number} value - Value to write.
|
|
39
21
|
*/
|
|
40
22
|
writeUInt8(value: number): this;
|
|
41
23
|
/**
|
|
42
|
-
*
|
|
24
|
+
* Write an unsigned 16-bit big-endian integer.
|
|
43
25
|
*
|
|
44
|
-
* @param {number} value -
|
|
45
|
-
* @returns {this} This instance for chaining.
|
|
26
|
+
* @param {number} value - Value to write.
|
|
46
27
|
*/
|
|
47
28
|
writeUInt16(value: number): this;
|
|
48
29
|
/**
|
|
49
|
-
*
|
|
30
|
+
* Write an unsigned 24-bit big-endian integer.
|
|
50
31
|
*
|
|
51
|
-
* @param {number} value -
|
|
52
|
-
* @returns {this} This instance for chaining.
|
|
32
|
+
* @param {number} value - Value to write.
|
|
53
33
|
*/
|
|
54
34
|
writeUInt24(value: number): this;
|
|
55
35
|
/**
|
|
56
|
-
*
|
|
36
|
+
* Write an unsigned 32-bit big-endian integer.
|
|
57
37
|
*
|
|
58
|
-
* @param {number} value -
|
|
59
|
-
* @returns {this} This instance for chaining.
|
|
38
|
+
* @param {number} value - Value to write.
|
|
60
39
|
*/
|
|
61
40
|
writeUInt32(value: number): this;
|
|
62
41
|
/**
|
|
63
|
-
*
|
|
42
|
+
* Write raw bytes into the buffer.
|
|
64
43
|
*
|
|
65
|
-
* @param {Buffer | Uint8Array} data -
|
|
66
|
-
* @returns {this} This instance for chaining.
|
|
44
|
+
* @param {Buffer | Uint8Array} data - Bytes to append.
|
|
67
45
|
*/
|
|
68
46
|
writeBytes(data: Buffer | Uint8Array): this;
|
|
69
47
|
/**
|
|
70
|
-
*
|
|
71
|
-
* Equivalent to `writeUInt8(data.length)` followed by `writeBytes(data)`.
|
|
48
|
+
* Write a length-prefixed vector with a 1-byte length prefix.
|
|
72
49
|
*
|
|
73
|
-
* @param {Buffer | Uint8Array} data - Data to write
|
|
74
|
-
* @returns {this} This instance for chaining.
|
|
75
|
-
* @throws {RangeError} If `data.length` exceeds 255.
|
|
50
|
+
* @param {Buffer | Uint8Array} data - Data to write.
|
|
76
51
|
*/
|
|
77
52
|
writeVector8(data: Buffer | Uint8Array): this;
|
|
78
53
|
/**
|
|
79
|
-
*
|
|
80
|
-
* Equivalent to `writeUInt16(data.length)` followed by `writeBytes(data)`.
|
|
54
|
+
* Write a length-prefixed vector with a 2-byte big-endian length prefix.
|
|
81
55
|
*
|
|
82
|
-
* @param {Buffer | Uint8Array} data - Data to write
|
|
83
|
-
* @returns {this} This instance for chaining.
|
|
84
|
-
* @throws {RangeError} If `data.length` exceeds 65 535.
|
|
56
|
+
* @param {Buffer | Uint8Array} data - Data to write.
|
|
85
57
|
*/
|
|
86
58
|
writeVector16(data: Buffer | Uint8Array): this;
|
|
87
59
|
/**
|
|
88
|
-
*
|
|
89
|
-
* Equivalent to `writeUInt24(data.length)` followed by `writeBytes(data)`.
|
|
60
|
+
* Write a length-prefixed vector with a 3-byte big-endian length prefix.
|
|
90
61
|
*
|
|
91
|
-
* @param {Buffer | Uint8Array} data - Data to write
|
|
92
|
-
* @returns {this} This instance for chaining.
|
|
93
|
-
* @throws {RangeError} If `data.length` exceeds 16 777 215.
|
|
62
|
+
* @param {Buffer | Uint8Array} data - Data to write.
|
|
94
63
|
*/
|
|
95
64
|
writeVector24(data: Buffer | Uint8Array): this;
|
|
96
65
|
/**
|
|
97
|
-
*
|
|
98
|
-
* advances the cursor, and returns the byte offset of the reserved region.
|
|
99
|
-
* Use this to write a length prefix, then later patch it with
|
|
100
|
-
* {@link BufferWriter.patchUInt16} or {@link BufferWriter.patchUInt24}.
|
|
66
|
+
* Reserve space and return its offset for later patching.
|
|
101
67
|
*
|
|
102
68
|
* @param {number} size - Number of bytes to reserve.
|
|
103
|
-
* @returns {number}
|
|
69
|
+
* @returns {number} Starting offset of the reserved region.
|
|
104
70
|
*/
|
|
105
71
|
reserve(size: number): number;
|
|
106
72
|
/**
|
|
107
|
-
*
|
|
108
|
-
* Does not advance the write cursor.
|
|
73
|
+
* Overwrite a previously reserved 16-bit value.
|
|
109
74
|
*
|
|
110
|
-
* @param {number} offset - Byte offset
|
|
111
|
-
* @param {number} value
|
|
75
|
+
* @param {number} offset - Byte offset to patch.
|
|
76
|
+
* @param {number} value - New 16-bit value.
|
|
112
77
|
*/
|
|
113
78
|
patchUInt16(offset: number, value: number): void;
|
|
114
79
|
/**
|
|
115
|
-
*
|
|
116
|
-
* Does not advance the write cursor.
|
|
80
|
+
* Overwrite a previously reserved 24-bit value.
|
|
117
81
|
*
|
|
118
|
-
* @param {number} offset - Byte offset
|
|
119
|
-
* @param {number} value
|
|
82
|
+
* @param {number} offset - Byte offset to patch.
|
|
83
|
+
* @param {number} value - New 24-bit value.
|
|
120
84
|
*/
|
|
121
85
|
patchUInt24(offset: number, value: number): void;
|
|
122
86
|
private ensureCapacity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer-writer.d.ts","sourceRoot":"","sources":["../../src/utils/buffer-writer.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"buffer-writer.d.ts","sourceRoot":"","sources":["../../src/utils/buffer-writer.ts"],"names":[],"mappings":"AAIA,8CAA8C;AAC9C,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IAErB;;;;OAIG;gBACS,QAAQ,GAAE,MAAyB;IAK/C,yEAAyE;IACzE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,sCAAsC;IACtC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,+DAA+D;IAC/D,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO/B;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAShC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAW3C;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAS7C;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAS9C;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAS9C;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO7B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhD,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -1,53 +1,35 @@
|
|
|
1
1
|
const INITIAL_CAPACITY = 1024;
|
|
2
2
|
const GROWTH_FACTOR = 2;
|
|
3
3
|
const MAX_CAPACITY = 256 * 1024 * 1024;
|
|
4
|
-
/**
|
|
5
|
-
* Growable binary buffer writer that serializes typed values in big-endian byte
|
|
6
|
-
* order. The internal buffer doubles in capacity as needed. Call
|
|
7
|
-
* {@link BufferWriter.toBuffer} to obtain the written bytes as a new `Buffer`.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* const w = new BufferWriter();
|
|
11
|
-
* w.writeUInt8(0x16);
|
|
12
|
-
* w.writeUInt16(0x0303);
|
|
13
|
-
* w.writeVector16(data);
|
|
14
|
-
* return w.toBuffer();
|
|
15
|
-
*/
|
|
4
|
+
/** Auto-growing big-endian buffer builder. */
|
|
16
5
|
export class BufferWriter {
|
|
17
6
|
_buf;
|
|
18
7
|
_pos;
|
|
19
8
|
/**
|
|
20
|
-
*
|
|
9
|
+
* Create a writer with the given initial capacity.
|
|
21
10
|
*
|
|
22
|
-
* @param {number} [capacity
|
|
11
|
+
* @param {number} [capacity] - Initial buffer allocation in bytes.
|
|
23
12
|
*/
|
|
24
13
|
constructor(capacity = INITIAL_CAPACITY) {
|
|
25
14
|
this._buf = Buffer.allocUnsafe(capacity);
|
|
26
15
|
this._pos = 0;
|
|
27
16
|
}
|
|
28
|
-
/** Current write position (
|
|
17
|
+
/** Current write position (identical to the number of bytes written). */
|
|
29
18
|
get position() {
|
|
30
19
|
return this._pos;
|
|
31
20
|
}
|
|
32
|
-
/** Number of bytes
|
|
21
|
+
/** Number of bytes written so far. */
|
|
33
22
|
get length() {
|
|
34
23
|
return this._pos;
|
|
35
24
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Returns a copy of the written bytes as a new `Buffer`. The returned buffer
|
|
38
|
-
* contains only the bytes that have been written, regardless of the internal
|
|
39
|
-
* capacity.
|
|
40
|
-
*
|
|
41
|
-
* @returns {Buffer} Copy of all written data.
|
|
42
|
-
*/
|
|
25
|
+
/** Copy the written region into a new buffer and return it. */
|
|
43
26
|
toBuffer() {
|
|
44
27
|
return Buffer.from(this._buf.subarray(0, this._pos));
|
|
45
28
|
}
|
|
46
29
|
/**
|
|
47
|
-
*
|
|
30
|
+
* Write an unsigned 8-bit integer.
|
|
48
31
|
*
|
|
49
|
-
* @param {number} value -
|
|
50
|
-
* @returns {this} This instance for chaining.
|
|
32
|
+
* @param {number} value - Value to write.
|
|
51
33
|
*/
|
|
52
34
|
writeUInt8(value) {
|
|
53
35
|
this.ensureCapacity(1);
|
|
@@ -56,10 +38,9 @@ export class BufferWriter {
|
|
|
56
38
|
return this;
|
|
57
39
|
}
|
|
58
40
|
/**
|
|
59
|
-
*
|
|
41
|
+
* Write an unsigned 16-bit big-endian integer.
|
|
60
42
|
*
|
|
61
|
-
* @param {number} value -
|
|
62
|
-
* @returns {this} This instance for chaining.
|
|
43
|
+
* @param {number} value - Value to write.
|
|
63
44
|
*/
|
|
64
45
|
writeUInt16(value) {
|
|
65
46
|
this.ensureCapacity(2);
|
|
@@ -68,10 +49,9 @@ export class BufferWriter {
|
|
|
68
49
|
return this;
|
|
69
50
|
}
|
|
70
51
|
/**
|
|
71
|
-
*
|
|
52
|
+
* Write an unsigned 24-bit big-endian integer.
|
|
72
53
|
*
|
|
73
|
-
* @param {number} value -
|
|
74
|
-
* @returns {this} This instance for chaining.
|
|
54
|
+
* @param {number} value - Value to write.
|
|
75
55
|
*/
|
|
76
56
|
writeUInt24(value) {
|
|
77
57
|
this.ensureCapacity(3);
|
|
@@ -82,10 +62,9 @@ export class BufferWriter {
|
|
|
82
62
|
return this;
|
|
83
63
|
}
|
|
84
64
|
/**
|
|
85
|
-
*
|
|
65
|
+
* Write an unsigned 32-bit big-endian integer.
|
|
86
66
|
*
|
|
87
|
-
* @param {number} value -
|
|
88
|
-
* @returns {this} This instance for chaining.
|
|
67
|
+
* @param {number} value - Value to write.
|
|
89
68
|
*/
|
|
90
69
|
writeUInt32(value) {
|
|
91
70
|
this.ensureCapacity(4);
|
|
@@ -94,10 +73,9 @@ export class BufferWriter {
|
|
|
94
73
|
return this;
|
|
95
74
|
}
|
|
96
75
|
/**
|
|
97
|
-
*
|
|
76
|
+
* Write raw bytes into the buffer.
|
|
98
77
|
*
|
|
99
|
-
* @param {Buffer | Uint8Array} data -
|
|
100
|
-
* @returns {this} This instance for chaining.
|
|
78
|
+
* @param {Buffer | Uint8Array} data - Bytes to append.
|
|
101
79
|
*/
|
|
102
80
|
writeBytes(data) {
|
|
103
81
|
this.ensureCapacity(data.length);
|
|
@@ -111,12 +89,9 @@ export class BufferWriter {
|
|
|
111
89
|
return this;
|
|
112
90
|
}
|
|
113
91
|
/**
|
|
114
|
-
*
|
|
115
|
-
* Equivalent to `writeUInt8(data.length)` followed by `writeBytes(data)`.
|
|
92
|
+
* Write a length-prefixed vector with a 1-byte length prefix.
|
|
116
93
|
*
|
|
117
|
-
* @param {Buffer | Uint8Array} data - Data to write
|
|
118
|
-
* @returns {this} This instance for chaining.
|
|
119
|
-
* @throws {RangeError} If `data.length` exceeds 255.
|
|
94
|
+
* @param {Buffer | Uint8Array} data - Data to write.
|
|
120
95
|
*/
|
|
121
96
|
writeVector8(data) {
|
|
122
97
|
if (data.length > 0xff) {
|
|
@@ -127,12 +102,9 @@ export class BufferWriter {
|
|
|
127
102
|
return this;
|
|
128
103
|
}
|
|
129
104
|
/**
|
|
130
|
-
*
|
|
131
|
-
* Equivalent to `writeUInt16(data.length)` followed by `writeBytes(data)`.
|
|
105
|
+
* Write a length-prefixed vector with a 2-byte big-endian length prefix.
|
|
132
106
|
*
|
|
133
|
-
* @param {Buffer | Uint8Array} data - Data to write
|
|
134
|
-
* @returns {this} This instance for chaining.
|
|
135
|
-
* @throws {RangeError} If `data.length` exceeds 65 535.
|
|
107
|
+
* @param {Buffer | Uint8Array} data - Data to write.
|
|
136
108
|
*/
|
|
137
109
|
writeVector16(data) {
|
|
138
110
|
if (data.length > 0xffff) {
|
|
@@ -143,12 +115,9 @@ export class BufferWriter {
|
|
|
143
115
|
return this;
|
|
144
116
|
}
|
|
145
117
|
/**
|
|
146
|
-
*
|
|
147
|
-
* Equivalent to `writeUInt24(data.length)` followed by `writeBytes(data)`.
|
|
118
|
+
* Write a length-prefixed vector with a 3-byte big-endian length prefix.
|
|
148
119
|
*
|
|
149
|
-
* @param {Buffer | Uint8Array} data - Data to write
|
|
150
|
-
* @returns {this} This instance for chaining.
|
|
151
|
-
* @throws {RangeError} If `data.length` exceeds 16 777 215.
|
|
120
|
+
* @param {Buffer | Uint8Array} data - Data to write.
|
|
152
121
|
*/
|
|
153
122
|
writeVector24(data) {
|
|
154
123
|
if (data.length > 0xffffff) {
|
|
@@ -159,13 +128,10 @@ export class BufferWriter {
|
|
|
159
128
|
return this;
|
|
160
129
|
}
|
|
161
130
|
/**
|
|
162
|
-
*
|
|
163
|
-
* advances the cursor, and returns the byte offset of the reserved region.
|
|
164
|
-
* Use this to write a length prefix, then later patch it with
|
|
165
|
-
* {@link BufferWriter.patchUInt16} or {@link BufferWriter.patchUInt24}.
|
|
131
|
+
* Reserve space and return its offset for later patching.
|
|
166
132
|
*
|
|
167
133
|
* @param {number} size - Number of bytes to reserve.
|
|
168
|
-
* @returns {number}
|
|
134
|
+
* @returns {number} Starting offset of the reserved region.
|
|
169
135
|
*/
|
|
170
136
|
reserve(size) {
|
|
171
137
|
this.ensureCapacity(size);
|
|
@@ -174,21 +140,19 @@ export class BufferWriter {
|
|
|
174
140
|
return offset;
|
|
175
141
|
}
|
|
176
142
|
/**
|
|
177
|
-
*
|
|
178
|
-
* Does not advance the write cursor.
|
|
143
|
+
* Overwrite a previously reserved 16-bit value.
|
|
179
144
|
*
|
|
180
|
-
* @param {number} offset - Byte offset
|
|
181
|
-
* @param {number} value
|
|
145
|
+
* @param {number} offset - Byte offset to patch.
|
|
146
|
+
* @param {number} value - New 16-bit value.
|
|
182
147
|
*/
|
|
183
148
|
patchUInt16(offset, value) {
|
|
184
149
|
this._buf.writeUInt16BE(value, offset);
|
|
185
150
|
}
|
|
186
151
|
/**
|
|
187
|
-
*
|
|
188
|
-
* Does not advance the write cursor.
|
|
152
|
+
* Overwrite a previously reserved 24-bit value.
|
|
189
153
|
*
|
|
190
|
-
* @param {number} offset - Byte offset
|
|
191
|
-
* @param {number} value
|
|
154
|
+
* @param {number} offset - Byte offset to patch.
|
|
155
|
+
* @param {number} value - New 24-bit value.
|
|
192
156
|
*/
|
|
193
157
|
patchUInt24(offset, value) {
|
|
194
158
|
this._buf[offset] = (value >>> 16) & 0xff;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../../src/utils/buffer-writer.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../../src/utils/buffer-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Supported request body compression encodings. */
|
|
2
|
+
export type RequestEncoding = "gzip" | "deflate" | "br";
|
|
3
|
+
/**
|
|
4
|
+
* Compress a request body buffer with the specified encoding.
|
|
5
|
+
*
|
|
6
|
+
* @param {Buffer} body - Uncompressed body bytes.
|
|
7
|
+
* @param {RequestEncoding} encoding - Compression algorithm.
|
|
8
|
+
* @returns {Promise<Buffer>} Compressed buffer.
|
|
9
|
+
*/
|
|
10
|
+
export declare function compressBody(body: Buffer, encoding: RequestEncoding): Promise<Buffer>;
|
|
11
|
+
/**
|
|
12
|
+
* Determine whether a body is large enough to benefit from compression.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} bodySize - Body size in bytes.
|
|
15
|
+
* @returns {boolean} `true` if the body meets the minimum threshold.
|
|
16
|
+
*/
|
|
17
|
+
export declare function shouldCompress(bodySize: number): boolean;
|
|
18
|
+
//# sourceMappingURL=compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/utils/compression.ts"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAExD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
|