diff --git a/lib/http2.js b/lib/http2.js index e964abf589d0eb..ab9e33b2a2a859 100644 --- a/lib/http2.js +++ b/lib/http2.js @@ -13,7 +13,9 @@ const { getUnpackedSettings, createServer, createSecureServer, - connect + connect, + Http2ServerRequest, + Http2ServerResponse, } = require('internal/http2/core'); module.exports = { @@ -23,5 +25,7 @@ module.exports = { getUnpackedSettings, createServer, createSecureServer, - connect + connect, + Http2ServerResponse, + Http2ServerRequest, }; diff --git a/lib/internal/http2/compat.js b/lib/internal/http2/compat.js index 100e08a25df92b..c2ada307dda675 100644 --- a/lib/internal/http2/compat.js +++ b/lib/internal/http2/compat.js @@ -573,4 +573,8 @@ function onServerStream(stream, headers, flags) { server.emit('request', request, response); } -module.exports = { onServerStream }; +module.exports = { + onServerStream, + Http2ServerRequest, + Http2ServerResponse, +}; diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index da8edb18cfdef7..dae3e609e89a6a 100755 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -15,7 +15,10 @@ const fs = require('fs'); const errors = require('internal/errors'); const { Duplex } = require('stream'); const { URL } = require('url'); -const { onServerStream } = require('internal/http2/compat'); +const { onServerStream, + Http2ServerRequest, + Http2ServerResponse, +} = require('internal/http2/compat'); const { utcDate } = require('internal/http'); const { _connectionListener: httpConnectionListener } = require('http'); const { isUint8Array } = process.binding('util'); @@ -2546,7 +2549,9 @@ module.exports = { getUnpackedSettings, createServer, createSecureServer, - connect + connect, + Http2ServerRequest, + Http2ServerResponse }; /* eslint-enable no-use-before-define */ diff --git a/test/parallel/test-http2-request-response-proto.js b/test/parallel/test-http2-request-response-proto.js new file mode 100644 index 00000000000000..cce53103419d22 --- /dev/null +++ b/test/parallel/test-http2-request-response-proto.js @@ -0,0 +1,19 @@ +// Flags: --expose-http2 +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const assert = require('assert'); +const http2 = require('http2'); + +const { + Http2ServerRequest, + Http2ServerResponse, +} = http2; + +const protoRequest = Object.create(Http2ServerRequest.prototype); +const protoResponse = Object.create(Http2ServerResponse.prototype); + +assert.strictEqual(protoRequest instanceof Http2ServerRequest, true); +assert.strictEqual(protoResponse instanceof Http2ServerResponse, true);