@hestjs/core 0.1.0
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 +387 -0
- package/dist/application/application-factory.d.ts +15 -0
- package/dist/application/application-factory.d.ts.map +1 -0
- package/dist/application/application-factory.js +77 -0
- package/dist/application/application-factory.js.map +1 -0
- package/dist/application/hest-application.d.ts +40 -0
- package/dist/application/hest-application.d.ts.map +1 -0
- package/dist/application/hest-application.js +50 -0
- package/dist/application/hest-application.js.map +1 -0
- package/dist/application/index.d.ts +3 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +3 -0
- package/dist/application/index.js.map +1 -0
- package/dist/container/container.d.ts +48 -0
- package/dist/container/container.d.ts.map +1 -0
- package/dist/container/container.js +77 -0
- package/dist/container/container.js.map +1 -0
- package/dist/container/index.d.ts +3 -0
- package/dist/container/index.d.ts.map +1 -0
- package/dist/container/index.js +3 -0
- package/dist/container/index.js.map +1 -0
- package/dist/container/injection-token.d.ts +14 -0
- package/dist/container/injection-token.d.ts.map +1 -0
- package/dist/container/injection-token.js +10 -0
- package/dist/container/injection-token.js.map +1 -0
- package/dist/decorators/controller.d.ts +14 -0
- package/dist/decorators/controller.d.ts.map +1 -0
- package/dist/decorators/controller.js +23 -0
- package/dist/decorators/controller.js.map +1 -0
- package/dist/decorators/index.d.ts +5 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +5 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/injectable.d.ts +13 -0
- package/dist/decorators/injectable.d.ts.map +1 -0
- package/dist/decorators/injectable.js +20 -0
- package/dist/decorators/injectable.js.map +1 -0
- package/dist/decorators/module.d.ts +14 -0
- package/dist/decorators/module.d.ts.map +1 -0
- package/dist/decorators/module.js +16 -0
- package/dist/decorators/module.js.map +1 -0
- package/dist/decorators/route.d.ts +56 -0
- package/dist/decorators/route.d.ts.map +1 -0
- package/dist/decorators/route.js +94 -0
- package/dist/decorators/route.js.map +1 -0
- package/dist/exceptions/base-exception.d.ts +20 -0
- package/dist/exceptions/base-exception.d.ts.map +1 -0
- package/dist/exceptions/base-exception.js +38 -0
- package/dist/exceptions/base-exception.js.map +1 -0
- package/dist/exceptions/exception-filter.d.ts +39 -0
- package/dist/exceptions/exception-filter.d.ts.map +1 -0
- package/dist/exceptions/exception-filter.js +63 -0
- package/dist/exceptions/exception-filter.js.map +1 -0
- package/dist/exceptions/http-exception.d.ts +40 -0
- package/dist/exceptions/http-exception.d.ts.map +1 -0
- package/dist/exceptions/http-exception.js +77 -0
- package/dist/exceptions/http-exception.js.map +1 -0
- package/dist/exceptions/index.d.ts +4 -0
- package/dist/exceptions/index.d.ts.map +1 -0
- package/dist/exceptions/index.js +4 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/index.d.ts +2 -0
- package/dist/interceptors/index.d.ts.map +1 -0
- package/dist/interceptors/index.js +2 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/interceptor.d.ts +82 -0
- package/dist/interceptors/interceptor.d.ts.map +1 -0
- package/dist/interceptors/interceptor.js +114 -0
- package/dist/interceptors/interceptor.js.map +1 -0
- package/dist/interfaces/application.d.ts +24 -0
- package/dist/interfaces/application.d.ts.map +1 -0
- package/dist/interfaces/application.js +2 -0
- package/dist/interfaces/application.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +4 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/metadata.d.ts +49 -0
- package/dist/interfaces/metadata.d.ts.map +1 -0
- package/dist/interfaces/metadata.js +2 -0
- package/dist/interfaces/metadata.js.map +1 -0
- package/dist/interfaces/router.d.ts +48 -0
- package/dist/interfaces/router.d.ts.map +1 -0
- package/dist/interfaces/router.js +2 -0
- package/dist/interfaces/router.js.map +1 -0
- package/dist/metadata/index.d.ts +3 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +3 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/metadata-scanner.d.ts +59 -0
- package/dist/metadata/metadata-scanner.d.ts.map +1 -0
- package/dist/metadata/metadata-scanner.js +75 -0
- package/dist/metadata/metadata-scanner.js.map +1 -0
- package/dist/metadata/reflector.d.ts +50 -0
- package/dist/metadata/reflector.d.ts.map +1 -0
- package/dist/metadata/reflector.js +57 -0
- package/dist/metadata/reflector.js.map +1 -0
- package/dist/middlewares/index.d.ts +2 -0
- package/dist/middlewares/index.d.ts.map +1 -0
- package/dist/middlewares/index.js +2 -0
- package/dist/middlewares/index.js.map +1 -0
- package/dist/middlewares/middleware.d.ts +39 -0
- package/dist/middlewares/middleware.d.ts.map +1 -0
- package/dist/middlewares/middleware.js +71 -0
- package/dist/middlewares/middleware.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +3 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/route-metadata.d.ts +41 -0
- package/dist/router/route-metadata.d.ts.map +1 -0
- package/dist/router/route-metadata.js +43 -0
- package/dist/router/route-metadata.js.map +1 -0
- package/dist/router/router-explorer.d.ts +52 -0
- package/dist/router/router-explorer.d.ts.map +1 -0
- package/dist/router/router-explorer.js +259 -0
- package/dist/router/router-explorer.js.map +1 -0
- package/dist/utils/constants.d.ts +33 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +40 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/helpers.d.ts +27 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +54 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +64 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
import 'reflect-metadata';
|
2
|
+
import type { ControllerMetadata, RouteMetadata, ModuleMetadata, ParameterMetadata, InjectableMetadata } from '../interfaces/metadata';
|
3
|
+
declare global {
|
4
|
+
namespace Reflect {
|
5
|
+
function getMetadata(key: any, target: any, propertyKey?: string | symbol): any;
|
6
|
+
function hasMetadata(key: any, target: any, propertyKey?: string | symbol): boolean;
|
7
|
+
function getMetadataKeys(target: any, propertyKey?: string | symbol): any[];
|
8
|
+
}
|
9
|
+
}
|
10
|
+
/**
|
11
|
+
* 元数据扫描器
|
12
|
+
*/
|
13
|
+
export declare class MetadataScanner {
|
14
|
+
/**
|
15
|
+
* 扫描控制器元数据
|
16
|
+
*/
|
17
|
+
static scanController(target: any): ControllerMetadata | undefined;
|
18
|
+
/**
|
19
|
+
* 扫描路由元数据
|
20
|
+
*/
|
21
|
+
static scanRoutes(target: any): RouteMetadata[];
|
22
|
+
/**
|
23
|
+
* 扫描模块元数据
|
24
|
+
*/
|
25
|
+
static scanModule(target: any): ModuleMetadata | undefined;
|
26
|
+
/**
|
27
|
+
* 扫描可注入元数据
|
28
|
+
*/
|
29
|
+
static scanInjectable(target: any): InjectableMetadata | undefined;
|
30
|
+
/**
|
31
|
+
* 扫描方法参数元数据
|
32
|
+
*/
|
33
|
+
static scanParameters(target: any, methodName: string): ParameterMetadata[];
|
34
|
+
/**
|
35
|
+
* 获取构造函数参数类型
|
36
|
+
*/
|
37
|
+
static getConstructorParameters(target: any): any[];
|
38
|
+
/**
|
39
|
+
* 获取方法参数类型
|
40
|
+
*/
|
41
|
+
static getMethodParameters(target: any, methodName: string): any[];
|
42
|
+
/**
|
43
|
+
* 检查是否为控制器
|
44
|
+
*/
|
45
|
+
static isController(target: any): boolean;
|
46
|
+
/**
|
47
|
+
* 检查是否为模块
|
48
|
+
*/
|
49
|
+
static isModule(target: any): boolean;
|
50
|
+
/**
|
51
|
+
* 检查是否可注入
|
52
|
+
*/
|
53
|
+
static isInjectable(target: any): boolean;
|
54
|
+
/**
|
55
|
+
* 获取所有元数据键
|
56
|
+
*/
|
57
|
+
static getAllMetadataKeys(target: any, propertyKey?: string | symbol): any[];
|
58
|
+
}
|
59
|
+
//# sourceMappingURL=metadata-scanner.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metadata-scanner.d.ts","sourceRoot":"","sources":["../../src/metadata/metadata-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;QAChF,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACpF,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;KAC7E;CACF;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,kBAAkB,GAAG,SAAS;IAIlE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,EAAE;IAI/C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,cAAc,GAAG,SAAS;IAI1D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,kBAAkB,GAAG,SAAS;IAIlE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAK3E;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE;IAInD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE;IAIlE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;IAIzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;IAIrC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;IAIzC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE;CAG7E"}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
import 'reflect-metadata';
|
2
|
+
import { METADATA_KEYS } from '../utils/constants';
|
3
|
+
/**
|
4
|
+
* 元数据扫描器
|
5
|
+
*/
|
6
|
+
export class MetadataScanner {
|
7
|
+
/**
|
8
|
+
* 扫描控制器元数据
|
9
|
+
*/
|
10
|
+
static scanController(target) {
|
11
|
+
return Reflect.getMetadata(METADATA_KEYS.CONTROLLER, target);
|
12
|
+
}
|
13
|
+
/**
|
14
|
+
* 扫描路由元数据
|
15
|
+
*/
|
16
|
+
static scanRoutes(target) {
|
17
|
+
return Reflect.getMetadata(METADATA_KEYS.ROUTE, target) || [];
|
18
|
+
}
|
19
|
+
/**
|
20
|
+
* 扫描模块元数据
|
21
|
+
*/
|
22
|
+
static scanModule(target) {
|
23
|
+
return Reflect.getMetadata(METADATA_KEYS.MODULE, target);
|
24
|
+
}
|
25
|
+
/**
|
26
|
+
* 扫描可注入元数据
|
27
|
+
*/
|
28
|
+
static scanInjectable(target) {
|
29
|
+
return Reflect.getMetadata(METADATA_KEYS.INJECTABLE, target);
|
30
|
+
}
|
31
|
+
/**
|
32
|
+
* 扫描方法参数元数据
|
33
|
+
*/
|
34
|
+
static scanParameters(target, methodName) {
|
35
|
+
const paramKey = `${METADATA_KEYS.PARAM.toString()}_${methodName}`;
|
36
|
+
return Reflect.getMetadata(paramKey, target) || [];
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* 获取构造函数参数类型
|
40
|
+
*/
|
41
|
+
static getConstructorParameters(target) {
|
42
|
+
return Reflect.getMetadata('design:paramtypes', target) || [];
|
43
|
+
}
|
44
|
+
/**
|
45
|
+
* 获取方法参数类型
|
46
|
+
*/
|
47
|
+
static getMethodParameters(target, methodName) {
|
48
|
+
return Reflect.getMetadata('design:paramtypes', target.prototype, methodName) || [];
|
49
|
+
}
|
50
|
+
/**
|
51
|
+
* 检查是否为控制器
|
52
|
+
*/
|
53
|
+
static isController(target) {
|
54
|
+
return Reflect.hasMetadata(METADATA_KEYS.CONTROLLER, target);
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* 检查是否为模块
|
58
|
+
*/
|
59
|
+
static isModule(target) {
|
60
|
+
return Reflect.hasMetadata(METADATA_KEYS.MODULE, target);
|
61
|
+
}
|
62
|
+
/**
|
63
|
+
* 检查是否可注入
|
64
|
+
*/
|
65
|
+
static isInjectable(target) {
|
66
|
+
return Reflect.hasMetadata(METADATA_KEYS.INJECTABLE, target);
|
67
|
+
}
|
68
|
+
/**
|
69
|
+
* 获取所有元数据键
|
70
|
+
*/
|
71
|
+
static getAllMetadataKeys(target, propertyKey) {
|
72
|
+
return Reflect.getMetadataKeys(target, propertyKey);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
//# sourceMappingURL=metadata-scanner.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"metadata-scanner.js","sourceRoot":"","sources":["../../src/metadata/metadata-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAkBnD;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAW;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAW;QAC3B,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAW;QAC3B,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAW;QAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,MAAW,EAAE,UAAkB;QACnD,MAAM,QAAQ,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAW;QACzC,OAAO,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAW,EAAE,UAAkB;QACxD,OAAO,OAAO,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAW;QAC7B,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAW;QACzB,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAW;QAC7B,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAW,EAAE,WAA6B;QAClE,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;CACF"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import 'reflect-metadata';
|
2
|
+
declare global {
|
3
|
+
namespace Reflect {
|
4
|
+
function getMetadata(key: any, target: any, propertyKey?: string | symbol): any;
|
5
|
+
function defineMetadata(key: any, value: any, target: any, propertyKey?: string | symbol): void;
|
6
|
+
function hasMetadata(key: any, target: any, propertyKey?: string | symbol): boolean;
|
7
|
+
function deleteMetadata(key: any, target: any, propertyKey?: string | symbol): boolean;
|
8
|
+
function getOwnMetadata(key: any, target: any, propertyKey?: string | symbol): any;
|
9
|
+
function getMetadataKeys(target: any, propertyKey?: string | symbol): any[];
|
10
|
+
function getOwnMetadataKeys(target: any, propertyKey?: string | symbol): any[];
|
11
|
+
}
|
12
|
+
}
|
13
|
+
/**
|
14
|
+
* 反射工具类
|
15
|
+
*/
|
16
|
+
export declare class Reflector {
|
17
|
+
/**
|
18
|
+
* 获取元数据
|
19
|
+
*/
|
20
|
+
static get<T = any>(key: any, target: any, propertyKey?: string | symbol): T | undefined;
|
21
|
+
/**
|
22
|
+
* 设置元数据
|
23
|
+
*/
|
24
|
+
static set(key: any, value: any, target: any, propertyKey?: string | symbol): void;
|
25
|
+
/**
|
26
|
+
* 检查是否存在元数据
|
27
|
+
*/
|
28
|
+
static has(key: any, target: any, propertyKey?: string | symbol): boolean;
|
29
|
+
/**
|
30
|
+
* 删除元数据
|
31
|
+
*/
|
32
|
+
static delete(key: any, target: any, propertyKey?: string | symbol): boolean;
|
33
|
+
/**
|
34
|
+
* 获取自身元数据
|
35
|
+
*/
|
36
|
+
static getOwn<T = any>(key: any, target: any, propertyKey?: string | symbol): T | undefined;
|
37
|
+
/**
|
38
|
+
* 获取所有元数据键
|
39
|
+
*/
|
40
|
+
static getKeys(target: any, propertyKey?: string | symbol): any[];
|
41
|
+
/**
|
42
|
+
* 获取自身所有元数据键
|
43
|
+
*/
|
44
|
+
static getOwnKeys(target: any, propertyKey?: string | symbol): any[];
|
45
|
+
/**
|
46
|
+
* 合并多个目标的元数据
|
47
|
+
*/
|
48
|
+
static getAllMetadata<T = any>(key: any, targets: any[]): T[];
|
49
|
+
}
|
50
|
+
//# sourceMappingURL=reflector.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"reflector.d.ts","sourceRoot":"","sources":["../../src/metadata/reflector.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;QAChF,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAChG,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACpF,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QACvF,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;QACnF,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;QAC5E,SAAS,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;KAChF;CACF;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAIxF;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIlF;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAIzE;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAI5E;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAI3F;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE;IAIjE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE;IAIpE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;CAK9D"}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import 'reflect-metadata';
|
2
|
+
/**
|
3
|
+
* 反射工具类
|
4
|
+
*/
|
5
|
+
export class Reflector {
|
6
|
+
/**
|
7
|
+
* 获取元数据
|
8
|
+
*/
|
9
|
+
static get(key, target, propertyKey) {
|
10
|
+
return Reflect.getMetadata(key, target, propertyKey);
|
11
|
+
}
|
12
|
+
/**
|
13
|
+
* 设置元数据
|
14
|
+
*/
|
15
|
+
static set(key, value, target, propertyKey) {
|
16
|
+
Reflect.defineMetadata(key, value, target, propertyKey);
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* 检查是否存在元数据
|
20
|
+
*/
|
21
|
+
static has(key, target, propertyKey) {
|
22
|
+
return Reflect.hasMetadata(key, target, propertyKey);
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* 删除元数据
|
26
|
+
*/
|
27
|
+
static delete(key, target, propertyKey) {
|
28
|
+
return Reflect.deleteMetadata(key, target, propertyKey);
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* 获取自身元数据
|
32
|
+
*/
|
33
|
+
static getOwn(key, target, propertyKey) {
|
34
|
+
return Reflect.getOwnMetadata(key, target, propertyKey);
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* 获取所有元数据键
|
38
|
+
*/
|
39
|
+
static getKeys(target, propertyKey) {
|
40
|
+
return Reflect.getMetadataKeys(target, propertyKey);
|
41
|
+
}
|
42
|
+
/**
|
43
|
+
* 获取自身所有元数据键
|
44
|
+
*/
|
45
|
+
static getOwnKeys(target, propertyKey) {
|
46
|
+
return Reflect.getOwnMetadataKeys(target, propertyKey);
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* 合并多个目标的元数据
|
50
|
+
*/
|
51
|
+
static getAllMetadata(key, targets) {
|
52
|
+
return targets
|
53
|
+
.map(target => this.get(key, target))
|
54
|
+
.filter((metadata) => metadata !== undefined);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
//# sourceMappingURL=reflector.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"reflector.js","sourceRoot":"","sources":["../../src/metadata/reflector.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAe1B;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB;;OAEG;IACH,MAAM,CAAC,GAAG,CAAU,GAAQ,EAAE,MAAW,EAAE,WAA6B;QACtE,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAQ,EAAE,KAAU,EAAE,MAAW,EAAE,WAA6B;QACzE,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAQ,EAAE,MAAW,EAAE,WAA6B;QAC7D,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,GAAQ,EAAE,MAAW,EAAE,WAA6B;QAChE,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAU,GAAQ,EAAE,MAAW,EAAE,WAA6B;QACzE,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAW,EAAE,WAA6B;QACvD,OAAO,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAW,EAAE,WAA6B;QAC1D,OAAO,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAU,GAAQ,EAAE,OAAc;QACrD,OAAO,OAAO;aACX,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC;aACvC,MAAM,CAAC,CAAC,QAAQ,EAAiB,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACjE,CAAC;CACF"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import "reflect-metadata";
|
2
|
+
declare global {
|
3
|
+
namespace Reflect {
|
4
|
+
function defineMetadata(key: any, value: any, target: any, propertyKey?: string | symbol): void;
|
5
|
+
function getMetadata(key: any, target: any, propertyKey?: string | symbol): any;
|
6
|
+
}
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* 中间件函数类型
|
10
|
+
*/
|
11
|
+
export type MiddlewareFunction = (req: any, res: any, next: () => void) => void | Promise<void>;
|
12
|
+
/**
|
13
|
+
* 中间件接口
|
14
|
+
*/
|
15
|
+
export interface MiddlewareConsumer {
|
16
|
+
apply(...middleware: (MiddlewareFunction | any)[]): MiddlewareConsumer;
|
17
|
+
forRoutes(...routes: (string | any)[]): MiddlewareConsumer;
|
18
|
+
exclude(...routes: (string | any)[]): MiddlewareConsumer;
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* 中间件装饰器
|
22
|
+
* @param path 中间件应用的路径
|
23
|
+
*/
|
24
|
+
export declare function Middleware(path?: string): (target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => PropertyDescriptor | undefined;
|
25
|
+
/**
|
26
|
+
* 内置 CORS 中间件
|
27
|
+
*/
|
28
|
+
export declare class CorsMiddleware {
|
29
|
+
private options;
|
30
|
+
constructor(options?: any);
|
31
|
+
use(req: any, res: any, next: () => void): void;
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* 内置日志中间件
|
35
|
+
*/
|
36
|
+
export declare class LoggerMiddleware {
|
37
|
+
use(req: any, res: any, next: () => void): void;
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=middleware.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middlewares/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,SAAS,cAAc,CACrB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,GAAG,EACX,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,IAAI,CAAC;QACR,SAAS,WAAW,CAClB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,GAAG,EACX,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,GAAG,CAAC;KACR;CACF;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,IAAI,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,kBAAkB,GAAG,GAAG,CAAC,EAAE,GAAG,kBAAkB,CAAC;IACvE,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,kBAAkB,CAAC;IAC3D,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,kBAAkB,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,IAEpC,QAAQ,GAAG,EACX,cAAc,MAAM,GAAG,MAAM,EAC7B,aAAa,kBAAkB,oCAqBlC;AAED;;GAEG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,GAAQ;IAErC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI;CAyBzC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI;CAczC"}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import "reflect-metadata";
|
2
|
+
import { METADATA_KEYS } from "../utils/constants";
|
3
|
+
/**
|
4
|
+
* 中间件装饰器
|
5
|
+
* @param path 中间件应用的路径
|
6
|
+
*/
|
7
|
+
export function Middleware(path) {
|
8
|
+
return function (target, propertyKey, descriptor) {
|
9
|
+
const metadata = {
|
10
|
+
path: path || "*",
|
11
|
+
};
|
12
|
+
if (propertyKey) {
|
13
|
+
// 方法级中间件
|
14
|
+
Reflect.defineMetadata(METADATA_KEYS.MIDDLEWARE, metadata, target, propertyKey);
|
15
|
+
}
|
16
|
+
else {
|
17
|
+
// 类级中间件
|
18
|
+
Reflect.defineMetadata(METADATA_KEYS.MIDDLEWARE, metadata, target);
|
19
|
+
}
|
20
|
+
return descriptor;
|
21
|
+
};
|
22
|
+
}
|
23
|
+
/**
|
24
|
+
* 内置 CORS 中间件
|
25
|
+
*/
|
26
|
+
export class CorsMiddleware {
|
27
|
+
options;
|
28
|
+
constructor(options = {}) {
|
29
|
+
this.options = options;
|
30
|
+
}
|
31
|
+
use(req, res, next) {
|
32
|
+
const origin = this.options.origin || "*";
|
33
|
+
const methods = this.options.methods || [
|
34
|
+
"GET",
|
35
|
+
"POST",
|
36
|
+
"PUT",
|
37
|
+
"DELETE",
|
38
|
+
"OPTIONS",
|
39
|
+
];
|
40
|
+
const headers = this.options.allowedHeaders || [
|
41
|
+
"Content-Type",
|
42
|
+
"Authorization",
|
43
|
+
];
|
44
|
+
res.header("Access-Control-Allow-Origin", origin);
|
45
|
+
res.header("Access-Control-Allow-Methods", methods.join(", "));
|
46
|
+
res.header("Access-Control-Allow-Headers", headers.join(", "));
|
47
|
+
if (req.method === "OPTIONS") {
|
48
|
+
res.status(200).end();
|
49
|
+
return;
|
50
|
+
}
|
51
|
+
next();
|
52
|
+
}
|
53
|
+
}
|
54
|
+
/**
|
55
|
+
* 内置日志中间件
|
56
|
+
*/
|
57
|
+
export class LoggerMiddleware {
|
58
|
+
use(req, res, next) {
|
59
|
+
// const start = Date.now();
|
60
|
+
// const { method, url } = req;
|
61
|
+
// 拦截响应结束
|
62
|
+
const originalEnd = res.end;
|
63
|
+
res.end = function (chunk, encoding) {
|
64
|
+
// const duration = Date.now() - start;
|
65
|
+
// console.log(`📤 ${method} ${url} - ${res.statusCode} - ${duration}ms`);
|
66
|
+
originalEnd.call(this, chunk, encoding);
|
67
|
+
};
|
68
|
+
next();
|
69
|
+
}
|
70
|
+
}
|
71
|
+
//# sourceMappingURL=middleware.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middlewares/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAqCnD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,UACL,MAAW,EACX,WAA6B,EAC7B,UAA+B;QAE/B,MAAM,QAAQ,GAAuB;YACnC,IAAI,EAAE,IAAI,IAAI,GAAG;SAClB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,SAAS;YACT,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,UAAU,EACxB,QAAQ,EACR,MAAM,EACN,WAAW,CACZ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ;YACR,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,UAAe,EAAE;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAEzC,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI;YACtC,KAAK;YACL,MAAM;YACN,KAAK;YACL,QAAQ;YACR,SAAS;SACV,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI;YAC7C,cAAc;YACd,eAAe;SAChB,CAAC;QAEF,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAgB;QACtC,4BAA4B;QAC5B,+BAA+B;QAE/B,SAAS;QACT,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC;QAC5B,GAAG,CAAC,GAAG,GAAG,UAAU,KAAU,EAAE,QAAa;YAC3C,uCAAuC;YACvC,0EAA0E;YAC1E,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC;IACT,CAAC;CACF"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { HttpMethod } from '../utils/constants';
|
2
|
+
/**
|
3
|
+
* 路由元数据
|
4
|
+
*/
|
5
|
+
export interface RouteInfo {
|
6
|
+
method: HttpMethod;
|
7
|
+
path: string;
|
8
|
+
handler: string;
|
9
|
+
controller: string;
|
10
|
+
}
|
11
|
+
/**
|
12
|
+
* 路由元数据收集器
|
13
|
+
*/
|
14
|
+
export declare class RouteMetadata {
|
15
|
+
private routes;
|
16
|
+
/**
|
17
|
+
* 添加路由
|
18
|
+
*/
|
19
|
+
add(route: RouteInfo): void;
|
20
|
+
/**
|
21
|
+
* 获取所有路由
|
22
|
+
*/
|
23
|
+
getAll(): RouteInfo[];
|
24
|
+
/**
|
25
|
+
* 根据控制器获取路由
|
26
|
+
*/
|
27
|
+
getByController(controller: string): RouteInfo[];
|
28
|
+
/**
|
29
|
+
* 根据方法获取路由
|
30
|
+
*/
|
31
|
+
getByMethod(method: HttpMethod): RouteInfo[];
|
32
|
+
/**
|
33
|
+
* 清空路由
|
34
|
+
*/
|
35
|
+
clear(): void;
|
36
|
+
/**
|
37
|
+
* 路由数量
|
38
|
+
*/
|
39
|
+
get size(): number;
|
40
|
+
}
|
41
|
+
//# sourceMappingURL=route-metadata.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"route-metadata.d.ts","sourceRoot":"","sources":["../../src/router/route-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI3B;;OAEG;IACH,MAAM,IAAI,SAAS,EAAE;IAIrB;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE;IAIhD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE;IAI5C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
/**
|
2
|
+
* 路由元数据收集器
|
3
|
+
*/
|
4
|
+
export class RouteMetadata {
|
5
|
+
routes = [];
|
6
|
+
/**
|
7
|
+
* 添加路由
|
8
|
+
*/
|
9
|
+
add(route) {
|
10
|
+
this.routes.push(route);
|
11
|
+
}
|
12
|
+
/**
|
13
|
+
* 获取所有路由
|
14
|
+
*/
|
15
|
+
getAll() {
|
16
|
+
return [...this.routes];
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* 根据控制器获取路由
|
20
|
+
*/
|
21
|
+
getByController(controller) {
|
22
|
+
return this.routes.filter(route => route.controller === controller);
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* 根据方法获取路由
|
26
|
+
*/
|
27
|
+
getByMethod(method) {
|
28
|
+
return this.routes.filter(route => route.method === method);
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* 清空路由
|
32
|
+
*/
|
33
|
+
clear() {
|
34
|
+
this.routes = [];
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* 路由数量
|
38
|
+
*/
|
39
|
+
get size() {
|
40
|
+
return this.routes.length;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
//# sourceMappingURL=route-metadata.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"route-metadata.js","sourceRoot":"","sources":["../../src/router/route-metadata.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAgB,EAAE,CAAC;IAEjC;;OAEG;IACH,GAAG,CAAC,KAAgB;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAkB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF"}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import { Hono } from "hono";
|
2
|
+
import { Container } from "../container/container";
|
3
|
+
import { type ExceptionFilter } from "../exceptions/exception-filter";
|
4
|
+
import { type Interceptor } from "../interceptors/interceptor";
|
5
|
+
import type { ControllerConstructor } from "../interfaces/router";
|
6
|
+
/**
|
7
|
+
* 路由资源管理器
|
8
|
+
*/
|
9
|
+
export declare class RouterExplorer {
|
10
|
+
private readonly app;
|
11
|
+
private readonly container;
|
12
|
+
private globalFilters;
|
13
|
+
private globalInterceptors;
|
14
|
+
constructor(app: Hono, container: Container);
|
15
|
+
/**
|
16
|
+
* 设置全局异常过滤器
|
17
|
+
*/
|
18
|
+
setGlobalFilters(filters: ExceptionFilter[]): void;
|
19
|
+
/**
|
20
|
+
* 设置全局拦截器
|
21
|
+
*/
|
22
|
+
setGlobalInterceptors(interceptors: Interceptor[]): void;
|
23
|
+
/**
|
24
|
+
* 探索并注册控制器路由
|
25
|
+
*/
|
26
|
+
explore(controllers: ControllerConstructor[]): void;
|
27
|
+
/**
|
28
|
+
* 探索单个控制器
|
29
|
+
*/
|
30
|
+
private exploreController;
|
31
|
+
/**
|
32
|
+
* 注册单个路由
|
33
|
+
*/
|
34
|
+
private registerRoute;
|
35
|
+
/**
|
36
|
+
* 解析方法参数
|
37
|
+
*/
|
38
|
+
private resolveParameters;
|
39
|
+
/**
|
40
|
+
* 应用拦截器
|
41
|
+
*/
|
42
|
+
private applyInterceptors;
|
43
|
+
/**
|
44
|
+
* 处理异常
|
45
|
+
*/
|
46
|
+
private handleException;
|
47
|
+
/**
|
48
|
+
* 合并路径
|
49
|
+
*/
|
50
|
+
private combinePaths;
|
51
|
+
}
|
52
|
+
//# sourceMappingURL=router-explorer.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"router-explorer.d.ts","sourceRoot":"","sources":["../../src/router/router-explorer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACV,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAM9B;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAO;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;IAK3C;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;IAIxD;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAMnD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA8FrB;;OAEG;YACW,iBAAiB;IAiE/B;;OAEG;YACW,iBAAiB;IAuB/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,YAAY;CAUrB"}
|