Skip to content

Commit e77ca41

Browse files
committed
Ensure new connections inherit client's set defaults
1 parent 5702807 commit e77ca41

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/client.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,30 @@ export default class Client extends API {
230230
// node in the list.
231231
let node = options.node ?? options.nodes
232232
if (Array.isArray(node)) node = node[0]
233-
this.connectionPool.addConnection(node)
233+
234+
// ensure default connection values are inherited when creating new connections
235+
// see https://github.com/elastic/elasticsearch-js/issues/1791
236+
type ConnectionDefaults = Record<string, any>
237+
238+
const { tls, headers, auth, requestTimeout: timeout, agent, proxy, caFingerprint } = options
239+
let defaults: ConnectionDefaults = { tls, headers, auth, timeout, agent, proxy, caFingerprint }
240+
241+
// strip undefined values from defaults
242+
defaults = Object.keys(defaults).reduce((acc: ConnectionDefaults, key) => {
243+
const val = defaults[key]
244+
if (val !== undefined) acc[key] = val
245+
return acc
246+
}, {})
247+
248+
let newOpts
249+
if (typeof node === 'string') {
250+
newOpts = {
251+
url: new URL(node)
252+
}
253+
} else {
254+
newOpts = node
255+
}
256+
this.connectionPool.addConnection({ ...defaults, ...newOpts })
234257
}
235258

236259
this.transport = new options.Transport({

0 commit comments

Comments
 (0)