nlcurl 0.7.0 → 0.9.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 +149 -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 +75 -37
  15. package/dist/cache/store.d.ts.map +1 -1
  16. package/dist/cache/store.js +217 -85
  17. package/dist/cache/store.js.map +1 -1
  18. package/dist/cache/types.d.ts +10 -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 +41 -40
  33. package/dist/cookies/jar.d.ts.map +1 -1
  34. package/dist/cookies/jar.js +65 -42
  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 +23 -15
  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 +61 -0
  47. package/dist/core/auth.d.ts.map +1 -0
  48. package/dist/core/auth.js +159 -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 +33 -113
  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 +136 -77
  67. package/dist/core/session.js.map +1 -1
  68. package/dist/core/validation.d.ts +58 -43
  69. package/dist/core/validation.d.ts.map +1 -1
  70. package/dist/core/validation.js +141 -56
  71. package/dist/core/validation.js.map +1 -1
  72. package/dist/dns/cache.d.ts +65 -0
  73. package/dist/dns/cache.d.ts.map +1 -0
  74. package/dist/dns/cache.js +119 -0
  75. package/dist/dns/cache.js.map +1 -0
  76. package/dist/dns/codec.d.ts +29 -19
  77. package/dist/dns/codec.d.ts.map +1 -1
  78. package/dist/dns/codec.js +73 -39
  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 +47 -48
  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 +166 -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 +81 -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 +27 -52
  145. package/dist/http/alt-svc.d.ts.map +1 -1
  146. package/dist/http/alt-svc.js +17 -67
  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 +21 -17
  161. package/dist/http/h1/encoder.d.ts.map +1 -1
  162. package/dist/http/h1/encoder.js +56 -20
  163. package/dist/http/h1/encoder.js.map +1 -1
  164. package/dist/http/h1/parser.d.ts +23 -59
  165. package/dist/http/h1/parser.d.ts.map +1 -1
  166. package/dist/http/h1/parser.js +61 -55
  167. package/dist/http/h1/parser.js.map +1 -1
  168. package/dist/http/h2/client.d.ts +23 -59
  169. package/dist/http/h2/client.d.ts.map +1 -1
  170. package/dist/http/h2/client.js +107 -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 +20 -36
  177. package/dist/http/h2/hpack.d.ts.map +1 -1
  178. package/dist/http/h2/hpack.js +41 -36
  179. package/dist/http/h2/hpack.js.map +1 -1
  180. package/dist/http/negotiator.d.ts +25 -38
  181. package/dist/http/negotiator.d.ts.map +1 -1
  182. package/dist/http/negotiator.js +17 -38
  183. package/dist/http/negotiator.js.map +1 -1
  184. package/dist/http/pool.d.ts +34 -64
  185. package/dist/http/pool.d.ts.map +1 -1
  186. package/dist/http/pool.js +22 -41
  187. package/dist/http/pool.js.map +1 -1
  188. package/dist/http/resumable-upload.d.ts +76 -0
  189. package/dist/http/resumable-upload.d.ts.map +1 -0
  190. package/dist/http/resumable-upload.js +104 -0
  191. package/dist/http/resumable-upload.js.map +1 -0
  192. package/dist/http/trailers.d.ts +29 -0
  193. package/dist/http/trailers.d.ts.map +1 -0
  194. package/dist/http/trailers.js +57 -0
  195. package/dist/http/trailers.js.map +1 -0
  196. package/dist/index.d.ts +24 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +24 -3
  199. package/dist/index.js.map +1 -1
  200. package/dist/middleware/circuit-breaker.d.ts +44 -0
  201. package/dist/middleware/circuit-breaker.d.ts.map +1 -0
  202. package/dist/middleware/circuit-breaker.js +96 -0
  203. package/dist/middleware/circuit-breaker.js.map +1 -0
  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 +129 -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 +8 -10
  235. package/dist/proxy/socks.js.map +1 -1
  236. package/dist/sse/parser.d.ts +16 -37
  237. package/dist/sse/parser.d.ts.map +1 -1
  238. package/dist/sse/parser.js +31 -28
  239. package/dist/sse/parser.js.map +1 -1
  240. package/dist/tls/constants.d.ts +21 -72
  241. package/dist/tls/constants.d.ts.map +1 -1
  242. package/dist/tls/constants.js +21 -72
  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 +41 -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 +26 -45
  277. package/dist/tls/stealth/client-hello.d.ts.map +1 -1
  278. package/dist/tls/stealth/client-hello.js +15 -31
  279. package/dist/tls/stealth/client-hello.js.map +1 -1
  280. package/dist/tls/stealth/engine.d.ts +10 -15
  281. package/dist/tls/stealth/engine.d.ts.map +1 -1
  282. package/dist/tls/stealth/engine.js +98 -18
  283. package/dist/tls/stealth/engine.js.map +1 -1
  284. package/dist/tls/stealth/handshake.d.ts +32 -31
  285. package/dist/tls/stealth/handshake.d.ts.map +1 -1
  286. package/dist/tls/stealth/handshake.js +74 -47
  287. package/dist/tls/stealth/handshake.js.map +1 -1
  288. package/dist/tls/stealth/key-schedule.d.ts +81 -86
  289. package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
  290. package/dist/tls/stealth/key-schedule.js +70 -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 +10 -2
  299. package/dist/tls/stealth/tls12-handshake.js.map +1 -1
  300. package/dist/tls/types.d.ts +46 -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 +35 -53
  339. package/dist/ws/client.d.ts.map +1 -1
  340. package/dist/ws/client.js +96 -38
  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 +26 -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 +2 -2
  351. package/dist/http/h3/detection.d.ts +0 -17
  352. package/dist/http/h3/detection.d.ts.map +0 -1
  353. package/dist/http/h3/detection.js +0 -59
  354. package/dist/http/h3/detection.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,41 +1,56 @@
1
- /**
2
- * Public API entry point for the NLcURL library. Re-exports all types, classes,
3
- * and functions that form the stable public surface of the package.
4
- *
5
- * @module nlcurl
6
- */
7
1
  export type { HttpMethod, NLcURLRequest, NLcURLSessionConfig, RequestBody, RequestTimings, RetryConfig, TimeoutConfig, ProgressEvent, ProgressCallback, ServerSentEvent } from "./core/request.js";
8
2
  export { NLcURLResponse } from "./core/response.js";
9
3
  export type { ResponseMeta } from "./core/response.js";
10
4
  export { NLcURLError, TLSError, HTTPError, TimeoutError, ProxyError, AbortError, ConnectionError, ProtocolError } from "./core/errors.js";
5
+ export { validateUrlSafety } from "./core/validation.js";
11
6
  export { NLcURLSession, type RequestOptions } from "./core/session.js";
12
7
  export { createSession, request, get, post, put, patch, del, head } from "./core/client.js";
8
+ export { buildAuthHeader, parseAuthenticateScheme, type AuthConfig, type DigestChallenge as CoreDigestChallenge } from "./core/auth.js";
13
9
  export { getProfile, listProfiles, DEFAULT_PROFILE } from "./fingerprints/database.js";
14
10
  export type { BrowserProfile, TLSProfile, H2Profile, HeaderProfile } from "./fingerprints/types.js";
15
11
  export type { RequestInterceptor, ResponseInterceptor } from "./middleware/interceptor.js";
16
12
  export type { RateLimitConfig } from "./middleware/rate-limiter.js";
13
+ export { CircuitBreaker, CircuitState, type CircuitBreakerConfig } from "./middleware/circuit-breaker.js";
14
+ export { parseRetryAfter, getRetryAfterMs } from "./middleware/retry-after.js";
17
15
  export type { Logger, LogLevel, LogBindings } from "./utils/logger.js";
18
- export { ConsoleLogger, SILENT_LOGGER, setDefaultLogger, getDefaultLogger } from "./utils/logger.js";
16
+ export { ConsoleLogger, JsonLogger, SILENT_LOGGER, setDefaultLogger, getDefaultLogger } from "./utils/logger.js";
19
17
  export { CookieJar } from "./cookies/jar.js";
20
18
  export { isPublicSuffix, getRegistrableDomain } from "./cookies/public-suffix.js";
21
19
  export { FormData, type FormFile, type FormValue } from "./http/form-data.js";
22
20
  export type { TLSOptions } from "./tls/types.js";
21
+ export { SAFE_DEFAULT_CIPHERS } from "./tls/constants.js";
23
22
  export { WebSocketClient, type WebSocketOptions, type WebSocketEvents } from "./ws/client.js";
24
23
  export { ja3Hash, ja3String } from "./fingerprints/ja3.js";
24
+ export { ja4Fingerprint, ja4aSection } from "./fingerprints/ja4.js";
25
25
  export { akamaiFingerprint } from "./fingerprints/akamai.js";
26
26
  export { TLSSessionCache, type SessionTicketEntry, type SessionCacheOptions } from "./tls/session-cache.js";
27
+ export { setKeylogFile, getKeylogFile } from "./tls/keylog.js";
27
28
  export { resolveEnvProxy } from "./proxy/env-proxy.js";
28
29
  export { SSEParser, parseSSEStream } from "./sse/parser.js";
29
30
  export { PerMessageDeflate, type DeflateParams, buildDeflateOffer, parseDeflateResponse } from "./ws/permessage-deflate.js";
30
- export { isQuicAvailable } from "./http/h3/detection.js";
31
31
  export { CacheStore, parseCacheControl } from "./cache/store.js";
32
32
  export type { CacheConfig, CacheMode, CacheDirectives, CacheEntry } from "./cache/types.js";
33
33
  export { HSTSStore } from "./hsts/store.js";
34
34
  export type { HSTSConfig, HSTSEntry, HSTSPreloadEntry } from "./hsts/types.js";
35
35
  export { DoHResolver } from "./dns/doh-resolver.js";
36
+ export { DNSCache, type DNSCacheConfig, type DNSCacheEntry } from "./dns/cache.js";
36
37
  export { HTTPSRRResolver, type HTTPSRRResult } from "./dns/https-rr.js";
37
38
  export type { DoHConfig, DNSConfig, DNSRecord, SVCBRecord, ResolvedAddress } from "./dns/types.js";
38
39
  export { RTYPE, SvcParamKey } from "./dns/types.js";
39
40
  export { AltSvcStore, type AltSvcEntry } from "./http/alt-svc.js";
40
- export { parseECHConfigList, generateGreaseECH, type ECHConfig, type ECHParameters, type ECHOptions } from "./tls/ech.js";
41
+ export { parseLinkHeader, type EarlyHint, type EarlyHintsCallback } from "./http/early-hints.js";
42
+ export { compressBody, shouldCompress, type RequestEncoding } from "./utils/compression.js";
43
+ export { parseECHConfigList, generateGreaseECH, parseECHRetryConfigs, shouldRetryECH, type ECHConfig, type ECHParameters, type ECHOptions } from "./tls/ech.js";
44
+ export { parseOCSPResponse, isOCSPValid, validateOCSPStapling, OCSPResponseStatus, OCSPCertStatus, type OCSPResult } from "./tls/ocsp.js";
45
+ export { parseSCTList, validateSCTs, extractSCTsFromSocket, SCTVersion, SCTHashAlgorithm, SCTSignatureAlgorithm, type SCT, type SCTValidationResult } from "./tls/ct.js";
46
+ export { canSendEarlyData, prepareEarlyData, checkEarlyDataAccepted, type EarlyDataConfig, type EarlyDataResult } from "./tls/early-data.js";
47
+ export { isValidTrailerField, serializeTrailers, parseTrailers, buildTrailerHeader } from "./http/trailers.js";
48
+ export { buildUploadCreationHeaders, buildUploadResumeHeaders, buildUploadOffsetHeaders, parseUploadOffset, isUploadComplete, splitIntoChunks, parseUploadUrl, type UploadSession, type ResumableUploadConfig } from "./http/resumable-upload.js";
49
+ export { RangeCache, parseContentRange, parseRangeHeader, type ContentRange, type RangeSegment, type RangeCacheEntry } from "./cache/range.js";
50
+ export { parseNoVarySearch, urlsMatchWithNoVarySearch, normalizeUrlForCache, type NoVarySearchDirective } from "./cache/no-vary-search.js";
51
+ export { CacheGroupStore, parseCacheGroups, type CacheGroup } from "./cache/groups.js";
52
+ export { DictionaryStore, parseUseAsDictionary, computeDictionaryHash, buildAvailableDictionaryHeader, buildDictionaryAcceptEncoding, type CompressionDictionary, type DictionaryConfig } from "./utils/dictionary-transport.js";
53
+ export { isTFOSupported, buildTFOSocketOptions, getTFOStatus, type TFOOptions } from "./utils/tcp-fast-open.js";
54
+ export { DoTResolver, DOT_SERVERS, type DoTConfig } from "./dns/dot-resolver.js";
55
+ export { parseProxyAuthenticate, parseDigestChallenge, buildDigestAuth, buildBasicProxyAuth, buildProxyAuthorization, type ProxyAuthConfig, type ProxyAuthScheme, type DigestChallenge } from "./proxy/auth.js";
41
56
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,25 +1,46 @@
1
1
  export { NLcURLResponse } from "./core/response.js";
2
2
  export { NLcURLError, TLSError, HTTPError, TimeoutError, ProxyError, AbortError, ConnectionError, ProtocolError } from "./core/errors.js";
3
+ export { validateUrlSafety } from "./core/validation.js";
3
4
  export { NLcURLSession } from "./core/session.js";
4
5
  export { createSession, request, get, post, put, patch, del, head } from "./core/client.js";
6
+ export { buildAuthHeader, parseAuthenticateScheme } from "./core/auth.js";
5
7
  export { getProfile, listProfiles, DEFAULT_PROFILE } from "./fingerprints/database.js";
6
- export { ConsoleLogger, SILENT_LOGGER, setDefaultLogger, getDefaultLogger } from "./utils/logger.js";
8
+ export { CircuitBreaker, CircuitState } from "./middleware/circuit-breaker.js";
9
+ export { parseRetryAfter, getRetryAfterMs } from "./middleware/retry-after.js";
10
+ export { ConsoleLogger, JsonLogger, SILENT_LOGGER, setDefaultLogger, getDefaultLogger } from "./utils/logger.js";
7
11
  export { CookieJar } from "./cookies/jar.js";
8
12
  export { isPublicSuffix, getRegistrableDomain } from "./cookies/public-suffix.js";
9
13
  export { FormData } from "./http/form-data.js";
14
+ export { SAFE_DEFAULT_CIPHERS } from "./tls/constants.js";
10
15
  export { WebSocketClient } from "./ws/client.js";
11
16
  export { ja3Hash, ja3String } from "./fingerprints/ja3.js";
17
+ export { ja4Fingerprint, ja4aSection } from "./fingerprints/ja4.js";
12
18
  export { akamaiFingerprint } from "./fingerprints/akamai.js";
13
19
  export { TLSSessionCache } from "./tls/session-cache.js";
20
+ export { setKeylogFile, getKeylogFile } from "./tls/keylog.js";
14
21
  export { resolveEnvProxy } from "./proxy/env-proxy.js";
15
22
  export { SSEParser, parseSSEStream } from "./sse/parser.js";
16
23
  export { PerMessageDeflate, buildDeflateOffer, parseDeflateResponse } from "./ws/permessage-deflate.js";
17
- export { isQuicAvailable } from "./http/h3/detection.js";
18
24
  export { CacheStore, parseCacheControl } from "./cache/store.js";
19
25
  export { HSTSStore } from "./hsts/store.js";
20
26
  export { DoHResolver } from "./dns/doh-resolver.js";
27
+ export { DNSCache } from "./dns/cache.js";
21
28
  export { HTTPSRRResolver } from "./dns/https-rr.js";
22
29
  export { RTYPE, SvcParamKey } from "./dns/types.js";
23
30
  export { AltSvcStore } from "./http/alt-svc.js";
24
- export { parseECHConfigList, generateGreaseECH } from "./tls/ech.js";
31
+ export { parseLinkHeader } from "./http/early-hints.js";
32
+ export { compressBody, shouldCompress } from "./utils/compression.js";
33
+ export { parseECHConfigList, generateGreaseECH, parseECHRetryConfigs, shouldRetryECH } from "./tls/ech.js";
34
+ export { parseOCSPResponse, isOCSPValid, validateOCSPStapling, OCSPResponseStatus, OCSPCertStatus } from "./tls/ocsp.js";
35
+ export { parseSCTList, validateSCTs, extractSCTsFromSocket, SCTVersion, SCTHashAlgorithm, SCTSignatureAlgorithm } from "./tls/ct.js";
36
+ export { canSendEarlyData, prepareEarlyData, checkEarlyDataAccepted } from "./tls/early-data.js";
37
+ export { isValidTrailerField, serializeTrailers, parseTrailers, buildTrailerHeader } from "./http/trailers.js";
38
+ export { buildUploadCreationHeaders, buildUploadResumeHeaders, buildUploadOffsetHeaders, parseUploadOffset, isUploadComplete, splitIntoChunks, parseUploadUrl } from "./http/resumable-upload.js";
39
+ export { RangeCache, parseContentRange, parseRangeHeader } from "./cache/range.js";
40
+ export { parseNoVarySearch, urlsMatchWithNoVarySearch, normalizeUrlForCache } from "./cache/no-vary-search.js";
41
+ export { CacheGroupStore, parseCacheGroups } from "./cache/groups.js";
42
+ export { DictionaryStore, parseUseAsDictionary, computeDictionaryHash, buildAvailableDictionaryHeader, buildDictionaryAcceptEncoding } from "./utils/dictionary-transport.js";
43
+ export { isTFOSupported, buildTFOSocketOptions, getTFOStatus } from "./utils/tcp-fast-open.js";
44
+ export { DoTResolver, DOT_SERVERS } from "./dns/dot-resolver.js";
45
+ export { parseProxyAuthenticate, parseDigestChallenge, buildDigestAuth, buildBasicProxyAuth, buildProxyAuthorization } from "./proxy/auth.js";
25
46
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE1I,OAAO,EAAE,aAAa,EAAuB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AASvF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAiC,MAAM,qBAAqB,CAAC;AAI9E,OAAO,EAAE,eAAe,EAA+C,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAqD,MAAM,wBAAwB,CAAC;AAE5G,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAsB,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE5H,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAuD,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /** Circuit breaker states. */
2
+ export declare const enum CircuitState {
3
+ CLOSED = 0,
4
+ OPEN = 1,
5
+ HALF_OPEN = 2
6
+ }
7
+ /** Configuration for the circuit breaker. */
8
+ export interface CircuitBreakerConfig {
9
+ /** Number of consecutive failures before opening the circuit. */
10
+ failureThreshold: number;
11
+ /** Time in ms the circuit stays open before allowing a probe request. */
12
+ resetTimeoutMs: number;
13
+ /** Number of successful probe requests to close the circuit (default: 1). */
14
+ successThreshold?: number;
15
+ /** Optional predicate to determine if a status code is a failure. */
16
+ isFailure?: (statusCode: number) => boolean;
17
+ }
18
+ /** Per-origin circuit breaker for preventing cascading failures. */
19
+ export declare class CircuitBreaker {
20
+ private readonly failureThreshold;
21
+ private readonly resetTimeoutMs;
22
+ private readonly successThreshold;
23
+ private readonly isFailure;
24
+ private readonly circuits;
25
+ constructor(config: CircuitBreakerConfig);
26
+ /**
27
+ * Check if a request to the given origin should be allowed.
28
+ * Throws if the circuit is open and not yet ready for a probe.
29
+ */
30
+ allowRequest(origin: string): void;
31
+ /** Record a successful request to the origin. */
32
+ recordSuccess(origin: string): void;
33
+ /** Record a failed request or a failure status code. */
34
+ recordFailure(origin: string): void;
35
+ /** Record a response and automatically classify as success/failure. */
36
+ recordResponse(origin: string, statusCode: number): void;
37
+ /** Get the current state of the circuit for an origin. */
38
+ getState(origin: string): CircuitState;
39
+ /** Reset a specific origin's circuit. */
40
+ reset(origin: string): void;
41
+ /** Reset all circuits. */
42
+ resetAll(): void;
43
+ }
44
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/middleware/circuit-breaker.ts"],"names":[],"mappings":"AAEA,8BAA8B;AAC9B,0BAAkB,YAAY;IAC5B,MAAM,IAAI;IACV,IAAI,IAAI;IACR,SAAS,IAAI;CACd;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED,oEAAoE;AACpE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;gBAEhD,MAAM,EAAE,oBAAoB;IAOxC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAclC,iDAAiD;IACjD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAenC,wDAAwD;IACxD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoBnC,uEAAuE;IACvE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQxD,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAItC,yCAAyC;IACzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3B,0BAA0B;IAC1B,QAAQ,IAAI,IAAI;CAGjB"}
@@ -0,0 +1,96 @@
1
+ import { NLcURLError } from "../core/errors.js";
2
+ /** Circuit breaker states. */
3
+ export var CircuitState;
4
+ (function (CircuitState) {
5
+ CircuitState[CircuitState["CLOSED"] = 0] = "CLOSED";
6
+ CircuitState[CircuitState["OPEN"] = 1] = "OPEN";
7
+ CircuitState[CircuitState["HALF_OPEN"] = 2] = "HALF_OPEN";
8
+ })(CircuitState || (CircuitState = {}));
9
+ /** Per-origin circuit breaker for preventing cascading failures. */
10
+ export class CircuitBreaker {
11
+ failureThreshold;
12
+ resetTimeoutMs;
13
+ successThreshold;
14
+ isFailure;
15
+ circuits = new Map();
16
+ constructor(config) {
17
+ this.failureThreshold = config.failureThreshold;
18
+ this.resetTimeoutMs = config.resetTimeoutMs;
19
+ this.successThreshold = config.successThreshold ?? 1;
20
+ this.isFailure = config.isFailure ?? ((s) => s >= 500);
21
+ }
22
+ /**
23
+ * Check if a request to the given origin should be allowed.
24
+ * Throws if the circuit is open and not yet ready for a probe.
25
+ */
26
+ allowRequest(origin) {
27
+ const entry = this.circuits.get(origin);
28
+ if (!entry)
29
+ return;
30
+ if (entry.state === CircuitState.OPEN) {
31
+ if (Date.now() >= entry.openedAt + this.resetTimeoutMs) {
32
+ entry.state = CircuitState.HALF_OPEN;
33
+ entry.halfOpenSuccesses = 0;
34
+ }
35
+ else {
36
+ throw new NLcURLError(`Circuit breaker open for ${origin} — failing fast`, "ERR_CIRCUIT_OPEN");
37
+ }
38
+ }
39
+ }
40
+ /** Record a successful request to the origin. */
41
+ recordSuccess(origin) {
42
+ const entry = this.circuits.get(origin);
43
+ if (!entry)
44
+ return;
45
+ if (entry.state === CircuitState.HALF_OPEN) {
46
+ entry.halfOpenSuccesses++;
47
+ if (entry.halfOpenSuccesses >= this.successThreshold) {
48
+ entry.state = CircuitState.CLOSED;
49
+ entry.consecutiveFailures = 0;
50
+ }
51
+ }
52
+ else if (entry.state === CircuitState.CLOSED) {
53
+ entry.consecutiveFailures = 0;
54
+ }
55
+ }
56
+ /** Record a failed request or a failure status code. */
57
+ recordFailure(origin) {
58
+ let entry = this.circuits.get(origin);
59
+ if (!entry) {
60
+ entry = { state: CircuitState.CLOSED, consecutiveFailures: 0, openedAt: 0, halfOpenSuccesses: 0 };
61
+ this.circuits.set(origin, entry);
62
+ }
63
+ if (entry.state === CircuitState.HALF_OPEN) {
64
+ entry.state = CircuitState.OPEN;
65
+ entry.openedAt = Date.now();
66
+ return;
67
+ }
68
+ entry.consecutiveFailures++;
69
+ if (entry.consecutiveFailures >= this.failureThreshold) {
70
+ entry.state = CircuitState.OPEN;
71
+ entry.openedAt = Date.now();
72
+ }
73
+ }
74
+ /** Record a response and automatically classify as success/failure. */
75
+ recordResponse(origin, statusCode) {
76
+ if (this.isFailure(statusCode)) {
77
+ this.recordFailure(origin);
78
+ }
79
+ else {
80
+ this.recordSuccess(origin);
81
+ }
82
+ }
83
+ /** Get the current state of the circuit for an origin. */
84
+ getState(origin) {
85
+ return this.circuits.get(origin)?.state ?? CircuitState.CLOSED;
86
+ }
87
+ /** Reset a specific origin's circuit. */
88
+ reset(origin) {
89
+ this.circuits.delete(origin);
90
+ }
91
+ /** Reset all circuits. */
92
+ resetAll() {
93
+ this.circuits.clear();
94
+ }
95
+ }
96
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/middleware/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -1,58 +1,39 @@
1
1
  import type { NLcURLRequest } from "../core/request.js";
2
2
  import { NLcURLResponse } from "../core/response.js";
3
- /**
4
- * A function that inspects and optionally transforms an outgoing request before
5
- * it is sent. May be synchronous or asynchronous.
6
- *
7
- * @callback RequestInterceptor
8
- * @param {NLcURLRequest} request - The outgoing request descriptor.
9
- * @returns {NLcURLRequest | Promise<NLcURLRequest>} The (potentially modified) request.
10
- */
3
+ /** Function that transforms a request before it is sent. */
11
4
  export type RequestInterceptor = (request: NLcURLRequest) => NLcURLRequest | Promise<NLcURLRequest>;
12
- /**
13
- * A function that inspects and optionally transforms an incoming response before
14
- * it is returned to the caller. May be synchronous or asynchronous.
15
- *
16
- * @callback ResponseInterceptor
17
- * @param {NLcURLResponse} response - The received response.
18
- * @returns {NLcURLResponse | Promise<NLcURLResponse>} The (potentially modified) response.
19
- */
5
+ /** Function that transforms a response after it is received. */
20
6
  export type ResponseInterceptor = (response: NLcURLResponse) => NLcURLResponse | Promise<NLcURLResponse>;
21
- /**
22
- * Maintains ordered lists of request and response interceptors and applies
23
- * them sequentially. Interceptors are invoked in the order they were added.
24
- */
7
+ /** Ordered chain of request and response interceptors. */
25
8
  export declare class InterceptorChain {
26
9
  private readonly requestInterceptors;
27
10
  private readonly responseInterceptors;
28
11
  /**
29
- * Registers a request interceptor. Interceptors are applied in registration order.
12
+ * Register a request interceptor.
30
13
  *
31
- * @param {RequestInterceptor} fn - Interceptor function to add.
14
+ * @param {RequestInterceptor} fn - Interceptor function.
32
15
  * @returns {this} This instance for chaining.
33
16
  */
34
17
  addRequestInterceptor(fn: RequestInterceptor): this;
35
18
  /**
36
- * Registers a response interceptor. Interceptors are applied in registration order.
19
+ * Register a response interceptor.
37
20
  *
38
- * @param {ResponseInterceptor} fn - Interceptor function to add.
21
+ * @param {ResponseInterceptor} fn - Interceptor function.
39
22
  * @returns {this} This instance for chaining.
40
23
  */
41
24
  addResponseInterceptor(fn: ResponseInterceptor): this;
42
25
  /**
43
- * Passes `request` through all registered request interceptors in order and
44
- * returns the final transformed request.
26
+ * Run all request interceptors in order.
45
27
  *
46
- * @param {NLcURLRequest} request - Originating request descriptor.
47
- * @returns {Promise<NLcURLRequest>} The request after all interceptors have run.
28
+ * @param {NLcURLRequest} request - Original request.
29
+ * @returns {Promise<NLcURLRequest>} Transformed request.
48
30
  */
49
31
  processRequest(request: NLcURLRequest): Promise<NLcURLRequest>;
50
32
  /**
51
- * Passes `response` through all registered response interceptors in order and
52
- * returns the final transformed response.
33
+ * Run all response interceptors in order.
53
34
  *
54
- * @param {NLcURLResponse} response - Received response.
55
- * @returns {Promise<NLcURLResponse>} The response after all interceptors have run.
35
+ * @param {NLcURLResponse} response - Original response.
36
+ * @returns {Promise<NLcURLResponse>} Transformed response.
56
37
  */
57
38
  processResponse(response: NLcURLResponse): Promise<NLcURLResponse>;
58
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/middleware/interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEpG;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEzG;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAElE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAKnD;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAKrD;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAQpE;;;;;;OAMG;IACG,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAOzE"}
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/middleware/interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAEpG,gEAAgE;AAChE,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEzG,0DAA0D;AAC1D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAElE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAKnD;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAKrD;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAQpE;;;;;OAKG;IACG,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAOzE"}
@@ -1,14 +1,11 @@
1
- /**
2
- * Maintains ordered lists of request and response interceptors and applies
3
- * them sequentially. Interceptors are invoked in the order they were added.
4
- */
1
+ /** Ordered chain of request and response interceptors. */
5
2
  export class InterceptorChain {
6
3
  requestInterceptors = [];
7
4
  responseInterceptors = [];
8
5
  /**
9
- * Registers a request interceptor. Interceptors are applied in registration order.
6
+ * Register a request interceptor.
10
7
  *
11
- * @param {RequestInterceptor} fn - Interceptor function to add.
8
+ * @param {RequestInterceptor} fn - Interceptor function.
12
9
  * @returns {this} This instance for chaining.
13
10
  */
14
11
  addRequestInterceptor(fn) {
@@ -16,9 +13,9 @@ export class InterceptorChain {
16
13
  return this;
17
14
  }
18
15
  /**
19
- * Registers a response interceptor. Interceptors are applied in registration order.
16
+ * Register a response interceptor.
20
17
  *
21
- * @param {ResponseInterceptor} fn - Interceptor function to add.
18
+ * @param {ResponseInterceptor} fn - Interceptor function.
22
19
  * @returns {this} This instance for chaining.
23
20
  */
24
21
  addResponseInterceptor(fn) {
@@ -26,11 +23,10 @@ export class InterceptorChain {
26
23
  return this;
27
24
  }
28
25
  /**
29
- * Passes `request` through all registered request interceptors in order and
30
- * returns the final transformed request.
26
+ * Run all request interceptors in order.
31
27
  *
32
- * @param {NLcURLRequest} request - Originating request descriptor.
33
- * @returns {Promise<NLcURLRequest>} The request after all interceptors have run.
28
+ * @param {NLcURLRequest} request - Original request.
29
+ * @returns {Promise<NLcURLRequest>} Transformed request.
34
30
  */
35
31
  async processRequest(request) {
36
32
  let req = request;
@@ -40,11 +36,10 @@ export class InterceptorChain {
40
36
  return req;
41
37
  }
42
38
  /**
43
- * Passes `response` through all registered response interceptors in order and
44
- * returns the final transformed response.
39
+ * Run all response interceptors in order.
45
40
  *
46
- * @param {NLcURLResponse} response - Received response.
47
- * @returns {Promise<NLcURLResponse>} The response after all interceptors have run.
41
+ * @param {NLcURLResponse} response - Original response.
42
+ * @returns {Promise<NLcURLResponse>} Transformed response.
48
43
  */
49
44
  async processResponse(response) {
50
45
  let resp = response;
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/middleware/interceptor.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACV,mBAAmB,GAAyB,EAAE,CAAC;IAC/C,oBAAoB,GAA0B,EAAE,CAAC;IAElE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAsB;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,EAAuB;QAC5C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,OAAsB;QACzC,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1C,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,QAAwB;QAC5C,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/middleware/interceptor.ts"],"names":[],"mappings":"AASA,0DAA0D;AAC1D,MAAM,OAAO,gBAAgB;IACV,mBAAmB,GAAyB,EAAE,CAAC;IAC/C,oBAAoB,GAA0B,EAAE,CAAC;IAElE;;;;;OAKG;IACH,qBAAqB,CAAC,EAAsB;QAC1C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,EAAuB;QAC5C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,OAAsB;QACzC,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1C,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,QAAwB;QAC5C,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,19 +1,11 @@
1
- /**
2
- * Configuration options for a token-bucket rate limiter.
3
- *
4
- * @typedef {Object} RateLimitConfig
5
- * @property {number} maxRequests - Maximum number of requests allowed per `windowMs` interval.
6
- * @property {number} windowMs - Duration of the rate-limiting window in milliseconds.
7
- */
1
+ /** Configuration for the token-bucket rate limiter. */
8
2
  export interface RateLimitConfig {
3
+ /** Maximum number of requests allowed per window. */
9
4
  maxRequests: number;
5
+ /** Window duration in milliseconds. */
10
6
  windowMs: number;
11
7
  }
12
- /**
13
- * Token-bucket rate limiter. Callers must call {@link RateLimiter.acquire} and
14
- * await the returned promise before sending each request. Requests that would
15
- * exceed the configured rate are queued and granted once the window refills.
16
- */
8
+ /** Token-bucket rate limiter for outgoing requests. */
17
9
  export declare class RateLimiter {
18
10
  private readonly maxRequests;
19
11
  private readonly windowMs;
@@ -21,16 +13,15 @@ export declare class RateLimiter {
21
13
  private lastRefill;
22
14
  private waitQueue;
23
15
  /**
24
- * Creates a new RateLimiter.
16
+ * Create a new rate limiter.
25
17
  *
26
- * @param {RateLimitConfig} config - Rate-limit parameters.
18
+ * @param {RateLimitConfig} config - Rate limit configuration.
27
19
  */
28
20
  constructor(config: RateLimitConfig);
29
21
  /**
30
- * Acquires a rate-limit token. Resolves immediately when a token is
31
- * available, or waits until the current window refills.
22
+ * Acquire a token, waiting if the rate limit has been reached.
32
23
  *
33
- * @returns {Promise<void>} Resolves once a token has been granted to the caller.
24
+ * @returns {Promise<void>} Promise that resolves when a token is available.
34
25
  */
35
26
  acquire(): Promise<void>;
36
27
  private drain;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAyB;IAE1C;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAQnC;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,MAAM;CAYf"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAEA,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,uDAAuD;AACvD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAyB;IAE1C;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAQnC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,MAAM;CAYf"}
@@ -1,9 +1,5 @@
1
1
  import { validateRateLimitConfig } from "../core/validation.js";
2
- /**
3
- * Token-bucket rate limiter. Callers must call {@link RateLimiter.acquire} and
4
- * await the returned promise before sending each request. Requests that would
5
- * exceed the configured rate are queued and granted once the window refills.
6
- */
2
+ /** Token-bucket rate limiter for outgoing requests. */
7
3
  export class RateLimiter {
8
4
  maxRequests;
9
5
  windowMs;
@@ -11,9 +7,9 @@ export class RateLimiter {
11
7
  lastRefill;
12
8
  waitQueue = [];
13
9
  /**
14
- * Creates a new RateLimiter.
10
+ * Create a new rate limiter.
15
11
  *
16
- * @param {RateLimitConfig} config - Rate-limit parameters.
12
+ * @param {RateLimitConfig} config - Rate limit configuration.
17
13
  */
18
14
  constructor(config) {
19
15
  validateRateLimitConfig(config);
@@ -23,10 +19,9 @@ export class RateLimiter {
23
19
  this.lastRefill = Date.now();
24
20
  }
25
21
  /**
26
- * Acquires a rate-limit token. Resolves immediately when a token is
27
- * available, or waits until the current window refills.
22
+ * Acquire a token, waiting if the rate limit has been reached.
28
23
  *
29
- * @returns {Promise<void>} Resolves once a token has been granted to the caller.
24
+ * @returns {Promise<void>} Promise that resolves when a token is available.
30
25
  */
31
26
  async acquire() {
32
27
  this.refill();
@@ -38,7 +33,9 @@ export class RateLimiter {
38
33
  this.waitQueue.push(resolve);
39
34
  const elapsed = Date.now() - this.lastRefill;
40
35
  const waitMs = Math.max(1, this.windowMs - elapsed);
41
- setTimeout(() => this.drain(), waitMs);
36
+ setTimeout(() => {
37
+ this.drain();
38
+ }, waitMs);
42
39
  });
43
40
  }
44
41
  drain() {
@@ -51,7 +48,9 @@ export class RateLimiter {
51
48
  if (this.waitQueue.length > 0) {
52
49
  const elapsed = Date.now() - this.lastRefill;
53
50
  const waitMs = Math.max(1, this.windowMs - elapsed);
54
- setTimeout(() => this.drain(), waitMs);
51
+ setTimeout(() => {
52
+ this.drain();
53
+ }, waitMs);
55
54
  }
56
55
  }
57
56
  refill() {
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAchE;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACL,WAAW,CAAS;IACpB,QAAQ,CAAS;IAC1B,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,SAAS,GAAsB,EAAE,CAAC;IAE1C;;;;OAIG;IACH,YAAY,MAAuB;QACjC,uBAAuB,CAAC,MAA4C,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;YACpD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAC;YACrC,IAAI,EAAE,CAAC;QACT,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;YACpD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QACtC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAUhE,uDAAuD;AACvD,MAAM,OAAO,WAAW;IACL,WAAW,CAAS;IACpB,QAAQ,CAAS;IAC1B,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,SAAS,GAAsB,EAAE,CAAC;IAE1C;;;;OAIG;IACH,YAAY,MAAuB;QACjC,uBAAuB,CAAC,MAA4C,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;YACpD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAC;YACrC,IAAI,EAAE,CAAC;QACT,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;YACpD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QACtC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Parse a Retry-After header value into milliseconds.
3
+ *
4
+ * @param {string} value - Raw Retry-After header (seconds or HTTP date).
5
+ * @returns {number|undefined} Delay in milliseconds, or `undefined` if unparseable.
6
+ */
7
+ export declare function parseRetryAfter(value: string): number | undefined;
8
+ /**
9
+ * Extract the retry delay from response headers.
10
+ *
11
+ * @param {Record<string, string>} headers - Response headers.
12
+ * @returns {number|undefined} Delay in milliseconds, or `undefined` if no Retry-After header.
13
+ */
14
+ export declare function getRetryAfterMs(headers: Record<string, string>): number | undefined;
15
+ //# sourceMappingURL=retry-after.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-after.d.ts","sourceRoot":"","sources":["../../src/middleware/retry-after.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAInF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Parse a Retry-After header value into milliseconds.
3
+ *
4
+ * @param {string} value - Raw Retry-After header (seconds or HTTP date).
5
+ * @returns {number|undefined} Delay in milliseconds, or `undefined` if unparseable.
6
+ */
7
+ export function parseRetryAfter(value) {
8
+ if (!value)
9
+ return undefined;
10
+ const trimmed = value.trim();
11
+ if (/^\d+$/.test(trimmed)) {
12
+ const seconds = parseInt(trimmed, 10);
13
+ if (Number.isFinite(seconds) && seconds >= 0) {
14
+ return seconds * 1000;
15
+ }
16
+ }
17
+ const date = new Date(trimmed);
18
+ if (!Number.isNaN(date.getTime())) {
19
+ const delayMs = date.getTime() - Date.now();
20
+ return Math.max(0, delayMs);
21
+ }
22
+ return undefined;
23
+ }
24
+ /**
25
+ * Extract the retry delay from response headers.
26
+ *
27
+ * @param {Record<string, string>} headers - Response headers.
28
+ * @returns {number|undefined} Delay in milliseconds, or `undefined` if no Retry-After header.
29
+ */
30
+ export function getRetryAfterMs(headers) {
31
+ const value = headers["retry-after"];
32
+ if (!value)
33
+ return undefined;
34
+ return parseRetryAfter(value);
35
+ }
36
+ //# sourceMappingURL=retry-after.js.map