recker 1.0.2-0 → 1.0.3

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 (287) hide show
  1. package/LICENSE +0 -2
  2. package/README.md +121 -72
  3. package/dist/cache/memory-storage.d.ts.map +1 -1
  4. package/dist/cache/memory-storage.js +7 -1
  5. package/dist/constants/http-status.d.ts +74 -0
  6. package/dist/constants/http-status.d.ts.map +1 -0
  7. package/dist/constants/http-status.js +156 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +6 -6
  10. package/dist/cookies/memory-cookie-jar.d.ts +31 -0
  11. package/dist/cookies/memory-cookie-jar.d.ts.map +1 -0
  12. package/dist/cookies/memory-cookie-jar.js +210 -0
  13. package/dist/core/client.d.ts +9 -0
  14. package/dist/core/client.d.ts.map +1 -1
  15. package/dist/core/client.js +252 -53
  16. package/dist/core/errors.d.ts +18 -2
  17. package/dist/core/errors.d.ts.map +1 -1
  18. package/dist/core/errors.js +66 -5
  19. package/dist/core/index.d.ts +6 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +5 -0
  22. package/dist/core/request-promise.d.ts.map +1 -1
  23. package/dist/core/request-promise.js +8 -2
  24. package/dist/core/request.d.ts +7 -1
  25. package/dist/core/request.d.ts.map +1 -1
  26. package/dist/core/request.js +32 -0
  27. package/dist/core/response.d.ts +2 -0
  28. package/dist/core/response.d.ts.map +1 -1
  29. package/dist/core/response.js +44 -19
  30. package/dist/events/request-events.d.ts +48 -0
  31. package/dist/events/request-events.d.ts.map +1 -0
  32. package/dist/events/request-events.js +85 -0
  33. package/dist/index.d.ts +28 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +28 -2
  36. package/dist/mcp/client.d.ts.map +1 -1
  37. package/dist/mcp/client.js +16 -5
  38. package/dist/mcp/contract.d.ts +77 -0
  39. package/dist/mcp/contract.d.ts.map +1 -0
  40. package/dist/mcp/contract.js +278 -0
  41. package/dist/mcp/types.d.ts +1 -0
  42. package/dist/mcp/types.d.ts.map +1 -1
  43. package/dist/plugins/auth.d.ts +45 -0
  44. package/dist/plugins/auth.d.ts.map +1 -0
  45. package/dist/plugins/auth.js +268 -0
  46. package/dist/plugins/cache.d.ts +7 -1
  47. package/dist/plugins/cache.d.ts.map +1 -1
  48. package/dist/plugins/cache.js +470 -49
  49. package/dist/plugins/circuit-breaker.js +1 -1
  50. package/dist/plugins/compression.d.ts.map +1 -1
  51. package/dist/plugins/compression.js +3 -3
  52. package/dist/plugins/dedup.d.ts.map +1 -1
  53. package/dist/plugins/dedup.js +2 -1
  54. package/dist/plugins/graphql.d.ts +4 -3
  55. package/dist/plugins/graphql.d.ts.map +1 -1
  56. package/dist/plugins/graphql.js +24 -5
  57. package/dist/plugins/grpc-web.d.ts +80 -0
  58. package/dist/plugins/grpc-web.d.ts.map +1 -0
  59. package/dist/plugins/grpc-web.js +261 -0
  60. package/dist/plugins/har-player.d.ts.map +1 -1
  61. package/dist/plugins/har-player.js +11 -2
  62. package/dist/plugins/hls.d.ts +33 -0
  63. package/dist/plugins/hls.d.ts.map +1 -0
  64. package/dist/plugins/hls.js +225 -0
  65. package/dist/plugins/http2-push.d.ts +64 -0
  66. package/dist/plugins/http2-push.d.ts.map +1 -0
  67. package/dist/plugins/http2-push.js +274 -0
  68. package/dist/plugins/http3.d.ts +76 -0
  69. package/dist/plugins/http3.d.ts.map +1 -0
  70. package/dist/plugins/http3.js +231 -0
  71. package/dist/plugins/interface-rotator.d.ts +10 -0
  72. package/dist/plugins/interface-rotator.d.ts.map +1 -0
  73. package/dist/plugins/interface-rotator.js +57 -0
  74. package/dist/plugins/jsonrpc.d.ts +76 -0
  75. package/dist/plugins/jsonrpc.d.ts.map +1 -0
  76. package/dist/plugins/jsonrpc.js +143 -0
  77. package/dist/plugins/logger.d.ts +8 -5
  78. package/dist/plugins/logger.d.ts.map +1 -1
  79. package/dist/plugins/logger.js +66 -30
  80. package/dist/plugins/odata.d.ts +182 -0
  81. package/dist/plugins/odata.d.ts.map +1 -0
  82. package/dist/plugins/odata.js +561 -0
  83. package/dist/plugins/retry.d.ts +1 -0
  84. package/dist/plugins/retry.d.ts.map +1 -1
  85. package/dist/plugins/retry.js +26 -2
  86. package/dist/plugins/scrape.d.ts +22 -0
  87. package/dist/plugins/scrape.d.ts.map +1 -0
  88. package/dist/plugins/scrape.js +87 -0
  89. package/dist/plugins/soap.d.ts +73 -0
  90. package/dist/plugins/soap.d.ts.map +1 -0
  91. package/dist/plugins/soap.js +347 -0
  92. package/dist/plugins/user-agent.d.ts +8 -0
  93. package/dist/plugins/user-agent.d.ts.map +1 -0
  94. package/dist/plugins/user-agent.js +46 -0
  95. package/dist/plugins/xml.d.ts +10 -0
  96. package/dist/plugins/xml.d.ts.map +1 -0
  97. package/dist/plugins/xml.js +194 -0
  98. package/dist/presets/anthropic.d.ts +7 -0
  99. package/dist/presets/anthropic.d.ts.map +1 -0
  100. package/dist/presets/anthropic.js +17 -0
  101. package/dist/presets/azure-openai.d.ts +9 -0
  102. package/dist/presets/azure-openai.d.ts.map +1 -0
  103. package/dist/presets/azure-openai.js +25 -0
  104. package/dist/presets/cloudflare.d.ts +13 -0
  105. package/dist/presets/cloudflare.d.ts.map +1 -0
  106. package/dist/presets/cloudflare.js +39 -0
  107. package/dist/presets/cohere.d.ts +6 -0
  108. package/dist/presets/cohere.d.ts.map +1 -0
  109. package/dist/presets/cohere.js +16 -0
  110. package/dist/presets/deepseek.d.ts +6 -0
  111. package/dist/presets/deepseek.d.ts.map +1 -0
  112. package/dist/presets/deepseek.js +16 -0
  113. package/dist/presets/digitalocean.d.ts +6 -0
  114. package/dist/presets/digitalocean.d.ts.map +1 -0
  115. package/dist/presets/digitalocean.js +16 -0
  116. package/dist/presets/discord.d.ts +7 -0
  117. package/dist/presets/discord.d.ts.map +1 -0
  118. package/dist/presets/discord.js +17 -0
  119. package/dist/presets/fireworks.d.ts +6 -0
  120. package/dist/presets/fireworks.d.ts.map +1 -0
  121. package/dist/presets/fireworks.js +16 -0
  122. package/dist/presets/gemini.d.ts +6 -0
  123. package/dist/presets/gemini.d.ts.map +1 -0
  124. package/dist/presets/gemini.js +16 -0
  125. package/dist/presets/github.d.ts +7 -0
  126. package/dist/presets/github.d.ts.map +1 -0
  127. package/dist/presets/github.js +17 -0
  128. package/dist/presets/gitlab.d.ts +7 -0
  129. package/dist/presets/gitlab.d.ts.map +1 -0
  130. package/dist/presets/gitlab.js +16 -0
  131. package/dist/presets/groq.d.ts +6 -0
  132. package/dist/presets/groq.d.ts.map +1 -0
  133. package/dist/presets/groq.js +16 -0
  134. package/dist/presets/huggingface.d.ts +6 -0
  135. package/dist/presets/huggingface.d.ts.map +1 -0
  136. package/dist/presets/huggingface.js +16 -0
  137. package/dist/presets/index.d.ts +28 -0
  138. package/dist/presets/index.d.ts.map +1 -0
  139. package/dist/presets/index.js +27 -0
  140. package/dist/presets/linear.d.ts +6 -0
  141. package/dist/presets/linear.d.ts.map +1 -0
  142. package/dist/presets/linear.js +16 -0
  143. package/dist/presets/mistral.d.ts +6 -0
  144. package/dist/presets/mistral.d.ts.map +1 -0
  145. package/dist/presets/mistral.js +16 -0
  146. package/dist/presets/notion.d.ts +7 -0
  147. package/dist/presets/notion.d.ts.map +1 -0
  148. package/dist/presets/notion.js +17 -0
  149. package/dist/presets/openai.d.ts +8 -0
  150. package/dist/presets/openai.d.ts.map +1 -0
  151. package/dist/presets/openai.js +23 -0
  152. package/dist/presets/perplexity.d.ts +6 -0
  153. package/dist/presets/perplexity.d.ts.map +1 -0
  154. package/dist/presets/perplexity.js +16 -0
  155. package/dist/presets/registry.d.ts +20 -0
  156. package/dist/presets/registry.d.ts.map +1 -0
  157. package/dist/presets/registry.js +311 -0
  158. package/dist/presets/replicate.d.ts +6 -0
  159. package/dist/presets/replicate.d.ts.map +1 -0
  160. package/dist/presets/replicate.js +16 -0
  161. package/dist/presets/slack.d.ts +6 -0
  162. package/dist/presets/slack.d.ts.map +1 -0
  163. package/dist/presets/slack.js +16 -0
  164. package/dist/presets/stripe.d.ts +8 -0
  165. package/dist/presets/stripe.d.ts.map +1 -0
  166. package/dist/presets/stripe.js +23 -0
  167. package/dist/presets/supabase.d.ts +7 -0
  168. package/dist/presets/supabase.d.ts.map +1 -0
  169. package/dist/presets/supabase.js +18 -0
  170. package/dist/presets/together.d.ts +6 -0
  171. package/dist/presets/together.d.ts.map +1 -0
  172. package/dist/presets/together.js +16 -0
  173. package/dist/presets/twilio.d.ts +7 -0
  174. package/dist/presets/twilio.d.ts.map +1 -0
  175. package/dist/presets/twilio.js +17 -0
  176. package/dist/presets/vercel.d.ts +7 -0
  177. package/dist/presets/vercel.d.ts.map +1 -0
  178. package/dist/presets/vercel.js +23 -0
  179. package/dist/presets/xai.d.ts +7 -0
  180. package/dist/presets/xai.d.ts.map +1 -0
  181. package/dist/presets/xai.js +17 -0
  182. package/dist/protocols/ftp.d.ts +63 -0
  183. package/dist/protocols/ftp.d.ts.map +1 -0
  184. package/dist/protocols/ftp.js +388 -0
  185. package/dist/protocols/index.d.ts +4 -0
  186. package/dist/protocols/index.d.ts.map +1 -0
  187. package/dist/protocols/index.js +3 -0
  188. package/dist/protocols/sftp.d.ts +65 -0
  189. package/dist/protocols/sftp.d.ts.map +1 -0
  190. package/dist/protocols/sftp.js +346 -0
  191. package/dist/protocols/telnet.d.ts +50 -0
  192. package/dist/protocols/telnet.d.ts.map +1 -0
  193. package/dist/protocols/telnet.js +139 -0
  194. package/dist/runner/request-runner.d.ts.map +1 -1
  195. package/dist/runner/request-runner.js +1 -0
  196. package/dist/scrape/document.d.ts +44 -0
  197. package/dist/scrape/document.d.ts.map +1 -0
  198. package/dist/scrape/document.js +198 -0
  199. package/dist/scrape/element.d.ts +50 -0
  200. package/dist/scrape/element.d.ts.map +1 -0
  201. package/dist/scrape/element.js +176 -0
  202. package/dist/scrape/extractors.d.ts +17 -0
  203. package/dist/scrape/extractors.d.ts.map +1 -0
  204. package/dist/scrape/extractors.js +356 -0
  205. package/dist/scrape/index.d.ts +5 -0
  206. package/dist/scrape/index.d.ts.map +1 -0
  207. package/dist/scrape/index.js +3 -0
  208. package/dist/scrape/types.d.ts +108 -0
  209. package/dist/scrape/types.d.ts.map +1 -0
  210. package/dist/scrape/types.js +1 -0
  211. package/dist/testing/index.d.ts +3 -0
  212. package/dist/testing/index.d.ts.map +1 -0
  213. package/dist/testing/index.js +1 -0
  214. package/dist/testing/mock.d.ts +58 -0
  215. package/dist/testing/mock.d.ts.map +1 -0
  216. package/dist/testing/mock.js +252 -0
  217. package/dist/transport/fetch.d.ts.map +1 -1
  218. package/dist/transport/fetch.js +12 -4
  219. package/dist/transport/undici.d.ts +17 -1
  220. package/dist/transport/undici.d.ts.map +1 -1
  221. package/dist/transport/undici.js +708 -47
  222. package/dist/types/index.d.ts +111 -10
  223. package/dist/types/index.d.ts.map +1 -1
  224. package/dist/types/index.js +1 -1
  225. package/dist/types/logger.d.ts +17 -0
  226. package/dist/types/logger.d.ts.map +1 -0
  227. package/dist/types/logger.js +66 -0
  228. package/dist/utils/agent-manager.d.ts.map +1 -1
  229. package/dist/utils/agent-manager.js +20 -4
  230. package/dist/utils/body.d.ts.map +1 -1
  231. package/dist/utils/body.js +14 -2
  232. package/dist/utils/charset.d.ts +16 -0
  233. package/dist/utils/charset.d.ts.map +1 -0
  234. package/dist/utils/charset.js +169 -0
  235. package/dist/utils/client-pool.d.ts +21 -0
  236. package/dist/utils/client-pool.d.ts.map +1 -0
  237. package/dist/utils/client-pool.js +49 -0
  238. package/dist/utils/concurrency.d.ts.map +1 -1
  239. package/dist/utils/concurrency.js +8 -4
  240. package/dist/utils/dns-toolkit.d.ts +13 -0
  241. package/dist/utils/dns-toolkit.d.ts.map +1 -0
  242. package/dist/utils/dns-toolkit.js +48 -0
  243. package/dist/utils/doh.d.ts.map +1 -1
  244. package/dist/utils/doh.js +16 -3
  245. package/dist/utils/download.d.ts +15 -0
  246. package/dist/utils/download.d.ts.map +1 -0
  247. package/dist/utils/download.js +44 -0
  248. package/dist/utils/env-proxy.d.ts +13 -0
  249. package/dist/utils/env-proxy.d.ts.map +1 -0
  250. package/dist/utils/env-proxy.js +105 -0
  251. package/dist/utils/header-parser.d.ts +15 -1
  252. package/dist/utils/header-parser.d.ts.map +1 -1
  253. package/dist/utils/header-parser.js +161 -1
  254. package/dist/utils/link-header.d.ts +70 -0
  255. package/dist/utils/link-header.d.ts.map +1 -0
  256. package/dist/utils/link-header.js +190 -0
  257. package/dist/utils/progress.d.ts +7 -2
  258. package/dist/utils/progress.d.ts.map +1 -1
  259. package/dist/utils/progress.js +48 -15
  260. package/dist/utils/rdap.d.ts +17 -0
  261. package/dist/utils/rdap.d.ts.map +1 -0
  262. package/dist/utils/rdap.js +32 -0
  263. package/dist/utils/request-pool.d.ts.map +1 -1
  264. package/dist/utils/request-pool.js +4 -3
  265. package/dist/utils/sse.d.ts.map +1 -1
  266. package/dist/utils/sse.js +8 -2
  267. package/dist/utils/status-codes.d.ts +84 -0
  268. package/dist/utils/status-codes.d.ts.map +1 -0
  269. package/dist/utils/status-codes.js +204 -0
  270. package/dist/utils/streaming.d.ts.map +1 -1
  271. package/dist/utils/streaming.js +1 -0
  272. package/dist/utils/tls-inspector.d.ts +21 -0
  273. package/dist/utils/tls-inspector.d.ts.map +1 -0
  274. package/dist/utils/tls-inspector.js +39 -0
  275. package/dist/utils/try-fn.d.ts.map +1 -1
  276. package/dist/utils/try-fn.js +11 -5
  277. package/dist/utils/upload.d.ts +1 -0
  278. package/dist/utils/upload.d.ts.map +1 -1
  279. package/dist/utils/upload.js +20 -3
  280. package/dist/utils/user-agent.d.ts +9 -9
  281. package/dist/utils/user-agent.js +9 -9
  282. package/dist/utils/whois.d.ts.map +1 -1
  283. package/dist/utils/whois.js +11 -2
  284. package/dist/websocket/client.d.ts +29 -1
  285. package/dist/websocket/client.d.ts.map +1 -1
  286. package/dist/websocket/client.js +145 -13
  287. package/package.json +45 -8
@@ -0,0 +1,70 @@
1
+ export interface Link {
2
+ uri: string;
3
+ rel?: string;
4
+ anchor?: string;
5
+ type?: string;
6
+ media?: string;
7
+ title?: string;
8
+ hreflang?: string;
9
+ [key: string]: string | undefined;
10
+ }
11
+ export interface LinkCollection {
12
+ all: Link[];
13
+ [rel: string]: Link | Link[] | undefined;
14
+ }
15
+ export declare function parseLink(headerValue: string): LinkCollection;
16
+ export declare const LinkRel: {
17
+ readonly NEXT: "next";
18
+ readonly PREV: "prev";
19
+ readonly PREVIOUS: "previous";
20
+ readonly FIRST: "first";
21
+ readonly LAST: "last";
22
+ readonly ALTERNATE: "alternate";
23
+ readonly CANONICAL: "canonical";
24
+ readonly AUTHOR: "author";
25
+ readonly LICENSE: "license";
26
+ readonly STYLESHEET: "stylesheet";
27
+ readonly ICON: "icon";
28
+ readonly PRELOAD: "preload";
29
+ readonly PREFETCH: "prefetch";
30
+ readonly PRECONNECT: "preconnect";
31
+ readonly DNS_PREFETCH: "dns-prefetch";
32
+ readonly PRERENDER: "prerender";
33
+ readonly SELF: "self";
34
+ readonly EDIT: "edit";
35
+ readonly COLLECTION: "collection";
36
+ readonly ITEM: "item";
37
+ readonly HELP: "help";
38
+ readonly DESCRIBEDBY: "describedby";
39
+ readonly UP: "up";
40
+ readonly RELATED: "related";
41
+ readonly REPLIES: "replies";
42
+ readonly VIA: "via";
43
+ };
44
+ export declare class LinkHeaderParser {
45
+ private links;
46
+ constructor(headerValue: string);
47
+ getAll(): Link[];
48
+ getRel(rel: string): Link | Link[] | undefined;
49
+ getFirst(rel: string): Link | undefined;
50
+ has(rel: string): boolean;
51
+ getPagination(): {
52
+ next?: string;
53
+ prev?: string;
54
+ first?: string;
55
+ last?: string;
56
+ };
57
+ hasNext(): boolean;
58
+ hasPrev(): boolean;
59
+ getCanonical(): string | undefined;
60
+ getAlternates(): Link[];
61
+ getResourceHints(): {
62
+ preload: Link[];
63
+ prefetch: Link[];
64
+ preconnect: Link[];
65
+ dnsPrefetch: Link[];
66
+ };
67
+ toJSON(): LinkCollection;
68
+ }
69
+ export declare function parseLinkHeader(headers: Headers): LinkHeaderParser | null;
70
+ //# sourceMappingURL=link-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-header.d.ts","sourceRoot":"","sources":["../../src/utils/link-header.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,IAAI;IAEnB,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAKD,MAAM,WAAW,cAAc;IAE7B,GAAG,EAAE,IAAI,EAAE,CAAC;IAEZ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;CAC1C;AAcD,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAqC7D;AAiGD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCV,CAAC;AAKX,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiB;gBAElB,WAAW,EAAE,MAAM;IAO/B,MAAM,IAAI,IAAI,EAAE;IAOhB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,SAAS;IAO9C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IASvC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOzB,aAAa,IAAI;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IAYD,OAAO,IAAI,OAAO;IAOlB,OAAO,IAAI,OAAO;IAOlB,YAAY,IAAI,MAAM,GAAG,SAAS;IAOlC,aAAa,IAAI,IAAI,EAAE;IASvB,gBAAgB,IAAI;QAClB,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,QAAQ,EAAE,IAAI,EAAE,CAAC;QACjB,UAAU,EAAE,IAAI,EAAE,CAAC;QACnB,WAAW,EAAE,IAAI,EAAE,CAAC;KACrB;IAkBD,MAAM,IAAI,cAAc;CAGzB;AAKD,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAIzE"}
@@ -0,0 +1,190 @@
1
+ export function parseLink(headerValue) {
2
+ if (!headerValue || typeof headerValue !== 'string') {
3
+ return { all: [] };
4
+ }
5
+ const links = [];
6
+ const collection = { all: links };
7
+ const linkStrings = splitLinkHeader(headerValue);
8
+ for (const linkString of linkStrings) {
9
+ const link = parseSingleLink(linkString.trim());
10
+ if (link) {
11
+ links.push(link);
12
+ if (link.rel) {
13
+ const relTypes = link.rel.split(/\s+/);
14
+ for (const rel of relTypes) {
15
+ const existing = collection[rel];
16
+ if (existing) {
17
+ if (Array.isArray(existing)) {
18
+ existing.push(link);
19
+ }
20
+ else {
21
+ collection[rel] = [existing, link];
22
+ }
23
+ }
24
+ else {
25
+ collection[rel] = link;
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ return collection;
32
+ }
33
+ function splitLinkHeader(header) {
34
+ const result = [];
35
+ let current = '';
36
+ let inBrackets = false;
37
+ let inQuotes = false;
38
+ for (let i = 0; i < header.length; i++) {
39
+ const char = header[i];
40
+ const prevChar = i > 0 ? header[i - 1] : '';
41
+ if (char === '<' && !inQuotes) {
42
+ inBrackets = true;
43
+ }
44
+ else if (char === '>' && !inQuotes) {
45
+ inBrackets = false;
46
+ }
47
+ else if (char === '"' && prevChar !== '\\') {
48
+ inQuotes = !inQuotes;
49
+ }
50
+ else if (char === ',' && !inBrackets && !inQuotes) {
51
+ result.push(current.trim());
52
+ current = '';
53
+ continue;
54
+ }
55
+ current += char;
56
+ }
57
+ if (current.trim()) {
58
+ result.push(current.trim());
59
+ }
60
+ return result;
61
+ }
62
+ function parseSingleLink(linkString) {
63
+ const uriMatch = linkString.match(/^<([^>]+)>/);
64
+ if (!uriMatch) {
65
+ return null;
66
+ }
67
+ const uri = uriMatch[1];
68
+ const link = { uri };
69
+ const paramsString = linkString.slice(uriMatch[0].length);
70
+ const params = parseParameters(paramsString);
71
+ for (const [key, value] of Object.entries(params)) {
72
+ link[key] = value;
73
+ }
74
+ return link;
75
+ }
76
+ function parseParameters(paramsString) {
77
+ const params = {};
78
+ const paramStrings = paramsString.split(/;/).filter(s => s.trim());
79
+ for (const paramString of paramStrings) {
80
+ const equalIndex = paramString.indexOf('=');
81
+ if (equalIndex === -1)
82
+ continue;
83
+ const key = paramString.slice(0, equalIndex).trim();
84
+ let value = paramString.slice(equalIndex + 1).trim();
85
+ if (value.startsWith('"') && value.endsWith('"')) {
86
+ value = value.slice(1, -1);
87
+ }
88
+ else if (value.startsWith("'") && value.endsWith("'")) {
89
+ value = value.slice(1, -1);
90
+ }
91
+ value = value.replace(/\\(.)/g, '$1');
92
+ params[key] = value;
93
+ }
94
+ return params;
95
+ }
96
+ export const LinkRel = {
97
+ NEXT: 'next',
98
+ PREV: 'prev',
99
+ PREVIOUS: 'previous',
100
+ FIRST: 'first',
101
+ LAST: 'last',
102
+ ALTERNATE: 'alternate',
103
+ CANONICAL: 'canonical',
104
+ AUTHOR: 'author',
105
+ LICENSE: 'license',
106
+ STYLESHEET: 'stylesheet',
107
+ ICON: 'icon',
108
+ PRELOAD: 'preload',
109
+ PREFETCH: 'prefetch',
110
+ PRECONNECT: 'preconnect',
111
+ DNS_PREFETCH: 'dns-prefetch',
112
+ PRERENDER: 'prerender',
113
+ SELF: 'self',
114
+ EDIT: 'edit',
115
+ COLLECTION: 'collection',
116
+ ITEM: 'item',
117
+ HELP: 'help',
118
+ DESCRIBEDBY: 'describedby',
119
+ UP: 'up',
120
+ RELATED: 'related',
121
+ REPLIES: 'replies',
122
+ VIA: 'via',
123
+ };
124
+ export class LinkHeaderParser {
125
+ links;
126
+ constructor(headerValue) {
127
+ this.links = parseLink(headerValue);
128
+ }
129
+ getAll() {
130
+ return this.links.all;
131
+ }
132
+ getRel(rel) {
133
+ return this.links[rel];
134
+ }
135
+ getFirst(rel) {
136
+ const links = this.links[rel];
137
+ if (!links)
138
+ return undefined;
139
+ return Array.isArray(links) ? links[0] : links;
140
+ }
141
+ has(rel) {
142
+ return rel in this.links;
143
+ }
144
+ getPagination() {
145
+ return {
146
+ next: this.getFirst(LinkRel.NEXT)?.uri,
147
+ prev: this.getFirst(LinkRel.PREV)?.uri || this.getFirst(LinkRel.PREVIOUS)?.uri,
148
+ first: this.getFirst(LinkRel.FIRST)?.uri,
149
+ last: this.getFirst(LinkRel.LAST)?.uri,
150
+ };
151
+ }
152
+ hasNext() {
153
+ return this.has(LinkRel.NEXT);
154
+ }
155
+ hasPrev() {
156
+ return this.has(LinkRel.PREV) || this.has(LinkRel.PREVIOUS);
157
+ }
158
+ getCanonical() {
159
+ return this.getFirst(LinkRel.CANONICAL)?.uri;
160
+ }
161
+ getAlternates() {
162
+ const alts = this.getRel(LinkRel.ALTERNATE);
163
+ if (!alts)
164
+ return [];
165
+ return Array.isArray(alts) ? alts : [alts];
166
+ }
167
+ getResourceHints() {
168
+ const getLinks = (rel) => {
169
+ const links = this.getRel(rel);
170
+ if (!links)
171
+ return [];
172
+ return Array.isArray(links) ? links : [links];
173
+ };
174
+ return {
175
+ preload: getLinks(LinkRel.PRELOAD),
176
+ prefetch: getLinks(LinkRel.PREFETCH),
177
+ preconnect: getLinks(LinkRel.PRECONNECT),
178
+ dnsPrefetch: getLinks(LinkRel.DNS_PREFETCH),
179
+ };
180
+ }
181
+ toJSON() {
182
+ return this.links;
183
+ }
184
+ }
185
+ export function parseLinkHeader(headers) {
186
+ const linkHeader = headers.get('Link');
187
+ if (!linkHeader)
188
+ return null;
189
+ return new LinkHeaderParser(linkHeader);
190
+ }
@@ -1,4 +1,9 @@
1
1
  import { ProgressEvent, ProgressCallback } from '../types/index.js';
2
- export declare function createProgressStream(stream: ReadableStream<Uint8Array>, onProgress: ProgressCallback, total?: number): ReadableStream<Uint8Array>;
3
- export declare function calculateProgress(loaded: number, total?: number): ProgressEvent;
2
+ export interface ProgressStreamOptions {
3
+ total?: number;
4
+ direction?: 'upload' | 'download';
5
+ throttleMs?: number;
6
+ }
7
+ export declare function createProgressStream(stream: ReadableStream<Uint8Array>, onProgress: ProgressCallback, optionsOrTotal?: number | ProgressStreamOptions): ReadableStream<Uint8Array>;
8
+ export declare function calculateProgress(loaded: number, total?: number, direction?: 'upload' | 'download'): ProgressEvent;
4
9
  //# sourceMappingURL=progress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKpE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,gBAAgB,EAC5B,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAAC,UAAU,CAAC,CA6C5B;AAKD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAW/E"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IAEpC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,gBAAgB,EAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAC9C,cAAc,CAAC,UAAU,CAAC,CAgG5B;AAKD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAChC,aAAa,CAaf"}
@@ -1,31 +1,62 @@
1
- export function createProgressStream(stream, onProgress, total) {
1
+ export function createProgressStream(stream, onProgress, optionsOrTotal) {
2
+ const options = typeof optionsOrTotal === 'number'
3
+ ? { total: optionsOrTotal }
4
+ : optionsOrTotal || {};
5
+ const { total, direction, throttleMs = 100 } = options;
2
6
  let loaded = 0;
3
7
  let startTime = Date.now();
4
- let lastUpdate = startTime;
8
+ let lastUpdate = 0;
9
+ let lastLoaded = 0;
10
+ let lastRateUpdate = startTime;
11
+ let smoothedRate = 0;
12
+ const rateSmoothingFactor = 0.3;
13
+ const emitProgress = (now, isFinal) => {
14
+ const elapsed = (now - startTime) / 1000;
15
+ const intervalMs = now - lastRateUpdate;
16
+ const bytesInInterval = loaded - lastLoaded;
17
+ if (intervalMs > 0) {
18
+ const instantRate = (bytesInInterval / intervalMs) * 1000;
19
+ smoothedRate = smoothedRate === 0
20
+ ? instantRate
21
+ : smoothedRate * (1 - rateSmoothingFactor) + instantRate * rateSmoothingFactor;
22
+ }
23
+ lastLoaded = loaded;
24
+ lastRateUpdate = now;
25
+ const rate = smoothedRate;
26
+ let percent;
27
+ if (total) {
28
+ percent = isFinal ? 100 : Math.min((loaded / total) * 100, 99.9);
29
+ }
30
+ const progress = {
31
+ loaded,
32
+ transferred: loaded,
33
+ total,
34
+ percent,
35
+ rate,
36
+ estimated: total && rate > 0 ? ((total - loaded) / rate) * 1000 : undefined,
37
+ direction,
38
+ };
39
+ onProgress(progress);
40
+ lastUpdate = now;
41
+ };
5
42
  return new ReadableStream({
6
43
  async start(controller) {
7
44
  const reader = stream.getReader();
8
45
  try {
46
+ emitProgress(Date.now(), false);
9
47
  while (true) {
10
48
  const { done, value } = await reader.read();
11
49
  if (done) {
50
+ emitProgress(Date.now(), true);
12
51
  controller.close();
13
52
  break;
14
53
  }
15
54
  loaded += value.byteLength;
16
55
  const now = Date.now();
17
- const elapsed = (now - startTime) / 1000;
18
- const rate = elapsed > 0 ? loaded / elapsed : 0;
19
- if (now - lastUpdate > 100 || loaded === total) {
20
- const progress = {
21
- loaded,
22
- total,
23
- percent: total ? (loaded / total) * 100 : undefined,
24
- rate,
25
- estimated: total && rate > 0 ? ((total - loaded) / rate) * 1000 : undefined,
26
- };
27
- onProgress(progress);
28
- lastUpdate = now;
56
+ const shouldUpdate = now - lastUpdate >= throttleMs ||
57
+ (total && loaded === total);
58
+ if (shouldUpdate) {
59
+ emitProgress(now, false);
29
60
  }
30
61
  controller.enqueue(value);
31
62
  }
@@ -37,10 +68,12 @@ export function createProgressStream(stream, onProgress, total) {
37
68
  },
38
69
  });
39
70
  }
40
- export function calculateProgress(loaded, total) {
71
+ export function calculateProgress(loaded, total, direction) {
41
72
  const progress = {
42
73
  loaded,
74
+ transferred: loaded,
43
75
  total,
76
+ direction,
44
77
  };
45
78
  if (total && total > 0) {
46
79
  progress.percent = (loaded / total) * 100;
@@ -0,0 +1,17 @@
1
+ import { Client } from '../core/client.js';
2
+ export interface RDAPResult {
3
+ handle?: string;
4
+ status?: string[];
5
+ events?: Array<{
6
+ eventAction: string;
7
+ eventDate: string;
8
+ }>;
9
+ entities?: Array<{
10
+ handle?: string;
11
+ roles?: string[];
12
+ vcardArray?: any[];
13
+ }>;
14
+ [key: string]: any;
15
+ }
16
+ export declare function rdap(client: Client, query: string): Promise<RDAPResult>;
17
+ //# sourceMappingURL=rdap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdap.d.ts","sourceRoot":"","sources":["../../src/utils/rdap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3C,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;IAC5E,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiC7E"}
@@ -0,0 +1,32 @@
1
+ const RDAP_SERVERS = {
2
+ 'com': 'https://rdap.verisign.com/com/v1/',
3
+ 'net': 'https://rdap.verisign.com/net/v1/',
4
+ 'org': 'https://rdap.publicinterestregistry.net/rdap/org/',
5
+ 'io': 'https://rdap.nic.io/domain/',
6
+ 'br': 'https://rdap.registro.br/',
7
+ 'default': 'https://rdap.org/domain/'
8
+ };
9
+ export async function rdap(client, query) {
10
+ const isIp = /^\d+\.\d+\.\d+\.\d+$/.test(query);
11
+ let url;
12
+ if (isIp) {
13
+ url = `https://rdap.arin.net/registry/ip/${query}`;
14
+ }
15
+ else {
16
+ const tld = query.split('.').pop()?.toLowerCase() || '';
17
+ const base = RDAP_SERVERS[tld] || RDAP_SERVERS['default'];
18
+ url = base.endsWith('/') ? `${base}domain/${query}` : `${base}/${query}`;
19
+ if (base.includes('/domain/')) {
20
+ url = `${base}${query}`;
21
+ }
22
+ }
23
+ try {
24
+ return await client.get(url, { followRedirects: true }).json();
25
+ }
26
+ catch (error) {
27
+ if (error.status === 404) {
28
+ throw new Error(`RDAP entry not found for ${query}`);
29
+ }
30
+ throw error;
31
+ }
32
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"request-pool.d.ts","sourceRoot":"","sources":["../../src/utils/request-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA+C,MAAM,mBAAmB,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IAKjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAI7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAiBD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAE1B,OAAO,GAAE,kBAAuB;IAM5C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAuB9D,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,SAAS;IA4DjB,YAAY,IAAI,UAAU;CAM3B"}
1
+ {"version":3,"file":"request-pool.d.ts","sourceRoot":"","sources":["../../src/utils/request-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA+C,MAAM,mBAAmB,CAAC;AAGjG,MAAM,WAAW,kBAAkB;IAKjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAI7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAiBD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAE1B,OAAO,GAAE,kBAAuB;IAM5C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAiC9D,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,SAAS;IAiEjB,YAAY,IAAI,UAAU;CAM3B"}
@@ -1,3 +1,4 @@
1
+ import { ReckerError } from '../core/errors.js';
1
2
  export class RequestPool {
2
3
  concurrency;
3
4
  requestsPerInterval;
@@ -14,14 +15,14 @@ export class RequestPool {
14
15
  }
15
16
  run(fn, signal) {
16
17
  if (signal?.aborted) {
17
- return Promise.reject(signal.reason ?? new Error('Request aborted before enqueue'));
18
+ return Promise.reject(signal.reason ?? new ReckerError('Request aborted before enqueue', undefined, undefined, ['Ensure the AbortSignal is not already aborted when calling the request.', 'Remove or reset the signal before enqueueing.']));
18
19
  }
19
20
  return new Promise((resolve, reject) => {
20
21
  const request = { fn, resolve, reject, signal };
21
22
  if (signal) {
22
23
  const onAbort = () => {
23
24
  this._removeFromQueue(request);
24
- reject(signal.reason ?? new Error('Request aborted while queued'));
25
+ reject(signal.reason ?? new ReckerError('Request aborted while queued', undefined, undefined, ['Avoid aborting immediately after queuing.', 'Increase timeouts or adjust rate limits if cancellations are unintended.']));
25
26
  this._schedule();
26
27
  };
27
28
  signal.addEventListener('abort', onAbort, { once: true });
@@ -62,7 +63,7 @@ export class RequestPool {
62
63
  const request = this.queue.shift();
63
64
  if (request.signal?.aborted) {
64
65
  request.abortCleanup?.();
65
- request.reject(request.signal.reason ?? new Error('Request aborted while queued'));
66
+ request.reject(request.signal.reason ?? new ReckerError('Request aborted while queued', undefined, undefined, ['Avoid aborting immediately after queuing.', 'Increase timeouts or adjust rate limits if cancellations are unintended.']));
66
67
  continue;
67
68
  }
68
69
  this.active++;
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/utils/sse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAuB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CA4E5E"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/utils/sse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wBAAuB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAuF5E"}
package/dist/utils/sse.js CHANGED
@@ -1,6 +1,12 @@
1
+ import { ReckerError } from '../core/errors.js';
1
2
  export async function* parseSSE(response) {
2
- if (!response.body)
3
- throw new Error('Response body is null');
3
+ if (!response.body) {
4
+ throw new ReckerError('Response body is empty; cannot parse SSE stream.', undefined, undefined, [
5
+ 'Ensure the server is sending an SSE stream with a response body.',
6
+ 'Check that the request was not a HEAD/204 response.',
7
+ 'Verify connection was not closed before the body was received.'
8
+ ]);
9
+ }
4
10
  const reader = response.body.getReader();
5
11
  const decoder = new TextDecoder();
6
12
  let buffer = '';
@@ -0,0 +1,84 @@
1
+ export declare enum StatusCode {
2
+ CONTINUE = 100,
3
+ SWITCHING_PROTOCOLS = 101,
4
+ PROCESSING = 102,
5
+ EARLY_HINTS = 103,
6
+ OK = 200,
7
+ CREATED = 201,
8
+ ACCEPTED = 202,
9
+ NON_AUTHORITATIVE_INFORMATION = 203,
10
+ NO_CONTENT = 204,
11
+ RESET_CONTENT = 205,
12
+ PARTIAL_CONTENT = 206,
13
+ MULTI_STATUS = 207,
14
+ ALREADY_REPORTED = 208,
15
+ IM_USED = 226,
16
+ MULTIPLE_CHOICES = 300,
17
+ MOVED_PERMANENTLY = 301,
18
+ FOUND = 302,
19
+ SEE_OTHER = 303,
20
+ NOT_MODIFIED = 304,
21
+ USE_PROXY = 305,
22
+ TEMPORARY_REDIRECT = 307,
23
+ PERMANENT_REDIRECT = 308,
24
+ BAD_REQUEST = 400,
25
+ UNAUTHORIZED = 401,
26
+ PAYMENT_REQUIRED = 402,
27
+ FORBIDDEN = 403,
28
+ NOT_FOUND = 404,
29
+ METHOD_NOT_ALLOWED = 405,
30
+ NOT_ACCEPTABLE = 406,
31
+ PROXY_AUTHENTICATION_REQUIRED = 407,
32
+ REQUEST_TIMEOUT = 408,
33
+ CONFLICT = 409,
34
+ GONE = 410,
35
+ LENGTH_REQUIRED = 411,
36
+ PRECONDITION_FAILED = 412,
37
+ PAYLOAD_TOO_LARGE = 413,
38
+ URI_TOO_LONG = 414,
39
+ UNSUPPORTED_MEDIA_TYPE = 415,
40
+ RANGE_NOT_SATISFIABLE = 416,
41
+ EXPECTATION_FAILED = 417,
42
+ IM_A_TEAPOT = 418,
43
+ MISDIRECTED_REQUEST = 421,
44
+ UNPROCESSABLE_ENTITY = 422,
45
+ LOCKED = 423,
46
+ FAILED_DEPENDENCY = 424,
47
+ TOO_EARLY = 425,
48
+ UPGRADE_REQUIRED = 426,
49
+ PRECONDITION_REQUIRED = 428,
50
+ TOO_MANY_REQUESTS = 429,
51
+ REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
52
+ UNAVAILABLE_FOR_LEGAL_REASONS = 451,
53
+ INTERNAL_SERVER_ERROR = 500,
54
+ NOT_IMPLEMENTED = 501,
55
+ BAD_GATEWAY = 502,
56
+ SERVICE_UNAVAILABLE = 503,
57
+ GATEWAY_TIMEOUT = 504,
58
+ HTTP_VERSION_NOT_SUPPORTED = 505,
59
+ VARIANT_ALSO_NEGOTIATES = 506,
60
+ INSUFFICIENT_STORAGE = 507,
61
+ LOOP_DETECTED = 508,
62
+ NOT_EXTENDED = 510,
63
+ NETWORK_AUTHENTICATION_REQUIRED = 511
64
+ }
65
+ export declare const STATUS_TEXT: Record<number, string>;
66
+ export declare const status: {
67
+ isInformational(code: number): boolean;
68
+ isSuccess(code: number): boolean;
69
+ isRedirect(code: number): boolean;
70
+ isClientError(code: number): boolean;
71
+ isServerError(code: number): boolean;
72
+ isError(code: number): boolean;
73
+ isOk(code: number): boolean;
74
+ getText(code: number): string | undefined;
75
+ getCategory(code: number): string;
76
+ };
77
+ export declare const statusGroups: {
78
+ success: readonly [StatusCode.OK, StatusCode.CREATED, StatusCode.ACCEPTED, StatusCode.NO_CONTENT];
79
+ redirect: readonly [StatusCode.MOVED_PERMANENTLY, StatusCode.FOUND, StatusCode.SEE_OTHER, StatusCode.TEMPORARY_REDIRECT, StatusCode.PERMANENT_REDIRECT];
80
+ clientError: readonly [StatusCode.BAD_REQUEST, StatusCode.UNAUTHORIZED, StatusCode.FORBIDDEN, StatusCode.NOT_FOUND, StatusCode.METHOD_NOT_ALLOWED, StatusCode.CONFLICT, StatusCode.TOO_MANY_REQUESTS];
81
+ serverError: readonly [StatusCode.INTERNAL_SERVER_ERROR, StatusCode.BAD_GATEWAY, StatusCode.SERVICE_UNAVAILABLE, StatusCode.GATEWAY_TIMEOUT];
82
+ retryable: readonly [StatusCode.TOO_MANY_REQUESTS, StatusCode.BAD_GATEWAY, StatusCode.SERVICE_UNAVAILABLE, StatusCode.GATEWAY_TIMEOUT];
83
+ };
84
+ //# sourceMappingURL=status-codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-codes.d.ts","sourceRoot":"","sources":["../../src/utils/status-codes.ts"],"names":[],"mappings":"AAUA,oBAAY,UAAU;IAEpB,QAAQ,MAAM;IACd,mBAAmB,MAAM;IACzB,UAAU,MAAM;IAChB,WAAW,MAAM;IAGjB,EAAE,MAAM;IACR,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,6BAA6B,MAAM;IACnC,UAAU,MAAM;IAChB,aAAa,MAAM;IACnB,eAAe,MAAM;IACrB,YAAY,MAAM;IAClB,gBAAgB,MAAM;IACtB,OAAO,MAAM;IAGb,gBAAgB,MAAM;IACtB,iBAAiB,MAAM;IACvB,KAAK,MAAM;IACX,SAAS,MAAM;IACf,YAAY,MAAM;IAClB,SAAS,MAAM;IACf,kBAAkB,MAAM;IACxB,kBAAkB,MAAM;IAGxB,WAAW,MAAM;IACjB,YAAY,MAAM;IAClB,gBAAgB,MAAM;IACtB,SAAS,MAAM;IACf,SAAS,MAAM;IACf,kBAAkB,MAAM;IACxB,cAAc,MAAM;IACpB,6BAA6B,MAAM;IACnC,eAAe,MAAM;IACrB,QAAQ,MAAM;IACd,IAAI,MAAM;IACV,eAAe,MAAM;IACrB,mBAAmB,MAAM;IACzB,iBAAiB,MAAM;IACvB,YAAY,MAAM;IAClB,sBAAsB,MAAM;IAC5B,qBAAqB,MAAM;IAC3B,kBAAkB,MAAM;IACxB,WAAW,MAAM;IACjB,mBAAmB,MAAM;IACzB,oBAAoB,MAAM;IAC1B,MAAM,MAAM;IACZ,iBAAiB,MAAM;IACvB,SAAS,MAAM;IACf,gBAAgB,MAAM;IACtB,qBAAqB,MAAM;IAC3B,iBAAiB,MAAM;IACvB,+BAA+B,MAAM;IACrC,6BAA6B,MAAM;IAGnC,qBAAqB,MAAM;IAC3B,eAAe,MAAM;IACrB,WAAW,MAAM;IACjB,mBAAmB,MAAM;IACzB,eAAe,MAAM;IACrB,0BAA0B,MAAM;IAChC,uBAAuB,MAAM;IAC7B,oBAAoB,MAAM;IAC1B,aAAa,MAAM;IACnB,YAAY,MAAM;IAClB,+BAA+B,MAAM;CACtC;AAKD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwE9C,CAAC;AAKF,eAAO,MAAM,MAAM;0BAIK,MAAM,GAAG,OAAO;oBAOtB,MAAM,GAAG,OAAO;qBAOf,MAAM,GAAG,OAAO;wBAOb,MAAM,GAAG,OAAO;wBAOhB,MAAM,GAAG,OAAO;kBAOtB,MAAM,GAAG,OAAO;eAQnB,MAAM,GAAG,OAAO;kBAOb,MAAM,GAAG,MAAM,GAAG,SAAS;sBAOvB,MAAM,GAAG,MAAM;CAQlC,CAAC;AAKF,eAAO,MAAM,YAAY;;;;;;CAsDxB,CAAC"}