diff options
Diffstat (limited to 'vanilla/node_modules/undici/lib/dispatcher/h2c-client.js')
| -rw-r--r-- | vanilla/node_modules/undici/lib/dispatcher/h2c-client.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/vanilla/node_modules/undici/lib/dispatcher/h2c-client.js b/vanilla/node_modules/undici/lib/dispatcher/h2c-client.js new file mode 100644 index 0000000..bd38522 --- /dev/null +++ b/vanilla/node_modules/undici/lib/dispatcher/h2c-client.js @@ -0,0 +1,51 @@ +'use strict' + +const { InvalidArgumentError } = require('../core/errors') +const Client = require('./client') + +class H2CClient extends Client { + constructor (origin, clientOpts) { + if (typeof origin === 'string') { + origin = new URL(origin) + } + + if (origin.protocol !== 'http:') { + throw new InvalidArgumentError( + 'h2c-client: Only h2c protocol is supported' + ) + } + + const { connect, maxConcurrentStreams, pipelining, ...opts } = + clientOpts ?? {} + let defaultMaxConcurrentStreams = 100 + let defaultPipelining = 100 + + if ( + maxConcurrentStreams != null && + Number.isInteger(maxConcurrentStreams) && + maxConcurrentStreams > 0 + ) { + defaultMaxConcurrentStreams = maxConcurrentStreams + } + + if (pipelining != null && Number.isInteger(pipelining) && pipelining > 0) { + defaultPipelining = pipelining + } + + if (defaultPipelining > defaultMaxConcurrentStreams) { + throw new InvalidArgumentError( + 'h2c-client: pipelining cannot be greater than maxConcurrentStreams' + ) + } + + super(origin, { + ...opts, + maxConcurrentStreams: defaultMaxConcurrentStreams, + pipelining: defaultPipelining, + allowH2: true, + useH2c: true + }) + } +} + +module.exports = H2CClient |
