@fy-tools/rpc-server-expressjs 0.0.119-alpha.10388 → 0.0.119-alpha.10389
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/lib/route.d.ts +1 -1
- package/dist/lib/route.d.ts.map +1 -1
- package/dist/lib/route.js +43 -32
- package/package.json +2 -2
package/dist/lib/route.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { RouteToContext } from './types';
|
|
|
4
4
|
export declare class Route<App extends Router = Router, Schema extends AnyRoute = AnyRoute> {
|
|
5
5
|
_app: App;
|
|
6
6
|
_schema: Schema;
|
|
7
|
-
private
|
|
7
|
+
private readonly _handlerRef;
|
|
8
8
|
constructor(_app: App, _schema: Schema);
|
|
9
9
|
build<T extends Router>(fn: (app: App) => T): Route<T, Schema>;
|
|
10
10
|
handler(fn: (ctx: RouteToContext<Schema>) => Promise<Response<Schema>>): void;
|
package/dist/lib/route.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/lib/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAIV,MAAM,EACP,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,KAAK,CAChB,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,MAAM,SAAS,QAAQ,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/lib/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAIV,MAAM,EACP,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,qBAAa,KAAK,CAChB,GAAG,SAAS,MAAM,GAAG,MAAM,EAC3B,MAAM,SAAS,QAAQ,GAAG,QAAQ;IAMf,IAAI,EAAE,GAAG;IAAS,OAAO,EAAE,MAAM;IAJpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAE1B;gBAEiB,IAAI,EAAE,GAAG,EAAS,OAAO,EAAE,MAAM;IAgEpD,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAI3C,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAGvE"}
|
package/dist/lib/route.js
CHANGED
|
@@ -5,52 +5,63 @@ const rpc_server_1 = require("@fy-tools/rpc-server");
|
|
|
5
5
|
class Route {
|
|
6
6
|
_app;
|
|
7
7
|
_schema;
|
|
8
|
-
|
|
9
|
-
throw new Error('Route handler not implemented');
|
|
10
|
-
};
|
|
8
|
+
_handlerRef;
|
|
11
9
|
constructor(_app, _schema) {
|
|
12
10
|
this._app = _app;
|
|
13
11
|
this._schema = _schema;
|
|
12
|
+
this._handlerRef = {
|
|
13
|
+
fn: () => {
|
|
14
|
+
throw new Error('Route handler not implemented');
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
// Capture ref object — closure reads handlerRef.fn, not this._handlerFn,
|
|
18
|
+
// so reassignment in handler() is always visible even if this-binding diverges.
|
|
19
|
+
const handlerRef = this._handlerRef;
|
|
14
20
|
const path = this._schema._path ? `/${this._schema._path}` : '/';
|
|
15
21
|
const method = this._schema._method;
|
|
16
22
|
this._app = this._app[method](path, async (req, res, next) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
try {
|
|
24
|
+
let body = req.body;
|
|
25
|
+
let params = req.params;
|
|
26
|
+
let query = req.query;
|
|
27
|
+
if (this._schema._body) {
|
|
28
|
+
const result = await this._schema._body['~standard'].validate(req.body);
|
|
29
|
+
if (result.issues)
|
|
30
|
+
return next(new rpc_server_1.ValidationError(result.issues));
|
|
31
|
+
body = result.value;
|
|
32
|
+
}
|
|
33
|
+
if (this._schema._params) {
|
|
34
|
+
const result = await this._schema._params['~standard'].validate(req.params);
|
|
35
|
+
if (result.issues)
|
|
36
|
+
return next(new rpc_server_1.ValidationError(result.issues));
|
|
37
|
+
params = result.value;
|
|
38
|
+
}
|
|
39
|
+
if (this._schema._query) {
|
|
40
|
+
const result = await this._schema._query['~standard'].validate(req.query);
|
|
41
|
+
if (result.issues)
|
|
42
|
+
return next(new rpc_server_1.ValidationError(result.issues));
|
|
43
|
+
query = result.value;
|
|
44
|
+
}
|
|
45
|
+
const response = await handlerRef.fn({
|
|
46
|
+
body,
|
|
47
|
+
params,
|
|
48
|
+
query,
|
|
49
|
+
req,
|
|
50
|
+
res,
|
|
51
|
+
});
|
|
52
|
+
if (!res.headersSent)
|
|
53
|
+
res.json(response);
|
|
25
54
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (result.issues)
|
|
29
|
-
throw new rpc_server_1.ValidationError(result.issues);
|
|
30
|
-
params = result.value;
|
|
55
|
+
catch (err) {
|
|
56
|
+
next(err);
|
|
31
57
|
}
|
|
32
|
-
if (this._schema._query) {
|
|
33
|
-
const result = await this._schema._query['~standard'].validate(req.query);
|
|
34
|
-
if (result.issues)
|
|
35
|
-
throw new rpc_server_1.ValidationError(result.issues);
|
|
36
|
-
query = result.value;
|
|
37
|
-
}
|
|
38
|
-
const response = await this._handlerFn({
|
|
39
|
-
body,
|
|
40
|
-
params,
|
|
41
|
-
query,
|
|
42
|
-
req,
|
|
43
|
-
res,
|
|
44
|
-
});
|
|
45
|
-
if (!res.headersSent)
|
|
46
|
-
res.json(response);
|
|
47
58
|
});
|
|
48
59
|
}
|
|
49
60
|
build(fn) {
|
|
50
61
|
return new Route(fn(this._app), this._schema);
|
|
51
62
|
}
|
|
52
63
|
handler(fn) {
|
|
53
|
-
this.
|
|
64
|
+
this._handlerRef.fn = fn;
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
exports.Route = Route;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fy-tools/rpc-server-expressjs",
|
|
3
|
-
"version": "0.0.119-alpha.
|
|
3
|
+
"version": "0.0.119-alpha.10389",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/festusyuma/fy-tools.git",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"!**/*.tsbuildinfo"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@fy-tools/rpc-server": "0.0.119-alpha.
|
|
25
|
+
"@fy-tools/rpc-server": "0.0.119-alpha.10389",
|
|
26
26
|
"express": "^4.21.2",
|
|
27
27
|
"tslib": "^2.3.0"
|
|
28
28
|
},
|