nlcurl 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +143 -140
  2. package/dist/cache/groups.d.ts +75 -0
  3. package/dist/cache/groups.d.ts.map +1 -0
  4. package/dist/cache/groups.js +118 -0
  5. package/dist/cache/groups.js.map +1 -0
  6. package/dist/cache/no-vary-search.d.ts +33 -0
  7. package/dist/cache/no-vary-search.d.ts.map +1 -0
  8. package/dist/cache/no-vary-search.js +148 -0
  9. package/dist/cache/no-vary-search.js.map +1 -0
  10. package/dist/cache/range.d.ts +120 -0
  11. package/dist/cache/range.d.ts.map +1 -0
  12. package/dist/cache/range.js +193 -0
  13. package/dist/cache/range.js.map +1 -0
  14. package/dist/cache/store.d.ts +58 -36
  15. package/dist/cache/store.d.ts.map +1 -1
  16. package/dist/cache/store.js +58 -46
  17. package/dist/cache/store.js.map +1 -1
  18. package/dist/cache/types.d.ts +7 -39
  19. package/dist/cache/types.d.ts.map +1 -1
  20. package/dist/cli/args.d.ts +4 -37
  21. package/dist/cli/args.d.ts.map +1 -1
  22. package/dist/cli/args.js +3 -4
  23. package/dist/cli/args.js.map +1 -1
  24. package/dist/cli/index.d.ts +0 -5
  25. package/dist/cli/index.d.ts.map +1 -1
  26. package/dist/cli/index.js +1 -6
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/output.d.ts +14 -20
  29. package/dist/cli/output.d.ts.map +1 -1
  30. package/dist/cli/output.js +14 -20
  31. package/dist/cli/output.js.map +1 -1
  32. package/dist/cookies/jar.d.ts +30 -39
  33. package/dist/cookies/jar.d.ts.map +1 -1
  34. package/dist/cookies/jar.js +27 -37
  35. package/dist/cookies/jar.js.map +1 -1
  36. package/dist/cookies/parser.d.ts +13 -17
  37. package/dist/cookies/parser.d.ts.map +1 -1
  38. package/dist/cookies/parser.js +17 -14
  39. package/dist/cookies/parser.js.map +1 -1
  40. package/dist/cookies/psl-data.d.ts +1 -1
  41. package/dist/cookies/psl-data.js +1 -1
  42. package/dist/cookies/public-suffix.d.ts +5 -27
  43. package/dist/cookies/public-suffix.d.ts.map +1 -1
  44. package/dist/cookies/public-suffix.js +5 -37
  45. package/dist/cookies/public-suffix.js.map +1 -1
  46. package/dist/core/auth.d.ts +30 -0
  47. package/dist/core/auth.d.ts.map +1 -0
  48. package/dist/core/auth.js +34 -0
  49. package/dist/core/auth.js.map +1 -0
  50. package/dist/core/client.d.ts +28 -40
  51. package/dist/core/client.d.ts.map +1 -1
  52. package/dist/core/client.js +31 -41
  53. package/dist/core/client.js.map +1 -1
  54. package/dist/core/errors.d.ts +64 -88
  55. package/dist/core/errors.d.ts.map +1 -1
  56. package/dist/core/errors.js +64 -88
  57. package/dist/core/errors.js.map +1 -1
  58. package/dist/core/request.d.ts +23 -111
  59. package/dist/core/request.d.ts.map +1 -1
  60. package/dist/core/response.d.ts +49 -66
  61. package/dist/core/response.d.ts.map +1 -1
  62. package/dist/core/response.js +45 -59
  63. package/dist/core/response.js.map +1 -1
  64. package/dist/core/session.d.ts +66 -78
  65. package/dist/core/session.d.ts.map +1 -1
  66. package/dist/core/session.js +105 -76
  67. package/dist/core/session.js.map +1 -1
  68. package/dist/core/validation.d.ts +44 -43
  69. package/dist/core/validation.d.ts.map +1 -1
  70. package/dist/core/validation.js +44 -56
  71. package/dist/core/validation.js.map +1 -1
  72. package/dist/dns/cache.d.ts +59 -0
  73. package/dist/dns/cache.d.ts.map +1 -0
  74. package/dist/dns/cache.js +99 -0
  75. package/dist/dns/cache.js.map +1 -0
  76. package/dist/dns/codec.d.ts +20 -18
  77. package/dist/dns/codec.d.ts.map +1 -1
  78. package/dist/dns/codec.js +20 -36
  79. package/dist/dns/codec.js.map +1 -1
  80. package/dist/dns/doh-resolver.d.ts +17 -31
  81. package/dist/dns/doh-resolver.d.ts.map +1 -1
  82. package/dist/dns/doh-resolver.js +46 -47
  83. package/dist/dns/doh-resolver.js.map +1 -1
  84. package/dist/dns/dot-resolver.d.ts +89 -0
  85. package/dist/dns/dot-resolver.d.ts.map +1 -0
  86. package/dist/dns/dot-resolver.js +158 -0
  87. package/dist/dns/dot-resolver.js.map +1 -0
  88. package/dist/dns/https-rr.d.ts +19 -30
  89. package/dist/dns/https-rr.d.ts.map +1 -1
  90. package/dist/dns/https-rr.js +22 -40
  91. package/dist/dns/https-rr.js.map +1 -1
  92. package/dist/dns/types.d.ts +31 -59
  93. package/dist/dns/types.d.ts.map +1 -1
  94. package/dist/dns/types.js +3 -14
  95. package/dist/dns/types.js.map +1 -1
  96. package/dist/fingerprints/akamai.d.ts +3 -11
  97. package/dist/fingerprints/akamai.d.ts.map +1 -1
  98. package/dist/fingerprints/akamai.js +3 -11
  99. package/dist/fingerprints/akamai.js.map +1 -1
  100. package/dist/fingerprints/database.d.ts +6 -14
  101. package/dist/fingerprints/database.d.ts.map +1 -1
  102. package/dist/fingerprints/database.js +6 -14
  103. package/dist/fingerprints/database.js.map +1 -1
  104. package/dist/fingerprints/extensions.d.ts +56 -71
  105. package/dist/fingerprints/extensions.d.ts.map +1 -1
  106. package/dist/fingerprints/extensions.js +58 -71
  107. package/dist/fingerprints/extensions.js.map +1 -1
  108. package/dist/fingerprints/ja3.d.ts +12 -30
  109. package/dist/fingerprints/ja3.d.ts.map +1 -1
  110. package/dist/fingerprints/ja3.js +12 -30
  111. package/dist/fingerprints/ja3.js.map +1 -1
  112. package/dist/fingerprints/ja4.d.ts +18 -0
  113. package/dist/fingerprints/ja4.d.ts.map +1 -0
  114. package/dist/fingerprints/ja4.js +83 -0
  115. package/dist/fingerprints/ja4.js.map +1 -0
  116. package/dist/fingerprints/profiles/chrome.d.ts +18 -21
  117. package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
  118. package/dist/fingerprints/profiles/chrome.js +35 -31
  119. package/dist/fingerprints/profiles/chrome.js.map +1 -1
  120. package/dist/fingerprints/profiles/edge.d.ts +7 -10
  121. package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
  122. package/dist/fingerprints/profiles/edge.js +7 -10
  123. package/dist/fingerprints/profiles/edge.js.map +1 -1
  124. package/dist/fingerprints/profiles/firefox.d.ts +8 -11
  125. package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
  126. package/dist/fingerprints/profiles/firefox.js +8 -11
  127. package/dist/fingerprints/profiles/firefox.js.map +1 -1
  128. package/dist/fingerprints/profiles/safari.d.ts +11 -14
  129. package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
  130. package/dist/fingerprints/profiles/safari.js +11 -14
  131. package/dist/fingerprints/profiles/safari.js.map +1 -1
  132. package/dist/fingerprints/profiles/tor.d.ts +5 -8
  133. package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
  134. package/dist/fingerprints/profiles/tor.js +5 -8
  135. package/dist/fingerprints/profiles/tor.js.map +1 -1
  136. package/dist/fingerprints/types.d.ts +42 -73
  137. package/dist/fingerprints/types.d.ts.map +1 -1
  138. package/dist/hsts/store.d.ts +19 -21
  139. package/dist/hsts/store.d.ts.map +1 -1
  140. package/dist/hsts/store.js +20 -28
  141. package/dist/hsts/store.js.map +1 -1
  142. package/dist/hsts/types.d.ts +10 -14
  143. package/dist/hsts/types.d.ts.map +1 -1
  144. package/dist/http/alt-svc.d.ts +31 -49
  145. package/dist/http/alt-svc.d.ts.map +1 -1
  146. package/dist/http/alt-svc.js +21 -55
  147. package/dist/http/alt-svc.js.map +1 -1
  148. package/dist/http/early-hints.d.ts +23 -0
  149. package/dist/http/early-hints.d.ts.map +1 -0
  150. package/dist/http/early-hints.js +33 -0
  151. package/dist/http/early-hints.js.map +1 -0
  152. package/dist/http/form-data.d.ts +17 -35
  153. package/dist/http/form-data.d.ts.map +1 -1
  154. package/dist/http/form-data.js +12 -34
  155. package/dist/http/form-data.js.map +1 -1
  156. package/dist/http/h1/client.d.ts +14 -26
  157. package/dist/http/h1/client.d.ts.map +1 -1
  158. package/dist/http/h1/client.js +14 -23
  159. package/dist/http/h1/client.js.map +1 -1
  160. package/dist/http/h1/encoder.d.ts +10 -17
  161. package/dist/http/h1/encoder.d.ts.map +1 -1
  162. package/dist/http/h1/encoder.js +10 -17
  163. package/dist/http/h1/encoder.js.map +1 -1
  164. package/dist/http/h1/parser.d.ts +22 -59
  165. package/dist/http/h1/parser.d.ts.map +1 -1
  166. package/dist/http/h1/parser.js +15 -47
  167. package/dist/http/h1/parser.js.map +1 -1
  168. package/dist/http/h2/client.d.ts +18 -59
  169. package/dist/http/h2/client.d.ts.map +1 -1
  170. package/dist/http/h2/client.js +29 -64
  171. package/dist/http/h2/client.js.map +1 -1
  172. package/dist/http/h2/frames.d.ts +53 -84
  173. package/dist/http/h2/frames.d.ts.map +1 -1
  174. package/dist/http/h2/frames.js +48 -76
  175. package/dist/http/h2/frames.js.map +1 -1
  176. package/dist/http/h2/hpack.d.ts +16 -35
  177. package/dist/http/h2/hpack.d.ts.map +1 -1
  178. package/dist/http/h2/hpack.js +16 -35
  179. package/dist/http/h2/hpack.js.map +1 -1
  180. package/dist/http/h3/detection.d.ts +5 -7
  181. package/dist/http/h3/detection.d.ts.map +1 -1
  182. package/dist/http/h3/detection.js +5 -23
  183. package/dist/http/h3/detection.js.map +1 -1
  184. package/dist/http/negotiator.d.ts +25 -38
  185. package/dist/http/negotiator.d.ts.map +1 -1
  186. package/dist/http/negotiator.js +16 -28
  187. package/dist/http/negotiator.js.map +1 -1
  188. package/dist/http/pool.d.ts +32 -62
  189. package/dist/http/pool.d.ts.map +1 -1
  190. package/dist/http/pool.js +22 -41
  191. package/dist/http/pool.js.map +1 -1
  192. package/dist/http/resumable-upload.d.ts +76 -0
  193. package/dist/http/resumable-upload.d.ts.map +1 -0
  194. package/dist/http/resumable-upload.js +104 -0
  195. package/dist/http/resumable-upload.js.map +1 -0
  196. package/dist/http/trailers.d.ts +29 -0
  197. package/dist/http/trailers.d.ts.map +1 -0
  198. package/dist/http/trailers.js +57 -0
  199. package/dist/http/trailers.js.map +1 -0
  200. package/dist/index.d.ts +21 -8
  201. package/dist/index.d.ts.map +1 -1
  202. package/dist/index.js +21 -2
  203. package/dist/index.js.map +1 -1
  204. package/dist/middleware/interceptor.d.ts +13 -32
  205. package/dist/middleware/interceptor.d.ts.map +1 -1
  206. package/dist/middleware/interceptor.js +11 -16
  207. package/dist/middleware/interceptor.js.map +1 -1
  208. package/dist/middleware/rate-limiter.d.ts +8 -17
  209. package/dist/middleware/rate-limiter.d.ts.map +1 -1
  210. package/dist/middleware/rate-limiter.js +11 -12
  211. package/dist/middleware/rate-limiter.js.map +1 -1
  212. package/dist/middleware/retry-after.d.ts +15 -0
  213. package/dist/middleware/retry-after.d.ts.map +1 -0
  214. package/dist/middleware/retry-after.js +36 -0
  215. package/dist/middleware/retry-after.js.map +1 -0
  216. package/dist/middleware/retry.d.ts +9 -18
  217. package/dist/middleware/retry.d.ts.map +1 -1
  218. package/dist/middleware/retry.js +12 -9
  219. package/dist/middleware/retry.js.map +1 -1
  220. package/dist/proxy/auth.d.ts +73 -0
  221. package/dist/proxy/auth.d.ts.map +1 -0
  222. package/dist/proxy/auth.js +128 -0
  223. package/dist/proxy/auth.js.map +1 -0
  224. package/dist/proxy/env-proxy.d.ts +5 -15
  225. package/dist/proxy/env-proxy.d.ts.map +1 -1
  226. package/dist/proxy/env-proxy.js +5 -23
  227. package/dist/proxy/env-proxy.js.map +1 -1
  228. package/dist/proxy/http-proxy.d.ts +12 -19
  229. package/dist/proxy/http-proxy.d.ts.map +1 -1
  230. package/dist/proxy/http-proxy.js +5 -8
  231. package/dist/proxy/http-proxy.js.map +1 -1
  232. package/dist/proxy/socks.d.ts +13 -20
  233. package/dist/proxy/socks.d.ts.map +1 -1
  234. package/dist/proxy/socks.js +5 -8
  235. package/dist/proxy/socks.js.map +1 -1
  236. package/dist/sse/parser.d.ts +14 -37
  237. package/dist/sse/parser.d.ts.map +1 -1
  238. package/dist/sse/parser.js +14 -28
  239. package/dist/sse/parser.js.map +1 -1
  240. package/dist/tls/constants.d.ts +15 -74
  241. package/dist/tls/constants.d.ts.map +1 -1
  242. package/dist/tls/constants.js +15 -74
  243. package/dist/tls/constants.js.map +1 -1
  244. package/dist/tls/ct.d.ts +78 -0
  245. package/dist/tls/ct.d.ts.map +1 -0
  246. package/dist/tls/ct.js +175 -0
  247. package/dist/tls/ct.js.map +1 -0
  248. package/dist/tls/early-data.d.ts +45 -0
  249. package/dist/tls/early-data.d.ts.map +1 -0
  250. package/dist/tls/early-data.js +46 -0
  251. package/dist/tls/early-data.js.map +1 -0
  252. package/dist/tls/ech.d.ts +68 -85
  253. package/dist/tls/ech.d.ts.map +1 -1
  254. package/dist/tls/ech.js +54 -102
  255. package/dist/tls/ech.js.map +1 -1
  256. package/dist/tls/keylog.d.ts +34 -0
  257. package/dist/tls/keylog.d.ts.map +1 -0
  258. package/dist/tls/keylog.js +64 -0
  259. package/dist/tls/keylog.js.map +1 -0
  260. package/dist/tls/node-engine.d.ts +10 -17
  261. package/dist/tls/node-engine.d.ts.map +1 -1
  262. package/dist/tls/node-engine.js +20 -18
  263. package/dist/tls/node-engine.js.map +1 -1
  264. package/dist/tls/ocsp.d.ts +55 -0
  265. package/dist/tls/ocsp.d.ts.map +1 -0
  266. package/dist/tls/ocsp.js +131 -0
  267. package/dist/tls/ocsp.js.map +1 -0
  268. package/dist/tls/pin-verification.d.ts +5 -4
  269. package/dist/tls/pin-verification.d.ts.map +1 -1
  270. package/dist/tls/pin-verification.js +5 -11
  271. package/dist/tls/pin-verification.js.map +1 -1
  272. package/dist/tls/session-cache.d.ts +27 -39
  273. package/dist/tls/session-cache.d.ts.map +1 -1
  274. package/dist/tls/session-cache.js +20 -24
  275. package/dist/tls/session-cache.js.map +1 -1
  276. package/dist/tls/stealth/client-hello.d.ts +25 -44
  277. package/dist/tls/stealth/client-hello.d.ts.map +1 -1
  278. package/dist/tls/stealth/client-hello.js +17 -28
  279. package/dist/tls/stealth/client-hello.js.map +1 -1
  280. package/dist/tls/stealth/engine.d.ts +5 -15
  281. package/dist/tls/stealth/engine.d.ts.map +1 -1
  282. package/dist/tls/stealth/engine.js +11 -17
  283. package/dist/tls/stealth/engine.js.map +1 -1
  284. package/dist/tls/stealth/handshake.d.ts +21 -31
  285. package/dist/tls/stealth/handshake.d.ts.map +1 -1
  286. package/dist/tls/stealth/handshake.js +15 -43
  287. package/dist/tls/stealth/handshake.js.map +1 -1
  288. package/dist/tls/stealth/key-schedule.d.ts +59 -86
  289. package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
  290. package/dist/tls/stealth/key-schedule.js +46 -58
  291. package/dist/tls/stealth/key-schedule.js.map +1 -1
  292. package/dist/tls/stealth/record-layer.d.ts +52 -75
  293. package/dist/tls/stealth/record-layer.d.ts.map +1 -1
  294. package/dist/tls/stealth/record-layer.js +47 -63
  295. package/dist/tls/stealth/record-layer.js.map +1 -1
  296. package/dist/tls/stealth/tls12-handshake.d.ts +16 -0
  297. package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -1
  298. package/dist/tls/stealth/tls12-handshake.js +8 -0
  299. package/dist/tls/stealth/tls12-handshake.js.map +1 -1
  300. package/dist/tls/types.d.ts +42 -60
  301. package/dist/tls/types.d.ts.map +1 -1
  302. package/dist/utils/buffer-reader.d.ts +26 -81
  303. package/dist/utils/buffer-reader.d.ts.map +1 -1
  304. package/dist/utils/buffer-reader.js +26 -81
  305. package/dist/utils/buffer-reader.js.map +1 -1
  306. package/dist/utils/buffer-writer.d.ts +30 -66
  307. package/dist/utils/buffer-writer.d.ts.map +1 -1
  308. package/dist/utils/buffer-writer.js +30 -66
  309. package/dist/utils/buffer-writer.js.map +1 -1
  310. package/dist/utils/compression.d.ts +18 -0
  311. package/dist/utils/compression.d.ts.map +1 -0
  312. package/dist/utils/compression.js +34 -0
  313. package/dist/utils/compression.js.map +1 -0
  314. package/dist/utils/dictionary-transport.d.ts +97 -0
  315. package/dist/utils/dictionary-transport.d.ts.map +1 -0
  316. package/dist/utils/dictionary-transport.js +171 -0
  317. package/dist/utils/dictionary-transport.js.map +1 -0
  318. package/dist/utils/encoding.d.ts +12 -30
  319. package/dist/utils/encoding.d.ts.map +1 -1
  320. package/dist/utils/encoding.js +15 -46
  321. package/dist/utils/encoding.js.map +1 -1
  322. package/dist/utils/happy-eyeballs.d.ts +18 -8
  323. package/dist/utils/happy-eyeballs.d.ts.map +1 -1
  324. package/dist/utils/happy-eyeballs.js +19 -27
  325. package/dist/utils/happy-eyeballs.js.map +1 -1
  326. package/dist/utils/logger.d.ts +54 -81
  327. package/dist/utils/logger.d.ts.map +1 -1
  328. package/dist/utils/logger.js +92 -64
  329. package/dist/utils/logger.js.map +1 -1
  330. package/dist/utils/tcp-fast-open.d.ts +30 -0
  331. package/dist/utils/tcp-fast-open.d.ts.map +1 -0
  332. package/dist/utils/tcp-fast-open.js +36 -0
  333. package/dist/utils/tcp-fast-open.js.map +1 -0
  334. package/dist/utils/url.d.ts +18 -25
  335. package/dist/utils/url.d.ts.map +1 -1
  336. package/dist/utils/url.js +18 -25
  337. package/dist/utils/url.js.map +1 -1
  338. package/dist/ws/client.d.ts +33 -53
  339. package/dist/ws/client.d.ts.map +1 -1
  340. package/dist/ws/client.js +29 -30
  341. package/dist/ws/client.js.map +1 -1
  342. package/dist/ws/frame.d.ts +24 -41
  343. package/dist/ws/frame.d.ts.map +1 -1
  344. package/dist/ws/frame.js +18 -33
  345. package/dist/ws/frame.js.map +1 -1
  346. package/dist/ws/permessage-deflate.d.ts +23 -28
  347. package/dist/ws/permessage-deflate.d.ts.map +1 -1
  348. package/dist/ws/permessage-deflate.js +18 -26
  349. package/dist/ws/permessage-deflate.js.map +1 -1
  350. package/package.json +62 -62
@@ -2,16 +2,12 @@ import { createCipheriv, createDecipheriv } from "node:crypto";
2
2
  import { BufferWriter } from "../../utils/buffer-writer.js";
3
3
  import { RecordType, ProtocolVersion } from "../constants.js";
4
4
  import { TLSError } from "../../core/errors.js";
5
- const MAX_RECORD_PAYLOAD = 16384;
6
- const MAX_CIPHERTEXT_OVERHEAD = 256;
7
5
  /**
8
- * Attempts to parse a single TLS record from `data` beginning at `offset`.
9
- * Returns `null` without consuming the buffer if fewer than 5 bytes are
10
- * available or the payload has not been fully received yet.
6
+ * Read a single TLS record from a buffer at the given offset.
11
7
  *
12
- * @param {Buffer} data - Buffer containing one or more TLS records.
13
- * @param {number} offset - Byte offset within `data` to begin parsing.
14
- * @returns {{ record: TLSRecord; bytesRead: number } | null} Parsed record and byte count, or `null` if more data is needed.
8
+ * @param {Buffer} data - Buffer containing one or more TLS records.
9
+ * @param {number} offset - Byte offset to start reading from.
10
+ * @returns {{ record: TLSRecord; bytesRead: number } | null} Parsed record and bytes consumed, or `null` if incomplete.
15
11
  */
16
12
  export function readRecord(data, offset) {
17
13
  if (data.length - offset < 5)
@@ -28,12 +24,12 @@ export function readRecord(data, offset) {
28
24
  };
29
25
  }
30
26
  /**
31
- * Serializes a TLS record into its 5-byte header plus payload binary form.
27
+ * Write a TLS record with the given type, version, and payload.
32
28
  *
33
- * @param {number} type - TLS content type byte.
34
- * @param {number} version - TLS record version (e.g. `0x0303`).
35
- * @param {Buffer} payload - Record payload bytes.
36
- * @returns {Buffer} The complete serialized TLS record.
29
+ * @param {number} type - Record content type.
30
+ * @param {number} version - Protocol version.
31
+ * @param {Buffer} payload - Record payload.
32
+ * @returns {Buffer} Serialized TLS record buffer.
37
33
  */
38
34
  export function writeRecord(type, version, payload) {
39
35
  const w = new BufferWriter(5 + payload.length);
@@ -44,12 +40,10 @@ export function writeRecord(type, version, payload) {
44
40
  return w.toBuffer();
45
41
  }
46
42
  /**
47
- * Maps a cipher suite name string to the corresponding AEAD algorithm
48
- * identifier used by the record layer.
43
+ * Determine the AEAD algorithm from a cipher suite name.
49
44
  *
50
- * @param {string} cipherName - Cipher suite name from {@link TLSConnectionInfo} (e.g. `"TLS_AES_128_GCM_SHA256"`).
51
- * @returns {AEADAlgorithm} The corresponding AEAD algorithm identifier.
52
- * @throws {TLSError} If the cipher name does not correspond to a supported AEAD algorithm.
45
+ * @param {string} cipherName - Cipher suite or algorithm name.
46
+ * @returns {AEADAlgorithm} Corresponding AEAD algorithm identifier.
53
47
  */
54
48
  export function aeadFromCipher(cipherName) {
55
49
  if (cipherName.includes("AES_128_GCM") || cipherName.includes("aes-128-gcm")) {
@@ -65,12 +59,11 @@ export function aeadFromCipher(cipherName) {
65
59
  }
66
60
  const TAG_SIZE = 16;
67
61
  /**
68
- * Constructs the per-record nonce by XOR-ing the static IV with the
69
- * big-endian 64-bit sequence number (RFC 8446 ¥5.3).
62
+ * Build a per-record nonce by XORing the IV with a sequence number.
70
63
  *
71
- * @param {Buffer} iv - Static IV of length matching the AEAD algorithm.
72
- * @param {bigint} sequenceNumber - Record sequence number (starts at 0, increments by 1).
73
- * @returns {Buffer} The per-record nonce.
64
+ * @param {Buffer} iv - Base initialization vector.
65
+ * @param {bigint} sequenceNumber - Record sequence number.
66
+ * @returns {Buffer} Nonce buffer for AEAD encryption.
74
67
  */
75
68
  export function buildNonce(iv, sequenceNumber) {
76
69
  const nonce = Buffer.from(iv);
@@ -82,15 +75,14 @@ export function buildNonce(iv, sequenceNumber) {
82
75
  return nonce;
83
76
  }
84
77
  /**
85
- * Encrypts `plaintext` using the specified AEAD algorithm and returns the
86
- * ciphertext with an appended 16-byte authentication tag.
78
+ * Encrypt a TLS record payload using AEAD.
87
79
  *
88
- * @param {AEADAlgorithm} algorithm - AEAD algorithm identifier.
89
- * @param {Buffer} key - Encryption key.
90
- * @param {Buffer} nonce - Per-record nonce.
91
- * @param {Buffer} plaintext - Data to encrypt.
92
- * @param {Buffer} additionalData - Additional authenticated data (AAD).
93
- * @returns {Buffer} Ciphertext followed by the 16-byte authentication tag.
80
+ * @param {AEADAlgorithm} algorithm - AEAD algorithm.
81
+ * @param {Buffer} key - Encryption key.
82
+ * @param {Buffer} nonce - Per-record nonce.
83
+ * @param {Buffer} plaintext - Plaintext payload.
84
+ * @param {Buffer} additionalData - Associated data for authentication.
85
+ * @returns {Buffer} Ciphertext with appended authentication tag.
94
86
  */
95
87
  export function encryptRecord(algorithm, key, nonce, plaintext, additionalData) {
96
88
  const cipher = createCipheriv(algorithm, key, nonce, { authTagLength: TAG_SIZE });
@@ -101,16 +93,14 @@ export function encryptRecord(algorithm, key, nonce, plaintext, additionalData)
101
93
  return Buffer.concat([encrypted, final, tag]);
102
94
  }
103
95
  /**
104
- * Decrypts and authenticates `ciphertext` using the specified AEAD algorithm.
105
- * The last 16 bytes of `ciphertext` are treated as the authentication tag.
96
+ * Decrypt a TLS record payload using AEAD.
106
97
  *
107
- * @param {AEADAlgorithm} algorithm - AEAD algorithm identifier.
108
- * @param {Buffer} key - Decryption key.
109
- * @param {Buffer} nonce - Per-record nonce.
110
- * @param {Buffer} ciphertext - Ciphertext including the 16-byte authentication tag.
111
- * @param {Buffer} additionalData - Additional authenticated data (AAD) for tag verification.
112
- * @returns {Buffer} Decrypted plaintext bytes.
113
- * @throws {TLSError} If the ciphertext is too short or authentication fails.
98
+ * @param {AEADAlgorithm} algorithm - AEAD algorithm.
99
+ * @param {Buffer} key - Decryption key.
100
+ * @param {Buffer} nonce - Per-record nonce.
101
+ * @param {Buffer} ciphertext - Ciphertext with authentication tag.
102
+ * @param {Buffer} additionalData - Associated data for verification.
103
+ * @returns {Buffer} Decrypted plaintext.
114
104
  */
115
105
  export function decryptRecord(algorithm, key, nonce, ciphertext, additionalData) {
116
106
  if (ciphertext.length < TAG_SIZE) {
@@ -131,10 +121,9 @@ export function decryptRecord(algorithm, key, nonce, ciphertext, additionalData)
131
121
  }
132
122
  }
133
123
  /**
134
- * Builds the additional authenticated data (AAD) for a TLS 1.3 application
135
- * data record, encoded as a 5-byte pseudo-record header per RFC 8446 ¥5.2.
124
+ * Build the additional authenticated data (AAD) for a TLS 1.3 record.
136
125
  *
137
- * @param {number} ciphertextLength - Total length of the ciphertext including the AEAD tag.
126
+ * @param {number} ciphertextLength - Length of the ciphertext including the tag.
138
127
  * @returns {Buffer} 5-byte AAD buffer.
139
128
  */
140
129
  export function buildAdditionalData(ciphertextLength) {
@@ -145,17 +134,15 @@ export function buildAdditionalData(ciphertextLength) {
145
134
  return w.toBuffer();
146
135
  }
147
136
  /**
148
- * Encodes a TLS 1.3 inner plaintext (content bytes + content type byte) and
149
- * wraps it in an encrypted TLS record with the appropriate AAD, following
150
- * RFC 8446 ¥5.2.
137
+ * Encrypt and wrap a plaintext payload into a TLS 1.3 application data record.
151
138
  *
152
- * @param {AEADAlgorithm} algorithm - AEAD algorithm identifier.
153
- * @param {Buffer} key - Application traffic key.
154
- * @param {Buffer} iv - Application traffic IV.
155
- * @param {bigint} sequenceNumber - Sequence number for nonce derivation.
156
- * @param {number} contentType - True content type byte to embed in the inner plaintext.
157
- * @param {Buffer} plaintext - Application data to encrypt.
158
- * @returns {Buffer} The complete TLS application_data record ready to send.
139
+ * @param {AEADAlgorithm} algorithm - AEAD algorithm.
140
+ * @param {Buffer} key - Client write key.
141
+ * @param {Buffer} iv - Client write IV.
142
+ * @param {bigint} sequenceNumber - Current sequence number.
143
+ * @param {number} contentType - Inner record content type.
144
+ * @param {Buffer} plaintext - Plaintext payload.
145
+ * @returns {Buffer} Serialized encrypted TLS record.
159
146
  */
160
147
  export function wrapEncryptedRecord(algorithm, key, iv, sequenceNumber, contentType, plaintext) {
161
148
  const inner = Buffer.alloc(plaintext.length + 1);
@@ -168,17 +155,14 @@ export function wrapEncryptedRecord(algorithm, key, iv, sequenceNumber, contentT
168
155
  return writeRecord(RecordType.APPLICATION_DATA, ProtocolVersion.TLS_1_2, ciphertext);
169
156
  }
170
157
  /**
171
- * Decrypts a TLS 1.3 application_data record, strips the zero-padding, and
172
- * recovers the true content type embedded as the last non-zero byte of the
173
- * inner plaintext (RFC 8446 ¥5.2).
158
+ * Decrypt and unwrap a TLS 1.3 encrypted record.
174
159
  *
175
- * @param {AEADAlgorithm} algorithm - AEAD algorithm identifier.
176
- * @param {Buffer} key - Application traffic key.
177
- * @param {Buffer} iv - Application traffic IV.
178
- * @param {bigint} sequenceNumber - Sequence number for nonce derivation.
179
- * @param {TLSRecord} record - Encrypted TLS record received from the remote party.
180
- * @returns {{ contentType: number; plaintext: Buffer }} Recovered content type and decrypted payload.
181
- * @throws {TLSError} If decryption or authentication fails, or the record is empty after unpadding.
160
+ * @param {AEADAlgorithm} algorithm - AEAD algorithm.
161
+ * @param {Buffer} key - Server write key.
162
+ * @param {Buffer} iv - Server write IV.
163
+ * @param {bigint} sequenceNumber - Current sequence number.
164
+ * @param {TLSRecord} record - Encrypted TLS record.
165
+ * @returns {{ contentType: number; plaintext: Buffer }} Decrypted content type and plaintext.
182
166
  */
183
167
  export function unwrapEncryptedRecord(algorithm, key, iv, sequenceNumber, record) {
184
168
  const nonce = buildNonce(iv, sequenceNumber);
@@ -1 +1 @@
1
- {"version":3,"file":"record-layer.js","sourceRoot":"","sources":["../../../src/tls/stealth/record-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-layer.js","sourceRoot":"","sources":["../../../src/tls/stealth/record-layer.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,30 @@
1
1
  import * as net from "node:net";
2
2
  import type { KeyShareEntry } from "./client-hello.js";
3
3
  import type { HandshakeResult } from "./handshake.js";
4
+ /** Context state for a TLS 1.2 handshake. */
4
5
  export interface TLS12HandshakeContext {
6
+ /** Client random bytes from the ClientHello. */
5
7
  clientRandom: Buffer;
8
+ /** Server random bytes from the ServerHello. */
6
9
  serverRandom: Buffer;
10
+ /** Negotiated cipher suite identifier. */
7
11
  cipherSuite: number;
12
+ /** Key share entries generated during ClientHello construction. */
8
13
  keyShares: KeyShareEntry[];
14
+ /** Server hostname for SNI and certificate verification. */
9
15
  hostname: string;
16
+ /** Skip certificate chain validation. */
10
17
  insecure: boolean;
18
+ /** Optional SPKI pin(s) for public-key pinning. */
11
19
  pinnedPublicKey?: string | string[];
12
20
  }
21
+ /**
22
+ * Complete a TLS 1.2 handshake using ECDHE key exchange.
23
+ *
24
+ * @param {net.Socket} socket - Connected TCP socket.
25
+ * @param {TLS12HandshakeContext} ctx - Handshake context from the ServerHello.
26
+ * @param {Buffer[]} handshakeMessages - Accumulated handshake messages so far.
27
+ * @returns {Promise<HandshakeResult>} Handshake result with negotiated keys and metadata.
28
+ */
13
29
  export declare function performTLS12Handshake(socket: net.Socket, ctx: TLS12HandshakeContext, handshakeMessages: Buffer[]): Promise<HandshakeResult>;
14
30
  //# sourceMappingURL=tls12-handshake.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tls12-handshake.d.ts","sourceRoot":"","sources":["../../../src/tls/stealth/tls12-handshake.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAMhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAwVtD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAqKjJ"}
1
+ {"version":3,"file":"tls12-handshake.d.ts","sourceRoot":"","sources":["../../../src/tls/stealth/tls12-handshake.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAMhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAuVtD,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAqKjJ"}
@@ -308,6 +308,14 @@ function signatureAlgorithmForScheme(scheme) {
308
308
  return null;
309
309
  }
310
310
  }
311
+ /**
312
+ * Complete a TLS 1.2 handshake using ECDHE key exchange.
313
+ *
314
+ * @param {net.Socket} socket - Connected TCP socket.
315
+ * @param {TLS12HandshakeContext} ctx - Handshake context from the ServerHello.
316
+ * @param {Buffer[]} handshakeMessages - Accumulated handshake messages so far.
317
+ * @returns {Promise<HandshakeResult>} Handshake result with negotiated keys and metadata.
318
+ */
311
319
  export async function performTLS12Handshake(socket, ctx, handshakeMessages) {
312
320
  const info = tls12CipherInfo(ctx.cipherSuite);
313
321
  if (!info)
@@ -1 +1 @@
1
- {"version":3,"file":"tls12-handshake.js","sourceRoot":"","sources":["../../../src/tls/stealth/tls12-handshake.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tls12-handshake.js","sourceRoot":"","sources":["../../../src/tls/stealth/tls12-handshake.ts"],"names":[],"mappings":"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"}
@@ -2,105 +2,87 @@ import type { Socket } from "node:net";
2
2
  import type { Duplex } from "node:stream";
3
3
  import type { BrowserProfile } from "../fingerprints/types.js";
4
4
  import type { Logger } from "../utils/logger.js";
5
- /**
6
- * Options required to establish a TLS connection to a remote server.
7
- *
8
- * @typedef {Object} TLSConnectOptions
9
- * @property {string} host - Remote hostname or IP address.
10
- * @property {number} port - Remote TCP port.
11
- * @property {Socket} [socket] - Pre-connected TCP socket to upgrade (e.g. after proxy CONNECT).
12
- * @property {string} [servername] - TLS SNI hostname; defaults to `host`.
13
- * @property {boolean} [insecure] - Skip TLS certificate verification when `true`.
14
- * @property {string[]} [alpnProtocols] - ALPN protocol names to advertise (e.g. `['h2', 'http/1.1']`).
15
- * @property {number} [timeout] - Handshake timeout in milliseconds.
16
- * @property {AbortSignal} [signal] - Signal used to abort the connection attempt.
17
- * @property {4|6} [family] - Force IPv4 (`4`) or IPv6 (`6`) for DNS resolution.
18
- * @property {Logger} [logger] - Optional logger for diagnostic output.
19
- */
5
+ /** Options for establishing a TLS connection. */
20
6
  export interface TLSConnectOptions {
7
+ /** Remote host name or IP address. */
21
8
  host: string;
9
+ /** Remote port number. */
22
10
  port: number;
11
+ /** Existing TCP socket to upgrade to TLS. */
23
12
  socket?: Socket;
13
+ /** Server name for SNI extension. */
24
14
  servername?: string;
15
+ /** Skip certificate verification. */
25
16
  insecure?: boolean;
17
+ /** ALPN protocol identifiers to offer. */
26
18
  alpnProtocols?: string[];
19
+ /** Connection timeout in milliseconds. */
27
20
  timeout?: number;
21
+ /** Abort signal to cancel the connection. */
28
22
  signal?: AbortSignal;
23
+ /** IP address family (`4` or `6`). */
29
24
  family?: 4 | 6;
25
+ /** Logger instance for diagnostic output. */
30
26
  logger?: Logger;
27
+ /** Client certificate in PEM or DER format. */
31
28
  cert?: string | Buffer;
29
+ /** Private key for client certificate authentication. */
32
30
  key?: string | Buffer;
31
+ /** Passphrase for encrypted private keys. */
33
32
  passphrase?: string;
33
+ /** PKCS#12 / PFX certificate bundle. */
34
34
  pfx?: string | Buffer;
35
+ /** Custom certificate authority chain. */
35
36
  ca?: string | Buffer | Array<string | Buffer>;
36
- /** Raw ECHConfigList (RFC draft-ietf-tls-esni) for Encrypted Client Hello. */
37
+ /** ECH config list for Encrypted Client Hello. */
37
38
  echConfigList?: Buffer;
38
- /**
39
- * Pin the server's public key by SHA-256 hash of the SPKI (Subject Public
40
- * Key Info). Format: `"sha256//base64hash"`. Accepts a single pin or an
41
- * array of pins; the connection succeeds if **any** pin matches the leaf
42
- * certificate. Modelled after curl's `--pinnedpubkey`.
43
- */
39
+ /** Expected SPKI pin(s) for public-key pinning. */
44
40
  pinnedPublicKey?: string | string[];
45
41
  }
46
- /**
47
- * Metadata describing a successfully negotiated TLS connection.
48
- *
49
- * @typedef {Object} TLSConnectionInfo
50
- * @property {string} version - Negotiated TLS version string (e.g. `"TLSv1.3"`).
51
- * @property {string|null} alpnProtocol - Negotiated ALPN protocol (e.g. `"h2"`), or `null`.
52
- * @property {string} cipher - Negotiated cipher suite name.
53
- * @property {string} [ja3Hash] - JA3 fingerprint hash of the ClientHello, if computed.
54
- */
42
+ /** Metadata about a completed TLS connection. */
55
43
  export interface TLSConnectionInfo {
44
+ /** Negotiated protocol version string (e.g. `"TLSv1.3"`). */
56
45
  version: string;
46
+ /** Negotiated ALPN protocol, or `null` if none. */
57
47
  alpnProtocol: string | null;
48
+ /** Negotiated cipher suite name. */
58
49
  cipher: string;
50
+ /** JA3 fingerprint hash of the connection, if computed. */
59
51
  ja3Hash?: string;
52
+ /** Whether the session was resumed via a session ticket. */
60
53
  resumed?: boolean;
61
54
  }
62
- /**
63
- * A duplex stream representing an established TLS connection. Extends
64
- * `Duplex` with connection metadata and a controlled teardown method.
65
- *
66
- * @typedef {Duplex} TLSSocket
67
- * @property {TLSConnectionInfo} connectionInfo - Metadata about the negotiated TLS session.
68
- */
55
+ /** Duplex stream extended with TLS connection metadata. */
69
56
  export interface TLSSocket extends Duplex {
57
+ /** Information about the negotiated TLS parameters. */
70
58
  connectionInfo: TLSConnectionInfo;
59
+ /** Tear down the TLS layer and release resources. */
71
60
  destroyTLS(): void;
72
61
  }
73
- /**
74
- * Contract for TLS engine implementations. Both the standard Node.js TLS
75
- * engine and the custom stealth engine implement this interface, allowing
76
- * them to be substituted transparently by the {@link ProtocolNegotiator}.
77
- */
62
+ /** Engine interface for pluggable TLS implementations. */
78
63
  export interface ITLSEngine {
64
+ /**
65
+ * Establish a TLS connection.
66
+ *
67
+ * @param {TLSConnectOptions} options - Connection parameters.
68
+ * @param {BrowserProfile} [profile] - Optional browser profile for fingerprint impersonation.
69
+ * @returns {Promise<TLSSocket>} Connected TLS socket.
70
+ */
79
71
  connect(options: TLSConnectOptions, profile?: BrowserProfile): Promise<TLSSocket>;
80
72
  }
81
- /**
82
- * User-facing TLS configuration for mTLS (client certificates) and custom
83
- * trust stores. These options are set on `NLcURLRequest.tls` or
84
- * `NLcURLSessionConfig.tls` and forwarded to the TLS engine.
85
- *
86
- * @typedef {Object} TLSOptions
87
- * @property {string|Buffer} [cert] - PEM-encoded client certificate (or chain).
88
- * @property {string|Buffer} [key] - PEM-encoded private key for the client certificate.
89
- * @property {string} [passphrase] - Passphrase to decrypt the private key, if encrypted.
90
- * @property {string|Buffer} [pfx] - PFX/PKCS#12 bundle containing cert + key.
91
- * @property {string|Buffer|Array<string|Buffer>} [ca] - Custom CA certificate(s) to trust.
92
- */
73
+ /** Client certificate and key configuration subset. */
93
74
  export interface TLSOptions {
75
+ /** Client certificate in PEM or DER format. */
94
76
  cert?: string | Buffer;
77
+ /** Private key for client authentication. */
95
78
  key?: string | Buffer;
79
+ /** Passphrase for encrypted private keys. */
96
80
  passphrase?: string;
81
+ /** PKCS#12 / PFX certificate bundle. */
97
82
  pfx?: string | Buffer;
83
+ /** Custom certificate authority chain. */
98
84
  ca?: string | Buffer | Array<string | Buffer>;
99
- /**
100
- * Pin the server's public key by SHA-256 hash of the SPKI (Subject Public
101
- * Key Info). Format: `"sha256//base64hash"`. Accepts a single pin or an
102
- * array of pins; the connection succeeds if **any** pin matches.
103
- */
85
+ /** Expected SPKI pin(s) for public-key pinning. */
104
86
  pinnedPublicKey?: string | string[];
105
87
  }
106
88
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,cAAc,EAAE,iBAAiB,CAAC;IAClC,UAAU,IAAI,IAAI,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACnF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9C;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9C,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC;AAED,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,SAAU,SAAQ,MAAM;IACvC,uDAAuD;IACvD,cAAc,EAAE,iBAAiB,CAAC;IAClC,qDAAqD;IACrD,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACnF;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9C,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC"}