@dangao/bun-server 0.1.3 → 0.1.5

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 (85) hide show
  1. package/dist/auth/controller.d.ts +35 -0
  2. package/dist/auth/controller.d.ts.map +1 -0
  3. package/dist/auth/decorators.d.ts +38 -0
  4. package/dist/auth/decorators.d.ts.map +1 -0
  5. package/dist/auth/index.d.ts +6 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/jwt.d.ts +43 -0
  8. package/dist/auth/jwt.d.ts.map +1 -0
  9. package/dist/auth/oauth2.d.ts +45 -0
  10. package/dist/auth/oauth2.d.ts.map +1 -0
  11. package/dist/auth/types.d.ts +238 -0
  12. package/dist/auth/types.d.ts.map +1 -0
  13. package/dist/config/config-module.d.ts +14 -0
  14. package/dist/config/config-module.d.ts.map +1 -0
  15. package/dist/config/index.d.ts +4 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/service.d.ts +32 -0
  18. package/dist/config/service.d.ts.map +1 -0
  19. package/dist/config/types.d.ts +22 -0
  20. package/dist/config/types.d.ts.map +1 -0
  21. package/dist/controller/controller.d.ts +5 -0
  22. package/dist/controller/controller.d.ts.map +1 -1
  23. package/dist/core/application.d.ts.map +1 -1
  24. package/dist/core/context.d.ts.map +1 -1
  25. package/dist/di/module-registry.d.ts +14 -2
  26. package/dist/di/module-registry.d.ts.map +1 -1
  27. package/dist/di/module.d.ts +12 -1
  28. package/dist/di/module.d.ts.map +1 -1
  29. package/dist/extensions/index.d.ts +1 -0
  30. package/dist/extensions/index.d.ts.map +1 -1
  31. package/dist/extensions/logger-module.d.ts +30 -0
  32. package/dist/extensions/logger-module.d.ts.map +1 -0
  33. package/dist/health/controller.d.ts +27 -0
  34. package/dist/health/controller.d.ts.map +1 -0
  35. package/dist/health/health-module.d.ts +9 -0
  36. package/dist/health/health-module.d.ts.map +1 -0
  37. package/dist/health/index.d.ts +4 -0
  38. package/dist/health/index.d.ts.map +1 -0
  39. package/dist/health/types.d.ts +22 -0
  40. package/dist/health/types.d.ts.map +1 -0
  41. package/dist/index.d.ts +6 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1388 -13
  44. package/dist/router/registry.d.ts +4 -1
  45. package/dist/router/registry.d.ts.map +1 -1
  46. package/dist/router/route.d.ts +9 -1
  47. package/dist/router/route.d.ts.map +1 -1
  48. package/dist/router/router.d.ts +14 -2
  49. package/dist/router/router.d.ts.map +1 -1
  50. package/dist/security/access-decision-manager.d.ts +14 -0
  51. package/dist/security/access-decision-manager.d.ts.map +1 -0
  52. package/dist/security/authentication-manager.d.ts +22 -0
  53. package/dist/security/authentication-manager.d.ts.map +1 -0
  54. package/dist/security/context.d.ts +51 -0
  55. package/dist/security/context.d.ts.map +1 -0
  56. package/dist/security/filter.d.ts +27 -0
  57. package/dist/security/filter.d.ts.map +1 -0
  58. package/dist/security/index.d.ts +8 -0
  59. package/dist/security/index.d.ts.map +1 -0
  60. package/dist/security/providers/index.d.ts +3 -0
  61. package/dist/security/providers/index.d.ts.map +1 -0
  62. package/dist/security/providers/jwt-provider.d.ts +19 -0
  63. package/dist/security/providers/jwt-provider.d.ts.map +1 -0
  64. package/dist/security/providers/oauth2-provider.d.ts +19 -0
  65. package/dist/security/providers/oauth2-provider.d.ts.map +1 -0
  66. package/dist/security/security-module.d.ts +50 -0
  67. package/dist/security/security-module.d.ts.map +1 -0
  68. package/dist/security/types.d.ts +152 -0
  69. package/dist/security/types.d.ts.map +1 -0
  70. package/dist/swagger/decorators.d.ts +56 -0
  71. package/dist/swagger/decorators.d.ts.map +1 -0
  72. package/dist/swagger/generator.d.ts +17 -0
  73. package/dist/swagger/generator.d.ts.map +1 -0
  74. package/dist/swagger/index.d.ts +7 -0
  75. package/dist/swagger/index.d.ts.map +1 -0
  76. package/dist/swagger/swagger-extension.d.ts +25 -0
  77. package/dist/swagger/swagger-extension.d.ts.map +1 -0
  78. package/dist/swagger/swagger-module.d.ts +37 -0
  79. package/dist/swagger/swagger-module.d.ts.map +1 -0
  80. package/dist/swagger/types.d.ts +176 -0
  81. package/dist/swagger/types.d.ts.map +1 -0
  82. package/dist/swagger/ui.d.ts +13 -0
  83. package/dist/swagger/ui.d.ts.map +1 -0
  84. package/package.json +1 -1
  85. package/readme.md +14 -10
@@ -0,0 +1,35 @@
1
+ import { OAuth2Service } from './oauth2';
2
+ import type { OAuth2TokenResponse } from './types';
3
+ /**
4
+ * OAuth2 令牌 Token
5
+ */
6
+ export declare const OAUTH2_SERVICE_TOKEN: unique symbol;
7
+ export declare const JWT_UTIL_TOKEN: unique symbol;
8
+ /**
9
+ * OAuth2 控制器
10
+ */
11
+ export declare class OAuth2Controller {
12
+ private readonly oauth2Service;
13
+ constructor(oauth2Service: OAuth2Service);
14
+ /**
15
+ * 授权端点
16
+ * GET /oauth2/authorize?client_id=...&redirect_uri=...&response_type=code&state=...
17
+ */
18
+ authorize(clientId: string, redirectUri: string, state?: string, scope?: string): Response;
19
+ /**
20
+ * 令牌端点
21
+ * POST /oauth2/token
22
+ */
23
+ token(body: Record<string, string>): Promise<OAuth2TokenResponse | any>;
24
+ /**
25
+ * 用户信息端点
26
+ * GET /oauth2/userinfo
27
+ * 注意:此端点需要认证,应该通过认证中间件保护
28
+ */
29
+ userinfo(): {
30
+ sub: string;
31
+ username: string;
32
+ roles: string[];
33
+ };
34
+ }
35
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/auth/controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAA2B,CAAC;AAC7D,eAAO,MAAM,cAAc,eAAqB,CAAC;AAEjD;;GAEG;AACH,qBAEa,gBAAgB;IAEK,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAG7E;;;OAGG;IAEI,SAAS,CAAqB,QAAQ,EAAE,MAAM,EAAyB,WAAW,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM;IA6CjK;;;OAGG;IAEU,KAAK,CAAS,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,GAAG,GAAG,CAAC;IAsC5F;;;;OAIG;IAGI,QAAQ;;;;;CAShB"}
@@ -0,0 +1,38 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * 认证配置
4
+ */
5
+ export interface AuthConfig {
6
+ /**
7
+ * 是否需要认证
8
+ * @default true
9
+ */
10
+ required?: boolean;
11
+ /**
12
+ * 允许的角色列表
13
+ */
14
+ roles?: string[];
15
+ /**
16
+ * 是否允许匿名访问
17
+ * @default false
18
+ */
19
+ allowAnonymous?: boolean;
20
+ }
21
+ /**
22
+ * 认证装饰器
23
+ * 用于标记需要认证的路由
24
+ */
25
+ export declare function Auth(config?: AuthConfig): MethodDecorator;
26
+ /**
27
+ * 获取认证元数据
28
+ */
29
+ export declare function getAuthMetadata(target: Object, propertyKey: string | symbol): AuthConfig | undefined;
30
+ /**
31
+ * 检查是否需要认证
32
+ */
33
+ export declare function requiresAuth(target: Object, propertyKey: string | symbol): boolean;
34
+ /**
35
+ * 检查角色权限
36
+ */
37
+ export declare function checkRoles(target: Object, propertyKey: string | symbol, userRoles?: string[]): boolean;
38
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/auth/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAO1B;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,eAAe,CAU7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,UAAU,GAAG,SAAS,CAGxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAOlF;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAMT"}
@@ -0,0 +1,6 @@
1
+ export * from './types';
2
+ export * from './jwt';
3
+ export * from './oauth2';
4
+ export * from './decorators';
5
+ export * from './controller';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { JWTConfig, JWTPayload } from './types';
2
+ /**
3
+ * JWT 工具类
4
+ */
5
+ export declare class JWTUtil {
6
+ private readonly config;
7
+ constructor(config: JWTConfig);
8
+ /**
9
+ * 生成访问令牌
10
+ * @param payload - JWT 载荷
11
+ * @returns 访问令牌
12
+ */
13
+ generateAccessToken(payload: Omit<JWTPayload, 'exp' | 'iat'>): string;
14
+ /**
15
+ * 生成刷新令牌
16
+ * @param payload - JWT 载荷
17
+ * @returns 刷新令牌
18
+ */
19
+ generateRefreshToken(payload: Omit<JWTPayload, 'exp' | 'iat'>): string;
20
+ /**
21
+ * 验证令牌
22
+ * @param token - JWT 令牌
23
+ * @returns 载荷或 null(如果无效)
24
+ */
25
+ verify(token: string): JWTPayload | null;
26
+ /**
27
+ * 签名 JWT
28
+ */
29
+ private sign;
30
+ /**
31
+ * 生成签名
32
+ */
33
+ private signature;
34
+ /**
35
+ * HMAC-SHA256 实现
36
+ */
37
+ private hmacSha256;
38
+ /**
39
+ * Base64URL 编码
40
+ */
41
+ private base64UrlEncode;
42
+ }
43
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/auth/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErD;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAE1B,MAAM,EAAE,SAAS;IASpC;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM;IAW5E;;;;OAIG;IACI,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,MAAM;IAW7E;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IA6B/C;;OAEG;IACH,OAAO,CAAC,IAAI;IAaZ;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAyClB;;OAEG;IACH,OAAO,CAAC,eAAe;CAOxB"}
@@ -0,0 +1,45 @@
1
+ import { JWTUtil } from './jwt';
2
+ import type { OAuth2Client, OAuth2AuthorizationRequest, OAuth2TokenRequest, OAuth2TokenResponse, OAuth2CodeConfig, UserInfo } from './types';
3
+ /**
4
+ * OAuth2 服务
5
+ */
6
+ export declare class OAuth2Service {
7
+ private readonly jwtUtil;
8
+ private readonly clients;
9
+ private readonly codes;
10
+ private readonly codeConfig;
11
+ private readonly userProvider?;
12
+ constructor(jwtUtil: JWTUtil, clients?: OAuth2Client[], codeConfig?: OAuth2CodeConfig, userProvider?: (userId: string) => Promise<UserInfo | null>);
13
+ /**
14
+ * 注册客户端
15
+ */
16
+ registerClient(client: OAuth2Client): void;
17
+ /**
18
+ * 验证授权请求
19
+ */
20
+ validateAuthorizationRequest(request: OAuth2AuthorizationRequest): {
21
+ valid: boolean;
22
+ error?: string;
23
+ };
24
+ /**
25
+ * 生成授权码
26
+ */
27
+ generateAuthorizationCode(clientId: string, redirectUri: string, userId: string, scope?: string): string;
28
+ /**
29
+ * 交换授权码获取令牌
30
+ */
31
+ exchangeCodeForToken(request: OAuth2TokenRequest): Promise<OAuth2TokenResponse | null>;
32
+ /**
33
+ * 刷新令牌
34
+ */
35
+ refreshToken(refreshToken: string): Promise<OAuth2TokenResponse | null>;
36
+ /**
37
+ * 生成随机字符串
38
+ */
39
+ private generateRandomString;
40
+ /**
41
+ * 清理过期的授权码
42
+ */
43
+ private cleanupExpiredCodes;
44
+ }
45
+ //# sourceMappingURL=oauth2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2.d.ts","sourceRoot":"","sources":["../../src/auth/oauth2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAEhB,QAAQ,EACT,MAAM,SAAS,CAAC;AAcjB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAA+C;gBAG3E,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,YAAY,EAAO,EAC5B,UAAU,GAAE,gBAAqB,EACjC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqB7D;;OAEG;IACI,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAIjD;;OAEG;IACI,4BAA4B,CACjC,OAAO,EAAE,0BAA0B,GAClC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAiBrC;;OAEG;IACI,yBAAyB,CAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,MAAM;IAgBT;;OAEG;IACU,oBAAoB,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA8DtC;;OAEG;IACU,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAsCpF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * 认证相关类型定义
3
+ */
4
+ /**
5
+ * JWT 载荷
6
+ */
7
+ export interface JWTPayload {
8
+ /**
9
+ * 用户 ID
10
+ */
11
+ sub: string;
12
+ /**
13
+ * 用户名
14
+ */
15
+ username?: string;
16
+ /**
17
+ * 角色列表
18
+ */
19
+ roles?: string[];
20
+ /**
21
+ * 过期时间(Unix 时间戳)
22
+ */
23
+ exp?: number;
24
+ /**
25
+ * 签发时间(Unix 时间戳)
26
+ */
27
+ iat?: number;
28
+ /**
29
+ * 其他自定义字段
30
+ */
31
+ [key: string]: unknown;
32
+ }
33
+ /**
34
+ * JWT 配置
35
+ */
36
+ export interface JWTConfig {
37
+ /**
38
+ * 密钥(用于签名和验证)
39
+ */
40
+ secret: string;
41
+ /**
42
+ * 访问令牌过期时间(秒)
43
+ * @default 3600 (1 hour)
44
+ */
45
+ accessTokenExpiresIn?: number;
46
+ /**
47
+ * 刷新令牌过期时间(秒)
48
+ * @default 86400 * 7 (7 days)
49
+ */
50
+ refreshTokenExpiresIn?: number;
51
+ /**
52
+ * 算法
53
+ * @default 'HS256'
54
+ */
55
+ algorithm?: 'HS256' | 'HS384' | 'HS512';
56
+ }
57
+ /**
58
+ * OAuth2 授权码配置
59
+ */
60
+ export interface OAuth2CodeConfig {
61
+ /**
62
+ * 授权码过期时间(秒)
63
+ * @default 600 (10 minutes)
64
+ */
65
+ expiresIn?: number;
66
+ /**
67
+ * 授权码长度
68
+ * @default 32
69
+ */
70
+ length?: number;
71
+ }
72
+ /**
73
+ * OAuth2 客户端配置
74
+ */
75
+ export interface OAuth2Client {
76
+ /**
77
+ * 客户端 ID
78
+ */
79
+ clientId: string;
80
+ /**
81
+ * 客户端密钥
82
+ */
83
+ clientSecret: string;
84
+ /**
85
+ * 重定向 URI 列表
86
+ */
87
+ redirectUris: string[];
88
+ /**
89
+ * 允许的授权类型
90
+ */
91
+ grantTypes: ('authorization_code' | 'refresh_token')[];
92
+ }
93
+ /**
94
+ * OAuth2 授权请求
95
+ */
96
+ export interface OAuth2AuthorizationRequest {
97
+ /**
98
+ * 客户端 ID
99
+ */
100
+ clientId: string;
101
+ /**
102
+ * 重定向 URI
103
+ */
104
+ redirectUri: string;
105
+ /**
106
+ * 响应类型
107
+ */
108
+ responseType: 'code';
109
+ /**
110
+ * 作用域(可选)
111
+ */
112
+ scope?: string;
113
+ /**
114
+ * 状态(用于 CSRF 防护)
115
+ */
116
+ state?: string;
117
+ }
118
+ /**
119
+ * OAuth2 令牌请求
120
+ */
121
+ export interface OAuth2TokenRequest {
122
+ /**
123
+ * 授权码
124
+ */
125
+ code: string;
126
+ /**
127
+ * 客户端 ID
128
+ */
129
+ clientId: string;
130
+ /**
131
+ * 客户端密钥
132
+ */
133
+ clientSecret: string;
134
+ /**
135
+ * 重定向 URI
136
+ */
137
+ redirectUri: string;
138
+ /**
139
+ * 授权类型
140
+ */
141
+ grantType: 'authorization_code' | 'refresh_token';
142
+ /**
143
+ * 刷新令牌(用于 refresh_token 授权类型)
144
+ */
145
+ refreshToken?: string;
146
+ }
147
+ /**
148
+ * OAuth2 令牌响应
149
+ */
150
+ export interface OAuth2TokenResponse {
151
+ /**
152
+ * 访问令牌
153
+ */
154
+ accessToken: string;
155
+ /**
156
+ * 令牌类型
157
+ */
158
+ tokenType: 'Bearer';
159
+ /**
160
+ * 过期时间(秒)
161
+ */
162
+ expiresIn: number;
163
+ /**
164
+ * 刷新令牌
165
+ */
166
+ refreshToken?: string;
167
+ /**
168
+ * 作用域
169
+ */
170
+ scope?: string;
171
+ }
172
+ /**
173
+ * 认证模块配置(已废弃,请使用 SecurityModuleConfig)
174
+ * @deprecated 使用 SecurityModule.forRoot() 替代
175
+ */
176
+ export interface AuthModuleOptions {
177
+ /**
178
+ * JWT 配置
179
+ */
180
+ jwt: JWTConfig;
181
+ /**
182
+ * OAuth2 客户端列表
183
+ */
184
+ clients?: OAuth2Client[];
185
+ /**
186
+ * 授权码配置
187
+ */
188
+ codeConfig?: OAuth2CodeConfig;
189
+ /**
190
+ * 是否启用 OAuth2 端点
191
+ * @default true
192
+ */
193
+ enableOAuth2Endpoints?: boolean;
194
+ /**
195
+ * OAuth2 端点前缀
196
+ * @default '/oauth2'
197
+ */
198
+ oauth2Prefix?: string;
199
+ }
200
+ /**
201
+ * 用户信息
202
+ */
203
+ export interface UserInfo {
204
+ /**
205
+ * 用户 ID
206
+ */
207
+ id: string;
208
+ /**
209
+ * 用户名
210
+ */
211
+ username: string;
212
+ /**
213
+ * 角色列表
214
+ */
215
+ roles?: string[];
216
+ /**
217
+ * 其他属性
218
+ */
219
+ [key: string]: unknown;
220
+ }
221
+ /**
222
+ * 认证上下文(附加到 Context)
223
+ */
224
+ export interface AuthContext {
225
+ /**
226
+ * 用户信息
227
+ */
228
+ user?: UserInfo;
229
+ /**
230
+ * JWT 载荷
231
+ */
232
+ payload?: JWTPayload;
233
+ /**
234
+ * 是否已认证
235
+ */
236
+ isAuthenticated: boolean;
237
+ }
238
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ConfigModuleOptions } from './types';
2
+ export declare class ConfigModule {
3
+ /**
4
+ * 创建配置模块
5
+ * @param options - 模块配置
6
+ */
7
+ static forRoot(options?: ConfigModuleOptions): typeof ConfigModule;
8
+ /**
9
+ * 获取环境变量快照
10
+ * 方便测试和未来扩展(如 .env 文件解析)
11
+ */
12
+ private static snapshotEnv;
13
+ }
14
+ //# sourceMappingURL=config-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-module.d.ts","sourceRoot":"","sources":["../../src/config/config-module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAGa,YAAY;IACvB;;;OAGG;WACW,OAAO,CACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,YAAY;IA+CtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAO3B"}
@@ -0,0 +1,4 @@
1
+ export { ConfigModule } from './config-module';
2
+ export { ConfigService } from './service';
3
+ export { CONFIG_SERVICE_TOKEN, type ConfigModuleOptions, } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,GACzB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 配置服务
3
+ * 提供类型安全的配置访问能力
4
+ */
5
+ export declare class ConfigService<TConfig extends Record<string, unknown> = Record<string, unknown>> {
6
+ private readonly config;
7
+ private readonly namespace?;
8
+ constructor(config: TConfig, namespace?: string);
9
+ /**
10
+ * 获取完整配置对象
11
+ */
12
+ getAll(): TConfig;
13
+ /**
14
+ * 获取配置值(支持点号路径)
15
+ * @param key - 配置键(如 "db.host")
16
+ * @param defaultValue - 默认值(可选)
17
+ */
18
+ get<T = unknown>(key: string, defaultValue?: T): T | undefined;
19
+ /**
20
+ * 获取必需的配置值,如果不存在则抛出错误
21
+ * @param key - 配置键
22
+ */
23
+ getRequired<T = unknown>(key: string): T;
24
+ /**
25
+ * 创建带命名空间的 ConfigService 视图
26
+ * @param namespace - 命名空间前缀
27
+ */
28
+ withNamespace(namespace: string): ConfigService<TConfig>;
29
+ private applyNamespace;
30
+ private getValueByPath;
31
+ }
32
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/config/service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;gBAEjB,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM;IAKtD;;OAEG;IACI,MAAM,IAAI,OAAO;IAIxB;;;;OAIG;IACI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IASrE;;;OAGG;IACI,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAQ/C;;;OAGG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;IAI/D,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;CAuBvB"}
@@ -0,0 +1,22 @@
1
+ export interface ConfigModuleOptions<TConfig extends Record<string, unknown> = Record<string, unknown>> {
2
+ /**
3
+ * 默认配置对象(最低优先级)
4
+ */
5
+ defaultConfig?: Partial<TConfig>;
6
+ /**
7
+ * 从环境变量加载配置
8
+ * @param env - process.env 快照
9
+ */
10
+ load?: (env: Record<string, string | undefined>) => Partial<TConfig>;
11
+ /**
12
+ * 配置验证函数(可抛出错误)
13
+ * 可用于集成 class-validator 风格的校验逻辑
14
+ */
15
+ validate?: (config: TConfig) => void;
16
+ /**
17
+ * 命名空间前缀,用于逻辑分组(可选)
18
+ */
19
+ namespace?: string;
20
+ }
21
+ export declare const CONFIG_SERVICE_TOKEN: unique symbol;
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpG;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAErE;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,oBAAoB,eAA8C,CAAC"}
@@ -55,6 +55,11 @@ export declare class ControllerRegistry {
55
55
  * @returns DI 容器
56
56
  */
57
57
  getContainer(): Container;
58
+ /**
59
+ * 获取所有已注册的控制器类
60
+ * @returns 控制器类数组
61
+ */
62
+ getRegisteredControllers(): Constructor<unknown>[];
58
63
  /**
59
64
  * 清除所有控制器注册和容器状态(主要用于测试)
60
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IA4HnF;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAiInF;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;OAGG;IACI,wBAAwB,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;IAIzD;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,kBAAuB;IAanD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACI,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrD;;OAEG;IACI,IAAI,IAAI,IAAI;IAInB;;;;OAIG;YACW,aAAa;IAsB3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKrD;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;IACI,YAAY;CAGpB"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,kBAAuB;IAcnD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACI,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrD;;OAEG;IACI,IAAI,IAAI,IAAI;IAInB;;;;OAIG;YACW,aAAa;IA2B3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAgBrD;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;IACI,YAAY;CAGpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD;;;GAGG;AACH,qBAAa,OAAO;IAClB;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IACH,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,KAAK,EAAE,eAAe,CAAC;IAEvC;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE3C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,eAAe,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACI,UAAU,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACI,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAC,CAAU;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;gBAElB,OAAO,EAAE,OAAO;IAUnC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQxC;;;OAGG;IACH,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,OAAO,EAG5B;IAED;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ5C;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;CAsBrE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD;;;GAGG;AACH,qBAAa,OAAO;IAClB;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IACH,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,KAAK,EAAE,eAAe,CAAC;IAEvC;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE3C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,eAAe,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACI,UAAU,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACI,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAC,CAAU;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;gBAElB,OAAO,EAAE,OAAO;IAUnC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQxC;;;OAGG;IACH,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,OAAO,EAG5B;IAED;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ5C;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;CA2BrE"}
@@ -1,11 +1,15 @@
1
1
  import { Container } from './container';
2
- import { type ModuleClass, type ModuleMetadata } from './module';
2
+ import { getModuleMetadata, type ModuleClass } from './module';
3
+ import type { ApplicationExtension } from '../extensions/types';
4
+ import type { Middleware } from '../middleware';
3
5
  interface ModuleRef {
4
6
  moduleClass: ModuleClass;
5
- metadata: Required<ModuleMetadata>;
7
+ metadata: ReturnType<typeof getModuleMetadata>;
6
8
  container: Container;
7
9
  controllersRegistered: boolean;
8
10
  attachedParents: Set<Container>;
11
+ extensions: ApplicationExtension[];
12
+ middlewares: Middleware[];
9
13
  }
10
14
  export declare class ModuleRegistry {
11
15
  private static instance;
@@ -21,6 +25,14 @@ export declare class ModuleRegistry {
21
25
  private registerProviders;
22
26
  private registerControllers;
23
27
  private attachModuleToParent;
28
+ /**
29
+ * 获取模块的所有扩展(包括导入模块的扩展)
30
+ */
31
+ getModuleExtensions(moduleClass: ModuleClass): ApplicationExtension[];
32
+ /**
33
+ * 获取模块的所有中间件(包括导入模块的中间件)
34
+ */
35
+ getModuleMiddlewares(moduleClass: ModuleClass): Middleware[];
24
36
  private registerExport;
25
37
  }
26
38
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/di/module-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,cAAc,EAA2C,MAAM,UAAU,CAAC;AAG7H,UAAU,SAAS;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CACjC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAY;WAEpB,WAAW,IAAI,cAAc;IAOpC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS;IAOzE,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAI7D,KAAK,IAAI,IAAI;IAMpB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,cAAc;CAgBvB"}
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/di/module-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAA2C,MAAM,UAAU,CAAC;AAExG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,UAAU,SAAS;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAY;WAEpB,WAAW,IAAI,cAAc;IAOpC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS;IAOzE,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAI7D,KAAK,IAAI,IAAI;IAMpB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACI,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,EAAE;IAQ5E;;OAEG;IACI,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,EAAE;IAQnE,OAAO,CAAC,cAAc;CAgBvB"}
@@ -2,6 +2,8 @@ import 'reflect-metadata';
2
2
  import type { Constructor } from '@/core/types';
3
3
  import type { Container } from './container';
4
4
  import type { Lifecycle } from './types';
5
+ import type { ApplicationExtension } from '../extensions/types';
6
+ import type { Middleware } from '../middleware';
5
7
  export type ModuleClass<T = unknown> = Constructor<T>;
6
8
  export type ProviderToken = Constructor<unknown> | string | symbol;
7
9
  export interface ClassProvider {
@@ -24,7 +26,16 @@ export interface ModuleMetadata {
24
26
  controllers?: Constructor<unknown>[];
25
27
  providers?: ModuleProvider[];
26
28
  exports?: ProviderToken[];
29
+ /**
30
+ * 应用扩展列表
31
+ */
32
+ extensions?: ApplicationExtension[];
33
+ /**
34
+ * 中间件列表
35
+ */
36
+ middlewares?: Middleware[];
27
37
  }
38
+ export declare const MODULE_METADATA_KEY: unique symbol;
28
39
  export declare function Module(metadata: ModuleMetadata): ClassDecorator;
29
- export declare function getModuleMetadata(moduleClass: ModuleClass): Required<ModuleMetadata>;
40
+ export declare function getModuleMetadata(moduleClass: ModuleClass): Required<Omit<ModuleMetadata, 'extensions' | 'middlewares'>> & Pick<ModuleMetadata, 'extensions' | 'middlewares'>;
30
41
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/di/module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC;IAC9C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAEpG,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAID,wBAAgB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAI/D;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAQpF"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/di/module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC;IAC9C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAEpG,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,mBAAmB,eAAsC,CAAC;AAEvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAI/D;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC,CAU7K"}
@@ -1,5 +1,6 @@
1
1
  export type { ApplicationExtension } from "./types";
2
2
  export { LOGGER_TOKEN, LoggerExtension } from "./logger-extension";
3
+ export { LoggerModule, type LoggerModuleOptions } from "./logger-module";
3
4
  export { LoggerManager, LogLevel, SimpleLogger } from "@dangao/logsmith";
4
5
  export type { LogEntry, Logger, LoggerOptions } from "@dangao/logsmith";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}