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
|
@@ -2,17 +2,15 @@ import * as net from "node:net";
|
|
|
2
2
|
import { lookup } from "node:dns/promises";
|
|
3
3
|
import { parseARecord, parseAAAARecord } from "../dns/codec.js";
|
|
4
4
|
import { RTYPE } from "../dns/types.js";
|
|
5
|
-
/** Connection Attempt Delay per RFC 8305 §5 — 250 ms. */
|
|
6
5
|
const ATTEMPT_DELAY_MS = 250;
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
7
|
+
* Connect to a host using the Happy Eyeballs algorithm (RFC 8305).
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* 5. Returns the first socket that connects; destroys all others.
|
|
9
|
+
* Races IPv6 and IPv4 connection attempts with a staggered delay
|
|
10
|
+
* for fast fallback.
|
|
11
|
+
*
|
|
12
|
+
* @param {HappyEyeballsOptions} options - Connection options.
|
|
13
|
+
* @returns {Promise<HappyEyeballsResult>} Connected socket and connection metadata.
|
|
16
14
|
*/
|
|
17
15
|
export async function happyEyeballsConnect(options) {
|
|
18
16
|
const { host, port, family, timeout, signal, dohResolver } = options;
|
|
@@ -39,10 +37,6 @@ export async function happyEyeballsConnect(options) {
|
|
|
39
37
|
const result = await raceTcpConnections(sorted, port, timeout, signal);
|
|
40
38
|
return { socket: result.socket, address: result.address, family: result.family, dnsTimeMs };
|
|
41
39
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Interleave IPv6 and IPv4 addresses per RFC 8305 §4.
|
|
44
|
-
* The first address family returned by the resolver leads.
|
|
45
|
-
*/
|
|
46
40
|
function interleaveAddressFamilies(addresses) {
|
|
47
41
|
const ipv6 = [];
|
|
48
42
|
const ipv4 = [];
|
|
@@ -67,11 +61,6 @@ function interleaveAddressFamilies(addresses) {
|
|
|
67
61
|
}
|
|
68
62
|
return out;
|
|
69
63
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Race TCP connections across the sorted address list.
|
|
72
|
-
* Each new attempt starts after ATTEMPT_DELAY_MS or immediately after
|
|
73
|
-
* the previous attempt fails — whichever comes first.
|
|
74
|
-
*/
|
|
75
64
|
function raceTcpConnections(addresses, port, timeout, signal) {
|
|
76
65
|
if (addresses.length === 1) {
|
|
77
66
|
return singleConnect(addresses[0], port, timeout, signal);
|
|
@@ -112,7 +101,7 @@ function raceTcpConnections(addresses, port, timeout, signal) {
|
|
|
112
101
|
if (errors.length >= sockets.length && attemptIndex >= addresses.length) {
|
|
113
102
|
settled = true;
|
|
114
103
|
cleanup();
|
|
115
|
-
reject(errors[0]);
|
|
104
|
+
reject(errors[0] ?? new Error("All connection attempts failed"));
|
|
116
105
|
return;
|
|
117
106
|
}
|
|
118
107
|
if (attemptIndex < addresses.length) {
|
|
@@ -127,7 +116,9 @@ function raceTcpConnections(addresses, port, timeout, signal) {
|
|
|
127
116
|
const entry = addresses[attemptIndex++];
|
|
128
117
|
const socket = net.createConnection({ host: entry.address, port, family: entry.family });
|
|
129
118
|
sockets.push(socket);
|
|
130
|
-
socket.once("connect", () =>
|
|
119
|
+
socket.once("connect", () => {
|
|
120
|
+
onSettled(socket, entry.address, entry.family);
|
|
121
|
+
});
|
|
131
122
|
socket.once("error", onAttemptError);
|
|
132
123
|
if (attemptIndex < addresses.length) {
|
|
133
124
|
delayTimer = setTimeout(startNextAttempt, ATTEMPT_DELAY_MS);
|
|
@@ -162,7 +153,6 @@ function raceTcpConnections(addresses, port, timeout, signal) {
|
|
|
162
153
|
startNextAttempt();
|
|
163
154
|
});
|
|
164
155
|
}
|
|
165
|
-
/** Direct single-address connect, used when there is only one candidate. */
|
|
166
156
|
function singleConnect(entry, port, timeout, signal) {
|
|
167
157
|
return new Promise((resolve, reject) => {
|
|
168
158
|
let settled = false;
|
|
@@ -199,17 +189,19 @@ function singleConnect(entry, port, timeout, signal) {
|
|
|
199
189
|
reject(new Error("Connection aborted"));
|
|
200
190
|
return;
|
|
201
191
|
}
|
|
202
|
-
abortHandler = () =>
|
|
192
|
+
abortHandler = () => {
|
|
193
|
+
finish(new Error("Connection aborted"));
|
|
194
|
+
};
|
|
203
195
|
signal.addEventListener("abort", abortHandler, { once: true });
|
|
204
196
|
}
|
|
205
|
-
socket.once("connect", () =>
|
|
206
|
-
|
|
197
|
+
socket.once("connect", () => {
|
|
198
|
+
finish();
|
|
199
|
+
});
|
|
200
|
+
socket.once("error", (err) => {
|
|
201
|
+
finish(err);
|
|
202
|
+
});
|
|
207
203
|
});
|
|
208
204
|
}
|
|
209
|
-
/**
|
|
210
|
-
* Resolves addresses using DoH (DNS-over-HTTPS) for encrypted DNS resolution.
|
|
211
|
-
* Falls back to system DNS if DoH fails.
|
|
212
|
-
*/
|
|
213
205
|
async function resolveWithDoH(resolver, host, family, signal) {
|
|
214
206
|
const results = [];
|
|
215
207
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"happy-eyeballs.js","sourceRoot":"","sources":["../../src/utils/happy-eyeballs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAOxC,
|
|
1
|
+
{"version":3,"file":"happy-eyeballs.js","sourceRoot":"","sources":["../../src/utils/happy-eyeballs.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,124 +1,97 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimum severity level for log emission. Messages below this level are
|
|
3
|
-
* suppressed. `'silent'` disables all output.
|
|
4
|
-
*
|
|
5
|
-
* @typedef {'debug' | 'info' | 'warn' | 'error' | 'silent'} LogLevel
|
|
6
|
-
*/
|
|
1
|
+
/** Severity levels for log output. */
|
|
7
2
|
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
|
|
8
|
-
/**
|
|
9
|
-
* Key-value metadata attached to every log entry produced by a child logger.
|
|
10
|
-
* Bindings are inherited from parent to child, allowing nested scoping.
|
|
11
|
-
*
|
|
12
|
-
* @typedef {Record<string, unknown>} LogBindings
|
|
13
|
-
*/
|
|
3
|
+
/** Structured key-value bindings attached to log messages. */
|
|
14
4
|
export type LogBindings = Record<string, unknown>;
|
|
15
|
-
/**
|
|
16
|
-
* Minimal logger interface consumed throughout the library. Implementations
|
|
17
|
-
* must provide four severity methods; all parameters follow `console.log`
|
|
18
|
-
* semantics (a primary message string followed by optional extra values).
|
|
19
|
-
*/
|
|
5
|
+
/** Minimal structured logging interface. */
|
|
20
6
|
export interface Logger {
|
|
21
|
-
/**
|
|
7
|
+
/** Emit a debug-level message. */
|
|
22
8
|
debug(message: string, ...args: unknown[]): void;
|
|
23
|
-
/**
|
|
9
|
+
/** Emit an info-level message. */
|
|
24
10
|
info(message: string, ...args: unknown[]): void;
|
|
25
|
-
/**
|
|
11
|
+
/** Emit a warning-level message. */
|
|
26
12
|
warn(message: string, ...args: unknown[]): void;
|
|
27
|
-
/**
|
|
13
|
+
/** Emit an error-level message. */
|
|
28
14
|
error(message: string, ...args: unknown[]): void;
|
|
29
15
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Default {@link Logger} implementation that writes to `process.stderr`.
|
|
32
|
-
* Messages are prefixed with `[nlcurl:<level>]` and only emitted when the
|
|
33
|
-
* message severity meets or exceeds the configured `level`.
|
|
34
|
-
*
|
|
35
|
-
* Supports scoped child loggers via {@link ConsoleLogger.child}, which
|
|
36
|
-
* prepend a component tag to every message for easy filtering.
|
|
37
|
-
*/
|
|
16
|
+
/** Logger implementation that writes to `stderr` with level filtering. */
|
|
38
17
|
export declare class ConsoleLogger implements Logger {
|
|
39
18
|
private level;
|
|
40
19
|
private readonly prefix;
|
|
41
20
|
private readonly bindings;
|
|
42
21
|
/**
|
|
43
|
-
*
|
|
22
|
+
* Create a console logger.
|
|
44
23
|
*
|
|
45
|
-
* @param {LogLevel}
|
|
46
|
-
* @param {string}
|
|
47
|
-
* @param {LogBindings}
|
|
24
|
+
* @param {LogLevel} level - Minimum severity to output.
|
|
25
|
+
* @param {string} prefix - Namespace prefix for log lines.
|
|
26
|
+
* @param {LogBindings} bindings - Structured context fields.
|
|
48
27
|
*/
|
|
49
28
|
constructor(level?: LogLevel, prefix?: string, bindings?: LogBindings);
|
|
50
29
|
/**
|
|
51
|
-
*
|
|
52
|
-
* an additional component tag to every message. Bindings from the parent
|
|
53
|
-
* are merged with the child's bindings (child values win on conflict).
|
|
54
|
-
*
|
|
55
|
-
* @param {LogBindings} bindings - Additional metadata for the child scope.
|
|
56
|
-
* @returns {ConsoleLogger} A new scoped logger instance.
|
|
30
|
+
* Create a child logger with additional bindings.
|
|
57
31
|
*
|
|
58
|
-
* @
|
|
59
|
-
*
|
|
60
|
-
* const child = logger.child({ component: 'h2' });
|
|
61
|
-
* child.debug('stream opened', { streamId: 1 });
|
|
32
|
+
* @param {LogBindings} bindings - Extra structured context fields.
|
|
33
|
+
* @returns {ConsoleLogger} New child `ConsoleLogger`.
|
|
62
34
|
*/
|
|
63
35
|
child(bindings: LogBindings): ConsoleLogger;
|
|
64
36
|
/**
|
|
65
|
-
*
|
|
66
|
-
* logger instance.
|
|
37
|
+
* Change the minimum log level at runtime.
|
|
67
38
|
*
|
|
68
|
-
* @param {LogLevel} level - New
|
|
39
|
+
* @param {LogLevel} level - New severity threshold.
|
|
69
40
|
*/
|
|
70
41
|
setLevel(level: LogLevel): void;
|
|
71
|
-
/**
|
|
72
|
-
* Emits a debug-level message to `stderr` -- only written when the
|
|
73
|
-
* configured minimum level is `'debug'`.
|
|
74
|
-
*
|
|
75
|
-
* @param {string} message - Primary log message.
|
|
76
|
-
* @param {...unknown} args - Additional values appended after the message.
|
|
77
|
-
*/
|
|
42
|
+
/** Log a debug-level message. */
|
|
78
43
|
debug(message: string, ...args: unknown[]): void;
|
|
44
|
+
/** Log an info-level message. */
|
|
45
|
+
info(message: string, ...args: unknown[]): void;
|
|
46
|
+
/** Log a warning-level message. */
|
|
47
|
+
warn(message: string, ...args: unknown[]): void;
|
|
48
|
+
/** Log an error-level message. */
|
|
49
|
+
error(message: string, ...args: unknown[]): void;
|
|
50
|
+
private write;
|
|
51
|
+
private formatArgs;
|
|
52
|
+
private resolveLevel;
|
|
53
|
+
}
|
|
54
|
+
/** Singleton no-op logger that discards all messages. */
|
|
55
|
+
export declare const SILENT_LOGGER: Logger;
|
|
56
|
+
/** Logger implementation that writes structured JSON to `stderr` with level filtering. */
|
|
57
|
+
export declare class JsonLogger implements Logger {
|
|
58
|
+
private level;
|
|
59
|
+
private readonly service;
|
|
60
|
+
private readonly bindings;
|
|
79
61
|
/**
|
|
80
|
-
*
|
|
81
|
-
* configured minimum level is `'debug'` or `'info'`.
|
|
62
|
+
* Create a JSON logger.
|
|
82
63
|
*
|
|
83
|
-
* @param {
|
|
84
|
-
* @param {
|
|
64
|
+
* @param {LogLevel} level - Minimum severity to output.
|
|
65
|
+
* @param {string} service - Service name included in every log entry.
|
|
66
|
+
* @param {LogBindings} bindings - Structured context fields.
|
|
85
67
|
*/
|
|
86
|
-
|
|
68
|
+
constructor(level?: LogLevel, service?: string, bindings?: LogBindings);
|
|
87
69
|
/**
|
|
88
|
-
*
|
|
89
|
-
* configured minimum level is `'debug'`, `'info'`, or `'warn'`.
|
|
70
|
+
* Create a child JSON logger with additional bindings.
|
|
90
71
|
*
|
|
91
|
-
* @param {
|
|
92
|
-
* @
|
|
72
|
+
* @param {LogBindings} bindings - Extra structured context fields.
|
|
73
|
+
* @returns {JsonLogger} New child `JsonLogger`.
|
|
93
74
|
*/
|
|
94
|
-
|
|
75
|
+
child(bindings: LogBindings): JsonLogger;
|
|
95
76
|
/**
|
|
96
|
-
*
|
|
97
|
-
* configured minimum level is not `'silent'`.
|
|
77
|
+
* Change the minimum log level at runtime.
|
|
98
78
|
*
|
|
99
|
-
* @param {
|
|
100
|
-
* @param {...unknown} args - Additional values appended after the message.
|
|
79
|
+
* @param {LogLevel} level - New severity threshold.
|
|
101
80
|
*/
|
|
81
|
+
setLevel(level: LogLevel): void;
|
|
82
|
+
debug(message: string, ...args: unknown[]): void;
|
|
83
|
+
info(message: string, ...args: unknown[]): void;
|
|
84
|
+
warn(message: string, ...args: unknown[]): void;
|
|
102
85
|
error(message: string, ...args: unknown[]): void;
|
|
103
|
-
private
|
|
104
|
-
private formatArgs;
|
|
86
|
+
private emit;
|
|
105
87
|
private resolveLevel;
|
|
106
88
|
}
|
|
107
89
|
/**
|
|
108
|
-
*
|
|
109
|
-
* {@link setDefaultLogger} to silence the library entirely.
|
|
110
|
-
*/
|
|
111
|
-
export declare const SILENT_LOGGER: Logger;
|
|
112
|
-
/**
|
|
113
|
-
* Replaces the process-wide default logger used by all NLcURL internals.
|
|
90
|
+
* Set the process-wide default logger.
|
|
114
91
|
*
|
|
115
|
-
* @param {Logger} logger -
|
|
92
|
+
* @param {Logger} logger - Logger instance to use as the default.
|
|
116
93
|
*/
|
|
117
94
|
export declare function setDefaultLogger(logger: Logger): void;
|
|
118
|
-
/**
|
|
119
|
-
* Returns the currently active process-wide logger.
|
|
120
|
-
*
|
|
121
|
-
* @returns {Logger} The active logger instance.
|
|
122
|
-
*/
|
|
95
|
+
/** Return the current process-wide default logger. */
|
|
123
96
|
export declare function getDefaultLogger(): Logger;
|
|
124
97
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -5,24 +5,17 @@ const LEVEL_ORDER = {
|
|
|
5
5
|
error: 3,
|
|
6
6
|
silent: 4,
|
|
7
7
|
};
|
|
8
|
-
/**
|
|
9
|
-
* Default {@link Logger} implementation that writes to `process.stderr`.
|
|
10
|
-
* Messages are prefixed with `[nlcurl:<level>]` and only emitted when the
|
|
11
|
-
* message severity meets or exceeds the configured `level`.
|
|
12
|
-
*
|
|
13
|
-
* Supports scoped child loggers via {@link ConsoleLogger.child}, which
|
|
14
|
-
* prepend a component tag to every message for easy filtering.
|
|
15
|
-
*/
|
|
8
|
+
/** Logger implementation that writes to `stderr` with level filtering. */
|
|
16
9
|
export class ConsoleLogger {
|
|
17
10
|
level;
|
|
18
11
|
prefix;
|
|
19
12
|
bindings;
|
|
20
13
|
/**
|
|
21
|
-
*
|
|
14
|
+
* Create a console logger.
|
|
22
15
|
*
|
|
23
|
-
* @param {LogLevel}
|
|
24
|
-
* @param {string}
|
|
25
|
-
* @param {LogBindings}
|
|
16
|
+
* @param {LogLevel} level - Minimum severity to output.
|
|
17
|
+
* @param {string} prefix - Namespace prefix for log lines.
|
|
18
|
+
* @param {LogBindings} bindings - Structured context fields.
|
|
26
19
|
*/
|
|
27
20
|
constructor(level = "warn", prefix = "", bindings = {}) {
|
|
28
21
|
this.level = LEVEL_ORDER[level];
|
|
@@ -30,17 +23,10 @@ export class ConsoleLogger {
|
|
|
30
23
|
this.bindings = bindings;
|
|
31
24
|
}
|
|
32
25
|
/**
|
|
33
|
-
*
|
|
34
|
-
* an additional component tag to every message. Bindings from the parent
|
|
35
|
-
* are merged with the child's bindings (child values win on conflict).
|
|
36
|
-
*
|
|
37
|
-
* @param {LogBindings} bindings - Additional metadata for the child scope.
|
|
38
|
-
* @returns {ConsoleLogger} A new scoped logger instance.
|
|
26
|
+
* Create a child logger with additional bindings.
|
|
39
27
|
*
|
|
40
|
-
* @
|
|
41
|
-
*
|
|
42
|
-
* const child = logger.child({ component: 'h2' });
|
|
43
|
-
* child.debug('stream opened', { streamId: 1 });
|
|
28
|
+
* @param {LogBindings} bindings - Extra structured context fields.
|
|
29
|
+
* @returns {ConsoleLogger} New child `ConsoleLogger`.
|
|
44
30
|
*/
|
|
45
31
|
child(bindings) {
|
|
46
32
|
const component = typeof bindings["component"] === "string" ? bindings["component"] : "";
|
|
@@ -49,57 +35,32 @@ export class ConsoleLogger {
|
|
|
49
35
|
return new ConsoleLogger(this.resolveLevel(), childPrefix, merged);
|
|
50
36
|
}
|
|
51
37
|
/**
|
|
52
|
-
*
|
|
53
|
-
* logger instance.
|
|
38
|
+
* Change the minimum log level at runtime.
|
|
54
39
|
*
|
|
55
|
-
* @param {LogLevel} level - New
|
|
40
|
+
* @param {LogLevel} level - New severity threshold.
|
|
56
41
|
*/
|
|
57
42
|
setLevel(level) {
|
|
58
43
|
this.level = LEVEL_ORDER[level];
|
|
59
44
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Emits a debug-level message to `stderr` -- only written when the
|
|
62
|
-
* configured minimum level is `'debug'`.
|
|
63
|
-
*
|
|
64
|
-
* @param {string} message - Primary log message.
|
|
65
|
-
* @param {...unknown} args - Additional values appended after the message.
|
|
66
|
-
*/
|
|
45
|
+
/** Log a debug-level message. */
|
|
67
46
|
debug(message, ...args) {
|
|
68
47
|
if (this.level <= LEVEL_ORDER.debug) {
|
|
69
48
|
this.write("debug", message, args);
|
|
70
49
|
}
|
|
71
50
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Emits an info-level message to `stderr` -- only written when the
|
|
74
|
-
* configured minimum level is `'debug'` or `'info'`.
|
|
75
|
-
*
|
|
76
|
-
* @param {string} message - Primary log message.
|
|
77
|
-
* @param {...unknown} args - Additional values appended after the message.
|
|
78
|
-
*/
|
|
51
|
+
/** Log an info-level message. */
|
|
79
52
|
info(message, ...args) {
|
|
80
53
|
if (this.level <= LEVEL_ORDER.info) {
|
|
81
54
|
this.write("info", message, args);
|
|
82
55
|
}
|
|
83
56
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Emits a warn-level message to `stderr` -- only written when the
|
|
86
|
-
* configured minimum level is `'debug'`, `'info'`, or `'warn'`.
|
|
87
|
-
*
|
|
88
|
-
* @param {string} message - Primary log message.
|
|
89
|
-
* @param {...unknown} args - Additional values appended after the message.
|
|
90
|
-
*/
|
|
57
|
+
/** Log a warning-level message. */
|
|
91
58
|
warn(message, ...args) {
|
|
92
59
|
if (this.level <= LEVEL_ORDER.warn) {
|
|
93
60
|
this.write("warn", message, args);
|
|
94
61
|
}
|
|
95
62
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Emits an error-level message to `stderr` -- only written when the
|
|
98
|
-
* configured minimum level is not `'silent'`.
|
|
99
|
-
*
|
|
100
|
-
* @param {string} message - Primary log message.
|
|
101
|
-
* @param {...unknown} args - Additional values appended after the message.
|
|
102
|
-
*/
|
|
63
|
+
/** Log an error-level message. */
|
|
103
64
|
error(message, ...args) {
|
|
104
65
|
if (this.level <= LEVEL_ORDER.error) {
|
|
105
66
|
this.write("error", message, args);
|
|
@@ -122,30 +83,97 @@ export class ConsoleLogger {
|
|
|
122
83
|
return "warn";
|
|
123
84
|
}
|
|
124
85
|
}
|
|
125
|
-
/**
|
|
126
|
-
* A no-op {@link Logger} that discards all messages. Assign this via
|
|
127
|
-
* {@link setDefaultLogger} to silence the library entirely.
|
|
128
|
-
*/
|
|
86
|
+
/** Singleton no-op logger that discards all messages. */
|
|
129
87
|
export const SILENT_LOGGER = {
|
|
130
88
|
debug() { },
|
|
131
89
|
info() { },
|
|
132
90
|
warn() { },
|
|
133
91
|
error() { },
|
|
134
92
|
};
|
|
93
|
+
/** Logger implementation that writes structured JSON to `stderr` with level filtering. */
|
|
94
|
+
export class JsonLogger {
|
|
95
|
+
level;
|
|
96
|
+
service;
|
|
97
|
+
bindings;
|
|
98
|
+
/**
|
|
99
|
+
* Create a JSON logger.
|
|
100
|
+
*
|
|
101
|
+
* @param {LogLevel} level - Minimum severity to output.
|
|
102
|
+
* @param {string} service - Service name included in every log entry.
|
|
103
|
+
* @param {LogBindings} bindings - Structured context fields.
|
|
104
|
+
*/
|
|
105
|
+
constructor(level = "warn", service = "nlcurl", bindings = {}) {
|
|
106
|
+
this.level = LEVEL_ORDER[level];
|
|
107
|
+
this.service = service;
|
|
108
|
+
this.bindings = bindings;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Create a child JSON logger with additional bindings.
|
|
112
|
+
*
|
|
113
|
+
* @param {LogBindings} bindings - Extra structured context fields.
|
|
114
|
+
* @returns {JsonLogger} New child `JsonLogger`.
|
|
115
|
+
*/
|
|
116
|
+
child(bindings) {
|
|
117
|
+
const merged = { ...this.bindings, ...bindings };
|
|
118
|
+
return new JsonLogger(this.resolveLevel(), this.service, merged);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Change the minimum log level at runtime.
|
|
122
|
+
*
|
|
123
|
+
* @param {LogLevel} level - New severity threshold.
|
|
124
|
+
*/
|
|
125
|
+
setLevel(level) {
|
|
126
|
+
this.level = LEVEL_ORDER[level];
|
|
127
|
+
}
|
|
128
|
+
debug(message, ...args) {
|
|
129
|
+
if (this.level <= LEVEL_ORDER.debug)
|
|
130
|
+
this.emit("debug", message, args);
|
|
131
|
+
}
|
|
132
|
+
info(message, ...args) {
|
|
133
|
+
if (this.level <= LEVEL_ORDER.info)
|
|
134
|
+
this.emit("info", message, args);
|
|
135
|
+
}
|
|
136
|
+
warn(message, ...args) {
|
|
137
|
+
if (this.level <= LEVEL_ORDER.warn)
|
|
138
|
+
this.emit("warn", message, args);
|
|
139
|
+
}
|
|
140
|
+
error(message, ...args) {
|
|
141
|
+
if (this.level <= LEVEL_ORDER.error)
|
|
142
|
+
this.emit("error", message, args);
|
|
143
|
+
}
|
|
144
|
+
emit(level, message, args) {
|
|
145
|
+
const entry = {
|
|
146
|
+
timestamp: new Date().toISOString(),
|
|
147
|
+
level,
|
|
148
|
+
message,
|
|
149
|
+
service: this.service,
|
|
150
|
+
};
|
|
151
|
+
for (const [k, v] of Object.entries(this.bindings)) {
|
|
152
|
+
entry[k] = v;
|
|
153
|
+
}
|
|
154
|
+
if (args.length > 0) {
|
|
155
|
+
entry["metadata"] = args;
|
|
156
|
+
}
|
|
157
|
+
process.stderr.write(JSON.stringify(entry) + "\n");
|
|
158
|
+
}
|
|
159
|
+
resolveLevel() {
|
|
160
|
+
for (const [name, order] of Object.entries(LEVEL_ORDER)) {
|
|
161
|
+
if (order === this.level)
|
|
162
|
+
return name;
|
|
163
|
+
}
|
|
164
|
+
return "warn";
|
|
165
|
+
}
|
|
166
|
+
}
|
|
135
167
|
let _default = new ConsoleLogger("warn");
|
|
136
168
|
/**
|
|
137
|
-
*
|
|
169
|
+
* Set the process-wide default logger.
|
|
138
170
|
*
|
|
139
|
-
* @param {Logger} logger -
|
|
171
|
+
* @param {Logger} logger - Logger instance to use as the default.
|
|
140
172
|
*/
|
|
141
173
|
export function setDefaultLogger(logger) {
|
|
142
174
|
_default = logger;
|
|
143
175
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Returns the currently active process-wide logger.
|
|
146
|
-
*
|
|
147
|
-
* @returns {Logger} The active logger instance.
|
|
148
|
-
*/
|
|
176
|
+
/** Return the current process-wide default logger. */
|
|
149
177
|
export function getDefaultLogger() {
|
|
150
178
|
return _default;
|
|
151
179
|
}
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether TCP Fast Open is supported on the current platform.
|
|
3
|
+
*
|
|
4
|
+
* @returns {boolean} `true` on Linux and macOS.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isTFOSupported(): boolean;
|
|
7
|
+
/** Configuration for TCP Fast Open (TFO). */
|
|
8
|
+
export interface TFOOptions {
|
|
9
|
+
/** Enable TCP Fast Open for the connection. */
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
/** Data to send during the TCP handshake. */
|
|
12
|
+
connectData?: Buffer;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Build socket creation options for TCP Fast Open.
|
|
16
|
+
*
|
|
17
|
+
* @param {TFOOptions} [tfo] - TFO configuration.
|
|
18
|
+
* @returns {Record<string, unknown>} Options object to merge into socket creation.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildTFOSocketOptions(tfo?: TFOOptions): Record<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Return the current TFO support status and platform name.
|
|
23
|
+
*
|
|
24
|
+
* @returns {{ supported: boolean; platform: string }} Object with `supported` flag and `platform` string.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getTFOStatus(): {
|
|
27
|
+
supported: boolean;
|
|
28
|
+
platform: string;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=tcp-fast-open.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp-fast-open.d.ts","sourceRoot":"","sources":["../../src/utils/tcp-fast-open.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED,6CAA6C;AAC7C,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ/E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAKvE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { platform } from "node:os";
|
|
2
|
+
/**
|
|
3
|
+
* Check whether TCP Fast Open is supported on the current platform.
|
|
4
|
+
*
|
|
5
|
+
* @returns {boolean} `true` on Linux and macOS.
|
|
6
|
+
*/
|
|
7
|
+
export function isTFOSupported() {
|
|
8
|
+
const os = platform();
|
|
9
|
+
return os === "linux" || os === "darwin";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build socket creation options for TCP Fast Open.
|
|
13
|
+
*
|
|
14
|
+
* @param {TFOOptions} [tfo] - TFO configuration.
|
|
15
|
+
* @returns {Record<string, unknown>} Options object to merge into socket creation.
|
|
16
|
+
*/
|
|
17
|
+
export function buildTFOSocketOptions(tfo) {
|
|
18
|
+
if (!tfo?.enabled || !isTFOSupported()) {
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
fastOpen: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Return the current TFO support status and platform name.
|
|
27
|
+
*
|
|
28
|
+
* @returns {{ supported: boolean; platform: string }} Object with `supported` flag and `platform` string.
|
|
29
|
+
*/
|
|
30
|
+
export function getTFOStatus() {
|
|
31
|
+
return {
|
|
32
|
+
supported: isTFOSupported(),
|
|
33
|
+
platform: platform(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=tcp-fast-open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp-fast-open.js","sourceRoot":"","sources":["../../src/utils/tcp-fast-open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,QAAQ,CAAC;AAC3C,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,SAAS,EAAE,cAAc,EAAE;QAC3B,QAAQ,EAAE,QAAQ,EAAE;KACrB,CAAC;AACJ,CAAC"}
|