nlcurl 0.8.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 +14 -8
- package/dist/cache/store.d.ts +23 -7
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +164 -44
- package/dist/cache/store.js.map +1 -1
- package/dist/cache/types.d.ts +3 -0
- package/dist/cache/types.d.ts.map +1 -1
- package/dist/cookies/jar.d.ts +11 -1
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +38 -5
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +6 -1
- 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/core/auth.d.ts +36 -5
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +126 -1
- package/dist/core/auth.js.map +1 -1
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +10 -2
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +32 -2
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +14 -0
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +97 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/dns/cache.d.ts +8 -2
- package/dist/dns/cache.d.ts.map +1 -1
- package/dist/dns/cache.js +22 -2
- package/dist/dns/cache.js.map +1 -1
- package/dist/dns/codec.d.ts +9 -1
- package/dist/dns/codec.d.ts.map +1 -1
- package/dist/dns/codec.js +53 -3
- package/dist/dns/codec.js.map +1 -1
- package/dist/dns/doh-resolver.js +1 -1
- package/dist/dns/doh-resolver.js.map +1 -1
- package/dist/dns/dot-resolver.d.ts.map +1 -1
- package/dist/dns/dot-resolver.js +10 -2
- package/dist/dns/dot-resolver.js.map +1 -1
- package/dist/fingerprints/ja4.d.ts.map +1 -1
- package/dist/fingerprints/ja4.js +0 -2
- package/dist/fingerprints/ja4.js.map +1 -1
- package/dist/http/alt-svc.d.ts +2 -9
- package/dist/http/alt-svc.d.ts.map +1 -1
- package/dist/http/alt-svc.js +1 -17
- package/dist/http/alt-svc.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +11 -0
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +46 -3
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +1 -0
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +46 -8
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +5 -0
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +78 -0
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +4 -1
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +25 -1
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +1 -10
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +3 -3
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +1 -1
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- 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/proxy/auth.d.ts.map +1 -1
- package/dist/proxy/auth.js +4 -3
- package/dist/proxy/auth.js.map +1 -1
- package/dist/proxy/socks.js +3 -2
- package/dist/proxy/socks.js.map +1 -1
- package/dist/sse/parser.d.ts +2 -0
- package/dist/sse/parser.d.ts.map +1 -1
- package/dist/sse/parser.js +17 -0
- package/dist/sse/parser.js.map +1 -1
- package/dist/tls/constants.d.ts +8 -0
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +8 -0
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +21 -0
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +1 -1
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +3 -8
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +5 -0
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +87 -1
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +11 -0
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +59 -4
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +22 -0
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +24 -0
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/tls12-handshake.js +2 -2
- package/dist/tls/stealth/tls12-handshake.js.map +1 -1
- package/dist/tls/types.d.ts +4 -0
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/ws/client.d.ts +2 -0
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +67 -8
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +8 -0
- package/dist/ws/frame.js.map +1 -1
- package/package.json +62 -62
- package/dist/http/h3/detection.d.ts +0 -15
- package/dist/http/h3/detection.d.ts.map +0 -1
- package/dist/http/h3/detection.js +0 -41
- package/dist/http/h3/detection.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,30 +4,33 @@ A pure TypeScript HTTP client with native TLS fingerprint impersonation. Zero ru
|
|
|
4
4
|
|
|
5
5
|
NLcURL provides HTTP/1.1 and HTTP/2 request capabilities with a custom stealth TLS engine that reproduces browser-grade TLS and HTTP/2 fingerprints. It is designed for environments where accurate browser impersonation, advanced protocol control, and strict standards compliance are required.
|
|
6
6
|
|
|
7
|
+
> **Note:** HTTP/3 (QUIC) is not supported. NLcURL supports HTTP/1.1 and HTTP/2 only.
|
|
8
|
+
|
|
7
9
|
## Features
|
|
8
10
|
|
|
9
11
|
- **TLS Fingerprint Impersonation** — Reproduce the exact TLS ClientHello of Chrome, Firefox, Safari, Edge, and Tor across 49 resolvable browser profiles, covering JA3, JA4, and Akamai HTTP/2 fingerprints.
|
|
10
|
-
- **Custom Stealth TLS Engine** — A from-scratch TLS 1.2/1.3 implementation with GREASE injection (RFC 8701), configurable cipher suites, extension ordering,
|
|
11
|
-
- **HTTP/1.1 & HTTP/2** — Full HTTP/1.1 with chunked transfer encoding and HTTP/2 with HPACK compression, stream multiplexing,
|
|
12
|
+
- **Custom Stealth TLS Engine** — A from-scratch TLS 1.2/1.3 implementation with GREASE injection (RFC 8701), configurable cipher suites, extension ordering, Encrypted Client Hello (ECH) support, HelloRetryRequest handling, KeyUpdate post-handshake rekeying, and session resumption via PSK.
|
|
13
|
+
- **HTTP/1.1 & HTTP/2** — Full HTTP/1.1 with chunked transfer encoding, obs-fold header handling, and TE/CL conflict detection. HTTP/2 with HPACK compression, stream multiplexing, configurable flow control, MAX_CONCURRENT_STREAMS enforcement, PUSH_PROMISE rejection, and CONTINUATION size limits.
|
|
12
14
|
- **Connection Pooling** — Per-origin connection reuse with idle eviction, configurable pool limits, and automatic HTTP/2 multiplexing.
|
|
13
|
-
- **RFC 6265 Cookie Jar** — Persistent cookie storage with Public Suffix List validation, `__Host-`/`__Secure-` prefix enforcement, `SameSite`
|
|
14
|
-
- **HTTP Caching (RFC 9111)** — In-memory cache with `max-age
|
|
15
|
+
- **RFC 6265 Cookie Jar** — Persistent cookie storage with Public Suffix List validation, `__Host-`/`__Secure-` prefix enforcement, `SameSite` enforcement (Strict/Lax/None with Secure requirement per RFC 6265bis), CHIPS partitioned cookies, and Netscape file format import/export.
|
|
16
|
+
- **HTTP Caching (RFC 9111)** — In-memory cache with multi-variant `Vary` support, `s-maxage`/`max-age` freshness, `ETag`/`Last-Modified` conditional revalidation, `Age` header, request-side `Cache-Control`, unsafe method invalidation, `stale-while-revalidate`, heuristic freshness, and five cache modes.
|
|
15
17
|
- **HSTS (RFC 6797)** — Automatic `http://` to `https://` upgrading with `includeSubDomains` support and configurable preload lists.
|
|
16
|
-
- **DNS-over-HTTPS (RFC 8484)** — Wire-format DoH with GET/POST methods, bootstrap resolution, and integrated DNS caching.
|
|
18
|
+
- **DNS-over-HTTPS (RFC 8484)** — Wire-format DoH with GET/POST methods, EDNS(0) with padding (RFC 6891/7830), bootstrap resolution, and integrated DNS caching.
|
|
17
19
|
- **DNS-over-TLS (RFC 7858)** — Secure DNS resolution over TLS port 853 with persistent connection support and pre-configured public resolvers.
|
|
18
20
|
- **HTTPS Resource Records (RFC 9460)** — SVCB/HTTPS DNS record resolution for ALPN hints, ECH config delivery, and address hints.
|
|
19
21
|
- **Proxy Support** — HTTP CONNECT tunneling, HTTPS proxies, SOCKS4/4a, and SOCKS5 with optional username/password authentication. Environment variable resolution (`HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY`).
|
|
20
|
-
- **WebSocket (RFC 6455)** — Full WebSocket client with TLS fingerprinting, per-message deflate compression (RFC 7692), ping/pong, and binary/text framing.
|
|
21
|
-
- **Server-Sent Events** — W3C EventSource-compliant SSE parser with streaming async generator interface.
|
|
22
|
+
- **WebSocket (RFC 6455)** — Full WebSocket client with TLS fingerprinting, per-message deflate compression (RFC 7692), control frame validation (≤125 bytes), ping/pong, and binary/text framing.
|
|
23
|
+
- **Server-Sent Events** — W3C EventSource-compliant SSE parser with streaming async generator interface, UTF-8 BOM stripping, and cross-chunk CRLF handling.
|
|
22
24
|
- **Request/Response Interceptors** — Middleware pipeline for modifying requests before send and responses after receipt.
|
|
23
25
|
- **Retry with Backoff** — Configurable automatic retry with linear or exponential backoff, jitter, `Retry-After` header respect, and custom retry predicates.
|
|
24
26
|
- **Rate Limiting** — Token-bucket rate limiter with configurable request quotas and automatic queuing.
|
|
27
|
+
- **Circuit Breaker** — Per-origin circuit breaker with configurable failure thresholds, half-open probing, and automatic recovery.
|
|
25
28
|
- **Request Body Compression** — Outgoing body compression with gzip, deflate, and Brotli.
|
|
26
29
|
- **Response Decompression** — Automatic decompression of gzip, deflate, Brotli, and zstd (Node.js 20.10+) with multi-layer encoding support.
|
|
27
30
|
- **Happy Eyeballs v2 (RFC 8305)** — Dual-stack connection racing with 250ms stagger for optimal latency.
|
|
28
31
|
- **Alt-Svc (RFC 7838)** — HTTP Alternative Services tracking with automatic protocol upgrade preference.
|
|
29
32
|
- **FormData (RFC 7578)** — Multipart form-data encoding with file upload support.
|
|
30
|
-
- **Authentication** — Built-in Basic and
|
|
33
|
+
- **Authentication** — Built-in Basic, Bearer, Digest (RFC 7616), and AWS Signature V4 authentication, plus Digest proxy authentication.
|
|
31
34
|
- **Progress Callbacks** — Upload and download progress events with byte counts and percentages.
|
|
32
35
|
- **Structured Logging** — Console and JSON logger implementations with child logger support and configurable log levels.
|
|
33
36
|
- **CLI Tool** — `nlcurl` command-line interface with curl-compatible flags for scripting and interactive use.
|
|
@@ -184,6 +187,9 @@ NLcURL implements or references the following RFCs and standards:
|
|
|
184
187
|
| RFC 9180 | HPKE — Hybrid Public Key Encryption for ECH |
|
|
185
188
|
| RFC 7413 | TCP Fast Open — platform-aware TFO support |
|
|
186
189
|
| RFC 8297 | 103 Early Hints — Link header parsing |
|
|
190
|
+
| RFC 6891 | EDNS(0) — Extension Mechanisms for DNS OPT records |
|
|
191
|
+
| RFC 7830 | DNS Padding — query size obfuscation for privacy |
|
|
192
|
+
| RFC 6265bis | Cookie SameSite — Strict/Lax/None enforcement, Secure requirement |
|
|
187
193
|
|
|
188
194
|
## License
|
|
189
195
|
|
package/dist/cache/store.d.ts
CHANGED
|
@@ -3,15 +3,17 @@ import type { NLcURLRequest } from "../core/request.js";
|
|
|
3
3
|
import { NLcURLResponse } from "../core/response.js";
|
|
4
4
|
/**
|
|
5
5
|
* In-memory HTTP response cache implementing RFC 9111 semantics with LRU eviction,
|
|
6
|
-
* Vary-based matching,
|
|
6
|
+
* Vary-based multi-variant matching, conditional revalidation, Age header,
|
|
7
|
+
* unsafe method invalidation, and request-side Cache-Control support.
|
|
7
8
|
*
|
|
8
9
|
* @class
|
|
9
10
|
*/
|
|
10
11
|
export declare class CacheStore {
|
|
11
|
-
private readonly
|
|
12
|
+
private readonly variants;
|
|
12
13
|
private readonly maxEntries;
|
|
13
14
|
private readonly maxSize;
|
|
14
15
|
private currentSize;
|
|
16
|
+
private entryCount;
|
|
15
17
|
private readonly mode;
|
|
16
18
|
private accessCounter;
|
|
17
19
|
/**
|
|
@@ -30,6 +32,7 @@ export declare class CacheStore {
|
|
|
30
32
|
static cacheKey(method: string, url: string): string;
|
|
31
33
|
/**
|
|
32
34
|
* Looks up a request in the cache and evaluates freshness.
|
|
35
|
+
* Supports multiple Vary variants per URL (RFC 9111 §4.1).
|
|
33
36
|
*
|
|
34
37
|
* @param {NLcURLRequest} req - The request to look up.
|
|
35
38
|
* @returns {CacheLookupResult} Freshness status and the matched entry, if any.
|
|
@@ -51,11 +54,21 @@ export declare class CacheStore {
|
|
|
51
54
|
};
|
|
52
55
|
/**
|
|
53
56
|
* Stores a response in the cache, subject to cacheability rules.
|
|
57
|
+
* Multiple Vary variants may be stored per URL (RFC 9111 §4.1).
|
|
54
58
|
*
|
|
55
59
|
* @param {NLcURLRequest} req - The originating request.
|
|
56
60
|
* @param {NLcURLResponse} response - The response to cache.
|
|
57
61
|
*/
|
|
58
62
|
store(req: NLcURLRequest, response: NLcURLResponse): void;
|
|
63
|
+
/**
|
|
64
|
+
* Invalidate cached entries when an unsafe method (POST, PUT, DELETE, PATCH)
|
|
65
|
+
* receives a successful (2xx) response (RFC 9111 §4.4).
|
|
66
|
+
*
|
|
67
|
+
* @param {string} method - The HTTP method.
|
|
68
|
+
* @param {string} url - The request URL.
|
|
69
|
+
* @param {number} status - The response status code.
|
|
70
|
+
*/
|
|
71
|
+
invalidateIfUnsafe(method: string, url: string, status: number): void;
|
|
59
72
|
/**
|
|
60
73
|
* Merges a 304 Not Modified response with a stale cache entry, producing
|
|
61
74
|
* a fresh response with updated headers.
|
|
@@ -66,11 +79,11 @@ export declare class CacheStore {
|
|
|
66
79
|
*/
|
|
67
80
|
mergeNotModified(entry: CacheEntry, response304: NLcURLResponse): NLcURLResponse;
|
|
68
81
|
/**
|
|
69
|
-
* Constructs a full NLcURLResponse from a cache entry.
|
|
82
|
+
* Constructs a full NLcURLResponse from a cache entry, including Age header.
|
|
70
83
|
*
|
|
71
84
|
* @param {CacheEntry} entry - The cache entry to serve.
|
|
72
85
|
* @param {NLcURLRequest} req - The request context.
|
|
73
|
-
* @returns {NLcURLResponse} The reconstituted response.
|
|
86
|
+
* @returns {NLcURLResponse} The reconstituted response with Age header.
|
|
74
87
|
*/
|
|
75
88
|
responseFromEntry(entry: CacheEntry, req: NLcURLRequest): NLcURLResponse;
|
|
76
89
|
/**
|
|
@@ -90,15 +103,18 @@ export declare class CacheStore {
|
|
|
90
103
|
*/
|
|
91
104
|
clear(): void;
|
|
92
105
|
/**
|
|
93
|
-
* Removes
|
|
106
|
+
* Removes all cache entries for a method and URL.
|
|
94
107
|
*
|
|
95
108
|
* @param {string} method - The HTTP method.
|
|
96
109
|
* @param {string} url - The request URL.
|
|
97
|
-
* @returns {boolean} `true` if
|
|
110
|
+
* @returns {boolean} `true` if entries were removed.
|
|
98
111
|
*/
|
|
99
112
|
delete(method: string, url: string): boolean;
|
|
113
|
+
/** Compute current age in seconds (RFC 9111 §5.1). */
|
|
114
|
+
private computeCurrentAge;
|
|
100
115
|
private varyMatches;
|
|
101
|
-
private
|
|
116
|
+
private varyMatchesEntry;
|
|
117
|
+
private findLRUEntry;
|
|
102
118
|
private evictIfNeeded;
|
|
103
119
|
}
|
|
104
120
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;OAIG;gBACS,MAAM,CAAC,EAAE,WAAW;IAMhC;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpD;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,iBAAiB;IAkE7C;;;;;;;OAOG;IACH,QAAQ,CACN,GAAG,EAAE,aAAa,EAClB,YAAY,CAAC,EAAE,SAAS,GACvB;QACD,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,UAAU,CAAC;QAC1B,WAAW,CAAC,EAAE,UAAU,CAAC;KAC1B;IA6CD;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IA2EzD;;;;;;;OAOG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBrE;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,GAAG,cAAc;IA0BhF;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,cAAc;IAgBxE;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAc5C,sDAAsD;IACtD,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,aAAa;CAqBtB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAwFhE"}
|
package/dist/cache/store.js
CHANGED
|
@@ -5,15 +5,17 @@ const CACHEABLE_METHODS = new Set(["GET", "HEAD"]);
|
|
|
5
5
|
const CACHEABLE_STATUS = new Set([200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 501]);
|
|
6
6
|
/**
|
|
7
7
|
* In-memory HTTP response cache implementing RFC 9111 semantics with LRU eviction,
|
|
8
|
-
* Vary-based matching,
|
|
8
|
+
* Vary-based multi-variant matching, conditional revalidation, Age header,
|
|
9
|
+
* unsafe method invalidation, and request-side Cache-Control support.
|
|
9
10
|
*
|
|
10
11
|
* @class
|
|
11
12
|
*/
|
|
12
13
|
export class CacheStore {
|
|
13
|
-
|
|
14
|
+
variants = new Map();
|
|
14
15
|
maxEntries;
|
|
15
16
|
maxSize;
|
|
16
17
|
currentSize = 0;
|
|
18
|
+
entryCount = 0;
|
|
17
19
|
mode;
|
|
18
20
|
accessCounter = 0;
|
|
19
21
|
/**
|
|
@@ -38,6 +40,7 @@ export class CacheStore {
|
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* Looks up a request in the cache and evaluates freshness.
|
|
43
|
+
* Supports multiple Vary variants per URL (RFC 9111 §4.1).
|
|
41
44
|
*
|
|
42
45
|
* @param {NLcURLRequest} req - The request to look up.
|
|
43
46
|
* @returns {CacheLookupResult} Freshness status and the matched entry, if any.
|
|
@@ -47,21 +50,48 @@ export class CacheStore {
|
|
|
47
50
|
if (!CACHEABLE_METHODS.has(method)) {
|
|
48
51
|
return { fresh: false, staleWhileRevalidate: false };
|
|
49
52
|
}
|
|
53
|
+
const reqDirectives = parseCacheControl(req.headers?.["cache-control"] ?? "");
|
|
54
|
+
if (reqDirectives.noStore) {
|
|
55
|
+
return { fresh: false, staleWhileRevalidate: false };
|
|
56
|
+
}
|
|
50
57
|
const key = CacheStore.cacheKey(method, req.url);
|
|
51
|
-
const
|
|
52
|
-
if (!
|
|
58
|
+
const entries = this.variants.get(key);
|
|
59
|
+
if (!entries || entries.length === 0) {
|
|
53
60
|
return { fresh: false, staleWhileRevalidate: false };
|
|
54
61
|
}
|
|
55
|
-
|
|
62
|
+
const entry = entries.find((e) => this.varyMatches(e, req));
|
|
63
|
+
if (!entry) {
|
|
56
64
|
return { fresh: false, staleWhileRevalidate: false };
|
|
57
65
|
}
|
|
58
66
|
entry.lastAccessedAt = ++this.accessCounter;
|
|
59
|
-
const age =
|
|
67
|
+
const age = this.computeCurrentAge(entry);
|
|
60
68
|
const freshness = computeFreshnessLifetime(entry);
|
|
61
|
-
|
|
69
|
+
if (reqDirectives.maxAge !== undefined && age > reqDirectives.maxAge) {
|
|
70
|
+
return { entry, fresh: false, staleWhileRevalidate: false };
|
|
71
|
+
}
|
|
72
|
+
if (reqDirectives.minFresh !== undefined && freshness - age < reqDirectives.minFresh) {
|
|
73
|
+
return { entry, fresh: false, staleWhileRevalidate: false };
|
|
74
|
+
}
|
|
75
|
+
let fresh = age < freshness;
|
|
76
|
+
if (reqDirectives.noCache) {
|
|
77
|
+
fresh = false;
|
|
78
|
+
}
|
|
79
|
+
if (entry.directives.noCache) {
|
|
80
|
+
fresh = false;
|
|
81
|
+
}
|
|
62
82
|
let staleWhileRevalidate = false;
|
|
63
|
-
if (!fresh
|
|
64
|
-
|
|
83
|
+
if (!fresh) {
|
|
84
|
+
if (entry.directives.mustRevalidate) {
|
|
85
|
+
return { entry, fresh: false, staleWhileRevalidate: false };
|
|
86
|
+
}
|
|
87
|
+
if (reqDirectives.maxStale !== undefined) {
|
|
88
|
+
if (age < freshness + reqDirectives.maxStale) {
|
|
89
|
+
return { entry, fresh: true, staleWhileRevalidate: false };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (entry.directives.staleWhileRevalidate !== undefined) {
|
|
93
|
+
staleWhileRevalidate = age < freshness + entry.directives.staleWhileRevalidate;
|
|
94
|
+
}
|
|
65
95
|
}
|
|
66
96
|
return { entry, fresh, staleWhileRevalidate };
|
|
67
97
|
}
|
|
@@ -111,6 +141,7 @@ export class CacheStore {
|
|
|
111
141
|
}
|
|
112
142
|
/**
|
|
113
143
|
* Stores a response in the cache, subject to cacheability rules.
|
|
144
|
+
* Multiple Vary variants may be stored per URL (RFC 9111 §4.1).
|
|
114
145
|
*
|
|
115
146
|
* @param {NLcURLRequest} req - The originating request.
|
|
116
147
|
* @param {NLcURLResponse} response - The response to cache.
|
|
@@ -137,12 +168,25 @@ export class CacheStore {
|
|
|
137
168
|
}
|
|
138
169
|
const bodySize = response.rawBody.length;
|
|
139
170
|
this.evictIfNeeded(bodySize);
|
|
140
|
-
|
|
141
|
-
if (
|
|
171
|
+
let entries = this.variants.get(key);
|
|
172
|
+
if (!entries) {
|
|
173
|
+
entries = [];
|
|
174
|
+
this.variants.set(key, entries);
|
|
175
|
+
}
|
|
176
|
+
const existingIdx = entries.findIndex((e) => this.varyMatchesEntry(e, varyFields, varyHeaders));
|
|
177
|
+
if (existingIdx !== -1) {
|
|
178
|
+
const existing = entries[existingIdx];
|
|
142
179
|
this.currentSize -= existing.bodySize;
|
|
143
|
-
this.
|
|
180
|
+
this.entryCount--;
|
|
181
|
+
entries.splice(existingIdx, 1);
|
|
144
182
|
}
|
|
145
183
|
const now = Date.now();
|
|
184
|
+
const ageHeader = response.headers["age"];
|
|
185
|
+
const ageValue = ageHeader ? parseInt(ageHeader, 10) : 0;
|
|
186
|
+
const dateHeader = response.headers["date"];
|
|
187
|
+
const responseDate = dateHeader ? Date.parse(dateHeader) : now;
|
|
188
|
+
const apparentAge = Math.max(0, (now - (Number.isNaN(responseDate) ? now : responseDate)) / 1000);
|
|
189
|
+
const correctedAgeValue = Math.max(apparentAge, Number.isFinite(ageValue) ? ageValue : 0);
|
|
146
190
|
const entry = {
|
|
147
191
|
key,
|
|
148
192
|
status: response.status,
|
|
@@ -152,6 +196,7 @@ export class CacheStore {
|
|
|
152
196
|
httpVersion: response.httpVersion,
|
|
153
197
|
url: response.url,
|
|
154
198
|
storedAt: now,
|
|
199
|
+
correctedInitialAge: correctedAgeValue,
|
|
155
200
|
etag: response.headers["etag"],
|
|
156
201
|
lastModified: response.headers["last-modified"],
|
|
157
202
|
directives,
|
|
@@ -160,9 +205,36 @@ export class CacheStore {
|
|
|
160
205
|
bodySize,
|
|
161
206
|
lastAccessedAt: ++this.accessCounter,
|
|
162
207
|
};
|
|
163
|
-
|
|
208
|
+
entries.push(entry);
|
|
209
|
+
this.entryCount++;
|
|
164
210
|
this.currentSize += bodySize;
|
|
165
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Invalidate cached entries when an unsafe method (POST, PUT, DELETE, PATCH)
|
|
214
|
+
* receives a successful (2xx) response (RFC 9111 §4.4).
|
|
215
|
+
*
|
|
216
|
+
* @param {string} method - The HTTP method.
|
|
217
|
+
* @param {string} url - The request URL.
|
|
218
|
+
* @param {number} status - The response status code.
|
|
219
|
+
*/
|
|
220
|
+
invalidateIfUnsafe(method, url, status) {
|
|
221
|
+
const upper = method.toUpperCase();
|
|
222
|
+
if (CACHEABLE_METHODS.has(upper))
|
|
223
|
+
return;
|
|
224
|
+
if (status < 200 || status >= 400)
|
|
225
|
+
return;
|
|
226
|
+
for (const m of ["GET", "HEAD"]) {
|
|
227
|
+
const key = CacheStore.cacheKey(m, url);
|
|
228
|
+
const entries = this.variants.get(key);
|
|
229
|
+
if (entries) {
|
|
230
|
+
for (const e of entries) {
|
|
231
|
+
this.currentSize -= e.bodySize;
|
|
232
|
+
this.entryCount--;
|
|
233
|
+
}
|
|
234
|
+
this.variants.delete(key);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
166
238
|
/**
|
|
167
239
|
* Merges a 304 Not Modified response with a stale cache entry, producing
|
|
168
240
|
* a fresh response with updated headers.
|
|
@@ -198,17 +270,19 @@ export class CacheStore {
|
|
|
198
270
|
});
|
|
199
271
|
}
|
|
200
272
|
/**
|
|
201
|
-
* Constructs a full NLcURLResponse from a cache entry.
|
|
273
|
+
* Constructs a full NLcURLResponse from a cache entry, including Age header.
|
|
202
274
|
*
|
|
203
275
|
* @param {CacheEntry} entry - The cache entry to serve.
|
|
204
276
|
* @param {NLcURLRequest} req - The request context.
|
|
205
|
-
* @returns {NLcURLResponse} The reconstituted response.
|
|
277
|
+
* @returns {NLcURLResponse} The reconstituted response with Age header.
|
|
206
278
|
*/
|
|
207
279
|
responseFromEntry(entry, req) {
|
|
280
|
+
const headers = { ...entry.headers };
|
|
281
|
+
headers["age"] = String(Math.floor(this.computeCurrentAge(entry)));
|
|
208
282
|
return new NLcURLResponse({
|
|
209
283
|
status: entry.status,
|
|
210
284
|
statusText: entry.statusText,
|
|
211
|
-
headers
|
|
285
|
+
headers,
|
|
212
286
|
rawBody: entry.body,
|
|
213
287
|
httpVersion: entry.httpVersion,
|
|
214
288
|
url: entry.url,
|
|
@@ -223,7 +297,7 @@ export class CacheStore {
|
|
|
223
297
|
* @returns {number} The entry count.
|
|
224
298
|
*/
|
|
225
299
|
get size() {
|
|
226
|
-
return this.
|
|
300
|
+
return this.entryCount;
|
|
227
301
|
}
|
|
228
302
|
/**
|
|
229
303
|
* Returns the total size of cached bodies in bytes.
|
|
@@ -237,26 +311,35 @@ export class CacheStore {
|
|
|
237
311
|
* Removes all entries from the cache.
|
|
238
312
|
*/
|
|
239
313
|
clear() {
|
|
240
|
-
this.
|
|
314
|
+
this.variants.clear();
|
|
241
315
|
this.currentSize = 0;
|
|
316
|
+
this.entryCount = 0;
|
|
242
317
|
}
|
|
243
318
|
/**
|
|
244
|
-
* Removes
|
|
319
|
+
* Removes all cache entries for a method and URL.
|
|
245
320
|
*
|
|
246
321
|
* @param {string} method - The HTTP method.
|
|
247
322
|
* @param {string} url - The request URL.
|
|
248
|
-
* @returns {boolean} `true` if
|
|
323
|
+
* @returns {boolean} `true` if entries were removed.
|
|
249
324
|
*/
|
|
250
325
|
delete(method, url) {
|
|
251
326
|
const key = CacheStore.cacheKey(method, url);
|
|
252
|
-
const
|
|
253
|
-
if (
|
|
254
|
-
|
|
255
|
-
|
|
327
|
+
const entries = this.variants.get(key);
|
|
328
|
+
if (entries && entries.length > 0) {
|
|
329
|
+
for (const e of entries) {
|
|
330
|
+
this.currentSize -= e.bodySize;
|
|
331
|
+
this.entryCount--;
|
|
332
|
+
}
|
|
333
|
+
this.variants.delete(key);
|
|
256
334
|
return true;
|
|
257
335
|
}
|
|
258
336
|
return false;
|
|
259
337
|
}
|
|
338
|
+
/** Compute current age in seconds (RFC 9111 §5.1). */
|
|
339
|
+
computeCurrentAge(entry) {
|
|
340
|
+
const residentTime = (Date.now() - entry.storedAt) / 1000;
|
|
341
|
+
return (entry.correctedInitialAge ?? 0) + residentTime;
|
|
342
|
+
}
|
|
260
343
|
varyMatches(entry, req) {
|
|
261
344
|
for (const field of entry.varyFields) {
|
|
262
345
|
const stored = entry.varyHeaders[field] ?? "";
|
|
@@ -266,35 +349,52 @@ export class CacheStore {
|
|
|
266
349
|
}
|
|
267
350
|
return true;
|
|
268
351
|
}
|
|
269
|
-
|
|
352
|
+
varyMatchesEntry(entry, varyFields, varyHeaders) {
|
|
353
|
+
if (entry.varyFields.length !== varyFields.length)
|
|
354
|
+
return false;
|
|
355
|
+
for (const field of varyFields) {
|
|
356
|
+
if ((entry.varyHeaders[field] ?? "") !== (varyHeaders[field] ?? ""))
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
return true;
|
|
360
|
+
}
|
|
361
|
+
findLRUEntry() {
|
|
270
362
|
let lruKey;
|
|
363
|
+
let lruIdx = -1;
|
|
271
364
|
let lruTime = Infinity;
|
|
272
|
-
for (const [key,
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
365
|
+
for (const [key, entries] of this.variants) {
|
|
366
|
+
for (let i = 0; i < entries.length; i++) {
|
|
367
|
+
if (entries[i].lastAccessedAt < lruTime) {
|
|
368
|
+
lruTime = entries[i].lastAccessedAt;
|
|
369
|
+
lruKey = key;
|
|
370
|
+
lruIdx = i;
|
|
371
|
+
}
|
|
276
372
|
}
|
|
277
373
|
}
|
|
278
|
-
return lruKey;
|
|
374
|
+
return lruKey !== undefined ? { key: lruKey, idx: lruIdx } : undefined;
|
|
279
375
|
}
|
|
280
376
|
evictIfNeeded(incomingSize) {
|
|
281
|
-
while (this.
|
|
282
|
-
const
|
|
283
|
-
if (
|
|
377
|
+
while (this.entryCount >= this.maxEntries) {
|
|
378
|
+
const lru = this.findLRUEntry();
|
|
379
|
+
if (!lru)
|
|
284
380
|
break;
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
this.
|
|
381
|
+
const entries = this.variants.get(lru.key);
|
|
382
|
+
const removed = entries.splice(lru.idx, 1)[0];
|
|
383
|
+
this.currentSize -= removed.bodySize;
|
|
384
|
+
this.entryCount--;
|
|
385
|
+
if (entries.length === 0)
|
|
386
|
+
this.variants.delete(lru.key);
|
|
289
387
|
}
|
|
290
|
-
while (this.currentSize + incomingSize > this.maxSize && this.
|
|
291
|
-
const
|
|
292
|
-
if (
|
|
388
|
+
while (this.currentSize + incomingSize > this.maxSize && this.entryCount > 0) {
|
|
389
|
+
const lru = this.findLRUEntry();
|
|
390
|
+
if (!lru)
|
|
293
391
|
break;
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
this.
|
|
392
|
+
const entries = this.variants.get(lru.key);
|
|
393
|
+
const removed = entries.splice(lru.idx, 1)[0];
|
|
394
|
+
this.currentSize -= removed.bodySize;
|
|
395
|
+
this.entryCount--;
|
|
396
|
+
if (entries.length === 0)
|
|
397
|
+
this.variants.delete(lru.key);
|
|
298
398
|
}
|
|
299
399
|
}
|
|
300
400
|
}
|
|
@@ -375,11 +475,31 @@ export function parseCacheControl(value) {
|
|
|
375
475
|
directives.staleIfError = n;
|
|
376
476
|
break;
|
|
377
477
|
}
|
|
478
|
+
case "min-fresh": {
|
|
479
|
+
const n = parseInt(val ?? "", 10);
|
|
480
|
+
if (Number.isFinite(n) && n >= 0)
|
|
481
|
+
directives.minFresh = n;
|
|
482
|
+
break;
|
|
483
|
+
}
|
|
484
|
+
case "max-stale": {
|
|
485
|
+
if (val !== undefined) {
|
|
486
|
+
const n = parseInt(val, 10);
|
|
487
|
+
if (Number.isFinite(n) && n >= 0)
|
|
488
|
+
directives.maxStale = n;
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
directives.maxStale = Infinity;
|
|
492
|
+
}
|
|
493
|
+
break;
|
|
494
|
+
}
|
|
378
495
|
}
|
|
379
496
|
}
|
|
380
497
|
return directives;
|
|
381
498
|
}
|
|
382
499
|
function computeFreshnessLifetime(entry) {
|
|
500
|
+
if (entry.directives.sMaxAge !== undefined) {
|
|
501
|
+
return entry.directives.sMaxAge;
|
|
502
|
+
}
|
|
383
503
|
if (entry.directives.maxAge !== undefined) {
|
|
384
504
|
return entry.directives.maxAge;
|
|
385
505
|
}
|
package/dist/cache/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}
|
package/dist/cache/types.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export interface CacheDirectives {
|
|
|
27
27
|
immutable: boolean;
|
|
28
28
|
staleWhileRevalidate?: number;
|
|
29
29
|
staleIfError?: number;
|
|
30
|
+
minFresh?: number;
|
|
31
|
+
maxStale?: number;
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Represents a single stored cache entry with metadata for freshness evaluation.
|
|
@@ -47,6 +49,7 @@ export interface CacheEntry {
|
|
|
47
49
|
varyHeaders: Record<string, string>;
|
|
48
50
|
bodySize: number;
|
|
49
51
|
lastAccessedAt: number;
|
|
52
|
+
correctedInitialAge?: number;
|
|
50
53
|
}
|
|
51
54
|
/**
|
|
52
55
|
* Result of a cache lookup indicating freshness and stale-while-revalidate eligibility.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B"}
|
package/dist/cookies/jar.d.ts
CHANGED
|
@@ -36,9 +36,19 @@ export declare class CookieJar {
|
|
|
36
36
|
* Builds a Cookie header value for the given URL.
|
|
37
37
|
*
|
|
38
38
|
* @param {URL} url - The target URL.
|
|
39
|
+
* @param {object} [context] - Additional context for SameSite enforcement.
|
|
40
|
+
* @param {URL} [context.siteOrigin] - The top-level site origin for SameSite checks.
|
|
41
|
+
* @param {boolean} [context.isSameSite] - Whether the request is same-site (default: true).
|
|
42
|
+
* @param {"navigate"|"subresource"} [context.type] - Request type for SameSite Lax handling.
|
|
43
|
+
* @param {string} [context.method] - HTTP method (for SameSite Lax top-level navigation).
|
|
39
44
|
* @returns {string} The serialized cookie string, or an empty string if no cookies match.
|
|
40
45
|
*/
|
|
41
|
-
getCookieHeader(url: URL
|
|
46
|
+
getCookieHeader(url: URL, context?: {
|
|
47
|
+
siteOrigin?: URL;
|
|
48
|
+
isSameSite?: boolean;
|
|
49
|
+
type?: "navigate" | "subresource";
|
|
50
|
+
method?: string;
|
|
51
|
+
}): string;
|
|
42
52
|
/**
|
|
43
53
|
* Removes all cookies from the jar.
|
|
44
54
|
*/
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"jar.d.ts","sourceRoot":"","sources":["../../src/cookies/jar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAW5E;;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;IAaxG;;;;;;;;;;OAUG;IACH,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,GAAG,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAyB3I;;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;IA4Bf,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,sBAAsB;CAY/B"}
|