fetch-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
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 aagent
(likenode-fetch
) ordispatcher
(likeundici
) 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
Object-
timeout
: 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
.
-
- Any valid
fetch
module option, like fornode-fetch
-
Error class that can be used for err instanceof TimeoutError
:
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.
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