@dangao/bun-server 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/config/config-module.d.ts +17 -0
- package/dist/config/config-module.d.ts.map +1 -1
- package/dist/config/service.d.ts +18 -1
- package/dist/config/service.d.ts.map +1 -1
- package/dist/config/types.d.ts +25 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/controller/controller.d.ts +5 -0
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/core/application.d.ts +42 -1
- package/dist/core/application.d.ts.map +1 -1
- package/dist/core/context.d.ts +1 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/server.d.ts +33 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6510 -4164
- package/dist/microservice/config-center/config-center-module.d.ts +43 -0
- package/dist/microservice/config-center/config-center-module.d.ts.map +1 -0
- package/dist/microservice/config-center/decorators.d.ts +58 -0
- package/dist/microservice/config-center/decorators.d.ts.map +1 -0
- package/dist/microservice/config-center/index.d.ts +9 -0
- package/dist/microservice/config-center/index.d.ts.map +1 -0
- package/dist/microservice/config-center/nacos-config-center.d.ts +37 -0
- package/dist/microservice/config-center/nacos-config-center.d.ts.map +1 -0
- package/dist/microservice/config-center/nacos-decorators.d.ts +24 -0
- package/dist/microservice/config-center/nacos-decorators.d.ts.map +1 -0
- package/dist/microservice/config-center/types.d.ts +63 -0
- package/dist/microservice/config-center/types.d.ts.map +1 -0
- package/dist/microservice/governance/circuit-breaker.d.ts +54 -0
- package/dist/microservice/governance/circuit-breaker.d.ts.map +1 -0
- package/dist/microservice/governance/decorators.d.ts +51 -0
- package/dist/microservice/governance/decorators.d.ts.map +1 -0
- package/dist/microservice/governance/index.d.ts +9 -0
- package/dist/microservice/governance/index.d.ts.map +1 -0
- package/dist/microservice/governance/rate-limiter.d.ts +26 -0
- package/dist/microservice/governance/rate-limiter.d.ts.map +1 -0
- package/dist/microservice/governance/redis-rate-limiter.d.ts +76 -0
- package/dist/microservice/governance/redis-rate-limiter.d.ts.map +1 -0
- package/dist/microservice/governance/retry-strategy.d.ts +21 -0
- package/dist/microservice/governance/retry-strategy.d.ts.map +1 -0
- package/dist/microservice/governance/types.d.ts +212 -0
- package/dist/microservice/governance/types.d.ts.map +1 -0
- package/dist/microservice/index.d.ts +10 -0
- package/dist/microservice/index.d.ts.map +1 -0
- package/dist/microservice/monitoring/index.d.ts +4 -0
- package/dist/microservice/monitoring/index.d.ts.map +1 -0
- package/dist/microservice/monitoring/metrics-collector.d.ts +54 -0
- package/dist/microservice/monitoring/metrics-collector.d.ts.map +1 -0
- package/dist/microservice/monitoring/metrics-integration.d.ts +24 -0
- package/dist/microservice/monitoring/metrics-integration.d.ts.map +1 -0
- package/dist/microservice/monitoring/types.d.ts +99 -0
- package/dist/microservice/monitoring/types.d.ts.map +1 -0
- package/dist/microservice/service-client/call-decorators.d.ts +52 -0
- package/dist/microservice/service-client/call-decorators.d.ts.map +1 -0
- package/dist/microservice/service-client/decorators.d.ts +35 -0
- package/dist/microservice/service-client/decorators.d.ts.map +1 -0
- package/dist/microservice/service-client/index.d.ts +7 -0
- package/dist/microservice/service-client/index.d.ts.map +1 -0
- package/dist/microservice/service-client/interceptors.d.ts +96 -0
- package/dist/microservice/service-client/interceptors.d.ts.map +1 -0
- package/dist/microservice/service-client/load-balancer.d.ts +59 -0
- package/dist/microservice/service-client/load-balancer.d.ts.map +1 -0
- package/dist/microservice/service-client/service-client.d.ts +74 -0
- package/dist/microservice/service-client/service-client.d.ts.map +1 -0
- package/dist/microservice/service-client/types.d.ts +155 -0
- package/dist/microservice/service-client/types.d.ts.map +1 -0
- package/dist/microservice/service-registry/decorators.d.ts +84 -0
- package/dist/microservice/service-registry/decorators.d.ts.map +1 -0
- package/dist/microservice/service-registry/discovery-decorators.d.ts +58 -0
- package/dist/microservice/service-registry/discovery-decorators.d.ts.map +1 -0
- package/dist/microservice/service-registry/health-integration.d.ts +32 -0
- package/dist/microservice/service-registry/health-integration.d.ts.map +1 -0
- package/dist/microservice/service-registry/index.d.ts +10 -0
- package/dist/microservice/service-registry/index.d.ts.map +1 -0
- package/dist/microservice/service-registry/nacos-service-registry.d.ts +68 -0
- package/dist/microservice/service-registry/nacos-service-registry.d.ts.map +1 -0
- package/dist/microservice/service-registry/service-registry-module.d.ts +48 -0
- package/dist/microservice/service-registry/service-registry-module.d.ts.map +1 -0
- package/dist/microservice/service-registry/types.d.ts +121 -0
- package/dist/microservice/service-registry/types.d.ts.map +1 -0
- package/dist/microservice/tracing/collectors.d.ts +27 -0
- package/dist/microservice/tracing/collectors.d.ts.map +1 -0
- package/dist/microservice/tracing/index.d.ts +4 -0
- package/dist/microservice/tracing/index.d.ts.map +1 -0
- package/dist/microservice/tracing/tracer.d.ts +59 -0
- package/dist/microservice/tracing/tracer.d.ts.map +1 -0
- package/dist/microservice/tracing/types.d.ts +179 -0
- package/dist/microservice/tracing/types.d.ts.map +1 -0
- package/dist/request/request.d.ts +1 -0
- package/dist/request/request.d.ts.map +1 -1
- package/docs/microservice-config-center.md +258 -0
- package/docs/microservice-nacos.md +346 -0
- package/docs/microservice-service-registry.md +306 -0
- package/docs/microservice.md +680 -0
- package/docs/troubleshooting.md +41 -0
- package/docs/zh/troubleshooting.md +41 -0
- package/package.json +5 -4
- package/src/config/config-module.ts +210 -0
- package/src/config/service.ts +52 -1
- package/src/config/types.ts +31 -0
- package/src/controller/controller.ts +8 -0
- package/src/core/application.ts +189 -3
- package/src/core/context.ts +1 -0
- package/src/core/server.ts +128 -2
- package/src/index.ts +81 -0
- package/src/microservice/config-center/config-center-module.ts +98 -0
- package/src/microservice/config-center/decorators.ts +159 -0
- package/src/microservice/config-center/index.ts +13 -0
- package/src/microservice/config-center/nacos-config-center.ts +126 -0
- package/src/microservice/config-center/nacos-decorators.ts +34 -0
- package/src/microservice/config-center/types.ts +80 -0
- package/src/microservice/governance/circuit-breaker.ts +229 -0
- package/src/microservice/governance/decorators.ts +113 -0
- package/src/microservice/governance/index.ts +18 -0
- package/src/microservice/governance/rate-limiter.ts +72 -0
- package/src/microservice/governance/redis-rate-limiter.ts +154 -0
- package/src/microservice/governance/retry-strategy.ts +74 -0
- package/src/microservice/governance/types.ts +247 -0
- package/src/microservice/index.ts +12 -0
- package/src/microservice/monitoring/index.ts +8 -0
- package/src/microservice/monitoring/metrics-collector.ts +223 -0
- package/src/microservice/monitoring/metrics-integration.ts +154 -0
- package/src/microservice/monitoring/types.ts +118 -0
- package/src/microservice/service-client/call-decorators.ts +107 -0
- package/src/microservice/service-client/decorators.ts +87 -0
- package/src/microservice/service-client/index.ts +37 -0
- package/src/microservice/service-client/interceptors.ts +182 -0
- package/src/microservice/service-client/load-balancer.ts +205 -0
- package/src/microservice/service-client/service-client.ts +488 -0
- package/src/microservice/service-client/types.ts +186 -0
- package/src/microservice/service-registry/decorators.ts +238 -0
- package/src/microservice/service-registry/discovery-decorators.ts +156 -0
- package/src/microservice/service-registry/health-integration.ts +146 -0
- package/src/microservice/service-registry/index.ts +20 -0
- package/src/microservice/service-registry/nacos-service-registry.ts +259 -0
- package/src/microservice/service-registry/service-registry-module.ts +105 -0
- package/src/microservice/service-registry/types.ts +149 -0
- package/src/microservice/tracing/collectors.ts +50 -0
- package/src/microservice/tracing/index.ts +15 -0
- package/src/microservice/tracing/tracer.ts +293 -0
- package/src/microservice/tracing/types.ts +213 -0
- package/src/request/request.ts +1 -0
- package/tests/config/set-value-by-path.test.ts +53 -0
- package/tests/core/graceful-shutdown.test.ts +321 -0
- package/tests/microservice/config-center.test.ts +77 -0
- package/tests/microservice/governance.test.ts +157 -0
- package/tests/microservice/monitoring.test.ts +75 -0
- package/tests/microservice/service-client.test.ts +136 -0
- package/tests/microservice/service-registry.test.ts +80 -0
- package/tests/microservice/tracing.test.ts +143 -0
- package/tests/utils/test-port.ts +29 -19
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 熔断器状态
|
|
3
|
+
*/
|
|
4
|
+
export declare enum CircuitBreakerState {
|
|
5
|
+
/**
|
|
6
|
+
* 关闭状态:正常处理请求
|
|
7
|
+
*/
|
|
8
|
+
CLOSED = "CLOSED",
|
|
9
|
+
/**
|
|
10
|
+
* 开启状态:拒绝请求,直接返回错误
|
|
11
|
+
*/
|
|
12
|
+
OPEN = "OPEN",
|
|
13
|
+
/**
|
|
14
|
+
* 半开状态:允许少量请求通过,用于测试服务是否恢复
|
|
15
|
+
*/
|
|
16
|
+
HALF_OPEN = "HALF_OPEN"
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 熔断器配置选项
|
|
20
|
+
*/
|
|
21
|
+
export interface CircuitBreakerOptions {
|
|
22
|
+
/**
|
|
23
|
+
* 失败率阈值(0-1)
|
|
24
|
+
* 当失败率超过此值时,熔断器开启
|
|
25
|
+
* @default 0.5
|
|
26
|
+
*/
|
|
27
|
+
failureThreshold?: number;
|
|
28
|
+
/**
|
|
29
|
+
* 时间窗口(毫秒)
|
|
30
|
+
* 在此时间窗口内统计失败率
|
|
31
|
+
* @default 60000
|
|
32
|
+
*/
|
|
33
|
+
timeWindow?: number;
|
|
34
|
+
/**
|
|
35
|
+
* 最小请求数
|
|
36
|
+
* 在时间窗口内至少需要这么多请求才会触发熔断
|
|
37
|
+
* @default 10
|
|
38
|
+
*/
|
|
39
|
+
minimumRequests?: number;
|
|
40
|
+
/**
|
|
41
|
+
* 熔断持续时间(毫秒)
|
|
42
|
+
* 熔断器开启后,持续多长时间才进入半开状态
|
|
43
|
+
* @default 60000
|
|
44
|
+
*/
|
|
45
|
+
openDuration?: number;
|
|
46
|
+
/**
|
|
47
|
+
* 半开状态下的测试请求数
|
|
48
|
+
* 在半开状态下允许通过的请求数
|
|
49
|
+
* @default 3
|
|
50
|
+
*/
|
|
51
|
+
halfOpenRequests?: number;
|
|
52
|
+
/**
|
|
53
|
+
* 超时时间(毫秒)
|
|
54
|
+
* 请求超过此时间视为失败
|
|
55
|
+
* @default 5000
|
|
56
|
+
*/
|
|
57
|
+
timeout?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 熔断器统计信息
|
|
61
|
+
*/
|
|
62
|
+
export interface CircuitBreakerStats {
|
|
63
|
+
/**
|
|
64
|
+
* 当前状态
|
|
65
|
+
*/
|
|
66
|
+
state: CircuitBreakerState;
|
|
67
|
+
/**
|
|
68
|
+
* 总请求数
|
|
69
|
+
*/
|
|
70
|
+
totalRequests: number;
|
|
71
|
+
/**
|
|
72
|
+
* 成功请求数
|
|
73
|
+
*/
|
|
74
|
+
successRequests: number;
|
|
75
|
+
/**
|
|
76
|
+
* 失败请求数
|
|
77
|
+
*/
|
|
78
|
+
failureRequests: number;
|
|
79
|
+
/**
|
|
80
|
+
* 当前失败率
|
|
81
|
+
*/
|
|
82
|
+
failureRate: number;
|
|
83
|
+
/**
|
|
84
|
+
* 最后失败时间
|
|
85
|
+
*/
|
|
86
|
+
lastFailureTime?: number;
|
|
87
|
+
/**
|
|
88
|
+
* 熔断开启时间
|
|
89
|
+
*/
|
|
90
|
+
openTime?: number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 限流器配置选项
|
|
94
|
+
*/
|
|
95
|
+
export interface RateLimiterOptions {
|
|
96
|
+
/**
|
|
97
|
+
* 每秒允许的请求数
|
|
98
|
+
* @default 100
|
|
99
|
+
*/
|
|
100
|
+
requestsPerSecond?: number;
|
|
101
|
+
/**
|
|
102
|
+
* 时间窗口(毫秒)
|
|
103
|
+
* @default 1000
|
|
104
|
+
*/
|
|
105
|
+
timeWindow?: number;
|
|
106
|
+
/**
|
|
107
|
+
* 是否使用分布式限流(需要 Redis)
|
|
108
|
+
* @default false
|
|
109
|
+
*/
|
|
110
|
+
distributed?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Redis 配置(分布式限流时使用)
|
|
113
|
+
*/
|
|
114
|
+
redis?: {
|
|
115
|
+
host: string;
|
|
116
|
+
port: number;
|
|
117
|
+
password?: string;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 重试策略配置
|
|
122
|
+
*/
|
|
123
|
+
export interface RetryStrategy {
|
|
124
|
+
/**
|
|
125
|
+
* 最大重试次数
|
|
126
|
+
* @default 3
|
|
127
|
+
*/
|
|
128
|
+
maxRetries?: number;
|
|
129
|
+
/**
|
|
130
|
+
* 重试延迟(毫秒)
|
|
131
|
+
* @default 1000
|
|
132
|
+
*/
|
|
133
|
+
retryDelay?: number;
|
|
134
|
+
/**
|
|
135
|
+
* 是否使用指数退避
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
exponentialBackoff?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* 指数退避的基础延迟(毫秒)
|
|
141
|
+
* @default 1000
|
|
142
|
+
*/
|
|
143
|
+
baseDelay?: number;
|
|
144
|
+
/**
|
|
145
|
+
* 指数退避的最大延迟(毫秒)
|
|
146
|
+
* @default 30000
|
|
147
|
+
*/
|
|
148
|
+
maxDelay?: number;
|
|
149
|
+
/**
|
|
150
|
+
* 重试条件:哪些错误应该重试
|
|
151
|
+
* @param error - 错误对象
|
|
152
|
+
* @returns 是否应该重试
|
|
153
|
+
*/
|
|
154
|
+
shouldRetry?: (error: Error) => boolean;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 重试决策
|
|
158
|
+
*/
|
|
159
|
+
export interface RetryDecision {
|
|
160
|
+
/**
|
|
161
|
+
* 是否重试
|
|
162
|
+
*/
|
|
163
|
+
retry: boolean;
|
|
164
|
+
/**
|
|
165
|
+
* 延迟时间(毫秒)
|
|
166
|
+
*/
|
|
167
|
+
delay: number;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Redis 限流器选项
|
|
171
|
+
*/
|
|
172
|
+
export interface RedisRateLimiterOptions {
|
|
173
|
+
/**
|
|
174
|
+
* Redis 客户端(需要用户提供)
|
|
175
|
+
* 支持任何兼容的 Redis 客户端接口
|
|
176
|
+
*/
|
|
177
|
+
client: {
|
|
178
|
+
/**
|
|
179
|
+
* 获取键值
|
|
180
|
+
*/
|
|
181
|
+
get(key: string): Promise<string | null>;
|
|
182
|
+
/**
|
|
183
|
+
* 设置键值(带过期时间)
|
|
184
|
+
*/
|
|
185
|
+
set(key: string, value: string, options?: {
|
|
186
|
+
PX?: number;
|
|
187
|
+
EX?: number;
|
|
188
|
+
}): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* 删除键
|
|
191
|
+
*/
|
|
192
|
+
del(key: string): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* 递增键值(原子操作)
|
|
195
|
+
*/
|
|
196
|
+
incr(key: string): Promise<number>;
|
|
197
|
+
/**
|
|
198
|
+
* 设置键的过期时间
|
|
199
|
+
*/
|
|
200
|
+
expire(key: string, seconds: number): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* 检查键是否存在
|
|
203
|
+
*/
|
|
204
|
+
exists(key: string): Promise<number>;
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* 键前缀
|
|
208
|
+
* @default 'ratelimit:'
|
|
209
|
+
*/
|
|
210
|
+
keyPrefix?: string;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,mBAAmB;IAC7B;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,IAAI,SAAS;IAEb;;OAEG;IACH,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAC;IAE3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAEzC;;WAEG;QACH,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;YAAE,EAAE,CAAC,EAAE,MAAM,CAAC;YAAC,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjB;;WAEG;QACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhC;;WAEG;QACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnC;;WAEG;QACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpD;;WAEG;QACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KACtC,CAAC;IAEF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './config-center';
|
|
2
|
+
export * from './service-registry';
|
|
3
|
+
export * from './service-client';
|
|
4
|
+
export * from './governance';
|
|
5
|
+
export * from './tracing';
|
|
6
|
+
export * from './monitoring';
|
|
7
|
+
export { NacosValue } from './config-center';
|
|
8
|
+
export { ServiceDiscovery, type ServiceDiscoveryMetadata } from './service-registry';
|
|
9
|
+
export { ServiceCall, type ServiceCallMetadata } from './service-client';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/microservice/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microservice/monitoring/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ServiceCallMetrics, ServiceInstanceHealth, MonitoringOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 服务监控指标收集器
|
|
4
|
+
*/
|
|
5
|
+
export declare class ServiceMetricsCollector {
|
|
6
|
+
private readonly options;
|
|
7
|
+
private readonly metrics;
|
|
8
|
+
private readonly healthStatus;
|
|
9
|
+
private readonly requestRecords;
|
|
10
|
+
private readonly maxRecordsPerInstance;
|
|
11
|
+
private metricsIntegration?;
|
|
12
|
+
constructor(options?: MonitoringOptions);
|
|
13
|
+
/**
|
|
14
|
+
* 记录服务调用
|
|
15
|
+
*/
|
|
16
|
+
recordCall(serviceName: string, instance: string, success: boolean, latency: number): void;
|
|
17
|
+
/**
|
|
18
|
+
* 获取服务指标
|
|
19
|
+
*/
|
|
20
|
+
getMetrics(serviceName: string, instance?: string): ServiceCallMetrics[];
|
|
21
|
+
/**
|
|
22
|
+
* 获取所有指标
|
|
23
|
+
*/
|
|
24
|
+
getAllMetrics(): ServiceCallMetrics[];
|
|
25
|
+
/**
|
|
26
|
+
* 获取服务实例健康状态
|
|
27
|
+
*/
|
|
28
|
+
getHealthStatus(serviceName: string, instance?: string): ServiceInstanceHealth[];
|
|
29
|
+
/**
|
|
30
|
+
* 获取所有健康状态
|
|
31
|
+
*/
|
|
32
|
+
getAllHealthStatus(): ServiceInstanceHealth[];
|
|
33
|
+
/**
|
|
34
|
+
* 更新指标
|
|
35
|
+
*/
|
|
36
|
+
private updateMetrics;
|
|
37
|
+
/**
|
|
38
|
+
* 更新健康状态
|
|
39
|
+
*/
|
|
40
|
+
private updateHealthStatus;
|
|
41
|
+
/**
|
|
42
|
+
* 生成键
|
|
43
|
+
*/
|
|
44
|
+
private getKey;
|
|
45
|
+
/**
|
|
46
|
+
* 重置指标
|
|
47
|
+
*/
|
|
48
|
+
reset(serviceName?: string, instance?: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* 停止指标收集和上报
|
|
51
|
+
*/
|
|
52
|
+
stop(): void;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=metrics-collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-collector.d.ts","sourceRoot":"","sources":["../../../src/microservice/monitoring/metrics-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAY5F;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiD;IAC9E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IACtD,OAAO,CAAC,kBAAkB,CAAC,CAA4B;gBAEpC,OAAO,GAAE,iBAAsB;IAiBlD;;OAEG;IACI,UAAU,CACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,IAAI;IA4BP;;OAEG;IACI,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAY/E;;OAEG;IACI,aAAa,IAAI,kBAAkB,EAAE;IAI5C;;OAEG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAYvF;;OAEG;IACI,kBAAkB,IAAI,qBAAqB,EAAE;IAIpD;;OAEG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAa3D;;OAEG;IACI,IAAI,IAAI,IAAI;CAGpB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ServiceMetricsCollector } from './metrics-collector';
|
|
2
|
+
/**
|
|
3
|
+
* 服务监控指标集成器
|
|
4
|
+
* 将 ServiceMetricsCollector 的指标自动上报到 MetricsModule
|
|
5
|
+
*/
|
|
6
|
+
export declare class ServiceMetricsIntegration {
|
|
7
|
+
private metricsCollector?;
|
|
8
|
+
private serviceMetricsCollector;
|
|
9
|
+
private updateInterval?;
|
|
10
|
+
constructor(serviceMetricsCollector: ServiceMetricsCollector);
|
|
11
|
+
/**
|
|
12
|
+
* 启动指标上报
|
|
13
|
+
*/
|
|
14
|
+
start(intervalMs?: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* 停止指标上报
|
|
17
|
+
*/
|
|
18
|
+
stop(): void;
|
|
19
|
+
/**
|
|
20
|
+
* 上报指标到 MetricsCollector
|
|
21
|
+
*/
|
|
22
|
+
private reportMetrics;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=metrics-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-integration.d.ts","sourceRoot":"","sources":["../../../src/microservice/monitoring/metrics-integration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,cAAc,CAAC,CAAiC;gBAErC,uBAAuB,EAAE,uBAAuB;IAInE;;OAEG;IACI,KAAK,CAAC,UAAU,GAAE,MAAc,GAAG,IAAI;IA2B9C;;OAEG;IACI,IAAI,IAAI,IAAI;IAOnB;;OAEG;IACH,OAAO,CAAC,aAAa;CA2FtB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 服务调用指标
|
|
3
|
+
*/
|
|
4
|
+
export interface ServiceCallMetrics {
|
|
5
|
+
/**
|
|
6
|
+
* 服务名
|
|
7
|
+
*/
|
|
8
|
+
serviceName: string;
|
|
9
|
+
/**
|
|
10
|
+
* 实例标识(IP:Port)
|
|
11
|
+
*/
|
|
12
|
+
instance: string;
|
|
13
|
+
/**
|
|
14
|
+
* 总请求数
|
|
15
|
+
*/
|
|
16
|
+
totalRequests: number;
|
|
17
|
+
/**
|
|
18
|
+
* 成功请求数
|
|
19
|
+
*/
|
|
20
|
+
successRequests: number;
|
|
21
|
+
/**
|
|
22
|
+
* 失败请求数
|
|
23
|
+
*/
|
|
24
|
+
failureRequests: number;
|
|
25
|
+
/**
|
|
26
|
+
* 平均延迟(毫秒)
|
|
27
|
+
*/
|
|
28
|
+
averageLatency: number;
|
|
29
|
+
/**
|
|
30
|
+
* 最小延迟(毫秒)
|
|
31
|
+
*/
|
|
32
|
+
minLatency: number;
|
|
33
|
+
/**
|
|
34
|
+
* 最大延迟(毫秒)
|
|
35
|
+
*/
|
|
36
|
+
maxLatency: number;
|
|
37
|
+
/**
|
|
38
|
+
* 错误率(0-1)
|
|
39
|
+
*/
|
|
40
|
+
errorRate: number;
|
|
41
|
+
/**
|
|
42
|
+
* 最后更新时间(时间戳)
|
|
43
|
+
*/
|
|
44
|
+
lastUpdateTime: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 服务实例健康状态
|
|
48
|
+
*/
|
|
49
|
+
export interface ServiceInstanceHealth {
|
|
50
|
+
/**
|
|
51
|
+
* 服务名
|
|
52
|
+
*/
|
|
53
|
+
serviceName: string;
|
|
54
|
+
/**
|
|
55
|
+
* 实例标识(IP:Port)
|
|
56
|
+
*/
|
|
57
|
+
instance: string;
|
|
58
|
+
/**
|
|
59
|
+
* 是否健康
|
|
60
|
+
*/
|
|
61
|
+
healthy: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 健康检查时间(时间戳)
|
|
64
|
+
*/
|
|
65
|
+
checkTime: number;
|
|
66
|
+
/**
|
|
67
|
+
* 连续失败次数
|
|
68
|
+
*/
|
|
69
|
+
consecutiveFailures: number;
|
|
70
|
+
/**
|
|
71
|
+
* 最后成功时间(时间戳)
|
|
72
|
+
*/
|
|
73
|
+
lastSuccessTime?: number;
|
|
74
|
+
/**
|
|
75
|
+
* 最后失败时间(时间戳)
|
|
76
|
+
*/
|
|
77
|
+
lastFailureTime?: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 监控配置选项
|
|
81
|
+
*/
|
|
82
|
+
export interface MonitoringOptions {
|
|
83
|
+
/**
|
|
84
|
+
* 是否启用监控
|
|
85
|
+
* @default true
|
|
86
|
+
*/
|
|
87
|
+
enabled?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* 指标收集间隔(毫秒)
|
|
90
|
+
* @default 60000
|
|
91
|
+
*/
|
|
92
|
+
collectionInterval?: number;
|
|
93
|
+
/**
|
|
94
|
+
* 是否自动上报到 MetricsModule
|
|
95
|
+
* @default true
|
|
96
|
+
*/
|
|
97
|
+
autoReportToMetrics?: boolean;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/microservice/monitoring/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { ServiceCallOptions } from './types';
|
|
3
|
+
import type { Constructor } from '../../core/types';
|
|
4
|
+
/**
|
|
5
|
+
* 服务调用元数据
|
|
6
|
+
*/
|
|
7
|
+
export interface ServiceCallMetadata {
|
|
8
|
+
/**
|
|
9
|
+
* 服务名
|
|
10
|
+
*/
|
|
11
|
+
serviceName: string;
|
|
12
|
+
/**
|
|
13
|
+
* HTTP 方法
|
|
14
|
+
*/
|
|
15
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
16
|
+
/**
|
|
17
|
+
* 请求路径
|
|
18
|
+
*/
|
|
19
|
+
path: string;
|
|
20
|
+
/**
|
|
21
|
+
* 服务调用选项
|
|
22
|
+
*/
|
|
23
|
+
options?: Partial<ServiceCallOptions>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* ServiceCall 装饰器
|
|
27
|
+
* 用于标记服务调用方法,自动注入 ServiceClient 调用逻辑
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* @Injectable()
|
|
32
|
+
* class MyService {
|
|
33
|
+
* public constructor(
|
|
34
|
+
* @ServiceClient() private readonly serviceClient: ServiceClient,
|
|
35
|
+
* ) {}
|
|
36
|
+
*
|
|
37
|
+
* @ServiceCall('user-service', 'GET', '/api/users/:id')
|
|
38
|
+
* public async getUser(id: string): Promise<User> {
|
|
39
|
+
* // 自动调用 user-service 的 /api/users/:id 接口
|
|
40
|
+
* // 需要手动调用 serviceClient.call(),装饰器只提供元数据
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* 注意:此装饰器主要用于标记和提供元数据,实际调用仍需要通过 ServiceClient
|
|
46
|
+
*/
|
|
47
|
+
export declare function ServiceCall(serviceName: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', path: string, options?: Partial<ServiceCallOptions>): MethodDecorator;
|
|
48
|
+
/**
|
|
49
|
+
* 获取方法的服务调用元数据
|
|
50
|
+
*/
|
|
51
|
+
export declare function getServiceCallMetadata(target: Constructor<unknown>): Map<string | symbol, ServiceCallMetadata>;
|
|
52
|
+
//# sourceMappingURL=call-decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/call-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAuB,MAAM,SAAS,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEpD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,EACnD,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACpC,eAAe,CAmCjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,mBAAmB,CAAC,CAE3C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ServiceClient as ServiceClientImpl } from './service-client';
|
|
3
|
+
import type { Constructor } from '../../core/types';
|
|
4
|
+
/**
|
|
5
|
+
* ServiceClient 装饰器
|
|
6
|
+
* 用于在类中注入 ServiceClient 实例
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* @Injectable()
|
|
11
|
+
* class MyService {
|
|
12
|
+
* public constructor(
|
|
13
|
+
* @ServiceClient() private readonly serviceClient: ServiceClient,
|
|
14
|
+
* ) {}
|
|
15
|
+
*
|
|
16
|
+
* public async callOtherService() {
|
|
17
|
+
* return await this.serviceClient.call({
|
|
18
|
+
* serviceName: 'other-service',
|
|
19
|
+
* path: '/api/data',
|
|
20
|
+
* method: 'GET',
|
|
21
|
+
* });
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function ServiceClient(): ParameterDecorator;
|
|
27
|
+
/**
|
|
28
|
+
* 创建 ServiceClient 实例
|
|
29
|
+
*/
|
|
30
|
+
export declare function createServiceClient(): ServiceClientImpl;
|
|
31
|
+
/**
|
|
32
|
+
* 获取需要注入 ServiceClient 的参数索引列表
|
|
33
|
+
*/
|
|
34
|
+
export declare function getServiceClientParameterIndices(target: Constructor<unknown>): number[];
|
|
35
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAItE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,IAAI,kBAAkB,CAwBlD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAavD;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,MAAM,EAAE,CAEV"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ServiceClient } from './service-client';
|
|
2
|
+
export { LoadBalancerFactory, RandomLoadBalancer, RoundRobinLoadBalancer, WeightedRoundRobinLoadBalancer, ConsistentHashLoadBalancer, LeastActiveLoadBalancer, } from './load-balancer';
|
|
3
|
+
export { TraceIdRequestInterceptor, UserInfoRequestInterceptor, RequestLogInterceptor, ResponseLogInterceptor, ResponseTransformInterceptor, ErrorHandlerInterceptor, } from './interceptors';
|
|
4
|
+
export { ServiceClient as ServiceClientDecorator, createServiceClient, getServiceClientParameterIndices, } from './decorators';
|
|
5
|
+
export { ServiceCall, getServiceCallMetadata, type ServiceCallMetadata, } from './call-decorators';
|
|
6
|
+
export type { LoadBalanceStrategy, LoadBalancer, ServiceCallOptions, ServiceCallResponse, ServiceRequestInterceptor, ServiceResponseInterceptor, ServiceCallError, } from './types';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,aAAa,IAAI,sBAAsB,EACvC,mBAAmB,EACnB,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { ServiceCallOptions, ServiceCallResponse, ServiceRequestInterceptor, ServiceResponseInterceptor } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 追踪 ID 请求拦截器
|
|
4
|
+
* 自动在请求头中添加追踪 ID
|
|
5
|
+
*/
|
|
6
|
+
export declare class TraceIdRequestInterceptor implements ServiceRequestInterceptor {
|
|
7
|
+
private readonly headerName;
|
|
8
|
+
private readonly traceIdGenerator;
|
|
9
|
+
constructor(options?: {
|
|
10
|
+
/**
|
|
11
|
+
* 追踪 ID 请求头名称
|
|
12
|
+
* @default 'X-Trace-Id'
|
|
13
|
+
*/
|
|
14
|
+
headerName?: string;
|
|
15
|
+
/**
|
|
16
|
+
* 追踪 ID 生成器
|
|
17
|
+
* @default 生成 UUID v4
|
|
18
|
+
*/
|
|
19
|
+
traceIdGenerator?: () => string;
|
|
20
|
+
});
|
|
21
|
+
intercept(options: ServiceCallOptions): ServiceCallOptions;
|
|
22
|
+
/**
|
|
23
|
+
* 生成追踪 ID(UUID v4 简化版)
|
|
24
|
+
*/
|
|
25
|
+
private generateTraceId;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 用户信息请求拦截器
|
|
29
|
+
* 自动在请求头中添加用户信息
|
|
30
|
+
*/
|
|
31
|
+
export declare class UserInfoRequestInterceptor implements ServiceRequestInterceptor {
|
|
32
|
+
private readonly headerName;
|
|
33
|
+
private readonly userInfoProvider;
|
|
34
|
+
constructor(options: {
|
|
35
|
+
/**
|
|
36
|
+
* 用户信息请求头名称
|
|
37
|
+
* @default 'X-User-Info'
|
|
38
|
+
*/
|
|
39
|
+
headerName?: string;
|
|
40
|
+
/**
|
|
41
|
+
* 用户信息提供者
|
|
42
|
+
*/
|
|
43
|
+
userInfoProvider: () => string | undefined;
|
|
44
|
+
});
|
|
45
|
+
intercept(options: ServiceCallOptions): ServiceCallOptions;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 请求日志拦截器
|
|
49
|
+
* 记录请求日志
|
|
50
|
+
*/
|
|
51
|
+
export declare class RequestLogInterceptor implements ServiceRequestInterceptor {
|
|
52
|
+
private readonly logger?;
|
|
53
|
+
constructor(options?: {
|
|
54
|
+
/**
|
|
55
|
+
* 日志记录器
|
|
56
|
+
*/
|
|
57
|
+
logger?: (message: string) => void;
|
|
58
|
+
});
|
|
59
|
+
intercept(options: ServiceCallOptions): ServiceCallOptions;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 响应日志拦截器
|
|
63
|
+
* 记录响应日志
|
|
64
|
+
*/
|
|
65
|
+
export declare class ResponseLogInterceptor implements ServiceResponseInterceptor {
|
|
66
|
+
private readonly logger?;
|
|
67
|
+
constructor(options?: {
|
|
68
|
+
/**
|
|
69
|
+
* 日志记录器
|
|
70
|
+
*/
|
|
71
|
+
logger?: (message: string) => void;
|
|
72
|
+
});
|
|
73
|
+
intercept<T>(response: ServiceCallResponse<T>): ServiceCallResponse<T>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 响应数据转换拦截器
|
|
77
|
+
* 转换响应数据格式
|
|
78
|
+
*
|
|
79
|
+
* 注意:这个拦截器会改变响应数据的类型,因此需要类型断言
|
|
80
|
+
*/
|
|
81
|
+
export declare class ResponseTransformInterceptor<TInput = unknown, TOutput = unknown> {
|
|
82
|
+
private readonly transformer;
|
|
83
|
+
constructor(transformer: (data: TInput) => TOutput);
|
|
84
|
+
/**
|
|
85
|
+
* 拦截响应并转换数据
|
|
86
|
+
*/
|
|
87
|
+
intercept<T>(response: ServiceCallResponse<T>): ServiceCallResponse<TOutput>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 错误处理拦截器
|
|
91
|
+
* 统一处理错误响应
|
|
92
|
+
*/
|
|
93
|
+
export declare class ErrorHandlerInterceptor implements ServiceResponseInterceptor {
|
|
94
|
+
intercept<T>(response: ServiceCallResponse<T>): ServiceCallResponse<T>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=interceptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../../src/microservice/service-client/interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,yBAAyB;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;gBAE7B,OAAO,CAAC,EAAE;QAC3B;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB;;;WAGG;QACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;KACjC;IAKM,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB;IAWjE;;OAEG;IACH,OAAO,CAAC,eAAe;CAGxB;AAED;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,yBAAyB;IAC1E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;gBAEzC,OAAO,EAAE;QAC1B;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB;;WAEG;QACH,gBAAgB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;KAC5C;IAKM,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB;CAclE;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,yBAAyB;IACrE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA4B;gBAEjC,OAAO,CAAC,EAAE;QAC3B;;WAEG;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC;IAIM,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,kBAAkB;CAQlE;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,0BAA0B;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA4B;gBAEjC,OAAO,CAAC,EAAE;QAC3B;;WAEG;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACpC;IAIM,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;CAQ9E;AAED;;;;;GAKG;AACH,qBAAa,4BAA4B,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC3E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;gBAErC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO;IAIzD;;OAEG;IACI,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC;CAMpF;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,0BAA0B;IACjE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;CAQ9E"}
|