@eggjs/tegg-controller-plugin 4.0.0-beta.7 → 4.0.0-beta.9
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/app/middleware/tegg_root_proto.d.ts +2 -5
- package/dist/app/middleware/tegg_root_proto.js +7 -11
- package/dist/app.d.ts +20 -24
- package/dist/app.js +70 -61
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/lib/AppLoadUnitControllerHook.d.ts +9 -13
- package/dist/lib/AppLoadUnitControllerHook.js +28 -28
- package/dist/lib/ControllerLoadUnit.d.ts +20 -24
- package/dist/lib/ControllerLoadUnit.js +72 -63
- package/dist/lib/ControllerLoadUnitHandler.d.ts +11 -15
- package/dist/lib/ControllerLoadUnitHandler.js +28 -28
- package/dist/lib/ControllerLoadUnitInstance.d.ts +16 -20
- package/dist/lib/ControllerLoadUnitInstance.js +36 -40
- package/dist/lib/ControllerMetadataManager.d.ts +7 -11
- package/dist/lib/ControllerMetadataManager.js +27 -23
- package/dist/lib/ControllerRegister.d.ts +4 -8
- package/dist/lib/ControllerRegister.js +3 -4
- package/dist/lib/ControllerRegisterFactory.d.ts +11 -15
- package/dist/lib/ControllerRegisterFactory.js +22 -24
- package/dist/lib/EggControllerLoader.d.ts +6 -10
- package/dist/lib/EggControllerLoader.js +31 -29
- package/dist/lib/EggControllerPrototypeHook.d.ts +4 -8
- package/dist/lib/EggControllerPrototypeHook.js +11 -13
- package/dist/lib/RootProtoManager.d.ts +7 -11
- package/dist/lib/RootProtoManager.js +34 -28
- package/dist/lib/errors.d.ts +3 -7
- package/dist/lib/errors.js +11 -15
- package/dist/lib/impl/http/Acl.d.ts +2 -6
- package/dist/lib/impl/http/Acl.js +32 -28
- package/dist/lib/impl/http/HTTPControllerRegister.d.ts +17 -21
- package/dist/lib/impl/http/HTTPControllerRegister.js +63 -59
- package/dist/lib/impl/http/HTTPMethodRegister.d.ts +18 -22
- package/dist/lib/impl/http/HTTPMethodRegister.js +162 -136
- package/dist/lib/impl/http/Req.d.ts +4 -8
- package/dist/lib/impl/http/Req.js +13 -16
- package/dist/types.d.ts +2 -1
- package/dist/types.js +2 -3
- package/package.json +12 -12
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
import {} from '@eggjs/tegg';
|
|
2
|
+
export function aclMiddlewareFactory(controllerMeta, methodMeta) {
|
|
3
|
+
if (!controllerMeta.hasMethodAcl(methodMeta)) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
const code = controllerMeta.getMethodAcl(methodMeta);
|
|
7
|
+
return async function aclMiddleware(ctx, next) {
|
|
8
|
+
try {
|
|
9
|
+
// @ts-expect-error ctx.acl is implemented in extend/context.ts on top level plugin, framework or app
|
|
10
|
+
await ctx.acl(code);
|
|
11
|
+
}
|
|
12
|
+
catch (e) {
|
|
13
|
+
const { redirectUrl, status } = e.data || {};
|
|
14
|
+
if (!redirectUrl) {
|
|
15
|
+
throw e;
|
|
16
|
+
}
|
|
17
|
+
if (ctx.acceptJSON) {
|
|
18
|
+
ctx.body = {
|
|
19
|
+
target: redirectUrl,
|
|
20
|
+
stat: 'deny',
|
|
21
|
+
};
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (status) {
|
|
25
|
+
ctx.realStatus = status;
|
|
26
|
+
}
|
|
27
|
+
ctx.redirect(redirectUrl);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
return next();
|
|
31
|
+
};
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { aclMiddlewareFactory };
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsL2h0dHAvQWNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEUsTUFBTSxhQUFhLENBQUM7QUFFdkcsTUFBTSxVQUFVLG9CQUFvQixDQUFDLGNBQWtDLEVBQUUsVUFBMEI7SUFDakcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsT0FBTyxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQWUsRUFBRSxJQUFVO1FBQzdELElBQUksQ0FBQztZQUNILHFHQUFxRztZQUNyRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixHQUFHLENBQUMsSUFBSSxHQUFHO29CQUNULE1BQU0sRUFBRSxXQUFXO29CQUNuQixJQUFJLEVBQUUsTUFBTTtpQkFDYixDQUFDO2dCQUNGLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxHQUFHLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztZQUMxQixDQUFDO1lBQ0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixPQUFPO1FBRVQsQ0FBQztRQUNELE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { EggPrototype } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
static clean(): void;
|
|
19
|
-
doRegister(rootProtoManager: RootProtoManager): void;
|
|
1
|
+
import { Application, Router } from 'egg';
|
|
2
|
+
import { type ControllerMetadata } from '@eggjs/tegg';
|
|
3
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
4
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
5
|
+
import { type ControllerRegister } from '../../ControllerRegister.ts';
|
|
6
|
+
import { RootProtoManager } from '../../RootProtoManager.ts';
|
|
7
|
+
export declare class HTTPControllerRegister implements ControllerRegister {
|
|
8
|
+
static instance?: HTTPControllerRegister;
|
|
9
|
+
private readonly router;
|
|
10
|
+
private readonly checkRouters;
|
|
11
|
+
private readonly eggContainerFactory;
|
|
12
|
+
private controllerProtos;
|
|
13
|
+
static create(proto: EggPrototype, controllerMeta: ControllerMetadata, app: Application): HTTPControllerRegister;
|
|
14
|
+
constructor(router: Router, eggContainerFactory: typeof EggContainerFactory);
|
|
15
|
+
register(): Promise<void>;
|
|
16
|
+
static clean(): void;
|
|
17
|
+
doRegister(rootProtoManager: RootProtoManager): void;
|
|
20
18
|
}
|
|
21
|
-
//#endregion
|
|
22
|
-
export { HTTPControllerRegister };
|
|
@@ -1,60 +1,64 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { Application, Router } from 'egg';
|
|
3
|
+
import { CONTROLLER_META_DATA, ControllerType, HTTPControllerMeta, HTTPMethodMeta, } from '@eggjs/tegg';
|
|
4
|
+
import {} from '@eggjs/tegg-metadata';
|
|
5
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
6
|
+
import {} from "../../ControllerRegister.js";
|
|
3
7
|
import { HTTPMethodRegister } from "./HTTPMethodRegister.js";
|
|
4
|
-
import "
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
8
|
+
import { RootProtoManager } from "../../RootProtoManager.js";
|
|
9
|
+
export class HTTPControllerRegister {
|
|
10
|
+
static instance;
|
|
11
|
+
router;
|
|
12
|
+
checkRouters;
|
|
13
|
+
eggContainerFactory;
|
|
14
|
+
controllerProtos = [];
|
|
15
|
+
static create(proto, controllerMeta, app) {
|
|
16
|
+
assert(controllerMeta.type === ControllerType.HTTP, 'controller meta type is not HTTP');
|
|
17
|
+
if (!HTTPControllerRegister.instance) {
|
|
18
|
+
HTTPControllerRegister.instance = new HTTPControllerRegister(app.router, app.eggContainerFactory);
|
|
19
|
+
}
|
|
20
|
+
HTTPControllerRegister.instance.controllerProtos.push(proto);
|
|
21
|
+
return HTTPControllerRegister.instance;
|
|
22
|
+
}
|
|
23
|
+
constructor(router, eggContainerFactory) {
|
|
24
|
+
this.router = router;
|
|
25
|
+
this.checkRouters = new Map();
|
|
26
|
+
this.checkRouters.set('default', router);
|
|
27
|
+
this.eggContainerFactory = eggContainerFactory;
|
|
28
|
+
}
|
|
29
|
+
register() {
|
|
30
|
+
// do noting
|
|
31
|
+
return Promise.resolve();
|
|
32
|
+
}
|
|
33
|
+
static clean() {
|
|
34
|
+
if (this.instance) {
|
|
35
|
+
this.instance.controllerProtos = [];
|
|
36
|
+
this.instance.checkRouters.clear();
|
|
37
|
+
}
|
|
38
|
+
this.instance = undefined;
|
|
39
|
+
}
|
|
40
|
+
doRegister(rootProtoManager) {
|
|
41
|
+
const methodMap = new Map();
|
|
42
|
+
for (const proto of this.controllerProtos) {
|
|
43
|
+
const metadata = proto.getMetaData(CONTROLLER_META_DATA);
|
|
44
|
+
for (const method of metadata.methods) {
|
|
45
|
+
methodMap.set(method, proto);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const allMethods = Array.from(methodMap.keys())
|
|
49
|
+
.sort((a, b) => b.priority - a.priority);
|
|
50
|
+
for (const method of allMethods) {
|
|
51
|
+
const controllerProto = methodMap.get(method);
|
|
52
|
+
const controllerMeta = controllerProto.getMetaData(CONTROLLER_META_DATA);
|
|
53
|
+
const methodRegister = new HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory);
|
|
54
|
+
methodRegister.checkDuplicate();
|
|
55
|
+
}
|
|
56
|
+
for (const method of allMethods) {
|
|
57
|
+
const controllerProto = methodMap.get(method);
|
|
58
|
+
const controllerMeta = controllerProto.getMetaData(CONTROLLER_META_DATA);
|
|
59
|
+
const methodRegister = new HTTPMethodRegister(controllerProto, controllerMeta, method, this.router, this.checkRouters, this.eggContainerFactory);
|
|
60
|
+
methodRegister.register(rootProtoManager);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJSZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaW1wbC9odHRwL0hUVFBDb250cm9sbGVyUmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDMUMsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsT0FBTyxFQUEyQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLFFBQVEsQ0FBMEI7SUFFeEIsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFzQjtJQUNsQyxtQkFBbUIsQ0FBNkI7SUFDekQsZ0JBQWdCLEdBQW1CLEVBQUUsQ0FBQztJQUU5QyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQW1CLEVBQUUsY0FBa0MsRUFBRSxHQUFnQjtRQUNyRixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxFQUFFLGtDQUFrQyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLHNCQUFzQixDQUFDLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLG1CQUFt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
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
private checkDuplicateInRouter;
|
|
20
|
-
register(rootProtoManager: RootProtoManager): void;
|
|
1
|
+
import { Router } from 'egg';
|
|
2
|
+
import { HTTPControllerMeta, HTTPMethodMeta } from '@eggjs/tegg';
|
|
3
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
4
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
5
|
+
import { RootProtoManager } from '../../RootProtoManager.ts';
|
|
6
|
+
export declare class HTTPMethodRegister {
|
|
7
|
+
private readonly router;
|
|
8
|
+
private readonly checkRouters;
|
|
9
|
+
private readonly controllerMeta;
|
|
10
|
+
private readonly methodMeta;
|
|
11
|
+
private readonly proto;
|
|
12
|
+
private readonly eggContainerFactory;
|
|
13
|
+
constructor(proto: EggPrototype, controllerMeta: HTTPControllerMeta, methodMeta: HTTPMethodMeta, router: Router, checkRouters: Map<string, Router>, eggContainerFactory: typeof EggContainerFactory);
|
|
14
|
+
private createHandler;
|
|
15
|
+
checkDuplicate(): void;
|
|
16
|
+
private registerToRouter;
|
|
17
|
+
private checkDuplicateInRouter;
|
|
18
|
+
register(rootProtoManager: RootProtoManager): void;
|
|
21
19
|
}
|
|
22
|
-
//#endregion
|
|
23
|
-
export { HTTPMethodRegister };
|
|
@@ -1,139 +1,165 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { Context, Router } from 'egg';
|
|
3
|
+
import { HTTPControllerMeta, HTTPMethodMeta, HTTPParamType, PathParamMeta, QueriesParamMeta, QueryParamMeta, HTTPCookies, } from '@eggjs/tegg';
|
|
4
|
+
import { EggContainerFactory } from '@eggjs/tegg-runtime';
|
|
5
|
+
import {} from '@eggjs/tegg-metadata';
|
|
6
|
+
import pathToRegexp from 'path-to-regexp';
|
|
7
|
+
import { EggRouter } from '@eggjs/router';
|
|
8
|
+
import { FrameworkErrorFormater } from 'egg-errors';
|
|
9
|
+
import { RootProtoManager } from "../../RootProtoManager.js";
|
|
2
10
|
import { aclMiddlewareFactory } from "./Acl.js";
|
|
3
|
-
import { HTTPRequest
|
|
11
|
+
import { HTTPRequest } from "./Req.js";
|
|
4
12
|
import { RouterConflictError } from "../../errors.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { EggContainerFactory } from "@eggjs/tegg-runtime";
|
|
8
|
-
import { Context, Router } from "egg";
|
|
9
|
-
import assert from "node:assert";
|
|
10
|
-
import pathToRegexp from "path-to-regexp";
|
|
11
|
-
import { EggRouter } from "@eggjs/router";
|
|
12
|
-
import { FrameworkErrorFormater } from "egg-errors";
|
|
13
|
-
|
|
14
|
-
//#region src/lib/impl/http/HTTPMethodRegister.ts
|
|
15
|
-
const noop = () => {};
|
|
16
|
-
var HTTPMethodRegister = class {
|
|
17
|
-
router;
|
|
18
|
-
checkRouters;
|
|
19
|
-
controllerMeta;
|
|
20
|
-
methodMeta;
|
|
21
|
-
proto;
|
|
22
|
-
eggContainerFactory;
|
|
23
|
-
constructor(proto, controllerMeta, methodMeta, router, checkRouters, eggContainerFactory) {
|
|
24
|
-
this.proto = proto;
|
|
25
|
-
this.controllerMeta = controllerMeta;
|
|
26
|
-
this.router = router;
|
|
27
|
-
this.methodMeta = methodMeta;
|
|
28
|
-
this.checkRouters = checkRouters;
|
|
29
|
-
this.eggContainerFactory = eggContainerFactory;
|
|
30
|
-
}
|
|
31
|
-
createHandler(methodMeta, host) {
|
|
32
|
-
const argsLength = methodMeta.paramMap.size;
|
|
33
|
-
const hasContext = methodMeta.contextParamIndex !== void 0;
|
|
34
|
-
const contextIndex = methodMeta.contextParamIndex;
|
|
35
|
-
const methodArgsLength = argsLength + (hasContext ? 1 : 0);
|
|
36
|
-
const self = this;
|
|
37
|
-
return async function(ctx, next) {
|
|
38
|
-
if (host && host !== ctx.host) return await next();
|
|
39
|
-
const realObj = (await self.eggContainerFactory.getOrCreateEggObject(self.proto, self.proto.name)).obj;
|
|
40
|
-
const realMethod = realObj[methodMeta.name];
|
|
41
|
-
const args = Array.from({ length: methodArgsLength });
|
|
42
|
-
if (hasContext) args[contextIndex] = ctx;
|
|
43
|
-
for (const [index, param] of methodMeta.paramMap) switch (param.type) {
|
|
44
|
-
case HTTPParamType.BODY:
|
|
45
|
-
args[index] = ctx.request.body;
|
|
46
|
-
break;
|
|
47
|
-
case HTTPParamType.PARAM: {
|
|
48
|
-
const pathParam = param;
|
|
49
|
-
args[index] = ctx.params[pathParam.name];
|
|
50
|
-
break;
|
|
51
|
-
}
|
|
52
|
-
case HTTPParamType.QUERY: {
|
|
53
|
-
const queryParam = param;
|
|
54
|
-
args[index] = ctx.query[queryParam.name];
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
case HTTPParamType.QUERIES: {
|
|
58
|
-
const queryParam = param;
|
|
59
|
-
args[index] = ctx.queries[queryParam.name];
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case HTTPParamType.HEADERS:
|
|
63
|
-
args[index] = ctx.request.headers;
|
|
64
|
-
break;
|
|
65
|
-
case HTTPParamType.REQUEST:
|
|
66
|
-
args[index] = new HTTPRequest$1(ctx);
|
|
67
|
-
break;
|
|
68
|
-
case HTTPParamType.COOKIES:
|
|
69
|
-
args[index] = new HTTPCookies(ctx, []);
|
|
70
|
-
break;
|
|
71
|
-
default: assert.fail("never arrive");
|
|
72
|
-
}
|
|
73
|
-
const body = await Reflect.apply(realMethod, realObj, args);
|
|
74
|
-
const explicitStatus = ctx.response._explicitStatus;
|
|
75
|
-
if (body !== null && body !== void 0 || !explicitStatus) ctx.body = body;
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
checkDuplicate() {
|
|
79
|
-
this.checkDuplicateInRouter(this.router);
|
|
80
|
-
let hostRouter;
|
|
81
|
-
(this.controllerMeta.getMethodHosts(this.methodMeta) || []).forEach((h) => {
|
|
82
|
-
if (h) {
|
|
83
|
-
hostRouter = this.checkRouters.get(h);
|
|
84
|
-
if (!hostRouter) {
|
|
85
|
-
hostRouter = new EggRouter({ sensitive: true }, this.router.app);
|
|
86
|
-
this.checkRouters.set(h, hostRouter);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (hostRouter) {
|
|
90
|
-
this.checkDuplicateInRouter(hostRouter);
|
|
91
|
-
this.registerToRouter(hostRouter);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
registerToRouter(router) {
|
|
96
|
-
const routerFunc = router[this.methodMeta.method.toLowerCase()];
|
|
97
|
-
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
98
|
-
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
99
|
-
Reflect.apply(routerFunc, router, [
|
|
100
|
-
methodName,
|
|
101
|
-
methodRealPath,
|
|
102
|
-
noop
|
|
103
|
-
]);
|
|
104
|
-
}
|
|
105
|
-
checkDuplicateInRouter(router) {
|
|
106
|
-
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
107
|
-
const matched = router.match(methodRealPath, this.methodMeta.method);
|
|
108
|
-
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
109
|
-
if (matched.route) {
|
|
110
|
-
const [layer] = matched.path;
|
|
111
|
-
const err = new RouterConflictError(`register http controller ${methodName} failed, ${this.methodMeta.method} ${methodRealPath} is conflict with exists rule ${layer.path}`);
|
|
112
|
-
throw FrameworkErrorFormater.format(err);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
register(rootProtoManager) {
|
|
116
|
-
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
117
|
-
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
118
|
-
const routerFunc = this.router[this.methodMeta.method.toLowerCase()];
|
|
119
|
-
const methodMiddlewares = this.controllerMeta.getMethodMiddlewares(this.methodMeta);
|
|
120
|
-
const aclMiddleware = aclMiddlewareFactory(this.controllerMeta, this.methodMeta);
|
|
121
|
-
if (aclMiddleware) methodMiddlewares.push(aclMiddleware);
|
|
122
|
-
(this.controllerMeta.getMethodHosts(this.methodMeta) || [void 0]).forEach((h) => {
|
|
123
|
-
const handler = this.createHandler(this.methodMeta, h);
|
|
124
|
-
Reflect.apply(routerFunc, this.router, [
|
|
125
|
-
methodName,
|
|
126
|
-
methodRealPath,
|
|
127
|
-
...methodMiddlewares,
|
|
128
|
-
handler
|
|
129
|
-
]);
|
|
130
|
-
const regExp = pathToRegexp(methodRealPath, { sensitive: true });
|
|
131
|
-
rootProtoManager.registerRootProto(this.methodMeta.method, (ctx) => {
|
|
132
|
-
if (regExp.test(ctx.path)) return this.proto;
|
|
133
|
-
}, h || "");
|
|
134
|
-
});
|
|
135
|
-
}
|
|
13
|
+
const noop = () => {
|
|
14
|
+
// ...
|
|
136
15
|
};
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
16
|
+
export class HTTPMethodRegister {
|
|
17
|
+
router;
|
|
18
|
+
checkRouters;
|
|
19
|
+
controllerMeta;
|
|
20
|
+
methodMeta;
|
|
21
|
+
proto;
|
|
22
|
+
eggContainerFactory;
|
|
23
|
+
constructor(proto, controllerMeta, methodMeta, router, checkRouters, eggContainerFactory) {
|
|
24
|
+
this.proto = proto;
|
|
25
|
+
this.controllerMeta = controllerMeta;
|
|
26
|
+
this.router = router;
|
|
27
|
+
this.methodMeta = methodMeta;
|
|
28
|
+
this.checkRouters = checkRouters;
|
|
29
|
+
this.eggContainerFactory = eggContainerFactory;
|
|
30
|
+
}
|
|
31
|
+
createHandler(methodMeta, host) {
|
|
32
|
+
const argsLength = methodMeta.paramMap.size;
|
|
33
|
+
const hasContext = methodMeta.contextParamIndex !== undefined;
|
|
34
|
+
const contextIndex = methodMeta.contextParamIndex;
|
|
35
|
+
const methodArgsLength = argsLength + (hasContext ? 1 : 0);
|
|
36
|
+
// eslint-disable-next-line
|
|
37
|
+
const self = this;
|
|
38
|
+
return async function (ctx, next) {
|
|
39
|
+
// if hosts is not empty and host is not matched, not execute
|
|
40
|
+
if (host && host !== ctx.host) {
|
|
41
|
+
return await next();
|
|
42
|
+
}
|
|
43
|
+
// HTTP decorator core implement
|
|
44
|
+
// use controller metadata map http request to function arguments
|
|
45
|
+
const eggObj = await self.eggContainerFactory.getOrCreateEggObject(self.proto, self.proto.name);
|
|
46
|
+
const realObj = eggObj.obj;
|
|
47
|
+
const realMethod = realObj[methodMeta.name];
|
|
48
|
+
const args = Array.from({ length: methodArgsLength });
|
|
49
|
+
if (hasContext) {
|
|
50
|
+
args[contextIndex] = ctx;
|
|
51
|
+
}
|
|
52
|
+
for (const [index, param] of methodMeta.paramMap) {
|
|
53
|
+
switch (param.type) {
|
|
54
|
+
case HTTPParamType.BODY: {
|
|
55
|
+
args[index] = ctx.request.body;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case HTTPParamType.PARAM: {
|
|
59
|
+
const pathParam = param;
|
|
60
|
+
args[index] = ctx.params[pathParam.name];
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case HTTPParamType.QUERY: {
|
|
64
|
+
const queryParam = param;
|
|
65
|
+
args[index] = ctx.query[queryParam.name];
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case HTTPParamType.QUERIES: {
|
|
69
|
+
const queryParam = param;
|
|
70
|
+
args[index] = ctx.queries[queryParam.name];
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case HTTPParamType.HEADERS: {
|
|
74
|
+
args[index] = ctx.request.headers;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
case HTTPParamType.REQUEST: {
|
|
78
|
+
args[index] = new HTTPRequest(ctx);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case HTTPParamType.COOKIES: {
|
|
82
|
+
args[index] = new HTTPCookies(ctx, []);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
default:
|
|
86
|
+
assert.fail('never arrive');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const body = await Reflect.apply(realMethod, realObj, args);
|
|
90
|
+
// https://github.com/koajs/koa/blob/master/lib/response.js#L88
|
|
91
|
+
// ctx.status is set
|
|
92
|
+
const explicitStatus = ctx.response._explicitStatus;
|
|
93
|
+
if (
|
|
94
|
+
// has body
|
|
95
|
+
(body !== null && body !== undefined) ||
|
|
96
|
+
// status is not set and has no body
|
|
97
|
+
// code should by 204
|
|
98
|
+
// https://github.com/koajs/koa/blob/master/lib/response.js#L140
|
|
99
|
+
!explicitStatus) {
|
|
100
|
+
ctx.body = body;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
checkDuplicate() {
|
|
105
|
+
// 1. check duplicate with egg controller
|
|
106
|
+
this.checkDuplicateInRouter(this.router);
|
|
107
|
+
// 2. check duplicate with host tegg controller
|
|
108
|
+
let hostRouter;
|
|
109
|
+
const hosts = this.controllerMeta.getMethodHosts(this.methodMeta) || [];
|
|
110
|
+
hosts.forEach(h => {
|
|
111
|
+
if (h) {
|
|
112
|
+
hostRouter = this.checkRouters.get(h);
|
|
113
|
+
if (!hostRouter) {
|
|
114
|
+
hostRouter = new EggRouter({ sensitive: true }, this.router.app);
|
|
115
|
+
this.checkRouters.set(h, hostRouter);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (hostRouter) {
|
|
119
|
+
this.checkDuplicateInRouter(hostRouter);
|
|
120
|
+
this.registerToRouter(hostRouter);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
registerToRouter(router) {
|
|
125
|
+
const routerFunc = router[this.methodMeta.method.toLowerCase()];
|
|
126
|
+
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
127
|
+
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
128
|
+
Reflect.apply(routerFunc, router, [methodName, methodRealPath, noop]);
|
|
129
|
+
}
|
|
130
|
+
checkDuplicateInRouter(router) {
|
|
131
|
+
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
132
|
+
const matched = router.match(methodRealPath, this.methodMeta.method);
|
|
133
|
+
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
134
|
+
if (matched.route) {
|
|
135
|
+
const [layer] = matched.path;
|
|
136
|
+
const err = new RouterConflictError(`register http controller ${methodName} failed, ${this.methodMeta.method} ${methodRealPath} is conflict with exists rule ${layer.path}`);
|
|
137
|
+
throw FrameworkErrorFormater.format(err);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
register(rootProtoManager) {
|
|
141
|
+
const methodRealPath = this.controllerMeta.getMethodRealPath(this.methodMeta);
|
|
142
|
+
const methodName = this.controllerMeta.getMethodName(this.methodMeta);
|
|
143
|
+
const routerFunc = this.router[this.methodMeta.method.toLowerCase()];
|
|
144
|
+
const methodMiddlewares = this.controllerMeta.getMethodMiddlewares(this.methodMeta);
|
|
145
|
+
const aclMiddleware = aclMiddlewareFactory(this.controllerMeta, this.methodMeta);
|
|
146
|
+
if (aclMiddleware) {
|
|
147
|
+
methodMiddlewares.push(aclMiddleware);
|
|
148
|
+
}
|
|
149
|
+
const hosts = this.controllerMeta.getMethodHosts(this.methodMeta) || [undefined];
|
|
150
|
+
hosts.forEach(h => {
|
|
151
|
+
const handler = this.createHandler(this.methodMeta, h);
|
|
152
|
+
Reflect.apply(routerFunc, this.router, [methodName, methodRealPath, ...methodMiddlewares, handler]);
|
|
153
|
+
// https://github.com/eggjs/egg-core/blob/0af6178022e7734c4a8b17bb56d592b315207883/lib/egg.js#L279
|
|
154
|
+
const regExp = pathToRegexp(methodRealPath, {
|
|
155
|
+
sensitive: true,
|
|
156
|
+
});
|
|
157
|
+
rootProtoManager.registerRootProto(this.methodMeta.method, (ctx) => {
|
|
158
|
+
if (regExp.test(ctx.path)) {
|
|
159
|
+
return this.proto;
|
|
160
|
+
}
|
|
161
|
+
}, h || '');
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZFJlZ2lzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsL2h0dHAvSFRUUE1ldGhvZFJlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUN0QyxPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxhQUFhLEVBRWIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsV0FBVyxHQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFELE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7SUFDaEIsTUFBTTtBQUNSLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxrQkFBa0I7SUFDWixNQUFNLENBQVM7SUFDZixZQUFZLENBQXNCO0lBQ2xDLGNBQWMsQ0FBcUI7SUFDbkMsVUFBVSxDQUFpQjtJQUMzQixLQUFLLENBQWU7SUFDcEIsbUJBQW1CLENBQTZCO0lBRWpFLFlBQ0UsS0FB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
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare class HTTPRequest extends HTTPRequest$1 {
|
|
6
|
-
constructor(ctx: Context);
|
|
1
|
+
import type { Context } from 'egg';
|
|
2
|
+
import { HTTPRequest as BaseHTTPRequest } from '@eggjs/tegg';
|
|
3
|
+
export declare class HTTPRequest extends BaseHTTPRequest {
|
|
4
|
+
constructor(ctx: Context);
|
|
7
5
|
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { HTTPRequest };
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import { HTTPRequest as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//#endregion
|
|
16
|
-
export { HTTPRequest };
|
|
1
|
+
import { HTTPRequest as BaseHTTPRequest } from '@eggjs/tegg';
|
|
2
|
+
export class HTTPRequest extends BaseHTTPRequest {
|
|
3
|
+
constructor(ctx) {
|
|
4
|
+
const request = ctx.request;
|
|
5
|
+
// href: https://github.com/eggjs/koa/blob/master/src/request.ts#L90C1-L98C4
|
|
6
|
+
super(request.href, {
|
|
7
|
+
method: request.method,
|
|
8
|
+
headers: request.headers,
|
|
9
|
+
body: ctx.request.rawBody,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbXBsL2h0dHAvUmVxLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLElBQUksZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdELE1BQU0sT0FBTyxXQUFZLFNBQVEsZUFBZTtJQUM5QyxZQUFZLEdBQVk7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM1Qiw0RUFBNEU7UUFDNUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBaUM7WUFDbEQsSUFBSSxFQUFHLEdBQUcsQ0FBQyxPQUFlLENBQUMsT0FBTztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import '@eggjs/tegg-plugin/types';
|
|
2
|
+
import './app.ts';
|