1.1.0 • Published 4 years ago
global-agent-wbe v1.1.0
global-agent-wbe
Usage
npm install package
npm install global-agent-wbe
const { bootstrap } = require('global-agent-wbe');
const options = {
proxyConfig: {
scheme: 'http',
host: 'proxy.example.com',
port: 8080,
username: 'username', // if empty doesnt use authentication
password: 'password', // if empty doesnt use authentication
https: {
scheme: 'http',
host: 'proxy.example.com',
port: 8080,
username: 'username', // if empty doesnt use authentication
password: 'password', // if empty doesnt use authentication
}
},
proxyFunc: function(options) {
// If this function returns undefined, doesn't do anything (as if it doesn't exist)
// If this function returns truthy, proxies the request
// If this function returns falsey(except undefined), does not proxy the request
return options.hostname.includes('microsoft');
},
noProxyFunc: function(options) {
// only used if proxyFunc is not defined or if proxyFunc returns undefnied
// If this function returns undefined, it uses the proxy
// If this function returns falsey(except undefined), proxies the request
// If this function returns truthy, does not proxy the request
return options.hostname.includes('microsoft');
}
};
bootstrap(options);
This is useful if you need to conditionally bootstrap global-agent
, e.g.
const { bootstrap } = require('global-agent-wbe');
const { globalTunnel } = require('global-tunnel-ng');
const MAJOR_NODEJS_VERSION = parseInt(process.version.slice(1).split('.')[0], 10);
if (MAJOR_NODEJS_VERSION >= 10) {
// `global-agent` works with Node.js v10 and above.
const options = {
proxyConfig: {
scheme: 'http',
host: 'proxy.example.com',
port: 8080,
username: 'username', // if empty doesnt use authentication
password: 'password', // if empty doesnt use authentication
https: {
scheme: 'http',
host: 'proxy.example.com',
port: 8080,
username: 'username', // if empty doesnt use authentication
password: 'password', // if empty doesnt use authentication
}
},
proxyFunc: function(options) {
// If this function returns undefined, doesn't do anything (as if it doesn't exist)
// If this function returns true, proxies the request
// If this function returns false, does not proxy the request
return options.hostname.includes('microsoft');
},
noProxyFunc: function(options) {
// only used if proxyFunc is not defined or if proxyFunc returns undefnied
// If this function returns undefined, it uses the proxy
// If this function returns false, proxies the request
// If this function returns true, does not proxy the request
return options.hostname.includes('microsoft');
}
};
bootstrap(options);
} else {
// `global-tunnel-ng` works only with Node.js v10 and below.
globalTunnel.initialize();
}
Supported libraries
global-agent-wbe
works with all libraries that internally use http.request
.
global-agent-wbe
has been tested to work with:
FAQ
What is the reason global-agent-wbe
overrides explicitly configured HTTP(S) agent?
By default, global-agent-wbe
overrides agent
property of any HTTP request, even if agent
property was explicitly set when constructing a HTTP request. This behaviour allows to intercept requests of libraries that use a custom instance of an agent per default (e.g. Stripe SDK uses an http(s).globalAgent
instance pre-configured with keepAlive: true
).
In contrast, global-agent-wbe
supports Node.js v10 and above, and does not implements workarounds for the older Node.js versions.
1.1.0
4 years ago