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
@@ -1,53 +1,35 @@
1
1
  const INITIAL_CAPACITY = 1024;
2
2
  const GROWTH_FACTOR = 2;
3
3
  const MAX_CAPACITY = 256 * 1024 * 1024;
4
- /**
5
- * Growable binary buffer writer that serializes typed values in big-endian byte
6
- * order. The internal buffer doubles in capacity as needed. Call
7
- * {@link BufferWriter.toBuffer} to obtain the written bytes as a new `Buffer`.
8
- *
9
- * @example
10
- * const w = new BufferWriter();
11
- * w.writeUInt8(0x16);
12
- * w.writeUInt16(0x0303);
13
- * w.writeVector16(data);
14
- * return w.toBuffer();
15
- */
4
+ /** Auto-growing big-endian buffer builder. */
16
5
  export class BufferWriter {
17
6
  _buf;
18
7
  _pos;
19
8
  /**
20
- * Creates a new BufferWriter with an optional initial capacity.
9
+ * Create a writer with the given initial capacity.
21
10
  *
22
- * @param {number} [capacity=1024] - Initial internal buffer capacity in bytes.
11
+ * @param {number} [capacity] - Initial buffer allocation in bytes.
23
12
  */
24
13
  constructor(capacity = INITIAL_CAPACITY) {
25
14
  this._buf = Buffer.allocUnsafe(capacity);
26
15
  this._pos = 0;
27
16
  }
28
- /** Current write position (equals the number of bytes written so far). */
17
+ /** Current write position (identical to the number of bytes written). */
29
18
  get position() {
30
19
  return this._pos;
31
20
  }
32
- /** Number of bytes that have been written (alias for {@link BufferWriter.position}). */
21
+ /** Number of bytes written so far. */
33
22
  get length() {
34
23
  return this._pos;
35
24
  }
36
- /**
37
- * Returns a copy of the written bytes as a new `Buffer`. The returned buffer
38
- * contains only the bytes that have been written, regardless of the internal
39
- * capacity.
40
- *
41
- * @returns {Buffer} Copy of all written data.
42
- */
25
+ /** Copy the written region into a new buffer and return it. */
43
26
  toBuffer() {
44
27
  return Buffer.from(this._buf.subarray(0, this._pos));
45
28
  }
46
29
  /**
47
- * Writes one unsigned byte and advances the write position by 1.
30
+ * Write an unsigned 8-bit integer.
48
31
  *
49
- * @param {number} value - Byte value (only the lowest 8 bits are used).
50
- * @returns {this} This instance for chaining.
32
+ * @param {number} value - Value to write.
51
33
  */
52
34
  writeUInt8(value) {
53
35
  this.ensureCapacity(1);
@@ -56,10 +38,9 @@ export class BufferWriter {
56
38
  return this;
57
39
  }
58
40
  /**
59
- * Writes one big-endian unsigned 16-bit integer and advances the write position by 2.
41
+ * Write an unsigned 16-bit big-endian integer.
60
42
  *
61
- * @param {number} value - 16-bit value to write.
62
- * @returns {this} This instance for chaining.
43
+ * @param {number} value - Value to write.
63
44
  */
64
45
  writeUInt16(value) {
65
46
  this.ensureCapacity(2);
@@ -68,10 +49,9 @@ export class BufferWriter {
68
49
  return this;
69
50
  }
70
51
  /**
71
- * Writes one big-endian unsigned 24-bit integer and advances the write position by 3.
52
+ * Write an unsigned 24-bit big-endian integer.
72
53
  *
73
- * @param {number} value - 24-bit value to write.
74
- * @returns {this} This instance for chaining.
54
+ * @param {number} value - Value to write.
75
55
  */
76
56
  writeUInt24(value) {
77
57
  this.ensureCapacity(3);
@@ -82,10 +62,9 @@ export class BufferWriter {
82
62
  return this;
83
63
  }
84
64
  /**
85
- * Writes one big-endian unsigned 32-bit integer and advances the write position by 4.
65
+ * Write an unsigned 32-bit big-endian integer.
86
66
  *
87
- * @param {number} value - 32-bit value to write.
88
- * @returns {this} This instance for chaining.
67
+ * @param {number} value - Value to write.
89
68
  */
90
69
  writeUInt32(value) {
91
70
  this.ensureCapacity(4);
@@ -94,10 +73,9 @@ export class BufferWriter {
94
73
  return this;
95
74
  }
96
75
  /**
97
- * Appends raw bytes from `data` and advances the write position accordingly.
76
+ * Write raw bytes into the buffer.
98
77
  *
99
- * @param {Buffer | Uint8Array} data - Data to write.
100
- * @returns {this} This instance for chaining.
78
+ * @param {Buffer | Uint8Array} data - Bytes to append.
101
79
  */
102
80
  writeBytes(data) {
103
81
  this.ensureCapacity(data.length);
@@ -111,12 +89,9 @@ export class BufferWriter {
111
89
  return this;
112
90
  }
113
91
  /**
114
- * Writes a length-prefixed byte vector using an 8-bit length prefix.
115
- * Equivalent to `writeUInt8(data.length)` followed by `writeBytes(data)`.
92
+ * Write a length-prefixed vector with a 1-byte length prefix.
116
93
  *
117
- * @param {Buffer | Uint8Array} data - Data to write (must be ≤ 255 bytes).
118
- * @returns {this} This instance for chaining.
119
- * @throws {RangeError} If `data.length` exceeds 255.
94
+ * @param {Buffer | Uint8Array} data - Data to write.
120
95
  */
121
96
  writeVector8(data) {
122
97
  if (data.length > 0xff) {
@@ -127,12 +102,9 @@ export class BufferWriter {
127
102
  return this;
128
103
  }
129
104
  /**
130
- * Writes a length-prefixed byte vector using a big-endian 16-bit length prefix.
131
- * Equivalent to `writeUInt16(data.length)` followed by `writeBytes(data)`.
105
+ * Write a length-prefixed vector with a 2-byte big-endian length prefix.
132
106
  *
133
- * @param {Buffer | Uint8Array} data - Data to write (must be ≤ 65 535 bytes).
134
- * @returns {this} This instance for chaining.
135
- * @throws {RangeError} If `data.length` exceeds 65 535.
107
+ * @param {Buffer | Uint8Array} data - Data to write.
136
108
  */
137
109
  writeVector16(data) {
138
110
  if (data.length > 0xffff) {
@@ -143,12 +115,9 @@ export class BufferWriter {
143
115
  return this;
144
116
  }
145
117
  /**
146
- * Writes a length-prefixed byte vector using a big-endian 24-bit length prefix.
147
- * Equivalent to `writeUInt24(data.length)` followed by `writeBytes(data)`.
118
+ * Write a length-prefixed vector with a 3-byte big-endian length prefix.
148
119
  *
149
- * @param {Buffer | Uint8Array} data - Data to write (must be ≤ 16 777 215 bytes).
150
- * @returns {this} This instance for chaining.
151
- * @throws {RangeError} If `data.length` exceeds 16 777 215.
120
+ * @param {Buffer | Uint8Array} data - Data to write.
152
121
  */
153
122
  writeVector24(data) {
154
123
  if (data.length > 0xffffff) {
@@ -159,13 +128,10 @@ export class BufferWriter {
159
128
  return this;
160
129
  }
161
130
  /**
162
- * Reserves `size` bytes at the current position without writing any data,
163
- * advances the cursor, and returns the byte offset of the reserved region.
164
- * Use this to write a length prefix, then later patch it with
165
- * {@link BufferWriter.patchUInt16} or {@link BufferWriter.patchUInt24}.
131
+ * Reserve space and return its offset for later patching.
166
132
  *
167
133
  * @param {number} size - Number of bytes to reserve.
168
- * @returns {number} Byte offset of the start of the reserved region.
134
+ * @returns {number} Starting offset of the reserved region.
169
135
  */
170
136
  reserve(size) {
171
137
  this.ensureCapacity(size);
@@ -174,21 +140,19 @@ export class BufferWriter {
174
140
  return offset;
175
141
  }
176
142
  /**
177
- * Overwrites a previously reserved 16-bit slot with `value` in big-endian byte order.
178
- * Does not advance the write cursor.
143
+ * Overwrite a previously reserved 16-bit value.
179
144
  *
180
- * @param {number} offset - Byte offset returned by {@link BufferWriter.reserve}.
181
- * @param {number} value - 16-bit value to patch in.
145
+ * @param {number} offset - Byte offset to patch.
146
+ * @param {number} value - New 16-bit value.
182
147
  */
183
148
  patchUInt16(offset, value) {
184
149
  this._buf.writeUInt16BE(value, offset);
185
150
  }
186
151
  /**
187
- * Overwrites a previously reserved 24-bit slot with `value` in big-endian byte order.
188
- * Does not advance the write cursor.
152
+ * Overwrite a previously reserved 24-bit value.
189
153
  *
190
- * @param {number} offset - Byte offset returned by {@link BufferWriter.reserve}.
191
- * @param {number} value - 24-bit value to patch in.
154
+ * @param {number} offset - Byte offset to patch.
155
+ * @param {number} value - New 24-bit value.
192
156
  */
193
157
  patchUInt24(offset, value) {
194
158
  this._buf[offset] = (value >>> 16) & 0xff;
@@ -1 +1 @@
1
- {"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../../src/utils/buffer-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../../src/utils/buffer-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Supported request body compression encodings. */
2
+ export type RequestEncoding = "gzip" | "deflate" | "br";
3
+ /**
4
+ * Compress a request body buffer with the specified encoding.
5
+ *
6
+ * @param {Buffer} body - Uncompressed body bytes.
7
+ * @param {RequestEncoding} encoding - Compression algorithm.
8
+ * @returns {Promise<Buffer>} Compressed buffer.
9
+ */
10
+ export declare function compressBody(body: Buffer, encoding: RequestEncoding): Promise<Buffer>;
11
+ /**
12
+ * Determine whether a body is large enough to benefit from compression.
13
+ *
14
+ * @param {number} bodySize - Body size in bytes.
15
+ * @returns {boolean} `true` if the body meets the minimum threshold.
16
+ */
17
+ export declare function shouldCompress(bodySize: number): boolean;
18
+ //# sourceMappingURL=compression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/utils/compression.ts"],"names":[],"mappings":"AAOA,oDAAoD;AACpD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAExD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,34 @@
1
+ import * as zlib from "node:zlib";
2
+ import { promisify } from "node:util";
3
+ const gzipAsync = promisify(zlib.gzip);
4
+ const deflateAsync = promisify(zlib.deflate);
5
+ const brotliCompressAsync = promisify(zlib.brotliCompress);
6
+ /**
7
+ * Compress a request body buffer with the specified encoding.
8
+ *
9
+ * @param {Buffer} body - Uncompressed body bytes.
10
+ * @param {RequestEncoding} encoding - Compression algorithm.
11
+ * @returns {Promise<Buffer>} Compressed buffer.
12
+ */
13
+ export async function compressBody(body, encoding) {
14
+ switch (encoding) {
15
+ case "gzip":
16
+ return gzipAsync(body);
17
+ case "deflate":
18
+ return deflateAsync(body);
19
+ case "br":
20
+ return brotliCompressAsync(body);
21
+ default:
22
+ return body;
23
+ }
24
+ }
25
+ /**
26
+ * Determine whether a body is large enough to benefit from compression.
27
+ *
28
+ * @param {number} bodySize - Body size in bytes.
29
+ * @returns {boolean} `true` if the body meets the minimum threshold.
30
+ */
31
+ export function shouldCompress(bodySize) {
32
+ return bodySize >= 1024;
33
+ }
34
+ //# sourceMappingURL=compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.js","sourceRoot":"","sources":["../../src/utils/compression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAM,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAK3D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,QAAyB;IACxE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,IAAI,CAAoB,CAAC;QAC5C,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,IAAI,CAAoB,CAAC;QAC/C,KAAK,IAAI;YACP,OAAO,mBAAmB,CAAC,IAAI,CAAoB,CAAC;QACtD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,97 @@
1
+ /** Stored compression dictionary with associated metadata. */
2
+ export interface CompressionDictionary {
3
+ /** SHA-256 hash of the dictionary data in structured field format. */
4
+ hash: string;
5
+ /** URL from which the dictionary was fetched. */
6
+ url: string;
7
+ /** Raw dictionary bytes. */
8
+ data: Buffer;
9
+ /** Timestamp (ms since epoch) when the dictionary was stored. */
10
+ storedAt: number;
11
+ /** URL match pattern from the `Use-As-Dictionary` header. */
12
+ matchPattern?: string;
13
+ /** Expiry timestamp (ms since epoch). */
14
+ expiresAt?: number;
15
+ }
16
+ /** Configuration for the compression dictionary store. */
17
+ export interface DictionaryConfig {
18
+ /** Maximum number of dictionaries to cache. */
19
+ maxEntries?: number;
20
+ /** Maximum individual dictionary size in bytes. */
21
+ maxDictionarySize?: number;
22
+ }
23
+ /**
24
+ * Parse a `Use-As-Dictionary` response header.
25
+ *
26
+ * @param {string} header - Raw header value.
27
+ * @returns {{ match?: string; matchDest?: string[]; id?: string } | null} Parsed fields, or `null` if the header is empty.
28
+ */
29
+ export declare function parseUseAsDictionary(header: string): {
30
+ match?: string;
31
+ matchDest?: string[];
32
+ id?: string;
33
+ } | null;
34
+ /**
35
+ * Compute the SHA-256 structured hash of dictionary data.
36
+ *
37
+ * @param {Buffer} data - Raw dictionary bytes.
38
+ * @returns {string} Hash string in structured field byte-sequence format.
39
+ */
40
+ export declare function computeDictionaryHash(data: Buffer): string;
41
+ /**
42
+ * Build an `Available-Dictionary` request header value.
43
+ *
44
+ * @param {string} hash - Dictionary hash.
45
+ * @returns {string} Header value string.
46
+ */
47
+ export declare function buildAvailableDictionaryHeader(hash: string): string;
48
+ /**
49
+ * Append dictionary-based encodings to an `Accept-Encoding` header.
50
+ *
51
+ * @param {string} [existingEncoding] - Current `Accept-Encoding` value.
52
+ * @returns {string} Updated encoding string with `dcb` and `dcz` appended.
53
+ */
54
+ export declare function buildDictionaryAcceptEncoding(existingEncoding?: string): string;
55
+ /** Cache of compression dictionaries for shared dictionary transport. */
56
+ export declare class DictionaryStore {
57
+ private readonly dictionaries;
58
+ private readonly maxEntries;
59
+ private readonly maxDictionarySize;
60
+ /**
61
+ * Create a new dictionary store.
62
+ *
63
+ * @param {DictionaryConfig} [config] - Cache size and dictionary size limits.
64
+ */
65
+ constructor(config?: DictionaryConfig);
66
+ /**
67
+ * Store a dictionary response.
68
+ *
69
+ * @param {string} url - URL the dictionary was fetched from.
70
+ * @param {Buffer} data - Raw dictionary bytes.
71
+ * @param {{ match?: string; id?: string }} [metadata] - Match pattern and ID from the response header.
72
+ * @param {number} [maxAge] - Maximum age in seconds.
73
+ */
74
+ store(url: string, data: Buffer, metadata?: {
75
+ match?: string;
76
+ id?: string;
77
+ }, maxAge?: number): void;
78
+ /**
79
+ * Find a dictionary whose match pattern covers the given request URL.
80
+ *
81
+ * @param {string} requestUrl - URL being requested.
82
+ * @returns {CompressionDictionary | undefined} Matching dictionary, or `undefined` if none found.
83
+ */
84
+ findForUrl(requestUrl: string): CompressionDictionary | undefined;
85
+ /**
86
+ * Retrieve a dictionary by its hash.
87
+ *
88
+ * @param {string} hash - Dictionary hash string.
89
+ * @returns {CompressionDictionary | undefined} Dictionary entry, or `undefined` if not found.
90
+ */
91
+ getByHash(hash: string): CompressionDictionary | undefined;
92
+ /** Number of dictionaries currently stored. */
93
+ get size(): number;
94
+ /** Remove all stored dictionaries. */
95
+ clear(): void;
96
+ }
97
+ //# sourceMappingURL=dictionary-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dictionary-transport.d.ts","sourceRoot":"","sources":["../../src/utils/dictionary-transport.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CA2BP;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/E;AAED,yEAAyE;AACzE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4C;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAE3C;;;;OAIG;gBACS,MAAM,CAAC,EAAE,gBAAgB;IAKrC;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IA2BnG;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAmBjE;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAI1D,+CAA+C;IAC/C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,sCAAsC;IACtC,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,171 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * Parse a `Use-As-Dictionary` response header.
4
+ *
5
+ * @param {string} header - Raw header value.
6
+ * @returns {{ match?: string; matchDest?: string[]; id?: string } | null} Parsed fields, or `null` if the header is empty.
7
+ */
8
+ export function parseUseAsDictionary(header) {
9
+ if (!header)
10
+ return null;
11
+ const result = {};
12
+ const matchRegex = /match="([^"]+)"/;
13
+ const matchMatch = header.match(matchRegex);
14
+ if (matchMatch) {
15
+ result.match = matchMatch[1];
16
+ }
17
+ const destRegex = /match-dest=\(([^)]*)\)/;
18
+ const destMatch = header.match(destRegex);
19
+ if (destMatch) {
20
+ result.matchDest = destMatch[1]
21
+ .split(/\s+/)
22
+ .map((s) => s.replace(/"/g, ""))
23
+ .filter(Boolean);
24
+ }
25
+ const idRegex = /id="([^"]+)"/;
26
+ const idMatch = header.match(idRegex);
27
+ if (idMatch) {
28
+ result.id = idMatch[1];
29
+ }
30
+ return result;
31
+ }
32
+ /**
33
+ * Compute the SHA-256 structured hash of dictionary data.
34
+ *
35
+ * @param {Buffer} data - Raw dictionary bytes.
36
+ * @returns {string} Hash string in structured field byte-sequence format.
37
+ */
38
+ export function computeDictionaryHash(data) {
39
+ const hash = createHash("sha256").update(data).digest("base64");
40
+ return `:${hash}:`;
41
+ }
42
+ /**
43
+ * Build an `Available-Dictionary` request header value.
44
+ *
45
+ * @param {string} hash - Dictionary hash.
46
+ * @returns {string} Header value string.
47
+ */
48
+ export function buildAvailableDictionaryHeader(hash) {
49
+ return hash;
50
+ }
51
+ /**
52
+ * Append dictionary-based encodings to an `Accept-Encoding` header.
53
+ *
54
+ * @param {string} [existingEncoding] - Current `Accept-Encoding` value.
55
+ * @returns {string} Updated encoding string with `dcb` and `dcz` appended.
56
+ */
57
+ export function buildDictionaryAcceptEncoding(existingEncoding) {
58
+ const base = existingEncoding ?? "gzip, deflate, br";
59
+ const encodings = base.split(",").map((s) => s.trim());
60
+ if (!encodings.includes("dcb"))
61
+ encodings.push("dcb");
62
+ if (!encodings.includes("dcz"))
63
+ encodings.push("dcz");
64
+ return encodings.join(", ");
65
+ }
66
+ /** Cache of compression dictionaries for shared dictionary transport. */
67
+ export class DictionaryStore {
68
+ dictionaries = new Map();
69
+ maxEntries;
70
+ maxDictionarySize;
71
+ /**
72
+ * Create a new dictionary store.
73
+ *
74
+ * @param {DictionaryConfig} [config] - Cache size and dictionary size limits.
75
+ */
76
+ constructor(config) {
77
+ this.maxEntries = config?.maxEntries ?? 50;
78
+ this.maxDictionarySize = config?.maxDictionarySize ?? 10 * 1024 * 1024;
79
+ }
80
+ /**
81
+ * Store a dictionary response.
82
+ *
83
+ * @param {string} url - URL the dictionary was fetched from.
84
+ * @param {Buffer} data - Raw dictionary bytes.
85
+ * @param {{ match?: string; id?: string }} [metadata] - Match pattern and ID from the response header.
86
+ * @param {number} [maxAge] - Maximum age in seconds.
87
+ */
88
+ store(url, data, metadata, maxAge) {
89
+ if (data.length > this.maxDictionarySize)
90
+ return;
91
+ if (this.dictionaries.size >= this.maxEntries) {
92
+ let oldest;
93
+ let oldestTime = Infinity;
94
+ for (const [key, entry] of this.dictionaries) {
95
+ if (entry.storedAt < oldestTime) {
96
+ oldestTime = entry.storedAt;
97
+ oldest = key;
98
+ }
99
+ }
100
+ if (oldest)
101
+ this.dictionaries.delete(oldest);
102
+ }
103
+ const hash = computeDictionaryHash(data);
104
+ const now = Date.now();
105
+ this.dictionaries.set(hash, {
106
+ hash,
107
+ url,
108
+ data,
109
+ storedAt: now,
110
+ matchPattern: metadata?.match,
111
+ expiresAt: maxAge ? now + maxAge * 1000 : undefined,
112
+ });
113
+ }
114
+ /**
115
+ * Find a dictionary whose match pattern covers the given request URL.
116
+ *
117
+ * @param {string} requestUrl - URL being requested.
118
+ * @returns {CompressionDictionary | undefined} Matching dictionary, or `undefined` if none found.
119
+ */
120
+ findForUrl(requestUrl) {
121
+ const now = Date.now();
122
+ for (const dict of this.dictionaries.values()) {
123
+ if (dict.expiresAt && dict.expiresAt < now) {
124
+ this.dictionaries.delete(dict.hash);
125
+ continue;
126
+ }
127
+ if (dict.matchPattern) {
128
+ if (matchesPattern(requestUrl, dict.matchPattern, dict.url)) {
129
+ return dict;
130
+ }
131
+ }
132
+ }
133
+ return undefined;
134
+ }
135
+ /**
136
+ * Retrieve a dictionary by its hash.
137
+ *
138
+ * @param {string} hash - Dictionary hash string.
139
+ * @returns {CompressionDictionary | undefined} Dictionary entry, or `undefined` if not found.
140
+ */
141
+ getByHash(hash) {
142
+ return this.dictionaries.get(hash);
143
+ }
144
+ /** Number of dictionaries currently stored. */
145
+ get size() {
146
+ return this.dictionaries.size;
147
+ }
148
+ /** Remove all stored dictionaries. */
149
+ clear() {
150
+ this.dictionaries.clear();
151
+ }
152
+ }
153
+ function matchesPattern(requestUrl, pattern, dictionaryUrl) {
154
+ try {
155
+ const dictBase = new URL(dictionaryUrl);
156
+ const reqUrl = new URL(requestUrl);
157
+ if (reqUrl.origin !== dictBase.origin)
158
+ return false;
159
+ if (pattern === "*" || pattern === "/*")
160
+ return true;
161
+ if (pattern.endsWith("*")) {
162
+ const prefix = pattern.slice(0, -1);
163
+ return reqUrl.pathname.startsWith(prefix);
164
+ }
165
+ return reqUrl.pathname === pattern;
166
+ }
167
+ catch {
168
+ return false;
169
+ }
170
+ }
171
+ //# sourceMappingURL=dictionary-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dictionary-transport.js","sourceRoot":"","sources":["../../src/utils/dictionary-transport.ts"],"names":[],"mappings":"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"}
@@ -1,44 +1,28 @@
1
1
  import { Transform } from "node:stream";
2
- /**
3
- * `true` when the current Node.js runtime provides native Zstandard
4
- * decompression support (`zlib.zstdDecompress`). `false` on older Node.js
5
- * versions that lack the API.
6
- */
2
+ /** Whether the current Node.js build supports zstd decompression. */
7
3
  export declare const supportsZstd: boolean;
8
4
  /**
9
- * Decompresses a response body buffer using the algorithm indicated by
10
- * `contentEncoding`. Supports `gzip`, `x-gzip`, `deflate`, `br` (Brotli),
11
- * `zstd` (when available), and `identity`. Unrecognized encodings are
12
- * returned as-is.
5
+ * Decompress a response body according to `Content-Encoding` layers.
13
6
  *
14
- * @param {Buffer} body - Raw compressed body bytes.
15
- * @param {string | undefined} contentEncoding - Value of the `Content-Encoding` header.
16
- * @returns {Promise<Buffer>} Decompressed body bytes.
7
+ * @param {Buffer} body - Compressed body bytes.
8
+ * @param {string | undefined} contentEncoding - Comma-separated encoding list.
9
+ * @returns {Promise<Buffer>} Decompressed buffer.
17
10
  */
18
11
  export declare function decompressBody(body: Buffer, contentEncoding: string | undefined): Promise<Buffer>;
19
12
  /**
20
- * Creates a Node.js `Transform` stream that decompresses data on-the-fly
21
- * using the algorithm indicated by `contentEncoding`. Returns `null` when
22
- * no transform is needed (unknown or `identity` encoding).
13
+ * Create a streaming decompressor for the given `Content-Encoding`.
23
14
  *
24
- * @param {string | undefined} contentEncoding - Value of the `Content-Encoding` header.
25
- * @returns {Transform | null} Decompressor stream, or `null` if no decompression is required.
15
+ * @param {string | undefined} contentEncoding - Comma-separated encoding list.
16
+ * @returns {Transform | null} Transform stream, or `null` if no decompression is needed.
26
17
  */
27
18
  export declare function createDecompressStream(contentEncoding: string | undefined): Transform | null;
28
- /**
29
- * Returns the default `Accept-Encoding` header value supported by this
30
- * Node.js runtime. Includes `zstd` when Zstandard is available.
31
- *
32
- * @returns {string} E.g. `"gzip, deflate, br, zstd"` or `"gzip, deflate, br"`.
33
- */
19
+ /** Return the default `Accept-Encoding` header value for this runtime. */
34
20
  export declare function defaultAcceptEncoding(): string;
35
21
  /**
36
- * Filters `zstd` from a caller-supplied `Accept-Encoding` value when the
37
- * current runtime does not support Zstandard decompression. Otherwise returns
38
- * the value unchanged.
22
+ * Strip unsupported encodings (e.g. `zstd`) from an `Accept-Encoding` value.
39
23
  *
40
- * @param {string} value - Caller-supplied `Accept-Encoding` header value.
41
- * @returns {string} Sanitized encoding list compatible with the runtime.
24
+ * @param {string} value - Original `Accept-Encoding` header value.
25
+ * @returns {string} Sanitized header value.
42
26
  */
43
27
  export declare function sanitizeAcceptEncoding(value: string): string;
44
28
  //# sourceMappingURL=encoding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AASvD;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,OAAsC,CAAC;AAElE;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BvG;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CA8B5F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D"}
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,qEAAqE;AACrE,eAAO,MAAM,YAAY,EAAE,OAAsC,CAAC;AAwClE;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAWvG;AA2BD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CA0C5F;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D"}