@eggjs/controller-decorator 4.0.0-beta.35 → 4.0.0-beta.36
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/builder/ControllerMetaBuilderFactory.d.ts +10 -6
- package/dist/builder/ControllerMetaBuilderFactory.js +37 -41
- package/dist/builder/index.d.ts +1 -1
- package/dist/builder/index.js +3 -2
- package/dist/decorator/Acl.d.ts +4 -1
- package/dist/decorator/Acl.js +23 -21
- package/dist/decorator/Context.d.ts +4 -1
- package/dist/decorator/Context.js +15 -10
- package/dist/decorator/Middleware.d.ts +6 -2
- package/dist/decorator/Middleware.js +49 -61
- package/dist/decorator/http/HTTPController.d.ts +6 -2
- package/dist/decorator/http/HTTPController.js +22 -28
- package/dist/decorator/http/HTTPMethod.d.ts +6 -2
- package/dist/decorator/http/HTTPMethod.js +20 -16
- package/dist/decorator/http/HTTPParam.d.ts +152 -166
- package/dist/decorator/http/HTTPParam.js +208 -226
- package/dist/decorator/http/Host.d.ts +6 -2
- package/dist/decorator/http/Host.js +26 -24
- package/dist/decorator/http/index.d.ts +5 -4
- package/dist/decorator/http/index.js +7 -5
- package/dist/decorator/index.d.ts +8 -4
- package/dist/decorator/index.js +10 -5
- package/dist/impl/http/HTTPControllerMetaBuilder.d.ts +13 -8
- package/dist/impl/http/HTTPControllerMetaBuilder.js +58 -55
- package/dist/impl/http/HTTPControllerMethodMetaBuilder.d.ts +15 -10
- package/dist/impl/http/HTTPControllerMethodMetaBuilder.js +80 -96
- package/dist/impl/http/index.d.ts +2 -2
- package/dist/impl/http/index.js +4 -3
- package/dist/impl/index.d.ts +3 -1
- package/dist/impl/index.js +5 -2
- package/dist/index.d.ts +27 -6
- package/dist/index.js +29 -7
- package/dist/model/HTTPControllerMeta.d.ts +24 -21
- package/dist/model/HTTPControllerMeta.js +53 -57
- package/dist/model/HTTPCookies.d.ts +2 -1
- package/dist/model/HTTPCookies.js +3 -2
- package/dist/model/HTTPMethodMeta.d.ts +59 -56
- package/dist/model/HTTPMethodMeta.js +102 -124
- package/dist/model/index.d.ts +3 -3
- package/dist/model/index.js +5 -4
- package/dist/util/ControllerInfoUtil.d.ts +19 -16
- package/dist/util/ControllerInfoUtil.js +48 -46
- package/dist/util/ControllerMetadataUtil.d.ts +8 -4
- package/dist/util/ControllerMetadataUtil.js +21 -20
- package/dist/util/HTTPInfoUtil.d.ts +19 -15
- package/dist/util/HTTPInfoUtil.js +53 -64
- package/dist/util/HTTPPriorityUtil.d.ts +22 -19
- package/dist/util/HTTPPriorityUtil.js +39 -43
- package/dist/util/MethodInfoUtil.d.ts +22 -19
- package/dist/util/MethodInfoUtil.js +62 -72
- package/dist/util/index.d.ts +8 -6
- package/dist/util/index.js +10 -7
- package/dist/util/validator/ControllerValidator.d.ts +7 -3
- package/dist/util/validator/ControllerValidator.js +15 -14
- package/dist/util/validator/MethodValidator.d.ts +7 -3
- package/dist/util/validator/MethodValidator.js +29 -29
- package/dist/util/validator/index.d.ts +2 -2
- package/dist/util/validator/index.js +4 -3
- package/package.json +31 -35
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { ControllerMetaBuilder, ControllerMetaBuilderCreator, ControllerMetadata, ControllerTypeLike, EggProtoImplClass } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/builder/ControllerMetaBuilderFactory.d.ts
|
|
4
|
+
declare class ControllerMetaBuilderFactory {
|
|
5
|
+
private static builderCreatorMap;
|
|
6
|
+
static registerControllerMetaBuilder(controllerType: ControllerTypeLike, controllerBuilderCreator: ControllerMetaBuilderCreator): void;
|
|
7
|
+
static createControllerMetaBuilder(clazz: EggProtoImplClass, controllerType?: ControllerTypeLike): ControllerMetaBuilder | undefined;
|
|
8
|
+
static build(clazz: EggProtoImplClass, controllerType?: ControllerTypeLike): ControllerMetadata | undefined;
|
|
7
9
|
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { ControllerMetaBuilderFactory };
|
|
@@ -1,41 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
return metadata;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFCdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL0NvbnRyb2xsZXJNZXRhQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBU2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RSxNQUFNLE9BQU8sNEJBQTRCO0lBQy9CLE1BQU0sQ0FBQyxpQkFBaUIsR0FBMEQsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVwRyxNQUFNLENBQUMsNkJBQTZCLENBQ2xDLGNBQWtDLEVBQ2xDLHdCQUFzRDtRQUV0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNLENBQUMsMkJBQTJCLENBQ2hDLEtBQXdCLEVBQ3hCLGNBQW1DO1FBRW5DLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixjQUFjLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBd0IsRUFBRSxjQUFtQztRQUN4RSxNQUFNLE9BQU8sR0FBRyw0QkFBNEIsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRSxLQUFLLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RSxJQUFJLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsS0FBSyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxjQUFjLENBQUMsNkJBQTZCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyJ9
|
|
1
|
+
import { ControllerInfoUtil } from "../util/ControllerInfoUtil.js";
|
|
2
|
+
import { MethodInfoUtil } from "../util/MethodInfoUtil.js";
|
|
3
|
+
import "../util/index.js";
|
|
4
|
+
import { Pointcut } from "@eggjs/aop-decorator";
|
|
5
|
+
|
|
6
|
+
//#region src/builder/ControllerMetaBuilderFactory.ts
|
|
7
|
+
var ControllerMetaBuilderFactory = class ControllerMetaBuilderFactory {
|
|
8
|
+
static builderCreatorMap = /* @__PURE__ */ new Map();
|
|
9
|
+
static registerControllerMetaBuilder(controllerType, controllerBuilderCreator) {
|
|
10
|
+
this.builderCreatorMap.set(controllerType, controllerBuilderCreator);
|
|
11
|
+
}
|
|
12
|
+
static createControllerMetaBuilder(clazz, controllerType) {
|
|
13
|
+
if (!controllerType) controllerType = ControllerInfoUtil.getControllerType(clazz);
|
|
14
|
+
if (!controllerType) return;
|
|
15
|
+
const creator = this.builderCreatorMap.get(controllerType);
|
|
16
|
+
if (!creator) throw new Error(`not found controller meta builder for type ${controllerType}`);
|
|
17
|
+
return creator(clazz);
|
|
18
|
+
}
|
|
19
|
+
static build(clazz, controllerType) {
|
|
20
|
+
const builder = ControllerMetaBuilderFactory.createControllerMetaBuilder(clazz, controllerType);
|
|
21
|
+
if (!builder) return;
|
|
22
|
+
const metadata = builder.build();
|
|
23
|
+
if (!metadata) return;
|
|
24
|
+
const controllerAopMws = ControllerInfoUtil.getControllerAopMiddlewares(clazz);
|
|
25
|
+
for (const { name } of metadata.methods) {
|
|
26
|
+
const methodAopMws = MethodInfoUtil.getMethodAopMiddlewares(clazz, name);
|
|
27
|
+
if (MethodInfoUtil.shouldRegisterAopMiddlewarePointCut(clazz, name)) {
|
|
28
|
+
for (const mw of [...methodAopMws, ...controllerAopMws].reverse()) Pointcut(mw)(clazz.prototype, name);
|
|
29
|
+
MethodInfoUtil.registerAopMiddlewarePointcut(clazz, name);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return metadata;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ControllerMetaBuilderFactory };
|
package/dist/builder/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import { ControllerMetaBuilderFactory } from "./ControllerMetaBuilderFactory.js";
|
package/dist/builder/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { ControllerMetaBuilderFactory } from "./ControllerMetaBuilderFactory.js";
|
|
2
|
+
|
|
3
|
+
export { };
|
package/dist/decorator/Acl.d.ts
CHANGED
package/dist/decorator/Acl.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { ControllerInfoUtil } from "../util/ControllerInfoUtil.js";
|
|
2
|
+
import { MethodInfoUtil } from "../util/MethodInfoUtil.js";
|
|
3
|
+
import "../util/index.js";
|
|
4
|
+
import assert from "node:assert";
|
|
5
|
+
|
|
6
|
+
//#region src/decorator/Acl.ts
|
|
7
|
+
function Acl(code) {
|
|
8
|
+
function classAcl(constructor) {
|
|
9
|
+
ControllerInfoUtil.setControllerAcl(code, constructor);
|
|
10
|
+
}
|
|
11
|
+
function methodAcl(target, propertyKey) {
|
|
12
|
+
assert.equal(typeof propertyKey, "string", `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
13
|
+
const controllerClazz = target.constructor;
|
|
14
|
+
const methodName = propertyKey;
|
|
15
|
+
MethodInfoUtil.setMethodAcl(code, controllerClazz, methodName);
|
|
16
|
+
}
|
|
17
|
+
return function(target, propertyKey) {
|
|
18
|
+
if (propertyKey === void 0) classAcl(target);
|
|
19
|
+
else methodAcl(target, propertyKey);
|
|
20
|
+
};
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Acl };
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
//#region src/decorator/Context.d.ts
|
|
2
|
+
declare function InjectContext(): (target: any, propertyKey: PropertyKey, parameterIndex: number) => void;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { InjectContext };
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { MethodInfoUtil } from "../util/MethodInfoUtil.js";
|
|
2
|
+
import "../util/index.js";
|
|
3
|
+
import assert from "node:assert";
|
|
4
|
+
|
|
5
|
+
//#region src/decorator/Context.ts
|
|
6
|
+
function InjectContext() {
|
|
7
|
+
return function(target, propertyKey, parameterIndex) {
|
|
8
|
+
assert.equal(typeof propertyKey, "string", `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
9
|
+
const methodName = propertyKey;
|
|
10
|
+
const controllerClazz = target.constructor;
|
|
11
|
+
MethodInfoUtil.setMethodContextIndexInArgs(parameterIndex, controllerClazz, methodName);
|
|
12
|
+
};
|
|
10
13
|
}
|
|
11
|
-
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { InjectContext };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { EggProtoImplClass, IAdvice, MiddlewareFunc } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/decorator/Middleware.d.ts
|
|
4
|
+
declare function Middleware(...middlewares: Array<MiddlewareFunc> | Array<EggProtoImplClass<IAdvice>>): (target: any, propertyKey?: PropertyKey) => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { Middleware };
|
|
@@ -1,68 +1,56 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
1
|
+
import { ControllerInfoUtil } from "../util/ControllerInfoUtil.js";
|
|
2
|
+
import { MethodInfoUtil } from "../util/MethodInfoUtil.js";
|
|
3
|
+
import "../util/index.js";
|
|
4
|
+
import { AdviceInfoUtil } from "@eggjs/aop-decorator";
|
|
5
|
+
import assert from "node:assert";
|
|
6
|
+
import { isClass } from "is-type-of";
|
|
7
|
+
|
|
8
|
+
//#region src/decorator/Middleware.ts
|
|
5
9
|
const MiddlewareType = {
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
AOP: "AOP",
|
|
11
|
+
MiddlewareFunc: "MiddlewareFunc"
|
|
8
12
|
};
|
|
9
13
|
function isAop(mw) {
|
|
10
|
-
|
|
14
|
+
return isClass(mw) && AdviceInfoUtil.isAdvice(mw);
|
|
11
15
|
}
|
|
12
16
|
function isAopTypeOrMiddlewareType(middlewares) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
return MiddlewareType.MiddlewareFunc;
|
|
17
|
+
const adviceCount = middlewares.filter((t) => isAop(t)).length;
|
|
18
|
+
if (adviceCount) {
|
|
19
|
+
if (adviceCount === middlewares.length) return MiddlewareType.AOP;
|
|
20
|
+
throw new Error("AOP and MiddlewareFunc can not be mixed");
|
|
21
|
+
}
|
|
22
|
+
return MiddlewareType.MiddlewareFunc;
|
|
21
23
|
}
|
|
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
|
-
if (type === MiddlewareType.AOP) {
|
|
52
|
-
aopTypeClassMiddleware(target);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
functionTypeClassMiddleware(target);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
if (type === MiddlewareType.AOP) {
|
|
60
|
-
aopTypeMethodMiddleware(target, propertyKey);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
functionTypeMethodMiddleware(target, propertyKey);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
};
|
|
24
|
+
function Middleware(...middlewares) {
|
|
25
|
+
function functionTypeClassMiddleware(constructor) {
|
|
26
|
+
middlewares.forEach((mid) => {
|
|
27
|
+
ControllerInfoUtil.addControllerMiddleware(mid, constructor);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function aopTypeClassMiddleware(constructor) {
|
|
31
|
+
for (const aopAdvice of middlewares) ControllerInfoUtil.addControllerAopMiddleware(aopAdvice, constructor);
|
|
32
|
+
}
|
|
33
|
+
function functionTypeMethodMiddleware(target, propertyKey) {
|
|
34
|
+
assert.equal(typeof propertyKey, "string", `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
35
|
+
const controllerClazz = target.constructor;
|
|
36
|
+
const methodName = propertyKey;
|
|
37
|
+
middlewares.forEach((mid) => {
|
|
38
|
+
MethodInfoUtil.addMethodMiddleware(mid, controllerClazz, methodName);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function aopTypeMethodMiddleware(target, propertyKey) {
|
|
42
|
+
const controllerClazz = target.constructor;
|
|
43
|
+
const methodName = propertyKey;
|
|
44
|
+
for (const aopAdvice of middlewares) MethodInfoUtil.addMethodAopMiddleware(aopAdvice, controllerClazz, methodName);
|
|
45
|
+
}
|
|
46
|
+
return function(target, propertyKey) {
|
|
47
|
+
const type = isAopTypeOrMiddlewareType(middlewares);
|
|
48
|
+
if (propertyKey === void 0) if (type === MiddlewareType.AOP) aopTypeClassMiddleware(target);
|
|
49
|
+
else functionTypeClassMiddleware(target);
|
|
50
|
+
else if (type === MiddlewareType.AOP) aopTypeMethodMiddleware(target, propertyKey);
|
|
51
|
+
else functionTypeMethodMiddleware(target, propertyKey);
|
|
52
|
+
};
|
|
67
53
|
}
|
|
68
|
-
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { Middleware };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { EggProtoImplClass, HTTPControllerParams } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/decorator/http/HTTPController.d.ts
|
|
4
|
+
declare function HTTPController(param?: HTTPControllerParams): (constructor: EggProtoImplClass) => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { HTTPController };
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
// './tegg/core/common-util/src/StackUtil.ts',
|
|
21
|
-
// './tegg/core/core-decorator/src/decorator/Prototype.ts',
|
|
22
|
-
// './tegg/core/controller-decorator/src/decorator/http/HTTPController.ts',
|
|
23
|
-
// './tegg/core/core-decorator/node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js',
|
|
24
|
-
// './tegg/core/core-decorator/node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js',
|
|
25
|
-
// './tegg/core/controller-decorator/test/fixtures/TRFooController.ts',
|
|
26
|
-
PrototypeUtil.setFilePath(constructor, StackUtil.getCalleeFromStack(false, 5));
|
|
27
|
-
};
|
|
1
|
+
import { ControllerInfoUtil } from "../../util/ControllerInfoUtil.js";
|
|
2
|
+
import { HTTPInfoUtil } from "../../util/HTTPInfoUtil.js";
|
|
3
|
+
import "../../util/index.js";
|
|
4
|
+
import { PrototypeUtil, SingletonProto } from "@eggjs/core-decorator";
|
|
5
|
+
import { AccessLevel, ControllerType } from "@eggjs/tegg-types";
|
|
6
|
+
import { StackUtil } from "@eggjs/tegg-common-util";
|
|
7
|
+
|
|
8
|
+
//#region src/decorator/http/HTTPController.ts
|
|
9
|
+
function HTTPController(param) {
|
|
10
|
+
return function(constructor) {
|
|
11
|
+
ControllerInfoUtil.setControllerType(constructor, ControllerType.HTTP);
|
|
12
|
+
if (param?.controllerName) ControllerInfoUtil.setControllerName(constructor, param.controllerName);
|
|
13
|
+
if (param?.path) HTTPInfoUtil.setHTTPPath(param.path, constructor);
|
|
14
|
+
SingletonProto({
|
|
15
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
16
|
+
name: param?.protoName
|
|
17
|
+
})(constructor);
|
|
18
|
+
PrototypeUtil.setFilePath(constructor, StackUtil.getCalleeFromStack(false, 5));
|
|
19
|
+
};
|
|
28
20
|
}
|
|
29
|
-
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
export { HTTPController };
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { HTTPMethodParams } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/decorator/http/HTTPMethod.d.ts
|
|
4
|
+
declare function HTTPMethod(param: HTTPMethodParams): (target: any, propertyKey: PropertyKey) => void;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { HTTPMethod };
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { MethodInfoUtil } from "../../util/MethodInfoUtil.js";
|
|
2
|
+
import { HTTPInfoUtil } from "../../util/HTTPInfoUtil.js";
|
|
3
|
+
import "../../util/index.js";
|
|
4
|
+
import { ControllerType } from "@eggjs/tegg-types";
|
|
5
|
+
import assert from "node:assert";
|
|
6
|
+
|
|
7
|
+
//#region src/decorator/http/HTTPMethod.ts
|
|
8
|
+
function HTTPMethod(param) {
|
|
9
|
+
return function(target, propertyKey) {
|
|
10
|
+
assert.equal(typeof propertyKey, "string", `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
11
|
+
const controllerClazz = target.constructor;
|
|
12
|
+
const methodName = propertyKey;
|
|
13
|
+
MethodInfoUtil.setMethodControllerType(controllerClazz, methodName, ControllerType.HTTP);
|
|
14
|
+
HTTPInfoUtil.setHTTPMethodPath(param.path, controllerClazz, methodName);
|
|
15
|
+
HTTPInfoUtil.setHTTPMethodMethod(param.method, controllerClazz, methodName);
|
|
16
|
+
if (param.priority !== void 0) HTTPInfoUtil.setHTTPMethodPriority(param.priority, controllerClazz, methodName);
|
|
17
|
+
};
|
|
16
18
|
}
|
|
17
|
-
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { HTTPMethod };
|