recker 1.0.20-next.de24f7d → 1.0.20-next.e194d90

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 (433) hide show
  1. package/README.md +31 -0
  2. package/dist/ai/adaptive-timeout.d.ts +0 -1
  3. package/dist/ai/client.d.ts +0 -1
  4. package/dist/ai/client.js +6 -0
  5. package/dist/ai/index.d.ts +3 -1
  6. package/dist/ai/index.js +3 -0
  7. package/dist/ai/providers/anthropic.d.ts +0 -1
  8. package/dist/ai/providers/base.d.ts +0 -1
  9. package/dist/ai/providers/google.d.ts +59 -0
  10. package/dist/ai/providers/google.js +305 -0
  11. package/dist/ai/providers/index.d.ts +4 -1
  12. package/dist/ai/providers/index.js +2 -0
  13. package/dist/ai/providers/ollama.d.ts +44 -0
  14. package/dist/ai/providers/ollama.js +240 -0
  15. package/dist/ai/providers/openai.d.ts +0 -1
  16. package/dist/ai/rate-limiter.d.ts +0 -1
  17. package/dist/ai/vector/index.d.ts +2 -0
  18. package/dist/ai/vector/index.js +2 -0
  19. package/dist/ai/vector/similarity.d.ts +2 -0
  20. package/dist/ai/vector/similarity.js +27 -0
  21. package/dist/ai/vector/store.d.ts +27 -0
  22. package/dist/ai/vector/store.js +82 -0
  23. package/dist/bench/generator.d.ts +0 -1
  24. package/dist/bench/stats.d.ts +0 -1
  25. package/dist/cache/basic-file-storage.d.ts +12 -0
  26. package/dist/cache/basic-file-storage.js +50 -0
  27. package/dist/cache/file-storage.d.ts +25 -11
  28. package/dist/cache/file-storage.js +175 -30
  29. package/dist/cache/memory-limits.d.ts +0 -1
  30. package/dist/cache/memory-storage.d.ts +0 -1
  31. package/dist/cache/redis-storage.d.ts +0 -1
  32. package/dist/cli/handler.d.ts +2 -1
  33. package/dist/cli/handler.js +36 -5
  34. package/dist/cli/index.d.ts +0 -2
  35. package/dist/cli/index.js +559 -6
  36. package/dist/cli/presets.d.ts +0 -1
  37. package/dist/cli/tui/ai-chat.d.ts +0 -1
  38. package/dist/cli/tui/load-dashboard.d.ts +0 -1
  39. package/dist/cli/tui/scroll-buffer.d.ts +0 -1
  40. package/dist/cli/tui/search-panel.d.ts +0 -1
  41. package/dist/cli/tui/shell-search.d.ts +0 -1
  42. package/dist/cli/tui/shell.d.ts +0 -1
  43. package/dist/cli/tui/shell.js +1 -1
  44. package/dist/cli/tui/websocket.d.ts +0 -1
  45. package/dist/constants/http-status.d.ts +0 -1
  46. package/dist/constants.d.ts +0 -1
  47. package/dist/contract/index.d.ts +0 -1
  48. package/dist/cookies/memory-cookie-jar.d.ts +0 -1
  49. package/dist/core/client.d.ts +0 -1
  50. package/dist/core/client.js +1 -1
  51. package/dist/core/errors.d.ts +0 -1
  52. package/dist/core/index.d.ts +0 -1
  53. package/dist/core/request-promise.d.ts +0 -1
  54. package/dist/core/request.d.ts +0 -1
  55. package/dist/core/response.d.ts +0 -1
  56. package/dist/dns/index.d.ts +0 -1
  57. package/dist/dns/propagation.d.ts +0 -1
  58. package/dist/events/request-events.d.ts +0 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.js +1 -0
  61. package/dist/mcp/client.d.ts +0 -1
  62. package/dist/mcp/contract.d.ts +0 -1
  63. package/dist/mcp/embeddings-loader.d.ts +0 -1
  64. package/dist/mcp/geoip-loader.d.ts +0 -1
  65. package/dist/mcp/index.d.ts +0 -1
  66. package/dist/mcp/ip-intel.d.ts +0 -1
  67. package/dist/mcp/search/hybrid-search.d.ts +0 -1
  68. package/dist/mcp/search/index.d.ts +0 -1
  69. package/dist/mcp/search/math.d.ts +0 -1
  70. package/dist/mcp/search/types.d.ts +0 -1
  71. package/dist/mcp/server.d.ts +6 -2
  72. package/dist/mcp/server.js +193 -151
  73. package/dist/mcp/tools/loader.d.ts +2 -0
  74. package/dist/mcp/tools/loader.js +41 -0
  75. package/dist/mcp/tools/network.d.ts +3 -0
  76. package/dist/mcp/tools/network.js +267 -0
  77. package/dist/mcp/tools/registry.d.ts +17 -0
  78. package/dist/mcp/tools/registry.js +37 -0
  79. package/dist/mcp/types.d.ts +0 -1
  80. package/dist/plugins/auth/api-key.d.ts +8 -0
  81. package/dist/plugins/auth/api-key.js +27 -0
  82. package/dist/plugins/auth/auth0.d.ts +33 -0
  83. package/dist/plugins/auth/auth0.js +94 -0
  84. package/dist/plugins/auth/aws-sigv4.d.ts +10 -0
  85. package/dist/plugins/auth/aws-sigv4.js +88 -0
  86. package/dist/plugins/auth/azure-ad.d.ts +48 -0
  87. package/dist/plugins/auth/azure-ad.js +152 -0
  88. package/dist/plugins/auth/basic.d.ts +7 -0
  89. package/dist/plugins/auth/basic.js +13 -0
  90. package/dist/plugins/auth/bearer.d.ts +8 -0
  91. package/dist/plugins/auth/bearer.js +17 -0
  92. package/dist/plugins/auth/cognito.d.ts +45 -0
  93. package/dist/plugins/auth/cognito.js +208 -0
  94. package/dist/plugins/auth/digest.d.ts +8 -0
  95. package/dist/plugins/auth/digest.js +100 -0
  96. package/dist/plugins/auth/firebase.d.ts +32 -0
  97. package/dist/plugins/auth/firebase.js +195 -0
  98. package/dist/plugins/auth/github-app.d.ts +36 -0
  99. package/dist/plugins/auth/github-app.js +170 -0
  100. package/dist/plugins/auth/google-service-account.d.ts +49 -0
  101. package/dist/plugins/auth/google-service-account.js +172 -0
  102. package/dist/plugins/auth/index.d.ts +15 -0
  103. package/dist/plugins/auth/index.js +15 -0
  104. package/dist/plugins/auth/mtls.d.ts +37 -0
  105. package/dist/plugins/auth/mtls.js +140 -0
  106. package/dist/plugins/auth/oauth2.d.ts +8 -0
  107. package/dist/plugins/auth/oauth2.js +26 -0
  108. package/dist/plugins/auth/oidc.d.ts +55 -0
  109. package/dist/plugins/auth/oidc.js +222 -0
  110. package/dist/plugins/auth/okta.d.ts +47 -0
  111. package/dist/plugins/auth/okta.js +157 -0
  112. package/dist/plugins/auth.d.ts +1 -45
  113. package/dist/plugins/auth.js +1 -268
  114. package/dist/plugins/cache.d.ts +0 -1
  115. package/dist/plugins/cache.js +1 -1
  116. package/dist/plugins/certificate-pinning.d.ts +59 -0
  117. package/dist/plugins/certificate-pinning.js +236 -0
  118. package/dist/plugins/circuit-breaker.d.ts +0 -1
  119. package/dist/plugins/compression.d.ts +0 -1
  120. package/dist/plugins/cookie-jar.d.ts +0 -1
  121. package/dist/plugins/dedup.d.ts +0 -1
  122. package/dist/plugins/graphql.d.ts +0 -1
  123. package/dist/plugins/grpc-web.d.ts +0 -1
  124. package/dist/plugins/har-player.d.ts +0 -1
  125. package/dist/plugins/har-recorder.d.ts +0 -1
  126. package/dist/plugins/hls.d.ts +0 -1
  127. package/dist/plugins/http2-push.d.ts +0 -1
  128. package/dist/plugins/http3.d.ts +0 -1
  129. package/dist/plugins/index.d.ts +27 -0
  130. package/dist/plugins/index.js +27 -0
  131. package/dist/plugins/interface-rotator.d.ts +0 -1
  132. package/dist/plugins/jsonrpc.d.ts +0 -1
  133. package/dist/plugins/logger.d.ts +0 -1
  134. package/dist/plugins/odata.d.ts +0 -1
  135. package/dist/plugins/pagination.d.ts +0 -1
  136. package/dist/plugins/proxy-rotator.d.ts +0 -1
  137. package/dist/plugins/rate-limit.d.ts +15 -0
  138. package/dist/plugins/rate-limit.js +162 -0
  139. package/dist/plugins/retry.d.ts +0 -1
  140. package/dist/plugins/retry.js +2 -2
  141. package/dist/plugins/scrape.d.ts +0 -1
  142. package/dist/plugins/server-timing.d.ts +0 -1
  143. package/dist/plugins/soap.d.ts +0 -1
  144. package/dist/plugins/user-agent.d.ts +0 -1
  145. package/dist/plugins/xml.d.ts +0 -1
  146. package/dist/plugins/xsrf.d.ts +0 -1
  147. package/dist/presets/anthropic.d.ts +0 -1
  148. package/dist/presets/aws.d.ts +0 -1
  149. package/dist/presets/azure-openai.d.ts +0 -1
  150. package/dist/presets/azure.d.ts +0 -1
  151. package/dist/presets/cloudflare.d.ts +0 -1
  152. package/dist/presets/cohere.d.ts +0 -1
  153. package/dist/presets/deepseek.d.ts +0 -1
  154. package/dist/presets/digitalocean.d.ts +0 -1
  155. package/dist/presets/discord.d.ts +0 -1
  156. package/dist/presets/fireworks.d.ts +0 -1
  157. package/dist/presets/gcp.d.ts +0 -1
  158. package/dist/presets/gemini.d.ts +0 -1
  159. package/dist/presets/github.d.ts +0 -1
  160. package/dist/presets/gitlab.d.ts +0 -1
  161. package/dist/presets/groq.d.ts +0 -1
  162. package/dist/presets/huggingface.d.ts +0 -1
  163. package/dist/presets/index.d.ts +0 -1
  164. package/dist/presets/linear.d.ts +0 -1
  165. package/dist/presets/mailgun.d.ts +0 -1
  166. package/dist/presets/meta.d.ts +0 -1
  167. package/dist/presets/mistral.d.ts +0 -1
  168. package/dist/presets/notion.d.ts +0 -1
  169. package/dist/presets/openai.d.ts +0 -1
  170. package/dist/presets/oracle.d.ts +0 -1
  171. package/dist/presets/perplexity.d.ts +0 -1
  172. package/dist/presets/registry.d.ts +0 -1
  173. package/dist/presets/replicate.d.ts +0 -1
  174. package/dist/presets/sinch.d.ts +0 -1
  175. package/dist/presets/slack.d.ts +0 -1
  176. package/dist/presets/stripe.d.ts +0 -1
  177. package/dist/presets/supabase.d.ts +0 -1
  178. package/dist/presets/tiktok.d.ts +0 -1
  179. package/dist/presets/together.d.ts +0 -1
  180. package/dist/presets/twilio.d.ts +0 -1
  181. package/dist/presets/vercel.d.ts +0 -1
  182. package/dist/presets/vultr.d.ts +0 -1
  183. package/dist/presets/xai.d.ts +0 -1
  184. package/dist/presets/youtube.d.ts +0 -1
  185. package/dist/protocols/ftp.d.ts +0 -1
  186. package/dist/protocols/index.d.ts +0 -1
  187. package/dist/protocols/sftp.d.ts +0 -1
  188. package/dist/protocols/telnet.d.ts +0 -1
  189. package/dist/recker.d.ts +0 -1
  190. package/dist/runner/request-runner.d.ts +0 -1
  191. package/dist/scrape/document.d.ts +0 -1
  192. package/dist/scrape/element.d.ts +0 -1
  193. package/dist/scrape/extractors.d.ts +0 -1
  194. package/dist/scrape/index.d.ts +0 -1
  195. package/dist/scrape/types.d.ts +0 -1
  196. package/dist/testing/index.d.ts +16 -1
  197. package/dist/testing/index.js +8 -0
  198. package/dist/testing/mock-dns-server.d.ts +69 -0
  199. package/dist/testing/mock-dns-server.js +269 -0
  200. package/dist/testing/mock-ftp-server.d.ts +89 -0
  201. package/dist/testing/mock-ftp-server.js +562 -0
  202. package/dist/testing/mock-hls-server.d.ts +80 -0
  203. package/dist/testing/mock-hls-server.js +381 -0
  204. package/dist/testing/mock-http-server.d.ts +99 -0
  205. package/dist/testing/mock-http-server.js +298 -0
  206. package/dist/testing/mock-sse-server.d.ts +76 -0
  207. package/dist/testing/mock-sse-server.js +291 -0
  208. package/dist/testing/mock-telnet-server.d.ts +59 -0
  209. package/dist/testing/mock-telnet-server.js +273 -0
  210. package/dist/testing/mock-udp-server.d.ts +0 -1
  211. package/dist/testing/mock-websocket-server.d.ts +77 -0
  212. package/dist/testing/mock-websocket-server.js +316 -0
  213. package/dist/testing/mock-whois-server.d.ts +56 -0
  214. package/dist/testing/mock-whois-server.js +234 -0
  215. package/dist/testing/mock.d.ts +0 -1
  216. package/dist/transport/base-udp.d.ts +0 -1
  217. package/dist/transport/fetch.d.ts +0 -1
  218. package/dist/transport/udp-response.d.ts +0 -1
  219. package/dist/transport/udp.d.ts +0 -1
  220. package/dist/transport/undici.d.ts +0 -1
  221. package/dist/transport/undici.js +1 -1
  222. package/dist/types/ai.d.ts +0 -1
  223. package/dist/types/index.d.ts +0 -1
  224. package/dist/types/logger.d.ts +0 -1
  225. package/dist/types/udp.d.ts +0 -1
  226. package/dist/udp/index.d.ts +0 -1
  227. package/dist/utils/agent-manager.d.ts +0 -1
  228. package/dist/utils/body.d.ts +0 -1
  229. package/dist/utils/cert.d.ts +0 -1
  230. package/dist/utils/charset.d.ts +0 -1
  231. package/dist/utils/chart.d.ts +0 -1
  232. package/dist/utils/client-pool.d.ts +0 -1
  233. package/dist/utils/colors.d.ts +0 -1
  234. package/dist/utils/concurrency.d.ts +0 -1
  235. package/dist/utils/dns-toolkit.d.ts +0 -1
  236. package/dist/utils/dns-toolkit.js +1 -1
  237. package/dist/utils/dns.d.ts +0 -1
  238. package/dist/utils/dns.js +2 -2
  239. package/dist/utils/doh.d.ts +0 -1
  240. package/dist/utils/download.d.ts +0 -1
  241. package/dist/utils/env-proxy.d.ts +0 -1
  242. package/dist/utils/header-parser.d.ts +0 -1
  243. package/dist/utils/html-cleaner.d.ts +0 -1
  244. package/dist/utils/link-header.d.ts +0 -1
  245. package/dist/utils/optional-require.d.ts +0 -1
  246. package/dist/utils/optional-require.js +1 -1
  247. package/dist/utils/progress.d.ts +0 -1
  248. package/dist/utils/rdap.d.ts +0 -1
  249. package/dist/utils/request-pool.d.ts +0 -1
  250. package/dist/utils/security-grader.d.ts +0 -1
  251. package/dist/utils/sparkline.d.ts +0 -1
  252. package/dist/utils/sse.d.ts +0 -1
  253. package/dist/utils/streaming.d.ts +0 -1
  254. package/dist/utils/system-metrics.d.ts +0 -1
  255. package/dist/utils/tls-inspector.d.ts +0 -1
  256. package/dist/utils/try-fn.d.ts +0 -1
  257. package/dist/utils/upload.d.ts +0 -1
  258. package/dist/utils/user-agent.d.ts +0 -1
  259. package/dist/utils/whois.d.ts +0 -1
  260. package/dist/webrtc/index.d.ts +0 -1
  261. package/dist/webrtc/index.js +1 -1
  262. package/dist/websocket/client.d.ts +0 -1
  263. package/package.json +12 -3
  264. package/dist/ai/adaptive-timeout.d.ts.map +0 -1
  265. package/dist/ai/client.d.ts.map +0 -1
  266. package/dist/ai/index.d.ts.map +0 -1
  267. package/dist/ai/providers/anthropic.d.ts.map +0 -1
  268. package/dist/ai/providers/base.d.ts.map +0 -1
  269. package/dist/ai/providers/index.d.ts.map +0 -1
  270. package/dist/ai/providers/openai.d.ts.map +0 -1
  271. package/dist/ai/rate-limiter.d.ts.map +0 -1
  272. package/dist/bench/generator.d.ts.map +0 -1
  273. package/dist/bench/stats.d.ts.map +0 -1
  274. package/dist/cache/file-storage.d.ts.map +0 -1
  275. package/dist/cache/memory-limits.d.ts.map +0 -1
  276. package/dist/cache/memory-storage.d.ts.map +0 -1
  277. package/dist/cache/redis-storage.d.ts.map +0 -1
  278. package/dist/cli/handler.d.ts.map +0 -1
  279. package/dist/cli/index.d.ts.map +0 -1
  280. package/dist/cli/presets.d.ts.map +0 -1
  281. package/dist/cli/tui/ai-chat.d.ts.map +0 -1
  282. package/dist/cli/tui/load-dashboard.d.ts.map +0 -1
  283. package/dist/cli/tui/scroll-buffer.d.ts.map +0 -1
  284. package/dist/cli/tui/search-panel.d.ts.map +0 -1
  285. package/dist/cli/tui/shell-search.d.ts.map +0 -1
  286. package/dist/cli/tui/shell.d.ts.map +0 -1
  287. package/dist/cli/tui/websocket.d.ts.map +0 -1
  288. package/dist/constants/http-status.d.ts.map +0 -1
  289. package/dist/constants.d.ts.map +0 -1
  290. package/dist/contract/index.d.ts.map +0 -1
  291. package/dist/cookies/memory-cookie-jar.d.ts.map +0 -1
  292. package/dist/core/client.d.ts.map +0 -1
  293. package/dist/core/errors.d.ts.map +0 -1
  294. package/dist/core/index.d.ts.map +0 -1
  295. package/dist/core/request-promise.d.ts.map +0 -1
  296. package/dist/core/request.d.ts.map +0 -1
  297. package/dist/core/response.d.ts.map +0 -1
  298. package/dist/dns/index.d.ts.map +0 -1
  299. package/dist/dns/propagation.d.ts.map +0 -1
  300. package/dist/events/request-events.d.ts.map +0 -1
  301. package/dist/index.d.ts.map +0 -1
  302. package/dist/mcp/client.d.ts.map +0 -1
  303. package/dist/mcp/contract.d.ts.map +0 -1
  304. package/dist/mcp/embeddings-loader.d.ts.map +0 -1
  305. package/dist/mcp/geoip-loader.d.ts.map +0 -1
  306. package/dist/mcp/index.d.ts.map +0 -1
  307. package/dist/mcp/ip-intel.d.ts.map +0 -1
  308. package/dist/mcp/search/hybrid-search.d.ts.map +0 -1
  309. package/dist/mcp/search/index.d.ts.map +0 -1
  310. package/dist/mcp/search/math.d.ts.map +0 -1
  311. package/dist/mcp/search/types.d.ts.map +0 -1
  312. package/dist/mcp/server.d.ts.map +0 -1
  313. package/dist/mcp/types.d.ts.map +0 -1
  314. package/dist/plugins/auth.d.ts.map +0 -1
  315. package/dist/plugins/cache.d.ts.map +0 -1
  316. package/dist/plugins/circuit-breaker.d.ts.map +0 -1
  317. package/dist/plugins/compression.d.ts.map +0 -1
  318. package/dist/plugins/cookie-jar.d.ts.map +0 -1
  319. package/dist/plugins/dedup.d.ts.map +0 -1
  320. package/dist/plugins/graphql.d.ts.map +0 -1
  321. package/dist/plugins/grpc-web.d.ts.map +0 -1
  322. package/dist/plugins/har-player.d.ts.map +0 -1
  323. package/dist/plugins/har-recorder.d.ts.map +0 -1
  324. package/dist/plugins/hls.d.ts.map +0 -1
  325. package/dist/plugins/http2-push.d.ts.map +0 -1
  326. package/dist/plugins/http3.d.ts.map +0 -1
  327. package/dist/plugins/interface-rotator.d.ts.map +0 -1
  328. package/dist/plugins/jsonrpc.d.ts.map +0 -1
  329. package/dist/plugins/logger.d.ts.map +0 -1
  330. package/dist/plugins/odata.d.ts.map +0 -1
  331. package/dist/plugins/pagination.d.ts.map +0 -1
  332. package/dist/plugins/proxy-rotator.d.ts.map +0 -1
  333. package/dist/plugins/retry.d.ts.map +0 -1
  334. package/dist/plugins/scrape.d.ts.map +0 -1
  335. package/dist/plugins/server-timing.d.ts.map +0 -1
  336. package/dist/plugins/soap.d.ts.map +0 -1
  337. package/dist/plugins/user-agent.d.ts.map +0 -1
  338. package/dist/plugins/xml.d.ts.map +0 -1
  339. package/dist/plugins/xsrf.d.ts.map +0 -1
  340. package/dist/presets/anthropic.d.ts.map +0 -1
  341. package/dist/presets/aws.d.ts.map +0 -1
  342. package/dist/presets/azure-openai.d.ts.map +0 -1
  343. package/dist/presets/azure.d.ts.map +0 -1
  344. package/dist/presets/cloudflare.d.ts.map +0 -1
  345. package/dist/presets/cohere.d.ts.map +0 -1
  346. package/dist/presets/deepseek.d.ts.map +0 -1
  347. package/dist/presets/digitalocean.d.ts.map +0 -1
  348. package/dist/presets/discord.d.ts.map +0 -1
  349. package/dist/presets/fireworks.d.ts.map +0 -1
  350. package/dist/presets/gcp.d.ts.map +0 -1
  351. package/dist/presets/gemini.d.ts.map +0 -1
  352. package/dist/presets/github.d.ts.map +0 -1
  353. package/dist/presets/gitlab.d.ts.map +0 -1
  354. package/dist/presets/groq.d.ts.map +0 -1
  355. package/dist/presets/huggingface.d.ts.map +0 -1
  356. package/dist/presets/index.d.ts.map +0 -1
  357. package/dist/presets/linear.d.ts.map +0 -1
  358. package/dist/presets/mailgun.d.ts.map +0 -1
  359. package/dist/presets/meta.d.ts.map +0 -1
  360. package/dist/presets/mistral.d.ts.map +0 -1
  361. package/dist/presets/notion.d.ts.map +0 -1
  362. package/dist/presets/openai.d.ts.map +0 -1
  363. package/dist/presets/oracle.d.ts.map +0 -1
  364. package/dist/presets/perplexity.d.ts.map +0 -1
  365. package/dist/presets/registry.d.ts.map +0 -1
  366. package/dist/presets/replicate.d.ts.map +0 -1
  367. package/dist/presets/sinch.d.ts.map +0 -1
  368. package/dist/presets/slack.d.ts.map +0 -1
  369. package/dist/presets/stripe.d.ts.map +0 -1
  370. package/dist/presets/supabase.d.ts.map +0 -1
  371. package/dist/presets/tiktok.d.ts.map +0 -1
  372. package/dist/presets/together.d.ts.map +0 -1
  373. package/dist/presets/twilio.d.ts.map +0 -1
  374. package/dist/presets/vercel.d.ts.map +0 -1
  375. package/dist/presets/vultr.d.ts.map +0 -1
  376. package/dist/presets/xai.d.ts.map +0 -1
  377. package/dist/presets/youtube.d.ts.map +0 -1
  378. package/dist/protocols/ftp.d.ts.map +0 -1
  379. package/dist/protocols/index.d.ts.map +0 -1
  380. package/dist/protocols/sftp.d.ts.map +0 -1
  381. package/dist/protocols/telnet.d.ts.map +0 -1
  382. package/dist/recker.d.ts.map +0 -1
  383. package/dist/runner/request-runner.d.ts.map +0 -1
  384. package/dist/scrape/document.d.ts.map +0 -1
  385. package/dist/scrape/element.d.ts.map +0 -1
  386. package/dist/scrape/extractors.d.ts.map +0 -1
  387. package/dist/scrape/index.d.ts.map +0 -1
  388. package/dist/scrape/types.d.ts.map +0 -1
  389. package/dist/testing/index.d.ts.map +0 -1
  390. package/dist/testing/mock-udp-server.d.ts.map +0 -1
  391. package/dist/testing/mock.d.ts.map +0 -1
  392. package/dist/transport/base-udp.d.ts.map +0 -1
  393. package/dist/transport/fetch.d.ts.map +0 -1
  394. package/dist/transport/udp-response.d.ts.map +0 -1
  395. package/dist/transport/udp.d.ts.map +0 -1
  396. package/dist/transport/undici.d.ts.map +0 -1
  397. package/dist/types/ai.d.ts.map +0 -1
  398. package/dist/types/index.d.ts.map +0 -1
  399. package/dist/types/logger.d.ts.map +0 -1
  400. package/dist/types/udp.d.ts.map +0 -1
  401. package/dist/udp/index.d.ts.map +0 -1
  402. package/dist/utils/agent-manager.d.ts.map +0 -1
  403. package/dist/utils/body.d.ts.map +0 -1
  404. package/dist/utils/cert.d.ts.map +0 -1
  405. package/dist/utils/charset.d.ts.map +0 -1
  406. package/dist/utils/chart.d.ts.map +0 -1
  407. package/dist/utils/client-pool.d.ts.map +0 -1
  408. package/dist/utils/colors.d.ts.map +0 -1
  409. package/dist/utils/concurrency.d.ts.map +0 -1
  410. package/dist/utils/dns-toolkit.d.ts.map +0 -1
  411. package/dist/utils/dns.d.ts.map +0 -1
  412. package/dist/utils/doh.d.ts.map +0 -1
  413. package/dist/utils/download.d.ts.map +0 -1
  414. package/dist/utils/env-proxy.d.ts.map +0 -1
  415. package/dist/utils/header-parser.d.ts.map +0 -1
  416. package/dist/utils/html-cleaner.d.ts.map +0 -1
  417. package/dist/utils/link-header.d.ts.map +0 -1
  418. package/dist/utils/optional-require.d.ts.map +0 -1
  419. package/dist/utils/progress.d.ts.map +0 -1
  420. package/dist/utils/rdap.d.ts.map +0 -1
  421. package/dist/utils/request-pool.d.ts.map +0 -1
  422. package/dist/utils/security-grader.d.ts.map +0 -1
  423. package/dist/utils/sparkline.d.ts.map +0 -1
  424. package/dist/utils/sse.d.ts.map +0 -1
  425. package/dist/utils/streaming.d.ts.map +0 -1
  426. package/dist/utils/system-metrics.d.ts.map +0 -1
  427. package/dist/utils/tls-inspector.d.ts.map +0 -1
  428. package/dist/utils/try-fn.d.ts.map +0 -1
  429. package/dist/utils/upload.d.ts.map +0 -1
  430. package/dist/utils/user-agent.d.ts.map +0 -1
  431. package/dist/utils/whois.d.ts.map +0 -1
  432. package/dist/webrtc/index.d.ts.map +0 -1
  433. package/dist/websocket/client.d.ts.map +0 -1
@@ -1,50 +1,195 @@
1
- import { mkdir, readFile, writeFile, unlink, rm } from 'node:fs/promises';
1
+ import { promises as fs, existsSync, mkdirSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { createHash } from 'node:crypto';
4
- import { existsSync } from 'node:fs';
5
- export class FileStorage {
6
- dir;
7
- constructor(baseDir = '.recker/cache') {
8
- this.dir = baseDir;
3
+ import { tmpdir } from 'node:os';
4
+ export class FileSystemStorage {
5
+ cacheDir;
6
+ defaultTtl;
7
+ cleanupInterval;
8
+ maxSize;
9
+ cleanupTimer = null;
10
+ constructor(options = {}) {
11
+ this.cacheDir = options.path || join(tmpdir(), 'recker-cache');
12
+ this.defaultTtl = options.ttl ?? 300000;
13
+ this.cleanupInterval = options.cleanupInterval ?? 60000;
14
+ this.maxSize = options.maxSize ?? 0;
15
+ this.initCacheDir();
16
+ if (this.cleanupInterval > 0) {
17
+ this.cleanupTimer = setInterval(() => this.cleanupExpired(), this.cleanupInterval);
18
+ this.cleanupTimer.unref();
19
+ }
9
20
  }
10
- getHash(key) {
11
- return createHash('md5').update(key).digest('hex');
21
+ initCacheDir() {
22
+ if (!existsSync(this.cacheDir)) {
23
+ mkdirSync(this.cacheDir, { recursive: true });
24
+ }
12
25
  }
13
- getPath(key) {
14
- return join(this.dir, `${this.getHash(key)}.json`);
26
+ getFilePath(key) {
27
+ const safeKey = Buffer.from(key).toString('base64url');
28
+ return join(this.cacheDir, safeKey + '.json');
15
29
  }
16
- async ensureDir() {
17
- if (!existsSync(this.dir)) {
18
- await mkdir(this.dir, { recursive: true });
30
+ async isExpired(filePath, entry) {
31
+ const now = Date.now();
32
+ if (entry.expires && now > entry.expires) {
33
+ return true;
34
+ }
35
+ try {
36
+ const stats = await fs.stat(filePath);
37
+ const fileAge = now - stats.mtimeMs;
38
+ if (fileAge > (entry.maxAge ? entry.maxAge * 1000 : this.defaultTtl)) {
39
+ return true;
40
+ }
19
41
  }
42
+ catch (error) {
43
+ if (error.code === 'ENOENT') {
44
+ return true;
45
+ }
46
+ throw error;
47
+ }
48
+ return false;
20
49
  }
21
50
  async get(key) {
51
+ const filePath = this.getFilePath(key);
22
52
  try {
23
- const path = this.getPath(key);
24
- if (!existsSync(path))
53
+ const fileContent = await fs.readFile(filePath, 'utf8');
54
+ const entry = JSON.parse(fileContent);
55
+ if (await this.isExpired(filePath, entry)) {
56
+ await this.delete(key);
25
57
  return undefined;
26
- const content = await readFile(path, 'utf-8');
27
- const data = JSON.parse(content);
28
- return data;
58
+ }
59
+ return entry;
29
60
  }
30
61
  catch (error) {
31
- return undefined;
62
+ if (error.code === 'ENOENT') {
63
+ return undefined;
64
+ }
65
+ else if (error instanceof SyntaxError) {
66
+ await this.delete(key);
67
+ return undefined;
68
+ }
69
+ throw error;
32
70
  }
33
71
  }
34
- async set(key, entry, ttl) {
35
- await this.ensureDir();
36
- const path = this.getPath(key);
37
- await writeFile(path, JSON.stringify(entry), 'utf-8');
72
+ async set(key, value, ttl) {
73
+ const filePath = this.getFilePath(key);
74
+ const effectiveTtl = ttl ?? this.defaultTtl;
75
+ const now = Date.now();
76
+ if (!value.expires || value.expires < now) {
77
+ value.expires = now + effectiveTtl;
78
+ }
79
+ const fileContent = JSON.stringify(value);
80
+ try {
81
+ await fs.writeFile(filePath, fileContent, 'utf8');
82
+ if (this.maxSize > 0) {
83
+ await this.enforceMaxSize();
84
+ }
85
+ }
86
+ catch (error) {
87
+ console.error(`Error writing cache file ${filePath}:`, error);
88
+ }
38
89
  }
39
90
  async delete(key) {
40
- const path = this.getPath(key);
41
- if (existsSync(path)) {
42
- await unlink(path);
91
+ const filePath = this.getFilePath(key);
92
+ try {
93
+ await fs.unlink(filePath);
94
+ }
95
+ catch (error) {
96
+ if (error.code !== 'ENOENT') {
97
+ console.error(`Error deleting cache file ${filePath}:`, error);
98
+ }
99
+ }
100
+ }
101
+ async clear(prefix) {
102
+ const files = await fs.readdir(this.cacheDir);
103
+ for (const file of files) {
104
+ const filePath = join(this.cacheDir, file);
105
+ const key = Buffer.from(file.replace(/\.json$/, ''), 'base64url').toString('utf8');
106
+ if (!prefix || key.startsWith(prefix)) {
107
+ try {
108
+ await fs.unlink(filePath);
109
+ }
110
+ catch (error) {
111
+ console.error(`Error clearing cache file ${filePath}:`, error);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ async size() {
117
+ const files = await fs.readdir(this.cacheDir);
118
+ return files.length;
119
+ }
120
+ async keys() {
121
+ const files = await fs.readdir(this.cacheDir);
122
+ const keys = [];
123
+ for (const file of files) {
124
+ keys.push(Buffer.from(file.replace(/\.json$/, ''), 'base64url').toString('utf8'));
125
+ }
126
+ return keys;
127
+ }
128
+ async cleanupExpired() {
129
+ const files = await fs.readdir(this.cacheDir);
130
+ const now = Date.now();
131
+ const candidates = [];
132
+ for (const file of files) {
133
+ const filePath = join(this.cacheDir, file);
134
+ try {
135
+ const stats = await fs.stat(filePath);
136
+ const fileContent = await fs.readFile(filePath, 'utf8');
137
+ const entry = JSON.parse(fileContent);
138
+ if (entry.expires && now > entry.expires) {
139
+ await fs.unlink(filePath);
140
+ continue;
141
+ }
142
+ if (!entry.expires && (now - stats.mtimeMs) > this.defaultTtl) {
143
+ await fs.unlink(filePath);
144
+ continue;
145
+ }
146
+ candidates.push({ path: filePath, entry, mtimeMs: stats.mtimeMs });
147
+ }
148
+ catch (error) {
149
+ if (error.code !== 'ENOENT' && error instanceof SyntaxError) {
150
+ console.error(`Warning: Corrupted cache file ${filePath}, deleting...`, error);
151
+ }
152
+ await fs.unlink(filePath).catch(() => { });
153
+ }
154
+ }
155
+ if (this.maxSize > 0) {
156
+ await this.enforceMaxSize();
157
+ }
158
+ }
159
+ async enforceMaxSize() {
160
+ if (this.maxSize <= 0)
161
+ return;
162
+ let files = await fs.readdir(this.cacheDir);
163
+ if (files.length <= this.maxSize)
164
+ return;
165
+ const fileStats = await Promise.all(files.map(async (file) => {
166
+ const filePath = join(this.cacheDir, file);
167
+ try {
168
+ const stats = await fs.stat(filePath);
169
+ return { path: filePath, mtimeMs: stats.mtimeMs };
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }));
175
+ const validFiles = fileStats.filter(s => s !== null);
176
+ validFiles.sort((a, b) => a.mtimeMs - b.mtimeMs);
177
+ while (validFiles.length > this.maxSize) {
178
+ const oldestFile = validFiles.shift();
179
+ if (oldestFile) {
180
+ try {
181
+ await fs.unlink(oldestFile.path);
182
+ }
183
+ catch (error) {
184
+ console.error(`Error enforcing maxSize for file ${oldestFile.path}:`, error);
185
+ }
186
+ }
43
187
  }
44
188
  }
45
- async clear() {
46
- if (existsSync(this.dir)) {
47
- await rm(this.dir, { recursive: true, force: true });
189
+ shutdown() {
190
+ if (this.cleanupTimer) {
191
+ clearInterval(this.cleanupTimer);
192
+ this.cleanupTimer = null;
48
193
  }
49
194
  }
50
195
  }
@@ -18,4 +18,3 @@ export declare function getHeapStats(): {
18
18
  heapLimit: number;
19
19
  heapRatio: number;
20
20
  };
21
- //# sourceMappingURL=memory-limits.d.ts.map
@@ -130,4 +130,3 @@ export declare class MemoryStorage implements CacheStorage {
130
130
  private memoryHealthCheck;
131
131
  private cleanupExpired;
132
132
  }
133
- //# sourceMappingURL=memory-storage.d.ts.map
@@ -13,4 +13,3 @@ export declare class RedisStorage implements CacheStorage {
13
13
  delete(key: string): Promise<void>;
14
14
  }
15
15
  export {};
16
- //# sourceMappingURL=redis-storage.d.ts.map
@@ -4,8 +4,9 @@ interface RequestOptions {
4
4
  headers: Record<string, string>;
5
5
  body?: any;
6
6
  verbose?: boolean;
7
+ quiet?: boolean;
8
+ output?: string;
7
9
  presetConfig?: any;
8
10
  }
9
11
  export declare function handleRequest(options: RequestOptions): Promise<void>;
10
12
  export {};
11
- //# sourceMappingURL=handler.d.ts.map
@@ -17,7 +17,14 @@ async function initDependencies() {
17
17
  }
18
18
  export async function handleRequest(options) {
19
19
  await initDependencies();
20
- const spinner = ora({
20
+ if (options.quiet) {
21
+ process.stdout.on('error', (err) => {
22
+ if (err.code === 'EPIPE') {
23
+ process.exit(0);
24
+ }
25
+ });
26
+ }
27
+ const spinner = options.quiet ? null : ora({
21
28
  text: `${colors.bold(options.method)} ${colors.cyan(options.url)}`,
22
29
  color: 'cyan',
23
30
  spinner: 'dots'
@@ -64,7 +71,24 @@ export async function handleRequest(options) {
64
71
  body: requestBody
65
72
  });
66
73
  const duration = Math.round(performance.now() - start);
67
- spinner.stop();
74
+ spinner?.stop();
75
+ const contentType = response.headers.get('content-type') || '';
76
+ const text = await response.text();
77
+ if (options.quiet) {
78
+ if (options.output) {
79
+ const fsPromises = await import('node:fs/promises');
80
+ await fsPromises.writeFile(options.output, text);
81
+ if (!response.ok) {
82
+ process.exit(1);
83
+ }
84
+ return;
85
+ }
86
+ process.stdout.write(text);
87
+ if (!response.ok) {
88
+ process.exit(1);
89
+ }
90
+ return;
91
+ }
68
92
  const statusColor = response.ok ? colors.green : colors.red;
69
93
  console.log(`${statusColor(colors.bold(response.status))} ${statusColor(response.statusText)} ` +
70
94
  `${colors.gray(`(${duration}ms)`)}`);
@@ -86,8 +110,12 @@ export async function handleRequest(options) {
86
110
  });
87
111
  console.log(colors.gray('------------------------\n'));
88
112
  }
89
- const contentType = response.headers.get('content-type') || '';
90
- const text = await response.text();
113
+ if (options.output) {
114
+ const fsPromises = await import('node:fs/promises');
115
+ await fsPromises.writeFile(options.output, text);
116
+ console.log(colors.green(`✓ Saved to ${options.output}`));
117
+ return;
118
+ }
91
119
  if (!text)
92
120
  return;
93
121
  if (contentType.includes('application/json')) {
@@ -105,7 +133,10 @@ export async function handleRequest(options) {
105
133
  }
106
134
  }
107
135
  catch (error) {
108
- spinner.fail(colors.red('Request Failed'));
136
+ if (options.quiet) {
137
+ process.exit(1);
138
+ }
139
+ spinner?.fail(colors.red('Request Failed'));
109
140
  throw error;
110
141
  }
111
142
  }
@@ -1,3 +1 @@
1
- #!/usr/bin/env node
2
1
  export {};
3
- //# sourceMappingURL=index.d.ts.map