recker 1.0.20 → 1.0.21-next.ab2d00f

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 (449) hide show
  1. package/README.md +55 -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 +2 -1
  50. package/dist/core/client.js +11 -7
  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 +2 -1
  60. package/dist/index.js +2 -0
  61. package/dist/mcp/cli.d.ts +2 -0
  62. package/dist/mcp/cli.js +136 -0
  63. package/dist/mcp/client.d.ts +0 -1
  64. package/dist/mcp/contract.d.ts +0 -1
  65. package/dist/mcp/embeddings-loader.d.ts +0 -1
  66. package/dist/mcp/geoip-loader.d.ts +0 -1
  67. package/dist/mcp/index.d.ts +0 -1
  68. package/dist/mcp/ip-intel.d.ts +0 -1
  69. package/dist/mcp/search/hybrid-search.d.ts +0 -1
  70. package/dist/mcp/search/index.d.ts +0 -1
  71. package/dist/mcp/search/math.d.ts +0 -1
  72. package/dist/mcp/search/types.d.ts +0 -1
  73. package/dist/mcp/server.d.ts +6 -2
  74. package/dist/mcp/server.js +193 -151
  75. package/dist/mcp/tools/loader.d.ts +2 -0
  76. package/dist/mcp/tools/loader.js +41 -0
  77. package/dist/mcp/tools/network.d.ts +3 -0
  78. package/dist/mcp/tools/network.js +267 -0
  79. package/dist/mcp/tools/registry.d.ts +17 -0
  80. package/dist/mcp/tools/registry.js +37 -0
  81. package/dist/mcp/types.d.ts +0 -1
  82. package/dist/mini.d.ts +28 -0
  83. package/dist/mini.js +94 -0
  84. package/dist/plugins/auth/api-key.d.ts +8 -0
  85. package/dist/plugins/auth/api-key.js +27 -0
  86. package/dist/plugins/auth/auth0.d.ts +33 -0
  87. package/dist/plugins/auth/auth0.js +94 -0
  88. package/dist/plugins/auth/aws-sigv4.d.ts +10 -0
  89. package/dist/plugins/auth/aws-sigv4.js +88 -0
  90. package/dist/plugins/auth/azure-ad.d.ts +48 -0
  91. package/dist/plugins/auth/azure-ad.js +152 -0
  92. package/dist/plugins/auth/basic.d.ts +7 -0
  93. package/dist/plugins/auth/basic.js +13 -0
  94. package/dist/plugins/auth/bearer.d.ts +8 -0
  95. package/dist/plugins/auth/bearer.js +17 -0
  96. package/dist/plugins/auth/cognito.d.ts +45 -0
  97. package/dist/plugins/auth/cognito.js +208 -0
  98. package/dist/plugins/auth/digest.d.ts +8 -0
  99. package/dist/plugins/auth/digest.js +100 -0
  100. package/dist/plugins/auth/firebase.d.ts +32 -0
  101. package/dist/plugins/auth/firebase.js +195 -0
  102. package/dist/plugins/auth/github-app.d.ts +36 -0
  103. package/dist/plugins/auth/github-app.js +170 -0
  104. package/dist/plugins/auth/google-service-account.d.ts +49 -0
  105. package/dist/plugins/auth/google-service-account.js +172 -0
  106. package/dist/plugins/auth/index.d.ts +15 -0
  107. package/dist/plugins/auth/index.js +15 -0
  108. package/dist/plugins/auth/mtls.d.ts +37 -0
  109. package/dist/plugins/auth/mtls.js +140 -0
  110. package/dist/plugins/auth/oauth2.d.ts +8 -0
  111. package/dist/plugins/auth/oauth2.js +26 -0
  112. package/dist/plugins/auth/oidc.d.ts +55 -0
  113. package/dist/plugins/auth/oidc.js +222 -0
  114. package/dist/plugins/auth/okta.d.ts +47 -0
  115. package/dist/plugins/auth/okta.js +157 -0
  116. package/dist/plugins/auth.d.ts +1 -45
  117. package/dist/plugins/auth.js +1 -268
  118. package/dist/plugins/cache.d.ts +1 -2
  119. package/dist/plugins/cache.js +2 -2
  120. package/dist/plugins/certificate-pinning.d.ts +59 -0
  121. package/dist/plugins/certificate-pinning.js +236 -0
  122. package/dist/plugins/circuit-breaker.d.ts +1 -2
  123. package/dist/plugins/circuit-breaker.js +1 -1
  124. package/dist/plugins/compression.d.ts +0 -1
  125. package/dist/plugins/cookie-jar.d.ts +1 -2
  126. package/dist/plugins/cookie-jar.js +1 -1
  127. package/dist/plugins/dedup.d.ts +1 -2
  128. package/dist/plugins/dedup.js +1 -1
  129. package/dist/plugins/graphql.d.ts +0 -1
  130. package/dist/plugins/grpc-web.d.ts +0 -1
  131. package/dist/plugins/har-player.d.ts +1 -2
  132. package/dist/plugins/har-player.js +1 -1
  133. package/dist/plugins/har-recorder.d.ts +1 -2
  134. package/dist/plugins/har-recorder.js +1 -1
  135. package/dist/plugins/hls.d.ts +90 -18
  136. package/dist/plugins/hls.js +343 -173
  137. package/dist/plugins/http2-push.d.ts +0 -1
  138. package/dist/plugins/http3.d.ts +0 -1
  139. package/dist/plugins/index.d.ts +27 -0
  140. package/dist/plugins/index.js +27 -0
  141. package/dist/plugins/interface-rotator.d.ts +1 -2
  142. package/dist/plugins/interface-rotator.js +1 -1
  143. package/dist/plugins/jsonrpc.d.ts +0 -1
  144. package/dist/plugins/logger.d.ts +1 -2
  145. package/dist/plugins/logger.js +1 -1
  146. package/dist/plugins/odata.d.ts +0 -1
  147. package/dist/plugins/pagination.d.ts +0 -1
  148. package/dist/plugins/proxy-rotator.d.ts +1 -2
  149. package/dist/plugins/proxy-rotator.js +1 -1
  150. package/dist/plugins/rate-limit.d.ts +15 -0
  151. package/dist/plugins/rate-limit.js +162 -0
  152. package/dist/plugins/retry.d.ts +1 -2
  153. package/dist/plugins/retry.js +3 -3
  154. package/dist/plugins/scrape.d.ts +0 -1
  155. package/dist/plugins/server-timing.d.ts +1 -2
  156. package/dist/plugins/server-timing.js +1 -1
  157. package/dist/plugins/soap.d.ts +0 -1
  158. package/dist/plugins/user-agent.d.ts +1 -2
  159. package/dist/plugins/user-agent.js +1 -1
  160. package/dist/plugins/xml.d.ts +0 -1
  161. package/dist/plugins/xsrf.d.ts +1 -2
  162. package/dist/plugins/xsrf.js +3 -3
  163. package/dist/presets/anthropic.d.ts +0 -1
  164. package/dist/presets/aws.d.ts +0 -1
  165. package/dist/presets/azure-openai.d.ts +0 -1
  166. package/dist/presets/azure.d.ts +0 -1
  167. package/dist/presets/cloudflare.d.ts +0 -1
  168. package/dist/presets/cohere.d.ts +0 -1
  169. package/dist/presets/deepseek.d.ts +0 -1
  170. package/dist/presets/digitalocean.d.ts +0 -1
  171. package/dist/presets/discord.d.ts +0 -1
  172. package/dist/presets/fireworks.d.ts +0 -1
  173. package/dist/presets/gcp.d.ts +0 -1
  174. package/dist/presets/gemini.d.ts +0 -1
  175. package/dist/presets/github.d.ts +0 -1
  176. package/dist/presets/gitlab.d.ts +0 -1
  177. package/dist/presets/groq.d.ts +0 -1
  178. package/dist/presets/huggingface.d.ts +0 -1
  179. package/dist/presets/index.d.ts +0 -1
  180. package/dist/presets/linear.d.ts +0 -1
  181. package/dist/presets/mailgun.d.ts +0 -1
  182. package/dist/presets/meta.d.ts +0 -1
  183. package/dist/presets/mistral.d.ts +0 -1
  184. package/dist/presets/notion.d.ts +0 -1
  185. package/dist/presets/openai.d.ts +0 -1
  186. package/dist/presets/oracle.d.ts +0 -1
  187. package/dist/presets/perplexity.d.ts +0 -1
  188. package/dist/presets/registry.d.ts +0 -1
  189. package/dist/presets/replicate.d.ts +0 -1
  190. package/dist/presets/sinch.d.ts +0 -1
  191. package/dist/presets/slack.d.ts +0 -1
  192. package/dist/presets/stripe.d.ts +0 -1
  193. package/dist/presets/supabase.d.ts +0 -1
  194. package/dist/presets/tiktok.d.ts +0 -1
  195. package/dist/presets/together.d.ts +0 -1
  196. package/dist/presets/twilio.d.ts +0 -1
  197. package/dist/presets/vercel.d.ts +0 -1
  198. package/dist/presets/vultr.d.ts +0 -1
  199. package/dist/presets/xai.d.ts +0 -1
  200. package/dist/presets/youtube.d.ts +0 -1
  201. package/dist/protocols/ftp.d.ts +0 -1
  202. package/dist/protocols/index.d.ts +0 -1
  203. package/dist/protocols/sftp.d.ts +0 -1
  204. package/dist/protocols/telnet.d.ts +0 -1
  205. package/dist/recker.d.ts +0 -1
  206. package/dist/runner/request-runner.d.ts +0 -1
  207. package/dist/scrape/document.d.ts +0 -1
  208. package/dist/scrape/element.d.ts +0 -1
  209. package/dist/scrape/extractors.d.ts +0 -1
  210. package/dist/scrape/index.d.ts +0 -1
  211. package/dist/scrape/types.d.ts +0 -1
  212. package/dist/testing/index.d.ts +16 -1
  213. package/dist/testing/index.js +8 -0
  214. package/dist/testing/mock-dns-server.d.ts +69 -0
  215. package/dist/testing/mock-dns-server.js +269 -0
  216. package/dist/testing/mock-ftp-server.d.ts +89 -0
  217. package/dist/testing/mock-ftp-server.js +562 -0
  218. package/dist/testing/mock-hls-server.d.ts +80 -0
  219. package/dist/testing/mock-hls-server.js +381 -0
  220. package/dist/testing/mock-http-server.d.ts +99 -0
  221. package/dist/testing/mock-http-server.js +298 -0
  222. package/dist/testing/mock-sse-server.d.ts +76 -0
  223. package/dist/testing/mock-sse-server.js +291 -0
  224. package/dist/testing/mock-telnet-server.d.ts +59 -0
  225. package/dist/testing/mock-telnet-server.js +273 -0
  226. package/dist/testing/mock-udp-server.d.ts +0 -1
  227. package/dist/testing/mock-websocket-server.d.ts +77 -0
  228. package/dist/testing/mock-websocket-server.js +316 -0
  229. package/dist/testing/mock-whois-server.d.ts +56 -0
  230. package/dist/testing/mock-whois-server.js +234 -0
  231. package/dist/testing/mock.d.ts +0 -1
  232. package/dist/transport/base-udp.d.ts +0 -1
  233. package/dist/transport/fetch.d.ts +0 -1
  234. package/dist/transport/udp-response.d.ts +0 -1
  235. package/dist/transport/udp.d.ts +0 -1
  236. package/dist/transport/undici.d.ts +0 -1
  237. package/dist/transport/undici.js +1 -1
  238. package/dist/types/ai.d.ts +0 -1
  239. package/dist/types/index.d.ts +0 -1
  240. package/dist/types/logger.d.ts +0 -1
  241. package/dist/types/udp.d.ts +0 -1
  242. package/dist/udp/index.d.ts +0 -1
  243. package/dist/utils/agent-manager.d.ts +0 -1
  244. package/dist/utils/body.d.ts +0 -1
  245. package/dist/utils/cert.d.ts +0 -1
  246. package/dist/utils/charset.d.ts +0 -1
  247. package/dist/utils/chart.d.ts +0 -1
  248. package/dist/utils/client-pool.d.ts +0 -1
  249. package/dist/utils/colors.d.ts +0 -1
  250. package/dist/utils/concurrency.d.ts +0 -1
  251. package/dist/utils/dns-toolkit.d.ts +0 -1
  252. package/dist/utils/dns-toolkit.js +1 -1
  253. package/dist/utils/dns.d.ts +0 -1
  254. package/dist/utils/dns.js +2 -2
  255. package/dist/utils/doh.d.ts +0 -1
  256. package/dist/utils/download.d.ts +0 -1
  257. package/dist/utils/env-proxy.d.ts +0 -1
  258. package/dist/utils/header-parser.d.ts +0 -1
  259. package/dist/utils/html-cleaner.d.ts +0 -1
  260. package/dist/utils/link-header.d.ts +0 -1
  261. package/dist/utils/optional-require.d.ts +0 -1
  262. package/dist/utils/optional-require.js +1 -1
  263. package/dist/utils/progress.d.ts +0 -1
  264. package/dist/utils/rdap.d.ts +0 -1
  265. package/dist/utils/request-pool.d.ts +0 -1
  266. package/dist/utils/security-grader.d.ts +0 -1
  267. package/dist/utils/sparkline.d.ts +0 -1
  268. package/dist/utils/sse.d.ts +0 -1
  269. package/dist/utils/streaming.d.ts +0 -1
  270. package/dist/utils/system-metrics.d.ts +0 -1
  271. package/dist/utils/tls-inspector.d.ts +0 -1
  272. package/dist/utils/try-fn.d.ts +0 -1
  273. package/dist/utils/upload.d.ts +0 -1
  274. package/dist/utils/user-agent.d.ts +0 -1
  275. package/dist/utils/whois.d.ts +0 -1
  276. package/dist/webrtc/index.d.ts +0 -1
  277. package/dist/webrtc/index.js +1 -1
  278. package/dist/websocket/client.d.ts +0 -1
  279. package/package.json +39 -3
  280. package/dist/ai/adaptive-timeout.d.ts.map +0 -1
  281. package/dist/ai/client.d.ts.map +0 -1
  282. package/dist/ai/index.d.ts.map +0 -1
  283. package/dist/ai/providers/anthropic.d.ts.map +0 -1
  284. package/dist/ai/providers/base.d.ts.map +0 -1
  285. package/dist/ai/providers/index.d.ts.map +0 -1
  286. package/dist/ai/providers/openai.d.ts.map +0 -1
  287. package/dist/ai/rate-limiter.d.ts.map +0 -1
  288. package/dist/bench/generator.d.ts.map +0 -1
  289. package/dist/bench/stats.d.ts.map +0 -1
  290. package/dist/cache/file-storage.d.ts.map +0 -1
  291. package/dist/cache/memory-limits.d.ts.map +0 -1
  292. package/dist/cache/memory-storage.d.ts.map +0 -1
  293. package/dist/cache/redis-storage.d.ts.map +0 -1
  294. package/dist/cli/handler.d.ts.map +0 -1
  295. package/dist/cli/index.d.ts.map +0 -1
  296. package/dist/cli/presets.d.ts.map +0 -1
  297. package/dist/cli/tui/ai-chat.d.ts.map +0 -1
  298. package/dist/cli/tui/load-dashboard.d.ts.map +0 -1
  299. package/dist/cli/tui/scroll-buffer.d.ts.map +0 -1
  300. package/dist/cli/tui/search-panel.d.ts.map +0 -1
  301. package/dist/cli/tui/shell-search.d.ts.map +0 -1
  302. package/dist/cli/tui/shell.d.ts.map +0 -1
  303. package/dist/cli/tui/websocket.d.ts.map +0 -1
  304. package/dist/constants/http-status.d.ts.map +0 -1
  305. package/dist/constants.d.ts.map +0 -1
  306. package/dist/contract/index.d.ts.map +0 -1
  307. package/dist/cookies/memory-cookie-jar.d.ts.map +0 -1
  308. package/dist/core/client.d.ts.map +0 -1
  309. package/dist/core/errors.d.ts.map +0 -1
  310. package/dist/core/index.d.ts.map +0 -1
  311. package/dist/core/request-promise.d.ts.map +0 -1
  312. package/dist/core/request.d.ts.map +0 -1
  313. package/dist/core/response.d.ts.map +0 -1
  314. package/dist/dns/index.d.ts.map +0 -1
  315. package/dist/dns/propagation.d.ts.map +0 -1
  316. package/dist/events/request-events.d.ts.map +0 -1
  317. package/dist/index.d.ts.map +0 -1
  318. package/dist/mcp/client.d.ts.map +0 -1
  319. package/dist/mcp/contract.d.ts.map +0 -1
  320. package/dist/mcp/embeddings-loader.d.ts.map +0 -1
  321. package/dist/mcp/geoip-loader.d.ts.map +0 -1
  322. package/dist/mcp/index.d.ts.map +0 -1
  323. package/dist/mcp/ip-intel.d.ts.map +0 -1
  324. package/dist/mcp/search/hybrid-search.d.ts.map +0 -1
  325. package/dist/mcp/search/index.d.ts.map +0 -1
  326. package/dist/mcp/search/math.d.ts.map +0 -1
  327. package/dist/mcp/search/types.d.ts.map +0 -1
  328. package/dist/mcp/server.d.ts.map +0 -1
  329. package/dist/mcp/types.d.ts.map +0 -1
  330. package/dist/plugins/auth.d.ts.map +0 -1
  331. package/dist/plugins/cache.d.ts.map +0 -1
  332. package/dist/plugins/circuit-breaker.d.ts.map +0 -1
  333. package/dist/plugins/compression.d.ts.map +0 -1
  334. package/dist/plugins/cookie-jar.d.ts.map +0 -1
  335. package/dist/plugins/dedup.d.ts.map +0 -1
  336. package/dist/plugins/graphql.d.ts.map +0 -1
  337. package/dist/plugins/grpc-web.d.ts.map +0 -1
  338. package/dist/plugins/har-player.d.ts.map +0 -1
  339. package/dist/plugins/har-recorder.d.ts.map +0 -1
  340. package/dist/plugins/hls.d.ts.map +0 -1
  341. package/dist/plugins/http2-push.d.ts.map +0 -1
  342. package/dist/plugins/http3.d.ts.map +0 -1
  343. package/dist/plugins/interface-rotator.d.ts.map +0 -1
  344. package/dist/plugins/jsonrpc.d.ts.map +0 -1
  345. package/dist/plugins/logger.d.ts.map +0 -1
  346. package/dist/plugins/odata.d.ts.map +0 -1
  347. package/dist/plugins/pagination.d.ts.map +0 -1
  348. package/dist/plugins/proxy-rotator.d.ts.map +0 -1
  349. package/dist/plugins/retry.d.ts.map +0 -1
  350. package/dist/plugins/scrape.d.ts.map +0 -1
  351. package/dist/plugins/server-timing.d.ts.map +0 -1
  352. package/dist/plugins/soap.d.ts.map +0 -1
  353. package/dist/plugins/user-agent.d.ts.map +0 -1
  354. package/dist/plugins/xml.d.ts.map +0 -1
  355. package/dist/plugins/xsrf.d.ts.map +0 -1
  356. package/dist/presets/anthropic.d.ts.map +0 -1
  357. package/dist/presets/aws.d.ts.map +0 -1
  358. package/dist/presets/azure-openai.d.ts.map +0 -1
  359. package/dist/presets/azure.d.ts.map +0 -1
  360. package/dist/presets/cloudflare.d.ts.map +0 -1
  361. package/dist/presets/cohere.d.ts.map +0 -1
  362. package/dist/presets/deepseek.d.ts.map +0 -1
  363. package/dist/presets/digitalocean.d.ts.map +0 -1
  364. package/dist/presets/discord.d.ts.map +0 -1
  365. package/dist/presets/fireworks.d.ts.map +0 -1
  366. package/dist/presets/gcp.d.ts.map +0 -1
  367. package/dist/presets/gemini.d.ts.map +0 -1
  368. package/dist/presets/github.d.ts.map +0 -1
  369. package/dist/presets/gitlab.d.ts.map +0 -1
  370. package/dist/presets/groq.d.ts.map +0 -1
  371. package/dist/presets/huggingface.d.ts.map +0 -1
  372. package/dist/presets/index.d.ts.map +0 -1
  373. package/dist/presets/linear.d.ts.map +0 -1
  374. package/dist/presets/mailgun.d.ts.map +0 -1
  375. package/dist/presets/meta.d.ts.map +0 -1
  376. package/dist/presets/mistral.d.ts.map +0 -1
  377. package/dist/presets/notion.d.ts.map +0 -1
  378. package/dist/presets/openai.d.ts.map +0 -1
  379. package/dist/presets/oracle.d.ts.map +0 -1
  380. package/dist/presets/perplexity.d.ts.map +0 -1
  381. package/dist/presets/registry.d.ts.map +0 -1
  382. package/dist/presets/replicate.d.ts.map +0 -1
  383. package/dist/presets/sinch.d.ts.map +0 -1
  384. package/dist/presets/slack.d.ts.map +0 -1
  385. package/dist/presets/stripe.d.ts.map +0 -1
  386. package/dist/presets/supabase.d.ts.map +0 -1
  387. package/dist/presets/tiktok.d.ts.map +0 -1
  388. package/dist/presets/together.d.ts.map +0 -1
  389. package/dist/presets/twilio.d.ts.map +0 -1
  390. package/dist/presets/vercel.d.ts.map +0 -1
  391. package/dist/presets/vultr.d.ts.map +0 -1
  392. package/dist/presets/xai.d.ts.map +0 -1
  393. package/dist/presets/youtube.d.ts.map +0 -1
  394. package/dist/protocols/ftp.d.ts.map +0 -1
  395. package/dist/protocols/index.d.ts.map +0 -1
  396. package/dist/protocols/sftp.d.ts.map +0 -1
  397. package/dist/protocols/telnet.d.ts.map +0 -1
  398. package/dist/recker.d.ts.map +0 -1
  399. package/dist/runner/request-runner.d.ts.map +0 -1
  400. package/dist/scrape/document.d.ts.map +0 -1
  401. package/dist/scrape/element.d.ts.map +0 -1
  402. package/dist/scrape/extractors.d.ts.map +0 -1
  403. package/dist/scrape/index.d.ts.map +0 -1
  404. package/dist/scrape/types.d.ts.map +0 -1
  405. package/dist/testing/index.d.ts.map +0 -1
  406. package/dist/testing/mock-udp-server.d.ts.map +0 -1
  407. package/dist/testing/mock.d.ts.map +0 -1
  408. package/dist/transport/base-udp.d.ts.map +0 -1
  409. package/dist/transport/fetch.d.ts.map +0 -1
  410. package/dist/transport/udp-response.d.ts.map +0 -1
  411. package/dist/transport/udp.d.ts.map +0 -1
  412. package/dist/transport/undici.d.ts.map +0 -1
  413. package/dist/types/ai.d.ts.map +0 -1
  414. package/dist/types/index.d.ts.map +0 -1
  415. package/dist/types/logger.d.ts.map +0 -1
  416. package/dist/types/udp.d.ts.map +0 -1
  417. package/dist/udp/index.d.ts.map +0 -1
  418. package/dist/utils/agent-manager.d.ts.map +0 -1
  419. package/dist/utils/body.d.ts.map +0 -1
  420. package/dist/utils/cert.d.ts.map +0 -1
  421. package/dist/utils/charset.d.ts.map +0 -1
  422. package/dist/utils/chart.d.ts.map +0 -1
  423. package/dist/utils/client-pool.d.ts.map +0 -1
  424. package/dist/utils/colors.d.ts.map +0 -1
  425. package/dist/utils/concurrency.d.ts.map +0 -1
  426. package/dist/utils/dns-toolkit.d.ts.map +0 -1
  427. package/dist/utils/dns.d.ts.map +0 -1
  428. package/dist/utils/doh.d.ts.map +0 -1
  429. package/dist/utils/download.d.ts.map +0 -1
  430. package/dist/utils/env-proxy.d.ts.map +0 -1
  431. package/dist/utils/header-parser.d.ts.map +0 -1
  432. package/dist/utils/html-cleaner.d.ts.map +0 -1
  433. package/dist/utils/link-header.d.ts.map +0 -1
  434. package/dist/utils/optional-require.d.ts.map +0 -1
  435. package/dist/utils/progress.d.ts.map +0 -1
  436. package/dist/utils/rdap.d.ts.map +0 -1
  437. package/dist/utils/request-pool.d.ts.map +0 -1
  438. package/dist/utils/security-grader.d.ts.map +0 -1
  439. package/dist/utils/sparkline.d.ts.map +0 -1
  440. package/dist/utils/sse.d.ts.map +0 -1
  441. package/dist/utils/streaming.d.ts.map +0 -1
  442. package/dist/utils/system-metrics.d.ts.map +0 -1
  443. package/dist/utils/tls-inspector.d.ts.map +0 -1
  444. package/dist/utils/try-fn.d.ts.map +0 -1
  445. package/dist/utils/upload.d.ts.map +0 -1
  446. package/dist/utils/user-agent.d.ts.map +0 -1
  447. package/dist/utils/whois.d.ts.map +0 -1
  448. package/dist/webrtc/index.d.ts.map +0 -1
  449. package/dist/websocket/client.d.ts.map +0 -1
@@ -0,0 +1,222 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ const discoveryCache = new Map();
3
+ async function fetchDiscoveryDocument(issuer, customFetch = fetch) {
4
+ const cached = discoveryCache.get(issuer);
5
+ if (cached && cached.expiresAt > Date.now()) {
6
+ return cached.doc;
7
+ }
8
+ const wellKnownUrl = `${issuer.replace(/\/$/, '')}/.well-known/openid-configuration`;
9
+ const response = await customFetch(wellKnownUrl);
10
+ if (!response.ok) {
11
+ throw new Error(`Failed to fetch OIDC discovery document: ${response.status}`);
12
+ }
13
+ const doc = await response.json();
14
+ discoveryCache.set(issuer, {
15
+ doc,
16
+ expiresAt: Date.now() + 3600000,
17
+ });
18
+ return doc;
19
+ }
20
+ async function exchangeCode(discovery, options, code, codeVerifier, customFetch = fetch) {
21
+ const params = new URLSearchParams({
22
+ grant_type: 'authorization_code',
23
+ client_id: options.clientId,
24
+ code,
25
+ redirect_uri: options.redirectUri || '',
26
+ });
27
+ if (options.clientSecret) {
28
+ params.set('client_secret', options.clientSecret);
29
+ }
30
+ if (codeVerifier) {
31
+ params.set('code_verifier', codeVerifier);
32
+ }
33
+ const response = await customFetch(discovery.token_endpoint, {
34
+ method: 'POST',
35
+ headers: {
36
+ 'Content-Type': 'application/x-www-form-urlencoded',
37
+ },
38
+ body: params.toString(),
39
+ });
40
+ if (!response.ok) {
41
+ const error = await response.text();
42
+ throw new Error(`Token exchange failed: ${error}`);
43
+ }
44
+ const data = await response.json();
45
+ return {
46
+ accessToken: data.access_token,
47
+ refreshToken: data.refresh_token,
48
+ idToken: data.id_token,
49
+ expiresAt: data.expires_in ? Date.now() + data.expires_in * 1000 : undefined,
50
+ tokenType: data.token_type || 'Bearer',
51
+ };
52
+ }
53
+ async function refreshTokens(discovery, options, refreshToken, customFetch = fetch) {
54
+ const params = new URLSearchParams({
55
+ grant_type: 'refresh_token',
56
+ client_id: options.clientId,
57
+ refresh_token: refreshToken,
58
+ });
59
+ if (options.clientSecret) {
60
+ params.set('client_secret', options.clientSecret);
61
+ }
62
+ const response = await customFetch(discovery.token_endpoint, {
63
+ method: 'POST',
64
+ headers: {
65
+ 'Content-Type': 'application/x-www-form-urlencoded',
66
+ },
67
+ body: params.toString(),
68
+ });
69
+ if (!response.ok) {
70
+ const error = await response.text();
71
+ throw new Error(`Token refresh failed: ${error}`);
72
+ }
73
+ const data = await response.json();
74
+ return {
75
+ accessToken: data.access_token,
76
+ refreshToken: data.refresh_token || refreshToken,
77
+ idToken: data.id_token,
78
+ expiresAt: data.expires_in ? Date.now() + data.expires_in * 1000 : undefined,
79
+ tokenType: data.token_type || 'Bearer',
80
+ };
81
+ }
82
+ async function clientCredentialsFlow(discovery, options, customFetch = fetch) {
83
+ if (!options.clientSecret) {
84
+ throw new Error('Client credentials flow requires clientSecret');
85
+ }
86
+ const params = new URLSearchParams({
87
+ grant_type: 'client_credentials',
88
+ client_id: options.clientId,
89
+ client_secret: options.clientSecret,
90
+ });
91
+ if (options.scopes && options.scopes.length > 0) {
92
+ params.set('scope', options.scopes.join(' '));
93
+ }
94
+ if (options.audience) {
95
+ params.set('audience', options.audience);
96
+ }
97
+ const response = await customFetch(discovery.token_endpoint, {
98
+ method: 'POST',
99
+ headers: {
100
+ 'Content-Type': 'application/x-www-form-urlencoded',
101
+ },
102
+ body: params.toString(),
103
+ });
104
+ if (!response.ok) {
105
+ const error = await response.text();
106
+ throw new Error(`Client credentials flow failed: ${error}`);
107
+ }
108
+ const data = await response.json();
109
+ return {
110
+ accessToken: data.access_token,
111
+ expiresAt: data.expires_in ? Date.now() + data.expires_in * 1000 : undefined,
112
+ tokenType: data.token_type || 'Bearer',
113
+ };
114
+ }
115
+ export function generatePKCE() {
116
+ const codeVerifier = randomBytes(32).toString('base64url');
117
+ const codeChallenge = createHash('sha256')
118
+ .update(codeVerifier)
119
+ .digest('base64url');
120
+ return { codeVerifier, codeChallenge };
121
+ }
122
+ export async function generateAuthorizationUrl(options) {
123
+ const discovery = await fetchDiscoveryDocument(options.issuer, options.fetch);
124
+ const params = new URLSearchParams({
125
+ response_type: 'code',
126
+ client_id: options.clientId,
127
+ redirect_uri: options.redirectUri || '',
128
+ scope: (options.scopes || ['openid']).join(' '),
129
+ });
130
+ if (options.state) {
131
+ params.set('state', options.state);
132
+ }
133
+ if (options.nonce) {
134
+ params.set('nonce', options.nonce);
135
+ }
136
+ if (options.pkce) {
137
+ params.set('code_challenge', options.pkce.codeChallenge);
138
+ params.set('code_challenge_method', 'S256');
139
+ }
140
+ if (options.audience) {
141
+ params.set('audience', options.audience);
142
+ }
143
+ return `${discovery.authorization_endpoint}?${params.toString()}`;
144
+ }
145
+ export function oidc(options) {
146
+ let cachedTokens = null;
147
+ let discoveryDoc = null;
148
+ const customFetch = options.fetch || fetch;
149
+ const getDiscovery = async () => {
150
+ if (!discoveryDoc) {
151
+ discoveryDoc = await fetchDiscoveryDocument(options.issuer, customFetch);
152
+ }
153
+ return discoveryDoc;
154
+ };
155
+ const getTokens = async () => {
156
+ if (options.tokenStorage) {
157
+ const stored = await options.tokenStorage.get();
158
+ if (stored) {
159
+ cachedTokens = stored;
160
+ }
161
+ }
162
+ if (cachedTokens && cachedTokens.expiresAt && cachedTokens.expiresAt > Date.now() + 60000) {
163
+ return cachedTokens;
164
+ }
165
+ if (cachedTokens?.refreshToken || options.refreshToken) {
166
+ const discovery = await getDiscovery();
167
+ const refreshToken = cachedTokens?.refreshToken || options.refreshToken;
168
+ try {
169
+ cachedTokens = await refreshTokens(discovery, options, refreshToken, customFetch);
170
+ if (options.tokenStorage) {
171
+ await options.tokenStorage.set(cachedTokens);
172
+ }
173
+ return cachedTokens;
174
+ }
175
+ catch {
176
+ }
177
+ }
178
+ if (options.accessToken) {
179
+ const token = typeof options.accessToken === 'function'
180
+ ? await options.accessToken()
181
+ : options.accessToken;
182
+ return { accessToken: token, tokenType: 'Bearer' };
183
+ }
184
+ if (options.clientSecret) {
185
+ const discovery = await getDiscovery();
186
+ cachedTokens = await clientCredentialsFlow(discovery, options, customFetch);
187
+ if (options.tokenStorage) {
188
+ await options.tokenStorage.set(cachedTokens);
189
+ }
190
+ return cachedTokens;
191
+ }
192
+ throw new Error('No valid authentication method available. Provide accessToken, refreshToken, or clientSecret.');
193
+ };
194
+ return async (req, next) => {
195
+ const tokens = await getTokens();
196
+ const tokenType = tokens.tokenType || 'Bearer';
197
+ const authReq = req.withHeader('Authorization', `${tokenType} ${tokens.accessToken}`);
198
+ const response = await next(authReq);
199
+ if (response.status === 401 && (cachedTokens?.refreshToken || options.refreshToken)) {
200
+ try {
201
+ const discovery = await getDiscovery();
202
+ const refreshToken = cachedTokens?.refreshToken || options.refreshToken;
203
+ cachedTokens = await refreshTokens(discovery, options, refreshToken, customFetch);
204
+ if (options.tokenStorage) {
205
+ await options.tokenStorage.set(cachedTokens);
206
+ }
207
+ const retryReq = req.withHeader('Authorization', `${cachedTokens.tokenType || 'Bearer'} ${cachedTokens.accessToken}`);
208
+ return next(retryReq);
209
+ }
210
+ catch {
211
+ return response;
212
+ }
213
+ }
214
+ return response;
215
+ };
216
+ }
217
+ export function oidcPlugin(options) {
218
+ return (client) => {
219
+ client.use(oidc(options));
220
+ };
221
+ }
222
+ export { fetchDiscoveryDocument, exchangeCode, refreshTokens, clientCredentialsFlow };
@@ -0,0 +1,47 @@
1
+ import { Middleware, Plugin } from '../../types/index.js';
2
+ import { OIDCTokens } from './oidc.js';
3
+ export interface OktaOptions {
4
+ domain: string;
5
+ clientId: string;
6
+ clientSecret?: string;
7
+ authorizationServerId?: string;
8
+ scopes?: string[];
9
+ accessToken?: string | (() => string | Promise<string>);
10
+ refreshToken?: string;
11
+ tokenStorage?: {
12
+ get: () => Promise<OIDCTokens | null>;
13
+ set: (tokens: OIDCTokens) => Promise<void>;
14
+ };
15
+ apiToken?: string;
16
+ }
17
+ export declare function generateOktaAuthUrl(options: OktaOptions & {
18
+ redirectUri: string;
19
+ state?: string;
20
+ nonce?: string;
21
+ usePKCE?: boolean;
22
+ prompt?: 'none' | 'consent' | 'login';
23
+ idp?: string;
24
+ loginHint?: string;
25
+ }): Promise<{
26
+ url: string;
27
+ codeVerifier?: string;
28
+ }>;
29
+ export declare function exchangeOktaCode(options: OktaOptions & {
30
+ code: string;
31
+ redirectUri: string;
32
+ codeVerifier?: string;
33
+ }): Promise<OIDCTokens>;
34
+ export declare function getOktaUserInfo(domain: string, authorizationServerId: string | undefined, accessToken: string): Promise<Record<string, unknown>>;
35
+ export declare function introspectOktaToken(options: OktaOptions & {
36
+ token: string;
37
+ tokenTypeHint?: 'access_token' | 'refresh_token';
38
+ }): Promise<{
39
+ active: boolean;
40
+ [key: string]: unknown;
41
+ }>;
42
+ export declare function revokeOktaToken(options: OktaOptions & {
43
+ token: string;
44
+ tokenTypeHint?: 'access_token' | 'refresh_token';
45
+ }): Promise<void>;
46
+ export declare function okta(options: OktaOptions): Middleware;
47
+ export declare function oktaPlugin(options: OktaOptions): Plugin;
@@ -0,0 +1,157 @@
1
+ import { oidc, generatePKCE } from './oidc.js';
2
+ function getOktaIssuer(domain, authorizationServerId) {
3
+ const serverId = authorizationServerId || 'default';
4
+ return `https://${domain}/oauth2/${serverId}`;
5
+ }
6
+ export async function generateOktaAuthUrl(options) {
7
+ const issuer = getOktaIssuer(options.domain, options.authorizationServerId);
8
+ const pkce = options.usePKCE ? generatePKCE() : undefined;
9
+ const params = new URLSearchParams({
10
+ response_type: 'code',
11
+ client_id: options.clientId,
12
+ redirect_uri: options.redirectUri,
13
+ scope: (options.scopes || ['openid', 'profile', 'email']).join(' '),
14
+ });
15
+ if (options.state) {
16
+ params.set('state', options.state);
17
+ }
18
+ if (options.nonce) {
19
+ params.set('nonce', options.nonce);
20
+ }
21
+ if (pkce) {
22
+ params.set('code_challenge', pkce.codeChallenge);
23
+ params.set('code_challenge_method', 'S256');
24
+ }
25
+ if (options.prompt) {
26
+ params.set('prompt', options.prompt);
27
+ }
28
+ if (options.idp) {
29
+ params.set('idp', options.idp);
30
+ }
31
+ if (options.loginHint) {
32
+ params.set('login_hint', options.loginHint);
33
+ }
34
+ return {
35
+ url: `${issuer}/v1/authorize?${params.toString()}`,
36
+ codeVerifier: pkce?.codeVerifier,
37
+ };
38
+ }
39
+ export async function exchangeOktaCode(options) {
40
+ const issuer = getOktaIssuer(options.domain, options.authorizationServerId);
41
+ const tokenUrl = `${issuer}/v1/token`;
42
+ const params = new URLSearchParams({
43
+ grant_type: 'authorization_code',
44
+ client_id: options.clientId,
45
+ code: options.code,
46
+ redirect_uri: options.redirectUri,
47
+ });
48
+ if (options.clientSecret) {
49
+ params.set('client_secret', options.clientSecret);
50
+ }
51
+ if (options.codeVerifier) {
52
+ params.set('code_verifier', options.codeVerifier);
53
+ }
54
+ const response = await fetch(tokenUrl, {
55
+ method: 'POST',
56
+ headers: {
57
+ 'Content-Type': 'application/x-www-form-urlencoded',
58
+ Accept: 'application/json',
59
+ },
60
+ body: params.toString(),
61
+ });
62
+ if (!response.ok) {
63
+ const error = await response.text();
64
+ throw new Error(`Okta token exchange failed: ${error}`);
65
+ }
66
+ const data = await response.json();
67
+ return {
68
+ accessToken: data.access_token,
69
+ refreshToken: data.refresh_token,
70
+ idToken: data.id_token,
71
+ expiresAt: data.expires_in ? Date.now() + data.expires_in * 1000 : undefined,
72
+ tokenType: data.token_type || 'Bearer',
73
+ };
74
+ }
75
+ export async function getOktaUserInfo(domain, authorizationServerId, accessToken) {
76
+ const issuer = getOktaIssuer(domain, authorizationServerId);
77
+ const response = await fetch(`${issuer}/v1/userinfo`, {
78
+ headers: {
79
+ Authorization: `Bearer ${accessToken}`,
80
+ },
81
+ });
82
+ if (!response.ok) {
83
+ throw new Error(`Failed to get user info: ${response.status}`);
84
+ }
85
+ return response.json();
86
+ }
87
+ export async function introspectOktaToken(options) {
88
+ const issuer = getOktaIssuer(options.domain, options.authorizationServerId);
89
+ const params = new URLSearchParams({
90
+ token: options.token,
91
+ client_id: options.clientId,
92
+ });
93
+ if (options.clientSecret) {
94
+ params.set('client_secret', options.clientSecret);
95
+ }
96
+ if (options.tokenTypeHint) {
97
+ params.set('token_type_hint', options.tokenTypeHint);
98
+ }
99
+ const response = await fetch(`${issuer}/v1/introspect`, {
100
+ method: 'POST',
101
+ headers: {
102
+ 'Content-Type': 'application/x-www-form-urlencoded',
103
+ Accept: 'application/json',
104
+ },
105
+ body: params.toString(),
106
+ });
107
+ if (!response.ok) {
108
+ throw new Error(`Token introspection failed: ${response.status}`);
109
+ }
110
+ return response.json();
111
+ }
112
+ export async function revokeOktaToken(options) {
113
+ const issuer = getOktaIssuer(options.domain, options.authorizationServerId);
114
+ const params = new URLSearchParams({
115
+ token: options.token,
116
+ client_id: options.clientId,
117
+ });
118
+ if (options.clientSecret) {
119
+ params.set('client_secret', options.clientSecret);
120
+ }
121
+ if (options.tokenTypeHint) {
122
+ params.set('token_type_hint', options.tokenTypeHint);
123
+ }
124
+ const response = await fetch(`${issuer}/v1/revoke`, {
125
+ method: 'POST',
126
+ headers: {
127
+ 'Content-Type': 'application/x-www-form-urlencoded',
128
+ },
129
+ body: params.toString(),
130
+ });
131
+ if (!response.ok) {
132
+ throw new Error(`Token revocation failed: ${response.status}`);
133
+ }
134
+ }
135
+ export function okta(options) {
136
+ if (options.apiToken) {
137
+ return async (req, next) => {
138
+ const authReq = req.withHeader('Authorization', `SSWS ${options.apiToken}`);
139
+ return next(authReq);
140
+ };
141
+ }
142
+ const issuer = getOktaIssuer(options.domain, options.authorizationServerId);
143
+ return oidc({
144
+ issuer,
145
+ clientId: options.clientId,
146
+ clientSecret: options.clientSecret,
147
+ scopes: options.scopes || ['openid', 'profile', 'email'],
148
+ accessToken: options.accessToken,
149
+ refreshToken: options.refreshToken,
150
+ tokenStorage: options.tokenStorage,
151
+ });
152
+ }
153
+ export function oktaPlugin(options) {
154
+ return (client) => {
155
+ client.use(okta(options));
156
+ };
157
+ }
@@ -1,45 +1 @@
1
- import { Middleware, Plugin } from '../types/index.js';
2
- export interface BasicAuthOptions {
3
- username: string;
4
- password: string;
5
- }
6
- export declare function basicAuth(options: BasicAuthOptions): Middleware;
7
- export declare function basicAuthPlugin(options: BasicAuthOptions): Plugin;
8
- export interface BearerAuthOptions {
9
- token: string | (() => string | Promise<string>);
10
- type?: string;
11
- headerName?: string;
12
- }
13
- export declare function bearerAuth(options: BearerAuthOptions): Middleware;
14
- export declare function bearerAuthPlugin(options: BearerAuthOptions): Plugin;
15
- export interface ApiKeyAuthOptions {
16
- key: string | (() => string | Promise<string>);
17
- in?: 'header' | 'query';
18
- name?: string;
19
- }
20
- export declare function apiKeyAuth(options: ApiKeyAuthOptions): Middleware;
21
- export declare function apiKeyAuthPlugin(options: ApiKeyAuthOptions): Plugin;
22
- export interface DigestAuthOptions {
23
- username: string;
24
- password: string;
25
- preemptive?: boolean;
26
- }
27
- export declare function digestAuth(options: DigestAuthOptions): Middleware;
28
- export declare function digestAuthPlugin(options: DigestAuthOptions): Plugin;
29
- export interface OAuth2Options {
30
- accessToken: string | (() => string | Promise<string>);
31
- tokenType?: string;
32
- onTokenExpired?: () => Promise<string>;
33
- }
34
- export declare function oauth2(options: OAuth2Options): Middleware;
35
- export declare function oauth2Plugin(options: OAuth2Options): Plugin;
36
- export interface AWSSignatureV4Options {
37
- accessKeyId: string;
38
- secretAccessKey: string;
39
- region: string;
40
- service: string;
41
- sessionToken?: string;
42
- }
43
- export declare function awsSignatureV4(options: AWSSignatureV4Options): Middleware;
44
- export declare function awsSignatureV4Plugin(options: AWSSignatureV4Options): Plugin;
45
- //# sourceMappingURL=auth.d.ts.map
1
+ export * from './auth/index.js';