12.0.2 • Published 2 months ago

fetch-enhanced v12.0.2

Weekly downloads
1,189
License
BSD-2-Clause
Repository
github
Last release
2 months ago

fetch-enhanced

npm.io npm.io npm.io

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

Usage

import {fetch as undiciFetch} from "undici";
import fetchEnhanced from "fetch-enhanced";

const fetch = fetchEnhanced(undiciFetch, {undici: true});
await fetch("https://example.com");

API

fetchEnhanced(fetchImplementation, opts)

  • 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.

fetch(url, opts)

  • 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 for node-fetch

TimeoutError

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
}

fetch.clearCache()

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

12.0.2

2 months ago

12.0.1

4 months ago

12.0.0

7 months ago

11.1.2

10 months ago

11.1.1

1 year ago

10.0.3

2 years ago

11.0.2

1 year ago

11.0.3

1 year ago

11.0.0

1 year ago

11.0.1

1 year ago

10.1.0

2 years ago

10.1.1

1 year ago

11.1.0

1 year ago

10.0.0

2 years ago

10.0.1

2 years ago

10.0.2

2 years ago

9.0.1

2 years ago

9.0.0

2 years ago

8.1.0

2 years ago

8.1.1

2 years ago

8.0.1

2 years ago

8.0.2

2 years ago

8.0.0

3 years ago

7.0.1

3 years ago

7.0.0

3 years ago

6.0.0

3 years ago

5.0.2

3 years ago

5.0.1

4 years ago

5.0.0

4 years ago

4.2.2

4 years ago

4.2.1

4 years ago

4.2.0

4 years ago

4.1.2

4 years ago

4.1.1

4 years ago

4.1.0

4 years ago

4.0.5

4 years ago

4.0.4

4 years ago

4.0.3

4 years ago

4.0.1

4 years ago

4.0.2

4 years ago

4.0.0

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.2

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.0

4 years ago

2.0.0

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago