nlcurl 0.7.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 +58 -36
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +58 -46
- package/dist/cache/store.js.map +1 -1
- package/dist/cache/types.d.ts +7 -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 +30 -39
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +27 -37
- 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 +17 -14
- 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 +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 +23 -111
- 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 +105 -76
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +44 -43
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +44 -56
- 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 +20 -18
- package/dist/dns/codec.d.ts.map +1 -1
- package/dist/dns/codec.js +20 -36
- 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 +46 -47
- 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 +158 -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 +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 +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 +31 -49
- package/dist/http/alt-svc.d.ts.map +1 -1
- package/dist/http/alt-svc.js +21 -55
- 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 +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 +5 -7
- package/dist/http/h3/detection.d.ts.map +1 -1
- package/dist/http/h3/detection.js +5 -23
- package/dist/http/h3/detection.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 +16 -28
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +32 -62
- 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 +21 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -2
- 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 +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 +128 -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 +5 -8
- package/dist/proxy/socks.js.map +1 -1
- package/dist/sse/parser.d.ts +14 -37
- package/dist/sse/parser.d.ts.map +1 -1
- package/dist/sse/parser.js +14 -28
- package/dist/sse/parser.js.map +1 -1
- 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 +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 +20 -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 +25 -44
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +17 -28
- 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 +11 -17
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +21 -31
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +15 -43
- 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 +16 -0
- package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -1
- package/dist/tls/stealth/tls12-handshake.js +8 -0
- package/dist/tls/stealth/tls12-handshake.js.map +1 -1
- package/dist/tls/types.d.ts +42 -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 +33 -53
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +29 -30
- 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 +18 -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 +62 -62
package/dist/cli/output.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Formats
|
|
3
|
-
* Includes headers when `args.include` or `args.verbose` is `true`. Returns
|
|
4
|
-
* only headers (no body) when `args.head` is `true`.
|
|
2
|
+
* Formats a complete CLI output string from a response and parsed arguments.
|
|
5
3
|
*
|
|
6
|
-
* @param {NLcURLResponse} response - The
|
|
7
|
-
* @param {ParsedArgs}
|
|
8
|
-
* @returns {string}
|
|
4
|
+
* @param {NLcURLResponse} response - The HTTP response.
|
|
5
|
+
* @param {ParsedArgs} args - The parsed CLI arguments.
|
|
6
|
+
* @returns {string} The formatted output string.
|
|
9
7
|
*/
|
|
10
8
|
export function formatOutput(response, args) {
|
|
11
9
|
const parts = [];
|
|
@@ -21,11 +19,10 @@ export function formatOutput(response, args) {
|
|
|
21
19
|
return parts.join("\n");
|
|
22
20
|
}
|
|
23
21
|
/**
|
|
24
|
-
* Formats
|
|
25
|
-
* `-i` / `--include` output.
|
|
22
|
+
* Formats response status line and headers as a human-readable string.
|
|
26
23
|
*
|
|
27
|
-
* @param {NLcURLResponse} response - The response
|
|
28
|
-
* @returns {string}
|
|
24
|
+
* @param {NLcURLResponse} response - The HTTP response.
|
|
25
|
+
* @returns {string} The formatted headers string.
|
|
29
26
|
*/
|
|
30
27
|
export function formatResponseHeaders(response) {
|
|
31
28
|
const lines = [];
|
|
@@ -36,14 +33,12 @@ export function formatResponseHeaders(response) {
|
|
|
36
33
|
return lines.join("\n");
|
|
37
34
|
}
|
|
38
35
|
/**
|
|
39
|
-
* Formats a verbose
|
|
40
|
-
* output. Each line is prefixed with `> ` and includes the request line,
|
|
41
|
-
* `Host` header, and all other headers.
|
|
36
|
+
* Formats a verbose request output showing the outgoing method, path, and headers.
|
|
42
37
|
*
|
|
43
|
-
* @param {string}
|
|
44
|
-
* @param {string}
|
|
45
|
-
* @param {Record<string, string>}
|
|
46
|
-
* @returns {string}
|
|
38
|
+
* @param {string} method - The HTTP method.
|
|
39
|
+
* @param {string} url - The full request URL.
|
|
40
|
+
* @param {Record<string, string>} headers - The request headers.
|
|
41
|
+
* @returns {string} The formatted verbose request string.
|
|
47
42
|
*/
|
|
48
43
|
export function formatVerboseRequest(method, url, headers) {
|
|
49
44
|
const parsed = new URL(url);
|
|
@@ -57,10 +52,9 @@ export function formatVerboseRequest(method, url, headers) {
|
|
|
57
52
|
return lines.join("\n");
|
|
58
53
|
}
|
|
59
54
|
/**
|
|
60
|
-
* Returns the
|
|
61
|
-
* their usage.
|
|
55
|
+
* Returns the CLI help text describing all available options.
|
|
62
56
|
*
|
|
63
|
-
* @returns {string}
|
|
57
|
+
* @returns {string} The help text.
|
|
64
58
|
*/
|
|
65
59
|
export function printHelp() {
|
|
66
60
|
return `nlcurl -- HTTP client with browser fingerprint impersonation
|
package/dist/cli/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,QAAwB,EAAE,IAAgB;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAErF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAW,EAAE,OAA+B;IAC/F,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAiDsE,CAAC;AAChF,CAAC"}
|
package/dist/cookies/jar.d.ts
CHANGED
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
import { type Cookie } from "./parser.js";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration options for the cookie jar.
|
|
4
|
+
*/
|
|
2
5
|
export interface CookieJarOptions {
|
|
3
|
-
/** Maximum total cookies across all domains (default: 3000). */
|
|
4
6
|
maxCookies?: number;
|
|
5
|
-
/** Maximum cookies per domain (default: 180, matching Chrome). */
|
|
6
7
|
maxCookiesPerDomain?: number;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* Manages HTTP cookies across requests, enforcing RFC 6265 semantics including
|
|
11
|
+
* domain scoping, path matching, __Host- / __Secure- prefix validation, and
|
|
12
|
+
* SameSite defaults.
|
|
13
|
+
*
|
|
14
|
+
* @class
|
|
12
15
|
*/
|
|
13
16
|
export declare class CookieJar {
|
|
14
17
|
private cookies;
|
|
15
18
|
private readonly maxCookies;
|
|
16
19
|
private readonly maxCookiesPerDomain;
|
|
17
|
-
/** Monotonic counter for deterministic LRU ordering within the same ms. */
|
|
18
20
|
private accessCounter;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new CookieJar.
|
|
23
|
+
*
|
|
24
|
+
* @param {CookieJarOptions} [options] - Jar capacity limits.
|
|
25
|
+
*/
|
|
19
26
|
constructor(options?: CookieJarOptions);
|
|
20
27
|
/**
|
|
21
|
-
*
|
|
22
|
-
* available to handle multiple `Set-Cookie` entries) and stores any valid
|
|
23
|
-
* cookies scoped to the request URL.
|
|
28
|
+
* Extracts and stores cookies from Set-Cookie response headers.
|
|
24
29
|
*
|
|
25
|
-
* @param {Record<string, string>}
|
|
26
|
-
* @param {URL}
|
|
27
|
-
* @param {Array<[string, string]>}
|
|
30
|
+
* @param {Record<string, string>} headers - The response headers.
|
|
31
|
+
* @param {URL} requestUrl - The URL that produced the response.
|
|
32
|
+
* @param {Array<[string, string]>} [rawHeaders] - Raw header pairs for duplicate Set-Cookie handling.
|
|
28
33
|
*/
|
|
29
34
|
setCookies(headers: Record<string, string>, requestUrl: URL, rawHeaders?: Array<[string, string]>): void;
|
|
30
35
|
/**
|
|
31
|
-
* Builds
|
|
32
|
-
* Cookies are sorted by longest path prefix first, then by creation time.
|
|
33
|
-
* Expired cookies are excluded automatically.
|
|
36
|
+
* Builds a Cookie header value for the given URL.
|
|
34
37
|
*
|
|
35
|
-
* @param {URL} url - The URL
|
|
36
|
-
* @returns {string}
|
|
37
|
-
* or an empty string if no cookies match.
|
|
38
|
+
* @param {URL} url - The target URL.
|
|
39
|
+
* @returns {string} The serialized cookie string, or an empty string if no cookies match.
|
|
38
40
|
*/
|
|
39
41
|
getCookieHeader(url: URL): string;
|
|
40
42
|
/**
|
|
@@ -42,48 +44,37 @@ export declare class CookieJar {
|
|
|
42
44
|
*/
|
|
43
45
|
clear(): void;
|
|
44
46
|
/**
|
|
45
|
-
* Removes all cookies
|
|
47
|
+
* Removes all cookies for a specific domain.
|
|
46
48
|
*
|
|
47
|
-
* @param {string} domain -
|
|
49
|
+
* @param {string} domain - The domain whose cookies should be removed.
|
|
48
50
|
*/
|
|
49
51
|
clearDomain(domain: string): void;
|
|
50
52
|
/**
|
|
51
|
-
* Returns a read-only
|
|
52
|
-
* including any that may already be expired.
|
|
53
|
+
* Returns a read-only view of all stored cookies.
|
|
53
54
|
*
|
|
54
|
-
* @returns {ReadonlyArray<Cookie>} All
|
|
55
|
+
* @returns {ReadonlyArray<Cookie>} All cookies in the jar.
|
|
55
56
|
*/
|
|
56
57
|
all(): ReadonlyArray<Cookie>;
|
|
57
58
|
/**
|
|
58
|
-
* Returns the
|
|
59
|
+
* Returns the number of cookies stored in the jar.
|
|
59
60
|
*
|
|
60
|
-
* @returns {number}
|
|
61
|
+
* @returns {number} The cookie count.
|
|
61
62
|
*/
|
|
62
63
|
get size(): number;
|
|
63
64
|
/**
|
|
64
|
-
* Serializes all cookies to Netscape cookie file format.
|
|
65
|
-
* saved to disk and reloaded via {@link CookieJar.loadNetscapeString}.
|
|
65
|
+
* Serializes all cookies to Netscape cookie file format.
|
|
66
66
|
*
|
|
67
|
-
* @returns {string}
|
|
67
|
+
* @returns {string} The cookie file content.
|
|
68
68
|
*/
|
|
69
69
|
toNetscapeString(): string;
|
|
70
70
|
/**
|
|
71
|
-
*
|
|
72
|
-
* `#` or blank lines are ignored. Cookies with invalid formats are skipped.
|
|
73
|
-
* Imported cookies are merged with any existing cookies in the jar.
|
|
71
|
+
* Loads cookies from a Netscape cookie file format string.
|
|
74
72
|
*
|
|
75
|
-
* @param {string} content -
|
|
73
|
+
* @param {string} content - The cookie file content.
|
|
76
74
|
*/
|
|
77
75
|
loadNetscapeString(content: string): void;
|
|
78
76
|
private store;
|
|
79
|
-
/**
|
|
80
|
-
* Evicts the least recently accessed cookie from a specific domain.
|
|
81
|
-
*/
|
|
82
77
|
private evictLRUForDomain;
|
|
83
|
-
/**
|
|
84
|
-
* Evicts one cookie globally, preferring the domain with the most cookies
|
|
85
|
-
* and then the least recently accessed cookie within that domain.
|
|
86
|
-
*/
|
|
87
78
|
private evictGlobalLRU;
|
|
88
79
|
private matches;
|
|
89
80
|
private domainMatches;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jar.d.ts","sourceRoot":"","sources":["../../src/cookies/jar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAK5E,MAAM,WAAW,gBAAgB;IAC/B,
|
|
1
|
+
{"version":3,"file":"jar.d.ts","sourceRoot":"","sources":["../../src/cookies/jar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAK5E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;OAIG;gBACS,OAAO,CAAC,EAAE,gBAAgB;IAKtC;;;;;;OAMG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI;IAWxG;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAiBjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;OAIG;IACH,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;IAI5B;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAmB1B;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IA2BzC,OAAO,CAAC,KAAK;IAuBb,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,sBAAsB;CAY/B"}
|
package/dist/cookies/jar.js
CHANGED
|
@@ -2,28 +2,32 @@ import { parseSetCookie, serializeCookies } from "./parser.js";
|
|
|
2
2
|
const DEFAULT_MAX_COOKIES = 3000;
|
|
3
3
|
const DEFAULT_MAX_COOKIES_PER_DOMAIN = 180;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Manages HTTP cookies across requests, enforcing RFC 6265 semantics including
|
|
6
|
+
* domain scoping, path matching, __Host- / __Secure- prefix validation, and
|
|
7
|
+
* SameSite defaults.
|
|
8
|
+
*
|
|
9
|
+
* @class
|
|
8
10
|
*/
|
|
9
11
|
export class CookieJar {
|
|
10
12
|
cookies = [];
|
|
11
13
|
maxCookies;
|
|
12
14
|
maxCookiesPerDomain;
|
|
13
|
-
/** Monotonic counter for deterministic LRU ordering within the same ms. */
|
|
14
15
|
accessCounter = 0;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new CookieJar.
|
|
18
|
+
*
|
|
19
|
+
* @param {CookieJarOptions} [options] - Jar capacity limits.
|
|
20
|
+
*/
|
|
15
21
|
constructor(options) {
|
|
16
22
|
this.maxCookies = options?.maxCookies ?? DEFAULT_MAX_COOKIES;
|
|
17
23
|
this.maxCookiesPerDomain = options?.maxCookiesPerDomain ?? DEFAULT_MAX_COOKIES_PER_DOMAIN;
|
|
18
24
|
}
|
|
19
25
|
/**
|
|
20
|
-
*
|
|
21
|
-
* available to handle multiple `Set-Cookie` entries) and stores any valid
|
|
22
|
-
* cookies scoped to the request URL.
|
|
26
|
+
* Extracts and stores cookies from Set-Cookie response headers.
|
|
23
27
|
*
|
|
24
|
-
* @param {Record<string, string>}
|
|
25
|
-
* @param {URL}
|
|
26
|
-
* @param {Array<[string, string]>}
|
|
28
|
+
* @param {Record<string, string>} headers - The response headers.
|
|
29
|
+
* @param {URL} requestUrl - The URL that produced the response.
|
|
30
|
+
* @param {Array<[string, string]>} [rawHeaders] - Raw header pairs for duplicate Set-Cookie handling.
|
|
27
31
|
*/
|
|
28
32
|
setCookies(headers, requestUrl, rawHeaders) {
|
|
29
33
|
const setCookieValues = this.extractSetCookieValues(headers, rawHeaders);
|
|
@@ -35,13 +39,10 @@ export class CookieJar {
|
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
/**
|
|
38
|
-
* Builds
|
|
39
|
-
* Cookies are sorted by longest path prefix first, then by creation time.
|
|
40
|
-
* Expired cookies are excluded automatically.
|
|
42
|
+
* Builds a Cookie header value for the given URL.
|
|
41
43
|
*
|
|
42
|
-
* @param {URL} url - The URL
|
|
43
|
-
* @returns {string}
|
|
44
|
-
* or an empty string if no cookies match.
|
|
44
|
+
* @param {URL} url - The target URL.
|
|
45
|
+
* @returns {string} The serialized cookie string, or an empty string if no cookies match.
|
|
45
46
|
*/
|
|
46
47
|
getCookieHeader(url) {
|
|
47
48
|
const now = Date.now();
|
|
@@ -65,35 +66,33 @@ export class CookieJar {
|
|
|
65
66
|
this.cookies = [];
|
|
66
67
|
}
|
|
67
68
|
/**
|
|
68
|
-
* Removes all cookies
|
|
69
|
+
* Removes all cookies for a specific domain.
|
|
69
70
|
*
|
|
70
|
-
* @param {string} domain -
|
|
71
|
+
* @param {string} domain - The domain whose cookies should be removed.
|
|
71
72
|
*/
|
|
72
73
|
clearDomain(domain) {
|
|
73
74
|
this.cookies = this.cookies.filter((c) => c.domain !== domain.toLowerCase());
|
|
74
75
|
}
|
|
75
76
|
/**
|
|
76
|
-
* Returns a read-only
|
|
77
|
-
* including any that may already be expired.
|
|
77
|
+
* Returns a read-only view of all stored cookies.
|
|
78
78
|
*
|
|
79
|
-
* @returns {ReadonlyArray<Cookie>} All
|
|
79
|
+
* @returns {ReadonlyArray<Cookie>} All cookies in the jar.
|
|
80
80
|
*/
|
|
81
81
|
all() {
|
|
82
82
|
return this.cookies;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
|
-
* Returns the
|
|
85
|
+
* Returns the number of cookies stored in the jar.
|
|
86
86
|
*
|
|
87
|
-
* @returns {number}
|
|
87
|
+
* @returns {number} The cookie count.
|
|
88
88
|
*/
|
|
89
89
|
get size() {
|
|
90
90
|
return this.cookies.length;
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
* Serializes all cookies to Netscape cookie file format.
|
|
94
|
-
* saved to disk and reloaded via {@link CookieJar.loadNetscapeString}.
|
|
93
|
+
* Serializes all cookies to Netscape cookie file format.
|
|
95
94
|
*
|
|
96
|
-
* @returns {string}
|
|
95
|
+
* @returns {string} The cookie file content.
|
|
97
96
|
*/
|
|
98
97
|
toNetscapeString() {
|
|
99
98
|
const lines = ["# Netscape HTTP Cookie File"];
|
|
@@ -115,11 +114,9 @@ export class CookieJar {
|
|
|
115
114
|
return lines.join("\n") + "\n";
|
|
116
115
|
}
|
|
117
116
|
/**
|
|
118
|
-
*
|
|
119
|
-
* `#` or blank lines are ignored. Cookies with invalid formats are skipped.
|
|
120
|
-
* Imported cookies are merged with any existing cookies in the jar.
|
|
117
|
+
* Loads cookies from a Netscape cookie file format string.
|
|
121
118
|
*
|
|
122
|
-
* @param {string} content -
|
|
119
|
+
* @param {string} content - The cookie file content.
|
|
123
120
|
*/
|
|
124
121
|
loadNetscapeString(content) {
|
|
125
122
|
for (const line of content.split("\n")) {
|
|
@@ -171,9 +168,6 @@ export class CookieJar {
|
|
|
171
168
|
this.cookies.push(cookie);
|
|
172
169
|
}
|
|
173
170
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Evicts the least recently accessed cookie from a specific domain.
|
|
176
|
-
*/
|
|
177
171
|
evictLRUForDomain(domain) {
|
|
178
172
|
let lruIdx = -1;
|
|
179
173
|
let lruTime = Infinity;
|
|
@@ -187,10 +181,6 @@ export class CookieJar {
|
|
|
187
181
|
if (lruIdx >= 0)
|
|
188
182
|
this.cookies.splice(lruIdx, 1);
|
|
189
183
|
}
|
|
190
|
-
/**
|
|
191
|
-
* Evicts one cookie globally, preferring the domain with the most cookies
|
|
192
|
-
* and then the least recently accessed cookie within that domain.
|
|
193
|
-
*/
|
|
194
184
|
evictGlobalLRU() {
|
|
195
185
|
const domainCounts = new Map();
|
|
196
186
|
for (const c of this.cookies) {
|
package/dist/cookies/jar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jar.js","sourceRoot":"","sources":["../../src/cookies/jar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAE5E,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,8BAA8B,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"jar.js","sourceRoot":"","sources":["../../src/cookies/jar.ts"],"names":[],"mappings":"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"}
|
package/dist/cookies/parser.d.ts
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Represents a parsed HTTP cookie
|
|
3
|
-
*
|
|
4
|
-
* @typedef {Object} Cookie
|
|
5
|
-
* @property {string} name - Cookie name.
|
|
6
|
-
* @property {string} value - Cookie value.
|
|
7
|
-
* @property {string} domain - Effective domain (without leading dot).
|
|
8
|
-
* @property {string} path - Cookie path scope.
|
|
9
|
-
* @property {Date} [expires] - Absolute expiry date (from the `Expires` attribute).
|
|
10
|
-
* @property {number} [maxAge] - Relative lifetime in seconds (from the `Max-Age` attribute).
|
|
11
|
-
* @property {boolean} secure - Whether the cookie is restricted to HTTPS.
|
|
12
|
-
* @property {boolean} httpOnly - Whether the cookie is inaccessible to client-side scripts.
|
|
13
|
-
* @property {'strict' | 'lax' | 'none'} [sameSite] - SameSite policy.
|
|
14
|
-
* @property {number} createdAt - Unix timestamp (ms) when the cookie was created.
|
|
2
|
+
* Represents a parsed HTTP cookie with all standard attributes.
|
|
15
3
|
*/
|
|
16
4
|
export interface Cookie {
|
|
17
5
|
name: string;
|
|
@@ -23,16 +11,24 @@ export interface Cookie {
|
|
|
23
11
|
secure: boolean;
|
|
24
12
|
httpOnly: boolean;
|
|
25
13
|
sameSite?: "strict" | "lax" | "none";
|
|
14
|
+
partitioned?: boolean;
|
|
26
15
|
createdAt: number;
|
|
27
|
-
/** Timestamp (ms) when the cookie was last matched in getCookieHeader() for LRU eviction. */
|
|
28
16
|
lastAccessedAt: number;
|
|
29
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Parses a Set-Cookie response header into a Cookie object, enforcing
|
|
20
|
+
* __Host- / __Secure- prefix rules, public suffix rejection, and SameSite defaults.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} header - The raw Set-Cookie header value.
|
|
23
|
+
* @param {URL} requestUrl - The URL of the originating request.
|
|
24
|
+
* @returns {Cookie|null} The parsed cookie, or `null` if validation fails.
|
|
25
|
+
*/
|
|
30
26
|
export declare function parseSetCookie(header: string, requestUrl: URL): Cookie | null;
|
|
31
27
|
/**
|
|
32
|
-
* Serializes an array of cookies into
|
|
28
|
+
* Serializes an array of cookies into a Cookie header value string.
|
|
33
29
|
*
|
|
34
|
-
* @param {Cookie[]} cookies -
|
|
35
|
-
* @returns {string}
|
|
30
|
+
* @param {Cookie[]} cookies - The cookies to serialize.
|
|
31
|
+
* @returns {string} The serialized "name=value; name=value" string.
|
|
36
32
|
*/
|
|
37
33
|
export declare function serializeCookies(cookies: Cookie[]): string;
|
|
38
34
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cookies/parser.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cookies/parser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAcD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CA8G7E;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1D"}
|
package/dist/cookies/parser.js
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import { isPublicSuffix } from "./public-suffix.js";
|
|
2
|
-
/**
|
|
3
|
-
* Parses a `Set-Cookie` header value into a {@link Cookie} object.
|
|
4
|
-
* Validates the cookie against the request URL to enforce domain and path
|
|
5
|
-
* scoping rules per RFC 6265.
|
|
6
|
-
*
|
|
7
|
-
* @param {string} header - Raw `Set-Cookie` header value.
|
|
8
|
-
* @param {URL} requestUrl - URL of the request that received the header.
|
|
9
|
-
* @returns {Cookie | null} Parsed cookie, or `null` if the header is invalid or
|
|
10
|
-
* the domain attribute fails validation against the request origin.
|
|
11
|
-
*/
|
|
12
2
|
const COOKIE_NAME_RE = /^[!#$%&'*+\-.^_`|~\w]+$/;
|
|
13
3
|
const COOKIE_VALUE_CTL_RE = /[\x00-\x1f\x7f]/;
|
|
14
4
|
const MAX_COOKIE_SIZE = 4096;
|
|
15
5
|
const VALID_SAMESITE = new Set(["strict", "lax", "none"]);
|
|
16
|
-
/** Returns true if the string looks like an IPv4 or IPv6 address. */
|
|
17
6
|
function looksLikeIP(host) {
|
|
18
7
|
if (host.includes(":"))
|
|
19
8
|
return true;
|
|
20
9
|
const parts = host.split(".");
|
|
21
10
|
return parts.length === 4 && parts.every((p) => /^\d{1,3}$/.test(p));
|
|
22
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Parses a Set-Cookie response header into a Cookie object, enforcing
|
|
14
|
+
* __Host- / __Secure- prefix rules, public suffix rejection, and SameSite defaults.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} header - The raw Set-Cookie header value.
|
|
17
|
+
* @param {URL} requestUrl - The URL of the originating request.
|
|
18
|
+
* @returns {Cookie|null} The parsed cookie, or `null` if validation fails.
|
|
19
|
+
*/
|
|
23
20
|
export function parseSetCookie(header, requestUrl) {
|
|
24
21
|
const parts = header.split(";").map((s) => s.trim());
|
|
25
22
|
if (parts.length === 0)
|
|
@@ -104,6 +101,9 @@ export function parseSetCookie(header, requestUrl) {
|
|
|
104
101
|
}
|
|
105
102
|
break;
|
|
106
103
|
}
|
|
104
|
+
case "partitioned":
|
|
105
|
+
cookie.partitioned = true;
|
|
106
|
+
break;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
if (cookie.sameSite === undefined) {
|
|
@@ -121,6 +121,9 @@ export function parseSetCookie(header, requestUrl) {
|
|
|
121
121
|
if (!cookie.secure)
|
|
122
122
|
return null;
|
|
123
123
|
}
|
|
124
|
+
if (cookie.partitioned && !cookie.secure) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
124
127
|
return cookie;
|
|
125
128
|
}
|
|
126
129
|
function defaultPath(path) {
|
|
@@ -132,10 +135,10 @@ function defaultPath(path) {
|
|
|
132
135
|
return path.substring(0, lastSlash);
|
|
133
136
|
}
|
|
134
137
|
/**
|
|
135
|
-
* Serializes an array of cookies into
|
|
138
|
+
* Serializes an array of cookies into a Cookie header value string.
|
|
136
139
|
*
|
|
137
|
-
* @param {Cookie[]} cookies -
|
|
138
|
-
* @returns {string}
|
|
140
|
+
* @param {Cookie[]} cookies - The cookies to serialize.
|
|
141
|
+
* @returns {string} The serialized "name=value; name=value" string.
|
|
139
142
|
*/
|
|
140
143
|
export function serializeCookies(cookies) {
|
|
141
144
|
return cookies.map((c) => `${c.name}=${c.value}`).join("; ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cookies/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cookies/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Complete Mozilla Public Suffix List rules.
|
|
5
5
|
* Generated from: https://publicsuffix.org/list/public_suffix_list.dat
|
|
6
|
-
* Generated on: 2026-03-08T17:
|
|
6
|
+
* Generated on: 2026-03-08T17:47:36.443Z
|
|
7
7
|
* Total rules: 10153
|
|
8
8
|
*
|
|
9
9
|
* To regenerate: npx tsx scripts/update-psl.ts
|
package/dist/cookies/psl-data.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Complete Mozilla Public Suffix List rules.
|
|
5
5
|
* Generated from: https://publicsuffix.org/list/public_suffix_list.dat
|
|
6
|
-
* Generated on: 2026-03-08T17:
|
|
6
|
+
* Generated on: 2026-03-08T17:47:36.443Z
|
|
7
7
|
* Total rules: 10153
|
|
8
8
|
*
|
|
9
9
|
* To regenerate: npx tsx scripts/update-psl.ts
|
|
@@ -1,37 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Uses the complete Mozilla Public Suffix List (10,000+ rules) to prevent
|
|
4
|
-
* supercookie attacks across all registered TLDs, ccSLDs, and hosting platforms.
|
|
2
|
+
* Determines whether a domain is a public suffix (eTLD) according to the Mozilla Public Suffix List.
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
* via `npx tsx scripts/update-psl.ts`. Regenerate periodically to stay current.
|
|
8
|
-
*
|
|
9
|
-
* Rules follow the PSL algorithm (https://wiki.mozilla.org/Public_Suffix_List/Algorithm):
|
|
10
|
-
* - A plain entry (e.g. `com`) means that label is a public suffix.
|
|
11
|
-
* - A wildcard entry (e.g. `*.uk`) means all two-label domains under `.uk` are suffixes.
|
|
12
|
-
* - An exception entry (e.g. `!www.ck`) overrides a wildcard and is NOT a suffix.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Determines whether the given domain is a public suffix (effective TLD).
|
|
16
|
-
* A public suffix is a domain under which the general public can register
|
|
17
|
-
* names — e.g. `com`, `co.uk`, `github.io`.
|
|
18
|
-
*
|
|
19
|
-
* Cookies must never be set with a `domain` attribute equal to a public
|
|
20
|
-
* suffix, as that would create a supercookie affecting all sites under
|
|
21
|
-
* that suffix.
|
|
22
|
-
*
|
|
23
|
-
* @param {string} domain - The domain to check (lowercase, no trailing dot).
|
|
4
|
+
* @param {string} domain - The domain to check.
|
|
24
5
|
* @returns {boolean} `true` if the domain is a public suffix.
|
|
25
6
|
*/
|
|
26
7
|
export declare function isPublicSuffix(domain: string): boolean;
|
|
27
8
|
/**
|
|
28
|
-
*
|
|
29
|
-
* For example, `"www.example.co.uk"` → `"example.co.uk"`.
|
|
30
|
-
* Returns `null` if the domain is itself a public suffix or if
|
|
31
|
-
* the input is invalid.
|
|
9
|
+
* Extracts the registrable domain (eTLD+1) from a hostname using the Public Suffix List.
|
|
32
10
|
*
|
|
33
|
-
* @param {string} hostname -
|
|
34
|
-
* @returns {string
|
|
11
|
+
* @param {string} hostname - The full hostname.
|
|
12
|
+
* @returns {string|null} The registrable domain, or `null` if the hostname is itself a public suffix.
|
|
35
13
|
*/
|
|
36
14
|
export declare function getRegistrableDomain(hostname: string): string | null;
|
|
37
15
|
//# sourceMappingURL=public-suffix.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-suffix.d.ts","sourceRoot":"","sources":["../../src/cookies/public-suffix.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"public-suffix.d.ts","sourceRoot":"","sources":["../../src/cookies/public-suffix.ts"],"names":[],"mappings":"AAsGA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAItD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAapE"}
|