nlcurl 0.6.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 (354) 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 +111 -0
  15. package/dist/cache/store.d.ts.map +1 -0
  16. package/dist/cache/store.js +414 -0
  17. package/dist/cache/store.js.map +1 -0
  18. package/dist/cache/types.d.ts +69 -0
  19. package/dist/cache/types.d.ts.map +1 -0
  20. package/dist/cache/types.js +2 -0
  21. package/dist/cache/types.js.map +1 -0
  22. package/dist/cli/args.d.ts +4 -37
  23. package/dist/cli/args.d.ts.map +1 -1
  24. package/dist/cli/args.js +3 -4
  25. package/dist/cli/args.js.map +1 -1
  26. package/dist/cli/index.d.ts +0 -5
  27. package/dist/cli/index.d.ts.map +1 -1
  28. package/dist/cli/index.js +1 -6
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/output.d.ts +14 -20
  31. package/dist/cli/output.d.ts.map +1 -1
  32. package/dist/cli/output.js +14 -20
  33. package/dist/cli/output.js.map +1 -1
  34. package/dist/cookies/jar.d.ts +33 -31
  35. package/dist/cookies/jar.d.ts.map +1 -1
  36. package/dist/cookies/jar.js +69 -33
  37. package/dist/cookies/jar.js.map +1 -1
  38. package/dist/cookies/parser.d.ts +14 -16
  39. package/dist/cookies/parser.d.ts.map +1 -1
  40. package/dist/cookies/parser.js +30 -13
  41. package/dist/cookies/parser.js.map +1 -1
  42. package/dist/cookies/psl-data.d.ts +1 -1
  43. package/dist/cookies/psl-data.js +1 -1
  44. package/dist/cookies/public-suffix.d.ts +5 -27
  45. package/dist/cookies/public-suffix.d.ts.map +1 -1
  46. package/dist/cookies/public-suffix.js +5 -37
  47. package/dist/cookies/public-suffix.js.map +1 -1
  48. package/dist/core/auth.d.ts +30 -0
  49. package/dist/core/auth.d.ts.map +1 -0
  50. package/dist/core/auth.js +34 -0
  51. package/dist/core/auth.js.map +1 -0
  52. package/dist/core/client.d.ts +28 -40
  53. package/dist/core/client.d.ts.map +1 -1
  54. package/dist/core/client.js +34 -41
  55. package/dist/core/client.js.map +1 -1
  56. package/dist/core/errors.d.ts +64 -88
  57. package/dist/core/errors.d.ts.map +1 -1
  58. package/dist/core/errors.js +64 -88
  59. package/dist/core/errors.js.map +1 -1
  60. package/dist/core/request.d.ts +63 -85
  61. package/dist/core/request.d.ts.map +1 -1
  62. package/dist/core/response.d.ts +64 -59
  63. package/dist/core/response.d.ts.map +1 -1
  64. package/dist/core/response.js +70 -52
  65. package/dist/core/response.js.map +1 -1
  66. package/dist/core/session.d.ts +81 -70
  67. package/dist/core/session.d.ts.map +1 -1
  68. package/dist/core/session.js +198 -71
  69. package/dist/core/session.js.map +1 -1
  70. package/dist/core/validation.d.ts +44 -42
  71. package/dist/core/validation.d.ts.map +1 -1
  72. package/dist/core/validation.js +47 -58
  73. package/dist/core/validation.js.map +1 -1
  74. package/dist/dns/cache.d.ts +59 -0
  75. package/dist/dns/cache.d.ts.map +1 -0
  76. package/dist/dns/cache.js +99 -0
  77. package/dist/dns/cache.js.map +1 -0
  78. package/dist/dns/codec.d.ts +39 -0
  79. package/dist/dns/codec.d.ts.map +1 -0
  80. package/dist/dns/codec.js +238 -0
  81. package/dist/dns/codec.js.map +1 -0
  82. package/dist/dns/doh-resolver.d.ts +38 -0
  83. package/dist/dns/doh-resolver.d.ts.map +1 -0
  84. package/dist/dns/doh-resolver.js +191 -0
  85. package/dist/dns/doh-resolver.js.map +1 -0
  86. package/dist/dns/dot-resolver.d.ts +89 -0
  87. package/dist/dns/dot-resolver.d.ts.map +1 -0
  88. package/dist/dns/dot-resolver.js +158 -0
  89. package/dist/dns/dot-resolver.js.map +1 -0
  90. package/dist/dns/https-rr.d.ts +40 -0
  91. package/dist/dns/https-rr.d.ts.map +1 -0
  92. package/dist/dns/https-rr.js +109 -0
  93. package/dist/dns/https-rr.js.map +1 -0
  94. package/dist/dns/types.d.ts +82 -0
  95. package/dist/dns/types.d.ts.map +1 -0
  96. package/dist/dns/types.js +23 -0
  97. package/dist/dns/types.js.map +1 -0
  98. package/dist/fingerprints/akamai.d.ts +3 -11
  99. package/dist/fingerprints/akamai.d.ts.map +1 -1
  100. package/dist/fingerprints/akamai.js +3 -11
  101. package/dist/fingerprints/akamai.js.map +1 -1
  102. package/dist/fingerprints/database.d.ts +6 -14
  103. package/dist/fingerprints/database.d.ts.map +1 -1
  104. package/dist/fingerprints/database.js +6 -14
  105. package/dist/fingerprints/database.js.map +1 -1
  106. package/dist/fingerprints/extensions.d.ts +56 -71
  107. package/dist/fingerprints/extensions.d.ts.map +1 -1
  108. package/dist/fingerprints/extensions.js +58 -71
  109. package/dist/fingerprints/extensions.js.map +1 -1
  110. package/dist/fingerprints/ja3.d.ts +12 -30
  111. package/dist/fingerprints/ja3.d.ts.map +1 -1
  112. package/dist/fingerprints/ja3.js +12 -30
  113. package/dist/fingerprints/ja3.js.map +1 -1
  114. package/dist/fingerprints/ja4.d.ts +18 -0
  115. package/dist/fingerprints/ja4.d.ts.map +1 -0
  116. package/dist/fingerprints/ja4.js +83 -0
  117. package/dist/fingerprints/ja4.js.map +1 -0
  118. package/dist/fingerprints/profiles/chrome.d.ts +18 -21
  119. package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
  120. package/dist/fingerprints/profiles/chrome.js +35 -31
  121. package/dist/fingerprints/profiles/chrome.js.map +1 -1
  122. package/dist/fingerprints/profiles/edge.d.ts +7 -10
  123. package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
  124. package/dist/fingerprints/profiles/edge.js +7 -10
  125. package/dist/fingerprints/profiles/edge.js.map +1 -1
  126. package/dist/fingerprints/profiles/firefox.d.ts +8 -11
  127. package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
  128. package/dist/fingerprints/profiles/firefox.js +8 -11
  129. package/dist/fingerprints/profiles/firefox.js.map +1 -1
  130. package/dist/fingerprints/profiles/safari.d.ts +11 -14
  131. package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
  132. package/dist/fingerprints/profiles/safari.js +11 -14
  133. package/dist/fingerprints/profiles/safari.js.map +1 -1
  134. package/dist/fingerprints/profiles/tor.d.ts +5 -8
  135. package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
  136. package/dist/fingerprints/profiles/tor.js +5 -8
  137. package/dist/fingerprints/profiles/tor.js.map +1 -1
  138. package/dist/fingerprints/types.d.ts +42 -73
  139. package/dist/fingerprints/types.d.ts.map +1 -1
  140. package/dist/hsts/store.d.ts +39 -0
  141. package/dist/hsts/store.d.ts.map +1 -0
  142. package/dist/hsts/store.js +163 -0
  143. package/dist/hsts/store.js.map +1 -0
  144. package/dist/hsts/types.d.ts +24 -0
  145. package/dist/hsts/types.d.ts.map +1 -0
  146. package/dist/hsts/types.js +2 -0
  147. package/dist/hsts/types.js.map +1 -0
  148. package/dist/http/alt-svc.d.ts +67 -0
  149. package/dist/http/alt-svc.d.ts.map +1 -0
  150. package/dist/http/alt-svc.js +186 -0
  151. package/dist/http/alt-svc.js.map +1 -0
  152. package/dist/http/early-hints.d.ts +23 -0
  153. package/dist/http/early-hints.d.ts.map +1 -0
  154. package/dist/http/early-hints.js +33 -0
  155. package/dist/http/early-hints.js.map +1 -0
  156. package/dist/http/form-data.d.ts +17 -35
  157. package/dist/http/form-data.d.ts.map +1 -1
  158. package/dist/http/form-data.js +12 -34
  159. package/dist/http/form-data.js.map +1 -1
  160. package/dist/http/h1/client.d.ts +14 -26
  161. package/dist/http/h1/client.d.ts.map +1 -1
  162. package/dist/http/h1/client.js +29 -22
  163. package/dist/http/h1/client.js.map +1 -1
  164. package/dist/http/h1/encoder.d.ts +10 -17
  165. package/dist/http/h1/encoder.d.ts.map +1 -1
  166. package/dist/http/h1/encoder.js +10 -17
  167. package/dist/http/h1/encoder.js.map +1 -1
  168. package/dist/http/h1/parser.d.ts +22 -59
  169. package/dist/http/h1/parser.d.ts.map +1 -1
  170. package/dist/http/h1/parser.js +15 -47
  171. package/dist/http/h1/parser.js.map +1 -1
  172. package/dist/http/h2/client.d.ts +18 -59
  173. package/dist/http/h2/client.d.ts.map +1 -1
  174. package/dist/http/h2/client.js +29 -64
  175. package/dist/http/h2/client.js.map +1 -1
  176. package/dist/http/h2/frames.d.ts +53 -84
  177. package/dist/http/h2/frames.d.ts.map +1 -1
  178. package/dist/http/h2/frames.js +48 -76
  179. package/dist/http/h2/frames.js.map +1 -1
  180. package/dist/http/h2/hpack.d.ts +16 -35
  181. package/dist/http/h2/hpack.d.ts.map +1 -1
  182. package/dist/http/h2/hpack.js +16 -35
  183. package/dist/http/h2/hpack.js.map +1 -1
  184. package/dist/http/h3/detection.d.ts +15 -0
  185. package/dist/http/h3/detection.d.ts.map +1 -0
  186. package/dist/http/h3/detection.js +41 -0
  187. package/dist/http/h3/detection.js.map +1 -0
  188. package/dist/http/negotiator.d.ts +43 -33
  189. package/dist/http/negotiator.d.ts.map +1 -1
  190. package/dist/http/negotiator.js +99 -41
  191. package/dist/http/negotiator.js.map +1 -1
  192. package/dist/http/pool.d.ts +34 -64
  193. package/dist/http/pool.d.ts.map +1 -1
  194. package/dist/http/pool.js +22 -41
  195. package/dist/http/pool.js.map +1 -1
  196. package/dist/http/resumable-upload.d.ts +76 -0
  197. package/dist/http/resumable-upload.d.ts.map +1 -0
  198. package/dist/http/resumable-upload.js +104 -0
  199. package/dist/http/resumable-upload.js.map +1 -0
  200. package/dist/http/trailers.d.ts +29 -0
  201. package/dist/http/trailers.d.ts.map +1 -0
  202. package/dist/http/trailers.js +57 -0
  203. package/dist/http/trailers.js.map +1 -0
  204. package/dist/index.d.ts +36 -8
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +32 -1
  207. package/dist/index.js.map +1 -1
  208. package/dist/middleware/interceptor.d.ts +13 -32
  209. package/dist/middleware/interceptor.d.ts.map +1 -1
  210. package/dist/middleware/interceptor.js +11 -16
  211. package/dist/middleware/interceptor.js.map +1 -1
  212. package/dist/middleware/rate-limiter.d.ts +8 -17
  213. package/dist/middleware/rate-limiter.d.ts.map +1 -1
  214. package/dist/middleware/rate-limiter.js +15 -12
  215. package/dist/middleware/rate-limiter.js.map +1 -1
  216. package/dist/middleware/retry-after.d.ts +15 -0
  217. package/dist/middleware/retry-after.d.ts.map +1 -0
  218. package/dist/middleware/retry-after.js +36 -0
  219. package/dist/middleware/retry-after.js.map +1 -0
  220. package/dist/middleware/retry.d.ts +9 -18
  221. package/dist/middleware/retry.d.ts.map +1 -1
  222. package/dist/middleware/retry.js +12 -9
  223. package/dist/middleware/retry.js.map +1 -1
  224. package/dist/proxy/auth.d.ts +73 -0
  225. package/dist/proxy/auth.d.ts.map +1 -0
  226. package/dist/proxy/auth.js +128 -0
  227. package/dist/proxy/auth.js.map +1 -0
  228. package/dist/proxy/env-proxy.d.ts +11 -0
  229. package/dist/proxy/env-proxy.d.ts.map +1 -0
  230. package/dist/proxy/env-proxy.js +56 -0
  231. package/dist/proxy/env-proxy.js.map +1 -0
  232. package/dist/proxy/http-proxy.d.ts +13 -18
  233. package/dist/proxy/http-proxy.d.ts.map +1 -1
  234. package/dist/proxy/http-proxy.js +24 -14
  235. package/dist/proxy/http-proxy.js.map +1 -1
  236. package/dist/proxy/socks.d.ts +13 -20
  237. package/dist/proxy/socks.d.ts.map +1 -1
  238. package/dist/proxy/socks.js +6 -9
  239. package/dist/proxy/socks.js.map +1 -1
  240. package/dist/sse/parser.d.ts +47 -0
  241. package/dist/sse/parser.d.ts.map +1 -0
  242. package/dist/sse/parser.js +139 -0
  243. package/dist/sse/parser.js.map +1 -0
  244. package/dist/tls/constants.d.ts +15 -74
  245. package/dist/tls/constants.d.ts.map +1 -1
  246. package/dist/tls/constants.js +15 -74
  247. package/dist/tls/constants.js.map +1 -1
  248. package/dist/tls/ct.d.ts +78 -0
  249. package/dist/tls/ct.d.ts.map +1 -0
  250. package/dist/tls/ct.js +175 -0
  251. package/dist/tls/ct.js.map +1 -0
  252. package/dist/tls/early-data.d.ts +45 -0
  253. package/dist/tls/early-data.d.ts.map +1 -0
  254. package/dist/tls/early-data.js +46 -0
  255. package/dist/tls/early-data.js.map +1 -0
  256. package/dist/tls/ech.d.ts +130 -0
  257. package/dist/tls/ech.d.ts.map +1 -0
  258. package/dist/tls/ech.js +353 -0
  259. package/dist/tls/ech.js.map +1 -0
  260. package/dist/tls/keylog.d.ts +34 -0
  261. package/dist/tls/keylog.d.ts.map +1 -0
  262. package/dist/tls/keylog.js +64 -0
  263. package/dist/tls/keylog.js.map +1 -0
  264. package/dist/tls/node-engine.d.ts +15 -14
  265. package/dist/tls/node-engine.d.ts.map +1 -1
  266. package/dist/tls/node-engine.js +54 -14
  267. package/dist/tls/node-engine.js.map +1 -1
  268. package/dist/tls/ocsp.d.ts +55 -0
  269. package/dist/tls/ocsp.d.ts.map +1 -0
  270. package/dist/tls/ocsp.js +131 -0
  271. package/dist/tls/ocsp.js.map +1 -0
  272. package/dist/tls/pin-verification.d.ts +10 -0
  273. package/dist/tls/pin-verification.d.ts.map +1 -0
  274. package/dist/tls/pin-verification.js +28 -0
  275. package/dist/tls/pin-verification.js.map +1 -0
  276. package/dist/tls/session-cache.d.ts +58 -0
  277. package/dist/tls/session-cache.d.ts.map +1 -0
  278. package/dist/tls/session-cache.js +76 -0
  279. package/dist/tls/session-cache.js.map +1 -0
  280. package/dist/tls/stealth/client-hello.d.ts +34 -32
  281. package/dist/tls/stealth/client-hello.d.ts.map +1 -1
  282. package/dist/tls/stealth/client-hello.js +116 -11
  283. package/dist/tls/stealth/client-hello.js.map +1 -1
  284. package/dist/tls/stealth/engine.d.ts +5 -15
  285. package/dist/tls/stealth/engine.d.ts.map +1 -1
  286. package/dist/tls/stealth/engine.js +163 -47
  287. package/dist/tls/stealth/engine.js.map +1 -1
  288. package/dist/tls/stealth/handshake.d.ts +23 -32
  289. package/dist/tls/stealth/handshake.d.ts.map +1 -1
  290. package/dist/tls/stealth/handshake.js +112 -27
  291. package/dist/tls/stealth/handshake.js.map +1 -1
  292. package/dist/tls/stealth/key-schedule.d.ts +59 -86
  293. package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
  294. package/dist/tls/stealth/key-schedule.js +46 -58
  295. package/dist/tls/stealth/key-schedule.js.map +1 -1
  296. package/dist/tls/stealth/record-layer.d.ts +52 -75
  297. package/dist/tls/stealth/record-layer.d.ts.map +1 -1
  298. package/dist/tls/stealth/record-layer.js +47 -63
  299. package/dist/tls/stealth/record-layer.js.map +1 -1
  300. package/dist/tls/stealth/tls12-handshake.d.ts +30 -0
  301. package/dist/tls/stealth/tls12-handshake.d.ts.map +1 -0
  302. package/dist/tls/stealth/tls12-handshake.js +470 -0
  303. package/dist/tls/stealth/tls12-handshake.js.map +1 -0
  304. package/dist/tls/types.d.ts +46 -48
  305. package/dist/tls/types.d.ts.map +1 -1
  306. package/dist/utils/buffer-reader.d.ts +26 -81
  307. package/dist/utils/buffer-reader.d.ts.map +1 -1
  308. package/dist/utils/buffer-reader.js +26 -81
  309. package/dist/utils/buffer-reader.js.map +1 -1
  310. package/dist/utils/buffer-writer.d.ts +30 -66
  311. package/dist/utils/buffer-writer.d.ts.map +1 -1
  312. package/dist/utils/buffer-writer.js +30 -66
  313. package/dist/utils/buffer-writer.js.map +1 -1
  314. package/dist/utils/compression.d.ts +18 -0
  315. package/dist/utils/compression.d.ts.map +1 -0
  316. package/dist/utils/compression.js +34 -0
  317. package/dist/utils/compression.js.map +1 -0
  318. package/dist/utils/dictionary-transport.d.ts +97 -0
  319. package/dist/utils/dictionary-transport.d.ts.map +1 -0
  320. package/dist/utils/dictionary-transport.js +171 -0
  321. package/dist/utils/dictionary-transport.js.map +1 -0
  322. package/dist/utils/encoding.d.ts +12 -28
  323. package/dist/utils/encoding.d.ts.map +1 -1
  324. package/dist/utils/encoding.js +77 -40
  325. package/dist/utils/encoding.js.map +1 -1
  326. package/dist/utils/happy-eyeballs.d.ts +20 -7
  327. package/dist/utils/happy-eyeballs.d.ts.map +1 -1
  328. package/dist/utils/happy-eyeballs.js +57 -25
  329. package/dist/utils/happy-eyeballs.js.map +1 -1
  330. package/dist/utils/logger.d.ts +54 -81
  331. package/dist/utils/logger.d.ts.map +1 -1
  332. package/dist/utils/logger.js +92 -64
  333. package/dist/utils/logger.js.map +1 -1
  334. package/dist/utils/tcp-fast-open.d.ts +30 -0
  335. package/dist/utils/tcp-fast-open.d.ts.map +1 -0
  336. package/dist/utils/tcp-fast-open.js +36 -0
  337. package/dist/utils/tcp-fast-open.js.map +1 -0
  338. package/dist/utils/url.d.ts +18 -25
  339. package/dist/utils/url.d.ts.map +1 -1
  340. package/dist/utils/url.js +18 -25
  341. package/dist/utils/url.js.map +1 -1
  342. package/dist/ws/client.d.ts +35 -52
  343. package/dist/ws/client.d.ts.map +1 -1
  344. package/dist/ws/client.js +92 -37
  345. package/dist/ws/client.js.map +1 -1
  346. package/dist/ws/frame.d.ts +27 -42
  347. package/dist/ws/frame.d.ts.map +1 -1
  348. package/dist/ws/frame.js +25 -37
  349. package/dist/ws/frame.js.map +1 -1
  350. package/dist/ws/permessage-deflate.d.ts +53 -0
  351. package/dist/ws/permessage-deflate.d.ts.map +1 -0
  352. package/dist/ws/permessage-deflate.js +140 -0
  353. package/dist/ws/permessage-deflate.js.map +1 -0
  354. package/package.json +62 -62
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Incremental parser for the Server-Sent Events stream format.
3
+ *
4
+ * Feed chunks of text with {@link feed}, then pull discrete events
5
+ * with {@link pull}. Call {@link flush} after the stream closes to
6
+ * emit any buffered partial event.
7
+ */
8
+ export class SSEParser {
9
+ static MAX_LINE_LENGTH = 65_536;
10
+ static MAX_EVENT_SIZE = 1_048_576;
11
+ buffer = "";
12
+ eventType = "";
13
+ dataLines = [];
14
+ dataSize = 0;
15
+ lastEventId = "";
16
+ retry = undefined;
17
+ events = [];
18
+ /**
19
+ * Append raw text from the event stream and parse complete lines.
20
+ *
21
+ * @param {string} text - Chunk of UTF-8 text from the response body.
22
+ */
23
+ feed(text) {
24
+ this.buffer += text;
25
+ if (this.buffer.length > SSEParser.MAX_LINE_LENGTH) {
26
+ throw new Error(`SSE line exceeds maximum length of ${SSEParser.MAX_LINE_LENGTH} bytes`);
27
+ }
28
+ const lines = this.buffer.split(/\r\n|\r|\n/);
29
+ this.buffer = lines.pop();
30
+ for (const line of lines) {
31
+ this.processLine(line);
32
+ }
33
+ }
34
+ /**
35
+ * Remove and return the next fully-parsed event from the queue.
36
+ *
37
+ * @returns {ServerSentEvent|null} The next {@link ServerSentEvent}, or `null` if the queue is empty.
38
+ */
39
+ pull() {
40
+ return this.events.shift() ?? null;
41
+ }
42
+ /** Flush any remaining buffered data and dispatch a final event if present. */
43
+ flush() {
44
+ if (this.buffer.length > 0) {
45
+ this.processLine(this.buffer);
46
+ this.buffer = "";
47
+ }
48
+ this.dispatchEvent();
49
+ }
50
+ processLine(line) {
51
+ if (line === "") {
52
+ this.dispatchEvent();
53
+ return;
54
+ }
55
+ if (line.startsWith(":"))
56
+ return;
57
+ const colonIdx = line.indexOf(":");
58
+ let field;
59
+ let value;
60
+ if (colonIdx === -1) {
61
+ field = line;
62
+ value = "";
63
+ }
64
+ else {
65
+ field = line.substring(0, colonIdx);
66
+ value = line.substring(colonIdx + 1);
67
+ if (value.startsWith(" ")) {
68
+ value = value.substring(1);
69
+ }
70
+ }
71
+ switch (field) {
72
+ case "event":
73
+ this.eventType = value;
74
+ break;
75
+ case "data":
76
+ this.dataSize += value.length + 1;
77
+ if (this.dataSize > SSEParser.MAX_EVENT_SIZE) {
78
+ throw new Error(`SSE event data exceeds maximum size of ${SSEParser.MAX_EVENT_SIZE} bytes`);
79
+ }
80
+ this.dataLines.push(value);
81
+ break;
82
+ case "id":
83
+ if (!value.includes("\0")) {
84
+ this.lastEventId = value;
85
+ }
86
+ break;
87
+ case "retry": {
88
+ const parsed = parseInt(value, 10);
89
+ if (!Number.isNaN(parsed) && parsed >= 0 && String(parsed) === value.trim()) {
90
+ this.retry = parsed;
91
+ }
92
+ break;
93
+ }
94
+ }
95
+ }
96
+ dispatchEvent() {
97
+ if (this.dataLines.length === 0) {
98
+ this.eventType = "";
99
+ return;
100
+ }
101
+ const event = {
102
+ event: this.eventType || "message",
103
+ data: this.dataLines.join("\n"),
104
+ id: this.lastEventId,
105
+ retry: this.retry,
106
+ };
107
+ this.events.push(event);
108
+ this.dataLines = [];
109
+ this.dataSize = 0;
110
+ this.eventType = "";
111
+ this.retry = undefined;
112
+ }
113
+ }
114
+ /**
115
+ * Consume a readable stream as a Server-Sent Events source.
116
+ *
117
+ * Yields individual {@link ServerSentEvent} objects as they are parsed
118
+ * from the stream in real time.
119
+ *
120
+ * @param {Readable} stream - Readable stream carrying `text/event-stream` data.
121
+ * @returns {AsyncGenerator<ServerSentEvent>} Async generator of server-sent events.
122
+ */
123
+ export async function* parseSSEStream(stream) {
124
+ const parser = new SSEParser();
125
+ for await (const chunk of stream) {
126
+ const text = typeof chunk === "string" ? chunk : chunk.toString("utf8");
127
+ parser.feed(text);
128
+ let event;
129
+ while ((event = parser.pull()) !== null) {
130
+ yield event;
131
+ }
132
+ }
133
+ parser.flush();
134
+ let event;
135
+ while ((event = parser.pull()) !== null) {
136
+ yield event;
137
+ }
138
+ }
139
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/sse/parser.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,18 @@
1
- /**
2
- * TLS record content type codes (RFC 8446 §5.1).
3
- *
4
- * @enum {number}
5
- */
1
+ /** TLS record content type identifiers. */
6
2
  export declare const RecordType: {
7
3
  readonly CHANGE_CIPHER_SPEC: 20;
8
4
  readonly ALERT: 21;
9
5
  readonly HANDSHAKE: 22;
10
6
  readonly APPLICATION_DATA: 23;
11
7
  };
12
- /**
13
- * TLS protocol version codes as used in the record layer and handshake
14
- * (RFC 8446 Appendix B.3.1).
15
- *
16
- * @enum {number}
17
- */
8
+ /** TLS protocol version numbers. */
18
9
  export declare const ProtocolVersion: {
19
10
  readonly TLS_1_0: 769;
20
11
  readonly TLS_1_1: 770;
21
12
  readonly TLS_1_2: 771;
22
13
  readonly TLS_1_3: 772;
23
14
  };
24
- /**
25
- * TLS handshake message type codes (RFC 8446 ¥4).
26
- *
27
- * @enum {number}
28
- */
15
+ /** TLS handshake message type identifiers. */
29
16
  export declare const HandshakeType: {
30
17
  readonly CLIENT_HELLO: 1;
31
18
  readonly SERVER_HELLO: 2;
@@ -39,12 +26,7 @@ export declare const HandshakeType: {
39
26
  readonly KEY_UPDATE: 24;
40
27
  readonly MESSAGE_HASH: 254;
41
28
  };
42
- /**
43
- * IANA TLS cipher suite codes supported by the stealth engine and used to
44
- * construct JA3 fingerprints (RFC 8446, RFC 5246).
45
- *
46
- * @enum {number}
47
- */
29
+ /** TLS cipher suite numeric identifiers. */
48
30
  export declare const CipherSuite: {
49
31
  readonly TLS_AES_128_GCM_SHA256: 4865;
50
32
  readonly TLS_AES_256_GCM_SHA384: 4866;
@@ -64,11 +46,7 @@ export declare const CipherSuite: {
64
46
  readonly TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: 49161;
65
47
  readonly TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: 49162;
66
48
  };
67
- /**
68
- * IANA TLS extension type codes (RFC 8446 Appendix B.3.1 and related RFCs).
69
- *
70
- * @enum {number}
71
- */
49
+ /** TLS extension type numeric identifiers. */
72
50
  export declare const ExtensionType: {
73
51
  readonly SERVER_NAME: 0;
74
52
  readonly EC_POINT_FORMATS: 11;
@@ -95,12 +73,7 @@ export declare const ExtensionType: {
95
73
  readonly ENCRYPTED_CLIENT_HELLO: 65037;
96
74
  readonly POST_HANDSHAKE_AUTH: 49;
97
75
  };
98
- /**
99
- * IANA named group codes for elliptic curves and finite-field DH groups
100
- * used in TLS key exchange (RFC 8422, RFC 7748).
101
- *
102
- * @enum {number}
103
- */
76
+ /** TLS supported named groups (curves and key exchange). */
104
77
  export declare const NamedGroup: {
105
78
  readonly X25519: 29;
106
79
  readonly SECP256R1: 23;
@@ -112,12 +85,7 @@ export declare const NamedGroup: {
112
85
  readonly X25519_KYBER768: 25497;
113
86
  readonly X25519_MLKEM768: 17800;
114
87
  };
115
- /**
116
- * IANA TLS signature scheme codes used in the `signature_algorithms` extension
117
- * and in `CertificateVerify` messages (RFC 8446 Appendix B.3.1.3).
118
- *
119
- * @enum {number}
120
- */
88
+ /** TLS signature scheme identifiers. */
121
89
  export declare const SignatureScheme: {
122
90
  readonly ECDSA_SECP256R1_SHA256: 1027;
123
91
  readonly ECDSA_SECP384R1_SHA384: 1283;
@@ -136,58 +104,31 @@ export declare const SignatureScheme: {
136
104
  readonly RSA_PKCS1_SHA1: 513;
137
105
  readonly ECDSA_SHA1: 515;
138
106
  };
139
- /**
140
- * EC point format codes used in the `ec_point_formats` TLS extension
141
- * (RFC 8422 §5.1.2). Only `UNCOMPRESSED` (`0`) is used in practice.
142
- *
143
- * @enum {number}
144
- */
107
+ /** Elliptic curve point format identifiers. */
145
108
  export declare const ECPointFormat: {
146
109
  readonly UNCOMPRESSED: 0;
147
110
  };
148
- /**
149
- * PSK key exchange mode codes used in the `psk_key_exchange_modes` extension
150
- * (RFC 8446 ¥4.2.9).
151
- *
152
- * @enum {number}
153
- */
111
+ /** Pre-shared key exchange mode identifiers. */
154
112
  export declare const PskKeyExchangeMode: {
155
113
  readonly PSK_KE: 0;
156
114
  readonly PSK_DHE_KE: 1;
157
115
  };
158
- /**
159
- * Certificate compression algorithm codes used in the `compress_certificate`
160
- * extension (RFC 8879).
161
- *
162
- * @enum {number}
163
- */
116
+ /** Certificate compression algorithm identifiers. */
164
117
  export declare const CertCompressAlg: {
165
118
  readonly ZLIB: 1;
166
119
  readonly BROTLI: 2;
167
120
  readonly ZSTD: 3;
168
121
  };
169
- /**
170
- * The 16 GREASE values defined in RFC 8701. These are injected into cipher
171
- * suite lists, extension type lists, and named group lists to encourage
172
- * servers to be tolerant of unknown values.
173
- *
174
- * @type {readonly number[]}
175
- */
122
+ /** Standard GREASE (Generate Random Extensions And Sustain Extensibility) values. */
176
123
  export declare const GREASE_VALUES: readonly number[];
177
124
  /**
178
- * Returns a deterministic GREASE value selected by `seed`, cycling through
179
- * the 16 GREASE values defined in RFC 8701.
125
+ * Select a deterministic GREASE value from a seed.
180
126
  *
181
- * @param {number} seed - Arbitrary integer used to select the GREASE value.
182
- * @returns {number} A GREASE value from the GREASE_VALUES array.
127
+ * @param {number} seed - Numeric seed for index selection.
128
+ * @returns {number} GREASE value from the standard set.
183
129
  */
184
130
  export declare function greaseValue(seed: number): number;
185
- /**
186
- * TLS alert description codes (RFC 8446 Appendix B.2). Used to interpret
187
- * alert records received from the server during or after the handshake.
188
- *
189
- * @enum {number}
190
- */
131
+ /** TLS alert description codes. */
191
132
  export declare const AlertDescription: {
192
133
  readonly CLOSE_NOTIFY: 0;
193
134
  readonly UNEXPECTED_MESSAGE: 10;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYhB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAoBd,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;CAEhB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAAqI,CAAC;AAEjL;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;CAoBnB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,oCAAoC;AACpC,eAAO,MAAM,eAAe;;;;;CAKlB,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYhB,CAAC;AAEX,4CAA4C;AAC5C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAoBd,CAAC;AAEX,8CAA8C;AAC9C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhB,CAAC;AAEX,4DAA4D;AAC5D,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAiBlB,CAAC;AAEX,+CAA+C;AAC/C,eAAO,MAAM,aAAa;;CAEhB,CAAC;AAEX,gDAAgD;AAChD,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,qFAAqF;AACrF,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAAqI,CAAC;AAEjL;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,mCAAmC;AACnC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;CAoBnB,CAAC"}
@@ -1,31 +1,18 @@
1
- /**
2
- * TLS record content type codes (RFC 8446 §5.1).
3
- *
4
- * @enum {number}
5
- */
1
+ /** TLS record content type identifiers. */
6
2
  export const RecordType = {
7
3
  CHANGE_CIPHER_SPEC: 20,
8
4
  ALERT: 21,
9
5
  HANDSHAKE: 22,
10
6
  APPLICATION_DATA: 23,
11
7
  };
12
- /**
13
- * TLS protocol version codes as used in the record layer and handshake
14
- * (RFC 8446 Appendix B.3.1).
15
- *
16
- * @enum {number}
17
- */
8
+ /** TLS protocol version numbers. */
18
9
  export const ProtocolVersion = {
19
10
  TLS_1_0: 0x0301,
20
11
  TLS_1_1: 0x0302,
21
12
  TLS_1_2: 0x0303,
22
13
  TLS_1_3: 0x0304,
23
14
  };
24
- /**
25
- * TLS handshake message type codes (RFC 8446 ¥4).
26
- *
27
- * @enum {number}
28
- */
15
+ /** TLS handshake message type identifiers. */
29
16
  export const HandshakeType = {
30
17
  CLIENT_HELLO: 1,
31
18
  SERVER_HELLO: 2,
@@ -39,12 +26,7 @@ export const HandshakeType = {
39
26
  KEY_UPDATE: 24,
40
27
  MESSAGE_HASH: 254,
41
28
  };
42
- /**
43
- * IANA TLS cipher suite codes supported by the stealth engine and used to
44
- * construct JA3 fingerprints (RFC 8446, RFC 5246).
45
- *
46
- * @enum {number}
47
- */
29
+ /** TLS cipher suite numeric identifiers. */
48
30
  export const CipherSuite = {
49
31
  TLS_AES_128_GCM_SHA256: 0x1301,
50
32
  TLS_AES_256_GCM_SHA384: 0x1302,
@@ -64,11 +46,7 @@ export const CipherSuite = {
64
46
  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: 0xc009,
65
47
  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: 0xc00a,
66
48
  };
67
- /**
68
- * IANA TLS extension type codes (RFC 8446 Appendix B.3.1 and related RFCs).
69
- *
70
- * @enum {number}
71
- */
49
+ /** TLS extension type numeric identifiers. */
72
50
  export const ExtensionType = {
73
51
  SERVER_NAME: 0x0000,
74
52
  EC_POINT_FORMATS: 0x000b,
@@ -95,12 +73,7 @@ export const ExtensionType = {
95
73
  ENCRYPTED_CLIENT_HELLO: 0xfe0d,
96
74
  POST_HANDSHAKE_AUTH: 0x0031,
97
75
  };
98
- /**
99
- * IANA named group codes for elliptic curves and finite-field DH groups
100
- * used in TLS key exchange (RFC 8422, RFC 7748).
101
- *
102
- * @enum {number}
103
- */
76
+ /** TLS supported named groups (curves and key exchange). */
104
77
  export const NamedGroup = {
105
78
  X25519: 0x001d,
106
79
  SECP256R1: 0x0017,
@@ -112,12 +85,7 @@ export const NamedGroup = {
112
85
  X25519_KYBER768: 0x6399,
113
86
  X25519_MLKEM768: 0x4588,
114
87
  };
115
- /**
116
- * IANA TLS signature scheme codes used in the `signature_algorithms` extension
117
- * and in `CertificateVerify` messages (RFC 8446 Appendix B.3.1.3).
118
- *
119
- * @enum {number}
120
- */
88
+ /** TLS signature scheme identifiers. */
121
89
  export const SignatureScheme = {
122
90
  ECDSA_SECP256R1_SHA256: 0x0403,
123
91
  ECDSA_SECP384R1_SHA384: 0x0503,
@@ -136,60 +104,33 @@ export const SignatureScheme = {
136
104
  RSA_PKCS1_SHA1: 0x0201,
137
105
  ECDSA_SHA1: 0x0203,
138
106
  };
139
- /**
140
- * EC point format codes used in the `ec_point_formats` TLS extension
141
- * (RFC 8422 §5.1.2). Only `UNCOMPRESSED` (`0`) is used in practice.
142
- *
143
- * @enum {number}
144
- */
107
+ /** Elliptic curve point format identifiers. */
145
108
  export const ECPointFormat = {
146
109
  UNCOMPRESSED: 0,
147
110
  };
148
- /**
149
- * PSK key exchange mode codes used in the `psk_key_exchange_modes` extension
150
- * (RFC 8446 ¥4.2.9).
151
- *
152
- * @enum {number}
153
- */
111
+ /** Pre-shared key exchange mode identifiers. */
154
112
  export const PskKeyExchangeMode = {
155
113
  PSK_KE: 0,
156
114
  PSK_DHE_KE: 1,
157
115
  };
158
- /**
159
- * Certificate compression algorithm codes used in the `compress_certificate`
160
- * extension (RFC 8879).
161
- *
162
- * @enum {number}
163
- */
116
+ /** Certificate compression algorithm identifiers. */
164
117
  export const CertCompressAlg = {
165
118
  ZLIB: 1,
166
119
  BROTLI: 2,
167
120
  ZSTD: 3,
168
121
  };
169
- /**
170
- * The 16 GREASE values defined in RFC 8701. These are injected into cipher
171
- * suite lists, extension type lists, and named group lists to encourage
172
- * servers to be tolerant of unknown values.
173
- *
174
- * @type {readonly number[]}
175
- */
122
+ /** Standard GREASE (Generate Random Extensions And Sustain Extensibility) values. */
176
123
  export const GREASE_VALUES = [0x0a0a, 0x1a1a, 0x2a2a, 0x3a3a, 0x4a4a, 0x5a5a, 0x6a6a, 0x7a7a, 0x8a8a, 0x9a9a, 0xaaaa, 0xbaba, 0xcaca, 0xdada, 0xeaea, 0xfafa];
177
124
  /**
178
- * Returns a deterministic GREASE value selected by `seed`, cycling through
179
- * the 16 GREASE values defined in RFC 8701.
125
+ * Select a deterministic GREASE value from a seed.
180
126
  *
181
- * @param {number} seed - Arbitrary integer used to select the GREASE value.
182
- * @returns {number} A GREASE value from the GREASE_VALUES array.
127
+ * @param {number} seed - Numeric seed for index selection.
128
+ * @returns {number} GREASE value from the standard set.
183
129
  */
184
130
  export function greaseValue(seed) {
185
131
  return GREASE_VALUES[seed % GREASE_VALUES.length];
186
132
  }
187
- /**
188
- * TLS alert description codes (RFC 8446 Appendix B.2). Used to interpret
189
- * alert records received from the server during or after the handshake.
190
- *
191
- * @enum {number}
192
- */
133
+ /** TLS alert description codes. */
193
134
  export const AlertDescription = {
194
135
  CLOSE_NOTIFY: 0,
195
136
  UNEXPECTED_MESSAGE: 10,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tls/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /** Hash algorithms used in Signed Certificate Timestamps. */
2
+ export declare enum SCTHashAlgorithm {
3
+ NONE = 0,
4
+ MD5 = 1,
5
+ SHA1 = 2,
6
+ SHA224 = 3,
7
+ SHA256 = 4,
8
+ SHA384 = 5,
9
+ SHA512 = 6
10
+ }
11
+ /** Digital signature algorithms used in Signed Certificate Timestamps. */
12
+ export declare enum SCTSignatureAlgorithm {
13
+ ANONYMOUS = 0,
14
+ RSA = 1,
15
+ DSA = 2,
16
+ ECDSA = 3
17
+ }
18
+ /** Signed Certificate Timestamp version identifiers. */
19
+ export declare enum SCTVersion {
20
+ V1 = 0
21
+ }
22
+ /** Parsed Signed Certificate Timestamp (RFC 6962). */
23
+ export interface SCT {
24
+ /** SCT structure version. */
25
+ version: SCTVersion;
26
+ /** Log ID (SHA-256 hash of the log's public key). */
27
+ logId: Buffer;
28
+ /** Timestamp when the SCT was issued. */
29
+ timestamp: Date;
30
+ /** SCT extensions data. */
31
+ extensions: Buffer;
32
+ /** Hash algorithm used in the signature. */
33
+ hashAlgorithm: SCTHashAlgorithm;
34
+ /** Signature algorithm used. */
35
+ signatureAlgorithm: SCTSignatureAlgorithm;
36
+ /** Digital signature bytes. */
37
+ signature: Buffer;
38
+ }
39
+ /** Result of validating SCTs for Certificate Transparency compliance. */
40
+ export interface SCTValidationResult {
41
+ /** Whether the certificate meets CT compliance requirements. */
42
+ compliant: boolean;
43
+ /** Number of unique SCTs found. */
44
+ sctCount: number;
45
+ /** Deduplicated SCT entries. */
46
+ scts: SCT[];
47
+ /** Source from which the SCTs were obtained. */
48
+ source?: "embedded" | "tls-extension" | "ocsp";
49
+ }
50
+ /**
51
+ * Parse a serialized SCT list into individual SCT entries.
52
+ *
53
+ * @param {Buffer} data - TLS-encoded SCT list buffer.
54
+ * @returns {SCT[]} Array of parsed {@link SCT} objects.
55
+ */
56
+ export declare function parseSCTList(data: Buffer): SCT[];
57
+ /**
58
+ * Validate a set of SCTs for Certificate Transparency compliance.
59
+ *
60
+ * Deduplicates by log ID and requires at least two unique logs.
61
+ *
62
+ * @param {SCT[]} scts - Array of parsed SCTs.
63
+ * @returns {SCTValidationResult} Validation result with compliance status.
64
+ */
65
+ export declare function validateSCTs(scts: SCT[]): SCTValidationResult;
66
+ /**
67
+ * Extract embedded SCTs from a TLS socket's peer certificate.
68
+ *
69
+ * @param {{ getPeerCertificate?: (detailed?: boolean) => { raw?: Buffer; serialNumber?: string } }} socket - Socket with a `getPeerCertificate` method.
70
+ * @returns {SCTValidationResult | undefined} Validation result, or `undefined` if SCTs cannot be extracted.
71
+ */
72
+ export declare function extractSCTsFromSocket(socket: {
73
+ getPeerCertificate?: (detailed?: boolean) => {
74
+ raw?: Buffer;
75
+ serialNumber?: string;
76
+ };
77
+ }): SCTValidationResult | undefined;
78
+ //# sourceMappingURL=ct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ct.d.ts","sourceRoot":"","sources":["../../src/tls/ct.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,oBAAY,gBAAgB;IAC1B,IAAI,IAAI;IACR,GAAG,IAAI;IACP,IAAI,IAAI;IACR,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,0EAA0E;AAC1E,oBAAY,qBAAqB;IAC/B,SAAS,IAAI;IACb,GAAG,IAAI;IACP,GAAG,IAAI;IACP,KAAK,IAAI;CACV;AAED,wDAAwD;AACxD,oBAAY,UAAU;IACpB,EAAE,IAAI;CACP;AAED,sDAAsD;AACtD,MAAM,WAAW,GAAG;IAClB,6BAA6B;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAE,IAAI,CAAC;IAChB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,aAAa,EAAE,gBAAgB,CAAC;IAChC,gCAAgC;IAChC,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,gDAAgD;IAChD,MAAM,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,MAAM,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,CAsBhD;AA+CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAgB7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,kBAAkB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,mBAAmB,GAAG,SAAS,CA2CvK"}