@eggjs/koa 2.22.2 → 3.0.0

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.
Files changed (40) hide show
  1. package/LICENSE +1 -1
  2. package/Readme.md +2 -2
  3. package/dist/{commonjs/application.d.ts → application.d.ts} +4 -4
  4. package/dist/application.js +278 -0
  5. package/dist/{esm/context.d.ts → context.d.ts} +5 -5
  6. package/dist/context.js +350 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.js +7 -0
  9. package/dist/{commonjs/request.d.ts → request.d.ts} +3 -3
  10. package/dist/{esm/request.js → request.js} +4 -4
  11. package/dist/{esm/response.d.ts → response.d.ts} +3 -3
  12. package/dist/response.js +472 -0
  13. package/dist/{esm/types.js → types.js} +1 -1
  14. package/package.json +17 -40
  15. package/src/application.ts +4 -4
  16. package/src/context.ts +4 -4
  17. package/src/index.ts +6 -6
  18. package/src/request.ts +3 -3
  19. package/src/response.ts +3 -3
  20. package/dist/commonjs/application.js +0 -318
  21. package/dist/commonjs/context.d.ts +0 -225
  22. package/dist/commonjs/context.js +0 -357
  23. package/dist/commonjs/index.d.ts +0 -7
  24. package/dist/commonjs/index.js +0 -23
  25. package/dist/commonjs/package.json +0 -3
  26. package/dist/commonjs/request.js +0 -528
  27. package/dist/commonjs/response.d.ts +0 -225
  28. package/dist/commonjs/response.js +0 -479
  29. package/dist/commonjs/types.js +0 -3
  30. package/dist/esm/application.d.ts +0 -127
  31. package/dist/esm/application.js +0 -278
  32. package/dist/esm/context.js +0 -350
  33. package/dist/esm/index.d.ts +0 -7
  34. package/dist/esm/index.js +0 -7
  35. package/dist/esm/package.json +0 -3
  36. package/dist/esm/request.d.ts +0 -338
  37. package/dist/esm/response.js +0 -472
  38. package/dist/esm/types.d.ts +0 -11
  39. package/dist/package.json +0 -4
  40. /package/dist/{commonjs/types.d.ts → types.d.ts} +0 -0
@@ -1,479 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Response = void 0;
7
- const node_assert_1 = __importDefault(require("node:assert"));
8
- const node_path_1 = require("node:path");
9
- const node_util_1 = __importDefault(require("node:util"));
10
- const node_stream_1 = __importDefault(require("node:stream"));
11
- const content_disposition_1 = __importDefault(require("content-disposition"));
12
- const cache_content_type_1 = require("cache-content-type");
13
- const on_finished_1 = __importDefault(require("on-finished"));
14
- const escape_html_1 = __importDefault(require("escape-html"));
15
- const type_is_1 = require("type-is");
16
- const statuses_1 = __importDefault(require("statuses"));
17
- const destroy_1 = __importDefault(require("destroy"));
18
- const vary_1 = __importDefault(require("vary"));
19
- const encodeurl_1 = __importDefault(require("encodeurl"));
20
- class Response {
21
- app;
22
- req;
23
- res;
24
- ctx;
25
- request;
26
- constructor(app, ctx, req, res) {
27
- this.app = app;
28
- this.req = req;
29
- this.res = res;
30
- this.ctx = ctx;
31
- }
32
- /**
33
- * Return the request socket.
34
- */
35
- get socket() {
36
- return this.res.socket;
37
- }
38
- /**
39
- * Return response header.
40
- */
41
- get header() {
42
- return this.res.getHeaders() || {};
43
- }
44
- /**
45
- * Return response header, alias as response.header
46
- */
47
- get headers() {
48
- return this.header;
49
- }
50
- _explicitStatus;
51
- /**
52
- * Get response status code.
53
- */
54
- get status() {
55
- return this.res.statusCode;
56
- }
57
- /**
58
- * Set response status code.
59
- */
60
- set status(code) {
61
- if (this.headerSent)
62
- return;
63
- node_assert_1.default.ok(Number.isInteger(code), 'status code must be a number');
64
- node_assert_1.default.ok(code >= 100 && code <= 999, `invalid status code: ${code}`);
65
- this._explicitStatus = true;
66
- this.res.statusCode = code;
67
- if (this.req.httpVersionMajor < 2 && statuses_1.default.message[code]) {
68
- this.res.statusMessage = statuses_1.default.message[code];
69
- }
70
- if (this.body && statuses_1.default.empty[code]) {
71
- this.body = null;
72
- }
73
- }
74
- /**
75
- * Get response status message
76
- */
77
- get message() {
78
- return this.res.statusMessage ?? statuses_1.default.message[this.status];
79
- }
80
- /**
81
- * Set response status message
82
- */
83
- set message(msg) {
84
- this.res.statusMessage = msg;
85
- }
86
- // oxlint-disable-next-line typescript/no-explicit-any
87
- _body;
88
- _explicitNullBody;
89
- /**
90
- * Get response body.
91
- */
92
- get body() {
93
- return this._body;
94
- }
95
- /**
96
- * Set response body.
97
- */
98
- set body(val) {
99
- const original = this._body;
100
- this._body = val;
101
- // no content
102
- if (val === null || val === undefined) {
103
- if (!statuses_1.default.empty[this.status]) {
104
- this.status = 204;
105
- }
106
- if (val === null) {
107
- this._explicitNullBody = true;
108
- }
109
- this.remove('Content-Type');
110
- this.remove('Content-Length');
111
- this.remove('Transfer-Encoding');
112
- return;
113
- }
114
- // set the status
115
- if (!this._explicitStatus)
116
- this.status = 200;
117
- // set the content-type only if not yet set
118
- const setType = !this.has('Content-Type');
119
- // string
120
- if (typeof val === 'string') {
121
- if (setType)
122
- this.type = /^\s*?</.test(val) ? 'html' : 'text';
123
- this.length = Buffer.byteLength(val);
124
- return;
125
- }
126
- // buffer
127
- if (Buffer.isBuffer(val)) {
128
- if (setType)
129
- this.type = 'bin';
130
- this.length = val.length;
131
- return;
132
- }
133
- // stream
134
- if (val instanceof node_stream_1.default) {
135
- (0, on_finished_1.default)(this.res, destroy_1.default.bind(null, val));
136
- // oxlint-disable-next-line eqeqeq
137
- if (original != val) {
138
- val.once('error', err => this.ctx.onerror(err));
139
- // overwriting
140
- if (original !== null && original !== undefined) {
141
- this.remove('Content-Length');
142
- }
143
- }
144
- if (setType) {
145
- this.type = 'bin';
146
- }
147
- return;
148
- }
149
- // json
150
- this.remove('Content-Length');
151
- this.type = 'json';
152
- }
153
- /**
154
- * Set Content-Length field to `n`.
155
- */
156
- set length(n) {
157
- if (n === undefined)
158
- return;
159
- if (!this.has('Transfer-Encoding')) {
160
- this.set('Content-Length', n);
161
- }
162
- }
163
- /**
164
- * Return parsed response Content-Length when present.
165
- *
166
- * When Content-Length is not defined it will return `undefined`.
167
- */
168
- get length() {
169
- if (this.has('Content-Length')) {
170
- return Number.parseInt(this.get('Content-Length')) || 0;
171
- }
172
- const { body } = this;
173
- if (!body || body instanceof node_stream_1.default) {
174
- return undefined;
175
- }
176
- if (typeof body === 'string') {
177
- return Buffer.byteLength(body);
178
- }
179
- if (Buffer.isBuffer(body)) {
180
- return body.length;
181
- }
182
- return Buffer.byteLength(JSON.stringify(body));
183
- }
184
- /**
185
- * Check if a header has been written to the socket.
186
- */
187
- get headerSent() {
188
- return this.res.headersSent;
189
- }
190
- /**
191
- * Vary on `field`.
192
- */
193
- vary(field) {
194
- if (this.headerSent)
195
- return;
196
- (0, vary_1.default)(this.res, field);
197
- }
198
- _getBackReferrer() {
199
- const referrer = this.ctx.get('Referrer');
200
- if (referrer) {
201
- // referrer is a relative path
202
- if (referrer.startsWith('/')) {
203
- return referrer;
204
- }
205
- // referrer is an absolute URL, check if it's the same origin
206
- const url = new URL(referrer, this.ctx.href);
207
- if (url.host === this.ctx.host) {
208
- return referrer;
209
- }
210
- }
211
- }
212
- /**
213
- * Perform a 302 redirect to `url`.
214
- *
215
- * The string "back" is special-cased
216
- * to provide Referrer support, when Referrer
217
- * is not present `alt` or "/" is used.
218
- *
219
- * Examples:
220
- *
221
- * this.redirect('back');
222
- * this.redirect('back', '/index.html');
223
- * this.redirect('/login');
224
- * this.redirect('http://google.com'); // will format to 'http://google.com/'
225
- */
226
- redirect(url, alt) {
227
- // location
228
- if (url === 'back') {
229
- url = this._getBackReferrer() || alt || '/';
230
- }
231
- if (url.startsWith('https://') || url.startsWith('http://')) {
232
- // formatting url again avoid security escapes
233
- url = new URL(url).toString();
234
- }
235
- this.set('Location', (0, encodeurl_1.default)(url));
236
- // status
237
- if (!statuses_1.default.redirect[this.status])
238
- this.status = 302;
239
- // html
240
- if (this.ctx.accepts('html')) {
241
- url = (0, escape_html_1.default)(url);
242
- this.type = 'text/html; charset=utf-8';
243
- this.body = `Redirecting to ${url}.`;
244
- return;
245
- }
246
- // text
247
- this.type = 'text/plain; charset=utf-8';
248
- this.body = `Redirecting to ${url}.`;
249
- }
250
- /**
251
- * Set Content-Disposition header to "attachment" with optional `filename`.
252
- */
253
- attachment(filename, options) {
254
- if (filename)
255
- this.type = (0, node_path_1.extname)(filename);
256
- this.set('Content-Disposition', (0, content_disposition_1.default)(filename, options));
257
- }
258
- /**
259
- * Set Content-Type response header with `type` through `mime.lookup()`
260
- * when it does not contain a charset.
261
- *
262
- * Examples:
263
- *
264
- * this.type = '.html';
265
- * this.type = 'html';
266
- * this.type = 'json';
267
- * this.type = 'application/json';
268
- * this.type = 'png';
269
- */
270
- set type(type) {
271
- if (!type) {
272
- this.remove('Content-Type');
273
- return;
274
- }
275
- const mimeType = (0, cache_content_type_1.getType)(type);
276
- if (mimeType) {
277
- this.set('Content-Type', mimeType);
278
- }
279
- }
280
- /**
281
- * Return the response mime type void of
282
- * parameters such as "charset".
283
- */
284
- get type() {
285
- const type = this.get('Content-Type');
286
- if (!type)
287
- return '';
288
- return type.split(';', 1)[0];
289
- }
290
- /**
291
- * Check whether the response is one of the listed types.
292
- * Pretty much the same as `this.request.is()`.
293
- *
294
- * this.response.is('html')
295
- * this.response.is('html', 'json')
296
- */
297
- is(type, ...types) {
298
- let testTypes = [];
299
- if (type) {
300
- testTypes = Array.isArray(type) ? type : [type];
301
- }
302
- return (0, type_is_1.is)(this.type, [...testTypes, ...types]);
303
- }
304
- /**
305
- * Set the Last-Modified date using a string or a Date.
306
- *
307
- * this.response.lastModified = new Date();
308
- * this.response.lastModified = '2013-09-13';
309
- */
310
- set lastModified(val) {
311
- if (typeof val === 'string')
312
- val = new Date(val);
313
- if (val) {
314
- this.set('Last-Modified', val.toUTCString());
315
- }
316
- }
317
- /**
318
- * Get the Last-Modified date in Date form, if it exists.
319
- */
320
- get lastModified() {
321
- const date = this.get('last-modified');
322
- if (date)
323
- return new Date(date);
324
- }
325
- /**
326
- * Set the ETag of a response.
327
- * This will normalize the quotes if necessary.
328
- *
329
- * this.response.etag = 'md5-hash-sum';
330
- * this.response.etag = '"md5-hash-sum"';
331
- * this.response.etag = 'W/"123456789"';
332
- */
333
- set etag(val) {
334
- if (!/^(W\/)?"/.test(val))
335
- val = `"${val}"`;
336
- this.set('ETag', val);
337
- }
338
- /**
339
- * Get the ETag of a response.
340
- */
341
- get etag() {
342
- return this.get('ETag');
343
- }
344
- /**
345
- * Return response header.
346
- *
347
- * Examples:
348
- *
349
- * this.get('Content-Type');
350
- * // => "text/plain"
351
- *
352
- * this.get('content-type');
353
- * // => "text/plain"
354
- */
355
- get(field) {
356
- return (this.header[field.toLowerCase()] || '');
357
- }
358
- /**
359
- * Returns true if the header identified by name is currently set in the outgoing headers.
360
- * The header name matching is case-insensitive.
361
- *
362
- * Examples:
363
- *
364
- * this.has('Content-Type');
365
- * // => true
366
- *
367
- * this.get('content-type');
368
- * // => true
369
- */
370
- has(field) {
371
- return this.res.hasHeader(field);
372
- }
373
- /**
374
- * Set header `field` to `val` or pass
375
- * an object of header fields.
376
- *
377
- * Examples:
378
- *
379
- * this.set('Foo', ['bar', 'baz']);
380
- * this.set('Accept', 'application/json');
381
- * this.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });
382
- */
383
- set(field, val) {
384
- if (this.headerSent)
385
- return;
386
- if (typeof field === 'string') {
387
- let value = val;
388
- if (Array.isArray(val)) {
389
- value = val.map(v => (typeof v === 'string' ? v : String(v)));
390
- }
391
- else if (typeof val !== 'string') {
392
- value = String(val);
393
- }
394
- this.res.setHeader(field, value);
395
- }
396
- else {
397
- for (const key in field) {
398
- this.set(key, field[key]);
399
- }
400
- }
401
- }
402
- /**
403
- * Append additional header `field` with value `val`.
404
- *
405
- * Examples:
406
- *
407
- * ```
408
- * this.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);
409
- * this.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');
410
- * this.append('Warning', '199 Miscellaneous warning');
411
- */
412
- append(field, val) {
413
- const prev = this.get(field);
414
- let value = val;
415
- if (prev) {
416
- value = Array.isArray(prev) ? prev.concat(value) : [prev].concat(val);
417
- }
418
- return this.set(field, value);
419
- }
420
- /**
421
- * Remove header `field`.
422
- */
423
- remove(field) {
424
- if (this.headerSent)
425
- return;
426
- this.res.removeHeader(field);
427
- }
428
- /**
429
- * Checks if the request is writable.
430
- * Tests for the existence of the socket
431
- * as node sometimes does not set it.
432
- */
433
- get writable() {
434
- // can't write any more after response finished
435
- // response.writableEnded is available since Node > 12.9
436
- // https://nodejs.org/api/http.html#http_response_writableended
437
- // response.finished is undocumented feature of previous Node versions
438
- // https://stackoverflow.com/questions/16254385/undocumented-response-finished-in-node-js
439
- if (this.res.writableEnded || this.res.finished)
440
- return false;
441
- const socket = this.res.socket;
442
- // There are already pending outgoing res, but still writable
443
- // https://github.com/nodejs/node/blob/v4.4.7/lib/_http_server.js#L486
444
- if (!socket)
445
- return true;
446
- return socket.writable;
447
- }
448
- /**
449
- * Inspect implementation.
450
- */
451
- inspect() {
452
- if (!this.res)
453
- return;
454
- const o = this.toJSON();
455
- Reflect.set(o, 'body', this.body);
456
- return o;
457
- }
458
- [node_util_1.default.inspect.custom]() {
459
- return this.inspect();
460
- }
461
- /**
462
- * Return JSON representation.
463
- */
464
- toJSON() {
465
- return {
466
- status: this.status,
467
- message: this.message,
468
- header: this.header,
469
- };
470
- }
471
- /**
472
- * Flush any set headers and begin the body
473
- */
474
- flushHeaders() {
475
- this.res.flushHeaders();
476
- }
477
- }
478
- exports.Response = Response;
479
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOERBQWlDO0FBQ2pDLHlDQUFvQztBQUNwQywwREFBNkI7QUFDN0IsOERBQWlDO0FBR2pDLDhFQUU2QjtBQUM3QiwyREFBNkM7QUFDN0MsOERBQW1DO0FBQ25DLDhEQUFpQztBQUNqQyxxQ0FBdUM7QUFDdkMsd0RBQWdDO0FBQ2hDLHNEQUE4QjtBQUM5QixnREFBd0I7QUFDeEIsMERBQWtDO0FBTWxDLE1BQWEsUUFBUTtJQUVuQixHQUFHLENBQWM7SUFDakIsR0FBRyxDQUFrQjtJQUNyQixHQUFHLENBQWlCO0lBQ3BCLEdBQUcsQ0FBVTtJQUNiLE9BQU8sQ0FBVTtJQUVqQixZQUNFLEdBQWdCLEVBQ2hCLEdBQVksRUFDWixHQUFvQixFQUNwQixHQUFtQjtRQUVuQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxlQUFlLENBQVU7SUFFekI7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFD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
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,127 +0,0 @@
1
- import util from 'node:util';
2
- import Emitter from 'node:events';
3
- import type { AsyncLocalStorage } from 'node:async_hooks';
4
- import http, { type IncomingMessage, type ServerResponse } from 'node:http';
5
- import { Context } from './context.js';
6
- import { Request } from './request.js';
7
- import { Response } from './response.js';
8
- import type { CustomError, AnyProto } from './types.js';
9
- export type ProtoImplClass<T = object> = new (...args: any[]) => T;
10
- export type Next = () => Promise<void>;
11
- type _MiddlewareFunc<T> = (ctx: T, next: Next) => Promise<void> | void;
12
- export type MiddlewareFunc<T extends Context = Context> = _MiddlewareFunc<T> & {
13
- _name?: string;
14
- };
15
- /**
16
- * Expose `Application` class.
17
- * Inherits from `Emitter.prototype`.
18
- */
19
- export declare class Application extends Emitter {
20
- [key: symbol]: unknown;
21
- /**
22
- * Make HttpError available to consumers of the library so that consumers don't
23
- * have a direct dependency upon `http-errors`
24
- */
25
- static HttpError: import("http-errors").HttpErrorConstructor<number>;
26
- protected _proxy: boolean;
27
- protected _env: string;
28
- subdomainOffset: number;
29
- proxyIpHeader: string;
30
- maxIpsCount: number;
31
- protected _keys?: string[];
32
- middleware: MiddlewareFunc<Context>[];
33
- ctxStorage: AsyncLocalStorage<Context>;
34
- silent: boolean;
35
- ContextClass: ProtoImplClass<Context>;
36
- context: AnyProto;
37
- RequestClass: ProtoImplClass<Request>;
38
- request: AnyProto;
39
- ResponseClass: ProtoImplClass<Response>;
40
- response: AnyProto;
41
- /**
42
- * Initialize a new `Application`.
43
- *
44
- * @param {object} [options] Application options
45
- * @param {string} [options.env] Environment, default is `development`
46
- * @param {string[]} [options.keys] Signed cookie keys
47
- * @param {boolean} [options.proxy] Trust proxy headers
48
- * @param {number} [options.subdomainOffset] Subdomain offset
49
- * @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For
50
- * @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)
51
- */
52
- constructor(options?: {
53
- proxy?: boolean;
54
- subdomainOffset?: number;
55
- proxyIpHeader?: string;
56
- maxIpsCount?: number;
57
- env?: string;
58
- keys?: string[];
59
- });
60
- get keys(): string[] | undefined;
61
- set keys(value: string[] | undefined);
62
- get env(): string;
63
- set env(value: string);
64
- get proxy(): boolean;
65
- set proxy(value: boolean);
66
- /**
67
- * Shorthand for:
68
- *
69
- * http.createServer(app.callback()).listen(...)
70
- */
71
- listen(...args: any[]): http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
72
- /**
73
- * Return JSON representation.
74
- * We only bother showing settings.
75
- */
76
- toJSON(): {
77
- subdomainOffset: number;
78
- proxy: boolean;
79
- env: string;
80
- };
81
- /**
82
- * Inspect implementation.
83
- */
84
- inspect(): {
85
- subdomainOffset: number;
86
- proxy: boolean;
87
- env: string;
88
- };
89
- [util.inspect.custom](): {
90
- subdomainOffset: number;
91
- proxy: boolean;
92
- env: string;
93
- };
94
- /**
95
- * Use the given middleware `fn`.
96
- */
97
- use<T extends Context = Context>(fn: MiddlewareFunc<T>): this;
98
- /**
99
- * Return a request handler callback
100
- * for node's native http server.
101
- */
102
- callback(): (req: IncomingMessage, res: ServerResponse) => Promise<void | http.ServerResponse<http.IncomingMessage>>;
103
- /**
104
- * return current context from async local storage
105
- */
106
- get currentContext(): Context | undefined;
107
- /**
108
- * Handle request in callback.
109
- * @private
110
- */
111
- protected handleRequest(ctx: Context, fnMiddleware: (ctx: Context) => Promise<void>): Promise<void | http.ServerResponse<http.IncomingMessage>>;
112
- /**
113
- * Initialize a new context.
114
- * @private
115
- */
116
- createContext(req: IncomingMessage, res: ServerResponse): Context;
117
- /**
118
- * Default error handler.
119
- * @private
120
- */
121
- protected onerror(err: CustomError): void;
122
- /**
123
- * Response helper.
124
- */
125
- protected _respond(ctx: Context): http.ServerResponse<http.IncomingMessage> | undefined;
126
- }
127
- export {};