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.
- package/README.md +31 -0
- package/dist/ai/adaptive-timeout.d.ts +0 -1
- package/dist/ai/client.d.ts +0 -1
- package/dist/ai/client.js +6 -0
- package/dist/ai/index.d.ts +3 -1
- package/dist/ai/index.js +3 -0
- package/dist/ai/providers/anthropic.d.ts +0 -1
- package/dist/ai/providers/base.d.ts +0 -1
- package/dist/ai/providers/google.d.ts +59 -0
- package/dist/ai/providers/google.js +305 -0
- package/dist/ai/providers/index.d.ts +4 -1
- package/dist/ai/providers/index.js +2 -0
- package/dist/ai/providers/ollama.d.ts +44 -0
- package/dist/ai/providers/ollama.js +240 -0
- package/dist/ai/providers/openai.d.ts +0 -1
- package/dist/ai/rate-limiter.d.ts +0 -1
- package/dist/ai/vector/index.d.ts +2 -0
- package/dist/ai/vector/index.js +2 -0
- package/dist/ai/vector/similarity.d.ts +2 -0
- package/dist/ai/vector/similarity.js +27 -0
- package/dist/ai/vector/store.d.ts +27 -0
- package/dist/ai/vector/store.js +82 -0
- package/dist/bench/generator.d.ts +0 -1
- package/dist/bench/stats.d.ts +0 -1
- package/dist/cache/basic-file-storage.d.ts +12 -0
- package/dist/cache/basic-file-storage.js +50 -0
- package/dist/cache/file-storage.d.ts +25 -11
- package/dist/cache/file-storage.js +175 -30
- package/dist/cache/memory-limits.d.ts +0 -1
- package/dist/cache/memory-storage.d.ts +0 -1
- package/dist/cache/redis-storage.d.ts +0 -1
- package/dist/cli/handler.d.ts +2 -1
- package/dist/cli/handler.js +36 -5
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.js +559 -6
- package/dist/cli/presets.d.ts +0 -1
- package/dist/cli/tui/ai-chat.d.ts +0 -1
- package/dist/cli/tui/load-dashboard.d.ts +0 -1
- package/dist/cli/tui/scroll-buffer.d.ts +0 -1
- package/dist/cli/tui/search-panel.d.ts +0 -1
- package/dist/cli/tui/shell-search.d.ts +0 -1
- package/dist/cli/tui/shell.d.ts +0 -1
- package/dist/cli/tui/shell.js +1 -1
- package/dist/cli/tui/websocket.d.ts +0 -1
- package/dist/constants/http-status.d.ts +0 -1
- package/dist/constants.d.ts +0 -1
- package/dist/contract/index.d.ts +0 -1
- package/dist/cookies/memory-cookie-jar.d.ts +0 -1
- package/dist/core/client.d.ts +0 -1
- package/dist/core/client.js +1 -1
- package/dist/core/errors.d.ts +0 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/request-promise.d.ts +0 -1
- package/dist/core/request.d.ts +0 -1
- package/dist/core/response.d.ts +0 -1
- package/dist/dns/index.d.ts +0 -1
- package/dist/dns/propagation.d.ts +0 -1
- package/dist/events/request-events.d.ts +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/mcp/client.d.ts +0 -1
- package/dist/mcp/contract.d.ts +0 -1
- package/dist/mcp/embeddings-loader.d.ts +0 -1
- package/dist/mcp/geoip-loader.d.ts +0 -1
- package/dist/mcp/index.d.ts +0 -1
- package/dist/mcp/ip-intel.d.ts +0 -1
- package/dist/mcp/search/hybrid-search.d.ts +0 -1
- package/dist/mcp/search/index.d.ts +0 -1
- package/dist/mcp/search/math.d.ts +0 -1
- package/dist/mcp/search/types.d.ts +0 -1
- package/dist/mcp/server.d.ts +6 -2
- package/dist/mcp/server.js +193 -151
- package/dist/mcp/tools/loader.d.ts +2 -0
- package/dist/mcp/tools/loader.js +41 -0
- package/dist/mcp/tools/network.d.ts +3 -0
- package/dist/mcp/tools/network.js +267 -0
- package/dist/mcp/tools/registry.d.ts +17 -0
- package/dist/mcp/tools/registry.js +37 -0
- package/dist/mcp/types.d.ts +0 -1
- package/dist/plugins/auth/api-key.d.ts +8 -0
- package/dist/plugins/auth/api-key.js +27 -0
- package/dist/plugins/auth/auth0.d.ts +33 -0
- package/dist/plugins/auth/auth0.js +94 -0
- package/dist/plugins/auth/aws-sigv4.d.ts +10 -0
- package/dist/plugins/auth/aws-sigv4.js +88 -0
- package/dist/plugins/auth/azure-ad.d.ts +48 -0
- package/dist/plugins/auth/azure-ad.js +152 -0
- package/dist/plugins/auth/basic.d.ts +7 -0
- package/dist/plugins/auth/basic.js +13 -0
- package/dist/plugins/auth/bearer.d.ts +8 -0
- package/dist/plugins/auth/bearer.js +17 -0
- package/dist/plugins/auth/cognito.d.ts +45 -0
- package/dist/plugins/auth/cognito.js +208 -0
- package/dist/plugins/auth/digest.d.ts +8 -0
- package/dist/plugins/auth/digest.js +100 -0
- package/dist/plugins/auth/firebase.d.ts +32 -0
- package/dist/plugins/auth/firebase.js +195 -0
- package/dist/plugins/auth/github-app.d.ts +36 -0
- package/dist/plugins/auth/github-app.js +170 -0
- package/dist/plugins/auth/google-service-account.d.ts +49 -0
- package/dist/plugins/auth/google-service-account.js +172 -0
- package/dist/plugins/auth/index.d.ts +15 -0
- package/dist/plugins/auth/index.js +15 -0
- package/dist/plugins/auth/mtls.d.ts +37 -0
- package/dist/plugins/auth/mtls.js +140 -0
- package/dist/plugins/auth/oauth2.d.ts +8 -0
- package/dist/plugins/auth/oauth2.js +26 -0
- package/dist/plugins/auth/oidc.d.ts +55 -0
- package/dist/plugins/auth/oidc.js +222 -0
- package/dist/plugins/auth/okta.d.ts +47 -0
- package/dist/plugins/auth/okta.js +157 -0
- package/dist/plugins/auth.d.ts +1 -45
- package/dist/plugins/auth.js +1 -268
- package/dist/plugins/cache.d.ts +0 -1
- package/dist/plugins/cache.js +1 -1
- package/dist/plugins/certificate-pinning.d.ts +59 -0
- package/dist/plugins/certificate-pinning.js +236 -0
- package/dist/plugins/circuit-breaker.d.ts +0 -1
- package/dist/plugins/compression.d.ts +0 -1
- package/dist/plugins/cookie-jar.d.ts +0 -1
- package/dist/plugins/dedup.d.ts +0 -1
- package/dist/plugins/graphql.d.ts +0 -1
- package/dist/plugins/grpc-web.d.ts +0 -1
- package/dist/plugins/har-player.d.ts +0 -1
- package/dist/plugins/har-recorder.d.ts +0 -1
- package/dist/plugins/hls.d.ts +0 -1
- package/dist/plugins/http2-push.d.ts +0 -1
- package/dist/plugins/http3.d.ts +0 -1
- package/dist/plugins/index.d.ts +27 -0
- package/dist/plugins/index.js +27 -0
- package/dist/plugins/interface-rotator.d.ts +0 -1
- package/dist/plugins/jsonrpc.d.ts +0 -1
- package/dist/plugins/logger.d.ts +0 -1
- package/dist/plugins/odata.d.ts +0 -1
- package/dist/plugins/pagination.d.ts +0 -1
- package/dist/plugins/proxy-rotator.d.ts +0 -1
- package/dist/plugins/rate-limit.d.ts +15 -0
- package/dist/plugins/rate-limit.js +162 -0
- package/dist/plugins/retry.d.ts +0 -1
- package/dist/plugins/retry.js +2 -2
- package/dist/plugins/scrape.d.ts +0 -1
- package/dist/plugins/server-timing.d.ts +0 -1
- package/dist/plugins/soap.d.ts +0 -1
- package/dist/plugins/user-agent.d.ts +0 -1
- package/dist/plugins/xml.d.ts +0 -1
- package/dist/plugins/xsrf.d.ts +0 -1
- package/dist/presets/anthropic.d.ts +0 -1
- package/dist/presets/aws.d.ts +0 -1
- package/dist/presets/azure-openai.d.ts +0 -1
- package/dist/presets/azure.d.ts +0 -1
- package/dist/presets/cloudflare.d.ts +0 -1
- package/dist/presets/cohere.d.ts +0 -1
- package/dist/presets/deepseek.d.ts +0 -1
- package/dist/presets/digitalocean.d.ts +0 -1
- package/dist/presets/discord.d.ts +0 -1
- package/dist/presets/fireworks.d.ts +0 -1
- package/dist/presets/gcp.d.ts +0 -1
- package/dist/presets/gemini.d.ts +0 -1
- package/dist/presets/github.d.ts +0 -1
- package/dist/presets/gitlab.d.ts +0 -1
- package/dist/presets/groq.d.ts +0 -1
- package/dist/presets/huggingface.d.ts +0 -1
- package/dist/presets/index.d.ts +0 -1
- package/dist/presets/linear.d.ts +0 -1
- package/dist/presets/mailgun.d.ts +0 -1
- package/dist/presets/meta.d.ts +0 -1
- package/dist/presets/mistral.d.ts +0 -1
- package/dist/presets/notion.d.ts +0 -1
- package/dist/presets/openai.d.ts +0 -1
- package/dist/presets/oracle.d.ts +0 -1
- package/dist/presets/perplexity.d.ts +0 -1
- package/dist/presets/registry.d.ts +0 -1
- package/dist/presets/replicate.d.ts +0 -1
- package/dist/presets/sinch.d.ts +0 -1
- package/dist/presets/slack.d.ts +0 -1
- package/dist/presets/stripe.d.ts +0 -1
- package/dist/presets/supabase.d.ts +0 -1
- package/dist/presets/tiktok.d.ts +0 -1
- package/dist/presets/together.d.ts +0 -1
- package/dist/presets/twilio.d.ts +0 -1
- package/dist/presets/vercel.d.ts +0 -1
- package/dist/presets/vultr.d.ts +0 -1
- package/dist/presets/xai.d.ts +0 -1
- package/dist/presets/youtube.d.ts +0 -1
- package/dist/protocols/ftp.d.ts +0 -1
- package/dist/protocols/index.d.ts +0 -1
- package/dist/protocols/sftp.d.ts +0 -1
- package/dist/protocols/telnet.d.ts +0 -1
- package/dist/recker.d.ts +0 -1
- package/dist/runner/request-runner.d.ts +0 -1
- package/dist/scrape/document.d.ts +0 -1
- package/dist/scrape/element.d.ts +0 -1
- package/dist/scrape/extractors.d.ts +0 -1
- package/dist/scrape/index.d.ts +0 -1
- package/dist/scrape/types.d.ts +0 -1
- package/dist/testing/index.d.ts +16 -1
- package/dist/testing/index.js +8 -0
- package/dist/testing/mock-dns-server.d.ts +69 -0
- package/dist/testing/mock-dns-server.js +269 -0
- package/dist/testing/mock-ftp-server.d.ts +89 -0
- package/dist/testing/mock-ftp-server.js +562 -0
- package/dist/testing/mock-hls-server.d.ts +80 -0
- package/dist/testing/mock-hls-server.js +381 -0
- package/dist/testing/mock-http-server.d.ts +99 -0
- package/dist/testing/mock-http-server.js +298 -0
- package/dist/testing/mock-sse-server.d.ts +76 -0
- package/dist/testing/mock-sse-server.js +291 -0
- package/dist/testing/mock-telnet-server.d.ts +59 -0
- package/dist/testing/mock-telnet-server.js +273 -0
- package/dist/testing/mock-udp-server.d.ts +0 -1
- package/dist/testing/mock-websocket-server.d.ts +77 -0
- package/dist/testing/mock-websocket-server.js +316 -0
- package/dist/testing/mock-whois-server.d.ts +56 -0
- package/dist/testing/mock-whois-server.js +234 -0
- package/dist/testing/mock.d.ts +0 -1
- package/dist/transport/base-udp.d.ts +0 -1
- package/dist/transport/fetch.d.ts +0 -1
- package/dist/transport/udp-response.d.ts +0 -1
- package/dist/transport/udp.d.ts +0 -1
- package/dist/transport/undici.d.ts +0 -1
- package/dist/transport/undici.js +1 -1
- package/dist/types/ai.d.ts +0 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/logger.d.ts +0 -1
- package/dist/types/udp.d.ts +0 -1
- package/dist/udp/index.d.ts +0 -1
- package/dist/utils/agent-manager.d.ts +0 -1
- package/dist/utils/body.d.ts +0 -1
- package/dist/utils/cert.d.ts +0 -1
- package/dist/utils/charset.d.ts +0 -1
- package/dist/utils/chart.d.ts +0 -1
- package/dist/utils/client-pool.d.ts +0 -1
- package/dist/utils/colors.d.ts +0 -1
- package/dist/utils/concurrency.d.ts +0 -1
- package/dist/utils/dns-toolkit.d.ts +0 -1
- package/dist/utils/dns-toolkit.js +1 -1
- package/dist/utils/dns.d.ts +0 -1
- package/dist/utils/dns.js +2 -2
- package/dist/utils/doh.d.ts +0 -1
- package/dist/utils/download.d.ts +0 -1
- package/dist/utils/env-proxy.d.ts +0 -1
- package/dist/utils/header-parser.d.ts +0 -1
- package/dist/utils/html-cleaner.d.ts +0 -1
- package/dist/utils/link-header.d.ts +0 -1
- package/dist/utils/optional-require.d.ts +0 -1
- package/dist/utils/optional-require.js +1 -1
- package/dist/utils/progress.d.ts +0 -1
- package/dist/utils/rdap.d.ts +0 -1
- package/dist/utils/request-pool.d.ts +0 -1
- package/dist/utils/security-grader.d.ts +0 -1
- package/dist/utils/sparkline.d.ts +0 -1
- package/dist/utils/sse.d.ts +0 -1
- package/dist/utils/streaming.d.ts +0 -1
- package/dist/utils/system-metrics.d.ts +0 -1
- package/dist/utils/tls-inspector.d.ts +0 -1
- package/dist/utils/try-fn.d.ts +0 -1
- package/dist/utils/upload.d.ts +0 -1
- package/dist/utils/user-agent.d.ts +0 -1
- package/dist/utils/whois.d.ts +0 -1
- package/dist/webrtc/index.d.ts +0 -1
- package/dist/webrtc/index.js +1 -1
- package/dist/websocket/client.d.ts +0 -1
- package/package.json +12 -3
- package/dist/ai/adaptive-timeout.d.ts.map +0 -1
- package/dist/ai/client.d.ts.map +0 -1
- package/dist/ai/index.d.ts.map +0 -1
- package/dist/ai/providers/anthropic.d.ts.map +0 -1
- package/dist/ai/providers/base.d.ts.map +0 -1
- package/dist/ai/providers/index.d.ts.map +0 -1
- package/dist/ai/providers/openai.d.ts.map +0 -1
- package/dist/ai/rate-limiter.d.ts.map +0 -1
- package/dist/bench/generator.d.ts.map +0 -1
- package/dist/bench/stats.d.ts.map +0 -1
- package/dist/cache/file-storage.d.ts.map +0 -1
- package/dist/cache/memory-limits.d.ts.map +0 -1
- package/dist/cache/memory-storage.d.ts.map +0 -1
- package/dist/cache/redis-storage.d.ts.map +0 -1
- package/dist/cli/handler.d.ts.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/presets.d.ts.map +0 -1
- package/dist/cli/tui/ai-chat.d.ts.map +0 -1
- package/dist/cli/tui/load-dashboard.d.ts.map +0 -1
- package/dist/cli/tui/scroll-buffer.d.ts.map +0 -1
- package/dist/cli/tui/search-panel.d.ts.map +0 -1
- package/dist/cli/tui/shell-search.d.ts.map +0 -1
- package/dist/cli/tui/shell.d.ts.map +0 -1
- package/dist/cli/tui/websocket.d.ts.map +0 -1
- package/dist/constants/http-status.d.ts.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/contract/index.d.ts.map +0 -1
- package/dist/cookies/memory-cookie-jar.d.ts.map +0 -1
- package/dist/core/client.d.ts.map +0 -1
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/request-promise.d.ts.map +0 -1
- package/dist/core/request.d.ts.map +0 -1
- package/dist/core/response.d.ts.map +0 -1
- package/dist/dns/index.d.ts.map +0 -1
- package/dist/dns/propagation.d.ts.map +0 -1
- package/dist/events/request-events.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/client.d.ts.map +0 -1
- package/dist/mcp/contract.d.ts.map +0 -1
- package/dist/mcp/embeddings-loader.d.ts.map +0 -1
- package/dist/mcp/geoip-loader.d.ts.map +0 -1
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/ip-intel.d.ts.map +0 -1
- package/dist/mcp/search/hybrid-search.d.ts.map +0 -1
- package/dist/mcp/search/index.d.ts.map +0 -1
- package/dist/mcp/search/math.d.ts.map +0 -1
- package/dist/mcp/search/types.d.ts.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/plugins/auth.d.ts.map +0 -1
- package/dist/plugins/cache.d.ts.map +0 -1
- package/dist/plugins/circuit-breaker.d.ts.map +0 -1
- package/dist/plugins/compression.d.ts.map +0 -1
- package/dist/plugins/cookie-jar.d.ts.map +0 -1
- package/dist/plugins/dedup.d.ts.map +0 -1
- package/dist/plugins/graphql.d.ts.map +0 -1
- package/dist/plugins/grpc-web.d.ts.map +0 -1
- package/dist/plugins/har-player.d.ts.map +0 -1
- package/dist/plugins/har-recorder.d.ts.map +0 -1
- package/dist/plugins/hls.d.ts.map +0 -1
- package/dist/plugins/http2-push.d.ts.map +0 -1
- package/dist/plugins/http3.d.ts.map +0 -1
- package/dist/plugins/interface-rotator.d.ts.map +0 -1
- package/dist/plugins/jsonrpc.d.ts.map +0 -1
- package/dist/plugins/logger.d.ts.map +0 -1
- package/dist/plugins/odata.d.ts.map +0 -1
- package/dist/plugins/pagination.d.ts.map +0 -1
- package/dist/plugins/proxy-rotator.d.ts.map +0 -1
- package/dist/plugins/retry.d.ts.map +0 -1
- package/dist/plugins/scrape.d.ts.map +0 -1
- package/dist/plugins/server-timing.d.ts.map +0 -1
- package/dist/plugins/soap.d.ts.map +0 -1
- package/dist/plugins/user-agent.d.ts.map +0 -1
- package/dist/plugins/xml.d.ts.map +0 -1
- package/dist/plugins/xsrf.d.ts.map +0 -1
- package/dist/presets/anthropic.d.ts.map +0 -1
- package/dist/presets/aws.d.ts.map +0 -1
- package/dist/presets/azure-openai.d.ts.map +0 -1
- package/dist/presets/azure.d.ts.map +0 -1
- package/dist/presets/cloudflare.d.ts.map +0 -1
- package/dist/presets/cohere.d.ts.map +0 -1
- package/dist/presets/deepseek.d.ts.map +0 -1
- package/dist/presets/digitalocean.d.ts.map +0 -1
- package/dist/presets/discord.d.ts.map +0 -1
- package/dist/presets/fireworks.d.ts.map +0 -1
- package/dist/presets/gcp.d.ts.map +0 -1
- package/dist/presets/gemini.d.ts.map +0 -1
- package/dist/presets/github.d.ts.map +0 -1
- package/dist/presets/gitlab.d.ts.map +0 -1
- package/dist/presets/groq.d.ts.map +0 -1
- package/dist/presets/huggingface.d.ts.map +0 -1
- package/dist/presets/index.d.ts.map +0 -1
- package/dist/presets/linear.d.ts.map +0 -1
- package/dist/presets/mailgun.d.ts.map +0 -1
- package/dist/presets/meta.d.ts.map +0 -1
- package/dist/presets/mistral.d.ts.map +0 -1
- package/dist/presets/notion.d.ts.map +0 -1
- package/dist/presets/openai.d.ts.map +0 -1
- package/dist/presets/oracle.d.ts.map +0 -1
- package/dist/presets/perplexity.d.ts.map +0 -1
- package/dist/presets/registry.d.ts.map +0 -1
- package/dist/presets/replicate.d.ts.map +0 -1
- package/dist/presets/sinch.d.ts.map +0 -1
- package/dist/presets/slack.d.ts.map +0 -1
- package/dist/presets/stripe.d.ts.map +0 -1
- package/dist/presets/supabase.d.ts.map +0 -1
- package/dist/presets/tiktok.d.ts.map +0 -1
- package/dist/presets/together.d.ts.map +0 -1
- package/dist/presets/twilio.d.ts.map +0 -1
- package/dist/presets/vercel.d.ts.map +0 -1
- package/dist/presets/vultr.d.ts.map +0 -1
- package/dist/presets/xai.d.ts.map +0 -1
- package/dist/presets/youtube.d.ts.map +0 -1
- package/dist/protocols/ftp.d.ts.map +0 -1
- package/dist/protocols/index.d.ts.map +0 -1
- package/dist/protocols/sftp.d.ts.map +0 -1
- package/dist/protocols/telnet.d.ts.map +0 -1
- package/dist/recker.d.ts.map +0 -1
- package/dist/runner/request-runner.d.ts.map +0 -1
- package/dist/scrape/document.d.ts.map +0 -1
- package/dist/scrape/element.d.ts.map +0 -1
- package/dist/scrape/extractors.d.ts.map +0 -1
- package/dist/scrape/index.d.ts.map +0 -1
- package/dist/scrape/types.d.ts.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/mock-udp-server.d.ts.map +0 -1
- package/dist/testing/mock.d.ts.map +0 -1
- package/dist/transport/base-udp.d.ts.map +0 -1
- package/dist/transport/fetch.d.ts.map +0 -1
- package/dist/transport/udp-response.d.ts.map +0 -1
- package/dist/transport/udp.d.ts.map +0 -1
- package/dist/transport/undici.d.ts.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/logger.d.ts.map +0 -1
- package/dist/types/udp.d.ts.map +0 -1
- package/dist/udp/index.d.ts.map +0 -1
- package/dist/utils/agent-manager.d.ts.map +0 -1
- package/dist/utils/body.d.ts.map +0 -1
- package/dist/utils/cert.d.ts.map +0 -1
- package/dist/utils/charset.d.ts.map +0 -1
- package/dist/utils/chart.d.ts.map +0 -1
- package/dist/utils/client-pool.d.ts.map +0 -1
- package/dist/utils/colors.d.ts.map +0 -1
- package/dist/utils/concurrency.d.ts.map +0 -1
- package/dist/utils/dns-toolkit.d.ts.map +0 -1
- package/dist/utils/dns.d.ts.map +0 -1
- package/dist/utils/doh.d.ts.map +0 -1
- package/dist/utils/download.d.ts.map +0 -1
- package/dist/utils/env-proxy.d.ts.map +0 -1
- package/dist/utils/header-parser.d.ts.map +0 -1
- package/dist/utils/html-cleaner.d.ts.map +0 -1
- package/dist/utils/link-header.d.ts.map +0 -1
- package/dist/utils/optional-require.d.ts.map +0 -1
- package/dist/utils/progress.d.ts.map +0 -1
- package/dist/utils/rdap.d.ts.map +0 -1
- package/dist/utils/request-pool.d.ts.map +0 -1
- package/dist/utils/security-grader.d.ts.map +0 -1
- package/dist/utils/sparkline.d.ts.map +0 -1
- package/dist/utils/sse.d.ts.map +0 -1
- package/dist/utils/streaming.d.ts.map +0 -1
- package/dist/utils/system-metrics.d.ts.map +0 -1
- package/dist/utils/tls-inspector.d.ts.map +0 -1
- package/dist/utils/try-fn.d.ts.map +0 -1
- package/dist/utils/upload.d.ts.map +0 -1
- package/dist/utils/user-agent.d.ts.map +0 -1
- package/dist/utils/whois.d.ts.map +0 -1
- package/dist/webrtc/index.d.ts.map +0 -1
- package/dist/websocket/client.d.ts.map +0 -1
|
@@ -1,50 +1,195 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { promises as fs, existsSync, mkdirSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
21
|
+
initCacheDir() {
|
|
22
|
+
if (!existsSync(this.cacheDir)) {
|
|
23
|
+
mkdirSync(this.cacheDir, { recursive: true });
|
|
24
|
+
}
|
|
12
25
|
}
|
|
13
|
-
|
|
14
|
-
|
|
26
|
+
getFilePath(key) {
|
|
27
|
+
const safeKey = Buffer.from(key).toString('base64url');
|
|
28
|
+
return join(this.cacheDir, safeKey + '.json');
|
|
15
29
|
}
|
|
16
|
-
async
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
24
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
return data;
|
|
58
|
+
}
|
|
59
|
+
return entry;
|
|
29
60
|
}
|
|
30
61
|
catch (error) {
|
|
31
|
-
|
|
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,
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
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
|
|
41
|
-
|
|
42
|
-
await unlink(
|
|
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
|
-
|
|
46
|
-
if (
|
|
47
|
-
|
|
189
|
+
shutdown() {
|
|
190
|
+
if (this.cleanupTimer) {
|
|
191
|
+
clearInterval(this.cleanupTimer);
|
|
192
|
+
this.cleanupTimer = null;
|
|
48
193
|
}
|
|
49
194
|
}
|
|
50
195
|
}
|
package/dist/cli/handler.d.ts
CHANGED
|
@@ -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
|
package/dist/cli/handler.js
CHANGED
|
@@ -17,7 +17,14 @@ async function initDependencies() {
|
|
|
17
17
|
}
|
|
18
18
|
export async function handleRequest(options) {
|
|
19
19
|
await initDependencies();
|
|
20
|
-
|
|
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
|
|
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
|
-
|
|
90
|
-
|
|
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
|
-
|
|
136
|
+
if (options.quiet) {
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
spinner?.fail(colors.red('Request Failed'));
|
|
109
140
|
throw error;
|
|
110
141
|
}
|
|
111
142
|
}
|
package/dist/cli/index.d.ts
CHANGED