@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/agent.d.ts +31 -26
- package/dist/agent.js +72 -85
- package/dist/error/AssertError.d.ts +7 -4
- package/dist/error/AssertError.js +15 -12
- package/dist/index.d.ts +14 -11
- package/dist/index.js +19 -25
- package/dist/request.d.ts +23 -19
- package/dist/request.js +50 -55
- package/dist/test.d.ts +97 -93
- package/dist/test.js +232 -311
- package/dist/types.d.ts +13 -9
- package/package.json +20 -24
- package/dist/types.js +0 -2
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 };
|