xshell 1.0.108 → 1.0.110
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/package.json +4 -4
- package/server.d.ts +3 -0
- package/server.js +6 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xshell",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.110",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"bin": {
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
"@babel/traverse": "^7.24.6",
|
|
59
59
|
"@koa/cors": "^5.0.0",
|
|
60
60
|
"@types/ws": "^8.5.10",
|
|
61
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
62
|
-
"@typescript-eslint/parser": "^7.
|
|
63
|
-
"@typescript-eslint/utils": "^7.
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^7.11.0",
|
|
62
|
+
"@typescript-eslint/parser": "^7.11.0",
|
|
63
|
+
"@typescript-eslint/utils": "^7.11.0",
|
|
64
64
|
"@xterm/addon-fit": "^0.10.0",
|
|
65
65
|
"@xterm/addon-web-links": "^0.11.0",
|
|
66
66
|
"@xterm/addon-webgl": "^0.18.0",
|
package/server.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare class Server {
|
|
|
34
34
|
UAParser: typeof UAParser;
|
|
35
35
|
js_exts: Set<string>;
|
|
36
36
|
empty_body_statuses: Set<number>;
|
|
37
|
+
empty_body_methods: Set<string>;
|
|
37
38
|
app: Koa;
|
|
38
39
|
handler: ReturnType<Koa['callback']>;
|
|
39
40
|
/** 启用 http server */
|
|
@@ -81,6 +82,8 @@ export declare class Server {
|
|
|
81
82
|
on_upgrade(request: IncomingMessage, socket: Duplex, head: Buffer): void;
|
|
82
83
|
/** 可被子类重写添加额外的中间件,在 start 时被调用 */
|
|
83
84
|
init_app(app: Koa): Promise<void>;
|
|
85
|
+
/** 可被子类重写,有了 http_server 和 http2_server 后在 listen 之前做一些自定义处理逻辑 */
|
|
86
|
+
init_server(): Promise<void>;
|
|
84
87
|
entry(ctx: Context, next: Next): Promise<void>;
|
|
85
88
|
/** 解析 req.body to request.body
|
|
86
89
|
处理 request.ip */
|
package/server.js
CHANGED
|
@@ -25,6 +25,7 @@ export class Server {
|
|
|
25
25
|
UAParser;
|
|
26
26
|
js_exts = new Set(['.js', '.mjs', '.cjs']);
|
|
27
27
|
empty_body_statuses = new Set([304, 204, 205]);
|
|
28
|
+
empty_body_methods = new Set(['HEAD', 'OPTIONS']);
|
|
28
29
|
app;
|
|
29
30
|
handler;
|
|
30
31
|
/** 启用 http server */
|
|
@@ -210,6 +211,7 @@ export class Server {
|
|
|
210
211
|
};
|
|
211
212
|
}
|
|
212
213
|
}
|
|
214
|
+
await this.init_server();
|
|
213
215
|
await Promise.all([
|
|
214
216
|
http && new Promise(resolve => {
|
|
215
217
|
this.http_server.listen(this.http_port, resolve);
|
|
@@ -274,6 +276,9 @@ export class Server {
|
|
|
274
276
|
/** 可被子类重写添加额外的中间件,在 start 时被调用 */
|
|
275
277
|
async init_app(app) {
|
|
276
278
|
}
|
|
279
|
+
/** 可被子类重写,有了 http_server 和 http2_server 后在 listen 之前做一些自定义处理逻辑 */
|
|
280
|
+
async init_server() {
|
|
281
|
+
}
|
|
277
282
|
async entry(ctx, next) {
|
|
278
283
|
let { response } = ctx;
|
|
279
284
|
await this.parse(ctx);
|
|
@@ -480,7 +485,7 @@ export class Server {
|
|
|
480
485
|
// 关联了 response_.body 到 res 的 finish 事件,(koa/response.js#set body() 中 onFinish(res, destroy.bind(null, response_.body))
|
|
481
486
|
// 会让 response_.body 这个 UndiciBodyReadable 被提前 finish,而此时
|
|
482
487
|
// 流还没 emit end, 会触发错误 RequestAbortedError [AbortError]: Request aborted
|
|
483
|
-
if (this.empty_body_statuses.has(response_.status))
|
|
488
|
+
if (this.empty_body_statuses.has(response_.status) || this.empty_body_methods.has(method))
|
|
484
489
|
consume_stream(response_.body, true);
|
|
485
490
|
else
|
|
486
491
|
response.body = response_.body;
|