@jayfong/x-server 2.52.1 → 2.53.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.
- package/lib/_cjs/core/define_handler.js +7 -0
- package/lib/_cjs/core/handler.js +4 -1
- package/lib/_cjs/core/http_method.js +2 -1
- package/lib/_cjs/core/server.js +3 -3
- package/lib/core/define_handler.d.ts +1 -0
- package/lib/core/define_handler.js +7 -0
- package/lib/core/handler.js +4 -1
- package/lib/core/http_method.js +2 -1
- package/lib/core/server.js +3 -3
- package/lib/core/types.d.ts +5 -1
- package/package.json +1 -1
package/lib/_cjs/core/handler.js
CHANGED
|
@@ -31,6 +31,10 @@ class Handler {
|
|
|
31
31
|
return this.handleHttp(data, ctx);
|
|
32
32
|
};
|
|
33
33
|
this.handleHttp = async (data, ctx) => {
|
|
34
|
+
// 请求数据解析
|
|
35
|
+
if (this.options.parseRequestData) {
|
|
36
|
+
data = await this.options.parseRequestData(data, ctx);
|
|
37
|
+
}
|
|
34
38
|
// 请求数据验证
|
|
35
39
|
// vae
|
|
36
40
|
if (this.requestDataSchemaVae) {
|
|
@@ -45,7 +49,6 @@ class Handler {
|
|
|
45
49
|
data = res.data;
|
|
46
50
|
} else {
|
|
47
51
|
throw new _http_error.HttpError.BadRequest(
|
|
48
|
-
// TODO: 暂时兼容编译bug
|
|
49
52
|
// @ts-ignore
|
|
50
53
|
res.issues[0].message);
|
|
51
54
|
}
|
package/lib/_cjs/core/server.js
CHANGED
|
@@ -104,7 +104,7 @@ class Server {
|
|
|
104
104
|
return res;
|
|
105
105
|
}, {});
|
|
106
106
|
}
|
|
107
|
-
const data = await item.handler.handle({
|
|
107
|
+
const data = await item.handler.handle(handlerMethod === 'ANY' ? {} : {
|
|
108
108
|
// @ts-ignore
|
|
109
109
|
...req.params,
|
|
110
110
|
// @ts-ignore
|
|
@@ -113,7 +113,7 @@ class Server {
|
|
|
113
113
|
...req.body,
|
|
114
114
|
...files
|
|
115
115
|
}, {
|
|
116
|
-
url
|
|
116
|
+
url,
|
|
117
117
|
headers: req.headers,
|
|
118
118
|
setHeader: (k, v) => res.header(k, v),
|
|
119
119
|
redirect: (url, permanently) => res.redirect(permanently ? 301 : 302, url),
|
|
@@ -129,7 +129,7 @@ class Server {
|
|
|
129
129
|
const isWS = handlerMethod === 'WS';
|
|
130
130
|
const serverMethod = isWS ? 'GET' : _http_method.HandlerMethodToHttpMethod[handlerMethod];
|
|
131
131
|
fastify.route({
|
|
132
|
-
method: serverMethod,
|
|
132
|
+
method: handlerMethod === 'ANY' ? ['GET', 'HEAD', 'TRACE', 'DELETE', 'OPTIONS', 'PATCH', 'PUT', 'POST'] : serverMethod,
|
|
133
133
|
url: item.path,
|
|
134
134
|
constraints: handlerOptions.requestHost ? {
|
|
135
135
|
host: handlerOptions.requestHost
|
|
@@ -13,4 +13,5 @@ export declare namespace defineHandler {
|
|
|
13
13
|
response: TReqData[K][1];
|
|
14
14
|
}; }, void, "WS">;
|
|
15
15
|
var XML: <TReqData extends unknown = void, TResData extends unknown = void>(options: XHandler.Options<TReqData, TResData, "XML">) => Handler<TReqData, TResData, "XML">;
|
|
16
|
+
var ANY: <TReqData extends unknown = void, TResData extends unknown = void>(options: XHandler.Options<TReqData, TResData, "ANY">) => Handler<TReqData, TResData, "ANY">;
|
|
16
17
|
}
|
package/lib/core/handler.js
CHANGED
|
@@ -25,6 +25,10 @@ export class Handler {
|
|
|
25
25
|
return this.handleHttp(data, ctx);
|
|
26
26
|
};
|
|
27
27
|
this.handleHttp = async (data, ctx) => {
|
|
28
|
+
// 请求数据解析
|
|
29
|
+
if (this.options.parseRequestData) {
|
|
30
|
+
data = await this.options.parseRequestData(data, ctx);
|
|
31
|
+
}
|
|
28
32
|
// 请求数据验证
|
|
29
33
|
// vae
|
|
30
34
|
if (this.requestDataSchemaVae) {
|
|
@@ -39,7 +43,6 @@ export class Handler {
|
|
|
39
43
|
data = res.data;
|
|
40
44
|
} else {
|
|
41
45
|
throw new HttpError.BadRequest(
|
|
42
|
-
// TODO: 暂时兼容编译bug
|
|
43
46
|
// @ts-ignore
|
|
44
47
|
res.issues[0].message);
|
|
45
48
|
}
|
package/lib/core/http_method.js
CHANGED
package/lib/core/server.js
CHANGED
|
@@ -98,7 +98,7 @@ export class Server {
|
|
|
98
98
|
return res;
|
|
99
99
|
}, {});
|
|
100
100
|
}
|
|
101
|
-
const data = await item.handler.handle({
|
|
101
|
+
const data = await item.handler.handle(handlerMethod === 'ANY' ? {} : {
|
|
102
102
|
// @ts-ignore
|
|
103
103
|
...req.params,
|
|
104
104
|
// @ts-ignore
|
|
@@ -107,7 +107,7 @@ export class Server {
|
|
|
107
107
|
...req.body,
|
|
108
108
|
...files
|
|
109
109
|
}, {
|
|
110
|
-
url
|
|
110
|
+
url,
|
|
111
111
|
headers: req.headers,
|
|
112
112
|
setHeader: (k, v) => res.header(k, v),
|
|
113
113
|
redirect: (url, permanently) => res.redirect(permanently ? 301 : 302, url),
|
|
@@ -123,7 +123,7 @@ export class Server {
|
|
|
123
123
|
const isWS = handlerMethod === 'WS';
|
|
124
124
|
const serverMethod = isWS ? 'GET' : HandlerMethodToHttpMethod[handlerMethod];
|
|
125
125
|
fastify.route({
|
|
126
|
-
method: serverMethod,
|
|
126
|
+
method: handlerMethod === 'ANY' ? ['GET', 'HEAD', 'TRACE', 'DELETE', 'OPTIONS', 'PATCH', 'PUT', 'POST'] : serverMethod,
|
|
127
127
|
url: item.path,
|
|
128
128
|
constraints: handlerOptions.requestHost ? {
|
|
129
129
|
host: handlerOptions.requestHost
|
package/lib/core/types.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ export declare namespace XServer {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
export declare namespace XHandler {
|
|
62
|
-
type Method = 'GET' | 'POST' | 'FILE' | 'WS' | 'XML';
|
|
62
|
+
type Method = 'GET' | 'POST' | 'FILE' | 'WS' | 'XML' | 'ANY';
|
|
63
63
|
interface ExtraContext {
|
|
64
64
|
}
|
|
65
65
|
interface Context extends ExtraContext {
|
|
@@ -125,6 +125,10 @@ export declare namespace XHandler {
|
|
|
125
125
|
* 请求路径
|
|
126
126
|
*/
|
|
127
127
|
requestPath?: OneOrMore<string>;
|
|
128
|
+
/**
|
|
129
|
+
* 解析请求数据
|
|
130
|
+
*/
|
|
131
|
+
parseRequestData?: (data: any, ctx: Context) => any;
|
|
128
132
|
/**
|
|
129
133
|
* 是否打包返回数据
|
|
130
134
|
*
|