@dangao/bun-server 1.0.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controller/controller.d.ts +1 -1
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/core/application.d.ts.map +1 -1
- package/dist/database/database-extension.d.ts.map +1 -1
- package/dist/database/database-module.d.ts.map +1 -1
- package/dist/database/orm/transaction-decorator.d.ts +1 -0
- package/dist/database/orm/transaction-decorator.d.ts.map +1 -1
- package/dist/database/orm/transaction-interceptor.d.ts +12 -3
- package/dist/database/orm/transaction-interceptor.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +678 -310
- package/dist/interceptor/base-interceptor.d.ts +94 -0
- package/dist/interceptor/base-interceptor.d.ts.map +1 -0
- package/dist/interceptor/builtin/cache-interceptor.d.ts +69 -0
- package/dist/interceptor/builtin/cache-interceptor.d.ts.map +1 -0
- package/dist/interceptor/builtin/index.d.ts +4 -0
- package/dist/interceptor/builtin/index.d.ts.map +1 -0
- package/dist/interceptor/builtin/log-interceptor.d.ts +56 -0
- package/dist/interceptor/builtin/log-interceptor.d.ts.map +1 -0
- package/dist/interceptor/builtin/permission-interceptor.d.ts +70 -0
- package/dist/interceptor/builtin/permission-interceptor.d.ts.map +1 -0
- package/dist/interceptor/index.d.ts +7 -0
- package/dist/interceptor/index.d.ts.map +1 -0
- package/dist/interceptor/interceptor-chain.d.ts +22 -0
- package/dist/interceptor/interceptor-chain.d.ts.map +1 -0
- package/dist/interceptor/interceptor-registry.d.ts +59 -0
- package/dist/interceptor/interceptor-registry.d.ts.map +1 -0
- package/dist/interceptor/metadata.d.ts +12 -0
- package/dist/interceptor/metadata.d.ts.map +1 -0
- package/dist/interceptor/types.d.ts +42 -0
- package/dist/interceptor/types.d.ts.map +1 -0
- package/dist/middleware/decorators.d.ts +2 -1
- package/dist/middleware/decorators.d.ts.map +1 -1
- package/dist/router/decorators.d.ts.map +1 -1
- package/dist/router/registry.d.ts +2 -1
- package/dist/router/registry.d.ts.map +1 -1
- package/dist/router/route.d.ts +3 -2
- package/dist/router/route.d.ts.map +1 -1
- package/dist/router/router.d.ts +2 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/websocket/decorators.d.ts +2 -1
- package/dist/websocket/decorators.d.ts.map +1 -1
- package/package.json +5 -3
- package/readme.md +163 -2
- package/src/auth/controller.ts +148 -0
- package/src/auth/decorators.ts +81 -0
- package/src/auth/index.ts +12 -0
- package/src/auth/jwt.ts +169 -0
- package/src/auth/oauth2.ts +244 -0
- package/src/auth/types.ts +248 -0
- package/src/cache/cache-module.ts +67 -0
- package/src/cache/decorators.ts +202 -0
- package/src/cache/index.ts +27 -0
- package/src/cache/service.ts +151 -0
- package/src/cache/types.ts +420 -0
- package/src/config/config-module.ts +76 -0
- package/src/config/index.ts +8 -0
- package/src/config/service.ts +93 -0
- package/src/config/types.ts +27 -0
- package/src/controller/controller.ts +278 -0
- package/src/controller/decorators.ts +84 -0
- package/src/controller/index.ts +7 -0
- package/src/controller/metadata.ts +27 -0
- package/src/controller/param-binder.ts +157 -0
- package/src/core/application.ts +239 -0
- package/src/core/context.ts +228 -0
- package/src/core/index.ts +4 -0
- package/src/core/server.ts +128 -0
- package/src/core/types.ts +2 -0
- package/src/database/connection-manager.ts +239 -0
- package/src/database/connection-pool.ts +322 -0
- package/src/database/database-extension.ts +83 -0
- package/src/database/database-module.ts +121 -0
- package/src/database/health-indicator.ts +51 -0
- package/src/database/index.ts +47 -0
- package/src/database/orm/decorators.ts +155 -0
- package/src/database/orm/drizzle-repository.ts +39 -0
- package/src/database/orm/index.ts +23 -0
- package/src/database/orm/repository-decorator.ts +39 -0
- package/src/database/orm/repository.ts +103 -0
- package/src/database/orm/service.ts +49 -0
- package/src/database/orm/transaction-decorator.ts +76 -0
- package/src/database/orm/transaction-interceptor.ts +263 -0
- package/src/database/orm/transaction-manager.ts +276 -0
- package/src/database/orm/transaction-types.ts +140 -0
- package/src/database/orm/types.ts +99 -0
- package/src/database/service.ts +221 -0
- package/src/database/types.ts +171 -0
- package/src/di/container.ts +398 -0
- package/src/di/decorators.ts +228 -0
- package/src/di/index.ts +4 -0
- package/src/di/module-registry.ts +188 -0
- package/src/di/module.ts +65 -0
- package/src/di/types.ts +67 -0
- package/src/error/error-codes.ts +222 -0
- package/src/error/filter.ts +43 -0
- package/src/error/handler.ts +66 -0
- package/src/error/http-exception.ts +115 -0
- package/src/error/i18n.ts +217 -0
- package/src/error/index.ts +16 -0
- package/src/extensions/index.ts +5 -0
- package/src/extensions/logger-extension.ts +31 -0
- package/src/extensions/logger-module.ts +69 -0
- package/src/extensions/types.ts +14 -0
- package/src/files/index.ts +5 -0
- package/src/files/static-middleware.ts +53 -0
- package/src/files/storage.ts +67 -0
- package/src/files/types.ts +33 -0
- package/src/files/upload-middleware.ts +45 -0
- package/src/health/controller.ts +76 -0
- package/src/health/health-module.ts +51 -0
- package/src/health/index.ts +12 -0
- package/src/health/types.ts +28 -0
- package/src/index.ts +292 -0
- package/src/interceptor/base-interceptor.ts +203 -0
- package/src/interceptor/builtin/cache-interceptor.ts +169 -0
- package/src/interceptor/builtin/index.ts +28 -0
- package/src/interceptor/builtin/log-interceptor.ts +178 -0
- package/src/interceptor/builtin/permission-interceptor.ts +173 -0
- package/src/interceptor/index.ts +26 -0
- package/src/interceptor/interceptor-chain.ts +79 -0
- package/src/interceptor/interceptor-registry.ts +132 -0
- package/src/interceptor/metadata.ts +40 -0
- package/src/interceptor/types.ts +52 -0
- package/src/metrics/collector.ts +209 -0
- package/src/metrics/controller.ts +40 -0
- package/src/metrics/index.ts +15 -0
- package/src/metrics/metrics-module.ts +58 -0
- package/src/metrics/middleware.ts +46 -0
- package/src/metrics/prometheus.ts +79 -0
- package/src/metrics/types.ts +103 -0
- package/src/middleware/builtin/cors.ts +60 -0
- package/src/middleware/builtin/error-handler.ts +90 -0
- package/src/middleware/builtin/file-upload.ts +42 -0
- package/src/middleware/builtin/index.ts +14 -0
- package/src/middleware/builtin/logger.ts +91 -0
- package/src/middleware/builtin/rate-limit.ts +252 -0
- package/src/middleware/builtin/static-file.ts +88 -0
- package/src/middleware/decorators.ts +92 -0
- package/src/middleware/index.ts +11 -0
- package/src/middleware/middleware.ts +13 -0
- package/src/middleware/pipeline.ts +93 -0
- package/src/queue/decorators.ts +110 -0
- package/src/queue/index.ts +26 -0
- package/src/queue/queue-module.ts +64 -0
- package/src/queue/service.ts +302 -0
- package/src/queue/types.ts +341 -0
- package/src/request/body-parser.ts +133 -0
- package/src/request/file-handler.ts +46 -0
- package/src/request/index.ts +5 -0
- package/src/request/request.ts +107 -0
- package/src/request/response.ts +150 -0
- package/src/router/decorators.ts +123 -0
- package/src/router/index.ts +6 -0
- package/src/router/registry.ts +99 -0
- package/src/router/route.ts +141 -0
- package/src/router/router.ts +242 -0
- package/src/router/types.ts +27 -0
- package/src/security/access-decision-manager.ts +34 -0
- package/src/security/authentication-manager.ts +47 -0
- package/src/security/context.ts +92 -0
- package/src/security/filter.ts +162 -0
- package/src/security/index.ts +8 -0
- package/src/security/providers/index.ts +3 -0
- package/src/security/providers/jwt-provider.ts +60 -0
- package/src/security/providers/oauth2-provider.ts +70 -0
- package/src/security/security-module.ts +145 -0
- package/src/security/types.ts +165 -0
- package/src/session/decorators.ts +45 -0
- package/src/session/index.ts +19 -0
- package/src/session/middleware.ts +143 -0
- package/src/session/service.ts +218 -0
- package/src/session/session-module.ts +69 -0
- package/src/session/types.ts +373 -0
- package/src/swagger/decorators.ts +133 -0
- package/src/swagger/generator.ts +234 -0
- package/src/swagger/index.ts +7 -0
- package/src/swagger/swagger-extension.ts +41 -0
- package/src/swagger/swagger-module.ts +83 -0
- package/src/swagger/types.ts +188 -0
- package/src/swagger/ui.ts +98 -0
- package/src/testing/harness.ts +96 -0
- package/src/validation/decorators.ts +95 -0
- package/src/validation/errors.ts +28 -0
- package/src/validation/index.ts +14 -0
- package/src/validation/types.ts +35 -0
- package/src/validation/validator.ts +63 -0
- package/src/websocket/decorators.ts +53 -0
- package/src/websocket/index.ts +12 -0
- package/src/websocket/registry.ts +133 -0
- package/tests/cache/cache-module.test.ts +212 -0
- package/tests/config/config-module.test.ts +151 -0
- package/tests/controller/controller.test.ts +189 -0
- package/tests/controller/path-combination.test.ts +207 -0
- package/tests/core/application.test.ts +57 -0
- package/tests/core/context-body.test.ts +44 -0
- package/tests/core/context.test.ts +86 -0
- package/tests/core/edge-cases.test.ts +432 -0
- package/tests/database/database-module.test.ts +385 -0
- package/tests/database/orm.test.ts +164 -0
- package/tests/database/postgres-mysql-integration.test.ts +395 -0
- package/tests/database/transaction.test.ts +238 -0
- package/tests/di/container.test.ts +264 -0
- package/tests/di/module.test.ts +128 -0
- package/tests/error/error-codes.test.ts +121 -0
- package/tests/error/error-handler.test.ts +68 -0
- package/tests/error/error-handling.test.ts +254 -0
- package/tests/error/http-exception.test.ts +37 -0
- package/tests/error/i18n-integration.test.ts +175 -0
- package/tests/extensions/logger-extension.test.ts +40 -0
- package/tests/files/static-middleware.test.ts +67 -0
- package/tests/files/upload-middleware.test.ts +43 -0
- package/tests/health/health-module.test.ts +116 -0
- package/tests/integration/application-router.test.ts +85 -0
- package/tests/integration/body-parsing.test.ts +88 -0
- package/tests/integration/cache-e2e.test.ts +114 -0
- package/tests/integration/oauth2-e2e.test.ts +615 -0
- package/tests/integration/session-e2e.test.ts +207 -0
- package/tests/interceptor/builtin/cache-interceptor.test.ts +137 -0
- package/tests/interceptor/builtin/permission-interceptor.test.ts +182 -0
- package/tests/interceptor/interceptor-advanced-integration.test.ts +592 -0
- package/tests/interceptor/interceptor-arg-modification.test.ts +76 -0
- package/tests/interceptor/interceptor-chain.test.ts +199 -0
- package/tests/interceptor/interceptor-integration.test.ts +230 -0
- package/tests/interceptor/interceptor-registry.test.ts +200 -0
- package/tests/interceptor/perf/interceptor-performance.test.ts +341 -0
- package/tests/metrics/metrics-module.test.ts +178 -0
- package/tests/middleware/builtin.test.ts +206 -0
- package/tests/middleware/file-upload.test.ts +41 -0
- package/tests/middleware/middleware.test.ts +120 -0
- package/tests/middleware/pipeline.test.ts +72 -0
- package/tests/middleware/rate-limit.test.ts +314 -0
- package/tests/middleware/static-file.test.ts +62 -0
- package/tests/perf/harness.test.ts +48 -0
- package/tests/perf/optimization.test.ts +183 -0
- package/tests/perf/regression.test.ts +120 -0
- package/tests/queue/queue-module.test.ts +217 -0
- package/tests/request/body-parser.test.ts +96 -0
- package/tests/request/response.test.ts +99 -0
- package/tests/router/decorators.test.ts +46 -0
- package/tests/router/registry.test.ts +51 -0
- package/tests/router/route.test.ts +71 -0
- package/tests/router/router-normalization.test.ts +106 -0
- package/tests/router/router.test.ts +133 -0
- package/tests/security/access-decision-manager.test.ts +84 -0
- package/tests/security/authentication-manager.test.ts +81 -0
- package/tests/security/context.test.ts +302 -0
- package/tests/security/filter.test.ts +225 -0
- package/tests/security/jwt-provider.test.ts +106 -0
- package/tests/security/oauth2-provider.test.ts +269 -0
- package/tests/security/security-module.test.ts +143 -0
- package/tests/session/session-module.test.ts +307 -0
- package/tests/stress/di-stress.test.ts +30 -0
- package/tests/swagger/decorators.test.ts +153 -0
- package/tests/swagger/generator.test.ts +202 -0
- package/tests/swagger/swagger-extension.test.ts +72 -0
- package/tests/swagger/swagger-module.test.ts +79 -0
- package/tests/utils/test-port.ts +10 -0
- package/tests/validation/controller-validation.test.ts +64 -0
- package/tests/validation/validation.test.ts +42 -0
- package/tests/websocket/gateway.test.ts +68 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { Interceptor } from './types';
|
|
2
|
+
import type { Container } from '../di/container';
|
|
3
|
+
import type { Context } from '../core/context';
|
|
4
|
+
import 'reflect-metadata';
|
|
5
|
+
/**
|
|
6
|
+
* 拦截器基类
|
|
7
|
+
* 提供便捷的前置处理、后置处理和错误处理方法
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class BaseInterceptor implements Interceptor {
|
|
10
|
+
/**
|
|
11
|
+
* 执行拦截器逻辑
|
|
12
|
+
* 子类必须实现此方法
|
|
13
|
+
*/
|
|
14
|
+
abstract execute<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container, context?: Context): Promise<T>;
|
|
15
|
+
/**
|
|
16
|
+
* 前置处理(可选)
|
|
17
|
+
* 在方法执行前调用,子类可以覆盖此方法
|
|
18
|
+
* @param target - 目标对象
|
|
19
|
+
* @param propertyKey - 方法名
|
|
20
|
+
* @param args - 方法参数
|
|
21
|
+
* @param container - DI 容器
|
|
22
|
+
* @param context - 请求上下文(可选)
|
|
23
|
+
*/
|
|
24
|
+
protected before(target: unknown, propertyKey: string | symbol, args: unknown[], container: Container, context?: Context): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* 后置处理(可选)
|
|
27
|
+
* 在方法执行后调用,子类可以覆盖此方法
|
|
28
|
+
* @param target - 目标对象
|
|
29
|
+
* @param propertyKey - 方法名
|
|
30
|
+
* @param result - 方法执行结果
|
|
31
|
+
* @param container - DI 容器
|
|
32
|
+
* @param context - 请求上下文(可选)
|
|
33
|
+
* @returns 处理后的结果(默认返回原结果)
|
|
34
|
+
*/
|
|
35
|
+
protected after<T>(target: unknown, propertyKey: string | symbol, result: T, container: Container, context?: Context): Promise<T>;
|
|
36
|
+
/**
|
|
37
|
+
* 错误处理(可选)
|
|
38
|
+
* 在方法执行出错时调用,子类可以覆盖此方法
|
|
39
|
+
* @param target - 目标对象
|
|
40
|
+
* @param propertyKey - 方法名
|
|
41
|
+
* @param error - 错误对象
|
|
42
|
+
* @param container - DI 容器
|
|
43
|
+
* @param context - 请求上下文(可选)
|
|
44
|
+
* @returns 永远不会返回(总是抛出错误)
|
|
45
|
+
* @throws 重新抛出错误或抛出新的错误
|
|
46
|
+
*/
|
|
47
|
+
protected onError(target: unknown, propertyKey: string | symbol, error: unknown, container: Container, context?: Context): Promise<never>;
|
|
48
|
+
/**
|
|
49
|
+
* 获取元数据
|
|
50
|
+
* 从目标对象的方法上获取指定元数据键的元数据
|
|
51
|
+
* 支持从实例或原型上获取元数据(元数据通常存储在原型上)
|
|
52
|
+
* @param target - 目标对象(可能是实例或原型)
|
|
53
|
+
* @param propertyKey - 方法名
|
|
54
|
+
* @param metadataKey - 元数据键
|
|
55
|
+
* @returns 元数据值,如果不存在则返回 undefined
|
|
56
|
+
*/
|
|
57
|
+
protected getMetadata<T = unknown>(target: unknown, propertyKey: string | symbol, metadataKey: symbol): T | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* 从容器解析服务
|
|
60
|
+
* @param container - DI 容器
|
|
61
|
+
* @param token - 服务标识符
|
|
62
|
+
* @returns 服务实例
|
|
63
|
+
*/
|
|
64
|
+
protected resolveService<T>(container: Container, token: (new (...args: unknown[]) => T) | string | symbol): T;
|
|
65
|
+
/**
|
|
66
|
+
* 从上下文获取值
|
|
67
|
+
* @param context - 请求上下文
|
|
68
|
+
* @param key - 键名
|
|
69
|
+
* @returns 值,如果不存在则返回 undefined
|
|
70
|
+
*/
|
|
71
|
+
protected getContextValue<T = unknown>(context: Context | undefined, key: string): T | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* 从上下文获取请求头
|
|
74
|
+
* @param context - 请求上下文
|
|
75
|
+
* @param headerName - 请求头名称
|
|
76
|
+
* @returns 请求头值,如果不存在则返回 null
|
|
77
|
+
*/
|
|
78
|
+
protected getHeader(context: Context | undefined, headerName: string): string | null;
|
|
79
|
+
/**
|
|
80
|
+
* 从上下文获取查询参数
|
|
81
|
+
* @param context - 请求上下文
|
|
82
|
+
* @param paramName - 参数名称
|
|
83
|
+
* @returns 参数值,如果不存在则返回 null
|
|
84
|
+
*/
|
|
85
|
+
protected getQuery(context: Context | undefined, paramName: string): string | null;
|
|
86
|
+
/**
|
|
87
|
+
* 从上下文获取路径参数
|
|
88
|
+
* @param context - 请求上下文
|
|
89
|
+
* @param paramName - 参数名称
|
|
90
|
+
* @returns 参数值,如果不存在则返回 undefined
|
|
91
|
+
*/
|
|
92
|
+
protected getParam(context: Context | undefined, paramName: string): string | undefined;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=base-interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptor/base-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,8BAAsB,eAAgB,YAAW,WAAW;IAC1D;;;OAGG;aACa,OAAO,CAAC,CAAC,EACvB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IAEb;;;;;;;;OAQG;cACa,MAAM,CACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;;OASG;cACa,KAAK,CAAC,CAAC,EACrB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IAKb;;;;;;;;;;OAUG;cACa,OAAO,CACrB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,KAAK,CAAC;IAKjB;;;;;;;;OAQG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,EAC/B,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,WAAW,EAAE,MAAM,GAClB,CAAC,GAAG,SAAS;IAqChB;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EACxB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GACvD,CAAC;IAIJ;;;;;OAKG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAShG;;;;;OAKG;IACH,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOpF;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOlF;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAMxF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { BaseInterceptor } from '../base-interceptor';
|
|
3
|
+
import type { Container } from '../../di/container';
|
|
4
|
+
import type { Context } from '../../core/context';
|
|
5
|
+
/**
|
|
6
|
+
* 缓存元数据键
|
|
7
|
+
*/
|
|
8
|
+
export declare const CACHE_METADATA_KEY: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* 缓存配置选项
|
|
11
|
+
*/
|
|
12
|
+
export interface CacheOptions {
|
|
13
|
+
/**
|
|
14
|
+
* 缓存时间(毫秒)
|
|
15
|
+
* @default 60000 (1分钟)
|
|
16
|
+
*/
|
|
17
|
+
ttl?: number;
|
|
18
|
+
/**
|
|
19
|
+
* 自定义缓存键(可选)
|
|
20
|
+
* 如果不提供,将使用方法名和参数生成键
|
|
21
|
+
*/
|
|
22
|
+
key?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 缓存装饰器
|
|
26
|
+
* 标记方法需要缓存结果
|
|
27
|
+
* @param options - 缓存配置选项
|
|
28
|
+
*/
|
|
29
|
+
export declare function Cache(options?: CacheOptions): MethodDecorator;
|
|
30
|
+
/**
|
|
31
|
+
* 获取缓存元数据
|
|
32
|
+
*/
|
|
33
|
+
export declare function getCacheMetadata(target: unknown, propertyKey: string | symbol): CacheOptions | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* 缓存拦截器
|
|
36
|
+
* 实现方法结果缓存功能
|
|
37
|
+
*/
|
|
38
|
+
export declare class CacheInterceptor extends BaseInterceptor {
|
|
39
|
+
/**
|
|
40
|
+
* 内存缓存存储
|
|
41
|
+
* key: 缓存键
|
|
42
|
+
* value: { data: 缓存数据, expires: 过期时间戳 }
|
|
43
|
+
*/
|
|
44
|
+
private static cache;
|
|
45
|
+
/**
|
|
46
|
+
* 执行拦截器逻辑
|
|
47
|
+
*/
|
|
48
|
+
execute<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container, context?: Context): Promise<T>;
|
|
49
|
+
/**
|
|
50
|
+
* 生成缓存键
|
|
51
|
+
*/
|
|
52
|
+
private generateCacheKey;
|
|
53
|
+
/**
|
|
54
|
+
* 清除所有缓存
|
|
55
|
+
*/
|
|
56
|
+
static clearCache(): void;
|
|
57
|
+
/**
|
|
58
|
+
* 清除指定键的缓存
|
|
59
|
+
*/
|
|
60
|
+
static clearCacheKey(key: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* 获取缓存统计信息
|
|
63
|
+
*/
|
|
64
|
+
static getCacheStats(): {
|
|
65
|
+
size: number;
|
|
66
|
+
keys: string[];
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=cache-interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-interceptor.d.ts","sourceRoot":"","sources":["../../../src/interceptor/builtin/cache-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAiD,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,eAAe,CAQjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,YAAY,GAAG,SAAS,CAK1B;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;IACnD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAGhB;IAEJ;;OAEG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IAuCb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;WACW,UAAU,IAAI,IAAI;IAIhC;;OAEG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9C;;OAEG;WACW,aAAa,IAAI;QAC7B,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB;CAMF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Cache, CacheInterceptor, CACHE_METADATA_KEY, getCacheMetadata, type CacheOptions, } from './cache-interceptor';
|
|
2
|
+
export { Permission, PermissionInterceptor, PERMISSION_METADATA_KEY, getPermissionMetadata, type PermissionOptions, type PermissionService, } from './permission-interceptor';
|
|
3
|
+
export { Log, LogInterceptor, LOG_METADATA_KEY, getLogMetadata, type LogOptions, } from './log-interceptor';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interceptor/builtin/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,GAAG,EACH,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { BaseInterceptor } from '../base-interceptor';
|
|
3
|
+
import type { Container } from '../../di/container';
|
|
4
|
+
import type { Context } from '../../core/context';
|
|
5
|
+
/**
|
|
6
|
+
* 日志元数据键
|
|
7
|
+
*/
|
|
8
|
+
export declare const LOG_METADATA_KEY: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* 日志配置选项
|
|
11
|
+
*/
|
|
12
|
+
export interface LogOptions {
|
|
13
|
+
/**
|
|
14
|
+
* 日志级别
|
|
15
|
+
* @default 'info'
|
|
16
|
+
*/
|
|
17
|
+
level?: 'debug' | 'info' | 'warn' | 'error';
|
|
18
|
+
/**
|
|
19
|
+
* 自定义日志消息(可选)
|
|
20
|
+
* 如果不提供,将使用方法名
|
|
21
|
+
*/
|
|
22
|
+
message?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 是否记录方法参数
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
logArgs?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* 是否记录返回值
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
logResult?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 是否记录执行时间
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
logDuration?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 日志装饰器
|
|
41
|
+
* 标记方法需要记录日志
|
|
42
|
+
* @param options - 日志配置选项
|
|
43
|
+
*/
|
|
44
|
+
export declare function Log(options?: LogOptions): MethodDecorator;
|
|
45
|
+
/**
|
|
46
|
+
* 获取日志元数据
|
|
47
|
+
*/
|
|
48
|
+
export declare function getLogMetadata(target: unknown, propertyKey: string | symbol): LogOptions | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* 日志拦截器
|
|
51
|
+
* 记录方法执行日志,包括执行时间、参数和返回值
|
|
52
|
+
*/
|
|
53
|
+
export declare class LogInterceptor extends BaseInterceptor {
|
|
54
|
+
execute<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container, context?: Context): Promise<T>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=log-interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-interceptor.d.ts","sourceRoot":"","sources":["../../../src/interceptor/builtin/log-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIlD;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAA+C,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAE5C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,eAAe,CAW7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,UAAU,GAAG,SAAS,CAKxB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACpC,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;CAsFd"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { BaseInterceptor } from '../base-interceptor';
|
|
3
|
+
import type { Container } from '../../di/container';
|
|
4
|
+
import type { Context } from '../../core/context';
|
|
5
|
+
/**
|
|
6
|
+
* 权限元数据键
|
|
7
|
+
*/
|
|
8
|
+
export declare const PERMISSION_METADATA_KEY: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* 权限配置选项
|
|
11
|
+
*/
|
|
12
|
+
export interface PermissionOptions {
|
|
13
|
+
/**
|
|
14
|
+
* 资源名称
|
|
15
|
+
*/
|
|
16
|
+
resource: string;
|
|
17
|
+
/**
|
|
18
|
+
* 操作名称(如:read, write, delete)
|
|
19
|
+
*/
|
|
20
|
+
action: string;
|
|
21
|
+
/**
|
|
22
|
+
* 是否允许匿名访问
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
allowAnonymous?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 权限服务接口
|
|
29
|
+
* 用户需要实现此接口来提供权限检查逻辑
|
|
30
|
+
*/
|
|
31
|
+
export interface PermissionService {
|
|
32
|
+
/**
|
|
33
|
+
* 检查权限
|
|
34
|
+
* @param userId - 用户 ID(从请求头或上下文获取)
|
|
35
|
+
* @param resource - 资源名称
|
|
36
|
+
* @param action - 操作名称
|
|
37
|
+
* @returns 是否有权限
|
|
38
|
+
*/
|
|
39
|
+
check(userId: string | null, resource: string, action: string): Promise<boolean>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 权限装饰器
|
|
43
|
+
* 标记方法需要权限检查
|
|
44
|
+
* @param options - 权限配置选项
|
|
45
|
+
*/
|
|
46
|
+
export declare function Permission(options: PermissionOptions): MethodDecorator;
|
|
47
|
+
/**
|
|
48
|
+
* 获取权限元数据
|
|
49
|
+
*/
|
|
50
|
+
export declare function getPermissionMetadata(target: unknown, propertyKey: string | symbol): PermissionOptions | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* 权限拦截器
|
|
53
|
+
* 实现权限检查功能
|
|
54
|
+
*/
|
|
55
|
+
export declare class PermissionInterceptor extends BaseInterceptor {
|
|
56
|
+
/**
|
|
57
|
+
* 权限服务 Token
|
|
58
|
+
* 用户需要在 DI 容器中注册 PermissionService 实现
|
|
59
|
+
*/
|
|
60
|
+
static readonly PERMISSION_SERVICE_TOKEN: unique symbol;
|
|
61
|
+
/**
|
|
62
|
+
* 执行拦截器逻辑
|
|
63
|
+
*/
|
|
64
|
+
execute<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container, context?: Context): Promise<T>;
|
|
65
|
+
/**
|
|
66
|
+
* 从上下文获取用户 ID
|
|
67
|
+
*/
|
|
68
|
+
private getUserId;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=permission-interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-interceptor.d.ts","sourceRoot":"","sources":["../../../src/interceptor/builtin/permission-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAsD,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAStE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,iBAAiB,GAAG,SAAS,CAK/B;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IACxD;;;OAGG;IACH,gBAAuB,wBAAwB,gBAE7C;IAEF;;OAEG;IACU,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;IAmDb;;OAEG;IACH,OAAO,CAAC,SAAS;CAoBlB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { type Interceptor, type InterceptorMetadata, INTERCEPTOR_REGISTRY_TOKEN } from './types';
|
|
2
|
+
export { InterceptorRegistry, type InterceptorRegistry as InterceptorRegistryType } from './interceptor-registry';
|
|
3
|
+
export { InterceptorChain } from './interceptor-chain';
|
|
4
|
+
export { scanInterceptorMetadata } from './metadata';
|
|
5
|
+
export { BaseInterceptor } from './base-interceptor';
|
|
6
|
+
export { Cache, CacheInterceptor, CACHE_METADATA_KEY, getCacheMetadata, type CacheOptions, Permission, PermissionInterceptor, PERMISSION_METADATA_KEY, getPermissionMetadata, type PermissionOptions, type PermissionService, Log, LogInterceptor, LOG_METADATA_KEY, getLogMetadata, type LogOptions, } from './builtin';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,YAAY,EACjB,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,GAAG,EACH,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Interceptor } from './types';
|
|
2
|
+
import type { Container } from '../di/container';
|
|
3
|
+
import type { Context } from '../core/context';
|
|
4
|
+
/**
|
|
5
|
+
* 拦截器链执行器
|
|
6
|
+
* 负责按优先级顺序执行多个拦截器
|
|
7
|
+
*/
|
|
8
|
+
export declare class InterceptorChain {
|
|
9
|
+
/**
|
|
10
|
+
* 执行拦截器链
|
|
11
|
+
* @param interceptors - 拦截器列表(已按优先级排序)
|
|
12
|
+
* @param target - 目标对象
|
|
13
|
+
* @param propertyKey - 方法名
|
|
14
|
+
* @param originalMethod - 原始方法
|
|
15
|
+
* @param args - 方法参数
|
|
16
|
+
* @param container - DI 容器
|
|
17
|
+
* @param context - 请求上下文(可选)
|
|
18
|
+
* @returns 方法执行结果
|
|
19
|
+
*/
|
|
20
|
+
static execute<T>(interceptors: Interceptor[], target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container, context?: Context): Promise<T>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=interceptor-chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptor-chain.d.ts","sourceRoot":"","sources":["../../src/interceptor/interceptor-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;;;;OAUG;WACiB,OAAO,CAAC,CAAC,EAC3B,YAAY,EAAE,WAAW,EAAE,EAC3B,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;CAiDd"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Interceptor, InterceptorMetadata } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 拦截器注册表
|
|
4
|
+
* 管理所有注册的拦截器,支持按优先级排序
|
|
5
|
+
*/
|
|
6
|
+
export declare class InterceptorRegistry {
|
|
7
|
+
/**
|
|
8
|
+
* 拦截器存储
|
|
9
|
+
* key: 元数据键(Symbol)
|
|
10
|
+
* value: 拦截器元数据列表
|
|
11
|
+
*/
|
|
12
|
+
private readonly interceptors;
|
|
13
|
+
/**
|
|
14
|
+
* 注册拦截器
|
|
15
|
+
* @param metadataKey - 元数据键(用于匹配装饰器)
|
|
16
|
+
* @param interceptor - 拦截器实例
|
|
17
|
+
* @param priority - 优先级(数字越小优先级越高,默认 100)
|
|
18
|
+
*/
|
|
19
|
+
register(metadataKey: symbol, interceptor: Interceptor, priority?: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* 获取拦截器元数据列表(按优先级排序)
|
|
22
|
+
* @param metadataKey - 元数据键
|
|
23
|
+
* @returns 拦截器元数据列表
|
|
24
|
+
*/
|
|
25
|
+
getInterceptorMetadata(metadataKey: symbol): InterceptorMetadata[];
|
|
26
|
+
/**
|
|
27
|
+
* 获取拦截器列表(按优先级排序)
|
|
28
|
+
* @param metadataKey - 元数据键
|
|
29
|
+
* @returns 拦截器列表
|
|
30
|
+
*/
|
|
31
|
+
getInterceptors(metadataKey: symbol): Interceptor[];
|
|
32
|
+
/**
|
|
33
|
+
* 检查是否有拦截器
|
|
34
|
+
* @param metadataKey - 元数据键
|
|
35
|
+
* @returns 是否有拦截器
|
|
36
|
+
*/
|
|
37
|
+
hasInterceptor(metadataKey: symbol): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* 获取所有已注册的元数据键
|
|
40
|
+
* @returns 元数据键迭代器
|
|
41
|
+
*/
|
|
42
|
+
getAllMetadataKeys(): IterableIterator<symbol>;
|
|
43
|
+
/**
|
|
44
|
+
* 清除所有拦截器
|
|
45
|
+
*/
|
|
46
|
+
clear(): void;
|
|
47
|
+
/**
|
|
48
|
+
* 移除指定元数据键的所有拦截器
|
|
49
|
+
* @param metadataKey - 元数据键
|
|
50
|
+
*/
|
|
51
|
+
remove(metadataKey: symbol): void;
|
|
52
|
+
/**
|
|
53
|
+
* 获取拦截器数量
|
|
54
|
+
* @param metadataKey - 元数据键(可选)
|
|
55
|
+
* @returns 拦截器数量
|
|
56
|
+
*/
|
|
57
|
+
count(metadataKey?: symbol): number;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=interceptor-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptor-registry.d.ts","sourceRoot":"","sources":["../../src/interceptor/interceptor-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGhE;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4C;IAEzE;;;;;OAKG;IACI,QAAQ,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,QAAQ,GAAE,MAAY,GACrB,IAAI;IAwBP;;;;OAIG;IACI,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAUzE;;;;OAIG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE;IAU1D;;;;OAIG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKnD;;;OAGG;IACI,kBAAkB,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIrD;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;;OAGG;IACI,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIxC;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;CAa3C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { InterceptorRegistry } from './interceptor-registry';
|
|
3
|
+
import type { Interceptor } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* 扫描方法上的所有拦截器元数据
|
|
6
|
+
* @param target - 目标对象(控制器实例的原型)
|
|
7
|
+
* @param propertyKey - 方法名
|
|
8
|
+
* @param registry - 拦截器注册表
|
|
9
|
+
* @returns 匹配的拦截器列表(按优先级排序)
|
|
10
|
+
*/
|
|
11
|
+
export declare function scanInterceptorMetadata(target: object, propertyKey: string | symbol, registry: InterceptorRegistry): Interceptor[];
|
|
12
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/interceptor/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,SAAS,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,QAAQ,EAAE,mBAAmB,GAC5B,WAAW,EAAE,CAuBf"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Container } from '../di/container';
|
|
2
|
+
import type { Context } from '../core/context';
|
|
3
|
+
/**
|
|
4
|
+
* 拦截器接口
|
|
5
|
+
* 定义拦截器的核心执行方法
|
|
6
|
+
*/
|
|
7
|
+
export interface Interceptor {
|
|
8
|
+
/**
|
|
9
|
+
* 执行拦截器逻辑
|
|
10
|
+
* @param target - 目标对象(控制器实例的原型)
|
|
11
|
+
* @param propertyKey - 方法名
|
|
12
|
+
* @param originalMethod - 原始方法
|
|
13
|
+
* @param args - 方法参数
|
|
14
|
+
* @param container - DI 容器
|
|
15
|
+
* @param context - 请求上下文(可选)
|
|
16
|
+
* @returns 方法执行结果
|
|
17
|
+
*/
|
|
18
|
+
execute<T>(target: unknown, propertyKey: string | symbol, originalMethod: (...args: unknown[]) => T | Promise<T>, args: unknown[], container: Container, context?: Context): Promise<T>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 拦截器元数据
|
|
22
|
+
* 用于存储拦截器的注册信息
|
|
23
|
+
*/
|
|
24
|
+
export interface InterceptorMetadata {
|
|
25
|
+
/**
|
|
26
|
+
* 元数据键(用于匹配装饰器)
|
|
27
|
+
*/
|
|
28
|
+
metadataKey: symbol;
|
|
29
|
+
/**
|
|
30
|
+
* 拦截器实例
|
|
31
|
+
*/
|
|
32
|
+
interceptor: Interceptor;
|
|
33
|
+
/**
|
|
34
|
+
* 优先级(数字越小优先级越高,默认 100)
|
|
35
|
+
*/
|
|
36
|
+
priority: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 拦截器注册表 Token
|
|
40
|
+
*/
|
|
41
|
+
export declare const INTERCEPTOR_REGISTRY_TOKEN: unique symbol;
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interceptor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;OASG;IACH,OAAO,CAAC,CAAC,EACP,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACtD,IAAI,EAAE,OAAO,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,eAAoD,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
+
import type { Constructor } from '../core/types';
|
|
2
3
|
import type { Middleware } from './middleware';
|
|
3
4
|
import { type RateLimitOptions } from './builtin/rate-limit';
|
|
4
5
|
/**
|
|
@@ -18,7 +19,7 @@ export declare function RateLimit(options: RateLimitOptions): MethodDecorator;
|
|
|
18
19
|
* @param constructor - 控制器构造函数
|
|
19
20
|
* @returns 中间件列表
|
|
20
21
|
*/
|
|
21
|
-
export declare function getClassMiddlewares(constructor:
|
|
22
|
+
export declare function getClassMiddlewares(constructor: Constructor<unknown>): Middleware[];
|
|
22
23
|
/**
|
|
23
24
|
* 获取方法级中间件
|
|
24
25
|
* @param target - 控制器原型
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/middleware/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAoCxF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,GAAG,eAAe,CAQ5F;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAKpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/middleware/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAoCxF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,GAAG,eAAe,CAQ5F;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAKpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,UAAU,EAAE,CAInF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,UAAU,EAAE,CAKd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/router/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/router/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8DD;;;GAGG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,YAzDL,GAAG,eAAe,MAAM,GAAG,MAAM,cAAc,kBAAkB,UA2D3F;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,YAjEN,GAAG,eAAe,MAAM,GAAG,MAAM,cAAc,kBAAkB,UAmE3F;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,YAzEL,GAAG,eAAe,MAAM,GAAG,MAAM,cAAc,kBAAkB,UA2E3F;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,YAjFR,GAAG,eAAe,MAAM,GAAG,MAAM,cAAc,kBAAkB,UAmF3F;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,YAzFP,GAAG,eAAe,MAAM,GAAG,MAAM,cAAc,kBAAkB,UA2F3F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Router } from './router';
|
|
2
|
+
import type { Constructor } from '../core/types';
|
|
2
3
|
import type { HttpMethod, RouteHandler } from './types';
|
|
3
4
|
import type { Middleware } from '../middleware';
|
|
4
5
|
/**
|
|
@@ -23,7 +24,7 @@ export declare class RouteRegistry {
|
|
|
23
24
|
* @param controllerClass - 控制器类(可选)
|
|
24
25
|
* @param methodName - 方法名(可选)
|
|
25
26
|
*/
|
|
26
|
-
register(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: Middleware[], controllerClass?:
|
|
27
|
+
register(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: Middleware[], controllerClass?: Constructor<unknown>, methodName?: string): void;
|
|
27
28
|
/**
|
|
28
29
|
* 注册 GET 路由
|
|
29
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/router/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP;;;OAGG;WACW,WAAW,IAAI,aAAa;IAO1C;;;;;;;;OAQG;IACI,QAAQ,CACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,WAAW,GAAE,UAAU,EAAO,EAC9B,eAAe,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/router/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAIP;;;OAGG;WACW,WAAW,IAAI,aAAa;IAO1C;;;;;;;;OAQG;IACI,QAAQ,CACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,WAAW,GAAE,UAAU,EAAO,EAC9B,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EACtC,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAIP;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIrF;;OAEG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAItF;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIrF;;OAEG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIxF;;OAEG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIvF;;;OAGG;IACI,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,KAAK,IAAI,IAAI;CAGrB"}
|
package/dist/router/route.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Context } from '../core/context';
|
|
2
|
+
import type { Constructor } from '../core/types';
|
|
2
3
|
import type { HttpMethod, RouteHandler, RouteMatch } from './types';
|
|
3
4
|
import type { Middleware } from '../middleware';
|
|
4
5
|
/**
|
|
@@ -21,7 +22,7 @@ export declare class Route {
|
|
|
21
22
|
/**
|
|
22
23
|
* 控制器类(可选,用于控制器路由)
|
|
23
24
|
*/
|
|
24
|
-
readonly controllerClass?:
|
|
25
|
+
readonly controllerClass?: Constructor<unknown>;
|
|
25
26
|
/**
|
|
26
27
|
* 方法名(可选,用于控制器路由)
|
|
27
28
|
*/
|
|
@@ -37,7 +38,7 @@ export declare class Route {
|
|
|
37
38
|
private readonly middlewarePipeline;
|
|
38
39
|
private readonly staticKey?;
|
|
39
40
|
readonly isStatic: boolean;
|
|
40
|
-
constructor(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: Middleware[], controllerClass?:
|
|
41
|
+
constructor(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: Middleware[], controllerClass?: Constructor<unknown>, methodName?: string);
|
|
41
42
|
/**
|
|
42
43
|
* 解析路径,生成匹配模式和参数名列表
|
|
43
44
|
* @param path - 路由路径
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/router/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,qBAAa,KAAK;IAChB;;OAEG;IACH,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,OAAO,EAAE,YAAY,CAAC;IAEtC;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/router/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,qBAAa,KAAK;IAChB;;OAEG;IACH,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,OAAO,EAAE,YAAY,CAAC;IAEtC;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAEvD;;OAEG;IACH,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IAEtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,SAAgB,QAAQ,EAAE,OAAO,CAAC;gBAGhC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,WAAW,GAAE,UAAU,EAAO,EAC9B,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EACtC,UAAU,CAAC,EAAE,MAAM;IAmBrB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAajB;;;;;OAKG;IACI,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAqB1D;;;;OAIG;IACU,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQzD;;OAEG;IACI,YAAY,IAAI,MAAM,GAAG,SAAS;CAG1C"}
|
package/dist/router/router.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Context } from '../core/context';
|
|
2
|
+
import type { Constructor } from '../core/types';
|
|
2
3
|
import { Route } from './route';
|
|
3
4
|
import type { HttpMethod, RouteHandler, RouteMatch } from './types';
|
|
4
5
|
import type { Middleware } from '../middleware';
|
|
@@ -31,7 +32,7 @@ export declare class Router {
|
|
|
31
32
|
* @param controllerClass - 控制器类(可选)
|
|
32
33
|
* @param methodName - 方法名(可选)
|
|
33
34
|
*/
|
|
34
|
-
register(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: Middleware[], controllerClass?:
|
|
35
|
+
register(method: HttpMethod, path: string, handler: RouteHandler, middlewares?: Middleware[], controllerClass?: Constructor<unknown>, methodName?: string): void;
|
|
35
36
|
/**
|
|
36
37
|
* 注册 GET 路由
|
|
37
38
|
* @param path - 路由路径
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,qBAAa,MAAM;IACjB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0D;IAErF;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;;;OAQG;IACI,QAAQ,CACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,WAAW,GAAE,UAAU,EAAO,EAC9B,eAAe,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;GAGG;AACH,qBAAa,MAAM;IACjB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0D;IAErF;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;;;OAQG;IACI,QAAQ,CACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,WAAW,GAAE,UAAU,EAAO,EAC9B,eAAe,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EACtC,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAgBP;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIrF;;;;OAIG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAItF;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIrF;;;;OAIG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIxF;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,GAAE,UAAU,EAAO,GAAG,IAAI;IAIvF;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAKrE;;;;;OAKG;IACI,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,SAAS;IAmC5G;;;OAGG;IACU,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD;;;;OAIG;IACU,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IA4BpE;;;OAGG;IACI,SAAS,IAAI,SAAS,KAAK,EAAE;IAIpC;;OAEG;IACI,KAAK,IAAI,IAAI;CAMrB"}
|
|
@@ -11,6 +11,7 @@ export declare function WebSocketGateway(path: string): ClassDecorator;
|
|
|
11
11
|
export declare const OnOpen: MethodDecorator;
|
|
12
12
|
export declare const OnMessage: MethodDecorator;
|
|
13
13
|
export declare const OnClose: MethodDecorator;
|
|
14
|
-
|
|
14
|
+
import type { Constructor } from '../core/types';
|
|
15
|
+
export declare function getGatewayMetadata(constructor: Constructor<unknown>): WebSocketGatewayMetadata | undefined;
|
|
15
16
|
export declare function getHandlerMetadata(target: object): WebSocketHandlerMetadata;
|
|
16
17
|
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/websocket/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAI7D;AAeD,eAAO,MAAM,MAAM,iBAAiC,CAAC;AACrD,eAAO,MAAM,SAAS,iBAAoC,CAAC;AAC3D,eAAO,MAAM,OAAO,iBAAkC,CAAC;AAEvD,
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/websocket/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAI7D;AAeD,eAAO,MAAM,MAAM,iBAAiC,CAAC;AACrD,eAAO,MAAM,SAAS,iBAAoC,CAAC;AAC3D,eAAO,MAAM,OAAO,iBAAkC,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,GAChC,wBAAwB,GAAG,SAAS,CAEtC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAI3E"}
|