@midwayjs/koa 4.0.0-beta.1 → 4.0.0-beta.2
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/framework.js +21 -9
- package/dist/interface.d.ts +13 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +18 -1
- package/package.json +9 -8
package/dist/framework.js
CHANGED
|
@@ -14,6 +14,7 @@ const koa = require("koa");
|
|
|
14
14
|
const onerror_1 = require("./onerror");
|
|
15
15
|
const qs = require("qs");
|
|
16
16
|
const querystring = require("querystring");
|
|
17
|
+
const utils_1 = require("./utils");
|
|
17
18
|
const COOKIES = Symbol('context#cookies');
|
|
18
19
|
class KoaControllerGenerator extends core_1.WebControllerGenerator {
|
|
19
20
|
constructor(app, webRouterService) {
|
|
@@ -216,27 +217,38 @@ let MidwayKoaFramework = class MidwayKoaFramework extends core_1.BaseFramework {
|
|
|
216
217
|
if (core_1.Types.isNumber(this.configurationOptions.serverTimeout)) {
|
|
217
218
|
this.server.setTimeout(this.configurationOptions.serverTimeout);
|
|
218
219
|
}
|
|
220
|
+
this.configurationOptions.listenOptions = {
|
|
221
|
+
port: this.configurationOptions.port,
|
|
222
|
+
host: this.configurationOptions.hostname,
|
|
223
|
+
...this.configurationOptions.listenOptions,
|
|
224
|
+
};
|
|
219
225
|
// set port and listen server
|
|
220
|
-
|
|
221
|
-
|
|
226
|
+
let customPort = process.env.MIDWAY_HTTP_PORT ||
|
|
227
|
+
this.configurationOptions.listenOptions.port;
|
|
228
|
+
if (customPort === 0 || customPort === '0') {
|
|
229
|
+
customPort = await (0, utils_1.getFreePort)();
|
|
230
|
+
this.logger.info(`[midway:koa] server has auto-assigned port ${customPort}`);
|
|
231
|
+
}
|
|
232
|
+
this.configurationOptions.listenOptions.port = Number(customPort);
|
|
233
|
+
if (this.configurationOptions.listenOptions.port) {
|
|
222
234
|
new Promise(resolve => {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
args.push(this.configurationOptions.hostname);
|
|
226
|
-
}
|
|
227
|
-
args.push(() => {
|
|
235
|
+
// 使用 ListenOptions 对象启动服务器
|
|
236
|
+
this.server.listen(this.configurationOptions.listenOptions, () => {
|
|
228
237
|
resolve();
|
|
229
238
|
});
|
|
230
|
-
|
|
231
|
-
process.env.MIDWAY_HTTP_PORT = String(
|
|
239
|
+
// 设置环境变量
|
|
240
|
+
process.env.MIDWAY_HTTP_PORT = String(this.configurationOptions.listenOptions.port);
|
|
232
241
|
});
|
|
242
|
+
this.logger.debug(`[midway:koa] server is listening on port ${customPort}`);
|
|
233
243
|
}
|
|
234
244
|
}
|
|
235
245
|
async beforeStop() {
|
|
236
246
|
if (this.server) {
|
|
237
247
|
new Promise(resolve => {
|
|
238
248
|
this.server.close(resolve);
|
|
249
|
+
process.env.MIDWAY_HTTP_PORT = '';
|
|
239
250
|
});
|
|
251
|
+
this.logger.debug('[midway:koa] server is stopped!');
|
|
240
252
|
}
|
|
241
253
|
}
|
|
242
254
|
getFrameworkName() {
|
package/dist/interface.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
+
/// <reference types="node" />
|
|
3
4
|
import { IConfigurationOptions, IMidwayApplication, IMidwayContext } from '@midwayjs/core';
|
|
4
5
|
import * as koa from 'koa';
|
|
5
6
|
import { Context as KoaContext, DefaultState, Middleware, Next } from 'koa';
|
|
6
7
|
import { RouterParamValue } from '@midwayjs/core';
|
|
7
8
|
import * as qs from 'qs';
|
|
9
|
+
import { ListenOptions } from 'net';
|
|
8
10
|
export interface State extends DefaultState {
|
|
9
11
|
}
|
|
10
12
|
export type IMidwayKoaContext = IMidwayContext<KoaContext>;
|
|
@@ -15,6 +17,10 @@ export type IMidwayKoaApplication = IMidwayApplication<IMidwayKoaContext, koa<St
|
|
|
15
17
|
* @param middlewareId
|
|
16
18
|
*/
|
|
17
19
|
generateMiddleware(middlewareId: any): Promise<Middleware<State, IMidwayKoaContext>>;
|
|
20
|
+
/**
|
|
21
|
+
* Get the port that the application is listening on
|
|
22
|
+
*/
|
|
23
|
+
getPort(): string;
|
|
18
24
|
}>;
|
|
19
25
|
/**
|
|
20
26
|
* @deprecated use NextFunction definition
|
|
@@ -86,7 +92,14 @@ export interface IMidwayKoaConfigurationOptions extends IConfigurationOptions {
|
|
|
86
92
|
* qs options
|
|
87
93
|
*/
|
|
88
94
|
queryParseOptions?: qs.IParseOptions;
|
|
95
|
+
/**
|
|
96
|
+
* https/https/http2 server options
|
|
97
|
+
*/
|
|
89
98
|
serverOptions?: Record<string, any>;
|
|
99
|
+
/**
|
|
100
|
+
* listen options
|
|
101
|
+
*/
|
|
102
|
+
listenOptions?: ListenOptions;
|
|
90
103
|
}
|
|
91
104
|
export type MiddlewareParamArray = Array<Middleware<DefaultState, IMidwayKoaContext>>;
|
|
92
105
|
export interface IWebMiddleware {
|
package/dist/utils.d.ts
CHANGED
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.escapeHtml = exports.tpl = exports.isProduction = exports.sendToWormhole = exports.accepts = exports.detectStatus = void 0;
|
|
3
|
+
exports.getFreePort = exports.escapeHtml = exports.tpl = exports.isProduction = exports.sendToWormhole = exports.accepts = exports.detectStatus = void 0;
|
|
4
|
+
const net_1 = require("net");
|
|
4
5
|
function detectStatus(err) {
|
|
5
6
|
// detect status
|
|
6
7
|
let status = err.status || 500;
|
|
@@ -153,4 +154,20 @@ function escapeHtml(string) {
|
|
|
153
154
|
return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
|
|
154
155
|
}
|
|
155
156
|
exports.escapeHtml = escapeHtml;
|
|
157
|
+
async function getFreePort() {
|
|
158
|
+
return new Promise((resolve, reject) => {
|
|
159
|
+
const server = (0, net_1.createServer)();
|
|
160
|
+
server.listen(0, () => {
|
|
161
|
+
try {
|
|
162
|
+
const port = server.address().port;
|
|
163
|
+
server.close();
|
|
164
|
+
resolve(port);
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
reject(err);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
exports.getFreePort = getFreePort;
|
|
156
173
|
//# sourceMappingURL=utils.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midwayjs/koa",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"description": "Midway Web Framework for KOA",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
@@ -24,18 +24,19 @@
|
|
|
24
24
|
],
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@midwayjs/core": "^4.0.0-beta.
|
|
28
|
-
"@midwayjs/mock": "^4.0.0-beta.
|
|
27
|
+
"@midwayjs/core": "^4.0.0-beta.2",
|
|
28
|
+
"@midwayjs/mock": "^4.0.0-beta.2",
|
|
29
29
|
"@types/koa-router": "7.4.8",
|
|
30
|
+
"axios": "1.12.0",
|
|
30
31
|
"fs-extra": "11.3.0"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
34
|
"@koa/router": "^12.0.0",
|
|
34
35
|
"@midwayjs/cookies": "^1.3.0",
|
|
35
|
-
"@midwayjs/session": "^4.0.0-beta.
|
|
36
|
-
"@types/koa": "
|
|
36
|
+
"@midwayjs/session": "^4.0.0-beta.2",
|
|
37
|
+
"@types/koa": "3.0.0",
|
|
37
38
|
"@types/qs": "6.9.18",
|
|
38
|
-
"koa": "
|
|
39
|
+
"koa": "3.0.1",
|
|
39
40
|
"koa-bodyparser": "4.4.1",
|
|
40
41
|
"qs": "6.14.0"
|
|
41
42
|
},
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"url": "https://github.com/midwayjs/midway.git"
|
|
46
47
|
},
|
|
47
48
|
"engines": {
|
|
48
|
-
"node": ">=
|
|
49
|
+
"node": ">=20"
|
|
49
50
|
},
|
|
50
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "53bfef4c5279da5f09025e4610bdbf64f94f60bd"
|
|
51
52
|
}
|