nlcurl 0.1.0 → 0.2.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 +5 -13
- package/dist/cli/args.d.ts +37 -5
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +6 -17
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +25 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +24 -7
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +24 -12
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +45 -13
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +88 -29
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +25 -3
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +12 -7
- package/dist/cookies/parser.js.map +1 -1
- package/dist/core/client.d.ts +49 -33
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +64 -38
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +94 -6
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +95 -6
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +96 -30
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/request.js +0 -3
- package/dist/core/request.js.map +1 -1
- package/dist/core/response.d.ts +92 -8
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +92 -7
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +109 -14
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +124 -46
- package/dist/core/session.js.map +1 -1
- package/dist/fingerprints/akamai.d.ts +11 -11
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +10 -14
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +14 -15
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +14 -19
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts +121 -27
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +132 -49
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +34 -18
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +34 -18
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts +21 -10
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +25 -22
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +10 -7
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +10 -10
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +11 -3
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +15 -14
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +14 -3
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +16 -13
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +8 -7
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +8 -14
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +70 -47
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/fingerprints/types.js +0 -7
- package/dist/fingerprints/types.js.map +1 -1
- package/dist/http/h1/client.d.ts +30 -9
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +152 -15
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +9 -6
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +8 -12
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +68 -14
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +92 -37
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +81 -14
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +465 -63
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +103 -6
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +96 -17
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts +30 -5
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +39 -35
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +35 -12
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +89 -24
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +66 -17
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +47 -20
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -13
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +40 -8
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js +28 -6
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts +18 -5
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +12 -7
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry.d.ts +17 -5
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +13 -11
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +17 -9
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +9 -13
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +20 -9
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +20 -31
- package/dist/proxy/socks.js.map +1 -1
- package/dist/tls/constants.d.ts +74 -4
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +75 -21
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts +17 -16
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +20 -27
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +32 -16
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +13 -37
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +18 -10
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +18 -24
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +31 -17
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +173 -74
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +89 -32
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +62 -42
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +76 -25
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +66 -36
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/types.d.ts +33 -25
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/tls/types.js +0 -4
- package/dist/tls/types.js.map +1 -1
- package/dist/utils/buffer-reader.d.ts +99 -7
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js +99 -7
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts +99 -10
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +101 -12
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/encoding.d.ts +33 -8
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +58 -13
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/logger.d.ts +61 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +52 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/url.d.ts +47 -7
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +47 -7
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +59 -15
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +34 -27
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts +43 -9
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +35 -19
- package/dist/ws/frame.js.map +1 -1
- package/package.json +2 -2
package/dist/core/session.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NLcURL Session.
|
|
3
|
-
*
|
|
4
|
-
* A persistent session that maintains cookies, connection pools,
|
|
5
|
-
* default configuration, and middleware across multiple requests.
|
|
6
|
-
*/
|
|
7
1
|
import { NLcURLResponse } from './response.js';
|
|
8
2
|
import { AbortError, NLcURLError } from './errors.js';
|
|
9
3
|
import { ProtocolNegotiator } from '../http/negotiator.js';
|
|
10
4
|
import { CookieJar } from '../cookies/jar.js';
|
|
11
5
|
import { InterceptorChain } from '../middleware/interceptor.js';
|
|
12
6
|
import { RateLimiter } from '../middleware/rate-limiter.js';
|
|
7
|
+
import { withRetry } from '../middleware/retry.js';
|
|
13
8
|
import { getProfile } from '../fingerprints/database.js';
|
|
14
9
|
import { resolveURL, appendParams } from '../utils/url.js';
|
|
15
10
|
const MAX_REDIRECTS = 20;
|
|
11
|
+
/**
|
|
12
|
+
* Stateful HTTP client session that persists connections, cookies, interceptors,
|
|
13
|
+
* and configuration across multiple requests. Prefer using a session when making
|
|
14
|
+
* many requests to the same origin, or when you need shared cookie state.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const session = new NLcURLSession({ impersonate: 'chrome136' });
|
|
18
|
+
* const response = await session.get('https://example.com');
|
|
19
|
+
* session.close();
|
|
20
|
+
*/
|
|
16
21
|
export class NLcURLSession {
|
|
17
22
|
config;
|
|
18
23
|
negotiator;
|
|
@@ -20,11 +25,15 @@ export class NLcURLSession {
|
|
|
20
25
|
interceptors;
|
|
21
26
|
rateLimiter = null;
|
|
22
27
|
closed = false;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new NLcURLSession.
|
|
30
|
+
*
|
|
31
|
+
* @param {NLcURLSessionConfig} [config={}] - Session-level defaults applied to every request.
|
|
32
|
+
*/
|
|
23
33
|
constructor(config = {}) {
|
|
24
34
|
this.config = config;
|
|
25
35
|
this.negotiator = new ProtocolNegotiator();
|
|
26
36
|
this.interceptors = new InterceptorChain();
|
|
27
|
-
// Cookie jar: true = create internal jar, string = unsupported (reserved)
|
|
28
37
|
if (config.cookieJar === true || config.cookieJar === undefined) {
|
|
29
38
|
this.cookieJar = new CookieJar();
|
|
30
39
|
}
|
|
@@ -35,96 +44,182 @@ export class NLcURLSession {
|
|
|
35
44
|
this.cookieJar = new CookieJar();
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
|
-
// ---- Middleware registration ----
|
|
39
47
|
/**
|
|
40
|
-
*
|
|
48
|
+
* Registers a request interceptor that is invoked (in registration order)
|
|
49
|
+
* before each request is dispatched. The interceptor may return a modified
|
|
50
|
+
* request object or a `Promise` that resolves to one.
|
|
41
51
|
*
|
|
42
|
-
*
|
|
52
|
+
* @param {RequestInterceptor} fn - The interceptor function to add.
|
|
53
|
+
* @returns {this} The session instance, enabling a fluent call chain.
|
|
43
54
|
*/
|
|
44
55
|
onRequest(fn) {
|
|
45
56
|
this.interceptors.addRequestInterceptor(fn);
|
|
46
57
|
return this;
|
|
47
58
|
}
|
|
48
59
|
/**
|
|
49
|
-
*
|
|
60
|
+
* Registers a response interceptor that is invoked (in registration order)
|
|
61
|
+
* after each response is received. The interceptor may return a modified
|
|
62
|
+
* response object or a `Promise` that resolves to one.
|
|
50
63
|
*
|
|
51
|
-
*
|
|
64
|
+
* @param {ResponseInterceptor} fn - The interceptor function to add.
|
|
65
|
+
* @returns {this} The session instance, enabling a fluent call chain.
|
|
52
66
|
*/
|
|
53
67
|
onResponse(fn) {
|
|
54
68
|
this.interceptors.addResponseInterceptor(fn);
|
|
55
69
|
return this;
|
|
56
70
|
}
|
|
57
71
|
/**
|
|
58
|
-
*
|
|
72
|
+
* Applies a token-bucket rate limit to all requests issued by this session.
|
|
73
|
+
* Requests that exceed the configured rate will wait until a token becomes
|
|
74
|
+
* available before proceeding.
|
|
75
|
+
*
|
|
76
|
+
* @param {RateLimitConfig} config - Rate limit parameters (`maxRequests` per `windowMs`).
|
|
77
|
+
* @returns {this} The session instance, enabling a fluent call chain.
|
|
59
78
|
*/
|
|
60
79
|
setRateLimit(config) {
|
|
61
80
|
this.rateLimiter = new RateLimiter(config);
|
|
62
81
|
return this;
|
|
63
82
|
}
|
|
64
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Issues a `GET` request and resolves with the complete response.
|
|
85
|
+
*
|
|
86
|
+
* @param {string} url - The URL to request.
|
|
87
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
88
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
89
|
+
*/
|
|
65
90
|
get(url, options) {
|
|
66
91
|
return this.request({ ...options, url, method: 'GET' });
|
|
67
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Issues a `POST` request and resolves with the complete response.
|
|
95
|
+
*
|
|
96
|
+
* @param {string} url - The URL to request.
|
|
97
|
+
* @param {RequestBody} [body] - Request body payload.
|
|
98
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
99
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
100
|
+
*/
|
|
68
101
|
post(url, body, options) {
|
|
69
102
|
return this.request({ ...options, url, method: 'POST', body });
|
|
70
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Issues a `PUT` request and resolves with the complete response.
|
|
106
|
+
*
|
|
107
|
+
* @param {string} url - The URL to request.
|
|
108
|
+
* @param {RequestBody} [body] - Request body payload.
|
|
109
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
110
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
111
|
+
*/
|
|
71
112
|
put(url, body, options) {
|
|
72
113
|
return this.request({ ...options, url, method: 'PUT', body });
|
|
73
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Issues a `PATCH` request and resolves with the complete response.
|
|
117
|
+
*
|
|
118
|
+
* @param {string} url - The URL to request.
|
|
119
|
+
* @param {RequestBody} [body] - Request body payload.
|
|
120
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
121
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
122
|
+
*/
|
|
74
123
|
patch(url, body, options) {
|
|
75
124
|
return this.request({ ...options, url, method: 'PATCH', body });
|
|
76
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Issues a `DELETE` request and resolves with the complete response.
|
|
128
|
+
*
|
|
129
|
+
* @param {string} url - The URL to request.
|
|
130
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
131
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
132
|
+
*/
|
|
77
133
|
delete(url, options) {
|
|
78
134
|
return this.request({ ...options, url, method: 'DELETE' });
|
|
79
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Issues a `HEAD` request and resolves with the complete response (no body).
|
|
138
|
+
*
|
|
139
|
+
* @param {string} url - The URL to request.
|
|
140
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
141
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
142
|
+
*/
|
|
80
143
|
head(url, options) {
|
|
81
144
|
return this.request({ ...options, url, method: 'HEAD' });
|
|
82
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Issues an `OPTIONS` request and resolves with the complete response.
|
|
148
|
+
*
|
|
149
|
+
* @param {string} url - The URL to request.
|
|
150
|
+
* @param {RequestOptions} [options] - Optional per-request settings.
|
|
151
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the server response.
|
|
152
|
+
*/
|
|
83
153
|
options(url, options) {
|
|
84
154
|
return this.request({ ...options, url, method: 'OPTIONS' });
|
|
85
155
|
}
|
|
86
|
-
|
|
156
|
+
/**
|
|
157
|
+
* Executes a fully described HTTP request, applying session defaults, request
|
|
158
|
+
* interceptors, redirect following, cookie management, and response
|
|
159
|
+
* interceptors in sequence.
|
|
160
|
+
*
|
|
161
|
+
* @param {NLcURLRequest} input - The request descriptor.
|
|
162
|
+
* @returns {Promise<NLcURLResponse>} Resolves with the final response after all redirects.
|
|
163
|
+
* @throws {NLcURLError} If the session has been closed.
|
|
164
|
+
* @throws {AbortError} If the provided `AbortSignal` fires before completion.
|
|
165
|
+
* @throws {TimeoutError} If any configured timeout is exceeded.
|
|
166
|
+
* @throws {ConnectionError} If a TCP connection cannot be established.
|
|
167
|
+
* @throws {TLSError} If the TLS handshake fails.
|
|
168
|
+
* @throws {ProxyError} If the proxy tunnel cannot be established.
|
|
169
|
+
* @throws {NLcURLError} If the maximum number of redirects is exceeded (`ERR_MAX_REDIRECTS`).
|
|
170
|
+
*/
|
|
87
171
|
async request(input) {
|
|
88
172
|
if (this.closed) {
|
|
89
173
|
throw new NLcURLError('Session is closed', 'ERR_SESSION_CLOSED');
|
|
90
174
|
}
|
|
91
|
-
// Rate limiting
|
|
92
175
|
if (this.rateLimiter) {
|
|
93
176
|
await this.rateLimiter.acquire();
|
|
94
177
|
}
|
|
95
|
-
// Merge session defaults with per-request options
|
|
96
178
|
let req = this.mergeDefaults(input);
|
|
97
|
-
// Run request interceptors
|
|
98
179
|
req = await this.interceptors.processRequest(req);
|
|
99
|
-
// Resolve the profile
|
|
100
180
|
const profile = this.resolveProfile(req);
|
|
101
|
-
// Build negotiator options
|
|
102
181
|
const negotiatorOptions = {
|
|
103
182
|
stealth: req.stealth,
|
|
104
183
|
profile,
|
|
105
184
|
insecure: req.insecure,
|
|
106
185
|
};
|
|
107
|
-
|
|
108
|
-
let response
|
|
109
|
-
|
|
186
|
+
const totalStart = Date.now();
|
|
187
|
+
let response;
|
|
188
|
+
if (this.config.retry && this.config.retry.count && this.config.retry.count > 0) {
|
|
189
|
+
response = await withRetry({
|
|
190
|
+
count: this.config.retry.count,
|
|
191
|
+
delay: this.config.retry.delay ?? 1000,
|
|
192
|
+
backoff: this.config.retry.backoff ?? 'exponential',
|
|
193
|
+
jitter: this.config.retry.jitter ?? 200,
|
|
194
|
+
retryOn: this.config.retry.retryOn,
|
|
195
|
+
}, () => this.executeWithRedirects(req, negotiatorOptions));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
response = await this.executeWithRedirects(req, negotiatorOptions);
|
|
199
|
+
}
|
|
200
|
+
if (response.timings) {
|
|
201
|
+
response.timings.total = Date.now() - totalStart;
|
|
202
|
+
}
|
|
110
203
|
if (this.cookieJar) {
|
|
111
204
|
const url = new URL(response.url);
|
|
112
205
|
this.cookieJar.setCookies(response.headers, url, response.rawHeaders);
|
|
113
206
|
}
|
|
114
|
-
// Run response interceptors
|
|
115
207
|
response = await this.interceptors.processResponse(response);
|
|
116
208
|
return response;
|
|
117
209
|
}
|
|
118
|
-
// ---- Cookie access ----
|
|
119
210
|
/**
|
|
120
|
-
*
|
|
211
|
+
* Returns the active {@link CookieJar} for this session, or `null` if
|
|
212
|
+
* cookie management was disabled via `cookieJar: false`.
|
|
213
|
+
*
|
|
214
|
+
* @returns {CookieJar|null} The shared cookie jar, or `null`.
|
|
121
215
|
*/
|
|
122
216
|
getCookies() {
|
|
123
217
|
return this.cookieJar;
|
|
124
218
|
}
|
|
125
|
-
// ---- Lifecycle ----
|
|
126
219
|
/**
|
|
127
|
-
*
|
|
220
|
+
* Closes the session, releasing any pooled connections. After calling this
|
|
221
|
+
* method, issuing further requests will throw an `NLcURLError` with code
|
|
222
|
+
* `ERR_SESSION_CLOSED`. Subsequent calls are no-ops.
|
|
128
223
|
*/
|
|
129
224
|
close() {
|
|
130
225
|
if (this.closed)
|
|
@@ -132,10 +227,8 @@ export class NLcURLSession {
|
|
|
132
227
|
this.closed = true;
|
|
133
228
|
this.negotiator.close();
|
|
134
229
|
}
|
|
135
|
-
// ---- Internal helpers ----
|
|
136
230
|
mergeDefaults(input) {
|
|
137
231
|
const cfg = this.config;
|
|
138
|
-
// Resolve base URL
|
|
139
232
|
let url = input.url;
|
|
140
233
|
if (cfg.baseURL && !url.startsWith('http://') && !url.startsWith('https://')) {
|
|
141
234
|
url = resolveURL(cfg.baseURL, url);
|
|
@@ -143,11 +236,9 @@ export class NLcURLSession {
|
|
|
143
236
|
else if (input.baseURL && !url.startsWith('http://') && !url.startsWith('https://')) {
|
|
144
237
|
url = resolveURL(input.baseURL, url);
|
|
145
238
|
}
|
|
146
|
-
// Append query params
|
|
147
239
|
if (input.params) {
|
|
148
240
|
url = appendParams(url, input.params);
|
|
149
241
|
}
|
|
150
|
-
// Merge headers (session defaults first, request headers override)
|
|
151
242
|
const headers = {};
|
|
152
243
|
if (cfg.headers) {
|
|
153
244
|
for (const [k, v] of Object.entries(cfg.headers)) {
|
|
@@ -159,12 +250,10 @@ export class NLcURLSession {
|
|
|
159
250
|
headers[k.toLowerCase()] = v;
|
|
160
251
|
}
|
|
161
252
|
}
|
|
162
|
-
// Inject cookies
|
|
163
253
|
if (this.cookieJar) {
|
|
164
254
|
const parsedUrl = new URL(url);
|
|
165
255
|
const cookieHeader = this.cookieJar.getCookieHeader(parsedUrl);
|
|
166
256
|
if (cookieHeader) {
|
|
167
|
-
// Merge with any explicitly set cookie header
|
|
168
257
|
const existing = headers['cookie'];
|
|
169
258
|
headers['cookie'] = existing ? `${existing}; ${cookieHeader}` : cookieHeader;
|
|
170
259
|
}
|
|
@@ -186,6 +275,7 @@ export class NLcURLSession {
|
|
|
186
275
|
httpVersion: input.httpVersion ?? cfg.httpVersion,
|
|
187
276
|
timeout: input.timeout ?? cfg.timeout,
|
|
188
277
|
acceptEncoding: input.acceptEncoding ?? cfg.acceptEncoding,
|
|
278
|
+
dnsFamily: input.dnsFamily ?? cfg.dnsFamily,
|
|
189
279
|
};
|
|
190
280
|
}
|
|
191
281
|
resolveProfile(req) {
|
|
@@ -203,15 +293,12 @@ export class NLcURLSession {
|
|
|
203
293
|
const maxRedirects = req.maxRedirects ?? MAX_REDIRECTS;
|
|
204
294
|
const shouldFollow = req.followRedirects ?? true;
|
|
205
295
|
while (true) {
|
|
206
|
-
// Check abort signal
|
|
207
296
|
if (currentReq.signal?.aborted) {
|
|
208
297
|
throw new AbortError();
|
|
209
298
|
}
|
|
210
299
|
const response = await this.negotiator.send(currentReq, options);
|
|
211
|
-
// Check if we should follow a redirect
|
|
212
300
|
const isRedirect = [301, 302, 303, 307, 308].includes(response.status);
|
|
213
301
|
if (!isRedirect || !shouldFollow) {
|
|
214
|
-
// Attach redirect tracking to the final response
|
|
215
302
|
if (redirectCount > 0) {
|
|
216
303
|
return new NLcURLResponse({
|
|
217
304
|
status: response.status,
|
|
@@ -232,12 +319,10 @@ export class NLcURLSession {
|
|
|
232
319
|
if (redirectCount > maxRedirects) {
|
|
233
320
|
throw new NLcURLError(`Maximum redirect limit (${maxRedirects}) exceeded`, 'ERR_MAX_REDIRECTS');
|
|
234
321
|
}
|
|
235
|
-
// Extract Location header
|
|
236
322
|
const location = response.headers['location'];
|
|
237
323
|
if (!location) {
|
|
238
324
|
return response;
|
|
239
325
|
}
|
|
240
|
-
// Resolve redirect URL and validate protocol
|
|
241
326
|
let redirectUrl;
|
|
242
327
|
try {
|
|
243
328
|
redirectUrl = resolveURL(currentReq.url, location);
|
|
@@ -251,15 +336,10 @@ export class NLcURLSession {
|
|
|
251
336
|
throw err;
|
|
252
337
|
throw new NLcURLError(`Invalid redirect URL: ${location}`, 'ERR_INVALID_REDIRECT');
|
|
253
338
|
}
|
|
254
|
-
// Store cookies from redirect response
|
|
255
339
|
if (this.cookieJar) {
|
|
256
340
|
const url = new URL(response.url);
|
|
257
341
|
this.cookieJar.setCookies(response.headers, url, response.rawHeaders);
|
|
258
342
|
}
|
|
259
|
-
// Determine new method:
|
|
260
|
-
// 303: always GET
|
|
261
|
-
// 301/302: GET for POST (historical behavior), keep for others
|
|
262
|
-
// 307/308: keep method and body
|
|
263
343
|
let method = currentReq.method ?? 'GET';
|
|
264
344
|
let body = currentReq.body;
|
|
265
345
|
if (response.status === 303) {
|
|
@@ -271,7 +351,6 @@ export class NLcURLSession {
|
|
|
271
351
|
method = 'GET';
|
|
272
352
|
body = null;
|
|
273
353
|
}
|
|
274
|
-
// Inject cookies for the new URL
|
|
275
354
|
const headers = { ...currentReq.headers };
|
|
276
355
|
delete headers['content-type'];
|
|
277
356
|
delete headers['content-length'];
|
|
@@ -285,7 +364,6 @@ export class NLcURLSession {
|
|
|
285
364
|
delete headers['cookie'];
|
|
286
365
|
}
|
|
287
366
|
}
|
|
288
|
-
// Strip sensitive headers on cross-origin redirects
|
|
289
367
|
const originalOrigin = new URL(currentReq.url).origin;
|
|
290
368
|
const redirectOrigin = new URL(redirectUrl).origin;
|
|
291
369
|
if (originalOrigin !== redirectOrigin) {
|
package/dist/core/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAA0B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAqD,MAAM,8BAA8B,CAAC;AACnH,OAAO,EAAE,WAAW,EAAwB,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAwC,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,aAAa,GAAG,EAAE,CAAC;AAUzB;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAa;IACP,MAAM,CAAsB;IAC5B,UAAU,CAAqB;IAC/B,SAAS,CAAmB;IAC5B,YAAY,CAAmB;IACxC,WAAW,GAAuB,IAAI,CAAC;IACvC,MAAM,GAAG,KAAK,CAAC;IAEvB;;;;OAIG;IACH,YAAY,SAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAE3C,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChE,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACnC,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,EAAsB;QAC9B,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,EAAuB;QAChC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,MAAuB;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,GAAW,EAAE,OAAwB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,GAAW,EAAE,IAAkB,EAAE,OAAwB;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;OAOG;IACH,GAAG,CAAC,GAAW,EAAE,IAAkB,EAAE,OAAwB;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAW,EAAE,IAAkB,EAAE,OAAwB;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAW,EAAE,OAAwB;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,GAAW,EAAE,OAAwB;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,GAAW,EAAE,OAAwB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,CAAC,KAAoB;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,WAAW,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpC,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAEzC,MAAM,iBAAiB,GAAsB;YAC3C,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO;YACP,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE9B,IAAI,QAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAChF,QAAQ,GAAG,MAAM,SAAS,CACxB;gBACE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI;gBACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,aAAa;gBACnD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG;gBACvC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;aACnC,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CACxD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,CAAC,OAA0B,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;QACvE,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;QAED,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,KAAoB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAExB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACpB,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7E,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACtF,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,KAAK;YACR,GAAG;YACH,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;YAC7B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;YACjD,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG;YACzB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO;YACrC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;YAC/B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS;YAC3C,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,IAAI,IAAI;YACrE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,aAAa;YACrE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK;YACjD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;YACjD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO;YACrC,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc;YAC1D,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS;SAC5C,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,GAAkB;QACvC,IAAI,CAAC,GAAG,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,WAAW,CACnB,6BAA6B,GAAG,CAAC,WAAW,GAAG,EAC/C,qBAAqB,CACtB,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,GAAkB,EAClB,OAA0B;QAE1B,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,aAAa,CAAC;QACvD,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC;QAEjD,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEjE,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;oBACtB,OAAO,IAAI,cAAc,CAAC;wBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,GAAG,EAAE,UAAU,CAAC,GAAG;wBACnB,aAAa;wBACb,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,aAAa,EAAE,CAAC;YAChB,IAAI,aAAa,GAAG,YAAY,EAAE,CAAC;gBACjC,MAAM,IAAI,WAAW,CACnB,2BAA2B,YAAY,YAAY,EACnD,mBAAmB,CACpB,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,IAAI,WAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAChE,MAAM,IAAI,WAAW,CACnB,qCAAqC,MAAM,CAAC,QAAQ,EAAE,EACtD,sBAAsB,CACvB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,WAAW;oBAAE,MAAM,GAAG,CAAC;gBAC1C,MAAM,IAAI,WAAW,CACnB,yBAAyB,QAAQ,EAAE,EACnC,sBAAsB,CACvB,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC;YACxC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAE3B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;iBAAM,IACL,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;gBACpD,MAAM,KAAK,MAAM,EACjB,CAAC;gBACD,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YAC1C,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;YAC/B,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;gBACvC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAC/D,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACtD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YACnD,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;gBACtC,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;gBAChC,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACxC,CAAC;YAED,UAAU,GAAG;gBACX,GAAG,UAAU;gBACb,GAAG,EAAE,WAAW;gBAChB,MAAM;gBACN,IAAI;gBACJ,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
import type { H2Profile } from './types.js';
|
|
1
2
|
/**
|
|
2
|
-
* Akamai HTTP/2 fingerprint
|
|
3
|
+
* Computes the Akamai HTTP/2 fingerprint string for a browser profile. The
|
|
4
|
+
* string encodes the SETTINGS frame parameters, connection window update,
|
|
5
|
+
* optional PRIORITY frame configuration, and pseudo-header ordering,
|
|
6
|
+
* separated by pipe characters (`|`).
|
|
3
7
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
8
|
+
* @param {H2Profile} profile - The HTTP/2 profile to fingerprint.
|
|
9
|
+
* @returns {string} The Akamai fingerprint string in the format
|
|
10
|
+
* `"S1:V1;S2:V2|WU|P1:E1:D1:W1,...|:method,:path,..."`.
|
|
6
11
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - PS: Pseudo-header order
|
|
11
|
-
*/
|
|
12
|
-
import type { H2Profile } from './types.js';
|
|
13
|
-
/**
|
|
14
|
-
* Build the Akamai HTTP/2 fingerprint string from an H2 profile.
|
|
12
|
+
* @example
|
|
13
|
+
* const fp = akamaiFingerprint(chromeLatest.h2);
|
|
14
|
+
* // => "1:65536;2:0;3:1000;4:6291456;6:262144|15663105|0:0:0:255|m,p,a,s"
|
|
15
15
|
*/
|
|
16
16
|
export declare function akamaiFingerprint(profile: H2Profile): string;
|
|
17
17
|
//# sourceMappingURL=akamai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"akamai.d.ts","sourceRoot":"","sources":["../../src/fingerprints/akamai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"akamai.d.ts","sourceRoot":"","sources":["../../src/fingerprints/akamai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAiB5D"}
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Akamai HTTP/2 fingerprint
|
|
2
|
+
* Computes the Akamai HTTP/2 fingerprint string for a browser profile. The
|
|
3
|
+
* string encodes the SETTINGS frame parameters, connection window update,
|
|
4
|
+
* optional PRIORITY frame configuration, and pseudo-header ordering,
|
|
5
|
+
* separated by pipe characters (`|`).
|
|
3
6
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
7
|
+
* @param {H2Profile} profile - The HTTP/2 profile to fingerprint.
|
|
8
|
+
* @returns {string} The Akamai fingerprint string in the format
|
|
9
|
+
* `"S1:V1;S2:V2|WU|P1:E1:D1:W1,...|:method,:path,..."`.
|
|
6
10
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - PS: Pseudo-header order
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Build the Akamai HTTP/2 fingerprint string from an H2 profile.
|
|
11
|
+
* @example
|
|
12
|
+
* const fp = akamaiFingerprint(chromeLatest.h2);
|
|
13
|
+
* // => "1:65536;2:0;3:1000;4:6291456;6:262144|15663105|0:0:0:255|m,p,a,s"
|
|
14
14
|
*/
|
|
15
15
|
export function akamaiFingerprint(profile) {
|
|
16
|
-
// Settings section
|
|
17
16
|
const settings = profile.settings
|
|
18
17
|
.map((s) => `${s.id}:${s.value}`)
|
|
19
18
|
.join(';');
|
|
20
|
-
// Window update section
|
|
21
19
|
const wu = String(profile.windowUpdate);
|
|
22
|
-
// Priority frames section
|
|
23
20
|
const priority = (profile.priorityFrames ?? [])
|
|
24
21
|
.map((f) => `${f.streamId}:${f.exclusive ? 1 : 0}:${f.dependsOn}:${f.weight}`)
|
|
25
22
|
.join(',');
|
|
26
|
-
// Pseudo-header order section
|
|
27
23
|
const pseudo = profile.pseudoHeaderOrder.join(',');
|
|
28
24
|
return `${settings}|${wu}|${priority}|${pseudo}`;
|
|
29
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"akamai.js","sourceRoot":"","sources":["../../src/fingerprints/akamai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"akamai.js","sourceRoot":"","sources":["../../src/fingerprints/akamai.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAkB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;SAC5C,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,CACpE;SACA,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnD,OAAO,GAAG,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;AACnD,CAAC"}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Browser fingerprint database.
|
|
3
|
-
*
|
|
4
|
-
* Provides a unified lookup for all browser profiles by canonical name
|
|
5
|
-
* (e.g. "chrome136", "firefox138", "safari_latest").
|
|
6
|
-
*/
|
|
7
1
|
import type { BrowserProfile } from './types.js';
|
|
8
2
|
import { chromeLatest } from './profiles/chrome.js';
|
|
9
3
|
import { firefoxLatest } from './profiles/firefox.js';
|
|
@@ -11,22 +5,27 @@ import { safariLatest } from './profiles/safari.js';
|
|
|
11
5
|
import { edgeLatest } from './profiles/edge.js';
|
|
12
6
|
import { torLatest } from './profiles/tor.js';
|
|
13
7
|
/**
|
|
14
|
-
*
|
|
8
|
+
* Looks up a browser profile by name, accepting flexible casing and separators.
|
|
9
|
+
* Returns the latest version of the named browser when given a bare browser
|
|
10
|
+
* family name (e.g. `"chrome"`, `"firefox"`).
|
|
15
11
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* - Latest alias: "chrome_latest", "firefox_latest"
|
|
19
|
-
* - Family only: "chrome", "firefox" (resolves to latest)
|
|
12
|
+
* @param {string} name - Profile identifier such as `"chrome136"`, `"firefox"`, or `"safari"`. Case-insensitive; hyphens and spaces are ignored.
|
|
13
|
+
* @returns {BrowserProfile|undefined} The matching profile, or `undefined` if no profile is registered under that name.
|
|
20
14
|
*
|
|
21
|
-
*
|
|
15
|
+
* @example
|
|
16
|
+
* const profile = getProfile('chrome136');
|
|
17
|
+
* const latest = getProfile('chrome'); // resolves to the latest Chrome profile
|
|
22
18
|
*/
|
|
23
19
|
export declare function getProfile(name: string): BrowserProfile | undefined;
|
|
24
20
|
/**
|
|
25
|
-
*
|
|
21
|
+
* Returns a sorted list of all registered browser profile identifiers
|
|
22
|
+
* (e.g. `["chrome120", "chrome124", "firefox120", ...]`). Use these names
|
|
23
|
+
* with {@link getProfile} or the `impersonate` request option.
|
|
24
|
+
*
|
|
25
|
+
* @returns {string[]} Alphabetically sorted array of profile names.
|
|
26
26
|
*/
|
|
27
27
|
export declare function listProfiles(): string[];
|
|
28
|
-
/** The default profile used when `impersonate` is
|
|
29
|
-
* specific version. */
|
|
28
|
+
/** The default browser profile used when no `impersonate` option is specified. Points to the latest bundled Chrome profile. */
|
|
30
29
|
export declare const DEFAULT_PROFILE: BrowserProfile;
|
|
31
30
|
export { chromeLatest, firefoxLatest, safariLatest, edgeLatest, torLatest };
|
|
32
31
|
export type { BrowserProfile } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/fingerprints/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/fingerprints/database.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAmB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAgB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAe,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAgB3D;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAoBnE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAED,+HAA+H;AAC/H,eAAO,MAAM,eAAe,EAAE,cAA6B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Browser fingerprint database.
|
|
3
|
-
*
|
|
4
|
-
* Provides a unified lookup for all browser profiles by canonical name
|
|
5
|
-
* (e.g. "chrome136", "firefox138", "safari_latest").
|
|
6
|
-
*/
|
|
7
1
|
import { chromeProfiles, chromeLatest } from './profiles/chrome.js';
|
|
8
2
|
import { firefoxProfiles, firefoxLatest } from './profiles/firefox.js';
|
|
9
3
|
import { safariProfiles, safariLatest } from './profiles/safari.js';
|
|
10
4
|
import { edgeProfiles, edgeLatest } from './profiles/edge.js';
|
|
11
5
|
import { torProfiles, torLatest } from './profiles/tor.js';
|
|
12
|
-
// ---- Merged database ----
|
|
13
6
|
const allProfiles = new Map();
|
|
14
7
|
for (const source of [
|
|
15
8
|
chromeProfiles,
|
|
@@ -23,22 +16,22 @@ for (const source of [
|
|
|
23
16
|
}
|
|
24
17
|
}
|
|
25
18
|
/**
|
|
26
|
-
*
|
|
19
|
+
* Looks up a browser profile by name, accepting flexible casing and separators.
|
|
20
|
+
* Returns the latest version of the named browser when given a bare browser
|
|
21
|
+
* family name (e.g. `"chrome"`, `"firefox"`).
|
|
27
22
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* - Latest alias: "chrome_latest", "firefox_latest"
|
|
31
|
-
* - Family only: "chrome", "firefox" (resolves to latest)
|
|
23
|
+
* @param {string} name - Profile identifier such as `"chrome136"`, `"firefox"`, or `"safari"`. Case-insensitive; hyphens and spaces are ignored.
|
|
24
|
+
* @returns {BrowserProfile|undefined} The matching profile, or `undefined` if no profile is registered under that name.
|
|
32
25
|
*
|
|
33
|
-
*
|
|
26
|
+
* @example
|
|
27
|
+
* const profile = getProfile('chrome136');
|
|
28
|
+
* const latest = getProfile('chrome'); // resolves to the latest Chrome profile
|
|
34
29
|
*/
|
|
35
30
|
export function getProfile(name) {
|
|
36
31
|
const lower = name.toLowerCase().replace(/[-\s]/g, '');
|
|
37
|
-
// Direct match
|
|
38
32
|
const direct = allProfiles.get(lower);
|
|
39
33
|
if (direct)
|
|
40
34
|
return direct;
|
|
41
|
-
// Family-only shorthand
|
|
42
35
|
switch (lower) {
|
|
43
36
|
case 'chrome':
|
|
44
37
|
return chromeLatest;
|
|
@@ -55,14 +48,16 @@ export function getProfile(name) {
|
|
|
55
48
|
}
|
|
56
49
|
}
|
|
57
50
|
/**
|
|
58
|
-
*
|
|
51
|
+
* Returns a sorted list of all registered browser profile identifiers
|
|
52
|
+
* (e.g. `["chrome120", "chrome124", "firefox120", ...]`). Use these names
|
|
53
|
+
* with {@link getProfile} or the `impersonate` request option.
|
|
54
|
+
*
|
|
55
|
+
* @returns {string[]} Alphabetically sorted array of profile names.
|
|
59
56
|
*/
|
|
60
57
|
export function listProfiles() {
|
|
61
58
|
return [...allProfiles.keys()].sort();
|
|
62
59
|
}
|
|
63
|
-
/** The default profile used when `impersonate` is
|
|
64
|
-
* specific version. */
|
|
60
|
+
/** The default browser profile used when no `impersonate` option is specified. Points to the latest bundled Chrome profile. */
|
|
65
61
|
export const DEFAULT_PROFILE = chromeLatest;
|
|
66
|
-
// Re-exports for convenience
|
|
67
62
|
export { chromeLatest, firefoxLatest, safariLatest, edgeLatest, torLatest };
|
|
68
63
|
//# sourceMappingURL=database.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/fingerprints/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/fingerprints/database.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEtD,KAAK,MAAM,MAAM,IAAI;IACnB,cAAc;IACd,eAAe;IACf,cAAc;IACd,YAAY;IACZ,WAAW;CACZ,EAAE,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,UAAU,CAAC;QACpB,KAAK,KAAK;YACR,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,+HAA+H;AAC/H,MAAM,CAAC,MAAM,eAAe,GAAmB,YAAY,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC"}
|