npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

system-proxy-fetch

v0.1.0

Published

fetch (undici) and http.Agent that send each request where the operating system's proxy settings would, PAC included

Readme

system-proxy-fetch

fetch and http.Agent that go through the proxy the operating system is set to use, with no configuration: Windows, macOS, GNOME and KDE settings and PAC scripts, layered with *_proxy. Built on proxy-watch. Node 22.19 or later.

npm install system-proxy-fetch

fetch

import { SystemProxyDispatcher } from 'system-proxy-fetch';

const dispatcher = new SystemProxyDispatcher();
await fetch('https://example.com/', { dispatcher });

setGlobalDispatcher(dispatcher) from undici applies it to every fetch.

http.Agent

import https from 'node:https';
import { systemProxyAgent } from 'system-proxy-fetch/agent';

const agent = systemProxyAgent();
https.get('https://example.com/', { agent });

Also for node-fetch ({ agent }) and axios ({ httpAgent: agent, httpsAgent: agent, proxy: false }).

Notes

  • A change to the settings applies from the next request. Other options are in the type definitions.
  • In a Flatpak or Snap sandbox, set pollIntervalMs to follow changes.
  • The dispatcher watches the settings until close() or destroy(), the agent until destroy().
  • A request the settings give no usable route fails with RouteError; it does not go direct.
  • The pac option picks the PAC engine. By default it is the OS's on Windows and macOS, and QuickJS on Linux, which fetches the script and answers as if off every network unless policy says where the machine is. WPAD ("Automatically detect settings") needs wpad: true, and runs on Windows and macOS only.
  • A proxy password the OS keeps elsewhere (the macOS keychain), or Kerberos (negotiateAuth()), goes through the proxyAuth option. For a plain http: request, put the credentials in the proxy URL.
  • proxy-watch is a native addon: mark it external when bundling.

License

MIT OR Apache-2.0.