@eggjs/controller-decorator 4.0.0-beta.3 → 4.0.0-beta.31
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/README.md +13 -1
- package/dist/builder/ControllerMetaBuilderFactory.js +41 -0
- package/dist/builder/index.d.ts +1 -0
- package/dist/builder/index.js +2 -0
- package/dist/decorator/Acl.js +22 -0
- package/dist/decorator/Context.d.ts +1 -0
- package/dist/decorator/Context.js +11 -0
- package/dist/decorator/Middleware.js +68 -0
- package/{src → dist}/decorator/http/HTTPController.js +2 -2
- package/dist/decorator/http/HTTPMethod.js +17 -0
- package/dist/decorator/http/HTTPParam.d.ts +173 -0
- package/dist/decorator/http/HTTPParam.js +241 -0
- package/dist/decorator/http/Host.js +25 -0
- package/dist/decorator/http/index.d.ts +4 -0
- package/dist/decorator/http/index.js +5 -0
- package/dist/decorator/index.d.ts +4 -0
- package/dist/decorator/index.js +5 -0
- package/{src → dist}/impl/http/HTTPControllerMetaBuilder.d.ts +1 -1
- package/dist/impl/http/HTTPControllerMetaBuilder.js +57 -0
- package/{src → dist}/impl/http/HTTPControllerMethodMetaBuilder.d.ts +1 -1
- package/dist/impl/http/HTTPControllerMethodMetaBuilder.js +96 -0
- package/dist/impl/http/index.d.ts +2 -0
- package/dist/impl/http/index.js +3 -0
- package/dist/impl/index.d.ts +1 -0
- package/dist/impl/index.js +2 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/{src → dist}/model/HTTPControllerMeta.d.ts +2 -2
- package/dist/model/HTTPControllerMeta.js +57 -0
- package/dist/model/HTTPCookies.d.ts +1 -0
- package/dist/model/HTTPCookies.js +2 -0
- package/{src → dist}/model/HTTPMethodMeta.d.ts +1 -1
- package/dist/model/HTTPMethodMeta.js +124 -0
- package/dist/model/index.d.ts +3 -0
- package/dist/model/index.js +4 -0
- package/{src → dist}/util/ControllerInfoUtil.d.ts +1 -1
- package/dist/util/ControllerInfoUtil.js +46 -0
- package/dist/util/ControllerMetadataUtil.js +20 -0
- package/dist/util/HTTPInfoUtil.js +64 -0
- package/{src → dist}/util/HTTPPriorityUtil.d.ts +2 -1
- package/{src → dist}/util/HTTPPriorityUtil.js +4 -3
- package/{src → dist}/util/MethodInfoUtil.d.ts +1 -1
- package/dist/util/MethodInfoUtil.js +72 -0
- package/dist/util/index.d.ts +6 -0
- package/dist/util/index.js +7 -0
- package/dist/util/validator/ControllerValidator.js +15 -0
- package/dist/util/validator/MethodValidator.js +31 -0
- package/dist/util/validator/index.d.ts +2 -0
- package/dist/util/validator/index.js +3 -0
- package/package.json +29 -31
- package/src/builder/ControllerMetaBuilderFactory.js +0 -41
- package/src/builder/index.d.ts +0 -1
- package/src/builder/index.js +0 -2
- package/src/decorator/Acl.js +0 -22
- package/src/decorator/Context.d.ts +0 -1
- package/src/decorator/Context.js +0 -11
- package/src/decorator/Middleware.js +0 -69
- package/src/decorator/http/HTTPMethod.js +0 -17
- package/src/decorator/http/HTTPParam.d.ts +0 -8
- package/src/decorator/http/HTTPParam.js +0 -75
- package/src/decorator/http/Host.js +0 -25
- package/src/decorator/http/index.d.ts +0 -4
- package/src/decorator/http/index.js +0 -5
- package/src/decorator/index.d.ts +0 -4
- package/src/decorator/index.js +0 -5
- package/src/impl/http/HTTPControllerMetaBuilder.js +0 -57
- package/src/impl/http/HTTPControllerMethodMetaBuilder.js +0 -100
- package/src/impl/http/index.d.ts +0 -2
- package/src/impl/http/index.js +0 -3
- package/src/impl/index.d.ts +0 -1
- package/src/impl/index.js +0 -2
- package/src/index.d.ts +0 -6
- package/src/index.js +0 -7
- package/src/model/HTTPControllerMeta.js +0 -59
- package/src/model/HTTPCookies.d.ts +0 -3
- package/src/model/HTTPCookies.js +0 -4
- package/src/model/HTTPMethodMeta.js +0 -124
- package/src/model/HTTPRequest.d.ts +0 -7
- package/src/model/HTTPRequest.js +0 -3
- package/src/model/HTTPResponse.d.ts +0 -10
- package/src/model/HTTPResponse.js +0 -3
- package/src/model/index.d.ts +0 -5
- package/src/model/index.js +0 -6
- package/src/util/ControllerInfoUtil.js +0 -46
- package/src/util/ControllerMetadataUtil.js +0 -20
- package/src/util/HTTPInfoUtil.js +0 -64
- package/src/util/MethodInfoUtil.js +0 -72
- package/src/util/index.d.ts +0 -6
- package/src/util/index.js +0 -7
- package/src/util/validator/ControllerValidator.js +0 -15
- package/src/util/validator/MethodValidator.js +0 -31
- package/src/util/validator/index.d.ts +0 -2
- package/src/util/validator/index.js +0 -3
- /package/{src → dist}/builder/ControllerMetaBuilderFactory.d.ts +0 -0
- /package/{src → dist}/decorator/Acl.d.ts +0 -0
- /package/{src → dist}/decorator/Middleware.d.ts +0 -0
- /package/{src → dist}/decorator/http/HTTPController.d.ts +0 -0
- /package/{src → dist}/decorator/http/HTTPMethod.d.ts +0 -0
- /package/{src → dist}/decorator/http/Host.d.ts +0 -0
- /package/{src → dist}/util/ControllerMetadataUtil.d.ts +0 -0
- /package/{src → dist}/util/HTTPInfoUtil.d.ts +0 -0
- /package/{src → dist}/util/validator/ControllerValidator.d.ts +0 -0
- /package/{src → dist}/util/validator/MethodValidator.d.ts +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { ControllerInfoUtil, MethodInfoUtil } from "../../util/index.js";
|
|
3
|
+
export function Host(host) {
|
|
4
|
+
function parseHost() {
|
|
5
|
+
return Array.isArray(host) ? host : [host];
|
|
6
|
+
}
|
|
7
|
+
function classHost(constructor) {
|
|
8
|
+
ControllerInfoUtil.addControllerHosts(parseHost(), constructor);
|
|
9
|
+
}
|
|
10
|
+
function methodHost(target, propertyKey) {
|
|
11
|
+
assert(typeof propertyKey === 'string', `[controller/${target.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
12
|
+
const controllerClazz = target.constructor;
|
|
13
|
+
const methodName = propertyKey;
|
|
14
|
+
MethodInfoUtil.setMethodHosts(parseHost(), controllerClazz, methodName);
|
|
15
|
+
}
|
|
16
|
+
return function (target, propertyKey) {
|
|
17
|
+
if (propertyKey === undefined) {
|
|
18
|
+
classHost(target);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
methodHost(target, propertyKey);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3IvaHR0cC9Ib3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUlqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekUsTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFjO0lBQ2pDLFNBQVMsU0FBUztRQUNoQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsV0FBOEI7UUFDL0Msa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLE1BQVcsRUFBRSxXQUF3QjtRQUN2RCxNQUFNLENBQ0osT0FBTyxXQUFXLEtBQUssUUFBUSxFQUMvQixlQUFlLE1BQU0sQ0FBQyxJQUFJLHFEQUFxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FDckcsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFnQyxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLFdBQXFCLENBQUM7UUFDekMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sVUFBVSxNQUFXLEVBQUUsV0FBeUI7UUFDckQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./Host.js";
|
|
2
|
+
export * from "./HTTPController.js";
|
|
3
|
+
export * from "./HTTPMethod.js";
|
|
4
|
+
export * from "./HTTPParam.js";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9yL2h0dHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./http/index.js";
|
|
2
|
+
export * from "./Acl.js";
|
|
3
|
+
export * from "./Context.js";
|
|
4
|
+
export * from "./Middleware.js";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVjb3JhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQyJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
|
-
import { HTTPControllerMeta } from '../../model/index.
|
|
2
|
+
import { HTTPControllerMeta } from '../../model/index.ts';
|
|
3
3
|
export declare class HTTPControllerMetaBuilder {
|
|
4
4
|
private readonly clazz;
|
|
5
5
|
constructor(clazz: EggProtoImplClass);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { PrototypeUtil } from '@eggjs/core-decorator';
|
|
3
|
+
import { ObjectUtils } from '@eggjs/tegg-common-util';
|
|
4
|
+
import { ClassUtil } from '@eggjs/metadata';
|
|
5
|
+
import { ControllerType } from '@eggjs/tegg-types';
|
|
6
|
+
import { ControllerMetaBuilderFactory } from "../../builder/index.js";
|
|
7
|
+
import { HTTPControllerMeta, HTTPMethodMeta } from "../../model/index.js";
|
|
8
|
+
import { ControllerInfoUtil, ControllerMetadataUtil, HTTPInfoUtil, ControllerValidator } from "../../util/index.js";
|
|
9
|
+
import { HTTPControllerMethodMetaBuilder } from "./HTTPControllerMethodMetaBuilder.js";
|
|
10
|
+
export class HTTPControllerMetaBuilder {
|
|
11
|
+
clazz;
|
|
12
|
+
constructor(clazz) {
|
|
13
|
+
this.clazz = clazz;
|
|
14
|
+
}
|
|
15
|
+
buildMethod() {
|
|
16
|
+
const methodNames = ObjectUtils.getProperties(this.clazz.prototype);
|
|
17
|
+
const methods = [];
|
|
18
|
+
for (const methodName of methodNames) {
|
|
19
|
+
const builder = new HTTPControllerMethodMetaBuilder(this.clazz, methodName);
|
|
20
|
+
const methodMeta = builder.build();
|
|
21
|
+
if (methodMeta) {
|
|
22
|
+
methods.push(methodMeta);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return methods;
|
|
26
|
+
}
|
|
27
|
+
build() {
|
|
28
|
+
ControllerValidator.validate(this.clazz);
|
|
29
|
+
const controllerType = ControllerInfoUtil.getControllerType(this.clazz);
|
|
30
|
+
assert.equal(controllerType, ControllerType.HTTP, 'invalidate controller type');
|
|
31
|
+
const httpPath = HTTPInfoUtil.getHTTPPath(this.clazz);
|
|
32
|
+
const httpMiddlewares = ControllerInfoUtil.getControllerMiddlewares(this.clazz);
|
|
33
|
+
const methods = this.buildMethod();
|
|
34
|
+
const clazzName = this.clazz.name;
|
|
35
|
+
const controllerName = ControllerInfoUtil.getControllerName(this.clazz) || clazzName;
|
|
36
|
+
const property = PrototypeUtil.getProperty(this.clazz);
|
|
37
|
+
const protoName = property.name;
|
|
38
|
+
const needAcl = ControllerInfoUtil.hasControllerAcl(this.clazz);
|
|
39
|
+
const aclCode = ControllerInfoUtil.getControllerAcl(this.clazz);
|
|
40
|
+
const hosts = ControllerInfoUtil.getControllerHosts(this.clazz);
|
|
41
|
+
const metadata = new HTTPControllerMeta(clazzName, protoName, controllerName, httpPath, httpMiddlewares, methods, needAcl, aclCode, hosts);
|
|
42
|
+
ControllerMetadataUtil.setControllerMetadata(this.clazz, metadata);
|
|
43
|
+
for (const method of metadata.methods) {
|
|
44
|
+
const realPath = metadata.getMethodRealPath(method);
|
|
45
|
+
if (!realPath.startsWith('/')) {
|
|
46
|
+
const desc = ClassUtil.classDescription(this.clazz);
|
|
47
|
+
throw new Error(`class ${desc} method ${method.name} path ${realPath} not start with /`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return metadata;
|
|
51
|
+
}
|
|
52
|
+
static create(clazz) {
|
|
53
|
+
return new HTTPControllerMetaBuilder(clazz);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
ControllerMetaBuilderFactory.registerControllerMetaBuilder(ControllerType.HTTP, HTTPControllerMetaBuilder.create);
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbXBsL2h0dHAvSFRUUENvbnRyb2xsZXJNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxPQUFPLHlCQUF5QjtJQUNuQixLQUFLLENBQW9CO0lBRTFDLFlBQVksS0FBd0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFxQixFQUFFLENBQUM7UUFDckMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLEVB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
|
-
import { HTTPMethodMeta } from '../../model/index.
|
|
2
|
+
import { HTTPMethodMeta } from '../../model/index.ts';
|
|
3
3
|
export declare class HTTPControllerMethodMetaBuilder {
|
|
4
4
|
private readonly clazz;
|
|
5
5
|
private readonly methodName;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { ClassUtil } from '@eggjs/metadata';
|
|
3
|
+
import { HTTPMethodMeta, ParamMeta, ParamMetaUtil } from "../../model/index.js";
|
|
4
|
+
import { MethodValidator, HTTPInfoUtil, MethodInfoUtil, HTTPPriorityUtil } from "../../util/index.js";
|
|
5
|
+
export class HTTPControllerMethodMetaBuilder {
|
|
6
|
+
clazz;
|
|
7
|
+
methodName;
|
|
8
|
+
constructor(clazz, methodName) {
|
|
9
|
+
this.clazz = clazz;
|
|
10
|
+
this.methodName = methodName;
|
|
11
|
+
}
|
|
12
|
+
// 检查 HTTP 方法上参数是否都加上了注解
|
|
13
|
+
// foo(a, b=233, c); foo.length = 2;
|
|
14
|
+
// 由于这种情况的存在, 所以需要对 function 参数检查进行特殊处理
|
|
15
|
+
// 如果有注解的参数比 function.length 长, 长度应该取有注解参数总数(包括 @Context)
|
|
16
|
+
//
|
|
17
|
+
// 但是有两种特殊情况无法处理
|
|
18
|
+
// foo(@Context() ctx, @HTTPParam() id1, id2 = 233)
|
|
19
|
+
// foo(@Context() ctx, @HTTPParam() id1, id2 = 233, id3)
|
|
20
|
+
// 这两种情况均为默认值参数在
|
|
21
|
+
checkParamDecorators() {
|
|
22
|
+
const method = this.clazz.prototype[this.methodName];
|
|
23
|
+
// 获取函数参数长度
|
|
24
|
+
const functionLength = method.length;
|
|
25
|
+
// 计算带注解参数
|
|
26
|
+
const paramIndexList = HTTPInfoUtil.getParamIndexList(this.clazz, this.methodName);
|
|
27
|
+
const contextIndex = MethodInfoUtil.getMethodContextIndex(this.clazz, this.methodName);
|
|
28
|
+
const hasAnnotationParamCount = typeof contextIndex === 'undefined' ? paramIndexList.length : paramIndexList.length + 1;
|
|
29
|
+
const maxParamCount = Math.max(functionLength, hasAnnotationParamCount);
|
|
30
|
+
for (let i = 0; i < maxParamCount; ++i) {
|
|
31
|
+
// 上下文参数, 跳过检查
|
|
32
|
+
if (i === contextIndex) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const paramType = HTTPInfoUtil.getHTTPMethodParamType(i, this.clazz, this.methodName);
|
|
36
|
+
if (!paramType) {
|
|
37
|
+
const classDesc = ClassUtil.classDescription(this.clazz);
|
|
38
|
+
throw new Error(`${classDesc}:${this.methodName} param ${i} has no http param type, Please add @HTTPBody, @HTTPParam, @HTTPQuery, @HTTPQueries`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
buildParamType(httpPath) {
|
|
43
|
+
this.checkParamDecorators();
|
|
44
|
+
const paramTypeMap = new Map();
|
|
45
|
+
const paramIndexList = HTTPInfoUtil.getParamIndexList(this.clazz, this.methodName);
|
|
46
|
+
for (const paramIndex of paramIndexList) {
|
|
47
|
+
const paramType = HTTPInfoUtil.getHTTPMethodParamType(paramIndex, this.clazz, this.methodName);
|
|
48
|
+
const paramName = HTTPInfoUtil.getHTTPMethodParamName(paramIndex, this.clazz, this.methodName);
|
|
49
|
+
const paramMeta = ParamMetaUtil.createParam(paramType, paramName);
|
|
50
|
+
try {
|
|
51
|
+
paramMeta.validate(httpPath);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
const classDesc = ClassUtil.classDescription(this.clazz);
|
|
55
|
+
e.message = `build controller ${classDesc} method ${this.methodName} param ${paramName} failed: ${e.message}`;
|
|
56
|
+
throw e;
|
|
57
|
+
}
|
|
58
|
+
paramTypeMap.set(paramIndex, paramMeta);
|
|
59
|
+
}
|
|
60
|
+
return paramTypeMap;
|
|
61
|
+
}
|
|
62
|
+
getPriority() {
|
|
63
|
+
const priority = HTTPInfoUtil.getHTTPMethodPriority(this.clazz, this.methodName);
|
|
64
|
+
if (priority !== undefined) {
|
|
65
|
+
return priority;
|
|
66
|
+
}
|
|
67
|
+
const controllerPath = HTTPInfoUtil.getHTTPPath(this.clazz);
|
|
68
|
+
const methodPath = HTTPInfoUtil.getHTTPMethodPath(this.clazz, this.methodName);
|
|
69
|
+
const realPath = controllerPath ? path.posix.join(controllerPath, methodPath) : methodPath;
|
|
70
|
+
const defaultPriority = HTTPPriorityUtil.calcPathPriority(realPath);
|
|
71
|
+
if (defaultPriority > HTTPPriorityUtil.DEFAULT_PRIORITY) {
|
|
72
|
+
throw new Error(`path ${realPath} is too long, should set priority manually`);
|
|
73
|
+
}
|
|
74
|
+
return defaultPriority;
|
|
75
|
+
}
|
|
76
|
+
build() {
|
|
77
|
+
MethodValidator.validate(this.clazz, this.methodName);
|
|
78
|
+
const controllerType = MethodInfoUtil.getMethodControllerType(this.clazz, this.methodName);
|
|
79
|
+
if (!controllerType) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const httpMethod = HTTPInfoUtil.getHTTPMethodMethod(this.clazz, this.methodName);
|
|
83
|
+
const parentPath = HTTPInfoUtil.getHTTPPath(this.clazz);
|
|
84
|
+
const httpPath = HTTPInfoUtil.getHTTPMethodPath(this.clazz, this.methodName);
|
|
85
|
+
const contextIndex = MethodInfoUtil.getMethodContextIndex(this.clazz, this.methodName);
|
|
86
|
+
const middlewares = MethodInfoUtil.getMethodMiddlewares(this.clazz, this.methodName);
|
|
87
|
+
const needAcl = MethodInfoUtil.hasMethodAcl(this.clazz, this.methodName);
|
|
88
|
+
const aclCode = MethodInfoUtil.getMethodAcl(this.clazz, this.methodName);
|
|
89
|
+
const hosts = MethodInfoUtil.getMethodHosts(this.clazz, this.methodName);
|
|
90
|
+
const realPath = parentPath ? path.posix.join(parentPath, httpPath) : httpPath;
|
|
91
|
+
const paramTypeMap = this.buildParamType(realPath);
|
|
92
|
+
const priority = this.getPriority();
|
|
93
|
+
return new HTTPMethodMeta(this.methodName, httpPath, httpMethod, middlewares, contextIndex, paramTypeMap, priority, needAcl, aclCode, hosts);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRob2RNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbXBsL2h0dHAvSFRUUENvbnRyb2xsZXJNZXRob2RNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRHLE1BQU0sT0FBTywrQkFBK0I7SUFDekIsS0FBSyxDQUFvQjtJQUN6QixVQUFVLENBQVM7SUFFcEMsWUFBWSxLQUF3QixFQUFFLFVBQWtCO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLHVDQUF1QztJQUN2Qyx5REFBeUQ7SUFDekQsRUFBRTtJQUNGLGdCQUFnQjtJQUNoQixtREFBbUQ7SUFDbkQsd0RBQXdEO0lBQ3hELGdCQUFnQjtJQUNSLG9CQUFvQjtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsV0FBVztRQUNYLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFckMsVUFBVTtRQUNWLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNu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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./HTTPControllerMetaBuilder.js";
|
|
2
|
+
export * from "./HTTPControllerMethodMetaBuilder.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW1wbC9odHRwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQ0FBc0MsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './http/index.ts';
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from '@eggjs/tegg-types/controller-decorator';
|
|
2
|
+
export * from "./builder/index.js";
|
|
3
|
+
export * from "./decorator/index.js";
|
|
4
|
+
export * from "./impl/index.js";
|
|
5
|
+
export * from "./model/index.js";
|
|
6
|
+
export * from "./util/index.js";
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUMifQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { ControllerMetadata, EggPrototypeName, MiddlewareFunc } from '@eggjs/tegg-types';
|
|
2
2
|
import { ControllerType } from '@eggjs/tegg-types';
|
|
3
|
-
import { HTTPMethodMeta } from './HTTPMethodMeta.
|
|
3
|
+
import { HTTPMethodMeta } from './HTTPMethodMeta.ts';
|
|
4
4
|
export declare class HTTPControllerMeta implements ControllerMetadata {
|
|
5
5
|
readonly protoName: EggPrototypeName;
|
|
6
6
|
readonly controllerName: string;
|
|
7
7
|
readonly className: string;
|
|
8
|
-
readonly type
|
|
8
|
+
readonly type: ControllerType;
|
|
9
9
|
readonly path?: string;
|
|
10
10
|
readonly middlewares: readonly MiddlewareFunc[];
|
|
11
11
|
readonly methods: readonly HTTPMethodMeta[];
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { ControllerType } from '@eggjs/tegg-types';
|
|
3
|
+
import { HTTPMethodMeta } from "./HTTPMethodMeta.js";
|
|
4
|
+
export class HTTPControllerMeta {
|
|
5
|
+
protoName;
|
|
6
|
+
controllerName;
|
|
7
|
+
className;
|
|
8
|
+
type = ControllerType.HTTP;
|
|
9
|
+
path;
|
|
10
|
+
middlewares;
|
|
11
|
+
methods;
|
|
12
|
+
needAcl;
|
|
13
|
+
aclCode;
|
|
14
|
+
hosts;
|
|
15
|
+
constructor(className, protoName, controllerName, path, middlewares, methods, needAcl, aclCode, hosts) {
|
|
16
|
+
this.protoName = protoName;
|
|
17
|
+
this.controllerName = controllerName;
|
|
18
|
+
this.className = className;
|
|
19
|
+
this.path = path;
|
|
20
|
+
this.middlewares = middlewares;
|
|
21
|
+
this.methods = methods;
|
|
22
|
+
this.needAcl = needAcl;
|
|
23
|
+
this.aclCode = aclCode;
|
|
24
|
+
this.hosts = hosts;
|
|
25
|
+
}
|
|
26
|
+
getMethodRealPath(method) {
|
|
27
|
+
if (this.path) {
|
|
28
|
+
return path.posix.join(this.path, method.path);
|
|
29
|
+
}
|
|
30
|
+
return method.path;
|
|
31
|
+
}
|
|
32
|
+
getMethodHosts(method) {
|
|
33
|
+
if (this.hosts) {
|
|
34
|
+
return this.hosts;
|
|
35
|
+
}
|
|
36
|
+
return method.hosts;
|
|
37
|
+
}
|
|
38
|
+
getMethodName(method) {
|
|
39
|
+
return `${method.method} ${this.controllerName}.${method.name}`;
|
|
40
|
+
}
|
|
41
|
+
getMethodMiddlewares(method) {
|
|
42
|
+
if (this.middlewares.length) {
|
|
43
|
+
return [...this.middlewares, ...method.middlewares];
|
|
44
|
+
}
|
|
45
|
+
return [...method.middlewares];
|
|
46
|
+
}
|
|
47
|
+
hasMethodAcl(method) {
|
|
48
|
+
return method.needAcl || this.needAcl;
|
|
49
|
+
}
|
|
50
|
+
getMethodAcl(method) {
|
|
51
|
+
if (method.aclCode) {
|
|
52
|
+
return method.aclCode;
|
|
53
|
+
}
|
|
54
|
+
return this.aclCode;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsL0hUVFBDb250cm9sbGVyTWV0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFHN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLFNBQVMsQ0FBbUI7SUFDNUIsY0FBYyxDQUFTO0lBQ3ZCLFNBQVMsQ0FBUztJQUNYLElBQUksR0FBbUIsY0FBYyxDQUFDLElBQUksQ0FBQztJQUMzQyxJQUFJLENBQVU7SUFDZCxXQUFXLENBQTRCO0lBQ3ZDLE9BQU8sQ0FBNEI7SUFDbkMsT0FBTyxDQUFVO0lBQ2pCLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQVk7SUFFakMsWUFDRSxTQUFpQixFQUNqQixTQUEyQixFQUMzQixjQUFzQixFQUN0QixJQUF3QixFQUN4QixXQUE2QixFQUM3QixPQUF5QixFQUN6QixPQUFnQixFQUNoQixPQUEyQixFQUMzQixLQUEyQjtRQUUzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBc0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFzQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBc0I7UUFDbEMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQXNCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFzQjtRQUNqQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXNCO1FBQ2pDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Cookies } from '@eggjs/cookies';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { Cookies } from '@eggjs/cookies';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvb2tpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvSFRUUENvb2tpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDIn0=
|
|
@@ -52,5 +52,5 @@ export declare class HTTPMethodMeta implements MethodMeta {
|
|
|
52
52
|
constructor(name: string, path: string, method: HTTPMethodEnum, middlewares: MiddlewareFunc[], contextParamIndex: number | undefined, paramTypeMap: Map<number, ParamMeta>, priority: number, needAcl: boolean, aclCode: string | undefined, hosts: string[] | undefined);
|
|
53
53
|
}
|
|
54
54
|
export declare class ParamMetaUtil {
|
|
55
|
-
static createParam(type: HTTPParamType, name?: string):
|
|
55
|
+
static createParam(type: HTTPParamType, name?: string): ParamMeta;
|
|
56
56
|
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import pathToRegexp, {} from 'path-to-regexp';
|
|
3
|
+
import { HTTPParamType } from '@eggjs/tegg-types';
|
|
4
|
+
export class ParamMeta {
|
|
5
|
+
type;
|
|
6
|
+
}
|
|
7
|
+
export class RequestParamMeta extends ParamMeta {
|
|
8
|
+
type = HTTPParamType.REQUEST;
|
|
9
|
+
validate() {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class BodyParamMeta extends ParamMeta {
|
|
14
|
+
type = HTTPParamType.BODY;
|
|
15
|
+
validate() {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class HeadersParamMeta extends ParamMeta {
|
|
20
|
+
type = HTTPParamType.HEADERS;
|
|
21
|
+
validate() {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class QueryParamMeta extends ParamMeta {
|
|
26
|
+
type = HTTPParamType.QUERY;
|
|
27
|
+
name;
|
|
28
|
+
constructor(name) {
|
|
29
|
+
super();
|
|
30
|
+
this.name = name;
|
|
31
|
+
}
|
|
32
|
+
validate() {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class QueriesParamMeta extends ParamMeta {
|
|
37
|
+
type = HTTPParamType.QUERIES;
|
|
38
|
+
name;
|
|
39
|
+
constructor(name) {
|
|
40
|
+
super();
|
|
41
|
+
this.name = name;
|
|
42
|
+
}
|
|
43
|
+
validate() {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class PathParamMeta extends ParamMeta {
|
|
48
|
+
type = HTTPParamType.PARAM;
|
|
49
|
+
name;
|
|
50
|
+
constructor(name) {
|
|
51
|
+
super();
|
|
52
|
+
this.name = name;
|
|
53
|
+
}
|
|
54
|
+
validate(httpPath) {
|
|
55
|
+
const names = [];
|
|
56
|
+
pathToRegexp(httpPath, names);
|
|
57
|
+
if (!names.find((name) => String(name.name) === this.name)) {
|
|
58
|
+
throw new Error(`can not find param ${this.name} in path ${httpPath}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class CookiesParamMeta extends ParamMeta {
|
|
63
|
+
type = HTTPParamType.COOKIES;
|
|
64
|
+
validate() {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class HTTPMethodMeta {
|
|
69
|
+
name;
|
|
70
|
+
path;
|
|
71
|
+
method;
|
|
72
|
+
middlewares;
|
|
73
|
+
contextParamIndex;
|
|
74
|
+
paramMap;
|
|
75
|
+
priority;
|
|
76
|
+
needAcl;
|
|
77
|
+
aclCode;
|
|
78
|
+
hosts;
|
|
79
|
+
constructor(name, path, method, middlewares, contextParamIndex, paramTypeMap, priority, needAcl, aclCode, hosts) {
|
|
80
|
+
this.name = name;
|
|
81
|
+
this.path = path;
|
|
82
|
+
this.method = method;
|
|
83
|
+
this.middlewares = middlewares;
|
|
84
|
+
this.contextParamIndex = contextParamIndex;
|
|
85
|
+
this.paramMap = paramTypeMap;
|
|
86
|
+
this.priority = priority;
|
|
87
|
+
this.needAcl = needAcl;
|
|
88
|
+
this.aclCode = aclCode;
|
|
89
|
+
this.hosts = hosts;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export class ParamMetaUtil {
|
|
93
|
+
static createParam(type, name) {
|
|
94
|
+
switch (type) {
|
|
95
|
+
case HTTPParamType.PARAM: {
|
|
96
|
+
assert(name, 'path param must has name');
|
|
97
|
+
return new PathParamMeta(name);
|
|
98
|
+
}
|
|
99
|
+
case HTTPParamType.BODY: {
|
|
100
|
+
return new BodyParamMeta();
|
|
101
|
+
}
|
|
102
|
+
case HTTPParamType.HEADERS: {
|
|
103
|
+
return new HeadersParamMeta();
|
|
104
|
+
}
|
|
105
|
+
case HTTPParamType.QUERIES: {
|
|
106
|
+
assert(name, 'queries param must has name');
|
|
107
|
+
return new QueriesParamMeta(name);
|
|
108
|
+
}
|
|
109
|
+
case HTTPParamType.QUERY: {
|
|
110
|
+
assert(name, 'query param must has name');
|
|
111
|
+
return new QueryParamMeta(name);
|
|
112
|
+
}
|
|
113
|
+
case HTTPParamType.REQUEST: {
|
|
114
|
+
return new RequestParamMeta();
|
|
115
|
+
}
|
|
116
|
+
case HTTPParamType.COOKIES: {
|
|
117
|
+
return new CookiesParamMeta();
|
|
118
|
+
}
|
|
119
|
+
default:
|
|
120
|
+
assert.fail('never arrive');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZE1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvSFRUUE1ldGhvZE1ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sWUFBWSxFQUFFLEVBQStCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE1BQU0sT0FBZ0IsU0FBUztJQUM3QixJQUFJLENBQWdCO0NBR3JCO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO0lBRTVDLFFBQVE7UUFDTixPQUFPO0lBQ1QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBQzFDLElBQUksR0FBa0IsYUFBYSxDQUFDLElBQUksQ0FBQztJQUV6QyxRQUFRO1FBQ04sT0FBTztJQUNULENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLElBQUksR0FBa0IsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUU1QyxRQUFRO1FBQ04sT0FBTztJQUNULENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsU0FBUztJQUMzQyxJQUFJLEdBQWtCLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDMUMsSUFBSSxDQUFTO0lBRWIsWUFBWSxJQUFZO1FBQ3RCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPO0lBQ1QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO0lBQzVDLElBQUksQ0FBUztJQUViLFlBQVksSUFB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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./HTTPControllerMeta.js";
|
|
2
|
+
export * from "./HTTPCookies.js";
|
|
3
|
+
export * from "./HTTPMethodMeta.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUMifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IAdvice } from '@eggjs/tegg-types';
|
|
1
|
+
import { type IAdvice } from '@eggjs/tegg-types';
|
|
2
2
|
import type { ControllerTypeLike, EggProtoImplClass, MiddlewareFunc } from '@eggjs/tegg-types';
|
|
3
3
|
export declare class ControllerInfoUtil {
|
|
4
4
|
static addControllerMiddleware(middleware: MiddlewareFunc, clazz: EggProtoImplClass): void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CONTROLLER_ACL, CONTROLLER_AOP_MIDDLEWARES, CONTROLLER_HOST, CONTROLLER_MIDDLEWARES, CONTROLLER_NAME, CONTROLLER_TYPE, } from '@eggjs/tegg-types';
|
|
2
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
3
|
+
export class ControllerInfoUtil {
|
|
4
|
+
static addControllerMiddleware(middleware, clazz) {
|
|
5
|
+
const middlewares = MetadataUtil.initOwnArrayMetaData(CONTROLLER_MIDDLEWARES, clazz, []);
|
|
6
|
+
middlewares.push(middleware);
|
|
7
|
+
}
|
|
8
|
+
static addControllerAopMiddleware(middleware, clazz) {
|
|
9
|
+
const middlewares = MetadataUtil.initOwnArrayMetaData(CONTROLLER_AOP_MIDDLEWARES, clazz, []);
|
|
10
|
+
middlewares.push(middleware);
|
|
11
|
+
}
|
|
12
|
+
static getControllerMiddlewares(clazz) {
|
|
13
|
+
return MetadataUtil.getMetaData(CONTROLLER_MIDDLEWARES, clazz) || [];
|
|
14
|
+
}
|
|
15
|
+
static getControllerAopMiddlewares(clazz) {
|
|
16
|
+
return MetadataUtil.getMetaData(CONTROLLER_AOP_MIDDLEWARES, clazz) || [];
|
|
17
|
+
}
|
|
18
|
+
static setControllerType(clazz, controllerType) {
|
|
19
|
+
MetadataUtil.defineMetaData(CONTROLLER_TYPE, controllerType, clazz);
|
|
20
|
+
}
|
|
21
|
+
static setControllerName(clazz, controllerName) {
|
|
22
|
+
MetadataUtil.defineMetaData(CONTROLLER_NAME, controllerName, clazz);
|
|
23
|
+
}
|
|
24
|
+
static getControllerName(clazz) {
|
|
25
|
+
return MetadataUtil.getMetaData(CONTROLLER_NAME, clazz);
|
|
26
|
+
}
|
|
27
|
+
static getControllerType(clazz) {
|
|
28
|
+
return MetadataUtil.getMetaData(CONTROLLER_TYPE, clazz);
|
|
29
|
+
}
|
|
30
|
+
static setControllerAcl(code, clazz) {
|
|
31
|
+
MetadataUtil.defineMetaData(CONTROLLER_ACL, code, clazz);
|
|
32
|
+
}
|
|
33
|
+
static hasControllerAcl(clazz) {
|
|
34
|
+
return MetadataUtil.hasMetaData(CONTROLLER_ACL, clazz);
|
|
35
|
+
}
|
|
36
|
+
static getControllerAcl(clazz) {
|
|
37
|
+
return MetadataUtil.getMetaData(CONTROLLER_ACL, clazz);
|
|
38
|
+
}
|
|
39
|
+
static addControllerHosts(hosts, clazz) {
|
|
40
|
+
MetadataUtil.defineMetaData(CONTROLLER_HOST, hosts, clazz);
|
|
41
|
+
}
|
|
42
|
+
static getControllerHosts(clazz) {
|
|
43
|
+
return MetadataUtil.getMetaData(CONTROLLER_HOST, clazz);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlckluZm9VdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvQ29udHJvbGxlckluZm9VdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsMEJBQTBCLEVBQzFCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGVBQWUsR0FFaEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsdUJBQXVCLENBQUMsVUFBMEIsRUFBRSxLQUF3QjtRQUNqRixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQWlCLHNCQUFzQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsVUFBc0MsRUFBRSxLQUF3QjtRQUNoRyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQ25ELDBCQUEwQixFQUMxQixLQUFLLEVBQ0wsRUFBRSxDQUNILENBQUM7UUFDRixXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBd0I7UUFDdEQsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLEtBQXdCO1FBQ3pELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLGNBQWtDO1FBQ25GLFlBQVksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCLEVBQUUsY0FBc0I7UUFDdkUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBd0I7UUFDL0MsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCO1FBQy9DLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUF3QixFQUFFLEtBQXdCO1FBQ3hFLFlBQVksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdCO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUM5QyxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZSxFQUFFLEtBQXdCO1FBQ2pFLFlBQVksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQXdCO1FBQ2hELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CONTROLLER_META_DATA } from '@eggjs/tegg-types';
|
|
2
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
3
|
+
import { ControllerMetaBuilderFactory } from "../builder/index.js";
|
|
4
|
+
export class ControllerMetadataUtil {
|
|
5
|
+
static setControllerMetadata(clazz, metaData) {
|
|
6
|
+
MetadataUtil.defineMetaData(CONTROLLER_META_DATA, metaData, clazz);
|
|
7
|
+
}
|
|
8
|
+
static getControllerMetadata(clazz) {
|
|
9
|
+
let metadata = MetadataUtil.getOwnMetaData(CONTROLLER_META_DATA, clazz);
|
|
10
|
+
if (metadata) {
|
|
11
|
+
return metadata;
|
|
12
|
+
}
|
|
13
|
+
metadata = ControllerMetaBuilderFactory.build(clazz);
|
|
14
|
+
if (metadata) {
|
|
15
|
+
ControllerMetadataUtil.setControllerMetadata(clazz, metadata);
|
|
16
|
+
}
|
|
17
|
+
return metadata;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFkYXRhVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL0NvbnRyb2xsZXJNZXRhZGF0YVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXJELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQXdCLEVBQUUsUUFBNEI7UUFDakYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUF3QjtRQUNuRCxJQUFJLFFBQVEsR0FBbUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|