Files
pnpm/pnpm11/network/agent/README.md
Zoltan Kochan ad525f26db refactor: move the pnpm/components packages into the monorepo (#16214)
The remaining packages of the pnpm/components Bit workspace now live
under pnpm11/ and are published from here, keeping their npm names:

  @pnpm/config.env-replace           -> pnpm11/config/env-replace
  @pnpm/log.group                    -> pnpm11/log/group
  @pnpm/network.agent                -> pnpm11/network/agent
  @pnpm/network.ca-file              -> pnpm11/network/ca-file
  @pnpm/network.config               -> pnpm11/network/config
  @pnpm/network.proxy-agent          -> pnpm11/network/proxy-agent
  @pnpm/os.env.path-extender         -> pnpm11/os/env/path-extender
  @pnpm/os.env.path-extender-posix   -> pnpm11/os/env/path-extender-posix
  @pnpm/os.env.path-extender-windows -> pnpm11/os/env/path-extender-windows

lex-comparator and nerf-dart were already moved under new names, and the
Bit env component is build tooling with no counterpart here.

The sources are carried over from pnpm/components at 42ec0f7, which
includes the Windows fix that rewrites a PNPM_HOME value stored with the
wrong registry type. pnpm v12 got the same fix in pnpm/pnpm#15746, so
its changeset now also covers pnpm v11, which bundles the workspace copy.

Porting to the monorepo's ES module setup:

- relative imports carry .js and type re-exports are marked `type`;
- tests use jest.unstable_mockModule and import through the package;
- string.prototype.matchall and graceful-fs give way to built-ins;
- safe-execa and lru-cache move to the catalog versions (0.3, 11);
- network.config depends on @pnpm/config.registry-auth-key;
- the strict-ssl proxy test uses node:https and proxy v4 instead of
  node-fetch and proxy v1.

The packages start at 1100.0.0 to sit in the pnpm11 version band.
2026-09-26 23:33:47 +02:00

2.3 KiB

@pnpm/network.agent

An http/s agent factory with proxy support

Create an http/s agent from uri and options. This support http/s proxy server with different configuration.

In case there is matching proxy option that matching the uri protocol (httpProxy for http: uri and httpsProxy for https: uri), and the uri is not excluded by the noProxy config, it will create a proxy agent. To read more about the proxy agent, read the docs of the proxy-agent component.

API:

function getAgent(uri: string, opts: AgentOptions)

Available configuration (AgentOptions):

  /**
   * A proxy server for out going network requests by the package manager
   * Used for both http and https requests (unless the httpsProxy is defined)
   */
  httpProxy?: string;

  /**
   * A proxy server for outgoing https requests by the package manager (fallback to proxy server if not defined)
   * Use this in case you want different proxy for http and https requests.
   */
  httpsProxy?: string;

  /**
   * A path to a file containing one or multiple Certificate Authority signing certificates.
   * allows for multiple CA's, as well as for the CA information to be stored in a file on disk.
   */
  ca?: string;

  /**
   * Whether or not to do SSL key validation when making requests to the registry via https
   */
  strictSsl?: string;

  /**
   * A client certificate to pass when accessing the registry. Values should be in PEM format (Windows calls it "Base-64 encoded X.509 (.CER)") with newlines replaced by the string "\n". For example:
   * cert="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
   * It is not the path to a certificate file (and there is no "certfile" option).
   */
  cert?: string;

  /**
   * A client key to pass when accessing the registry. Values should be in PEM format with newlines replaced by the string "\n". For example:
   * key="-----BEGIN PRIVATE KEY-----\nXXXX\nXXXX\n-----END PRIVATE KEY-----"
   * It is not the path to a key file (and there is no "keyfile" option).
   */
  key?: string;

  /**
   * A comma-separated string of domain extensions that a proxy should not be used for.
   */
  noProxy?: string;

  /**
   * The IP address of the local interface to use when making connections to the npm registry.
   */
  localAddress?: string;

License

MIT