@eggjs/controller-decorator 3.51.2 → 4.0.0-beta.1
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.json → README.md} +1 -1
- package/package.json +26 -26
- package/src/builder/ControllerMetaBuilderFactory.js +41 -0
- package/src/builder/index.d.ts +1 -0
- package/src/builder/index.js +2 -0
- package/src/decorator/Acl.js +22 -0
- package/src/decorator/Context.js +11 -0
- package/src/decorator/Middleware.js +69 -0
- package/src/decorator/http/HTTPController.js +29 -0
- package/src/decorator/http/HTTPMethod.js +17 -0
- package/src/decorator/http/HTTPParam.js +75 -0
- package/src/decorator/http/Host.js +25 -0
- package/src/decorator/http/index.d.ts +4 -0
- package/src/decorator/http/index.js +5 -0
- package/src/decorator/index.d.ts +4 -0
- package/src/decorator/index.js +5 -0
- package/{dist/src → src}/impl/http/HTTPControllerMetaBuilder.d.ts +1 -1
- package/src/impl/http/HTTPControllerMetaBuilder.js +57 -0
- package/{dist/src → src}/impl/http/HTTPControllerMethodMetaBuilder.d.ts +1 -1
- package/src/impl/http/HTTPControllerMethodMetaBuilder.js +100 -0
- package/src/impl/http/index.d.ts +2 -0
- package/src/impl/http/index.js +3 -0
- package/src/impl/index.d.ts +1 -0
- package/src/impl/index.js +2 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +7 -0
- package/{dist/src → src}/model/HTTPControllerMeta.d.ts +1 -1
- package/src/model/HTTPControllerMeta.js +59 -0
- package/src/model/HTTPCookies.js +4 -0
- package/{dist/src → src}/model/HTTPMethodMeta.d.ts +1 -1
- package/src/model/HTTPMethodMeta.js +124 -0
- package/src/model/HTTPRequest.d.ts +7 -0
- package/src/model/HTTPRequest.js +3 -0
- package/src/model/HTTPResponse.d.ts +10 -0
- package/src/model/HTTPResponse.js +3 -0
- package/src/model/index.d.ts +5 -0
- package/src/model/index.js +6 -0
- package/{dist/src → src}/util/ControllerInfoUtil.d.ts +2 -2
- package/src/util/ControllerInfoUtil.js +46 -0
- package/{dist/src → src}/util/ControllerMetadataUtil.d.ts +1 -1
- package/src/util/ControllerMetadataUtil.js +20 -0
- package/{dist/src → src}/util/HTTPInfoUtil.d.ts +1 -1
- package/src/util/HTTPInfoUtil.js +64 -0
- package/src/util/HTTPPriorityUtil.js +42 -0
- package/{dist/src → src}/util/MethodInfoUtil.d.ts +1 -1
- package/src/util/MethodInfoUtil.js +72 -0
- package/src/util/index.d.ts +6 -0
- package/src/util/index.js +7 -0
- package/src/util/validator/ControllerValidator.js +15 -0
- package/src/util/validator/MethodValidator.js +31 -0
- package/src/util/validator/index.d.ts +2 -0
- package/src/util/validator/index.js +3 -0
- package/dist/index.d.ts +0 -14
- package/dist/index.js +0 -36
- package/dist/src/builder/ControllerMetaBuilderFactory.js +0 -49
- package/dist/src/decorator/Acl.js +0 -29
- package/dist/src/decorator/Context.js +0 -17
- package/dist/src/decorator/Middleware.js +0 -76
- package/dist/src/decorator/http/HTTPController.js +0 -36
- package/dist/src/decorator/http/HTTPMethod.js +0 -24
- package/dist/src/decorator/http/HTTPParam.js +0 -87
- package/dist/src/decorator/http/Host.js +0 -32
- package/dist/src/impl/http/HTTPControllerMetaBuilder.js +0 -66
- package/dist/src/impl/http/HTTPControllerMethodMetaBuilder.js +0 -108
- package/dist/src/model/HTTPControllerMeta.js +0 -57
- package/dist/src/model/HTTPCookies.js +0 -8
- package/dist/src/model/HTTPMethodMeta.js +0 -138
- package/dist/src/model/HTTPRequest.d.ts +0 -4
- package/dist/src/model/HTTPRequest.js +0 -13
- package/dist/src/model/HTTPResponse.d.ts +0 -4
- package/dist/src/model/HTTPResponse.js +0 -13
- package/dist/src/model/index.d.ts +0 -5
- package/dist/src/model/index.js +0 -22
- package/dist/src/util/ControllerInfoUtil.js +0 -49
- package/dist/src/util/ControllerMetadataUtil.js +0 -24
- package/dist/src/util/HTTPInfoUtil.js +0 -67
- package/dist/src/util/HTTPPriorityUtil.js +0 -46
- package/dist/src/util/MethodInfoUtil.js +0 -75
- package/dist/src/util/validator/ControllerValidator.js +0 -22
- package/dist/src/util/validator/MethodValidator.js +0 -38
- /package/{dist/src → src}/builder/ControllerMetaBuilderFactory.d.ts +0 -0
- /package/{dist/src → src}/decorator/Acl.d.ts +0 -0
- /package/{dist/src → src}/decorator/Context.d.ts +0 -0
- /package/{dist/src → src}/decorator/Middleware.d.ts +0 -0
- /package/{dist/src → src}/decorator/http/HTTPController.d.ts +0 -0
- /package/{dist/src → src}/decorator/http/HTTPMethod.d.ts +0 -0
- /package/{dist/src → src}/decorator/http/HTTPParam.d.ts +0 -0
- /package/{dist/src → src}/decorator/http/Host.d.ts +0 -0
- /package/{dist/src → src}/model/HTTPCookies.d.ts +0 -0
- /package/{dist/src → src}/util/HTTPPriorityUtil.d.ts +0 -0
- /package/{dist/src → src}/util/validator/ControllerValidator.d.ts +0 -0
- /package/{dist/src → src}/util/validator/MethodValidator.d.ts +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { ClassUtil } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { HTTPMethodMeta, 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'
|
|
29
|
+
? paramIndexList.length
|
|
30
|
+
: paramIndexList.length + 1;
|
|
31
|
+
const maxParamCount = Math.max(functionLength, hasAnnotationParamCount);
|
|
32
|
+
for (let i = 0; i < maxParamCount; ++i) {
|
|
33
|
+
// 上下文参数, 跳过检查
|
|
34
|
+
if (i === contextIndex) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const paramType = HTTPInfoUtil.getHTTPMethodParamType(i, this.clazz, this.methodName);
|
|
38
|
+
if (!paramType) {
|
|
39
|
+
const classDesc = ClassUtil.classDescription(this.clazz);
|
|
40
|
+
throw new Error(`${classDesc}:${this.methodName} param ${i} has no http param type, Please add @HTTPBody, @HTTPParam, @HTTPQuery, @HTTPQueries`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
buildParamType(httpPath) {
|
|
45
|
+
this.checkParamDecorators();
|
|
46
|
+
const paramTypeMap = new Map();
|
|
47
|
+
const paramIndexList = HTTPInfoUtil.getParamIndexList(this.clazz, this.methodName);
|
|
48
|
+
for (const paramIndex of paramIndexList) {
|
|
49
|
+
const paramType = HTTPInfoUtil.getHTTPMethodParamType(paramIndex, this.clazz, this.methodName);
|
|
50
|
+
const paramName = HTTPInfoUtil.getHTTPMethodParamName(paramIndex, this.clazz, this.methodName);
|
|
51
|
+
const paramMeta = ParamMetaUtil.createParam(paramType, paramName);
|
|
52
|
+
try {
|
|
53
|
+
paramMeta.validate(httpPath);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
const classDesc = ClassUtil.classDescription(this.clazz);
|
|
57
|
+
e.message = `build controller ${classDesc} method ${this.methodName} param ${paramName} failed: ${e.message}`;
|
|
58
|
+
throw e;
|
|
59
|
+
}
|
|
60
|
+
paramTypeMap.set(paramIndex, paramMeta);
|
|
61
|
+
}
|
|
62
|
+
return paramTypeMap;
|
|
63
|
+
}
|
|
64
|
+
getPriority() {
|
|
65
|
+
const priority = HTTPInfoUtil.getHTTPMethodPriority(this.clazz, this.methodName);
|
|
66
|
+
if (priority !== undefined) {
|
|
67
|
+
return priority;
|
|
68
|
+
}
|
|
69
|
+
const controllerPath = HTTPInfoUtil.getHTTPPath(this.clazz);
|
|
70
|
+
const methodPath = HTTPInfoUtil.getHTTPMethodPath(this.clazz, this.methodName);
|
|
71
|
+
const realPath = controllerPath ? path.posix.join(controllerPath, methodPath) : methodPath;
|
|
72
|
+
const defaultPriority = HTTPPriorityUtil.calcPathPriority(realPath);
|
|
73
|
+
if (defaultPriority > HTTPPriorityUtil.DEFAULT_PRIORITY) {
|
|
74
|
+
throw new Error(`path ${realPath} is too long, should set priority manually`);
|
|
75
|
+
}
|
|
76
|
+
return defaultPriority;
|
|
77
|
+
}
|
|
78
|
+
build() {
|
|
79
|
+
MethodValidator.validate(this.clazz, this.methodName);
|
|
80
|
+
const controllerType = MethodInfoUtil.getMethodControllerType(this.clazz, this.methodName);
|
|
81
|
+
if (!controllerType) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
const httpMethod = HTTPInfoUtil.getHTTPMethodMethod(this.clazz, this.methodName);
|
|
85
|
+
const parentPath = HTTPInfoUtil.getHTTPPath(this.clazz);
|
|
86
|
+
const httpPath = HTTPInfoUtil.getHTTPMethodPath(this.clazz, this.methodName);
|
|
87
|
+
const contextIndex = MethodInfoUtil.getMethodContextIndex(this.clazz, this.methodName);
|
|
88
|
+
const middlewares = MethodInfoUtil.getMethodMiddlewares(this.clazz, this.methodName);
|
|
89
|
+
const needAcl = MethodInfoUtil.hasMethodAcl(this.clazz, this.methodName);
|
|
90
|
+
const aclCode = MethodInfoUtil.getMethodAcl(this.clazz, this.methodName);
|
|
91
|
+
const hosts = MethodInfoUtil.getMethodHosts(this.clazz, this.methodName);
|
|
92
|
+
const realPath = parentPath
|
|
93
|
+
? path.posix.join(parentPath, httpPath)
|
|
94
|
+
: httpPath;
|
|
95
|
+
const paramTypeMap = this.buildParamType(realPath);
|
|
96
|
+
const priority = this.getPriority();
|
|
97
|
+
return new HTTPMethodMeta(this.methodName, httpPath, httpMethod, middlewares, contextIndex, paramTypeMap, priority, needAcl, aclCode, hosts);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRob2RNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhUVFBDb250cm9sbGVyTWV0aG9kTWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRHLE1BQU0sT0FBTywrQkFBK0I7SUFDekIsS0FBSyxDQUFvQjtJQUN6QixVQUFVLENBQVM7SUFFcEMsWUFBWSxLQUF3QixFQUFFLFVBQWtCO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLHVDQUF1QztJQUN2Qyx5REFBeUQ7SUFDekQsRUFBRTtJQUNGLGdCQUFnQjtJQUNoQixtREFBbUQ7SUFDbkQsd0RBQXdEO0lBQ3hELGdCQUFnQjtJQUNSLG9CQUFvQjtRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckQsV0FBVztRQUNYLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFFckMsVUFBVTtRQUNWLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMscUJBQXFC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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './HTTPControllerMetaBuilder.js';
|
|
2
|
+
export * from './HTTPControllerMethodMetaBuilder.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsc0NBQXNDLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './http/index.js';
|
package/src/index.d.ts
ADDED
package/src/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
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.js';
|
|
4
4
|
export declare class HTTPControllerMeta implements ControllerMetadata {
|
|
5
5
|
readonly protoName: EggPrototypeName;
|
|
6
6
|
readonly controllerName: string;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { ControllerType } from '@eggjs/tegg-types';
|
|
3
|
+
export class HTTPControllerMeta {
|
|
4
|
+
protoName;
|
|
5
|
+
controllerName;
|
|
6
|
+
className;
|
|
7
|
+
type = ControllerType.HTTP;
|
|
8
|
+
path;
|
|
9
|
+
middlewares;
|
|
10
|
+
methods;
|
|
11
|
+
needAcl;
|
|
12
|
+
aclCode;
|
|
13
|
+
hosts;
|
|
14
|
+
constructor(className, protoName, controllerName, path, middlewares, methods, needAcl, aclCode, hosts) {
|
|
15
|
+
this.protoName = protoName;
|
|
16
|
+
this.controllerName = controllerName;
|
|
17
|
+
this.className = className;
|
|
18
|
+
this.path = path;
|
|
19
|
+
this.middlewares = middlewares;
|
|
20
|
+
this.methods = methods;
|
|
21
|
+
this.needAcl = needAcl;
|
|
22
|
+
this.aclCode = aclCode;
|
|
23
|
+
this.hosts = hosts;
|
|
24
|
+
}
|
|
25
|
+
getMethodRealPath(method) {
|
|
26
|
+
if (this.path) {
|
|
27
|
+
return path.posix.join(this.path, method.path);
|
|
28
|
+
}
|
|
29
|
+
return method.path;
|
|
30
|
+
}
|
|
31
|
+
getMethodHosts(method) {
|
|
32
|
+
if (this.hosts) {
|
|
33
|
+
return this.hosts;
|
|
34
|
+
}
|
|
35
|
+
return method.hosts;
|
|
36
|
+
}
|
|
37
|
+
getMethodName(method) {
|
|
38
|
+
return `${method.method} ${this.controllerName}.${method.name}`;
|
|
39
|
+
}
|
|
40
|
+
getMethodMiddlewares(method) {
|
|
41
|
+
if (this.middlewares.length) {
|
|
42
|
+
return [
|
|
43
|
+
...this.middlewares,
|
|
44
|
+
...method.middlewares,
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
return [...method.middlewares];
|
|
48
|
+
}
|
|
49
|
+
hasMethodAcl(method) {
|
|
50
|
+
return method.needAcl || this.needAcl;
|
|
51
|
+
}
|
|
52
|
+
getMethodAcl(method) {
|
|
53
|
+
if (method.aclCode) {
|
|
54
|
+
return method.aclCode;
|
|
55
|
+
}
|
|
56
|
+
return this.aclCode;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvbnRyb2xsZXJNZXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSFRUUENvbnRyb2xsZXJNZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixTQUFTLENBQW1CO0lBQzVCLGNBQWMsQ0FBUztJQUN2QixTQUFTLENBQVM7SUFDWCxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztJQUMzQixJQUFJLENBQVU7SUFDZCxXQUFXLENBQTRCO0lBQ3ZDLE9BQU8sQ0FBNEI7SUFDbkMsT0FBTyxDQUFVO0lBQ2pCLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQVk7SUFFakMsWUFDRSxTQUFpQixFQUNqQixTQUEyQixFQUMzQixjQUFzQixFQUN0QixJQUF3QixFQUN4QixXQUE2QixFQUM3QixPQUF5QixFQUN6QixPQUFnQixFQUNoQixPQUEyQixFQUMzQixLQUEyQjtRQUUzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBc0I7UUFDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFzQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBc0I7UUFDbEMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQXNCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixPQUFPO2dCQUNMLEdBQUcsSUFBSSxDQUFDLFdBQVc7Z0JBQ25CLEdBQUcsTUFBTSxDQUFDLFdBQVc7YUFDdEIsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLENBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFzQjtRQUNqQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXNCO1FBQ2pDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Cookies } from '@eggjs/cookies';
|
|
2
|
+
export class HTTPCookies extends Cookies {
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUENvb2tpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJIVFRQQ29va2llcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekMsTUFBTSxPQUFPLFdBQVksU0FBUSxPQUFPO0NBQUcifQ==
|
|
@@ -2,7 +2,7 @@ import { HTTPParamType } from '@eggjs/tegg-types';
|
|
|
2
2
|
import type { HTTPMethodEnum, MethodMeta, MiddlewareFunc } from '@eggjs/tegg-types';
|
|
3
3
|
export declare abstract class ParamMeta {
|
|
4
4
|
type: HTTPParamType;
|
|
5
|
-
abstract validate(httpPath: string):
|
|
5
|
+
abstract validate(httpPath: string): void;
|
|
6
6
|
}
|
|
7
7
|
export declare class RequestParamMeta extends ParamMeta {
|
|
8
8
|
type: HTTPParamType;
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUE1ldGhvZE1ldGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJIVFRQTWV0aG9kTWV0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxZQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE1BQU0sT0FBZ0IsU0FBUztJQUM3QixJQUFJLENBQWdCO0NBR3JCO0FBRUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFFN0IsUUFBUTtRQUNOLE9BQU87SUFDVCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFDMUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFFMUIsUUFBUTtRQUNOLE9BQU87SUFDVCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQUM3QyxJQUFJLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUU3QixRQUFRO1FBQ04sT0FBTztJQUNULENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsU0FBUztJQUMzQyxJQUFJLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUMzQixJQUFJLENBQVM7SUFFYixZQUFZLElBQVk7UUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU87SUFDVCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQUM3QyxJQUFJLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUM3QixJQUFJLENBQVM7SUFFYixZQUFZLElBQVk7UUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJ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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class HTTPRequest extends (Request || Object) {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUFJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJIVFRQUmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBWSxTQUFRLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQztDQUFHIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const HTTPResponse_base: {
|
|
2
|
+
new (body?: BodyInit | null, init?: ResponseInit): Response;
|
|
3
|
+
prototype: Response;
|
|
4
|
+
error(): Response;
|
|
5
|
+
json(data: any, init?: ResponseInit): Response;
|
|
6
|
+
redirect(url: string | URL, status?: number): Response;
|
|
7
|
+
};
|
|
8
|
+
export declare class HTTPResponse extends HTTPResponse_base {
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class HTTPResponse extends (Response || Object) {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUFJlc3BvbnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSFRUUFJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFhLFNBQVEsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDO0NBQUcifQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './HTTPControllerMeta.js';
|
|
2
|
+
export * from './HTTPCookies.js';
|
|
3
|
+
export * from './HTTPMethodMeta.js';
|
|
4
|
+
export * from './HTTPRequest.js';
|
|
5
|
+
export * from './HTTPResponse.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUMifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IAdvice } from '@eggjs/tegg-types';
|
|
2
2
|
import type { ControllerTypeLike, EggProtoImplClass, MiddlewareFunc } from '@eggjs/tegg-types';
|
|
3
|
-
export
|
|
3
|
+
export declare class ControllerInfoUtil {
|
|
4
4
|
static addControllerMiddleware(middleware: MiddlewareFunc, clazz: EggProtoImplClass): void;
|
|
5
5
|
static addControllerAopMiddleware(middleware: EggProtoImplClass<IAdvice>, clazz: EggProtoImplClass): void;
|
|
6
6
|
static getControllerMiddlewares(clazz: EggProtoImplClass): MiddlewareFunc[];
|
|
@@ -8,7 +8,7 @@ export default class ControllerInfoUtil {
|
|
|
8
8
|
static setControllerType(clazz: EggProtoImplClass, controllerType: ControllerTypeLike): void;
|
|
9
9
|
static setControllerName(clazz: EggProtoImplClass, controllerName: string): void;
|
|
10
10
|
static getControllerName(clazz: EggProtoImplClass): string | undefined;
|
|
11
|
-
static getControllerType(clazz:
|
|
11
|
+
static getControllerType(clazz: EggProtoImplClass): ControllerTypeLike | undefined;
|
|
12
12
|
static setControllerAcl(code: string | undefined, clazz: EggProtoImplClass): void;
|
|
13
13
|
static hasControllerAcl(clazz: EggProtoImplClass): boolean;
|
|
14
14
|
static getControllerAcl(clazz: EggProtoImplClass): string | undefined;
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlckluZm9VdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQ29udHJvbGxlckluZm9VdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQUUsMEJBQTBCLEVBQzFDLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGVBQWUsR0FDaEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsdUJBQXVCLENBQUMsVUFBMEIsRUFBRSxLQUF3QjtRQUNqRixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQWlCLHNCQUFzQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsMEJBQTBCLENBQUMsVUFBc0MsRUFBRSxLQUF3QjtRQUNoRyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQTZCLDBCQUEwQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6SCxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBd0I7UUFDdEQsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLDJCQUEyQixDQUFDLEtBQXdCO1FBQ3pELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLGNBQWtDO1FBQ25GLFlBQVksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCLEVBQUUsY0FBc0I7UUFDdkUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBd0I7UUFDL0MsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQXdCO1FBQy9DLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUF3QixFQUFFLEtBQXdCO1FBQ3hFLFlBQVksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdCO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUM5QyxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZSxFQUFFLEtBQXdCO1FBQ2pFLFlBQVksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQXdCO1FBQ2hELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ControllerMetadata, EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
2
|
export declare class ControllerMetadataUtil {
|
|
3
3
|
static setControllerMetadata(clazz: EggProtoImplClass, metaData: ControllerMetadata): void;
|
|
4
|
-
static getControllerMetadata(clazz:
|
|
4
|
+
static getControllerMetadata(clazz: EggProtoImplClass): ControllerMetadata | undefined;
|
|
5
5
|
}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbGxlck1ldGFkYXRhVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNvbnRyb2xsZXJNZXRhZGF0YVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEtBQXdCLEVBQUUsUUFBNEI7UUFDakYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUF3QjtRQUNuRCxJQUFJLFFBQVEsR0FBbUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELFFBQVEsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EggProtoImplClass, HTTPMethodEnum, HTTPParamType } from '@eggjs/tegg-types';
|
|
2
|
-
export
|
|
2
|
+
export declare class HTTPInfoUtil {
|
|
3
3
|
static setHTTPPath(path: string, clazz: EggProtoImplClass): void;
|
|
4
4
|
static getHTTPPath(clazz: EggProtoImplClass): string | undefined;
|
|
5
5
|
static setHTTPMethodPath(path: string, clazz: EggProtoImplClass, methodName: string): void;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
+
import { CONTROLLER_HTTP_PATH, CONTROLLER_METHOD_METHOD_MAP, CONTROLLER_METHOD_PARAM_NAME_MAP, CONTROLLER_METHOD_PARAM_TYPE_MAP, CONTROLLER_METHOD_PATH_MAP, CONTROLLER_METHOD_PRIORITY, } from '@eggjs/tegg-types';
|
|
3
|
+
import { MapUtil } from '@eggjs/tegg-common-util';
|
|
4
|
+
export class HTTPInfoUtil {
|
|
5
|
+
static setHTTPPath(path, clazz) {
|
|
6
|
+
MetadataUtil.defineMetaData(CONTROLLER_HTTP_PATH, path, clazz);
|
|
7
|
+
}
|
|
8
|
+
static getHTTPPath(clazz) {
|
|
9
|
+
return MetadataUtil.getMetaData(CONTROLLER_HTTP_PATH, clazz);
|
|
10
|
+
}
|
|
11
|
+
static setHTTPMethodPath(path, clazz, methodName) {
|
|
12
|
+
const methodPathMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PATH_MAP, clazz, new Map());
|
|
13
|
+
methodPathMap.set(methodName, path);
|
|
14
|
+
}
|
|
15
|
+
static getHTTPMethodPath(clazz, methodName) {
|
|
16
|
+
const methodPathMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_PATH_MAP, clazz);
|
|
17
|
+
return methodPathMap?.get(methodName);
|
|
18
|
+
}
|
|
19
|
+
static setHTTPMethodMethod(method, clazz, methodName) {
|
|
20
|
+
const methodMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_METHOD_MAP, clazz, new Map());
|
|
21
|
+
methodMap.set(methodName, method);
|
|
22
|
+
}
|
|
23
|
+
static getHTTPMethodMethod(clazz, methodName) {
|
|
24
|
+
const methodMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_METHOD_MAP, clazz);
|
|
25
|
+
return methodMap?.get(methodName);
|
|
26
|
+
}
|
|
27
|
+
static setHTTPMethodParamType(paramType, parameterIndex, clazz, methodName) {
|
|
28
|
+
const methodParamMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PARAM_TYPE_MAP, clazz, new Map());
|
|
29
|
+
const paramMap = MapUtil.getOrStore(methodParamMap, methodName, new Map());
|
|
30
|
+
paramMap.set(parameterIndex, paramType);
|
|
31
|
+
}
|
|
32
|
+
static getParamIndexList(clazz, methodName) {
|
|
33
|
+
const methodParamMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_PARAM_TYPE_MAP, clazz);
|
|
34
|
+
const paramMap = methodParamMap?.get(methodName);
|
|
35
|
+
if (!paramMap) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
return Array.from(paramMap.keys());
|
|
39
|
+
}
|
|
40
|
+
static getHTTPMethodParamType(parameterIndex, clazz, methodName) {
|
|
41
|
+
const methodParamMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_PARAM_TYPE_MAP, clazz);
|
|
42
|
+
const paramMap = methodParamMap?.get(methodName);
|
|
43
|
+
return paramMap?.get(parameterIndex);
|
|
44
|
+
}
|
|
45
|
+
static setHTTPMethodParamName(paramName, parameterIndex, clazz, methodName) {
|
|
46
|
+
const methodParamNameMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PARAM_NAME_MAP, clazz, new Map());
|
|
47
|
+
const paramMap = MapUtil.getOrStore(methodParamNameMap, methodName, new Map());
|
|
48
|
+
paramMap.set(parameterIndex, paramName);
|
|
49
|
+
}
|
|
50
|
+
static getHTTPMethodParamName(parameterIndex, clazz, methodName) {
|
|
51
|
+
const methodParamNameMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_PARAM_NAME_MAP, clazz);
|
|
52
|
+
const paramMap = methodParamNameMap?.get(methodName);
|
|
53
|
+
return paramMap?.get(parameterIndex);
|
|
54
|
+
}
|
|
55
|
+
static getHTTPMethodPriority(clazz, methodName) {
|
|
56
|
+
const methodPriorityMap = MetadataUtil.getMetaData(CONTROLLER_METHOD_PRIORITY, clazz);
|
|
57
|
+
return methodPriorityMap?.get(methodName);
|
|
58
|
+
}
|
|
59
|
+
static setHTTPMethodPriority(priority, clazz, methodName) {
|
|
60
|
+
const methodPriorityMap = MetadataUtil.initOwnMapMetaData(CONTROLLER_METHOD_PRIORITY, clazz, new Map());
|
|
61
|
+
methodPriorityMap.set(methodName, priority);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUEluZm9VdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSFRUUEluZm9VdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDRCQUE0QixFQUM1QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLDBCQUEwQixFQUMxQiwwQkFBMEIsR0FDM0IsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRbEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBd0I7UUFDdkQsWUFBWSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBd0I7UUFDekMsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBWSxFQUFFLEtBQXdCLEVBQUUsVUFBa0I7UUFDakYsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUF3QixFQUFFLFVBQWtCO1FBQ25FLE1BQU0sYUFBYSxHQUFrQyxZQUFZLENBQUMsV0FBVyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pILE9BQU8sYUFBYSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMs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
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { parse } from 'path-to-regexp';
|
|
2
|
+
export class HTTPPriorityUtil {
|
|
3
|
+
static DEFAULT_PRIORITY = 100000;
|
|
4
|
+
static TOKEN_PRIORITY = 1000;
|
|
5
|
+
/**
|
|
6
|
+
* | Path | RegExp index | priority |
|
|
7
|
+
* | --- | --- | --- |
|
|
8
|
+
* | /* | [0] | 0 |
|
|
9
|
+
* | /hello/:name | [1] | 1000 |
|
|
10
|
+
* | /hello/world/message/:message | [3] | 3000 |
|
|
11
|
+
* | /hello/:name/message/:message | [1, 3] | 4000 |
|
|
12
|
+
* | /hello/world | [] | 100000/Infinity? |
|
|
13
|
+
*
|
|
14
|
+
* priority = hasRegExp
|
|
15
|
+
* : regexpIndex.reduce((p,c) => p + c * 1000, 0)
|
|
16
|
+
* : 100000;
|
|
17
|
+
* @param {string} path -
|
|
18
|
+
*/
|
|
19
|
+
static calcPathPriority(path) {
|
|
20
|
+
const tokens = parse(path);
|
|
21
|
+
let priority = 0;
|
|
22
|
+
let hasRegExp = false;
|
|
23
|
+
let index = 0;
|
|
24
|
+
let token;
|
|
25
|
+
while ((token = tokens.shift())) {
|
|
26
|
+
if (typeof token === 'string') {
|
|
27
|
+
// /view/users/*
|
|
28
|
+
// token is [ '/view/users', '*' ]
|
|
29
|
+
index += (token.split('/').length - 1);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
hasRegExp = true;
|
|
33
|
+
priority += index++ * this.TOKEN_PRIORITY;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (!hasRegExp) {
|
|
37
|
+
return this.DEFAULT_PRIORITY;
|
|
38
|
+
}
|
|
39
|
+
return priority;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUFByaW9yaXR5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhUVFBQcmlvcml0eVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFVLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztJQUNsQyxNQUFNLENBQVUsY0FBYyxHQUFHLElBQUksQ0FBQztJQUU5Qzs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQVk7UUFDbEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxLQUFLLENBQUM7UUFDVixPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsZ0JBQWdCO2dCQUNoQixrQ0FBa0M7Z0JBQ2xDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixRQUFRLElBQUksS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IAdvice } from '@eggjs/tegg-types';
|
|
2
2
|
import type { ControllerTypeLike, EggProtoImplClass, MiddlewareFunc } from '@eggjs/tegg-types';
|
|
3
|
-
export
|
|
3
|
+
export declare class MethodInfoUtil {
|
|
4
4
|
static setMethodControllerType(clazz: EggProtoImplClass, methodName: string, controllerType: ControllerTypeLike): void;
|
|
5
5
|
static getMethodControllerType(clazz: EggProtoImplClass, methodName: string): ControllerTypeLike | undefined;
|
|
6
6
|
static setMethodContextIndexInArgs(index: number, clazz: EggProtoImplClass, methodName: string): void;
|