@eggjs/supertest 9.0.0-beta.35 → 9.0.0-beta.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/test.js CHANGED
@@ -1,315 +1,236 @@
1
- import { deepStrictEqual } from 'node:assert';
2
- import { STATUS_CODES } from 'node:http';
3
- import { Server as HttpsServer } from 'node:tls';
4
- import { inspect } from 'node:util';
5
- import { Request } from 'superagent';
6
1
  import { AssertError } from "./error/AssertError.js";
7
- export class Test extends Request {
8
- app;
9
- _server;
10
- _asserts = [];
11
- /**
12
- * Initialize a new `Test` with the given `app`,
13
- * request `method` and `path`.
14
- */
15
- constructor(app, method, path) {
16
- super(method.toUpperCase(), path);
17
- this.redirects(0);
18
- this.buffer();
19
- this.app = app;
20
- this.url = typeof app === 'string' ? app + path : this.serverAddress(app, path);
21
- }
22
- /**
23
- * Returns a URL, extracted from a server.
24
- *
25
- * @return {String} URL address
26
- * @private
27
- */
28
- serverAddress(app, path) {
29
- const addr = app.address();
30
- if (!addr) {
31
- this._server = app.listen(0);
32
- }
33
- const port = app.address().port;
34
- const protocol = app instanceof HttpsServer || this._server instanceof HttpsServer ? 'https' : 'http';
35
- return `${protocol}://127.0.0.1:${port}${path}`;
36
- }
37
- /**
38
- * Expectations:
39
- *
40
- * ```js
41
- * .expect(200)
42
- * .expect(200, fn)
43
- * .expect(200, body)
44
- * .expect('Some body')
45
- * .expect('Some body', fn)
46
- * .expect(['json array body', { key: 'val' }])
47
- * .expect('Content-Type', 'application/json')
48
- * .expect('Content-Type', 'application/json', fn)
49
- * .expect(fn)
50
- * .expect([200, 404])
51
- * ```
52
- *
53
- * @return {Test} The current Test instance for chaining.
54
- */
55
- expect(a, b, c) {
56
- // callback
57
- if (typeof a === 'function') {
58
- // .expect(fn)
59
- this._asserts.push(wrapAssertFn(a));
60
- return this;
61
- }
62
- if (typeof b === 'function') {
63
- // .expect('Some body', fn)
64
- this.end(b);
65
- }
66
- if (typeof c === 'function') {
67
- // .expect('Content-Type', 'application/json', fn)
68
- this.end(c);
69
- }
70
- // status
71
- if (typeof a === 'number') {
72
- this._asserts.push(wrapAssertFn(this._assertStatus.bind(this, a)));
73
- // body
74
- if (typeof b !== 'function' && arguments.length > 1) {
75
- // .expect(200, 'body')
76
- // .expect(200, null)
77
- // .expect(200, 9999999)
78
- this._asserts.push(wrapAssertFn(this._assertBody.bind(this, b)));
79
- }
80
- return this;
81
- }
82
- // multiple statuses
83
- if (Array.isArray(a) && a.length > 0 && a.every((val) => typeof val === 'number')) {
84
- // .expect([200, 300])
85
- this._asserts.push(wrapAssertFn(this._assertStatusArray.bind(this, a)));
86
- return this;
87
- }
88
- // header field
89
- if (typeof b === 'string' || typeof b === 'number' || b instanceof RegExp) {
90
- // .expect('Content-Type', 'application/json')
91
- // .expect('Content-Type', /json/)
92
- this._asserts.push(wrapAssertFn(this._assertHeader.bind(this, { name: String(a), value: b })));
93
- return this;
94
- }
95
- // body
96
- // .expect('body')
97
- // .expect(['json array body', { key: 'val' }])
98
- // .expect(/foo/)
99
- this._asserts.push(wrapAssertFn(this._assertBody.bind(this, a)));
100
- return this;
101
- }
102
- /**
103
- * UnExpectations:
104
- *
105
- * .unexpectHeader('Content-Type')
106
- * .unexpectHeader('Content-Type', fn)
107
- */
108
- unexpectHeader(name, fn) {
109
- if (typeof fn === 'function') {
110
- this.end(fn);
111
- }
112
- // header
113
- if (typeof name === 'string') {
114
- this._asserts.push(this._unexpectHeader.bind(this, name));
115
- }
116
- return this;
117
- }
118
- /**
119
- * Expectations:
120
- *
121
- * .expectHeader('Content-Type')
122
- * .expectHeader('Content-Type', fn)
123
- */
124
- expectHeader(name, fn) {
125
- if (typeof fn === 'function') {
126
- this.end(fn);
127
- }
128
- // header
129
- if (typeof name === 'string') {
130
- this._asserts.push(this._expectHeader.bind(this, name));
131
- }
132
- return this;
133
- }
134
- _unexpectHeader(name, res) {
135
- const actual = res.headers[name.toLowerCase()];
136
- if (actual) {
137
- return new AssertError('unexpected "' + name + '" header field, got "' + actual + '"', name, actual);
138
- }
139
- }
140
- _expectHeader(name, res) {
141
- const actual = res.headers[name.toLowerCase()];
142
- if (!actual) {
143
- return new AssertError('expected "' + name + '" header field', name, actual);
144
- }
145
- }
146
- /**
147
- * Defer invoking superagent's `.end()` until
148
- * the server is listening.
149
- */
150
- end(fn) {
151
- const server = this._server;
152
- super.end((err, res) => {
153
- const localAssert = () => {
154
- this.assert(err, res, fn);
155
- };
156
- if (server && '_handle' in server && server._handle) {
157
- return server.close(localAssert);
158
- }
159
- localAssert();
160
- });
161
- return this;
162
- }
163
- /**
164
- * Perform assertions and invoke `fn(err, res)`.
165
- */
166
- assert(resError, res, fn) {
167
- let errorObj;
168
- // check for unexpected network errors or server not running/reachable errors
169
- // when there is no response and superagent sends back a System Error
170
- // do not check further for other asserts, if any, in such case
171
- // https://nodejs.org/api/errors.html#errors_common_system_errors
172
- const sysErrors = {
173
- ECONNREFUSED: 'Connection refused',
174
- ECONNRESET: 'Connection reset by peer',
175
- EPIPE: 'Broken pipe',
176
- ETIMEDOUT: 'Operation timed out',
177
- };
178
- if (!res && resError) {
179
- if (resError instanceof Error && resError.syscall === 'connect' && resError.code && sysErrors[resError.code]) {
180
- errorObj = new Error(resError.code + ': ' + sysErrors[resError.code]);
181
- }
182
- else {
183
- errorObj = resError;
184
- }
185
- }
186
- // asserts
187
- for (let i = 0; i < this._asserts.length && !errorObj; i += 1) {
188
- errorObj = this._assertFunction(this._asserts[i], res);
189
- }
190
- // set unexpected superagent error if no other error has occurred.
191
- if (!errorObj && resError instanceof Error && (!res || resError.status !== res.status)) {
192
- errorObj = resError;
193
- }
194
- if (!fn) {
195
- console.warn('[@eggjs/supertest] no callback function provided, fn: %s', typeof fn);
196
- return;
197
- }
198
- fn.call(this, errorObj || null, res);
199
- }
200
- /**
201
- * Perform assertions on a response body and return an Error upon failure.
202
- */
203
- _assertBody(body, res) {
204
- const isRegexp = body instanceof RegExp;
205
- // parsed
206
- if (typeof body === 'object' && !isRegexp) {
207
- try {
208
- deepStrictEqual(body, res.body);
209
- }
210
- catch (err) {
211
- const a = inspect(body);
212
- const b = inspect(res.body);
213
- return new AssertError('expected ' + a + ' response body, got ' + b, body, res.body, { cause: err });
214
- }
215
- }
216
- else if (body !== res.text) {
217
- // string
218
- const a = inspect(body);
219
- const b = inspect(res.text);
220
- // regexp
221
- if (isRegexp) {
222
- if (!body.test(res.text)) {
223
- return new AssertError('expected body ' + b + ' to match ' + body, body, res.body);
224
- }
225
- }
226
- else {
227
- return new AssertError('expected ' + a + ' response body, got ' + b, body, res.body);
228
- }
229
- }
230
- }
231
- /**
232
- * Perform assertions on a response header and return an Error upon failure.
233
- */
234
- _assertHeader(header, res) {
235
- const field = header.name;
236
- const actual = res.header[field.toLowerCase()];
237
- const fieldExpected = header.value;
238
- if (typeof actual === 'undefined') {
239
- return new AssertError('expected "' + field + '" header field', header, actual);
240
- }
241
- // This check handles header values that may be a String or single element Array
242
- if ((Array.isArray(actual) && actual.toString() === fieldExpected) || fieldExpected === actual) {
243
- return;
244
- }
245
- if (fieldExpected instanceof RegExp) {
246
- if (!fieldExpected.test(actual)) {
247
- return new AssertError('expected "' + field + '" matching ' + fieldExpected + ', got "' + actual + '"', header, actual);
248
- }
249
- }
250
- else {
251
- return new AssertError('expected "' + field + '" of "' + fieldExpected + '", got "' + actual + '"', header, actual);
252
- }
253
- }
254
- /**
255
- * Perform assertions on the response status and return an Error upon failure.
256
- */
257
- _assertStatus(status, res) {
258
- if (res.status !== status) {
259
- const a = STATUS_CODES[status];
260
- const b = STATUS_CODES[res.status];
261
- return new AssertError('expected ' + status + ' "' + a + '", got ' + res.status + ' "' + b + '"', status, res.status);
262
- }
263
- }
264
- /**
265
- * Perform assertions on the response status and return an Error upon failure.
266
- */
267
- _assertStatusArray(statusArray, res) {
268
- if (!statusArray.includes(res.status)) {
269
- const b = STATUS_CODES[res.status];
270
- const expectedList = statusArray.join(', ');
271
- return new AssertError('expected one of "' + expectedList + '", got ' + res.status + ' "' + b + '"', statusArray, res.status);
272
- }
273
- }
274
- /**
275
- * Performs an assertion by calling a function and return an Error upon failure.
276
- */
277
- _assertFunction(fn, res) {
278
- let err;
279
- try {
280
- err = fn(res);
281
- }
282
- catch (e) {
283
- err = e;
284
- }
285
- if (err instanceof Error) {
286
- return err;
287
- }
288
- }
289
- }
2
+ import { STATUS_CODES } from "node:http";
3
+ import { Request } from "superagent";
4
+ import { deepStrictEqual } from "node:assert";
5
+ import { Server } from "node:tls";
6
+ import { inspect } from "node:util";
7
+
8
+ //#region src/test.ts
9
+ var Test = class extends Request {
10
+ app;
11
+ _server;
12
+ _asserts = [];
13
+ /**
14
+ * Initialize a new `Test` with the given `app`,
15
+ * request `method` and `path`.
16
+ */
17
+ constructor(app, method, path) {
18
+ super(method.toUpperCase(), path);
19
+ this.redirects(0);
20
+ this.buffer();
21
+ this.app = app;
22
+ this.url = typeof app === "string" ? app + path : this.serverAddress(app, path);
23
+ }
24
+ /**
25
+ * Returns a URL, extracted from a server.
26
+ *
27
+ * @return {String} URL address
28
+ * @private
29
+ */
30
+ serverAddress(app, path) {
31
+ if (!app.address()) this._server = app.listen(0);
32
+ const port = app.address().port;
33
+ return `${app instanceof Server || this._server instanceof Server ? "https" : "http"}://127.0.0.1:${port}${path}`;
34
+ }
35
+ /**
36
+ * Expectations:
37
+ *
38
+ * ```js
39
+ * .expect(200)
40
+ * .expect(200, fn)
41
+ * .expect(200, body)
42
+ * .expect('Some body')
43
+ * .expect('Some body', fn)
44
+ * .expect(['json array body', { key: 'val' }])
45
+ * .expect('Content-Type', 'application/json')
46
+ * .expect('Content-Type', 'application/json', fn)
47
+ * .expect(fn)
48
+ * .expect([200, 404])
49
+ * ```
50
+ *
51
+ * @return {Test} The current Test instance for chaining.
52
+ */
53
+ expect(a, b, c) {
54
+ if (typeof a === "function") {
55
+ this._asserts.push(wrapAssertFn(a));
56
+ return this;
57
+ }
58
+ if (typeof b === "function") this.end(b);
59
+ if (typeof c === "function") this.end(c);
60
+ if (typeof a === "number") {
61
+ this._asserts.push(wrapAssertFn(this._assertStatus.bind(this, a)));
62
+ if (typeof b !== "function" && arguments.length > 1) this._asserts.push(wrapAssertFn(this._assertBody.bind(this, b)));
63
+ return this;
64
+ }
65
+ if (Array.isArray(a) && a.length > 0 && a.every((val) => typeof val === "number")) {
66
+ this._asserts.push(wrapAssertFn(this._assertStatusArray.bind(this, a)));
67
+ return this;
68
+ }
69
+ if (typeof b === "string" || typeof b === "number" || b instanceof RegExp) {
70
+ this._asserts.push(wrapAssertFn(this._assertHeader.bind(this, {
71
+ name: String(a),
72
+ value: b
73
+ })));
74
+ return this;
75
+ }
76
+ this._asserts.push(wrapAssertFn(this._assertBody.bind(this, a)));
77
+ return this;
78
+ }
79
+ /**
80
+ * UnExpectations:
81
+ *
82
+ * .unexpectHeader('Content-Type')
83
+ * .unexpectHeader('Content-Type', fn)
84
+ */
85
+ unexpectHeader(name, fn) {
86
+ if (typeof fn === "function") this.end(fn);
87
+ if (typeof name === "string") this._asserts.push(this._unexpectHeader.bind(this, name));
88
+ return this;
89
+ }
90
+ /**
91
+ * Expectations:
92
+ *
93
+ * .expectHeader('Content-Type')
94
+ * .expectHeader('Content-Type', fn)
95
+ */
96
+ expectHeader(name, fn) {
97
+ if (typeof fn === "function") this.end(fn);
98
+ if (typeof name === "string") this._asserts.push(this._expectHeader.bind(this, name));
99
+ return this;
100
+ }
101
+ _unexpectHeader(name, res) {
102
+ const actual = res.headers[name.toLowerCase()];
103
+ if (actual) return new AssertError("unexpected \"" + name + "\" header field, got \"" + actual + "\"", name, actual);
104
+ }
105
+ _expectHeader(name, res) {
106
+ const actual = res.headers[name.toLowerCase()];
107
+ if (!actual) return new AssertError("expected \"" + name + "\" header field", name, actual);
108
+ }
109
+ /**
110
+ * Defer invoking superagent's `.end()` until
111
+ * the server is listening.
112
+ */
113
+ end(fn) {
114
+ const server = this._server;
115
+ super.end((err, res) => {
116
+ const localAssert = () => {
117
+ this.assert(err, res, fn);
118
+ };
119
+ if (server && "_handle" in server && server._handle) return server.close(localAssert);
120
+ localAssert();
121
+ });
122
+ return this;
123
+ }
124
+ /**
125
+ * Perform assertions and invoke `fn(err, res)`.
126
+ */
127
+ assert(resError, res, fn) {
128
+ let errorObj;
129
+ const sysErrors = {
130
+ ECONNREFUSED: "Connection refused",
131
+ ECONNRESET: "Connection reset by peer",
132
+ EPIPE: "Broken pipe",
133
+ ETIMEDOUT: "Operation timed out"
134
+ };
135
+ if (!res && resError) if (resError instanceof Error && resError.syscall === "connect" && resError.code && sysErrors[resError.code]) errorObj = /* @__PURE__ */ new Error(resError.code + ": " + sysErrors[resError.code]);
136
+ else errorObj = resError;
137
+ for (let i = 0; i < this._asserts.length && !errorObj; i += 1) errorObj = this._assertFunction(this._asserts[i], res);
138
+ if (!errorObj && resError instanceof Error && (!res || resError.status !== res.status)) errorObj = resError;
139
+ if (!fn) {
140
+ console.warn("[@eggjs/supertest] no callback function provided, fn: %s", typeof fn);
141
+ return;
142
+ }
143
+ fn.call(this, errorObj || null, res);
144
+ }
145
+ /**
146
+ * Perform assertions on a response body and return an Error upon failure.
147
+ */
148
+ _assertBody(body, res) {
149
+ const isRegexp = body instanceof RegExp;
150
+ if (typeof body === "object" && !isRegexp) try {
151
+ deepStrictEqual(body, res.body);
152
+ } catch (err) {
153
+ const a = inspect(body);
154
+ const b = inspect(res.body);
155
+ return new AssertError("expected " + a + " response body, got " + b, body, res.body, { cause: err });
156
+ }
157
+ else if (body !== res.text) {
158
+ const a = inspect(body);
159
+ const b = inspect(res.text);
160
+ if (isRegexp) {
161
+ if (!body.test(res.text)) return new AssertError("expected body " + b + " to match " + body, body, res.body);
162
+ } else return new AssertError("expected " + a + " response body, got " + b, body, res.body);
163
+ }
164
+ }
165
+ /**
166
+ * Perform assertions on a response header and return an Error upon failure.
167
+ */
168
+ _assertHeader(header, res) {
169
+ const field = header.name;
170
+ const actual = res.header[field.toLowerCase()];
171
+ const fieldExpected = header.value;
172
+ if (typeof actual === "undefined") return new AssertError("expected \"" + field + "\" header field", header, actual);
173
+ if (Array.isArray(actual) && actual.toString() === fieldExpected || fieldExpected === actual) return;
174
+ if (fieldExpected instanceof RegExp) {
175
+ if (!fieldExpected.test(actual)) return new AssertError("expected \"" + field + "\" matching " + fieldExpected + ", got \"" + actual + "\"", header, actual);
176
+ } else return new AssertError("expected \"" + field + "\" of \"" + fieldExpected + "\", got \"" + actual + "\"", header, actual);
177
+ }
178
+ /**
179
+ * Perform assertions on the response status and return an Error upon failure.
180
+ */
181
+ _assertStatus(status, res) {
182
+ if (res.status !== status) {
183
+ const a = STATUS_CODES[status];
184
+ const b = STATUS_CODES[res.status];
185
+ return new AssertError("expected " + status + " \"" + a + "\", got " + res.status + " \"" + b + "\"", status, res.status);
186
+ }
187
+ }
188
+ /**
189
+ * Perform assertions on the response status and return an Error upon failure.
190
+ */
191
+ _assertStatusArray(statusArray, res) {
192
+ if (!statusArray.includes(res.status)) {
193
+ const b = STATUS_CODES[res.status];
194
+ return new AssertError("expected one of \"" + statusArray.join(", ") + "\", got " + res.status + " \"" + b + "\"", statusArray, res.status);
195
+ }
196
+ }
197
+ /**
198
+ * Performs an assertion by calling a function and return an Error upon failure.
199
+ */
200
+ _assertFunction(fn, res) {
201
+ let err;
202
+ try {
203
+ err = fn(res);
204
+ } catch (e) {
205
+ err = e;
206
+ }
207
+ if (err instanceof Error) return err;
208
+ }
209
+ };
290
210
  /**
291
- * Wraps an assert function into another.
292
- * The wrapper function edit the stack trace of any assertion error, prepending a more useful stack to it.
293
- *
294
- * @param {Function} assertFn
295
- * @return {Function} wrapped assert function
296
- */
211
+ * Wraps an assert function into another.
212
+ * The wrapper function edit the stack trace of any assertion error, prepending a more useful stack to it.
213
+ *
214
+ * @param {Function} assertFn
215
+ * @return {Function} wrapped assert function
216
+ */
297
217
  function wrapAssertFn(assertFn) {
298
- const savedStack = new Error().stack.split('\n').slice(3);
299
- return (res) => {
300
- let badStack;
301
- let err;
302
- try {
303
- err = assertFn(res);
304
- }
305
- catch (e) {
306
- err = e;
307
- }
308
- if (err instanceof Error && err.stack) {
309
- badStack = err.stack.replace(err.message, '').split('\n').slice(1);
310
- err.stack = [err.toString()].concat(savedStack).concat('----').concat(badStack).join('\n');
311
- }
312
- return err;
313
- };
218
+ const savedStack = (/* @__PURE__ */ new Error()).stack.split("\n").slice(3);
219
+ return (res) => {
220
+ let badStack;
221
+ let err;
222
+ try {
223
+ err = assertFn(res);
224
+ } catch (e) {
225
+ err = e;
226
+ }
227
+ if (err instanceof Error && err.stack) {
228
+ badStack = err.stack.replace(err.message, "").split("\n").slice(1);
229
+ err.stack = [err.toString()].concat(savedStack).concat("----").concat(badStack).join("\n");
230
+ }
231
+ return err;
232
+ };
314
233
  }
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQUUsTUFBTSxJQUFJLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sWUFBWSxDQUFDO0FBRXBELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWdCckQsTUFBTSxPQUFPLElBQUssU0FBUSxPQUFPO0lBQy9CLEdBQUcsQ0FBa0I7SUFDckIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsR0FBcUIsRUFBRSxDQUFDO0lBRWhDOzs7T0FHRztJQUNILFlBQVksR0FBb0IsRUFBRSxNQUFjLEVBQUUsSUFBWTtRQUM1RCxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sYUFBYSxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQy9DLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMz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
234
+
235
+ //#endregion
236
+ export { Test };
package/dist/types.d.ts CHANGED
@@ -1,10 +1,14 @@
1
- import type { RequestListener } from 'node:http';
2
- import type { Http2ServerRequest, Http2ServerResponse } from 'node:http2';
3
- import type { Server } from 'node:net';
4
- import type { AgentOptions as SAgentOptions } from 'superagent';
5
- export type H2RequestListener = (request: Http2ServerRequest, response: Http2ServerResponse) => void;
6
- export type H1RequestListener = RequestListener;
7
- export type App = Server | H1RequestListener | H2RequestListener | string;
8
- export interface AgentOptions extends SAgentOptions {
9
- http2?: boolean;
1
+ import { RequestListener } from "node:http";
2
+ import { Http2ServerRequest, Http2ServerResponse } from "node:http2";
3
+ import { AgentOptions } from "superagent";
4
+ import { Server } from "node:net";
5
+
6
+ //#region src/types.d.ts
7
+ type H2RequestListener = (request: Http2ServerRequest, response: Http2ServerResponse) => void;
8
+ type H1RequestListener = RequestListener;
9
+ type App = Server | H1RequestListener | H2RequestListener | string;
10
+ interface AgentOptions$1 extends AgentOptions {
11
+ http2?: boolean;
10
12
  }
13
+ //#endregion
14
+ export { AgentOptions$1 as AgentOptions, App };