nlcurl 0.3.1 → 0.4.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.
Files changed (182) hide show
  1. package/dist/cli/args.d.ts.map +1 -1
  2. package/dist/cli/args.js +84 -90
  3. package/dist/cli/args.js.map +1 -1
  4. package/dist/cli/index.js +25 -25
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/output.d.ts +2 -2
  7. package/dist/cli/output.d.ts.map +1 -1
  8. package/dist/cli/output.js +55 -55
  9. package/dist/cli/output.js.map +1 -1
  10. package/dist/cookies/jar.d.ts +1 -1
  11. package/dist/cookies/jar.d.ts.map +1 -1
  12. package/dist/cookies/jar.js +20 -22
  13. package/dist/cookies/jar.js.map +1 -1
  14. package/dist/cookies/parser.d.ts +1 -1
  15. package/dist/cookies/parser.d.ts.map +1 -1
  16. package/dist/cookies/parser.js +20 -22
  17. package/dist/cookies/parser.js.map +1 -1
  18. package/dist/core/client.d.ts +3 -3
  19. package/dist/core/client.d.ts.map +1 -1
  20. package/dist/core/client.js +9 -8
  21. package/dist/core/client.js.map +1 -1
  22. package/dist/core/errors.d.ts +64 -21
  23. package/dist/core/errors.d.ts.map +1 -1
  24. package/dist/core/errors.js +112 -36
  25. package/dist/core/errors.js.map +1 -1
  26. package/dist/core/request.d.ts +10 -5
  27. package/dist/core/request.d.ts.map +1 -1
  28. package/dist/core/response.d.ts +2 -2
  29. package/dist/core/response.d.ts.map +1 -1
  30. package/dist/core/response.js +6 -8
  31. package/dist/core/response.js.map +1 -1
  32. package/dist/core/session.d.ts +7 -6
  33. package/dist/core/session.d.ts.map +1 -1
  34. package/dist/core/session.js +58 -43
  35. package/dist/core/session.js.map +1 -1
  36. package/dist/core/validation.d.ts +96 -0
  37. package/dist/core/validation.d.ts.map +1 -0
  38. package/dist/core/validation.js +246 -0
  39. package/dist/core/validation.js.map +1 -0
  40. package/dist/fingerprints/akamai.d.ts +1 -1
  41. package/dist/fingerprints/akamai.d.ts.map +1 -1
  42. package/dist/fingerprints/akamai.js +3 -7
  43. package/dist/fingerprints/akamai.js.map +1 -1
  44. package/dist/fingerprints/database.d.ts +7 -7
  45. package/dist/fingerprints/database.d.ts.map +1 -1
  46. package/dist/fingerprints/database.js +12 -18
  47. package/dist/fingerprints/database.js.map +1 -1
  48. package/dist/fingerprints/extensions.d.ts.map +1 -1
  49. package/dist/fingerprints/extensions.js +4 -4
  50. package/dist/fingerprints/extensions.js.map +1 -1
  51. package/dist/fingerprints/ja3.d.ts +1 -1
  52. package/dist/fingerprints/ja3.d.ts.map +1 -1
  53. package/dist/fingerprints/ja3.js +12 -12
  54. package/dist/fingerprints/ja3.js.map +1 -1
  55. package/dist/fingerprints/profiles/chrome.d.ts +1 -1
  56. package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
  57. package/dist/fingerprints/profiles/chrome.js +59 -100
  58. package/dist/fingerprints/profiles/chrome.js.map +1 -1
  59. package/dist/fingerprints/profiles/edge.d.ts +1 -1
  60. package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
  61. package/dist/fingerprints/profiles/edge.js +26 -26
  62. package/dist/fingerprints/profiles/edge.js.map +1 -1
  63. package/dist/fingerprints/profiles/firefox.d.ts +1 -1
  64. package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
  65. package/dist/fingerprints/profiles/firefox.js +35 -85
  66. package/dist/fingerprints/profiles/firefox.js.map +1 -1
  67. package/dist/fingerprints/profiles/safari.d.ts +1 -1
  68. package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
  69. package/dist/fingerprints/profiles/safari.js +35 -68
  70. package/dist/fingerprints/profiles/safari.js.map +1 -1
  71. package/dist/fingerprints/profiles/tor.d.ts +1 -1
  72. package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
  73. package/dist/fingerprints/profiles/tor.js +24 -57
  74. package/dist/fingerprints/profiles/tor.js.map +1 -1
  75. package/dist/fingerprints/types.d.ts +1 -1
  76. package/dist/fingerprints/types.d.ts.map +1 -1
  77. package/dist/http/h1/client.d.ts +4 -4
  78. package/dist/http/h1/client.d.ts.map +1 -1
  79. package/dist/http/h1/client.js +31 -31
  80. package/dist/http/h1/client.js.map +1 -1
  81. package/dist/http/h1/encoder.d.ts +1 -1
  82. package/dist/http/h1/encoder.d.ts.map +1 -1
  83. package/dist/http/h1/encoder.js +17 -19
  84. package/dist/http/h1/encoder.js.map +1 -1
  85. package/dist/http/h1/parser.d.ts +1 -1
  86. package/dist/http/h1/parser.d.ts.map +1 -1
  87. package/dist/http/h1/parser.js +29 -33
  88. package/dist/http/h1/parser.js.map +1 -1
  89. package/dist/http/h2/client.d.ts +5 -4
  90. package/dist/http/h2/client.d.ts.map +1 -1
  91. package/dist/http/h2/client.js +59 -71
  92. package/dist/http/h2/client.js.map +1 -1
  93. package/dist/http/h2/frames.d.ts +7 -3
  94. package/dist/http/h2/frames.d.ts.map +1 -1
  95. package/dist/http/h2/frames.js +16 -12
  96. package/dist/http/h2/frames.js.map +1 -1
  97. package/dist/http/h2/hpack.d.ts.map +1 -1
  98. package/dist/http/h2/hpack.js +328 -130
  99. package/dist/http/h2/hpack.js.map +1 -1
  100. package/dist/http/negotiator.d.ts +4 -4
  101. package/dist/http/negotiator.d.ts.map +1 -1
  102. package/dist/http/negotiator.js +26 -39
  103. package/dist/http/negotiator.js.map +1 -1
  104. package/dist/http/pool.d.ts +5 -5
  105. package/dist/http/pool.d.ts.map +1 -1
  106. package/dist/http/pool.js +5 -5
  107. package/dist/http/pool.js.map +1 -1
  108. package/dist/index.d.ts +16 -14
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +10 -9
  111. package/dist/index.js.map +1 -1
  112. package/dist/middleware/interceptor.d.ts +2 -2
  113. package/dist/middleware/interceptor.d.ts.map +1 -1
  114. package/dist/middleware/interceptor.js.map +1 -1
  115. package/dist/middleware/rate-limiter.d.ts.map +1 -1
  116. package/dist/middleware/rate-limiter.js +2 -0
  117. package/dist/middleware/rate-limiter.js.map +1 -1
  118. package/dist/middleware/retry.d.ts +6 -4
  119. package/dist/middleware/retry.d.ts.map +1 -1
  120. package/dist/middleware/retry.js +9 -7
  121. package/dist/middleware/retry.js.map +1 -1
  122. package/dist/proxy/http-proxy.d.ts +1 -1
  123. package/dist/proxy/http-proxy.d.ts.map +1 -1
  124. package/dist/proxy/http-proxy.js +14 -14
  125. package/dist/proxy/http-proxy.js.map +1 -1
  126. package/dist/proxy/socks.d.ts +1 -1
  127. package/dist/proxy/socks.d.ts.map +1 -1
  128. package/dist/proxy/socks.js +31 -27
  129. package/dist/proxy/socks.js.map +1 -1
  130. package/dist/tls/constants.d.ts.map +1 -1
  131. package/dist/tls/constants.js +1 -4
  132. package/dist/tls/constants.js.map +1 -1
  133. package/dist/tls/node-engine.d.ts +2 -2
  134. package/dist/tls/node-engine.d.ts.map +1 -1
  135. package/dist/tls/node-engine.js +58 -58
  136. package/dist/tls/node-engine.js.map +1 -1
  137. package/dist/tls/stealth/client-hello.d.ts +1 -1
  138. package/dist/tls/stealth/client-hello.d.ts.map +1 -1
  139. package/dist/tls/stealth/client-hello.js +8 -14
  140. package/dist/tls/stealth/client-hello.js.map +1 -1
  141. package/dist/tls/stealth/engine.d.ts +2 -2
  142. package/dist/tls/stealth/engine.d.ts.map +1 -1
  143. package/dist/tls/stealth/engine.js +23 -26
  144. package/dist/tls/stealth/engine.js.map +1 -1
  145. package/dist/tls/stealth/handshake.d.ts +3 -3
  146. package/dist/tls/stealth/handshake.d.ts.map +1 -1
  147. package/dist/tls/stealth/handshake.js +62 -74
  148. package/dist/tls/stealth/handshake.js.map +1 -1
  149. package/dist/tls/stealth/key-schedule.d.ts +2 -2
  150. package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
  151. package/dist/tls/stealth/key-schedule.js +20 -20
  152. package/dist/tls/stealth/key-schedule.js.map +1 -1
  153. package/dist/tls/stealth/record-layer.d.ts +1 -1
  154. package/dist/tls/stealth/record-layer.d.ts.map +1 -1
  155. package/dist/tls/stealth/record-layer.js +13 -13
  156. package/dist/tls/stealth/record-layer.js.map +1 -1
  157. package/dist/tls/types.d.ts +4 -4
  158. package/dist/tls/types.d.ts.map +1 -1
  159. package/dist/utils/buffer-reader.d.ts.map +1 -1
  160. package/dist/utils/buffer-reader.js.map +1 -1
  161. package/dist/utils/buffer-writer.d.ts.map +1 -1
  162. package/dist/utils/buffer-writer.js +6 -0
  163. package/dist/utils/buffer-writer.js.map +1 -1
  164. package/dist/utils/encoding.d.ts +1 -1
  165. package/dist/utils/encoding.d.ts.map +1 -1
  166. package/dist/utils/encoding.js +23 -25
  167. package/dist/utils/encoding.js.map +1 -1
  168. package/dist/utils/logger.d.ts +48 -7
  169. package/dist/utils/logger.d.ts.map +1 -1
  170. package/dist/utils/logger.js +61 -13
  171. package/dist/utils/logger.js.map +1 -1
  172. package/dist/utils/url.d.ts.map +1 -1
  173. package/dist/utils/url.js +2 -2
  174. package/dist/utils/url.js.map +1 -1
  175. package/dist/ws/client.d.ts +2 -2
  176. package/dist/ws/client.d.ts.map +1 -1
  177. package/dist/ws/client.js +67 -71
  178. package/dist/ws/client.js.map +1 -1
  179. package/dist/ws/frame.d.ts.map +1 -1
  180. package/dist/ws/frame.js +8 -8
  181. package/dist/ws/frame.js.map +1 -1
  182. package/package.json +60 -57
@@ -0,0 +1,246 @@
1
+ /**
2
+ * @module validation
3
+ * @description Provides reusable runtime validation helpers for all public API
4
+ * entry points. Functions throw {@link NLcURLError} with code `ERR_VALIDATION`
5
+ * when an input fails a check. These guards protect every trust boundary
6
+ * between caller-supplied data and internal library logic.
7
+ */
8
+ import { NLcURLError } from "./errors.js";
9
+ const VALID_METHODS = new Set(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]);
10
+ const VALID_HTTP_VERSIONS = new Set(["1.1", "2"]);
11
+ const VALID_DNS_FAMILIES = new Set([4, 6]);
12
+ const VALID_BACKOFF = new Set(["linear", "exponential"]);
13
+ /**
14
+ * Throws an `ERR_VALIDATION` error with the supplied message.
15
+ *
16
+ * @param {string} message - Description of the validation failure.
17
+ * @throws {NLcURLError} Always.
18
+ */
19
+ function fail(message) {
20
+ throw new NLcURLError(message, "ERR_VALIDATION");
21
+ }
22
+ /**
23
+ * Asserts that `value` is a non-empty string.
24
+ *
25
+ * @param {unknown} value - The value to check.
26
+ * @param {string} label - Parameter name for the error message.
27
+ * @throws {NLcURLError} If the value is not a non-empty string.
28
+ */
29
+ export function assertNonEmptyString(value, label) {
30
+ if (typeof value !== "string" || value.length === 0) {
31
+ fail(`${label} must be a non-empty string`);
32
+ }
33
+ }
34
+ /**
35
+ * Asserts that `value` is a positive finite number.
36
+ *
37
+ * @param {unknown} value - The value to check.
38
+ * @param {string} label - Parameter name for the error message.
39
+ * @throws {NLcURLError} If the value is not a positive finite number.
40
+ */
41
+ export function assertPositiveNumber(value, label) {
42
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
43
+ fail(`${label} must be a positive finite number`);
44
+ }
45
+ }
46
+ /**
47
+ * Asserts that `value` is a non-negative finite integer.
48
+ *
49
+ * @param {unknown} value - The value to check.
50
+ * @param {string} label - Parameter name for the error message.
51
+ * @throws {NLcURLError} If the value is not a non-negative integer.
52
+ */
53
+ export function assertNonNegativeInt(value, label) {
54
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 0) {
55
+ fail(`${label} must be a non-negative integer`);
56
+ }
57
+ }
58
+ /**
59
+ * Asserts that `value` is a member of the allowed set.
60
+ *
61
+ * @param {unknown} value - The value to check.
62
+ * @param {Set<T>} allowed - Set of permitted values.
63
+ * @param {string} label - Parameter name for the error message.
64
+ * @throws {NLcURLError} If the value is not in the allowed set.
65
+ */
66
+ export function assertEnum(value, allowed, label) {
67
+ if (!allowed.has(value)) {
68
+ const names = [...allowed].map(String).join(", ");
69
+ fail(`${label} must be one of: ${names}`);
70
+ }
71
+ }
72
+ /**
73
+ * Asserts that `value` is a plain object (not `null`, not an array, not a
74
+ * class instance other than `Object`).
75
+ *
76
+ * @param {unknown} value - The value to check.
77
+ * @param {string} label - Parameter name for the error message.
78
+ * @throws {NLcURLError} If the value is not a plain object.
79
+ */
80
+ export function assertPlainObject(value, label) {
81
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
82
+ fail(`${label} must be a plain object`);
83
+ }
84
+ }
85
+ /**
86
+ * Validates the URL string and its protocol for HTTP requests.
87
+ *
88
+ * @param {string} url - The URL string to validate.
89
+ * @param {Set<string>} [allowedSchemes] - Permitted protocol schemes.
90
+ * @throws {NLcURLError} If the URL is invalid or uses an unsupported protocol.
91
+ */
92
+ export function validateUrl(url, allowedSchemes = new Set(["http:", "https:"])) {
93
+ if (typeof url !== "string" || url.length === 0) {
94
+ fail("url must be a non-empty string");
95
+ }
96
+ let parsed;
97
+ try {
98
+ parsed = new URL(url);
99
+ }
100
+ catch {
101
+ fail(`Invalid URL: ${url}`);
102
+ return;
103
+ }
104
+ if (!allowedSchemes.has(parsed.protocol)) {
105
+ fail(`Unsupported URL protocol: ${parsed.protocol}`);
106
+ }
107
+ }
108
+ /**
109
+ * Validates per-phase timeout configuration. Each field must be a positive
110
+ * finite number when present.
111
+ *
112
+ * @param {unknown} timeout - A flat timeout number or per-phase object.
113
+ * @throws {NLcURLError} If any timeout value is invalid.
114
+ */
115
+ export function validateTimeout(timeout) {
116
+ if (timeout === undefined || timeout === null)
117
+ return;
118
+ if (typeof timeout === "number") {
119
+ if (!Number.isFinite(timeout) || timeout <= 0) {
120
+ fail("timeout must be a positive finite number");
121
+ }
122
+ return;
123
+ }
124
+ if (typeof timeout === "object" && !Array.isArray(timeout)) {
125
+ const obj = timeout;
126
+ for (const key of ["connect", "tls", "response", "total"]) {
127
+ if (obj[key] !== undefined) {
128
+ if (typeof obj[key] !== "number" || !Number.isFinite(obj[key]) || obj[key] <= 0) {
129
+ fail(`timeout.${key} must be a positive finite number`);
130
+ }
131
+ }
132
+ }
133
+ return;
134
+ }
135
+ fail("timeout must be a number or a TimeoutConfig object");
136
+ }
137
+ /**
138
+ * Validates all user-supplied fields of an outgoing request descriptor.
139
+ * Called at the entry of every public request function before any processing.
140
+ *
141
+ * @param {Record<string, unknown>} input - The raw request descriptor.
142
+ * @throws {NLcURLError} If any field fails validation.
143
+ */
144
+ export function validateRequest(input) {
145
+ if (input["method"] !== undefined) {
146
+ assertEnum(input["method"], VALID_METHODS, "method");
147
+ }
148
+ if (input["headers"] !== undefined && input["headers"] !== null) {
149
+ assertPlainObject(input["headers"], "headers");
150
+ }
151
+ if (input["httpVersion"] !== undefined) {
152
+ assertEnum(input["httpVersion"], VALID_HTTP_VERSIONS, "httpVersion");
153
+ }
154
+ if (input["dnsFamily"] !== undefined) {
155
+ assertEnum(input["dnsFamily"], VALID_DNS_FAMILIES, "dnsFamily");
156
+ }
157
+ if (input["maxRedirects"] !== undefined) {
158
+ assertNonNegativeInt(input["maxRedirects"], "maxRedirects");
159
+ }
160
+ validateTimeout(input["timeout"]);
161
+ if (input["impersonate"] !== undefined && input["impersonate"] !== null) {
162
+ assertNonEmptyString(input["impersonate"], "impersonate");
163
+ }
164
+ if (input["proxy"] !== undefined && input["proxy"] !== null) {
165
+ assertNonEmptyString(input["proxy"], "proxy");
166
+ }
167
+ }
168
+ /**
169
+ * Validates session-level configuration. Called once in the
170
+ * {@link NLcURLSession} constructor.
171
+ *
172
+ * @param {Record<string, unknown>} config - The raw session config.
173
+ * @throws {NLcURLError} If any field fails validation.
174
+ */
175
+ export function validateSessionConfig(config) {
176
+ if (config["baseURL"] !== undefined && config["baseURL"] !== null) {
177
+ assertNonEmptyString(config["baseURL"], "baseURL");
178
+ }
179
+ if (config["headers"] !== undefined && config["headers"] !== null) {
180
+ assertPlainObject(config["headers"], "headers");
181
+ }
182
+ if (config["httpVersion"] !== undefined) {
183
+ assertEnum(config["httpVersion"], VALID_HTTP_VERSIONS, "httpVersion");
184
+ }
185
+ if (config["dnsFamily"] !== undefined) {
186
+ assertEnum(config["dnsFamily"], VALID_DNS_FAMILIES, "dnsFamily");
187
+ }
188
+ if (config["maxRedirects"] !== undefined) {
189
+ assertNonNegativeInt(config["maxRedirects"], "maxRedirects");
190
+ }
191
+ validateTimeout(config["timeout"]);
192
+ if (config["impersonate"] !== undefined && config["impersonate"] !== null) {
193
+ assertNonEmptyString(config["impersonate"], "impersonate");
194
+ }
195
+ if (config["proxy"] !== undefined && config["proxy"] !== null) {
196
+ assertNonEmptyString(config["proxy"], "proxy");
197
+ }
198
+ if (config["retry"] !== undefined && config["retry"] !== null) {
199
+ validateRetryConfig(config["retry"]);
200
+ }
201
+ }
202
+ /**
203
+ * Validates the retry configuration object.
204
+ *
205
+ * @param {Record<string, unknown>} config - The raw retry config.
206
+ * @throws {NLcURLError} If any retry setting is invalid.
207
+ */
208
+ export function validateRetryConfig(config) {
209
+ if (config["count"] !== undefined) {
210
+ assertNonNegativeInt(config["count"], "retry.count");
211
+ }
212
+ if (config["delay"] !== undefined) {
213
+ assertPositiveNumber(config["delay"], "retry.delay");
214
+ }
215
+ if (config["jitter"] !== undefined) {
216
+ if (typeof config["jitter"] !== "number" || !Number.isFinite(config["jitter"]) || config["jitter"] < 0) {
217
+ fail("retry.jitter must be a non-negative finite number");
218
+ }
219
+ }
220
+ if (config["backoff"] !== undefined) {
221
+ assertEnum(config["backoff"], VALID_BACKOFF, "retry.backoff");
222
+ }
223
+ }
224
+ /**
225
+ * Validates rate limit configuration.
226
+ *
227
+ * @param {Record<string, unknown>} config - The raw rate limit config.
228
+ * @throws {NLcURLError} If any rate limit parameter is invalid.
229
+ */
230
+ export function validateRateLimitConfig(config) {
231
+ assertPositiveNumber(config["maxRequests"], "maxRequests");
232
+ assertPositiveNumber(config["windowMs"], "windowMs");
233
+ if (!Number.isInteger(config["maxRequests"])) {
234
+ fail("maxRequests must be an integer");
235
+ }
236
+ }
237
+ /**
238
+ * Validates a WebSocket URL (must use `ws:` or `wss:` protocol).
239
+ *
240
+ * @param {string} url - The WebSocket URL to validate.
241
+ * @throws {NLcURLError} If the URL is invalid or uses a non-WebSocket protocol.
242
+ */
243
+ export function validateWebSocketUrl(url) {
244
+ validateUrl(url, new Set(["ws:", "wss:"]));
245
+ }
246
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { H2Profile } from './types.js';
1
+ import type { H2Profile } from "./types.js";
2
2
  /**
3
3
  * Computes the Akamai HTTP/2 fingerprint string for a browser profile. The
4
4
  * string encodes the SETTINGS frame parameters, connection window update,
@@ -1 +1 @@
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
+ {"version":3,"file":"akamai.d.ts","sourceRoot":"","sources":["../../src/fingerprints/akamai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAU5D"}
@@ -13,14 +13,10 @@
13
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
- const settings = profile.settings
17
- .map((s) => `${s.id}:${s.value}`)
18
- .join(';');
16
+ const settings = profile.settings.map((s) => `${s.id}:${s.value}`).join(";");
19
17
  const wu = String(profile.windowUpdate);
20
- const priority = (profile.priorityFrames ?? [])
21
- .map((f) => `${f.streamId}:${f.exclusive ? 1 : 0}:${f.dependsOn}:${f.weight}`)
22
- .join(',');
23
- const pseudo = profile.pseudoHeaderOrder.join(',');
18
+ const priority = (profile.priorityFrames ?? []).map((f) => `${f.streamId}:${f.exclusive ? 1 : 0}:${f.dependsOn}:${f.weight}`).join(",");
19
+ const pseudo = profile.pseudoHeaderOrder.join(",");
24
20
  return `${settings}|${wu}|${priority}|${pseudo}`;
25
21
  }
26
22
  //# sourceMappingURL=akamai.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"akamai.js","sourceRoot":"","sources":["../../src/fingerprints/akamai.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAkB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7E,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,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,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExI,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,9 @@
1
- import type { BrowserProfile } from './types.js';
2
- import { chromeLatest } from './profiles/chrome.js';
3
- import { firefoxLatest } from './profiles/firefox.js';
4
- import { safariLatest } from './profiles/safari.js';
5
- import { edgeLatest } from './profiles/edge.js';
6
- import { torLatest } from './profiles/tor.js';
1
+ import type { BrowserProfile } from "./types.js";
2
+ import { chromeLatest } from "./profiles/chrome.js";
3
+ import { firefoxLatest } from "./profiles/firefox.js";
4
+ import { safariLatest } from "./profiles/safari.js";
5
+ import { edgeLatest } from "./profiles/edge.js";
6
+ import { torLatest } from "./profiles/tor.js";
7
7
  /**
8
8
  * Looks up a browser profile by name, accepting flexible casing and separators.
9
9
  * Returns the latest version of the named browser when given a bare browser
@@ -28,5 +28,5 @@ export declare function listProfiles(): string[];
28
28
  /** The default browser profile used when no `impersonate` option is specified. Points to the latest bundled Chrome profile. */
29
29
  export declare const DEFAULT_PROFILE: BrowserProfile;
30
30
  export { chromeLatest, firefoxLatest, safariLatest, edgeLatest, torLatest };
31
- export type { BrowserProfile } from './types.js';
31
+ export type { BrowserProfile } from "./types.js";
32
32
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/fingerprints/database.ts"],"names":[],"mappings":"AAAA,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;AAU3D;;;;;;;;;;;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,16 +1,10 @@
1
- import { chromeProfiles, chromeLatest } from './profiles/chrome.js';
2
- import { firefoxProfiles, firefoxLatest } from './profiles/firefox.js';
3
- import { safariProfiles, safariLatest } from './profiles/safari.js';
4
- import { edgeProfiles, edgeLatest } from './profiles/edge.js';
5
- import { torProfiles, torLatest } from './profiles/tor.js';
1
+ import { chromeProfiles, chromeLatest } from "./profiles/chrome.js";
2
+ import { firefoxProfiles, firefoxLatest } from "./profiles/firefox.js";
3
+ import { safariProfiles, safariLatest } from "./profiles/safari.js";
4
+ import { edgeProfiles, edgeLatest } from "./profiles/edge.js";
5
+ import { torProfiles, torLatest } from "./profiles/tor.js";
6
6
  const allProfiles = new Map();
7
- for (const source of [
8
- chromeProfiles,
9
- firefoxProfiles,
10
- safariProfiles,
11
- edgeProfiles,
12
- torProfiles,
13
- ]) {
7
+ for (const source of [chromeProfiles, firefoxProfiles, safariProfiles, edgeProfiles, torProfiles]) {
14
8
  for (const [key, profile] of source) {
15
9
  allProfiles.set(key, profile);
16
10
  }
@@ -28,20 +22,20 @@ for (const source of [
28
22
  * const latest = getProfile('chrome'); // resolves to the latest Chrome profile
29
23
  */
30
24
  export function getProfile(name) {
31
- const lower = name.toLowerCase().replace(/[-\s]/g, '');
25
+ const lower = name.toLowerCase().replace(/[-\s]/g, "");
32
26
  const direct = allProfiles.get(lower);
33
27
  if (direct)
34
28
  return direct;
35
29
  switch (lower) {
36
- case 'chrome':
30
+ case "chrome":
37
31
  return chromeLatest;
38
- case 'firefox':
32
+ case "firefox":
39
33
  return firefoxLatest;
40
- case 'safari':
34
+ case "safari":
41
35
  return safariLatest;
42
- case 'edge':
36
+ case "edge":
43
37
  return edgeLatest;
44
- case 'tor':
38
+ case "tor":
45
39
  return torLatest;
46
40
  default:
47
41
  return undefined;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/fingerprints/database.ts"],"names":[],"mappings":"AACA,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,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;IAClG,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/fingerprints/extensions.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAShD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAcpD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAK7D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAK/D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAKlE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAcnE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAgBtC"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../src/fingerprints/extensions.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAShD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAK9D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAcpD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAK7D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAK/D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAKlE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAcnE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAgBtC"}
@@ -1,4 +1,4 @@
1
- import { BufferWriter } from '../utils/buffer-writer.js';
1
+ import { BufferWriter } from "../utils/buffer-writer.js";
2
2
  /**
3
3
  * Builds the SNI (Server Name Indication) extension payload for the given
4
4
  * hostname, encoded as a TLS `HostName` name list structure per RFC 6066.
@@ -7,7 +7,7 @@ import { BufferWriter } from '../utils/buffer-writer.js';
7
7
  * @returns {Buffer} Encoded SNI extension data.
8
8
  */
9
9
  export function sniData(hostname) {
10
- const host = Buffer.from(hostname, 'ascii');
10
+ const host = Buffer.from(hostname, "ascii");
11
11
  const w = new BufferWriter(host.length + 16);
12
12
  w.writeUInt16(host.length + 3 + 2);
13
13
  w.writeUInt16(host.length + 3);
@@ -82,7 +82,7 @@ export function signatureAlgorithmsData(algs) {
82
82
  export function alpnData(protocols) {
83
83
  let totalLen = 0;
84
84
  const bufs = protocols.map((p) => {
85
- const b = Buffer.from(p, 'ascii');
85
+ const b = Buffer.from(p, "ascii");
86
86
  totalLen += 1 + b.length;
87
87
  return b;
88
88
  });
@@ -219,7 +219,7 @@ export function delegatedCredentialsData(sigAlgs) {
219
219
  export function applicationSettingsData(protocols) {
220
220
  let totalLen = 0;
221
221
  const bufs = protocols.map((p) => {
222
- const b = Buffer.from(p, 'ascii');
222
+ const b = Buffer.from(p, "ascii");
223
223
  totalLen += 2 + b.length;
224
224
  return b;
225
225
  });
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/fingerprints/extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/fingerprints/extensions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { TLSProfile } from './types.js';
1
+ import type { TLSProfile } from "./types.js";
2
2
  /**
3
3
  * Computes the JA3 string representation of a TLS profile. The string is a
4
4
  * comma-separated tuple of `version`, cipher codes, extension type codes,
@@ -1 +1 @@
1
- {"version":3,"file":"ja3.d.ts","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAUrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAgBtD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEpD"}
1
+ {"version":3,"file":"ja3.d.ts","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAQrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CActD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAEpD"}
@@ -1,5 +1,5 @@
1
- import { createHash } from 'node:crypto';
2
- import { GREASE_VALUES } from '../tls/constants.js';
1
+ import { createHash } from "node:crypto";
2
+ import { GREASE_VALUES } from "../tls/constants.js";
3
3
  const GREASE_SET = new Set(GREASE_VALUES);
4
4
  function isGrease(value) {
5
5
  return GREASE_SET.has(value);
@@ -22,10 +22,10 @@ function filterGrease(values) {
22
22
  */
23
23
  export function ja3String(profile) {
24
24
  const version = profile.clientVersion;
25
- const ciphers = filterGrease(profile.cipherSuites).join('-');
26
- const extensions = filterGrease(profile.extensions.map((e) => e.type)).join('-');
27
- const groups = filterGrease(profile.supportedGroups).join('-');
28
- const formats = (profile.ecPointFormats ?? []).join('-');
25
+ const ciphers = filterGrease(profile.cipherSuites).join("-");
26
+ const extensions = filterGrease(profile.extensions.map((e) => e.type)).join("-");
27
+ const groups = filterGrease(profile.supportedGroups).join("-");
28
+ const formats = (profile.ecPointFormats ?? []).join("-");
29
29
  return `${version},${ciphers},${extensions},${groups},${formats}`;
30
30
  }
31
31
  /**
@@ -41,7 +41,7 @@ export function ja3String(profile) {
41
41
  * // => "cd08e31494f9531f560d64c695473da9"
42
42
  */
43
43
  export function ja3Hash(profile) {
44
- return createHash('md5').update(ja3String(profile)).digest('hex');
44
+ return createHash("md5").update(ja3String(profile)).digest("hex");
45
45
  }
46
46
  /**
47
47
  * Computes the JA3N (normalised) string for a TLS profile. Unlike
@@ -56,14 +56,14 @@ export function ja3nString(profile) {
56
56
  const version = profile.clientVersion;
57
57
  const ciphers = filterGrease(profile.cipherSuites)
58
58
  .sort((a, b) => a - b)
59
- .join('-');
59
+ .join("-");
60
60
  const extensions = filterGrease(profile.extensions.map((e) => e.type))
61
61
  .sort((a, b) => a - b)
62
- .join('-');
62
+ .join("-");
63
63
  const groups = filterGrease(profile.supportedGroups)
64
64
  .sort((a, b) => a - b)
65
- .join('-');
66
- const formats = (profile.ecPointFormats ?? []).sort((a, b) => a - b).join('-');
65
+ .join("-");
66
+ const formats = (profile.ecPointFormats ?? []).sort((a, b) => a - b).join("-");
67
67
  return `${version},${ciphers},${extensions},${groups},${formats}`;
68
68
  }
69
69
  /**
@@ -75,6 +75,6 @@ export function ja3nString(profile) {
75
75
  * @returns {string} The 32-character lowercase hex JA3N MD5 hash.
76
76
  */
77
77
  export function ja3nHash(profile) {
78
- return createHash('md5').update(ja3nString(profile)).digest('hex');
78
+ return createHash("md5").update(ja3nString(profile)).digest("hex");
79
79
  }
80
80
  //# sourceMappingURL=ja3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ja3.js","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ja3.js","sourceRoot":"","sources":["../../src/fingerprints/ja3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;AAE/D,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,OAAmB;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzD,OAAO,GAAG,OAAO,IAAI,OAAO,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAC,OAAmB;IACzC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;SAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/E,OAAO,GAAG,OAAO,IAAI,OAAO,IAAI,UAAU,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAmB;IAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BrowserProfile } from '../types.js';
1
+ import type { BrowserProfile } from "../types.js";
2
2
  /** {@link BrowserProfile} impersonating Chrome 99 (Chromium 99.0.4844.51). */
3
3
  export declare const chrome99: BrowserProfile;
4
4
  /** {@link BrowserProfile} impersonating Chrome 100 (Chromium 100.0.4896.75). */
@@ -1 +1 @@
1
- {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,aAAa,CAAC;AAkLrB,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,gBAA4C,CAAC;AAClE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA8D,CAAC;AACrF,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+D,CAAC;AACtF,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAA0E,CAAC;AACjG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAEhG,oEAAoE;AACpE,eAAO,MAAM,YAAY,gBAAY,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAkB7D,CAAC"}
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../src/fingerprints/profiles/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoE,MAAM,aAAa,CAAC;AA6HpH,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,gBAA4C,CAAC;AAClE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,gFAAgF;AAChF,eAAO,MAAM,SAAS,gBAA8C,CAAC;AACrE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+C,CAAC;AACtE,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA8D,CAAC;AACrF,iFAAiF;AACjF,eAAO,MAAM,SAAS,gBAA+D,CAAC;AACtF,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAA0E,CAAC;AACjG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAChG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,gBAAyE,CAAC;AAEhG,oEAAoE;AACpE,eAAO,MAAM,YAAY,gBAAY,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAkB7D,CAAC"}