@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.
Files changed (134) hide show
  1. package/README.md +387 -0
  2. package/dist/application/application-factory.d.ts +15 -0
  3. package/dist/application/application-factory.d.ts.map +1 -0
  4. package/dist/application/application-factory.js +77 -0
  5. package/dist/application/application-factory.js.map +1 -0
  6. package/dist/application/hest-application.d.ts +40 -0
  7. package/dist/application/hest-application.d.ts.map +1 -0
  8. package/dist/application/hest-application.js +50 -0
  9. package/dist/application/hest-application.js.map +1 -0
  10. package/dist/application/index.d.ts +3 -0
  11. package/dist/application/index.d.ts.map +1 -0
  12. package/dist/application/index.js +3 -0
  13. package/dist/application/index.js.map +1 -0
  14. package/dist/container/container.d.ts +48 -0
  15. package/dist/container/container.d.ts.map +1 -0
  16. package/dist/container/container.js +77 -0
  17. package/dist/container/container.js.map +1 -0
  18. package/dist/container/index.d.ts +3 -0
  19. package/dist/container/index.d.ts.map +1 -0
  20. package/dist/container/index.js +3 -0
  21. package/dist/container/index.js.map +1 -0
  22. package/dist/container/injection-token.d.ts +14 -0
  23. package/dist/container/injection-token.d.ts.map +1 -0
  24. package/dist/container/injection-token.js +10 -0
  25. package/dist/container/injection-token.js.map +1 -0
  26. package/dist/decorators/controller.d.ts +14 -0
  27. package/dist/decorators/controller.d.ts.map +1 -0
  28. package/dist/decorators/controller.js +23 -0
  29. package/dist/decorators/controller.js.map +1 -0
  30. package/dist/decorators/index.d.ts +5 -0
  31. package/dist/decorators/index.d.ts.map +1 -0
  32. package/dist/decorators/index.js +5 -0
  33. package/dist/decorators/index.js.map +1 -0
  34. package/dist/decorators/injectable.d.ts +13 -0
  35. package/dist/decorators/injectable.d.ts.map +1 -0
  36. package/dist/decorators/injectable.js +20 -0
  37. package/dist/decorators/injectable.js.map +1 -0
  38. package/dist/decorators/module.d.ts +14 -0
  39. package/dist/decorators/module.d.ts.map +1 -0
  40. package/dist/decorators/module.js +16 -0
  41. package/dist/decorators/module.js.map +1 -0
  42. package/dist/decorators/route.d.ts +56 -0
  43. package/dist/decorators/route.d.ts.map +1 -0
  44. package/dist/decorators/route.js +94 -0
  45. package/dist/decorators/route.js.map +1 -0
  46. package/dist/exceptions/base-exception.d.ts +20 -0
  47. package/dist/exceptions/base-exception.d.ts.map +1 -0
  48. package/dist/exceptions/base-exception.js +38 -0
  49. package/dist/exceptions/base-exception.js.map +1 -0
  50. package/dist/exceptions/exception-filter.d.ts +39 -0
  51. package/dist/exceptions/exception-filter.d.ts.map +1 -0
  52. package/dist/exceptions/exception-filter.js +63 -0
  53. package/dist/exceptions/exception-filter.js.map +1 -0
  54. package/dist/exceptions/http-exception.d.ts +40 -0
  55. package/dist/exceptions/http-exception.d.ts.map +1 -0
  56. package/dist/exceptions/http-exception.js +77 -0
  57. package/dist/exceptions/http-exception.js.map +1 -0
  58. package/dist/exceptions/index.d.ts +4 -0
  59. package/dist/exceptions/index.d.ts.map +1 -0
  60. package/dist/exceptions/index.js +4 -0
  61. package/dist/exceptions/index.js.map +1 -0
  62. package/dist/index.d.ts +15 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +19 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/interceptors/index.d.ts +2 -0
  67. package/dist/interceptors/index.d.ts.map +1 -0
  68. package/dist/interceptors/index.js +2 -0
  69. package/dist/interceptors/index.js.map +1 -0
  70. package/dist/interceptors/interceptor.d.ts +82 -0
  71. package/dist/interceptors/interceptor.d.ts.map +1 -0
  72. package/dist/interceptors/interceptor.js +114 -0
  73. package/dist/interceptors/interceptor.js.map +1 -0
  74. package/dist/interfaces/application.d.ts +24 -0
  75. package/dist/interfaces/application.d.ts.map +1 -0
  76. package/dist/interfaces/application.js +2 -0
  77. package/dist/interfaces/application.js.map +1 -0
  78. package/dist/interfaces/index.d.ts +4 -0
  79. package/dist/interfaces/index.d.ts.map +1 -0
  80. package/dist/interfaces/index.js +4 -0
  81. package/dist/interfaces/index.js.map +1 -0
  82. package/dist/interfaces/metadata.d.ts +49 -0
  83. package/dist/interfaces/metadata.d.ts.map +1 -0
  84. package/dist/interfaces/metadata.js +2 -0
  85. package/dist/interfaces/metadata.js.map +1 -0
  86. package/dist/interfaces/router.d.ts +48 -0
  87. package/dist/interfaces/router.d.ts.map +1 -0
  88. package/dist/interfaces/router.js +2 -0
  89. package/dist/interfaces/router.js.map +1 -0
  90. package/dist/metadata/index.d.ts +3 -0
  91. package/dist/metadata/index.d.ts.map +1 -0
  92. package/dist/metadata/index.js +3 -0
  93. package/dist/metadata/index.js.map +1 -0
  94. package/dist/metadata/metadata-scanner.d.ts +59 -0
  95. package/dist/metadata/metadata-scanner.d.ts.map +1 -0
  96. package/dist/metadata/metadata-scanner.js +75 -0
  97. package/dist/metadata/metadata-scanner.js.map +1 -0
  98. package/dist/metadata/reflector.d.ts +50 -0
  99. package/dist/metadata/reflector.d.ts.map +1 -0
  100. package/dist/metadata/reflector.js +57 -0
  101. package/dist/metadata/reflector.js.map +1 -0
  102. package/dist/middlewares/index.d.ts +2 -0
  103. package/dist/middlewares/index.d.ts.map +1 -0
  104. package/dist/middlewares/index.js +2 -0
  105. package/dist/middlewares/index.js.map +1 -0
  106. package/dist/middlewares/middleware.d.ts +39 -0
  107. package/dist/middlewares/middleware.d.ts.map +1 -0
  108. package/dist/middlewares/middleware.js +71 -0
  109. package/dist/middlewares/middleware.js.map +1 -0
  110. package/dist/router/index.d.ts +3 -0
  111. package/dist/router/index.d.ts.map +1 -0
  112. package/dist/router/index.js +3 -0
  113. package/dist/router/index.js.map +1 -0
  114. package/dist/router/route-metadata.d.ts +41 -0
  115. package/dist/router/route-metadata.d.ts.map +1 -0
  116. package/dist/router/route-metadata.js +43 -0
  117. package/dist/router/route-metadata.js.map +1 -0
  118. package/dist/router/router-explorer.d.ts +52 -0
  119. package/dist/router/router-explorer.d.ts.map +1 -0
  120. package/dist/router/router-explorer.js +259 -0
  121. package/dist/router/router-explorer.js.map +1 -0
  122. package/dist/utils/constants.d.ts +33 -0
  123. package/dist/utils/constants.d.ts.map +1 -0
  124. package/dist/utils/constants.js +40 -0
  125. package/dist/utils/constants.js.map +1 -0
  126. package/dist/utils/helpers.d.ts +27 -0
  127. package/dist/utils/helpers.d.ts.map +1 -0
  128. package/dist/utils/helpers.js +54 -0
  129. package/dist/utils/helpers.js.map +1 -0
  130. package/dist/utils/index.d.ts +3 -0
  131. package/dist/utils/index.d.ts.map +1 -0
  132. package/dist/utils/index.js +3 -0
  133. package/dist/utils/index.js.map +1 -0
  134. 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,2 @@
1
+ export * from './middleware';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from './middleware';
2
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export * from './router-explorer';
2
+ export * from './route-metadata';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export * from './router-explorer';
2
+ export * from './route-metadata';
3
+ //# sourceMappingURL=index.js.map
@@ -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"}