[Backport 7.x] The agent function should take the Connection contructor options as argument (#1334)

Co-authored-by: Tomas Della Vedova <delvedor@users.noreply.github.com>
This commit is contained in:
github-actions[bot]
2020-10-12 11:13:34 +02:00
committed by GitHub
parent 34dedb8119
commit dd8ee9056b
5 changed files with 43 additions and 23 deletions

View File

@ -149,7 +149,9 @@ const client = new Client({
const client = new Client({
node: 'http://localhost:9200',
agent: () => new CustomAgent()
// the function takes as parameter the option
// object passed to the Connection constructor
agent: (opts) => new CustomAgent()
})
const client = new Client({

4
lib/Connection.d.ts vendored
View File

@ -28,9 +28,9 @@ import * as https from 'https'
import * as hpagent from 'hpagent'
import { ConnectionOptions as TlsConnectionOptions } from 'tls'
export declare type agentFn = () => any;
export declare type agentFn = (opts: ConnectionOptions) => any;
interface ConnectionOptions {
export interface ConnectionOptions {
url: URL;
ssl?: TlsConnectionOptions;
id?: string;

View File

@ -53,7 +53,7 @@ class Connection {
}
if (typeof opts.agent === 'function') {
this.agent = opts.agent()
this.agent = opts.agent(opts)
} else if (opts.agent === false) {
this.agent = undefined
} else {

View File

@ -20,22 +20,35 @@
import { expectType } from 'tsd'
import { URL } from 'url'
import { Connection } from '../../'
import { ConnectionOptions } from '../../lib/Connection'
const conn = new Connection({
url: new URL('http://localhost:9200'),
ssl: { ca: 'string' },
id: 'id',
headers: {},
agent: { keepAlive: false },
status: 'alive',
roles: { master: true },
auth: { username: 'username', password: 'password' }
})
{
const conn = new Connection({
url: new URL('http://localhost:9200'),
ssl: { ca: 'string' },
id: 'id',
headers: {},
agent: { keepAlive: false },
status: 'alive',
roles: { master: true },
auth: { username: 'username', password: 'password' }
})
expectType<Connection>(conn)
expectType<URL>(conn.url)
expectType<string>(conn.id)
expectType<Record<string, any>>(conn.headers)
expectType<number>(conn.deadCount)
expectType<number>(conn.resurrectTimeout)
expectType<string>(conn.status)
expectType<Connection>(conn)
expectType<URL>(conn.url)
expectType<string>(conn.id)
expectType<Record<string, any>>(conn.headers)
expectType<number>(conn.deadCount)
expectType<number>(conn.resurrectTimeout)
expectType<string>(conn.status)
}
{
const conn = new Connection({
url: new URL('http://localhost:9200'),
agent (opts) {
expectType<ConnectionOptions>(opts)
return 'the agent'
}
})
}

View File

@ -152,7 +152,7 @@ test('Basic (https with ssl agent)', t => {
})
test('Custom http agent', t => {
t.plan(5)
t.plan(6)
function handler (req, res) {
t.match(req.headers, {
@ -172,7 +172,12 @@ test('Custom http agent', t => {
agent.custom = true
const connection = new Connection({
url: new URL(`http://localhost:${port}`),
agent: () => agent
agent: opts => {
t.match(opts, {
url: new URL(`http://localhost:${port}`)
})
return agent
}
})
t.true(connection.agent.custom)
connection.request({