@eggjs/koa 2.18.2 → 2.18.4
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/Readme.md +4 -4
- package/dist/commonjs/application.d.ts +10 -10
- package/dist/commonjs/application.js +22 -11
- package/dist/commonjs/context.d.ts +0 -2
- package/dist/commonjs/request.d.ts +3 -7
- package/dist/commonjs/response.d.ts +0 -5
- package/dist/esm/application.d.ts +10 -10
- package/dist/esm/application.js +22 -11
- package/dist/esm/context.d.ts +0 -2
- package/dist/esm/request.d.ts +3 -7
- package/dist/esm/response.d.ts +0 -5
- package/package.json +5 -4
- package/src/application.ts +25 -11
package/Readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @eggjs/koa
|
|
2
2
|
|
|
3
|
-
@eggjs/koa is forked from [Koa v2.x](https://github.com/koajs/koa/tree/v2.x) for LTS and drop Node.js < 18.
|
|
3
|
+
@eggjs/koa is forked from [Koa v2.x](https://github.com/koajs/koa/tree/v2.x) for LTS and drop Node.js < 18.19.0 support.
|
|
4
4
|
|
|
5
5
|
<img height="240px" src="/docs/logo.png" alt="Koa middleware framework for nodejs"/>
|
|
6
6
|
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
|
|
13
13
|
Expressive HTTP middleware framework for node.js to make web applications and APIs more enjoyable to write. Koa's middleware stack flows in a stack-like manner, allowing you to perform actions downstream then filter and manipulate the response upstream.
|
|
14
14
|
|
|
15
|
-
Only methods that are common to nearly all HTTP servers are integrated directly into Koa's small
|
|
16
|
-
includes things like content negotiation, normalization of node inconsistencies, redirection, and a few others.
|
|
15
|
+
Only methods that are common to nearly all HTTP servers are integrated directly into Koa's small codebase.
|
|
16
|
+
This includes things like content negotiation, normalization of node inconsistencies, redirection, and a few others.
|
|
17
17
|
|
|
18
18
|
Koa is not bundled with any middleware.
|
|
19
19
|
|
|
20
20
|
## Installation
|
|
21
21
|
|
|
22
|
-
@eggjs/koa requires __node v18.
|
|
22
|
+
@eggjs/koa requires __node v18.19.0__ or higher for Node.js LTS support.
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
npm install @eggjs/koa
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/// <reference types="http-errors" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
/// <reference types="node" />
|
|
5
|
-
/// <reference types="node" />
|
|
6
1
|
import Emitter from 'node:events';
|
|
7
2
|
import util from 'node:util';
|
|
8
3
|
import http from 'node:http';
|
|
@@ -14,7 +9,10 @@ import type { ContextDelegation } from './context.js';
|
|
|
14
9
|
import type { CustomError, AnyProto } from './types.js';
|
|
15
10
|
export type ProtoImplClass<T = object> = new (...args: any[]) => T;
|
|
16
11
|
export type Next = () => Promise<void>;
|
|
17
|
-
|
|
12
|
+
type _MiddlewareFunc = (ctx: ContextDelegation, next: Next) => Promise<void> | void;
|
|
13
|
+
export type MiddlewareFunc = _MiddlewareFunc & {
|
|
14
|
+
_name?: string;
|
|
15
|
+
};
|
|
18
16
|
/**
|
|
19
17
|
* Expose `Application` class.
|
|
20
18
|
* Inherits from `Emitter.prototype`.
|
|
@@ -26,11 +24,11 @@ export declare class Application extends Emitter {
|
|
|
26
24
|
* have a direct dependency upon `http-errors`
|
|
27
25
|
*/
|
|
28
26
|
static HttpError: import("http-errors").HttpErrorConstructor<number>;
|
|
29
|
-
|
|
27
|
+
protected _proxy: boolean;
|
|
28
|
+
protected _env: string;
|
|
30
29
|
subdomainOffset: number;
|
|
31
30
|
proxyIpHeader: string;
|
|
32
31
|
maxIpsCount: number;
|
|
33
|
-
env: string;
|
|
34
32
|
keys?: string[];
|
|
35
33
|
middleware: MiddlewareFunc[];
|
|
36
34
|
ctxStorage: AsyncLocalStorage<ContextDelegation>;
|
|
@@ -60,6 +58,10 @@ export declare class Application extends Emitter {
|
|
|
60
58
|
env?: string;
|
|
61
59
|
keys?: string[];
|
|
62
60
|
});
|
|
61
|
+
get env(): string;
|
|
62
|
+
set env(value: string);
|
|
63
|
+
get proxy(): boolean;
|
|
64
|
+
set proxy(value: boolean);
|
|
63
65
|
/**
|
|
64
66
|
* Shorthand for:
|
|
65
67
|
*
|
|
@@ -90,8 +92,6 @@ export declare class Application extends Emitter {
|
|
|
90
92
|
};
|
|
91
93
|
/**
|
|
92
94
|
* Use the given middleware `fn`.
|
|
93
|
-
*
|
|
94
|
-
* Old-style middleware will be converted.
|
|
95
95
|
*/
|
|
96
96
|
use(fn: MiddlewareFunc): this;
|
|
97
97
|
/**
|
|
@@ -18,7 +18,7 @@ const http_errors_1 = require("http-errors");
|
|
|
18
18
|
const context_js_1 = require("./context.js");
|
|
19
19
|
const request_js_1 = require("./request.js");
|
|
20
20
|
const response_js_1 = require("./response.js");
|
|
21
|
-
const debug = (0, node_util_1.debuglog)('koa:application');
|
|
21
|
+
const debug = (0, node_util_1.debuglog)('@eggjs/koa:application');
|
|
22
22
|
/**
|
|
23
23
|
* Expose `Application` class.
|
|
24
24
|
* Inherits from `Emitter.prototype`.
|
|
@@ -29,11 +29,11 @@ class Application extends node_events_1.default {
|
|
|
29
29
|
* have a direct dependency upon `http-errors`
|
|
30
30
|
*/
|
|
31
31
|
static HttpError = http_errors_1.HttpError;
|
|
32
|
-
|
|
32
|
+
_proxy;
|
|
33
|
+
_env;
|
|
33
34
|
subdomainOffset;
|
|
34
35
|
proxyIpHeader;
|
|
35
36
|
maxIpsCount;
|
|
36
|
-
env;
|
|
37
37
|
keys;
|
|
38
38
|
middleware;
|
|
39
39
|
ctxStorage;
|
|
@@ -58,11 +58,11 @@ class Application extends node_events_1.default {
|
|
|
58
58
|
constructor(options) {
|
|
59
59
|
super();
|
|
60
60
|
options = options || {};
|
|
61
|
-
this.
|
|
61
|
+
this._proxy = options.proxy || false;
|
|
62
62
|
this.subdomainOffset = options.subdomainOffset || 2;
|
|
63
63
|
this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For';
|
|
64
64
|
this.maxIpsCount = options.maxIpsCount || 0;
|
|
65
|
-
this.
|
|
65
|
+
this._env = options.env || process.env.NODE_ENV || 'development';
|
|
66
66
|
if (options.keys)
|
|
67
67
|
this.keys = options.keys;
|
|
68
68
|
this.middleware = [];
|
|
@@ -78,13 +78,25 @@ class Application extends node_events_1.default {
|
|
|
78
78
|
};
|
|
79
79
|
this.response = this.ResponseClass.prototype;
|
|
80
80
|
}
|
|
81
|
+
get env() {
|
|
82
|
+
return this._env;
|
|
83
|
+
}
|
|
84
|
+
set env(value) {
|
|
85
|
+
this._env = value;
|
|
86
|
+
}
|
|
87
|
+
get proxy() {
|
|
88
|
+
return this._proxy;
|
|
89
|
+
}
|
|
90
|
+
set proxy(value) {
|
|
91
|
+
this._proxy = value;
|
|
92
|
+
}
|
|
81
93
|
/**
|
|
82
94
|
* Shorthand for:
|
|
83
95
|
*
|
|
84
96
|
* http.createServer(app.callback()).listen(...)
|
|
85
97
|
*/
|
|
86
98
|
listen(...args) {
|
|
87
|
-
debug('listen');
|
|
99
|
+
debug('listen with args: %o', args);
|
|
88
100
|
const server = node_http_1.default.createServer(this.callback());
|
|
89
101
|
return server.listen(...args);
|
|
90
102
|
}
|
|
@@ -110,18 +122,17 @@ class Application extends node_events_1.default {
|
|
|
110
122
|
}
|
|
111
123
|
/**
|
|
112
124
|
* Use the given middleware `fn`.
|
|
113
|
-
*
|
|
114
|
-
* Old-style middleware will be converted.
|
|
115
125
|
*/
|
|
116
126
|
use(fn) {
|
|
117
127
|
if (typeof fn !== 'function')
|
|
118
128
|
throw new TypeError('middleware must be a function!');
|
|
129
|
+
const name = fn._name || fn.name || '-';
|
|
119
130
|
if ((0, is_type_of_1.isGeneratorFunction)(fn)) {
|
|
120
|
-
throw new TypeError(
|
|
131
|
+
throw new TypeError(`Support for generators was removed, middleware: ${name}. ` +
|
|
121
132
|
'See the documentation for examples of how to convert old middleware ' +
|
|
122
133
|
'https://github.com/koajs/koa/blob/master/docs/migration.md');
|
|
123
134
|
}
|
|
124
|
-
debug('use %
|
|
135
|
+
debug('use %o #%d', name, this.middleware.length);
|
|
125
136
|
this.middleware.push(fn);
|
|
126
137
|
return this;
|
|
127
138
|
}
|
|
@@ -254,4 +265,4 @@ class Application extends node_events_1.default {
|
|
|
254
265
|
}
|
|
255
266
|
exports.Application = Application;
|
|
256
267
|
exports.default = Application;
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXFDO0FBQ3JDLDhEQUFrQztBQUNsQywwREFBNkI7QUFDN0IsOERBQWlDO0FBQ2pDLDBEQUE2QjtBQUc3QiwrQkFBNEM7QUFDNUMsMkNBQWlEO0FBQ2pELDhEQUFxQztBQUNyQyx3REFBZ0M7QUFDaEMsOERBQWtDO0FBQ2xDLDZDQUF3QztBQUN4Qyw2Q0FBdUM7QUFDdkMsNkNBQXVDO0FBQ3ZDLCtDQUF5QztBQUl6QyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsd0JBQXdCLENBQUMsQ0FBQztBQU9qRDs7O0dBR0c7QUFDSCxNQUFhLFdBQVksU0FBUSxxQkFBTztJQUN0Qzs7O09BR0c7SUFDSCxNQUFNLENBQUMsU0FBUyxHQUFHLHVCQUFTLENBQUM7SUFFbkIsTUFBTSxDQUFVO0lBQ2hCLElBQUksQ0FBUztJQUN2QixlQUFlLENBQVM7SUFDeEIsYUFBYSxDQUFTO0lBQ3RCLFdBQVcsQ0FBUztJQUNwQixJQUFJLENBQVk7SUFDaEIsVUFBVSxDQUFtQjtJQUM3QixVQUFVLENBQXVDO0lBQ2pELE1BQU0sQ0FBVTtJQUNoQixZQUFZLENBQW9DO0lBQ2hELE9BQU8sQ0FBVztJQUNsQixZQUFZLENBQTBCO0lBQ3RDLE9BQU8sQ0FBVztJQUNsQixhQUFhLENBQTJCO0lBQ3hDLFFBQVEsQ0FBVztJQUVuQjs7Ozs7Ozs7OztRQVVJO0lBRUosWUFBWSxPQU9YO1FBQ0MsS0FBSyxFQUFFLENBQUM7UUFDUixPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFB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
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
/// <reference types="node" />
|
|
5
|
-
import net from 'node:net';
|
|
1
|
+
import type { Socket } from 'node:net';
|
|
6
2
|
import qs from 'node:querystring';
|
|
7
3
|
import util from 'node:util';
|
|
8
4
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
@@ -129,9 +125,9 @@ export declare class Request {
|
|
|
129
125
|
/**
|
|
130
126
|
* Return the request socket.
|
|
131
127
|
*/
|
|
132
|
-
get socket():
|
|
128
|
+
get socket(): (Socket & {
|
|
133
129
|
encrypted: boolean;
|
|
134
|
-
};
|
|
130
|
+
});
|
|
135
131
|
/**
|
|
136
132
|
* Get the charset when present or undefined.
|
|
137
133
|
*/
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
/// <reference types="node" />
|
|
5
|
-
/// <reference types="node" />
|
|
6
1
|
import util from 'node:util';
|
|
7
2
|
import Stream from 'node:stream';
|
|
8
3
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/// <reference types="http-errors" />
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
4
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
5
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
6
1
|
import Emitter from 'node:events';
|
|
7
2
|
import util from 'node:util';
|
|
8
3
|
import http from 'node:http';
|
|
@@ -14,7 +9,10 @@ import type { ContextDelegation } from './context.js';
|
|
|
14
9
|
import type { CustomError, AnyProto } from './types.js';
|
|
15
10
|
export type ProtoImplClass<T = object> = new (...args: any[]) => T;
|
|
16
11
|
export type Next = () => Promise<void>;
|
|
17
|
-
|
|
12
|
+
type _MiddlewareFunc = (ctx: ContextDelegation, next: Next) => Promise<void> | void;
|
|
13
|
+
export type MiddlewareFunc = _MiddlewareFunc & {
|
|
14
|
+
_name?: string;
|
|
15
|
+
};
|
|
18
16
|
/**
|
|
19
17
|
* Expose `Application` class.
|
|
20
18
|
* Inherits from `Emitter.prototype`.
|
|
@@ -26,11 +24,11 @@ export declare class Application extends Emitter {
|
|
|
26
24
|
* have a direct dependency upon `http-errors`
|
|
27
25
|
*/
|
|
28
26
|
static HttpError: import("http-errors").HttpErrorConstructor<number>;
|
|
29
|
-
|
|
27
|
+
protected _proxy: boolean;
|
|
28
|
+
protected _env: string;
|
|
30
29
|
subdomainOffset: number;
|
|
31
30
|
proxyIpHeader: string;
|
|
32
31
|
maxIpsCount: number;
|
|
33
|
-
env: string;
|
|
34
32
|
keys?: string[];
|
|
35
33
|
middleware: MiddlewareFunc[];
|
|
36
34
|
ctxStorage: AsyncLocalStorage<ContextDelegation>;
|
|
@@ -60,6 +58,10 @@ export declare class Application extends Emitter {
|
|
|
60
58
|
env?: string;
|
|
61
59
|
keys?: string[];
|
|
62
60
|
});
|
|
61
|
+
get env(): string;
|
|
62
|
+
set env(value: string);
|
|
63
|
+
get proxy(): boolean;
|
|
64
|
+
set proxy(value: boolean);
|
|
63
65
|
/**
|
|
64
66
|
* Shorthand for:
|
|
65
67
|
*
|
|
@@ -90,8 +92,6 @@ export declare class Application extends Emitter {
|
|
|
90
92
|
};
|
|
91
93
|
/**
|
|
92
94
|
* Use the given middleware `fn`.
|
|
93
|
-
*
|
|
94
|
-
* Old-style middleware will be converted.
|
|
95
95
|
*/
|
|
96
96
|
use(fn: MiddlewareFunc): this;
|
|
97
97
|
/**
|
package/dist/esm/application.js
CHANGED
|
@@ -12,7 +12,7 @@ import { HttpError } from 'http-errors';
|
|
|
12
12
|
import { Context } from './context.js';
|
|
13
13
|
import { Request } from './request.js';
|
|
14
14
|
import { Response } from './response.js';
|
|
15
|
-
const debug = debuglog('koa:application');
|
|
15
|
+
const debug = debuglog('@eggjs/koa:application');
|
|
16
16
|
/**
|
|
17
17
|
* Expose `Application` class.
|
|
18
18
|
* Inherits from `Emitter.prototype`.
|
|
@@ -23,11 +23,11 @@ export class Application extends Emitter {
|
|
|
23
23
|
* have a direct dependency upon `http-errors`
|
|
24
24
|
*/
|
|
25
25
|
static HttpError = HttpError;
|
|
26
|
-
|
|
26
|
+
_proxy;
|
|
27
|
+
_env;
|
|
27
28
|
subdomainOffset;
|
|
28
29
|
proxyIpHeader;
|
|
29
30
|
maxIpsCount;
|
|
30
|
-
env;
|
|
31
31
|
keys;
|
|
32
32
|
middleware;
|
|
33
33
|
ctxStorage;
|
|
@@ -52,11 +52,11 @@ export class Application extends Emitter {
|
|
|
52
52
|
constructor(options) {
|
|
53
53
|
super();
|
|
54
54
|
options = options || {};
|
|
55
|
-
this.
|
|
55
|
+
this._proxy = options.proxy || false;
|
|
56
56
|
this.subdomainOffset = options.subdomainOffset || 2;
|
|
57
57
|
this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For';
|
|
58
58
|
this.maxIpsCount = options.maxIpsCount || 0;
|
|
59
|
-
this.
|
|
59
|
+
this._env = options.env || process.env.NODE_ENV || 'development';
|
|
60
60
|
if (options.keys)
|
|
61
61
|
this.keys = options.keys;
|
|
62
62
|
this.middleware = [];
|
|
@@ -72,13 +72,25 @@ export class Application extends Emitter {
|
|
|
72
72
|
};
|
|
73
73
|
this.response = this.ResponseClass.prototype;
|
|
74
74
|
}
|
|
75
|
+
get env() {
|
|
76
|
+
return this._env;
|
|
77
|
+
}
|
|
78
|
+
set env(value) {
|
|
79
|
+
this._env = value;
|
|
80
|
+
}
|
|
81
|
+
get proxy() {
|
|
82
|
+
return this._proxy;
|
|
83
|
+
}
|
|
84
|
+
set proxy(value) {
|
|
85
|
+
this._proxy = value;
|
|
86
|
+
}
|
|
75
87
|
/**
|
|
76
88
|
* Shorthand for:
|
|
77
89
|
*
|
|
78
90
|
* http.createServer(app.callback()).listen(...)
|
|
79
91
|
*/
|
|
80
92
|
listen(...args) {
|
|
81
|
-
debug('listen');
|
|
93
|
+
debug('listen with args: %o', args);
|
|
82
94
|
const server = http.createServer(this.callback());
|
|
83
95
|
return server.listen(...args);
|
|
84
96
|
}
|
|
@@ -104,18 +116,17 @@ export class Application extends Emitter {
|
|
|
104
116
|
}
|
|
105
117
|
/**
|
|
106
118
|
* Use the given middleware `fn`.
|
|
107
|
-
*
|
|
108
|
-
* Old-style middleware will be converted.
|
|
109
119
|
*/
|
|
110
120
|
use(fn) {
|
|
111
121
|
if (typeof fn !== 'function')
|
|
112
122
|
throw new TypeError('middleware must be a function!');
|
|
123
|
+
const name = fn._name || fn.name || '-';
|
|
113
124
|
if (isGeneratorFunction(fn)) {
|
|
114
|
-
throw new TypeError(
|
|
125
|
+
throw new TypeError(`Support for generators was removed, middleware: ${name}. ` +
|
|
115
126
|
'See the documentation for examples of how to convert old middleware ' +
|
|
116
127
|
'https://github.com/koajs/koa/blob/master/docs/migration.md');
|
|
117
128
|
}
|
|
118
|
-
debug('use %
|
|
129
|
+
debug('use %o #%d', name, this.middleware.length);
|
|
119
130
|
this.middleware.push(fn);
|
|
120
131
|
return this;
|
|
121
132
|
}
|
|
@@ -247,4 +258,4 @@ export class Application extends Emitter {
|
|
|
247
258
|
}
|
|
248
259
|
}
|
|
249
260
|
export default Application;
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLE9BQU8sTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFHN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sT0FBTyxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXpDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBT2pEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTztJQUN0Qzs7O09BR0c7SUFDSCxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUVuQixNQUFNLENBQVU7SUFDaEIsSUFBSSxDQUFTO0lBQ3ZCLGVBQWUsQ0FBUztJQUN4QixhQUFhLENBQVM7SUFDdEIsV0FBVyxDQUFTO0lBQ3BCLElBQUksQ0FBWTtJQUNoQixVQUFVLENBQW1CO0lBQzdCLFVBQVUsQ0FBdUM7SUFDakQsTUFBTSxDQUFVO0lBQ2hCLFlBQVksQ0FBb0M7SUFDaEQsT0FBTyxDQUFXO0lBQ2xCLFlBQVksQ0FBMEI7SUFDdEMsT0FBTyxDQUFXO0lBQ2xCLGFBQWEsQ0FBMkI7SUFDeEMsUUFBUSxDQUFXO0lBRW5COzs7Ozs7Ozs7O1FBVUk7SUFFSixZQUFZLE9BT1g7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQUNSLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksaUJBQWlCLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDO1FBQ2pFLElBQUksT0FBTyxDQUFDLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxrQkFBbUIsU0FBUSxPQUFPO1NBQVUsQ0FBQztRQUN2RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxrQkFBbUIsU0FBUSxPQUFPO1NBQUcsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxtQkFBb0IsU0FBUSxRQUFRO1NBQUcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBYztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxHQUFHLElBQVc7UUFDbkIsS0FBSyxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPO1lBQ0wsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxFQUFrQjtRQUNwQixJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVU7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEYsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQztRQUN4QyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyxtREFBbUQsSUFBSSxJQUFJO2dCQUM3RSxzRUFBc0U7Z0JBQ3RFLDREQUE0RCxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQW9CLEVBQUUsR0FBbUIsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUN6QyxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQXNCLEVBQUUsWUFBdUQ7UUFDbEcsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNwQixHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUNyQixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sYUFBYSxDQUFDLEdBQW9CLEVBQUUsR0FBbUI7UUFDL0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUE0QixDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDTyxPQUFPLENBQUMsR0FBZ0I7UUFDaEMscUZBQXFGO1FBQ3JGLCtDQUErQztRQUMvQywwRkFBMEY7UUFDMUYsTUFBTSxhQUFhLEdBQUcsR0FBRyxZQUFZLEtBQUs7WUFDeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGdCQUFnQixDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbEYsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFeEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsR0FBc0I7UUFDdkMsc0JBQXNCO1FBQ3RCLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLO1lBQUUsT0FBTztRQUVsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTFCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNwQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBRXhCLGNBQWM7UUFDZCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixnQkFBZ0I7WUFDaEIsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDNUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDcEQsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxjQUFjO1FBQ2QsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ25DLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNwQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUNsQixHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsWUFBWTtRQUNaLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxZQUFZLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEQsYUFBYTtRQUNiLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7O0FBR0gsZUFBZSxXQUFXLENBQUMifQ==
|
package/dist/esm/context.d.ts
CHANGED
package/dist/esm/request.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
4
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
5
|
-
import net from 'node:net';
|
|
1
|
+
import type { Socket } from 'node:net';
|
|
6
2
|
import qs from 'node:querystring';
|
|
7
3
|
import util from 'node:util';
|
|
8
4
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
@@ -129,9 +125,9 @@ export declare class Request {
|
|
|
129
125
|
/**
|
|
130
126
|
* Return the request socket.
|
|
131
127
|
*/
|
|
132
|
-
get socket():
|
|
128
|
+
get socket(): (Socket & {
|
|
133
129
|
encrypted: boolean;
|
|
134
|
-
};
|
|
130
|
+
});
|
|
135
131
|
/**
|
|
136
132
|
* Get the charset when present or undefined.
|
|
137
133
|
*/
|
package/dist/esm/response.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
4
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
5
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
6
1
|
import util from 'node:util';
|
|
7
2
|
import Stream from 'node:stream';
|
|
8
3
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/koa",
|
|
3
|
-
"version": "2.18.
|
|
3
|
+
"version": "2.18.4",
|
|
4
4
|
"engines": {
|
|
5
|
-
"node": ">= 18.
|
|
5
|
+
"node": ">= 18.19.0"
|
|
6
6
|
},
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"description": "Koa web app framework for https://eggjs.org",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"test": "npm run lint -- --fix && egg-bin test",
|
|
13
|
-
"ci": "npm run lint && egg-bin cov && npm run prepublishOnly",
|
|
13
|
+
"ci": "npm run lint && egg-bin cov && npm run prepublishOnly && attw --pack",
|
|
14
14
|
"lint": "eslint src test",
|
|
15
15
|
"authors": "git log --format='%aN <%aE>' | sort -u > AUTHORS",
|
|
16
16
|
"prepublishOnly": "tshy && tshy-after"
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"vary": "^1.1.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
+
"@arethetypeswrong/cli": "^0.15.3",
|
|
55
56
|
"@eggjs/tsconfig": "^1.3.3",
|
|
56
57
|
"@types/content-type": "^1.1.8",
|
|
57
58
|
"@types/delegates": "^1.0.3",
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
"@types/vary": "^1.1.3",
|
|
72
73
|
"egg-bin": "^6.4.0",
|
|
73
74
|
"eslint": "^8.41.0",
|
|
74
|
-
"eslint-config-egg": "
|
|
75
|
+
"eslint-config-egg": "14",
|
|
75
76
|
"mm": "^3.3.0",
|
|
76
77
|
"supertest": "^3.1.0",
|
|
77
78
|
"tsd": "^0.31.0",
|
package/src/application.ts
CHANGED
|
@@ -17,11 +17,12 @@ import { Response } from './response.js';
|
|
|
17
17
|
import type { ContextDelegation } from './context.js';
|
|
18
18
|
import type { CustomError, AnyProto } from './types.js';
|
|
19
19
|
|
|
20
|
-
const debug = debuglog('koa:application');
|
|
20
|
+
const debug = debuglog('@eggjs/koa:application');
|
|
21
21
|
|
|
22
22
|
export type ProtoImplClass<T = object> = new(...args: any[]) => T;
|
|
23
23
|
export type Next = () => Promise<void>;
|
|
24
|
-
|
|
24
|
+
type _MiddlewareFunc = (ctx: ContextDelegation, next: Next) => Promise<void> | void;
|
|
25
|
+
export type MiddlewareFunc = _MiddlewareFunc & { _name?: string };
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Expose `Application` class.
|
|
@@ -34,11 +35,11 @@ export class Application extends Emitter {
|
|
|
34
35
|
*/
|
|
35
36
|
static HttpError = HttpError;
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
protected _proxy: boolean;
|
|
39
|
+
protected _env: string;
|
|
38
40
|
subdomainOffset: number;
|
|
39
41
|
proxyIpHeader: string;
|
|
40
42
|
maxIpsCount: number;
|
|
41
|
-
env: string;
|
|
42
43
|
keys?: string[];
|
|
43
44
|
middleware: MiddlewareFunc[];
|
|
44
45
|
ctxStorage: AsyncLocalStorage<ContextDelegation>;
|
|
@@ -72,11 +73,11 @@ export class Application extends Emitter {
|
|
|
72
73
|
}) {
|
|
73
74
|
super();
|
|
74
75
|
options = options || {};
|
|
75
|
-
this.
|
|
76
|
+
this._proxy = options.proxy || false;
|
|
76
77
|
this.subdomainOffset = options.subdomainOffset || 2;
|
|
77
78
|
this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For';
|
|
78
79
|
this.maxIpsCount = options.maxIpsCount || 0;
|
|
79
|
-
this.
|
|
80
|
+
this._env = options.env || process.env.NODE_ENV || 'development';
|
|
80
81
|
if (options.keys) this.keys = options.keys;
|
|
81
82
|
this.middleware = [];
|
|
82
83
|
this.ctxStorage = getAsyncLocalStorage();
|
|
@@ -89,13 +90,27 @@ export class Application extends Emitter {
|
|
|
89
90
|
this.response = this.ResponseClass.prototype;
|
|
90
91
|
}
|
|
91
92
|
|
|
93
|
+
get env() {
|
|
94
|
+
return this._env;
|
|
95
|
+
}
|
|
96
|
+
set env(value: string) {
|
|
97
|
+
this._env = value;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
get proxy() {
|
|
101
|
+
return this._proxy;
|
|
102
|
+
}
|
|
103
|
+
set proxy(value: boolean) {
|
|
104
|
+
this._proxy = value;
|
|
105
|
+
}
|
|
106
|
+
|
|
92
107
|
/**
|
|
93
108
|
* Shorthand for:
|
|
94
109
|
*
|
|
95
110
|
* http.createServer(app.callback()).listen(...)
|
|
96
111
|
*/
|
|
97
112
|
listen(...args: any[]) {
|
|
98
|
-
debug('listen');
|
|
113
|
+
debug('listen with args: %o', args);
|
|
99
114
|
const server = http.createServer(this.callback());
|
|
100
115
|
return server.listen(...args);
|
|
101
116
|
}
|
|
@@ -125,17 +140,16 @@ export class Application extends Emitter {
|
|
|
125
140
|
|
|
126
141
|
/**
|
|
127
142
|
* Use the given middleware `fn`.
|
|
128
|
-
*
|
|
129
|
-
* Old-style middleware will be converted.
|
|
130
143
|
*/
|
|
131
144
|
use(fn: MiddlewareFunc) {
|
|
132
145
|
if (typeof fn !== 'function') throw new TypeError('middleware must be a function!');
|
|
146
|
+
const name = fn._name || fn.name || '-';
|
|
133
147
|
if (isGeneratorFunction(fn)) {
|
|
134
|
-
throw new TypeError(
|
|
148
|
+
throw new TypeError(`Support for generators was removed, middleware: ${name}. ` +
|
|
135
149
|
'See the documentation for examples of how to convert old middleware ' +
|
|
136
150
|
'https://github.com/koajs/koa/blob/master/docs/migration.md');
|
|
137
151
|
}
|
|
138
|
-
debug('use %
|
|
152
|
+
debug('use %o #%d', name, this.middleware.length);
|
|
139
153
|
this.middleware.push(fn);
|
|
140
154
|
return this;
|
|
141
155
|
}
|