@dangao/bun-server 1.7.1 → 1.8.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.
Files changed (159) hide show
  1. package/README.md +129 -21
  2. package/dist/di/decorators.d.ts +37 -0
  3. package/dist/di/decorators.d.ts.map +1 -1
  4. package/dist/di/index.d.ts +1 -1
  5. package/dist/di/index.d.ts.map +1 -1
  6. package/dist/di/module-registry.d.ts +17 -0
  7. package/dist/di/module-registry.d.ts.map +1 -1
  8. package/dist/events/decorators.d.ts +52 -0
  9. package/dist/events/decorators.d.ts.map +1 -0
  10. package/dist/events/event-module.d.ts +97 -0
  11. package/dist/events/event-module.d.ts.map +1 -0
  12. package/dist/events/index.d.ts +5 -0
  13. package/dist/events/index.d.ts.map +1 -0
  14. package/dist/events/service.d.ts +76 -0
  15. package/dist/events/service.d.ts.map +1 -0
  16. package/dist/events/types.d.ts +184 -0
  17. package/dist/events/types.d.ts.map +1 -0
  18. package/dist/index.d.ts +5 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1511 -11
  21. package/dist/security/filter.d.ts +23 -0
  22. package/dist/security/filter.d.ts.map +1 -1
  23. package/dist/security/guards/builtin/auth-guard.d.ts +44 -0
  24. package/dist/security/guards/builtin/auth-guard.d.ts.map +1 -0
  25. package/dist/security/guards/builtin/index.d.ts +3 -0
  26. package/dist/security/guards/builtin/index.d.ts.map +1 -0
  27. package/dist/security/guards/builtin/roles-guard.d.ts +66 -0
  28. package/dist/security/guards/builtin/roles-guard.d.ts.map +1 -0
  29. package/dist/security/guards/decorators.d.ts +50 -0
  30. package/dist/security/guards/decorators.d.ts.map +1 -0
  31. package/dist/security/guards/execution-context.d.ts +56 -0
  32. package/dist/security/guards/execution-context.d.ts.map +1 -0
  33. package/dist/security/guards/guard-registry.d.ts +67 -0
  34. package/dist/security/guards/guard-registry.d.ts.map +1 -0
  35. package/dist/security/guards/index.d.ts +7 -0
  36. package/dist/security/guards/index.d.ts.map +1 -0
  37. package/dist/security/guards/reflector.d.ts +57 -0
  38. package/dist/security/guards/reflector.d.ts.map +1 -0
  39. package/dist/security/guards/types.d.ts +126 -0
  40. package/dist/security/guards/types.d.ts.map +1 -0
  41. package/dist/security/index.d.ts +1 -0
  42. package/dist/security/index.d.ts.map +1 -1
  43. package/dist/security/security-module.d.ts +20 -0
  44. package/dist/security/security-module.d.ts.map +1 -1
  45. package/dist/validation/class-validator.d.ts +108 -0
  46. package/dist/validation/class-validator.d.ts.map +1 -0
  47. package/dist/validation/custom-validator.d.ts +130 -0
  48. package/dist/validation/custom-validator.d.ts.map +1 -0
  49. package/dist/validation/errors.d.ts +22 -2
  50. package/dist/validation/errors.d.ts.map +1 -1
  51. package/dist/validation/index.d.ts +7 -1
  52. package/dist/validation/index.d.ts.map +1 -1
  53. package/dist/validation/rules/array.d.ts +33 -0
  54. package/dist/validation/rules/array.d.ts.map +1 -0
  55. package/dist/validation/rules/common.d.ts +90 -0
  56. package/dist/validation/rules/common.d.ts.map +1 -0
  57. package/dist/validation/rules/conditional.d.ts +30 -0
  58. package/dist/validation/rules/conditional.d.ts.map +1 -0
  59. package/dist/validation/rules/index.d.ts +5 -0
  60. package/dist/validation/rules/index.d.ts.map +1 -0
  61. package/dist/validation/rules/object.d.ts +30 -0
  62. package/dist/validation/rules/object.d.ts.map +1 -0
  63. package/dist/validation/types.d.ts +52 -1
  64. package/dist/validation/types.d.ts.map +1 -1
  65. package/docs/events.md +494 -0
  66. package/docs/guards.md +376 -0
  67. package/docs/guide.md +309 -1
  68. package/docs/request-lifecycle.md +444 -0
  69. package/docs/validation.md +407 -0
  70. package/docs/zh/events.md +494 -0
  71. package/docs/zh/guards.md +376 -0
  72. package/docs/zh/guide.md +309 -1
  73. package/docs/zh/request-lifecycle.md +444 -0
  74. package/docs/zh/validation.md +407 -0
  75. package/package.json +1 -1
  76. package/src/di/decorators.ts +46 -0
  77. package/src/di/index.ts +10 -1
  78. package/src/di/module-registry.ts +39 -0
  79. package/src/events/decorators.ts +103 -0
  80. package/src/events/event-module.ts +272 -0
  81. package/src/events/index.ts +32 -0
  82. package/src/events/service.ts +352 -0
  83. package/src/events/types.ts +223 -0
  84. package/src/index.ts +133 -1
  85. package/src/security/filter.ts +88 -8
  86. package/src/security/guards/builtin/auth-guard.ts +68 -0
  87. package/src/security/guards/builtin/index.ts +3 -0
  88. package/src/security/guards/builtin/roles-guard.ts +165 -0
  89. package/src/security/guards/decorators.ts +124 -0
  90. package/src/security/guards/execution-context.ts +152 -0
  91. package/src/security/guards/guard-registry.ts +164 -0
  92. package/src/security/guards/index.ts +7 -0
  93. package/src/security/guards/reflector.ts +99 -0
  94. package/src/security/guards/types.ts +144 -0
  95. package/src/security/index.ts +1 -0
  96. package/src/security/security-module.ts +72 -2
  97. package/src/validation/class-validator.ts +322 -0
  98. package/src/validation/custom-validator.ts +289 -0
  99. package/src/validation/errors.ts +50 -2
  100. package/src/validation/index.ts +103 -1
  101. package/src/validation/rules/array.ts +118 -0
  102. package/src/validation/rules/common.ts +286 -0
  103. package/src/validation/rules/conditional.ts +52 -0
  104. package/src/validation/rules/index.ts +51 -0
  105. package/src/validation/rules/object.ts +86 -0
  106. package/src/validation/types.ts +61 -1
  107. package/tests/auth/auth-decorators.test.ts +241 -0
  108. package/tests/auth/oauth2-service.test.ts +318 -0
  109. package/tests/cache/cache-decorators-extended.test.ts +272 -0
  110. package/tests/cache/cache-interceptors.test.ts +534 -0
  111. package/tests/cache/cache-service-proxy.test.ts +246 -0
  112. package/tests/cache/memory-cache-store.test.ts +155 -0
  113. package/tests/cache/redis-cache-store.test.ts +199 -0
  114. package/tests/config/config-center-integration.test.ts +334 -0
  115. package/tests/config/config-module-extended.test.ts +165 -0
  116. package/tests/controller/param-binder.test.ts +333 -0
  117. package/tests/di/global-module.test.ts +487 -0
  118. package/tests/error/error-handler.test.ts +166 -57
  119. package/tests/error/i18n-extended.test.ts +105 -0
  120. package/tests/events/event-decorators.test.ts +173 -0
  121. package/tests/events/event-emitter.test.ts +373 -0
  122. package/tests/events/event-listener-scanner.test.ts +114 -0
  123. package/tests/events/event-module.test.ts +204 -0
  124. package/tests/extensions/logger-module.test.ts +158 -0
  125. package/tests/files/file-storage.test.ts +136 -0
  126. package/tests/interceptor/base-interceptor.test.ts +605 -0
  127. package/tests/interceptor/builtin/cache-interceptor.test.ts +233 -86
  128. package/tests/interceptor/builtin/log-interceptor.test.ts +469 -0
  129. package/tests/interceptor/builtin/permission-interceptor.test.ts +219 -120
  130. package/tests/interceptor/interceptor-chain.test.ts +241 -189
  131. package/tests/interceptor/interceptor-metadata.test.ts +221 -0
  132. package/tests/microservice/circuit-breaker.test.ts +221 -0
  133. package/tests/microservice/service-client-decorators.test.ts +86 -0
  134. package/tests/microservice/service-client-interceptors.test.ts +274 -0
  135. package/tests/microservice/service-registry-decorators.test.ts +147 -0
  136. package/tests/microservice/tracer.test.ts +213 -0
  137. package/tests/microservice/tracing-collectors.test.ts +168 -0
  138. package/tests/middleware/builtin/middleware-builtin-extended.test.ts +237 -0
  139. package/tests/middleware/builtin/rate-limit.test.ts +257 -0
  140. package/tests/middleware/middleware-decorators.test.ts +222 -0
  141. package/tests/middleware/middleware-pipeline.test.ts +160 -0
  142. package/tests/queue/queue-decorators.test.ts +139 -0
  143. package/tests/queue/queue-service.test.ts +191 -0
  144. package/tests/request/body-parser-extended.test.ts +291 -0
  145. package/tests/request/request-wrapper.test.ts +319 -0
  146. package/tests/router/router-decorators.test.ts +260 -0
  147. package/tests/router/router-extended.test.ts +298 -0
  148. package/tests/security/guards/guards-integration.test.ts +371 -0
  149. package/tests/security/guards/guards.test.ts +775 -0
  150. package/tests/security/guards/reflector.test.ts +188 -0
  151. package/tests/security/security-filter.test.ts +182 -0
  152. package/tests/security/security-module-extended.test.ts +133 -0
  153. package/tests/security/security-module.test.ts +2 -2
  154. package/tests/session/memory-session-store.test.ts +172 -0
  155. package/tests/session/session-decorators.test.ts +163 -0
  156. package/tests/swagger/ui.test.ts +212 -0
  157. package/tests/validation/class-validator.test.ts +349 -0
  158. package/tests/validation/custom-validator.test.ts +335 -0
  159. package/tests/validation/rules.test.ts +543 -0
@@ -1,8 +1,11 @@
1
1
  import type { Context } from '../core/context';
2
2
  import type { Middleware } from '../middleware';
3
+ import type { Container } from '../di/container';
3
4
  import { AuthenticationManager } from './authentication-manager';
4
5
  import { RoleBasedAccessDecisionManager } from './access-decision-manager';
5
6
  import type { SecurityConfig } from './types';
7
+ import { GuardRegistry } from './guards/guard-registry';
8
+ import { Reflector } from './guards/reflector';
6
9
  /**
7
10
  * 安全过滤器配置
8
11
  */
@@ -19,9 +22,29 @@ export interface SecurityFilterConfig extends SecurityConfig {
19
22
  * 令牌提取函数
20
23
  */
21
24
  extractToken?: (ctx: Context) => string | null;
25
+ /**
26
+ * DI 容器(用于解析守卫)
27
+ */
28
+ container?: Container;
29
+ /**
30
+ * 守卫注册表
31
+ */
32
+ guardRegistry?: GuardRegistry;
22
33
  }
23
34
  /**
24
35
  * 创建安全过滤器
25
36
  */
26
37
  export declare function createSecurityFilter(config: SecurityFilterConfig): Middleware;
38
+ /**
39
+ * 获取守卫注册表
40
+ * @param container - DI 容器
41
+ * @returns 守卫注册表实例
42
+ */
43
+ export declare function getGuardRegistry(container: Container): GuardRegistry;
44
+ /**
45
+ * 注册 Reflector 到 DI 容器
46
+ * @param container - DI 容器
47
+ * @returns Reflector 实例
48
+ */
49
+ export declare function registerReflector(container: Container): Reflector;
27
50
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/security/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,SAAS,CAAC;AAQrE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;OAEG;IACH,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C;;OAEG;IACH,qBAAqB,CAAC,EAAE,8BAA8B,CAAC;IACvD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC;CAChD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,CAqG7E"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/security/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,SAAS,CAAC;AAOrE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAmB,MAAM,oBAAoB,CAAC;AAGhE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;OAEG;IACH,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C;;OAEG;IACH,qBAAqB,CAAC,EAAE,8BAA8B,CAAC;IACvD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/C;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,CA4I7E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,CAOpE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAOjE"}
@@ -0,0 +1,44 @@
1
+ import type { CanActivate, ExecutionContext } from '../types';
2
+ /**
3
+ * 认证守卫
4
+ * 检查请求是否已认证
5
+ *
6
+ * @example
7
+ * @Controller('/api/users')
8
+ * @UseGuards(AuthGuard)
9
+ * class UserController {
10
+ * @GET('/profile')
11
+ * getProfile() {
12
+ * // 只有已认证的用户才能访问
13
+ * }
14
+ * }
15
+ */
16
+ export declare class AuthGuard implements CanActivate {
17
+ /**
18
+ * 判断是否允许访问
19
+ * @param context - 执行上下文
20
+ * @returns 如果已认证则返回 true,否则抛出 UnauthorizedException
21
+ */
22
+ canActivate(context: ExecutionContext): boolean;
23
+ }
24
+ /**
25
+ * 可选认证守卫
26
+ * 如果有 token 则验证,没有 token 也允许访问
27
+ *
28
+ * @example
29
+ * @GET('/public')
30
+ * @UseGuards(OptionalAuthGuard)
31
+ * publicEndpoint() {
32
+ * // 未认证也可以访问,但如果有 token 会被验证
33
+ * }
34
+ */
35
+ export declare class OptionalAuthGuard implements CanActivate {
36
+ /**
37
+ * 判断是否允许访问
38
+ * 总是返回 true,但会检查认证状态
39
+ * @param context - 执行上下文
40
+ * @returns 总是返回 true
41
+ */
42
+ canActivate(context: ExecutionContext): boolean;
43
+ }
44
+ //# sourceMappingURL=auth-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-guard.d.ts","sourceRoot":"","sources":["../../../../src/security/guards/builtin/auth-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK9D;;;;;;;;;;;;;GAaG;AACH,qBACa,SAAU,YAAW,WAAW;IAC3C;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAavD;AAED;;;;;;;;;;GAUG;AACH,qBACa,iBAAkB,YAAW,WAAW;IACnD;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAKvD"}
@@ -0,0 +1,3 @@
1
+ export { AuthGuard, OptionalAuthGuard } from './auth-guard';
2
+ export { RolesGuard, createRolesGuard, type RolesGuardOptions } from './roles-guard';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/security/guards/builtin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { CanActivate, ExecutionContext } from '../types';
2
+ import { Reflector } from '../reflector';
3
+ /**
4
+ * 角色守卫
5
+ * 检查用户是否具有所需角色
6
+ *
7
+ * @example
8
+ * @Controller('/api/admin')
9
+ * @UseGuards(AuthGuard, RolesGuard)
10
+ * class AdminController {
11
+ * @GET('/dashboard')
12
+ * @Roles('admin')
13
+ * dashboard() {
14
+ * // 只有 admin 角色才能访问
15
+ * }
16
+ *
17
+ * @GET('/super')
18
+ * @Roles('admin', 'superadmin')
19
+ * superAdmin() {
20
+ * // admin 或 superadmin 角色可以访问
21
+ * }
22
+ * }
23
+ */
24
+ export declare class RolesGuard implements CanActivate {
25
+ private readonly reflector;
26
+ constructor(reflector?: Reflector);
27
+ /**
28
+ * 判断是否允许访问
29
+ * @param context - 执行上下文
30
+ * @returns 如果用户具有所需角色则返回 true
31
+ */
32
+ canActivate(context: ExecutionContext): boolean;
33
+ }
34
+ /**
35
+ * 创建自定义角色守卫
36
+ * 支持自定义角色验证逻辑
37
+ *
38
+ * @example
39
+ * const CustomRolesGuard = createRolesGuard({
40
+ * // 所有角色都必须匹配
41
+ * matchAll: true,
42
+ * // 自定义角色获取逻辑
43
+ * getRoles: (context) => {
44
+ * const user = context.switchToHttp().getRequest().auth?.user;
45
+ * return user?.roles || [];
46
+ * },
47
+ * });
48
+ */
49
+ export interface RolesGuardOptions {
50
+ /**
51
+ * 是否需要匹配所有角色
52
+ * @default false (只需匹配其中一个)
53
+ */
54
+ matchAll?: boolean;
55
+ /**
56
+ * 自定义获取用户角色的函数
57
+ */
58
+ getRoles?: (context: ExecutionContext) => string[];
59
+ }
60
+ /**
61
+ * 创建自定义角色守卫工厂
62
+ * @param options - 配置选项
63
+ * @returns 自定义角色守卫类
64
+ */
65
+ export declare function createRolesGuard(options?: RolesGuardOptions): new () => CanActivate;
66
+ //# sourceMappingURL=roles-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles-guard.d.ts","sourceRoot":"","sources":["../../../../src/security/guards/builtin/roles-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK9D,OAAO,EAAE,SAAS,EAAmB,MAAM,cAAc,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGX,SAAS,CAAC,EAAE,SAAS;IAKhD;;;;OAIG;IACI,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAwCvD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,MAAM,EAAE,CAAC;CACpD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,WAAW,CA4CvF"}
@@ -0,0 +1,50 @@
1
+ import 'reflect-metadata';
2
+ import type { GuardType } from './types';
3
+ /**
4
+ * 守卫装饰器
5
+ * 可用于控制器或方法级别
6
+ *
7
+ * @example
8
+ * // 控制器级别
9
+ * @Controller('/api/admin')
10
+ * @UseGuards(AuthGuard, RolesGuard)
11
+ * class AdminController {}
12
+ *
13
+ * @example
14
+ * // 方法级别
15
+ * @GET('/profile')
16
+ * @UseGuards(AuthGuard)
17
+ * getProfile() {}
18
+ *
19
+ * @param guards - 守卫类或守卫实例
20
+ * @returns 类或方法装饰器
21
+ */
22
+ export declare function UseGuards(...guards: GuardType[]): ClassDecorator & MethodDecorator;
23
+ /**
24
+ * 角色装饰器
25
+ * 用于标记需要特定角色的方法或控制器
26
+ *
27
+ * @example
28
+ * @GET('/admin')
29
+ * @Roles('admin', 'superadmin')
30
+ * adminOnly() {}
31
+ *
32
+ * @param roles - 允许访问的角色列表
33
+ * @returns 类或方法装饰器
34
+ */
35
+ export declare function Roles(...roles: string[]): ClassDecorator & MethodDecorator;
36
+ /**
37
+ * 获取守卫元数据
38
+ * @param target - 目标对象(类或原型)
39
+ * @param propertyKey - 方法名(可选)
40
+ * @returns 守卫列表
41
+ */
42
+ export declare function getGuardsMetadata(target: Object | Function, propertyKey?: string | symbol): GuardType[];
43
+ /**
44
+ * 获取角色元数据
45
+ * @param target - 目标对象(类或原型)
46
+ * @param propertyKey - 方法名(可选)
47
+ * @returns 角色列表
48
+ */
49
+ export declare function getRolesMetadata(target: Object | Function, propertyKey?: string | symbol): string[];
50
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/security/guards/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CACvB,GAAG,MAAM,EAAE,SAAS,EAAE,GACrB,cAAc,GAAG,eAAe,CA2BlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CACnB,GAAG,KAAK,EAAE,MAAM,EAAE,GACjB,cAAc,GAAG,eAAe,CAclC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,SAAS,EAAE,CAab;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,MAAM,EAAE,CAKV"}
@@ -0,0 +1,56 @@
1
+ import 'reflect-metadata';
2
+ import type { ServerWebSocket } from 'bun';
3
+ import type { Context } from '../../core/context';
4
+ import type { ResponseBuilder } from '../../request/response';
5
+ import type { Constructor } from '../../core/types';
6
+ import type { ExecutionContext, HttpArgumentsHost, WsArgumentsHost } from './types';
7
+ /**
8
+ * 执行上下文实现
9
+ */
10
+ export declare class ExecutionContextImpl implements ExecutionContext {
11
+ private readonly ctx;
12
+ private readonly controllerClass;
13
+ private readonly methodName;
14
+ private readonly handler;
15
+ private readonly args;
16
+ private readonly httpHost;
17
+ private wsHost?;
18
+ constructor(ctx: Context, controllerClass: Constructor<unknown>, methodName: string, handler: Function, args?: unknown[], responseBuilder?: ResponseBuilder);
19
+ /**
20
+ * 设置 WebSocket 上下文
21
+ * @param client - WebSocket 客户端
22
+ * @param data - 消息数据
23
+ */
24
+ setWsContext(client: ServerWebSocket<unknown>, data: unknown): void;
25
+ /**
26
+ * 获取 HTTP 上下文
27
+ */
28
+ switchToHttp(): HttpArgumentsHost;
29
+ /**
30
+ * 获取 WebSocket 上下文
31
+ */
32
+ switchToWs(): WsArgumentsHost;
33
+ /**
34
+ * 获取当前处理的控制器类
35
+ */
36
+ getClass(): Constructor<unknown>;
37
+ /**
38
+ * 获取当前处理的方法
39
+ */
40
+ getHandler(): Function;
41
+ /**
42
+ * 获取方法名
43
+ */
44
+ getMethodName(): string;
45
+ /**
46
+ * 获取方法或类的元数据
47
+ * @param key - 元数据键
48
+ * @returns 元数据值
49
+ */
50
+ getMetadata<T>(key: string | symbol): T | undefined;
51
+ /**
52
+ * 获取请求参数
53
+ */
54
+ getArgs(): unknown[];
55
+ }
56
+ //# sourceMappingURL=execution-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../../src/security/guards/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,SAAS,CAAC;AAkDjB;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAKzD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAkB;gBAGd,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EACjB,IAAI,GAAE,OAAO,EAAO,EACrC,eAAe,CAAC,EAAE,eAAe;IAKnC;;;;OAIG;IACI,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAI1E;;OAEG;IACI,YAAY,IAAI,iBAAiB;IAIxC;;OAEG;IACI,UAAU,IAAI,eAAe;IAOpC;;OAEG;IACI,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACI,UAAU,IAAI,QAAQ;IAI7B;;OAEG;IACI,aAAa,IAAI,MAAM;IAI9B;;;;OAIG;IACI,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS;IAe1D;;OAEG;IACI,OAAO,IAAI,OAAO,EAAE;CAG5B"}
@@ -0,0 +1,67 @@
1
+ import type { Container } from '../../di/container';
2
+ import type { Constructor } from '../../core/types';
3
+ import type { GuardType, ExecutionContext } from './types';
4
+ /**
5
+ * 守卫注册表
6
+ * 管理全局守卫和执行守卫链
7
+ */
8
+ export declare class GuardRegistry {
9
+ /**
10
+ * 全局守卫列表
11
+ */
12
+ private globalGuards;
13
+ /**
14
+ * 守卫实例缓存(用于缓存从 DI 容器解析的守卫实例)
15
+ */
16
+ private guardInstances;
17
+ /**
18
+ * 注册全局守卫
19
+ * @param guards - 守卫类或实例
20
+ */
21
+ addGlobalGuards(...guards: GuardType[]): void;
22
+ /**
23
+ * 获取全局守卫
24
+ * @returns 全局守卫列表
25
+ */
26
+ getGlobalGuards(): GuardType[];
27
+ /**
28
+ * 清除所有全局守卫
29
+ */
30
+ clearGlobalGuards(): void;
31
+ /**
32
+ * 解析守卫实例
33
+ * @param guard - 守卫类或实例
34
+ * @param container - DI 容器
35
+ * @returns 守卫实例
36
+ */
37
+ private resolveGuard;
38
+ /**
39
+ * 获取控制器级别的守卫
40
+ * @param controllerClass - 控制器类
41
+ * @returns 守卫列表
42
+ */
43
+ getControllerGuards(controllerClass: Constructor<unknown>): GuardType[];
44
+ /**
45
+ * 获取方法级别的守卫
46
+ * @param controllerClass - 控制器类
47
+ * @param methodName - 方法名
48
+ * @returns 守卫列表
49
+ */
50
+ getMethodGuards(controllerClass: Constructor<unknown>, methodName: string): GuardType[];
51
+ /**
52
+ * 收集所有守卫(全局 + 控制器 + 方法)
53
+ * @param controllerClass - 控制器类
54
+ * @param methodName - 方法名
55
+ * @returns 按顺序排列的守卫列表
56
+ */
57
+ collectGuards(controllerClass: Constructor<unknown>, methodName: string): GuardType[];
58
+ /**
59
+ * 执行守卫链
60
+ * @param context - 执行上下文
61
+ * @param container - DI 容器
62
+ * @returns 是否允许访问
63
+ * @throws ForbiddenException 如果守卫拒绝访问
64
+ */
65
+ executeGuards(context: ExecutionContext, container: Container): Promise<boolean>;
66
+ }
67
+ //# sourceMappingURL=guard-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-registry.d.ts","sourceRoot":"","sources":["../../../src/security/guards/guard-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAEV,SAAS,EACT,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAKjB;;;GAGG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,YAAY,CAAmB;IAEvC;;OAEG;IACH,OAAO,CAAC,cAAc,CAAoD;IAE1E;;;OAGG;IACI,eAAe,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;IAIpD;;;OAGG;IACI,eAAe,IAAI,SAAS,EAAE;IAIrC;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAKhC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA8BpB;;;;OAIG;IACI,mBAAmB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE;IAI9E;;;;;OAKG;IACI,eAAe,CACpB,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,GACjB,SAAS,EAAE;IAId;;;;;OAKG;IACI,aAAa,CAClB,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EACrC,UAAU,EAAE,MAAM,GACjB,SAAS,EAAE;IASd;;;;;;OAMG;IACU,aAAa,CACxB,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,OAAO,CAAC;CA0BpB"}
@@ -0,0 +1,7 @@
1
+ export * from './types';
2
+ export * from './decorators';
3
+ export * from './execution-context';
4
+ export * from './guard-registry';
5
+ export * from './reflector';
6
+ export * from './builtin';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/security/guards/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,57 @@
1
+ import 'reflect-metadata';
2
+ import type { Constructor } from '../../core/types';
3
+ /**
4
+ * Reflector 工具类
5
+ * 用于获取类和方法的元数据
6
+ */
7
+ export declare class Reflector {
8
+ /**
9
+ * 获取元数据
10
+ * 优先从方法获取,如果方法没有则从类获取
11
+ *
12
+ * @param metadataKey - 元数据键
13
+ * @param target - 目标类或方法
14
+ * @returns 元数据值
15
+ */
16
+ get<T>(metadataKey: string | symbol, target: Function | Object): T | undefined;
17
+ /**
18
+ * 从类获取元数据
19
+ * @param metadataKey - 元数据键
20
+ * @param target - 目标类
21
+ * @returns 元数据值
22
+ */
23
+ getFromClass<T>(metadataKey: string | symbol, target: Constructor<unknown>): T | undefined;
24
+ /**
25
+ * 从方法获取元数据
26
+ * @param metadataKey - 元数据键
27
+ * @param target - 目标类原型
28
+ * @param propertyKey - 方法名
29
+ * @returns 元数据值
30
+ */
31
+ getFromMethod<T>(metadataKey: string | symbol, target: Object, propertyKey: string | symbol): T | undefined;
32
+ /**
33
+ * 获取元数据(支持合并类和方法的元数据)
34
+ * 对于数组类型,将类和方法的元数据合并
35
+ *
36
+ * @param metadataKey - 元数据键
37
+ * @param target - 目标类
38
+ * @param propertyKey - 方法名
39
+ * @returns 合并后的元数据值
40
+ */
41
+ getAllAndMerge<T extends unknown[]>(metadataKey: string | symbol, target: Constructor<unknown>, propertyKey: string | symbol): T;
42
+ /**
43
+ * 获取元数据(方法优先)
44
+ * 如果方法有元数据则返回方法的,否则返回类的
45
+ *
46
+ * @param metadataKey - 元数据键
47
+ * @param target - 目标类
48
+ * @param propertyKey - 方法名
49
+ * @returns 元数据值
50
+ */
51
+ getAllAndOverride<T>(metadataKey: string | symbol, target: Constructor<unknown>, propertyKey: string | symbol): T | undefined;
52
+ }
53
+ /**
54
+ * Reflector Token
55
+ */
56
+ export declare const REFLECTOR_TOKEN: unique symbol;
57
+ //# sourceMappingURL=reflector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflector.d.ts","sourceRoot":"","sources":["../../../src/security/guards/reflector.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,SAAS;IACpB;;;;;;;OAOG;IACI,GAAG,CAAC,CAAC,EACV,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,QAAQ,GAAG,MAAM,GACxB,CAAC,GAAG,SAAS;IAIhB;;;;;OAKG;IACI,YAAY,CAAC,CAAC,EACnB,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,CAAC,GAAG,SAAS;IAIhB;;;;;;OAMG;IACI,aAAa,CAAC,CAAC,EACpB,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,CAAC,GAAG,SAAS;IAIhB;;;;;;;;OAQG;IACI,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,EACvC,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,CAAC;IAQJ;;;;;;;;OAQG;IACI,iBAAiB,CAAC,CAAC,EACxB,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,CAAC,GAAG,SAAS;CAOjB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,eAAyC,CAAC"}
@@ -0,0 +1,126 @@
1
+ import type { Context } from '../../core/context';
2
+ import type { ResponseBuilder } from '../../request/response';
3
+ import type { Constructor } from '../../core/types';
4
+ import type { ServerWebSocket } from 'bun';
5
+ /**
6
+ * 守卫接口
7
+ * 守卫用于决定请求是否可以继续执行
8
+ */
9
+ export interface CanActivate {
10
+ /**
11
+ * 判断是否允许访问
12
+ * @param context - 执行上下文
13
+ * @returns 是否允许访问,可以是同步或异步的布尔值
14
+ */
15
+ canActivate(context: ExecutionContext): boolean | Promise<boolean>;
16
+ }
17
+ /**
18
+ * HTTP 参数主机接口
19
+ * 提供 HTTP 请求相关的上下文信息
20
+ */
21
+ export interface HttpArgumentsHost {
22
+ /**
23
+ * 获取请求上下文
24
+ * @returns Context 对象
25
+ */
26
+ getRequest(): Context;
27
+ /**
28
+ * 获取响应构建器
29
+ * @returns ResponseBuilder 对象(可能为 undefined)
30
+ */
31
+ getResponse(): ResponseBuilder | undefined;
32
+ }
33
+ /**
34
+ * WebSocket 参数主机接口
35
+ * 提供 WebSocket 连接相关的上下文信息
36
+ */
37
+ export interface WsArgumentsHost {
38
+ /**
39
+ * 获取 WebSocket 客户端
40
+ * @returns WebSocket 连接对象
41
+ */
42
+ getClient(): ServerWebSocket<unknown>;
43
+ /**
44
+ * 获取消息数据
45
+ * @returns 消息数据
46
+ */
47
+ getData(): unknown;
48
+ }
49
+ /**
50
+ * 执行上下文接口
51
+ * 提供请求处理过程中的上下文信息
52
+ */
53
+ export interface ExecutionContext {
54
+ /**
55
+ * 获取 HTTP 上下文
56
+ * @returns HTTP 参数主机
57
+ */
58
+ switchToHttp(): HttpArgumentsHost;
59
+ /**
60
+ * 获取 WebSocket 上下文
61
+ * @returns WebSocket 参数主机
62
+ */
63
+ switchToWs(): WsArgumentsHost;
64
+ /**
65
+ * 获取当前处理的控制器类
66
+ * @returns 控制器类构造函数
67
+ */
68
+ getClass(): Constructor<unknown>;
69
+ /**
70
+ * 获取当前处理的方法
71
+ * @returns 方法函数
72
+ */
73
+ getHandler(): Function;
74
+ /**
75
+ * 获取方法名
76
+ * @returns 方法名字符串
77
+ */
78
+ getMethodName(): string;
79
+ /**
80
+ * 获取方法或类的元数据
81
+ * @param key - 元数据键
82
+ * @returns 元数据值,如果不存在则返回 undefined
83
+ */
84
+ getMetadata<T>(key: string | symbol): T | undefined;
85
+ /**
86
+ * 获取请求参数
87
+ * @returns 请求参数数组
88
+ */
89
+ getArgs(): unknown[];
90
+ }
91
+ /**
92
+ * 守卫类型:可以是守卫类构造函数或守卫实例
93
+ */
94
+ export type GuardType = Constructor<CanActivate> | CanActivate;
95
+ /**
96
+ * 守卫元数据
97
+ */
98
+ export interface GuardMetadata {
99
+ /**
100
+ * 守卫列表
101
+ */
102
+ guards: GuardType[];
103
+ }
104
+ /**
105
+ * 守卫配置选项
106
+ */
107
+ export interface GuardOptions {
108
+ /**
109
+ * 是否跳过全局守卫
110
+ * @default false
111
+ */
112
+ skipGlobalGuards?: boolean;
113
+ }
114
+ /**
115
+ * 守卫元数据键
116
+ */
117
+ export declare const GUARDS_METADATA_KEY: unique symbol;
118
+ /**
119
+ * 守卫注册表 Token
120
+ */
121
+ export declare const GUARD_REGISTRY_TOKEN: unique symbol;
122
+ /**
123
+ * Roles 元数据键
124
+ */
125
+ export declare const ROLES_METADATA_KEY: unique symbol;
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/security/guards/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,eAAe,GAAG,SAAS,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAEtC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,YAAY,IAAI,iBAAiB,CAAC;IAElC;;;OAGG;IACH,UAAU,IAAI,eAAe,CAAC;IAE9B;;;OAGG;IACH,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,UAAU,IAAI,QAAQ,CAAC;IAEvB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,OAAO,IAAI,OAAO,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAsC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAA8C,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAqC,CAAC"}
@@ -5,4 +5,5 @@ export * from './access-decision-manager';
5
5
  export * from './filter';
6
6
  export * from './providers';
7
7
  export * from './security-module';
8
+ export * from './guards';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import type { JWTConfig, OAuth2Client, UserInfo } from '../auth/types';
2
+ import type { GuardType } from './guards/types';
3
+ import { GuardRegistry } from './guards/guard-registry';
2
4
  /**
3
5
  * 安全模块配置
4
6
  */
@@ -36,6 +38,10 @@ export interface SecurityModuleConfig {
36
38
  * @default false
37
39
  */
38
40
  defaultAuthRequired?: boolean;
41
+ /**
42
+ * 全局守卫列表
43
+ */
44
+ globalGuards?: GuardType[];
39
45
  }
40
46
  /**
41
47
  * 安全模块
@@ -46,5 +52,19 @@ export declare class SecurityModule {
46
52
  * @param config - 模块配置
47
53
  */
48
54
  static forRoot(config: SecurityModuleConfig): typeof SecurityModule;
55
+ /**
56
+ * 获取守卫注册表
57
+ * @returns 守卫注册表实例
58
+ */
59
+ static getGuardRegistry(): GuardRegistry | null;
60
+ /**
61
+ * 添加全局守卫
62
+ * @param guards - 守卫类或实例
63
+ */
64
+ static addGlobalGuards(...guards: GuardType[]): void;
65
+ /**
66
+ * 重置模块状态(主要用于测试)
67
+ */
68
+ static reset(): void;
49
69
  }
50
70
  //# sourceMappingURL=security-module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"security-module.d.ts","sourceRoot":"","sources":["../../src/security/security-module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,GAAG,EAAE,SAAS,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;KACpD,CAAC;IACF;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,qBAKa,cAAc;IACzB;;;OAGG;WACW,OAAO,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,cAAc;CAiF3E"}
1
+ {"version":3,"file":"security-module.d.ts","sourceRoot":"","sources":["../../src/security/security-module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,GAAG,EAAE,SAAS,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;KACpD,CAAC;IACF;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;CAC5B;AAOD;;GAEG;AACH,qBAKa,cAAc;IACzB;;;OAGG;WACW,OAAO,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,cAAc;IA6G1E;;;OAGG;WACW,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAItD;;;OAGG;WACW,eAAe,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;IAM3D;;OAEG;WACW,KAAK,IAAI,IAAI;CAQ5B"}