nlcurl 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -140
- package/dist/cache/groups.d.ts +75 -0
- package/dist/cache/groups.d.ts.map +1 -0
- package/dist/cache/groups.js +118 -0
- package/dist/cache/groups.js.map +1 -0
- package/dist/cache/no-vary-search.d.ts +33 -0
- package/dist/cache/no-vary-search.d.ts.map +1 -0
- package/dist/cache/no-vary-search.js +148 -0
- package/dist/cache/no-vary-search.js.map +1 -0
- package/dist/cache/range.d.ts +120 -0
- package/dist/cache/range.d.ts.map +1 -0
- package/dist/cache/range.js +193 -0
- package/dist/cache/range.js.map +1 -0
- package/dist/cache/store.d.ts +111 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +414 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cache/types.d.ts +69 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +2 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/cli/args.d.ts +4 -37
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +3 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.d.ts +0 -5
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +14 -20
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +14 -20
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +33 -31
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +69 -33
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +14 -16
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +30 -13
- package/dist/cookies/parser.js.map +1 -1
- package/dist/cookies/psl-data.d.ts +1 -1
- package/dist/cookies/psl-data.js +1 -1
- package/dist/cookies/public-suffix.d.ts +5 -27
- package/dist/cookies/public-suffix.d.ts.map +1 -1
- package/dist/cookies/public-suffix.js +5 -37
- package/dist/cookies/public-suffix.js.map +1 -1
- package/dist/core/auth.d.ts +30 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +34 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/client.d.ts +28 -40
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +34 -41
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +64 -88
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +64 -88
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +63 -85
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +64 -59
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +70 -52
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +81 -70
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +198 -71
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +44 -42
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +47 -58
- package/dist/core/validation.js.map +1 -1
- package/dist/dns/cache.d.ts +59 -0
- package/dist/dns/cache.d.ts.map +1 -0
- package/dist/dns/cache.js +99 -0
- package/dist/dns/cache.js.map +1 -0
- package/dist/dns/codec.d.ts +39 -0
- package/dist/dns/codec.d.ts.map +1 -0
- package/dist/dns/codec.js +238 -0
- package/dist/dns/codec.js.map +1 -0
- package/dist/dns/doh-resolver.d.ts +38 -0
- package/dist/dns/doh-resolver.d.ts.map +1 -0
- package/dist/dns/doh-resolver.js +191 -0
- package/dist/dns/doh-resolver.js.map +1 -0
- package/dist/dns/dot-resolver.d.ts +89 -0
- package/dist/dns/dot-resolver.d.ts.map +1 -0
- package/dist/dns/dot-resolver.js +158 -0
- package/dist/dns/dot-resolver.js.map +1 -0
- package/dist/dns/https-rr.d.ts +40 -0
- package/dist/dns/https-rr.d.ts.map +1 -0
- package/dist/dns/https-rr.js +109 -0
- package/dist/dns/https-rr.js.map +1 -0
- package/dist/dns/types.d.ts +82 -0
- package/dist/dns/types.d.ts.map +1 -0
- package/dist/dns/types.js +23 -0
- package/dist/dns/types.js.map +1 -0
- package/dist/fingerprints/akamai.d.ts +3 -11
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +3 -11
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +6 -14
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +6 -14
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts +56 -71
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +58 -71
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +12 -30
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +12 -30
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/ja4.d.ts +18 -0
- package/dist/fingerprints/ja4.d.ts.map +1 -0
- package/dist/fingerprints/ja4.js +83 -0
- package/dist/fingerprints/ja4.js.map +1 -0
- package/dist/fingerprints/profiles/chrome.d.ts +18 -21
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +35 -31
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +7 -10
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +7 -10
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +8 -11
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +8 -11
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +11 -14
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +11 -14
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +5 -8
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +5 -8
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +42 -73
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/hsts/store.d.ts +39 -0
- package/dist/hsts/store.d.ts.map +1 -0
- package/dist/hsts/store.js +163 -0
- package/dist/hsts/store.js.map +1 -0
- package/dist/hsts/types.d.ts +24 -0
- package/dist/hsts/types.d.ts.map +1 -0
- package/dist/hsts/types.js +2 -0
- package/dist/hsts/types.js.map +1 -0
- package/dist/http/alt-svc.d.ts +67 -0
- package/dist/http/alt-svc.d.ts.map +1 -0
- package/dist/http/alt-svc.js +186 -0
- package/dist/http/alt-svc.js.map +1 -0
- package/dist/http/early-hints.d.ts +23 -0
- package/dist/http/early-hints.d.ts.map +1 -0
- package/dist/http/early-hints.js +33 -0
- package/dist/http/early-hints.js.map +1 -0
- package/dist/http/form-data.d.ts +17 -35
- package/dist/http/form-data.d.ts.map +1 -1
- package/dist/http/form-data.js +12 -34
- package/dist/http/form-data.js.map +1 -1
- package/dist/http/h1/client.d.ts +14 -26
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +29 -22
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +10 -17
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +10 -17
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +22 -59
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +15 -47
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +18 -59
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +29 -64
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +53 -84
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +48 -76
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +16 -35
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +16 -35
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/h3/detection.d.ts +15 -0
- package/dist/http/h3/detection.d.ts.map +1 -0
- package/dist/http/h3/detection.js +41 -0
- package/dist/http/h3/detection.js.map +1 -0
- package/dist/http/negotiator.d.ts +43 -33
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +99 -41
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +34 -64
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +22 -41
- package/dist/http/pool.js.map +1 -1
- package/dist/http/resumable-upload.d.ts +76 -0
- package/dist/http/resumable-upload.d.ts.map +1 -0
- package/dist/http/resumable-upload.js +104 -0
- package/dist/http/resumable-upload.js.map +1 -0
- package/dist/http/trailers.d.ts +29 -0
- package/dist/http/trailers.d.ts.map +1 -0
- package/dist/http/trailers.js +57 -0
- package/dist/http/trailers.js.map +1 -0
- package/dist/index.d.ts +36 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +13 -32
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js +11 -16
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts +8 -17
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +15 -12
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry-after.d.ts +15 -0
- package/dist/middleware/retry-after.d.ts.map +1 -0
- package/dist/middleware/retry-after.js +36 -0
- package/dist/middleware/retry-after.js.map +1 -0
- package/dist/middleware/retry.d.ts +9 -18
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +12 -9
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/auth.d.ts +73 -0
- package/dist/proxy/auth.d.ts.map +1 -0
- package/dist/proxy/auth.js +128 -0
- package/dist/proxy/auth.js.map +1 -0
- package/dist/proxy/env-proxy.d.ts +11 -0
- package/dist/proxy/env-proxy.d.ts.map +1 -0
- package/dist/proxy/env-proxy.js +56 -0
- package/dist/proxy/env-proxy.js.map +1 -0
- package/dist/proxy/http-proxy.d.ts +13 -18
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +24 -14
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +13 -20
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +6 -9
- package/dist/proxy/socks.js.map +1 -1
- package/dist/sse/parser.d.ts +47 -0
- package/dist/sse/parser.d.ts.map +1 -0
- package/dist/sse/parser.js +139 -0
- package/dist/sse/parser.js.map +1 -0
- package/dist/tls/constants.d.ts +15 -74
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +15 -74
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/ct.d.ts +78 -0
- package/dist/tls/ct.d.ts.map +1 -0
- package/dist/tls/ct.js +175 -0
- package/dist/tls/ct.js.map +1 -0
- package/dist/tls/early-data.d.ts +45 -0
- package/dist/tls/early-data.d.ts.map +1 -0
- package/dist/tls/early-data.js +46 -0
- package/dist/tls/early-data.js.map +1 -0
- package/dist/tls/ech.d.ts +130 -0
- package/dist/tls/ech.d.ts.map +1 -0
- package/dist/tls/ech.js +353 -0
- package/dist/tls/ech.js.map +1 -0
- package/dist/tls/keylog.d.ts +34 -0
- package/dist/tls/keylog.d.ts.map +1 -0
- package/dist/tls/keylog.js +64 -0
- package/dist/tls/keylog.js.map +1 -0
- package/dist/tls/node-engine.d.ts +15 -14
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +54 -14
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/ocsp.d.ts +55 -0
- package/dist/tls/ocsp.d.ts.map +1 -0
- package/dist/tls/ocsp.js +131 -0
- package/dist/tls/ocsp.js.map +1 -0
- package/dist/tls/pin-verification.d.ts +10 -0
- package/dist/tls/pin-verification.d.ts.map +1 -0
- package/dist/tls/pin-verification.js +28 -0
- package/dist/tls/pin-verification.js.map +1 -0
- package/dist/tls/session-cache.d.ts +58 -0
- package/dist/tls/session-cache.d.ts.map +1 -0
- package/dist/tls/session-cache.js +76 -0
- package/dist/tls/session-cache.js.map +1 -0
- package/dist/tls/stealth/client-hello.d.ts +34 -32
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +116 -11
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +5 -15
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +163 -47
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +23 -32
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +112 -27
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +59 -86
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +46 -58
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +52 -75
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +47 -63
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/stealth/tls12-handshake.d.ts +30 -0
- package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -0
- package/dist/tls/stealth/tls12-handshake.js +470 -0
- package/dist/tls/stealth/tls12-handshake.js.map +1 -0
- package/dist/tls/types.d.ts +46 -48
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/utils/buffer-reader.d.ts +26 -81
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js +26 -81
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts +30 -66
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +30 -66
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/compression.d.ts +18 -0
- package/dist/utils/compression.d.ts.map +1 -0
- package/dist/utils/compression.js +34 -0
- package/dist/utils/compression.js.map +1 -0
- package/dist/utils/dictionary-transport.d.ts +97 -0
- package/dist/utils/dictionary-transport.d.ts.map +1 -0
- package/dist/utils/dictionary-transport.js +171 -0
- package/dist/utils/dictionary-transport.js.map +1 -0
- package/dist/utils/encoding.d.ts +12 -28
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +77 -40
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/happy-eyeballs.d.ts +20 -7
- package/dist/utils/happy-eyeballs.d.ts.map +1 -1
- package/dist/utils/happy-eyeballs.js +57 -25
- package/dist/utils/happy-eyeballs.js.map +1 -1
- package/dist/utils/logger.d.ts +54 -81
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +92 -64
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/tcp-fast-open.d.ts +30 -0
- package/dist/utils/tcp-fast-open.d.ts.map +1 -0
- package/dist/utils/tcp-fast-open.js +36 -0
- package/dist/utils/tcp-fast-open.js.map +1 -0
- package/dist/utils/url.d.ts +18 -25
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +18 -25
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +35 -52
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +92 -37
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +27 -42
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +25 -37
- package/dist/ws/frame.js.map +1 -1
- package/dist/ws/permessage-deflate.d.ts +53 -0
- package/dist/ws/permessage-deflate.d.ts.map +1 -0
- package/dist/ws/permessage-deflate.js +140 -0
- package/dist/ws/permessage-deflate.js.map +1 -0
- package/package.json +62 -62
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental parser for the Server-Sent Events stream format.
|
|
3
|
+
*
|
|
4
|
+
* Feed chunks of text with {@link feed}, then pull discrete events
|
|
5
|
+
* with {@link pull}. Call {@link flush} after the stream closes to
|
|
6
|
+
* emit any buffered partial event.
|
|
7
|
+
*/
|
|
8
|
+
export class SSEParser {
|
|
9
|
+
static MAX_LINE_LENGTH = 65_536;
|
|
10
|
+
static MAX_EVENT_SIZE = 1_048_576;
|
|
11
|
+
buffer = "";
|
|
12
|
+
eventType = "";
|
|
13
|
+
dataLines = [];
|
|
14
|
+
dataSize = 0;
|
|
15
|
+
lastEventId = "";
|
|
16
|
+
retry = undefined;
|
|
17
|
+
events = [];
|
|
18
|
+
/**
|
|
19
|
+
* Append raw text from the event stream and parse complete lines.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} text - Chunk of UTF-8 text from the response body.
|
|
22
|
+
*/
|
|
23
|
+
feed(text) {
|
|
24
|
+
this.buffer += text;
|
|
25
|
+
if (this.buffer.length > SSEParser.MAX_LINE_LENGTH) {
|
|
26
|
+
throw new Error(`SSE line exceeds maximum length of ${SSEParser.MAX_LINE_LENGTH} bytes`);
|
|
27
|
+
}
|
|
28
|
+
const lines = this.buffer.split(/\r\n|\r|\n/);
|
|
29
|
+
this.buffer = lines.pop();
|
|
30
|
+
for (const line of lines) {
|
|
31
|
+
this.processLine(line);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Remove and return the next fully-parsed event from the queue.
|
|
36
|
+
*
|
|
37
|
+
* @returns {ServerSentEvent|null} The next {@link ServerSentEvent}, or `null` if the queue is empty.
|
|
38
|
+
*/
|
|
39
|
+
pull() {
|
|
40
|
+
return this.events.shift() ?? null;
|
|
41
|
+
}
|
|
42
|
+
/** Flush any remaining buffered data and dispatch a final event if present. */
|
|
43
|
+
flush() {
|
|
44
|
+
if (this.buffer.length > 0) {
|
|
45
|
+
this.processLine(this.buffer);
|
|
46
|
+
this.buffer = "";
|
|
47
|
+
}
|
|
48
|
+
this.dispatchEvent();
|
|
49
|
+
}
|
|
50
|
+
processLine(line) {
|
|
51
|
+
if (line === "") {
|
|
52
|
+
this.dispatchEvent();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (line.startsWith(":"))
|
|
56
|
+
return;
|
|
57
|
+
const colonIdx = line.indexOf(":");
|
|
58
|
+
let field;
|
|
59
|
+
let value;
|
|
60
|
+
if (colonIdx === -1) {
|
|
61
|
+
field = line;
|
|
62
|
+
value = "";
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
field = line.substring(0, colonIdx);
|
|
66
|
+
value = line.substring(colonIdx + 1);
|
|
67
|
+
if (value.startsWith(" ")) {
|
|
68
|
+
value = value.substring(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
switch (field) {
|
|
72
|
+
case "event":
|
|
73
|
+
this.eventType = value;
|
|
74
|
+
break;
|
|
75
|
+
case "data":
|
|
76
|
+
this.dataSize += value.length + 1;
|
|
77
|
+
if (this.dataSize > SSEParser.MAX_EVENT_SIZE) {
|
|
78
|
+
throw new Error(`SSE event data exceeds maximum size of ${SSEParser.MAX_EVENT_SIZE} bytes`);
|
|
79
|
+
}
|
|
80
|
+
this.dataLines.push(value);
|
|
81
|
+
break;
|
|
82
|
+
case "id":
|
|
83
|
+
if (!value.includes("\0")) {
|
|
84
|
+
this.lastEventId = value;
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
case "retry": {
|
|
88
|
+
const parsed = parseInt(value, 10);
|
|
89
|
+
if (!Number.isNaN(parsed) && parsed >= 0 && String(parsed) === value.trim()) {
|
|
90
|
+
this.retry = parsed;
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
dispatchEvent() {
|
|
97
|
+
if (this.dataLines.length === 0) {
|
|
98
|
+
this.eventType = "";
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const event = {
|
|
102
|
+
event: this.eventType || "message",
|
|
103
|
+
data: this.dataLines.join("\n"),
|
|
104
|
+
id: this.lastEventId,
|
|
105
|
+
retry: this.retry,
|
|
106
|
+
};
|
|
107
|
+
this.events.push(event);
|
|
108
|
+
this.dataLines = [];
|
|
109
|
+
this.dataSize = 0;
|
|
110
|
+
this.eventType = "";
|
|
111
|
+
this.retry = undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Consume a readable stream as a Server-Sent Events source.
|
|
116
|
+
*
|
|
117
|
+
* Yields individual {@link ServerSentEvent} objects as they are parsed
|
|
118
|
+
* from the stream in real time.
|
|
119
|
+
*
|
|
120
|
+
* @param {Readable} stream - Readable stream carrying `text/event-stream` data.
|
|
121
|
+
* @returns {AsyncGenerator<ServerSentEvent>} Async generator of server-sent events.
|
|
122
|
+
*/
|
|
123
|
+
export async function* parseSSEStream(stream) {
|
|
124
|
+
const parser = new SSEParser();
|
|
125
|
+
for await (const chunk of stream) {
|
|
126
|
+
const text = typeof chunk === "string" ? chunk : chunk.toString("utf8");
|
|
127
|
+
parser.feed(text);
|
|
128
|
+
let event;
|
|
129
|
+
while ((event = parser.pull()) !== null) {
|
|
130
|
+
yield event;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
parser.flush();
|
|
134
|
+
let event;
|
|
135
|
+
while ((event = parser.pull()) !== null) {
|
|
136
|
+
yield event;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/sse/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/tls/constants.d.ts
CHANGED
|
@@ -1,31 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TLS record content type codes (RFC 8446 §5.1).
|
|
3
|
-
*
|
|
4
|
-
* @enum {number}
|
|
5
|
-
*/
|
|
1
|
+
/** TLS record content type identifiers. */
|
|
6
2
|
export declare const RecordType: {
|
|
7
3
|
readonly CHANGE_CIPHER_SPEC: 20;
|
|
8
4
|
readonly ALERT: 21;
|
|
9
5
|
readonly HANDSHAKE: 22;
|
|
10
6
|
readonly APPLICATION_DATA: 23;
|
|
11
7
|
};
|
|
12
|
-
/**
|
|
13
|
-
* TLS protocol version codes as used in the record layer and handshake
|
|
14
|
-
* (RFC 8446 Appendix B.3.1).
|
|
15
|
-
*
|
|
16
|
-
* @enum {number}
|
|
17
|
-
*/
|
|
8
|
+
/** TLS protocol version numbers. */
|
|
18
9
|
export declare const ProtocolVersion: {
|
|
19
10
|
readonly TLS_1_0: 769;
|
|
20
11
|
readonly TLS_1_1: 770;
|
|
21
12
|
readonly TLS_1_2: 771;
|
|
22
13
|
readonly TLS_1_3: 772;
|
|
23
14
|
};
|
|
24
|
-
/**
|
|
25
|
-
* TLS handshake message type codes (RFC 8446 ¥4).
|
|
26
|
-
*
|
|
27
|
-
* @enum {number}
|
|
28
|
-
*/
|
|
15
|
+
/** TLS handshake message type identifiers. */
|
|
29
16
|
export declare const HandshakeType: {
|
|
30
17
|
readonly CLIENT_HELLO: 1;
|
|
31
18
|
readonly SERVER_HELLO: 2;
|
|
@@ -39,12 +26,7 @@ export declare const HandshakeType: {
|
|
|
39
26
|
readonly KEY_UPDATE: 24;
|
|
40
27
|
readonly MESSAGE_HASH: 254;
|
|
41
28
|
};
|
|
42
|
-
/**
|
|
43
|
-
* IANA TLS cipher suite codes supported by the stealth engine and used to
|
|
44
|
-
* construct JA3 fingerprints (RFC 8446, RFC 5246).
|
|
45
|
-
*
|
|
46
|
-
* @enum {number}
|
|
47
|
-
*/
|
|
29
|
+
/** TLS cipher suite numeric identifiers. */
|
|
48
30
|
export declare const CipherSuite: {
|
|
49
31
|
readonly TLS_AES_128_GCM_SHA256: 4865;
|
|
50
32
|
readonly TLS_AES_256_GCM_SHA384: 4866;
|
|
@@ -64,11 +46,7 @@ export declare const CipherSuite: {
|
|
|
64
46
|
readonly TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: 49161;
|
|
65
47
|
readonly TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: 49162;
|
|
66
48
|
};
|
|
67
|
-
/**
|
|
68
|
-
* IANA TLS extension type codes (RFC 8446 Appendix B.3.1 and related RFCs).
|
|
69
|
-
*
|
|
70
|
-
* @enum {number}
|
|
71
|
-
*/
|
|
49
|
+
/** TLS extension type numeric identifiers. */
|
|
72
50
|
export declare const ExtensionType: {
|
|
73
51
|
readonly SERVER_NAME: 0;
|
|
74
52
|
readonly EC_POINT_FORMATS: 11;
|
|
@@ -95,12 +73,7 @@ export declare const ExtensionType: {
|
|
|
95
73
|
readonly ENCRYPTED_CLIENT_HELLO: 65037;
|
|
96
74
|
readonly POST_HANDSHAKE_AUTH: 49;
|
|
97
75
|
};
|
|
98
|
-
/**
|
|
99
|
-
* IANA named group codes for elliptic curves and finite-field DH groups
|
|
100
|
-
* used in TLS key exchange (RFC 8422, RFC 7748).
|
|
101
|
-
*
|
|
102
|
-
* @enum {number}
|
|
103
|
-
*/
|
|
76
|
+
/** TLS supported named groups (curves and key exchange). */
|
|
104
77
|
export declare const NamedGroup: {
|
|
105
78
|
readonly X25519: 29;
|
|
106
79
|
readonly SECP256R1: 23;
|
|
@@ -112,12 +85,7 @@ export declare const NamedGroup: {
|
|
|
112
85
|
readonly X25519_KYBER768: 25497;
|
|
113
86
|
readonly X25519_MLKEM768: 17800;
|
|
114
87
|
};
|
|
115
|
-
/**
|
|
116
|
-
* IANA TLS signature scheme codes used in the `signature_algorithms` extension
|
|
117
|
-
* and in `CertificateVerify` messages (RFC 8446 Appendix B.3.1.3).
|
|
118
|
-
*
|
|
119
|
-
* @enum {number}
|
|
120
|
-
*/
|
|
88
|
+
/** TLS signature scheme identifiers. */
|
|
121
89
|
export declare const SignatureScheme: {
|
|
122
90
|
readonly ECDSA_SECP256R1_SHA256: 1027;
|
|
123
91
|
readonly ECDSA_SECP384R1_SHA384: 1283;
|
|
@@ -136,58 +104,31 @@ export declare const SignatureScheme: {
|
|
|
136
104
|
readonly RSA_PKCS1_SHA1: 513;
|
|
137
105
|
readonly ECDSA_SHA1: 515;
|
|
138
106
|
};
|
|
139
|
-
/**
|
|
140
|
-
* EC point format codes used in the `ec_point_formats` TLS extension
|
|
141
|
-
* (RFC 8422 §5.1.2). Only `UNCOMPRESSED` (`0`) is used in practice.
|
|
142
|
-
*
|
|
143
|
-
* @enum {number}
|
|
144
|
-
*/
|
|
107
|
+
/** Elliptic curve point format identifiers. */
|
|
145
108
|
export declare const ECPointFormat: {
|
|
146
109
|
readonly UNCOMPRESSED: 0;
|
|
147
110
|
};
|
|
148
|
-
/**
|
|
149
|
-
* PSK key exchange mode codes used in the `psk_key_exchange_modes` extension
|
|
150
|
-
* (RFC 8446 ¥4.2.9).
|
|
151
|
-
*
|
|
152
|
-
* @enum {number}
|
|
153
|
-
*/
|
|
111
|
+
/** Pre-shared key exchange mode identifiers. */
|
|
154
112
|
export declare const PskKeyExchangeMode: {
|
|
155
113
|
readonly PSK_KE: 0;
|
|
156
114
|
readonly PSK_DHE_KE: 1;
|
|
157
115
|
};
|
|
158
|
-
/**
|
|
159
|
-
* Certificate compression algorithm codes used in the `compress_certificate`
|
|
160
|
-
* extension (RFC 8879).
|
|
161
|
-
*
|
|
162
|
-
* @enum {number}
|
|
163
|
-
*/
|
|
116
|
+
/** Certificate compression algorithm identifiers. */
|
|
164
117
|
export declare const CertCompressAlg: {
|
|
165
118
|
readonly ZLIB: 1;
|
|
166
119
|
readonly BROTLI: 2;
|
|
167
120
|
readonly ZSTD: 3;
|
|
168
121
|
};
|
|
169
|
-
/**
|
|
170
|
-
* The 16 GREASE values defined in RFC 8701. These are injected into cipher
|
|
171
|
-
* suite lists, extension type lists, and named group lists to encourage
|
|
172
|
-
* servers to be tolerant of unknown values.
|
|
173
|
-
*
|
|
174
|
-
* @type {readonly number[]}
|
|
175
|
-
*/
|
|
122
|
+
/** Standard GREASE (Generate Random Extensions And Sustain Extensibility) values. */
|
|
176
123
|
export declare const GREASE_VALUES: readonly number[];
|
|
177
124
|
/**
|
|
178
|
-
*
|
|
179
|
-
* the 16 GREASE values defined in RFC 8701.
|
|
125
|
+
* Select a deterministic GREASE value from a seed.
|
|
180
126
|
*
|
|
181
|
-
* @param {number} seed -
|
|
182
|
-
* @returns {number}
|
|
127
|
+
* @param {number} seed - Numeric seed for index selection.
|
|
128
|
+
* @returns {number} GREASE value from the standard set.
|
|
183
129
|
*/
|
|
184
130
|
export declare function greaseValue(seed: number): number;
|
|
185
|
-
/**
|
|
186
|
-
* TLS alert description codes (RFC 8446 Appendix B.2). Used to interpret
|
|
187
|
-
* alert records received from the server during or after the handshake.
|
|
188
|
-
*
|
|
189
|
-
* @enum {number}
|
|
190
|
-
*/
|
|
131
|
+
/** TLS alert description codes. */
|
|
191
132
|
export declare const AlertDescription: {
|
|
192
133
|
readonly CLOSE_NOTIFY: 0;
|
|
193
134
|
readonly UNEXPECTED_MESSAGE: 10;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,oCAAoC;AACpC,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYhB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAoBd,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhB,CAAC;AAEX,4DAA4D;AAC5D,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC;AAEX,+CAA+C;AAC/C,eAAO,MAAM,aAAa;;CAEhB,CAAC;AAEX,gDAAgD;AAChD,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,qFAAqF;AACrF,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAAqI,CAAC;AAEjL;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,mCAAmC;AACnC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;CAoBnB,CAAC"}
|
package/dist/tls/constants.js
CHANGED
|
@@ -1,31 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TLS record content type codes (RFC 8446 §5.1).
|
|
3
|
-
*
|
|
4
|
-
* @enum {number}
|
|
5
|
-
*/
|
|
1
|
+
/** TLS record content type identifiers. */
|
|
6
2
|
export const RecordType = {
|
|
7
3
|
CHANGE_CIPHER_SPEC: 20,
|
|
8
4
|
ALERT: 21,
|
|
9
5
|
HANDSHAKE: 22,
|
|
10
6
|
APPLICATION_DATA: 23,
|
|
11
7
|
};
|
|
12
|
-
/**
|
|
13
|
-
* TLS protocol version codes as used in the record layer and handshake
|
|
14
|
-
* (RFC 8446 Appendix B.3.1).
|
|
15
|
-
*
|
|
16
|
-
* @enum {number}
|
|
17
|
-
*/
|
|
8
|
+
/** TLS protocol version numbers. */
|
|
18
9
|
export const ProtocolVersion = {
|
|
19
10
|
TLS_1_0: 0x0301,
|
|
20
11
|
TLS_1_1: 0x0302,
|
|
21
12
|
TLS_1_2: 0x0303,
|
|
22
13
|
TLS_1_3: 0x0304,
|
|
23
14
|
};
|
|
24
|
-
/**
|
|
25
|
-
* TLS handshake message type codes (RFC 8446 ¥4).
|
|
26
|
-
*
|
|
27
|
-
* @enum {number}
|
|
28
|
-
*/
|
|
15
|
+
/** TLS handshake message type identifiers. */
|
|
29
16
|
export const HandshakeType = {
|
|
30
17
|
CLIENT_HELLO: 1,
|
|
31
18
|
SERVER_HELLO: 2,
|
|
@@ -39,12 +26,7 @@ export const HandshakeType = {
|
|
|
39
26
|
KEY_UPDATE: 24,
|
|
40
27
|
MESSAGE_HASH: 254,
|
|
41
28
|
};
|
|
42
|
-
/**
|
|
43
|
-
* IANA TLS cipher suite codes supported by the stealth engine and used to
|
|
44
|
-
* construct JA3 fingerprints (RFC 8446, RFC 5246).
|
|
45
|
-
*
|
|
46
|
-
* @enum {number}
|
|
47
|
-
*/
|
|
29
|
+
/** TLS cipher suite numeric identifiers. */
|
|
48
30
|
export const CipherSuite = {
|
|
49
31
|
TLS_AES_128_GCM_SHA256: 0x1301,
|
|
50
32
|
TLS_AES_256_GCM_SHA384: 0x1302,
|
|
@@ -64,11 +46,7 @@ export const CipherSuite = {
|
|
|
64
46
|
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: 0xc009,
|
|
65
47
|
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: 0xc00a,
|
|
66
48
|
};
|
|
67
|
-
/**
|
|
68
|
-
* IANA TLS extension type codes (RFC 8446 Appendix B.3.1 and related RFCs).
|
|
69
|
-
*
|
|
70
|
-
* @enum {number}
|
|
71
|
-
*/
|
|
49
|
+
/** TLS extension type numeric identifiers. */
|
|
72
50
|
export const ExtensionType = {
|
|
73
51
|
SERVER_NAME: 0x0000,
|
|
74
52
|
EC_POINT_FORMATS: 0x000b,
|
|
@@ -95,12 +73,7 @@ export const ExtensionType = {
|
|
|
95
73
|
ENCRYPTED_CLIENT_HELLO: 0xfe0d,
|
|
96
74
|
POST_HANDSHAKE_AUTH: 0x0031,
|
|
97
75
|
};
|
|
98
|
-
/**
|
|
99
|
-
* IANA named group codes for elliptic curves and finite-field DH groups
|
|
100
|
-
* used in TLS key exchange (RFC 8422, RFC 7748).
|
|
101
|
-
*
|
|
102
|
-
* @enum {number}
|
|
103
|
-
*/
|
|
76
|
+
/** TLS supported named groups (curves and key exchange). */
|
|
104
77
|
export const NamedGroup = {
|
|
105
78
|
X25519: 0x001d,
|
|
106
79
|
SECP256R1: 0x0017,
|
|
@@ -112,12 +85,7 @@ export const NamedGroup = {
|
|
|
112
85
|
X25519_KYBER768: 0x6399,
|
|
113
86
|
X25519_MLKEM768: 0x4588,
|
|
114
87
|
};
|
|
115
|
-
/**
|
|
116
|
-
* IANA TLS signature scheme codes used in the `signature_algorithms` extension
|
|
117
|
-
* and in `CertificateVerify` messages (RFC 8446 Appendix B.3.1.3).
|
|
118
|
-
*
|
|
119
|
-
* @enum {number}
|
|
120
|
-
*/
|
|
88
|
+
/** TLS signature scheme identifiers. */
|
|
121
89
|
export const SignatureScheme = {
|
|
122
90
|
ECDSA_SECP256R1_SHA256: 0x0403,
|
|
123
91
|
ECDSA_SECP384R1_SHA384: 0x0503,
|
|
@@ -136,60 +104,33 @@ export const SignatureScheme = {
|
|
|
136
104
|
RSA_PKCS1_SHA1: 0x0201,
|
|
137
105
|
ECDSA_SHA1: 0x0203,
|
|
138
106
|
};
|
|
139
|
-
/**
|
|
140
|
-
* EC point format codes used in the `ec_point_formats` TLS extension
|
|
141
|
-
* (RFC 8422 §5.1.2). Only `UNCOMPRESSED` (`0`) is used in practice.
|
|
142
|
-
*
|
|
143
|
-
* @enum {number}
|
|
144
|
-
*/
|
|
107
|
+
/** Elliptic curve point format identifiers. */
|
|
145
108
|
export const ECPointFormat = {
|
|
146
109
|
UNCOMPRESSED: 0,
|
|
147
110
|
};
|
|
148
|
-
/**
|
|
149
|
-
* PSK key exchange mode codes used in the `psk_key_exchange_modes` extension
|
|
150
|
-
* (RFC 8446 ¥4.2.9).
|
|
151
|
-
*
|
|
152
|
-
* @enum {number}
|
|
153
|
-
*/
|
|
111
|
+
/** Pre-shared key exchange mode identifiers. */
|
|
154
112
|
export const PskKeyExchangeMode = {
|
|
155
113
|
PSK_KE: 0,
|
|
156
114
|
PSK_DHE_KE: 1,
|
|
157
115
|
};
|
|
158
|
-
/**
|
|
159
|
-
* Certificate compression algorithm codes used in the `compress_certificate`
|
|
160
|
-
* extension (RFC 8879).
|
|
161
|
-
*
|
|
162
|
-
* @enum {number}
|
|
163
|
-
*/
|
|
116
|
+
/** Certificate compression algorithm identifiers. */
|
|
164
117
|
export const CertCompressAlg = {
|
|
165
118
|
ZLIB: 1,
|
|
166
119
|
BROTLI: 2,
|
|
167
120
|
ZSTD: 3,
|
|
168
121
|
};
|
|
169
|
-
/**
|
|
170
|
-
* The 16 GREASE values defined in RFC 8701. These are injected into cipher
|
|
171
|
-
* suite lists, extension type lists, and named group lists to encourage
|
|
172
|
-
* servers to be tolerant of unknown values.
|
|
173
|
-
*
|
|
174
|
-
* @type {readonly number[]}
|
|
175
|
-
*/
|
|
122
|
+
/** Standard GREASE (Generate Random Extensions And Sustain Extensibility) values. */
|
|
176
123
|
export const GREASE_VALUES = [0x0a0a, 0x1a1a, 0x2a2a, 0x3a3a, 0x4a4a, 0x5a5a, 0x6a6a, 0x7a7a, 0x8a8a, 0x9a9a, 0xaaaa, 0xbaba, 0xcaca, 0xdada, 0xeaea, 0xfafa];
|
|
177
124
|
/**
|
|
178
|
-
*
|
|
179
|
-
* the 16 GREASE values defined in RFC 8701.
|
|
125
|
+
* Select a deterministic GREASE value from a seed.
|
|
180
126
|
*
|
|
181
|
-
* @param {number} seed -
|
|
182
|
-
* @returns {number}
|
|
127
|
+
* @param {number} seed - Numeric seed for index selection.
|
|
128
|
+
* @returns {number} GREASE value from the standard set.
|
|
183
129
|
*/
|
|
184
130
|
export function greaseValue(seed) {
|
|
185
131
|
return GREASE_VALUES[seed % GREASE_VALUES.length];
|
|
186
132
|
}
|
|
187
|
-
/**
|
|
188
|
-
* TLS alert description codes (RFC 8446 Appendix B.2). Used to interpret
|
|
189
|
-
* alert records received from the server during or after the handshake.
|
|
190
|
-
*
|
|
191
|
-
* @enum {number}
|
|
192
|
-
*/
|
|
133
|
+
/** TLS alert description codes. */
|
|
193
134
|
export const AlertDescription = {
|
|
194
135
|
CLOSE_NOTIFY: 0,
|
|
195
136
|
UNEXPECTED_MESSAGE: 10,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/tls/ct.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** Hash algorithms used in Signed Certificate Timestamps. */
|
|
2
|
+
export declare enum SCTHashAlgorithm {
|
|
3
|
+
NONE = 0,
|
|
4
|
+
MD5 = 1,
|
|
5
|
+
SHA1 = 2,
|
|
6
|
+
SHA224 = 3,
|
|
7
|
+
SHA256 = 4,
|
|
8
|
+
SHA384 = 5,
|
|
9
|
+
SHA512 = 6
|
|
10
|
+
}
|
|
11
|
+
/** Digital signature algorithms used in Signed Certificate Timestamps. */
|
|
12
|
+
export declare enum SCTSignatureAlgorithm {
|
|
13
|
+
ANONYMOUS = 0,
|
|
14
|
+
RSA = 1,
|
|
15
|
+
DSA = 2,
|
|
16
|
+
ECDSA = 3
|
|
17
|
+
}
|
|
18
|
+
/** Signed Certificate Timestamp version identifiers. */
|
|
19
|
+
export declare enum SCTVersion {
|
|
20
|
+
V1 = 0
|
|
21
|
+
}
|
|
22
|
+
/** Parsed Signed Certificate Timestamp (RFC 6962). */
|
|
23
|
+
export interface SCT {
|
|
24
|
+
/** SCT structure version. */
|
|
25
|
+
version: SCTVersion;
|
|
26
|
+
/** Log ID (SHA-256 hash of the log's public key). */
|
|
27
|
+
logId: Buffer;
|
|
28
|
+
/** Timestamp when the SCT was issued. */
|
|
29
|
+
timestamp: Date;
|
|
30
|
+
/** SCT extensions data. */
|
|
31
|
+
extensions: Buffer;
|
|
32
|
+
/** Hash algorithm used in the signature. */
|
|
33
|
+
hashAlgorithm: SCTHashAlgorithm;
|
|
34
|
+
/** Signature algorithm used. */
|
|
35
|
+
signatureAlgorithm: SCTSignatureAlgorithm;
|
|
36
|
+
/** Digital signature bytes. */
|
|
37
|
+
signature: Buffer;
|
|
38
|
+
}
|
|
39
|
+
/** Result of validating SCTs for Certificate Transparency compliance. */
|
|
40
|
+
export interface SCTValidationResult {
|
|
41
|
+
/** Whether the certificate meets CT compliance requirements. */
|
|
42
|
+
compliant: boolean;
|
|
43
|
+
/** Number of unique SCTs found. */
|
|
44
|
+
sctCount: number;
|
|
45
|
+
/** Deduplicated SCT entries. */
|
|
46
|
+
scts: SCT[];
|
|
47
|
+
/** Source from which the SCTs were obtained. */
|
|
48
|
+
source?: "embedded" | "tls-extension" | "ocsp";
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Parse a serialized SCT list into individual SCT entries.
|
|
52
|
+
*
|
|
53
|
+
* @param {Buffer} data - TLS-encoded SCT list buffer.
|
|
54
|
+
* @returns {SCT[]} Array of parsed {@link SCT} objects.
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseSCTList(data: Buffer): SCT[];
|
|
57
|
+
/**
|
|
58
|
+
* Validate a set of SCTs for Certificate Transparency compliance.
|
|
59
|
+
*
|
|
60
|
+
* Deduplicates by log ID and requires at least two unique logs.
|
|
61
|
+
*
|
|
62
|
+
* @param {SCT[]} scts - Array of parsed SCTs.
|
|
63
|
+
* @returns {SCTValidationResult} Validation result with compliance status.
|
|
64
|
+
*/
|
|
65
|
+
export declare function validateSCTs(scts: SCT[]): SCTValidationResult;
|
|
66
|
+
/**
|
|
67
|
+
* Extract embedded SCTs from a TLS socket's peer certificate.
|
|
68
|
+
*
|
|
69
|
+
* @param {{ getPeerCertificate?: (detailed?: boolean) => { raw?: Buffer; serialNumber?: string } }} socket - Socket with a `getPeerCertificate` method.
|
|
70
|
+
* @returns {SCTValidationResult | undefined} Validation result, or `undefined` if SCTs cannot be extracted.
|
|
71
|
+
*/
|
|
72
|
+
export declare function extractSCTsFromSocket(socket: {
|
|
73
|
+
getPeerCertificate?: (detailed?: boolean) => {
|
|
74
|
+
raw?: Buffer;
|
|
75
|
+
serialNumber?: string;
|
|
76
|
+
};
|
|
77
|
+
}): SCTValidationResult | undefined;
|
|
78
|
+
//# sourceMappingURL=ct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct.d.ts","sourceRoot":"","sources":["../../src/tls/ct.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,GAAG,IAAI;IACP,IAAI,IAAI;IACR,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,0EAA0E;AAC1E,oBAAY,qBAAqB;IAC/B,SAAS,IAAI;IACb,GAAG,IAAI;IACP,GAAG,IAAI;IACP,KAAK,IAAI;CACV;AAED,wDAAwD;AACxD,oBAAY,UAAU;IACpB,EAAE,IAAI;CACP;AAED,sDAAsD;AACtD,MAAM,WAAW,GAAG;IAClB,6BAA6B;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAE,IAAI,CAAC;IAChB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,aAAa,EAAE,gBAAgB,CAAC;IAChC,gCAAgC;IAChC,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,gDAAgD;IAChD,MAAM,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,MAAM,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,CAsBhD;AA+CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAgB7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,kBAAkB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,mBAAmB,GAAG,SAAS,CA2CvK"}
|