Skip to content

Commit

Permalink
feat: export HttpAgent as standalone class to avoid namespace clutt…
Browse files Browse the repository at this point in the history
…er and support ESM style imports (#119)

This PR changes that `HttpAgent` class is exported as standalone member,
allowing use of `import { HttpAgent } from 'agentkeepalive'; or `const
HttpAgent = require('agentkeepalive').HttpAgent;`
It also deprecates use of `import * as HttpAgent from 'agentkeepalive';
or `const HttpAgent = require('agentkeepalive');`

This way fixing case when using Typescript and having
`"esModuleInterop": false` (that is the default), users can not import
and use the `HttpAgent` class and construct objects of it, because of
compiler / type errors like `Type 'typeof AgentKeepAlive' has no
construct signatures.`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Documentation**
- Updated README.md with consistent usage of `HttpAgent` instead of
`Agent`
	- Renamed code examples to use `HttpAgent` across documentation

- **Refactor**
	- Renamed `Agent` to `HttpAgent` in multiple files and test fixtures
	- Updated TypeScript type definitions and import statements
	- Modified module export structure in `index.js`

- **Tests**
	- Updated test files to use `HttpAgent`
	- Adjusted test configurations and compiler options

- **Security**
- Increased key size from 1024 to 2048 bits in test key generation
script

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
  • Loading branch information
smoke authored Dec 29, 2024
1 parent 6db01a0 commit 7d79ddd
Show file tree
Hide file tree
Showing 16 changed files with 180 additions and 156 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ $ npm install agentkeepalive --save

```js
const http = require('http');
const Agent = require('agentkeepalive');
const HttpAgent = require('agentkeepalive').HttpAgent;

const keepaliveAgent = new Agent({
const keepaliveAgent = new HttpAgent({
maxSockets: 100,
maxFreeSockets: 10,
timeout: 60000, // active socket keepalive for 60 seconds
Expand Down Expand Up @@ -162,8 +162,8 @@ When server closes connection at unfortunate time ([keep-alive race](https://cod

```js
const http = require('http');
const Agent = require('agentkeepalive');
const agent = new Agent();
const HttpAgent = require('agentkeepalive').HttpAgent;
const agent = new HttpAgent();

const req = http
.get('http://localhost:3000', { agent }, (res) => {
Expand Down
6 changes: 3 additions & 3 deletions benchmark/echo.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
'use strict';

const Agent = require('../');
const HttpAgent = require('../').HttpAgent;

const agent = new Agent({
const agent = new HttpAgent({
keepAlive: true,
maxSockets: 2,
maxFreeSockets: 2,
Expand Down Expand Up @@ -54,7 +54,7 @@ function showAgentDetail() {
}

const requestPerSocket = agent.createSocketCount && agent.requestFinishedCount / agent.createSocketCount;
console.log('[%s] [worker:%d] Agent(%s,%sms,%s,%s): requests: %d, created: %d, timeout: %d, reqs/socket: %s, pedding requests: %j, alive sockets: %j, free sockets: %j',
console.log('[%s] [worker:%d] HttpAgent(%s,%sms,%s,%s): requests: %d, created: %d, timeout: %d, reqs/socket: %s, pedding requests: %j, alive sockets: %j, free sockets: %j',
Date(), process.pid,
agent.keepAlive && agent.options.keepAlive, agent.keepAliveMsecs,
agent.maxSockets, agent.maxFreeSockets,
Expand Down
6 changes: 3 additions & 3 deletions benchmark/proxy.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
'use strict';

var http = require('http');
var AgentKeepalive = require('../');
var HttpAgent = require('../').HttpAgent;

var maxSockets = parseInt(process.argv[2]) || 10;
var maxFreeSockets = parseInt(process.argv[3]) || maxSockets;
var SERVER = process.argv[4] || '127.0.0.1';

var agentKeepalive = new AgentKeepalive({
var agentKeepalive = new HttpAgent({
keepAlive: true,
maxSockets: maxSockets,
maxFreeSockets: maxFreeSockets,
keepAliveTimeout: 30000,
});
var agentHttp = new AgentKeepalive({
var agentHttp = new HttpAgent({
maxSockets: maxSockets,
keepAlive: false,
});
Expand Down
14 changes: 7 additions & 7 deletions example/agent.js → example/http_agent.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
'use strict';

const http = require('http');
const Agent = require('..');
const HttpAgent = require('..').HttpAgent;

const agent = new Agent();
const http_agent = new HttpAgent();
// https://www.google.com/search?q=nodejs&sugexp=chrome,mod=12&sourceid=chrome&ie=UTF-8

const options = {
host: 'www.taobao.com',
path: '/',
method: 'GET',
port: 80,
agent,
agent: http_agent,
};

function get() {
Expand All @@ -34,15 +34,15 @@ function get() {
get();

setTimeout(() => {
console.log('keep alive sockets:', agent);
console.log('keep alive sockets:', http_agent);
process.exit();
}, 300000);

let count = 0;
setInterval(() => {
const name = agent.getName(options);
const sockets = agent.sockets[name] || [];
const freeSockets = agent.freeSockets[name] || [];
const name = http_agent.getName(options);
const sockets = http_agent.sockets[name] || [];
const freeSockets = http_agent.freeSockets[name] || [];
console.log('%ss, %s, sockets: %d, destroyed: %s, free sockets: %d, destroyed: %s', ++count,
name, sockets.length, sockets[0] && sockets[0].destroyed,
freeSockets.length, freeSockets[0] && freeSockets[0].destroyed);
Expand Down
8 changes: 6 additions & 2 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ interface PlainObject {
[key: string]: any;
}

declare class HttpAgent extends http.Agent {
declare class _HttpAgent extends http.Agent {
constructor(opts?: AgentKeepAlive.HttpOptions);
readonly statusChanged: boolean;
createConnection(options: net.NetConnectOpts, cb?: Function): net.Socket;
Expand All @@ -25,7 +25,10 @@ interface Constants {
SOCKET_REQUEST_FINISHED_COUNT: Symbol;
}

declare class AgentKeepAlive extends HttpAgent {}
/**
* @deprecated instead use `import { HttpAgent } from 'agentkeepalive'; or `const HttpAgent = require('agentkeepalive').HttpAgent;`
*/
declare class AgentKeepAlive extends _HttpAgent {}

declare namespace AgentKeepAlive {
export interface AgentStatus {
Expand All @@ -51,6 +54,7 @@ declare namespace AgentKeepAlive {
export interface HttpOptions extends http.AgentOptions, CommonHttpOption { }
export interface HttpsOptions extends https.AgentOptions, CommonHttpOption { }

export class HttpAgent extends _HttpAgent {}
export class HttpsAgent extends https.Agent {
constructor(opts?: HttpsOptions);
readonly statusChanged: boolean;
Expand Down
4 changes: 3 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
'use strict';

module.exports = require('./lib/agent');
const HttpAgent = require('./lib/agent');
module.exports = HttpAgent;
module.exports.HttpAgent = HttpAgent;
module.exports.HttpsAgent = require('./lib/https_agent');
module.exports.constants = require('./lib/constants');
37 changes: 21 additions & 16 deletions test/fixtures/agenttest-cert.pem
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
-----BEGIN CERTIFICATE-----
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
TjiKvg3asb2CwDe3y0fG
-----END CERTIFICATE-----
43 changes: 28 additions & 15 deletions test/fixtures/agenttest-key.pem
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDlkW4qHfyFy0d892w3zeAzKs15/AOfle0M92fxaYDKEMVf31IL
ySIeJegsAjfmgWvaQb0VH1O+wpxrkp9bkACiEVr5SeSqq8x6gslNN2xUXADw8BQx
aw+fuPSHIuTObU0riLI+z42blSDi+KF2eAYqvD/ChhZfYPQbPE7Y+La5jwIDAQAB
AoGAf4Icb1ZCeUnkRhvjRseZ/LGMeXGpzYznoqkUWblg6FsSVeLjXlp0Ecy6PR9q
TySZdBvJWx8QU8ciPHmu+5trTYwHyTcoj4vZ7yIi5bgJLzIcbKv7zeeiKF+u9+iX
VkLHVdGXWkpw+AsgKZWHfAp9hKcUnSMGW72bU7buUXe0dLkCQQD0xoJKkc4WeLxb
cEqrmks9cIAVxn9QQpqsP5E174Pe6Nq+YPpCiz3vURPb/uTM487NhOX4qwIbmn/F
8lW+4e6rAkEA8Bhl33lMPy3mSD8t+Vl8Nzd96OSl4O9MI1X//hwAK3Unpir0POzb
LprTftVK2w015vFZlWe3Smf3R8pFMllQrQJBAKeX4027Vyf7srvIvteP5URD6u79
4d3KPK0DOSF8xQWy2VLQg4lcXSOml7phY7cFo2sEO5FvRRoxRpr5ucvgVdECQQDf
6tEvvw+WKLeJD6tPzt4jHRTHXF87zdFjbzRlCDY8UXHd7leEbp3n9CtlMYUzkDmC
HfsfdPAja5zajlFEqLmtAkEAsxUKoiBkrJ1TQUmepETKtPNk6eNU8O3Gf484E2Aa
ooNrBva7VvyuOw+OgQKnXZ4sH37uNkS1KQHDp/x5kZX+DQ==
-----END RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsiKbzm3v7DS8N
JPCgEIil4Vdt98D0A56HMD+cZqGIuwLvOFOA8XrGJP2rq7HNkv45IjNVwjt+/xRH
tyGH30h+A+B7gaPuoz8wUm2wxaj2DTPqJudmnRY8VoTf7+CsK3OWt51YpVlC4LBa
hOS4l6eVbqIux8hLhsmtt8DPNuUHXYMYszUUaxU/mO4Q2xhXVv2VU6t3KV5vRPLB
ZDzKokFImUreVwj7oewKjdjLeBobnm7vxoQu0wnmwHvtuMpSJWPG6YOZuW6coWUe
7zo1Uum3AkfDMTjYplsJTedF2B4AeT4TBJAjN47AdMa8SUgB0K2jzl3iMH8TkcXV
tarNHymtAgMBAAECggEAHy3s2d5R5/socxwnXg3O3AdemPFqjc5voieufzGu5HpD
W/7WXFmHYfKCYzk6fxee2K1dEJTy0o7/V7x5E0hfHeLOeRNjEDexLibfStBVqe2V
4a1ZKRqfT5UlGyEK/aI2l9ij10a+XE8ln54fhVpmvyMIrSKOiFOZ88pezjOx7QQF
Y+LnKVb6b4yTPr7T9G7el7rzUtzf1rgvTib4+Dfe1ZwGHXdXSdGGqskOxOEre1zA
RdCddjCYOBPHQ1fU/NN54/JidtbHRrYqnJPd7WjXLqXbIAifSCWZsgGTRoJt9HWm
2UG0dWA/+ab9dMEuS24YsqueZDpPZ6y7YBMV7Fo0wwKBgQDnOQx/MfFMPEzXC5QI
8M6w2MDpnSOCCE07ykny9F5who9ilPTr7Me5Cyx+uftC/7Ax5KmIPatWxOTtEB4q
+RVW/PeRD8oq2+VHmC8XLlq7wlllbsi6HYo89pcUpHcGFI5wOFyBRBCSDVBjFXOO
XaXtpK06NHU5Osv8WmHA3NHc/wKBgQC/BaI2pvSFdvXI5W/PtKHOH4xpeJO/8Ziu
zFd9RCvHNxwfyLKrAHXqaCqDR3OPPN4Ao2JXaTy+f4b97tGHX4mIn8oaBmaUCDTy
xCNk1C29daBMBRBqveaXPCfPcLgNYvMx6btgoSqGQBtMNyro48hw7uD2YF3DMZ56
iUrFR9R9UwKBgCVsP1CK1cH/9HPNpOz5hIps2nQ1AZ03GMD3kZZn5K0TqjtLXoSc
swqI+2+bTEZgubSpjKLHUGbfwSl5NVjBLaoBkVQCGTdslaRLxjtbPkYrQ2q+TnCI
/Wm2g2dM4xKx2wfgp2AokwIAc6VFwIknMQbQY1ULTnmvwXobarzbQIAjAoGBAJcC
+yQ9hJ1mWBRD3crUP/5Vzokq+5MIie3WOWwcUoehN6ig3y50pMN1Kfayq9aXBeJ3
R61W0uC+rJdfD2H30yChQgKlAL8SZdlt2ZVCcA6RSPIQJtRb4Em7ErXZpIdgrGXP
I4TWpGmRkIMGMfP+71zoXAwqTrWbKnAwzV181a1lAoGBAJd7BCyoK6+5BiUzkd0d
asTVaV/BYDWdVrFFr78vjVoscqT66+yBmX3xo65wMHkw0yaRNWfKqE/1yseczQgi
Q3IZCM9YIs+JIGP0mzNzK0apZTiEUwGEDnNvvK41hEMPfLypTBUyAM/mz0E9SyS8
2MTb4gwiIdfW8sgapxzGER7l
-----END PRIVATE KEY-----
52 changes: 26 additions & 26 deletions test/fixtures/ca.key
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDirhR/SK8uxDp3
pZANtV3IeTKFwLdA2G6xNgo7isgCG+OnzEN8zKePSL6vSoUJnYH5KYmNOlO2zc0b
qrvUQWd375WB/zl3MEjJS1+taLxyO+lFlq7fPoB/V4XO+s0l2cA4PyGAkCcisJ5s
LCI2oaxrbjkOPzHC4W05Cj8Svn440kf/2faeHYIdhHGVs36t6nb5d2WnivPvmucp
FOShhK+LFBxL7AQIdoeDdpkjdukT9CnnRT5S1LUq6ReXzjhYqhGU+nmn6GqznpPn
cnZFIRdBQvM3b5BL2NLb5VzglUa2fNYqYGKNGgzj9G/depW8QHOxk3VUJS7vaY0z
PlkTgPO3AgMBAAECggEBAMk4Pnm+y8N37W7ISVfh555N98tDh2jIt3oXvn2cdG9q
0mvhpwbhpNxMdvij7fTbHMVRWglD/YwIpEorBREl/fM5ej4rkZd8BSCrCAOnNaEy
DaD4YcNKeEaSKvXRLMqswTUs1VCKpjLlFbxwcO6OFcBH194Nut6DvbEkp1i8QM+u
LwF4Sqm6r/CbJMMG6RSamb+nwSu2s8HH+B/n+ba8rNQNqJIwxueGuZGSzQ82SoYp
Mtq8v/Lb0Ea+OeN6cG1zhHe5vwT8o/vfPzkH50tI6kq4lltai3MaqxcaV3XRc8R0
lndGL4Rf/Q+AiF2nYgZZYpVdkbW06e7GSFfE7OmLPgECgYEA9HKuOHklNwzsOyDo
KMQ6iSGCPwUQSBgyNOF/uu+wwPnOxGU3GaSsC8QFNsgKlDfXjTFefJwdzhvGB5ES
JQxIYwa1TwCODavrNow7LUIExC8P6NI7DyWOeZZenVIHhBEejrbzMaiAS0/hklL8
EZpeNniQHED/S37kWZdEp3SE+1MCgYEA7WRxiHxARu54A1lIv2b+3NSSS7lTqweW
ELswyl6CGm2HQlt4iWccSqM5xMb9idJPDehijj92rXR1k64SurEL2OQstKg3ivfq
TcKKyVmj1WDm2v56LXIpjAb7Iy6ewbRmC9WWs4Wfqf6KK7Nm3FzDpKf5Uarqm3eh
Z0vvQMPpfY0CgYEAogkKt2CGbLFiPeeYPL2mV5QgtAl1O3TegvMfKhkMPz7X8pNt
LNBdQwdStXdwm8NQXMVm7o7FqwP6BrYBIxG7QfkGYjHp9+IH7oaSC3QBmNHhZ+FD
SM0KXkpwuTPQy5hVeyCGoFojgMiYq9faQwjifpT4YeIr2C1qzIBa/+1a4QUCgYEA
5+PgC2TkHOXBEfRbXaysdOao6ZNlKYJFkp5oMKZVDJ/FKorTmdTBDB+ZxKBk9gYb
9wfzjeRsd091swatgPSFEB8DlI1lhDhcBg1tKPaJVVxM5csDafVEpGYFV/6oUat4
q0K+7SowJwxfyAR9C/EJo4P5xU7h0W/wmEjSsz8si9kCgYBDA5wGbBcr55zkEO5L
7bnTq8jCtUmFcZaosWlRmsSB7gHQva+bmnmtJbSpzKbGgGHp6c21BowRXO0E7lZv
aIZz2SzIR9+JQw9GtVy2e797oZzhG2+u/BIkxGwowlPRVsiM468fID/j7VMRWXsM
FZBgmTZ8TpJPtO+1VTB1j5QdPg==
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBWx17nSe1zx8/
OTST6T5TtYn+lg9v4FCE5+qvukegqIezG79O6J4fjHJr6DagkMlYjGedJOuZd5NS
jZOgb6Zz8ZRVnmxGFhfndu5PnFQTbSrEDZKQEB9/GDLvPhmrbyMtKvj+8m2s9rUH
jCA+o76476o25LlA8GTP1HqZFj3oK0nPsCuuDrEy7aZYTdrDKI+FU7xsZHJZrrEQ
PrBb04VtdlFnjOBJ1UeAWu9uypFJMaLzophgjIQZY6XFXWKYEV55MJgudmurC+sI
3lTpgnNNHuvjpKZ5xZ6pLP0O4pWs7GqWBK11fM0bTYxUcf7Xlnv0yuE7K3ffRYST
2GCbbxX1AgMBAAECggEAB/X8UHiBR/MhELif79t7FVw7APaxtQP+nLI/XE1zOuvY
oA9RtAO2biSzGbrdjbfYXZZ0tg7s/YxJ59MfbTKCBaUNKLp7yVjwhZ2rPmJ4p07n
1o5oGeYoCp+qI5jvDdSaFXdLxpQ5rGG0XpaueMj27P6Lh6eo8ig6DMDtUuJypkPl
Kc0gVX+eCZu7f3O+wI3WLykDO7csn/GQkS4Mcy+hRKVch4gGAU5EAzuLLU+vRPBS
OLmj1X5O3epZchf+hzwB4/Sn1826Dw5Lni63NNOdsTCTLi2Rb2JUsutkzxweYtbw
y8EXQuaruMWoERNt2qy2P85aTmwXqfHJe45BA8UiEwKBgQD5cy4pcOZLRMzr1AGI
ybjrGR3DsDpFOez39LpUZNGFRVnGU7v2JUV7allx0HLtSJYJQR1BoGIKZbcgT2Ho
CLurAfAsBAHzvRfHZUc32HLru/1XYe2hNllG8GkybMqYQiFIOuPEdKOIIlwFJYpY
9mp4VNrfwuAaxTBQcDcHsQO1ewKBgQDGbt33oStwsi3xqziYazXyB8bko06Q+lH6
k4DdckVPGDealKG4drdi+YAK/tB+YeShC7TiZx9GRKQDyED2eQucc+henLSsdCYJ
RoZP9A4uORc4/sO0PE0mRx/ww06BVa5uaGv2xTeNt9ojRvmV/NwKyTx5NDZoPwM9
yKupukGvTwKBgQCP05xrIoB2J54r31pfH0gyrZGe0g5W+dYrBX0lydeQivL/SipW
+xh7107pM7IAJFj1zwhqXWoJ6qnSxFKEMfza1cw/5LOncIC0ZC3TAkcIqqSg7ILR
7/87ysQs4dNSRNbhyaqoDER56q25/fIt5y5uYSat27PRW57G0ly4X5Tu3wKBgGZJ
A9X/mBrRXely7wtySC5oX9e/bmJBBjz6B7UekCeDPjZKY0pot4MnRR9l1icvYuC4
3hbOPUrFWx4v/XyPTLLq9F7AvEkg3fJuDhHspdqhxxy0BkFDzCjtBMPgiPkWJ4H2
BaEAa/B7UtBYZ5Mu8mYE8U0w4tK9mHgiloo43l71AoGBAKJcF1MuHvddV7SzyK7j
Hf7QdPzsLrPrqH6k9L1yVP1RsouHEgoHh63ot3cZBJEtDodjw9ISoiT4Z1SeGCva
BSXYYjKlwo6ik6kFdy237VJu7XorEmpzhK+K2hoG7azyVJG3imsKCWHW7N75e+Id
A+8fxkdCTHA8dB0pk4Rdth1l
-----END PRIVATE KEY-----
37 changes: 19 additions & 18 deletions test/fixtures/ca.pem
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDPjCCAiYCCQDsuRUq6wfGEDANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJT
RTESMBAGA1UECAwJU3RvY2tob2xtMRIwEAYDVQQHDAlTdG9ja2hvbG0xCzAJBgNV
BAMMAmNhMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTAeFw0xNzEwMjAx
MTM0MDhaFw00NTAzMDYxMTM0MDhaMGExCzAJBgNVBAYTAlNFMRIwEAYDVQQIDAlT
dG9ja2hvbG0xEjAQBgNVBAcMCVN0b2NraG9sbTELMAkGA1UEAwwCY2ExHTAbBgkq
hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA4q4Uf0ivLsQ6d6WQDbVdyHkyhcC3QNhusTYKO4rIAhvjp8xDfMyn
j0i+r0qFCZ2B+SmJjTpTts3NG6q71EFnd++Vgf85dzBIyUtfrWi8cjvpRZau3z6A
f1eFzvrNJdnAOD8hgJAnIrCebCwiNqGsa245Dj8xwuFtOQo/Er5+ONJH/9n2nh2C
HYRxlbN+rep2+Xdlp4rz75rnKRTkoYSvixQcS+wECHaHg3aZI3bpE/Qp50U+UtS1
KukXl844WKoRlPp5p+hqs56T53J2RSEXQULzN2+QS9jS2+Vc4JVGtnzWKmBijRoM
4/Rv3XqVvEBzsZN1VCUu72mNMz5ZE4DztwIDAQABMA0GCSqGSIb3DQEBCwUAA4IB
AQAgR8F1/E3slNqbHEk5pLqPw4V0Trk3jB8yNwpkhdpYJKSeAxuX4FdS+vCd1wG6
V3GG7VR/iQABlH/YQjhqAMGjMhmGbZgvEENr9hRYf6Rp7eEC4gddwn4zq/xv90n6
/St4V5Ek4/jnTXdwaZFWR1UHiwhYJ4qUYsKR1TiA3nGckKtd52+Veu+xu9DCEOlI
R2PAKca7bwH+M9GosIV6SJdh+YT3+7hp0d2xUjPvDDXVcb2ezGyxsfDJmXsa0YEt
V5NvocKipnU2ZYHUvORLix/7OyaHkrsfdwvaFlvRNBKge3F/l+bcs50WhD5daB+g
bdLER/TWIIcc6x4karOucHS8
MIIDczCCAlugAwIBAgIUYxxarpaqtKbdGhWDXUVEv9dGkvIwDQYJKoZIhvcNAQEL
BQAwYTELMAkGA1UEBhMCU0UxEjAQBgNVBAgMCVN0b2NraG9sbTESMBAGA1UEBwwJ
U3RvY2tob2xtMQswCQYDVQQDDAJjYTEdMBsGCSqGSIb3DQEJARYOY2FAZXhhbXBs
ZS5jb20wIBcNMjQxMjI4MTM0NzE1WhgPMjA1MjA1MTQxMzQ3MTVaMGExCzAJBgNV
BAYTAlNFMRIwEAYDVQQIDAlTdG9ja2hvbG0xEjAQBgNVBAcMCVN0b2NraG9sbTEL
MAkGA1UEAwwCY2ExHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwVsde50ntc8fPzk0k+k+U7WJ/pYP
b+BQhOfqr7pHoKiHsxu/TuieH4xya+g2oJDJWIxnnSTrmXeTUo2ToG+mc/GUVZ5s
RhYX53buT5xUE20qxA2SkBAffxgy7z4Zq28jLSr4/vJtrPa1B4wgPqO+uO+qNuS5
QPBkz9R6mRY96CtJz7Arrg6xMu2mWE3awyiPhVO8bGRyWa6xED6wW9OFbXZRZ4zg
SdVHgFrvbsqRSTGi86KYYIyEGWOlxV1imBFeeTCYLnZrqwvrCN5U6YJzTR7r46Sm
ecWeqSz9DuKVrOxqlgStdXzNG02MVHH+15Z79MrhOyt330WEk9hgm28V9QIDAQAB
oyEwHzAdBgNVHQ4EFgQUHsN9t35DW4U6wZYQ0jOEVIDp7xMwDQYJKoZIhvcNAQEL
BQADggEBAA6peynGrNJfiD9yVvtZTfmnuAUTHlHJ9iUMmugo65J9D27ZgStgGTqE
CwvhoYH+fbeJBB/WrWns48piWYXOUSoyPhCI/hGqGl4uu/d66OBBHLlOE6v2W5x0
EsOxAsTkobcG4y9CBgnoVdzcBuO+wfUFQDZYJkXFYYvK2GxJqJBTlJSqWITLute9
6e8BjytBzZnbI9AIopl+pt+ErMDQfkS1WIHDyg4ER0gpLDrQeJq0JxGuK/d6giYy
hDtsGhz2ibk4DWVxYAlUIPwkvAnDMGW2AwbdAiX7HyqO2OqGwwberhiGZDXqLSoL
LYor6j123IpnraOTz/NQjFMQ7ZyHVAs=
-----END CERTIFICATE-----
4 changes: 2 additions & 2 deletions test/fixtures/genkey.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ openssl req -new -x509 -nodes -days 9999 -config ca.cnf -keyout ca.key -out ca.p

# Generate server key
# openssl genrsa -out server.key 2048
openssl genrsa -out agenttest-key.pem 1024
openssl genrsa -out agenttest-key.pem 2048

# Generate a certificate signing request for server.key
# openssl req -new -key server.key -out server.csr
openssl req -new -key agenttest-key.pem -out agenttest.csr -config server.cnf
openssl req -new -key agenttest-key.pem -out agenttest.csr -config server.cnf

# Sign the csr with the ca certificate, generating server.pem
openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -extensions v3_req -in agenttest.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out agenttest-cert.pem
Expand Down
18 changes: 8 additions & 10 deletions test/fixtures/ts/index.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import http from 'http';
import Agent from '../../..';
import assert from 'assert';
import * as http from 'http';
import { constants, HttpAgent, HttpsAgent, HttpOptions, HttpsOptions, AgentStatus } from '../../..';
import * as assert from 'assert';

const constants = Agent.constants;
assert(constants.CREATE_ID);
assert(constants.CREATE_HTTPS_CONNECTION);
assert(constants.CURRENT_ID);

const httpOpt: Agent.HttpOptions = {
const httpOpt: HttpOptions = {
maxSockets: 100,
maxFreeSockets: 10,
timeout: 60000, // active socket keepalive for 60 seconds
freeSocketTimeout: 30000, // free socket keepalive for 30 seconds
};
const keepaliveAgent = new Agent(httpOpt);
const keepaliveAgent = new HttpAgent(httpOpt);

const options = {
host: 'cnodejs.org',
Expand All @@ -40,19 +39,18 @@ req.end();

setTimeout(() => {
if (keepaliveAgent.statusChanged) {
const httpAgentStatus: Agent.AgentStatus = keepaliveAgent.getCurrentStatus();
const httpAgentStatus: AgentStatus = keepaliveAgent.getCurrentStatus();
console.log('[%s] agent status changed: %j', Date(), httpAgentStatus);
}
}, 2000);

// https
const HttpsAgent = Agent.HttpsAgent;
const httpsOpt: Agent.HttpsOptions = {
const httpsOpt: HttpsOptions = {
maxSockets: 100,
maxFreeSockets: 10,
timeout: 60000, // active socket keepalive for 60 seconds
freeSocketTimeout: 30000, // free socket keepalive for 30 seconds
};
const keepaliveHttpsAgent = new HttpsAgent(httpsOpt);
const httpsAgentStatus: Agent.AgentStatus = keepaliveHttpsAgent.getCurrentStatus();
const httpsAgentStatus: AgentStatus = keepaliveHttpsAgent.getCurrentStatus();
assert(httpsAgentStatus);
3 changes: 1 addition & 2 deletions test/fixtures/ts/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
"skipLibCheck": false,
"skipDefaultLibCheck": false,
"importHelpers": false,
"inlineSourceMap": true,
"esModuleInterop": true
"inlineSourceMap": true
}
}
Loading

0 comments on commit 7d79ddd

Please sign in to comment.