fetch wrapper with support for automatic HTTP proxy, timeout and accessible agent options
npm install fetch-enhancedfetch-enhanced wraps a provided fetch-like function like undici or node-fetch and adds:
- HTTP Proxy discovery from standard environment variables
- HTTP Request Timeout support
- Accessible agent/dispatcher options
``js
import {fetch as undiciFetch} from "undici";
import fetchEnhanced from "fetch-enhanced";
const fetch = fetchEnhanced(undiciFetch, {undici: true});
await fetch("https://example.com");
`
- fetchImplementation: Function A fetch-like module that takes (url, opts) and a agent (like node-fetch) or dispatcher (like undici) option.opts
- Object Required.agentCacheSize
- : number Size of the agent cache. Default: 512.undici
- : boolean Whether the fetch implementation is undici. Required.
Returns: A wrapped fetch function.
- opts Objecttimeout
- : number Request timeout in milliseconds. Default: 0 (meaning no timeout).noProxy
- : boolean Explicitely disable any proxy server use. Default: false.agent
- : http.Agent Custom HTTP agent. When specified, proxy discovery will no longer work.agentOpts
- : object Agent or Dispatcher options.Default: {maxSockets: 64, keepAlive: false}agentOpts.noProxy
- : boolean Do not use proxy in any case. Default: false.fetch
- Any valid module option, like for node-fetch
Error class that can be used for err instanceof TimeoutError:
`js
import {TimeoutError} from "fetch-enhanced";
try {
await fetch("https://example.com", {timeout: 0});
} catch (err) {
console.log(err instanceof TimeoutError);
// => true
}
`
Clear the agent cache and destroys all cached agents. This is generally only neccessary when the proxy environment variables are expected to change during runtime.
`js``
process.env.HTTPS_PROXY = "https://proxy1.dev";
await fetch("https://example.com");
fetch.clearCache();
process.env.HTTPS_PROXY = "https://proxy2.dev";
await fetch("https://example.com");
© silverwind, distributed under BSD licence