aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/undici/lib/dispatcher/h2c-client.js
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/undici/lib/dispatcher/h2c-client.js')
-rw-r--r--vanilla/node_modules/undici/lib/dispatcher/h2c-client.js51
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