@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.
Files changed (153) hide show
  1. package/README.md +15 -0
  2. package/dist/config/config-module.d.ts +17 -0
  3. package/dist/config/config-module.d.ts.map +1 -1
  4. package/dist/config/service.d.ts +18 -1
  5. package/dist/config/service.d.ts.map +1 -1
  6. package/dist/config/types.d.ts +25 -0
  7. package/dist/config/types.d.ts.map +1 -1
  8. package/dist/controller/controller.d.ts +5 -0
  9. package/dist/controller/controller.d.ts.map +1 -1
  10. package/dist/core/application.d.ts +42 -1
  11. package/dist/core/application.d.ts.map +1 -1
  12. package/dist/core/context.d.ts +1 -0
  13. package/dist/core/context.d.ts.map +1 -1
  14. package/dist/core/server.d.ts +33 -1
  15. package/dist/core/server.d.ts.map +1 -1
  16. package/dist/index.d.ts +6 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +6510 -4164
  19. package/dist/microservice/config-center/config-center-module.d.ts +43 -0
  20. package/dist/microservice/config-center/config-center-module.d.ts.map +1 -0
  21. package/dist/microservice/config-center/decorators.d.ts +58 -0
  22. package/dist/microservice/config-center/decorators.d.ts.map +1 -0
  23. package/dist/microservice/config-center/index.d.ts +9 -0
  24. package/dist/microservice/config-center/index.d.ts.map +1 -0
  25. package/dist/microservice/config-center/nacos-config-center.d.ts +37 -0
  26. package/dist/microservice/config-center/nacos-config-center.d.ts.map +1 -0
  27. package/dist/microservice/config-center/nacos-decorators.d.ts +24 -0
  28. package/dist/microservice/config-center/nacos-decorators.d.ts.map +1 -0
  29. package/dist/microservice/config-center/types.d.ts +63 -0
  30. package/dist/microservice/config-center/types.d.ts.map +1 -0
  31. package/dist/microservice/governance/circuit-breaker.d.ts +54 -0
  32. package/dist/microservice/governance/circuit-breaker.d.ts.map +1 -0
  33. package/dist/microservice/governance/decorators.d.ts +51 -0
  34. package/dist/microservice/governance/decorators.d.ts.map +1 -0
  35. package/dist/microservice/governance/index.d.ts +9 -0
  36. package/dist/microservice/governance/index.d.ts.map +1 -0
  37. package/dist/microservice/governance/rate-limiter.d.ts +26 -0
  38. package/dist/microservice/governance/rate-limiter.d.ts.map +1 -0
  39. package/dist/microservice/governance/redis-rate-limiter.d.ts +76 -0
  40. package/dist/microservice/governance/redis-rate-limiter.d.ts.map +1 -0
  41. package/dist/microservice/governance/retry-strategy.d.ts +21 -0
  42. package/dist/microservice/governance/retry-strategy.d.ts.map +1 -0
  43. package/dist/microservice/governance/types.d.ts +212 -0
  44. package/dist/microservice/governance/types.d.ts.map +1 -0
  45. package/dist/microservice/index.d.ts +10 -0
  46. package/dist/microservice/index.d.ts.map +1 -0
  47. package/dist/microservice/monitoring/index.d.ts +4 -0
  48. package/dist/microservice/monitoring/index.d.ts.map +1 -0
  49. package/dist/microservice/monitoring/metrics-collector.d.ts +54 -0
  50. package/dist/microservice/monitoring/metrics-collector.d.ts.map +1 -0
  51. package/dist/microservice/monitoring/metrics-integration.d.ts +24 -0
  52. package/dist/microservice/monitoring/metrics-integration.d.ts.map +1 -0
  53. package/dist/microservice/monitoring/types.d.ts +99 -0
  54. package/dist/microservice/monitoring/types.d.ts.map +1 -0
  55. package/dist/microservice/service-client/call-decorators.d.ts +52 -0
  56. package/dist/microservice/service-client/call-decorators.d.ts.map +1 -0
  57. package/dist/microservice/service-client/decorators.d.ts +35 -0
  58. package/dist/microservice/service-client/decorators.d.ts.map +1 -0
  59. package/dist/microservice/service-client/index.d.ts +7 -0
  60. package/dist/microservice/service-client/index.d.ts.map +1 -0
  61. package/dist/microservice/service-client/interceptors.d.ts +96 -0
  62. package/dist/microservice/service-client/interceptors.d.ts.map +1 -0
  63. package/dist/microservice/service-client/load-balancer.d.ts +59 -0
  64. package/dist/microservice/service-client/load-balancer.d.ts.map +1 -0
  65. package/dist/microservice/service-client/service-client.d.ts +74 -0
  66. package/dist/microservice/service-client/service-client.d.ts.map +1 -0
  67. package/dist/microservice/service-client/types.d.ts +155 -0
  68. package/dist/microservice/service-client/types.d.ts.map +1 -0
  69. package/dist/microservice/service-registry/decorators.d.ts +84 -0
  70. package/dist/microservice/service-registry/decorators.d.ts.map +1 -0
  71. package/dist/microservice/service-registry/discovery-decorators.d.ts +58 -0
  72. package/dist/microservice/service-registry/discovery-decorators.d.ts.map +1 -0
  73. package/dist/microservice/service-registry/health-integration.d.ts +32 -0
  74. package/dist/microservice/service-registry/health-integration.d.ts.map +1 -0
  75. package/dist/microservice/service-registry/index.d.ts +10 -0
  76. package/dist/microservice/service-registry/index.d.ts.map +1 -0
  77. package/dist/microservice/service-registry/nacos-service-registry.d.ts +68 -0
  78. package/dist/microservice/service-registry/nacos-service-registry.d.ts.map +1 -0
  79. package/dist/microservice/service-registry/service-registry-module.d.ts +48 -0
  80. package/dist/microservice/service-registry/service-registry-module.d.ts.map +1 -0
  81. package/dist/microservice/service-registry/types.d.ts +121 -0
  82. package/dist/microservice/service-registry/types.d.ts.map +1 -0
  83. package/dist/microservice/tracing/collectors.d.ts +27 -0
  84. package/dist/microservice/tracing/collectors.d.ts.map +1 -0
  85. package/dist/microservice/tracing/index.d.ts +4 -0
  86. package/dist/microservice/tracing/index.d.ts.map +1 -0
  87. package/dist/microservice/tracing/tracer.d.ts +59 -0
  88. package/dist/microservice/tracing/tracer.d.ts.map +1 -0
  89. package/dist/microservice/tracing/types.d.ts +179 -0
  90. package/dist/microservice/tracing/types.d.ts.map +1 -0
  91. package/dist/request/request.d.ts +1 -0
  92. package/dist/request/request.d.ts.map +1 -1
  93. package/docs/microservice-config-center.md +258 -0
  94. package/docs/microservice-nacos.md +346 -0
  95. package/docs/microservice-service-registry.md +306 -0
  96. package/docs/microservice.md +680 -0
  97. package/docs/troubleshooting.md +41 -0
  98. package/docs/zh/troubleshooting.md +41 -0
  99. package/package.json +5 -4
  100. package/src/config/config-module.ts +210 -0
  101. package/src/config/service.ts +52 -1
  102. package/src/config/types.ts +31 -0
  103. package/src/controller/controller.ts +8 -0
  104. package/src/core/application.ts +189 -3
  105. package/src/core/context.ts +1 -0
  106. package/src/core/server.ts +128 -2
  107. package/src/index.ts +81 -0
  108. package/src/microservice/config-center/config-center-module.ts +98 -0
  109. package/src/microservice/config-center/decorators.ts +159 -0
  110. package/src/microservice/config-center/index.ts +13 -0
  111. package/src/microservice/config-center/nacos-config-center.ts +126 -0
  112. package/src/microservice/config-center/nacos-decorators.ts +34 -0
  113. package/src/microservice/config-center/types.ts +80 -0
  114. package/src/microservice/governance/circuit-breaker.ts +229 -0
  115. package/src/microservice/governance/decorators.ts +113 -0
  116. package/src/microservice/governance/index.ts +18 -0
  117. package/src/microservice/governance/rate-limiter.ts +72 -0
  118. package/src/microservice/governance/redis-rate-limiter.ts +154 -0
  119. package/src/microservice/governance/retry-strategy.ts +74 -0
  120. package/src/microservice/governance/types.ts +247 -0
  121. package/src/microservice/index.ts +12 -0
  122. package/src/microservice/monitoring/index.ts +8 -0
  123. package/src/microservice/monitoring/metrics-collector.ts +223 -0
  124. package/src/microservice/monitoring/metrics-integration.ts +154 -0
  125. package/src/microservice/monitoring/types.ts +118 -0
  126. package/src/microservice/service-client/call-decorators.ts +107 -0
  127. package/src/microservice/service-client/decorators.ts +87 -0
  128. package/src/microservice/service-client/index.ts +37 -0
  129. package/src/microservice/service-client/interceptors.ts +182 -0
  130. package/src/microservice/service-client/load-balancer.ts +205 -0
  131. package/src/microservice/service-client/service-client.ts +488 -0
  132. package/src/microservice/service-client/types.ts +186 -0
  133. package/src/microservice/service-registry/decorators.ts +238 -0
  134. package/src/microservice/service-registry/discovery-decorators.ts +156 -0
  135. package/src/microservice/service-registry/health-integration.ts +146 -0
  136. package/src/microservice/service-registry/index.ts +20 -0
  137. package/src/microservice/service-registry/nacos-service-registry.ts +259 -0
  138. package/src/microservice/service-registry/service-registry-module.ts +105 -0
  139. package/src/microservice/service-registry/types.ts +149 -0
  140. package/src/microservice/tracing/collectors.ts +50 -0
  141. package/src/microservice/tracing/index.ts +15 -0
  142. package/src/microservice/tracing/tracer.ts +293 -0
  143. package/src/microservice/tracing/types.ts +213 -0
  144. package/src/request/request.ts +1 -0
  145. package/tests/config/set-value-by-path.test.ts +53 -0
  146. package/tests/core/graceful-shutdown.test.ts +321 -0
  147. package/tests/microservice/config-center.test.ts +77 -0
  148. package/tests/microservice/governance.test.ts +157 -0
  149. package/tests/microservice/monitoring.test.ts +75 -0
  150. package/tests/microservice/service-client.test.ts +136 -0
  151. package/tests/microservice/service-registry.test.ts +80 -0
  152. package/tests/microservice/tracing.test.ts +143 -0
  153. package/tests/utils/test-port.ts +29 -19
@@ -0,0 +1,43 @@
1
+ import type { NacosClientOptions } from '@dangao/nacos-client';
2
+ /**
3
+ * 配置中心 Provider 类型
4
+ */
5
+ export type ConfigCenterProvider = 'nacos' | 'consul' | 'etcd' | 'apollo';
6
+ /**
7
+ * Nacos 配置中心选项
8
+ */
9
+ export interface NacosConfigCenterOptions {
10
+ /**
11
+ * Nacos 客户端配置
12
+ */
13
+ client: NacosClientOptions;
14
+ /**
15
+ * 配置监听轮询间隔(毫秒)
16
+ * @default 3000
17
+ */
18
+ watchInterval?: number;
19
+ }
20
+ /**
21
+ * 配置中心模块选项
22
+ */
23
+ export interface ConfigCenterModuleOptions {
24
+ /**
25
+ * Provider 类型
26
+ */
27
+ provider: ConfigCenterProvider;
28
+ /**
29
+ * Nacos 配置(当 provider 为 'nacos' 时使用)
30
+ */
31
+ nacos?: NacosConfigCenterOptions;
32
+ }
33
+ /**
34
+ * 配置中心模块
35
+ */
36
+ export declare class ConfigCenterModule {
37
+ /**
38
+ * 创建配置中心模块
39
+ * @param options - 模块配置
40
+ */
41
+ static forRoot(options: ConfigCenterModuleOptions): typeof ConfigCenterModule;
42
+ }
43
+ //# sourceMappingURL=config-center-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-center-module.d.ts","sourceRoot":"","sources":["../../../src/microservice/config-center/config-center-module.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,MAAM,EAAE,kBAAkB,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,QAAQ,EAAE,oBAAoB,CAAC;IAE/B;;OAEG;IACH,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAKlC;AAED;;GAEG;AACH,qBAGa,kBAAkB;IAC7B;;;OAGG;WACW,OAAO,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,kBAAkB;CAuCrF"}
@@ -0,0 +1,58 @@
1
+ import 'reflect-metadata';
2
+ import type { Constructor } from '../../core/types';
3
+ /**
4
+ * 配置中心值元数据
5
+ */
6
+ export interface ConfigCenterValueMetadata {
7
+ /**
8
+ * 配置 dataId
9
+ */
10
+ dataId: string;
11
+ /**
12
+ * 配置分组
13
+ */
14
+ groupName: string;
15
+ /**
16
+ * 命名空间(可选)
17
+ */
18
+ namespaceId?: string;
19
+ /**
20
+ * 默认值(可选)
21
+ */
22
+ defaultValue?: string;
23
+ /**
24
+ * 是否监听配置变更
25
+ */
26
+ watch?: boolean;
27
+ }
28
+ /**
29
+ * ConfigCenterValue 装饰器
30
+ * 用于自动注入配置中心的值
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * @Injectable()
35
+ * class MyService {
36
+ * @ConfigCenterValue('my-config', 'DEFAULT_GROUP')
37
+ * public configValue: string = '';
38
+ *
39
+ * @ConfigCenterValue('app-name', 'DEFAULT_GROUP', { defaultValue: 'MyApp' })
40
+ * public appName: string = '';
41
+ * }
42
+ * ```
43
+ */
44
+ export declare function ConfigCenterValue(dataId: string, groupName?: string, options?: {
45
+ namespaceId?: string;
46
+ defaultValue?: string;
47
+ watch?: boolean;
48
+ }): PropertyDecorator;
49
+ /**
50
+ * 获取类的所有配置中心值元数据
51
+ */
52
+ export declare function getConfigCenterValueMetadata(target: Constructor<unknown>): Map<string | symbol, ConfigCenterValueMetadata>;
53
+ /**
54
+ * 初始化类的配置中心值
55
+ * 在类实例化后调用,自动加载配置值
56
+ */
57
+ export declare function initializeConfigCenterValues(instance: object, target: Constructor<unknown>): Promise<void>;
58
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/config-center/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAwB,EACnC,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,iBAAiB,CAsCnB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,yBAAyB,CAAC,CAIjD;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -0,0 +1,9 @@
1
+ export { ConfigCenterModule } from './config-center-module';
2
+ export type { ConfigCenterModuleOptions, ConfigCenterProvider, NacosConfigCenterOptions } from './config-center-module';
3
+ export { NacosConfigCenter } from './nacos-config-center';
4
+ export { CONFIG_CENTER_TOKEN } from './types';
5
+ export type { ConfigCenter, ConfigChangeListener, ConfigResult } from './types';
6
+ export { ConfigCenterValue, getConfigCenterValueMetadata, initializeConfigCenterValues, } from './decorators';
7
+ export { NacosValue } from './nacos-decorators';
8
+ export type { ConfigCenterValueMetadata } from './decorators';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microservice/config-center/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { NacosClient } from '@dangao/nacos-client';
2
+ import type { ConfigResult, ConfigChangeListener, ConfigCenter } from './types';
3
+ /**
4
+ * Nacos 配置中心实现
5
+ * 实现 ConfigCenter 接口,内部使用 @dangao/nacos-client
6
+ */
7
+ export declare class NacosConfigCenter implements ConfigCenter {
8
+ private readonly client;
9
+ private readonly configClient;
10
+ private readonly watchers;
11
+ private readonly watchInterval;
12
+ constructor(client: NacosClient, options?: {
13
+ /**
14
+ * 配置监听轮询间隔(毫秒)
15
+ * @default 3000
16
+ */
17
+ watchInterval?: number;
18
+ });
19
+ /**
20
+ * 获取配置
21
+ */
22
+ getConfig(dataId: string, groupName: string, namespaceId?: string): Promise<ConfigResult>;
23
+ /**
24
+ * 监听配置变更
25
+ * 通过轮询和 md5 比对实现配置热更新
26
+ */
27
+ watchConfig(dataId: string, groupName: string, listener: ConfigChangeListener, namespaceId?: string): () => void;
28
+ /**
29
+ * 关闭配置中心连接
30
+ */
31
+ close(): Promise<void>;
32
+ /**
33
+ * 生成监听器 key
34
+ */
35
+ private getWatchKey;
36
+ }
37
+ //# sourceMappingURL=nacos-config-center.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos-config-center.d.ts","sourceRoot":"","sources":["../../../src/microservice/config-center/nacos-config-center.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhF;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkF;IAC3G,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAG5C,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE;QACR;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAOH;;OAEG;IACU,SAAS,CACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC;IAexB;;;OAGG;IACI,WAAW,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,IAAI;IAgDb;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB"}
@@ -0,0 +1,24 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * NacosValue 装饰器
4
+ * Nacos 特定的配置值注入装饰器
5
+ * 这是 @ConfigCenterValue 的便捷别名,专门用于 Nacos
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * @Injectable()
10
+ * class MyService {
11
+ * @NacosValue('my-config', 'DEFAULT_GROUP')
12
+ * public configValue: string = '';
13
+ *
14
+ * @NacosValue('app-name', 'DEFAULT_GROUP', { defaultValue: 'MyApp' })
15
+ * public appName: string = '';
16
+ * }
17
+ * ```
18
+ */
19
+ export declare function NacosValue(dataId: string, groupName?: string, options?: {
20
+ namespaceId?: string;
21
+ defaultValue?: string;
22
+ watch?: boolean;
23
+ }): PropertyDecorator;
24
+ //# sourceMappingURL=nacos-decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nacos-decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/config-center/nacos-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAI1B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAwB,EACnC,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,iBAAiB,CAGnB"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 配置中心抽象接口
3
+ * 定义配置中心的核心能力,不依赖具体实现
4
+ */
5
+ export interface ConfigCenter {
6
+ /**
7
+ * 获取配置
8
+ * @param dataId - 配置 ID
9
+ * @param groupName - 配置分组
10
+ * @param namespaceId - 命名空间
11
+ * @returns 配置内容
12
+ */
13
+ getConfig(dataId: string, groupName: string, namespaceId?: string): Promise<ConfigResult>;
14
+ /**
15
+ * 监听配置变更
16
+ * @param dataId - 配置 ID
17
+ * @param groupName - 配置分组
18
+ * @param listener - 变更监听器
19
+ * @param namespaceId - 命名空间(可选)
20
+ * @returns 取消监听的函数
21
+ */
22
+ watchConfig(dataId: string, groupName: string, listener: ConfigChangeListener, namespaceId?: string): () => void;
23
+ /**
24
+ * 关闭配置中心连接
25
+ */
26
+ close(): Promise<void>;
27
+ }
28
+ /**
29
+ * 配置查询结果
30
+ */
31
+ export interface ConfigResult {
32
+ /**
33
+ * 配置内容
34
+ */
35
+ content: string;
36
+ /**
37
+ * 配置 MD5 值(用于判断配置是否变更)
38
+ */
39
+ md5: string;
40
+ /**
41
+ * 最后修改时间(时间戳)
42
+ */
43
+ lastModified: number;
44
+ /**
45
+ * 内容类型
46
+ */
47
+ contentType: string;
48
+ }
49
+ /**
50
+ * 配置变更监听器
51
+ */
52
+ export interface ConfigChangeListener {
53
+ /**
54
+ * 配置变更回调
55
+ * @param result - 新的配置结果
56
+ */
57
+ (result: ConfigResult): void;
58
+ }
59
+ /**
60
+ * ConfigCenter Token(用于依赖注入)
61
+ */
62
+ export declare const CONFIG_CENTER_TOKEN: unique symbol;
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/microservice/config-center/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,WAAW,CACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,IAAI,CAAC;IAEd;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAgC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { CircuitBreakerState, type CircuitBreakerOptions, type CircuitBreakerStats } from './types';
2
+ export { CircuitBreakerState, type CircuitBreakerOptions, type CircuitBreakerStats } from './types';
3
+ /**
4
+ * 熔断器实现
5
+ */
6
+ export declare class CircuitBreaker {
7
+ private state;
8
+ private readonly options;
9
+ private readonly records;
10
+ private openTime?;
11
+ private halfOpenTestCount;
12
+ constructor(options?: CircuitBreakerOptions);
13
+ /**
14
+ * 执行请求(带熔断保护)
15
+ */
16
+ execute<T>(fn: () => Promise<T>, fallback?: () => Promise<T> | T): Promise<T>;
17
+ /**
18
+ * 记录请求
19
+ */
20
+ private recordRequest;
21
+ /**
22
+ * 清理过期记录
23
+ */
24
+ private cleanupRecords;
25
+ /**
26
+ * 更新熔断器状态
27
+ */
28
+ private updateState;
29
+ /**
30
+ * 判断是否应该开启熔断
31
+ */
32
+ private shouldOpen;
33
+ /**
34
+ * 判断是否应该关闭熔断(半开状态下)
35
+ */
36
+ private shouldClose;
37
+ /**
38
+ * 创建超时 Promise
39
+ */
40
+ private createTimeoutPromise;
41
+ /**
42
+ * 获取当前状态
43
+ */
44
+ getState(): CircuitBreakerState;
45
+ /**
46
+ * 获取统计信息
47
+ */
48
+ getStats(): CircuitBreakerStats;
49
+ /**
50
+ * 重置熔断器
51
+ */
52
+ reset(): void;
53
+ }
54
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEpG,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAUpG;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAa;gBAEnB,OAAO,GAAE,qBAA0B;IAWtD;;OAEG;IACU,OAAO,CAAC,CAAC,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC9B,OAAO,CAAC,CAAC,CAAC;IA8Cb;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAmCnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACI,QAAQ,IAAI,mBAAmB;IAKtC;;OAEG;IACI,QAAQ,IAAI,mBAAmB;IAsBtC;;OAEG;IACI,KAAK,IAAI,IAAI;CAMrB"}
@@ -0,0 +1,51 @@
1
+ import 'reflect-metadata';
2
+ import type { CircuitBreakerOptions } from './types';
3
+ import type { Constructor } from '../../core/types';
4
+ /**
5
+ * 熔断器元数据
6
+ */
7
+ export interface CircuitBreakerMetadata {
8
+ /**
9
+ * 熔断器选项
10
+ */
11
+ options?: CircuitBreakerOptions;
12
+ /**
13
+ * 降级处理函数名(可选)
14
+ */
15
+ fallbackMethod?: string;
16
+ }
17
+ /**
18
+ * CircuitBreaker 装饰器
19
+ * 用于在方法上自动应用熔断保护
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * @Injectable()
24
+ * class MyService {
25
+ * @CircuitBreaker({
26
+ * failureThreshold: 5,
27
+ * resetTimeout: 60000,
28
+ * })
29
+ * public async callExternalService() {
30
+ * // 自动应用熔断保护
31
+ * }
32
+ *
33
+ * @CircuitBreaker({
34
+ * failureThreshold: 5,
35
+ * }, 'fallbackMethod')
36
+ * public async callWithFallback() {
37
+ * // 自动应用熔断保护,失败时调用 fallbackMethod
38
+ * }
39
+ *
40
+ * private async fallbackMethod() {
41
+ * return { message: 'Fallback response' };
42
+ * }
43
+ * }
44
+ * ```
45
+ */
46
+ export declare function CircuitBreaker(options?: CircuitBreakerOptions, fallbackMethod?: string): MethodDecorator;
47
+ /**
48
+ * 获取方法的熔断器元数据
49
+ */
50
+ export declare function getCircuitBreakerMetadata(target: Constructor<unknown>): Map<string | symbol, CircuitBreakerMetadata>;
51
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,qBAAqB,EAC/B,cAAc,CAAC,EAAE,MAAM,GACtB,eAAe,CA4CjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,sBAAsB,CAAC,CAI9C"}
@@ -0,0 +1,9 @@
1
+ export { CircuitBreaker } from './circuit-breaker';
2
+ export { CircuitBreakerState } from './types';
3
+ export { RateLimiter } from './rate-limiter';
4
+ export { RedisRateLimiter } from './redis-rate-limiter';
5
+ export { RetryStrategyImpl } from './retry-strategy';
6
+ export { CircuitBreaker as CircuitBreakerDecorator, getCircuitBreakerMetadata, } from './decorators';
7
+ export type { CircuitBreakerMetadata } from './decorators';
8
+ export type { CircuitBreakerOptions, CircuitBreakerStats, RateLimiterOptions, RetryStrategy, RedisRateLimiterOptions, } from './types';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,cAAc,IAAI,uBAAuB,EACzC,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,uBAAuB,GACxB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { RateLimiterOptions } from './types';
2
+ /**
3
+ * 限流器实现(内存版)
4
+ */
5
+ export declare class RateLimiter {
6
+ private readonly options;
7
+ private readonly requests;
8
+ constructor(options?: RateLimiterOptions);
9
+ /**
10
+ * 检查是否允许请求
11
+ * @param key - 限流键(如服务名、IP 等)
12
+ * @returns 是否允许请求
13
+ */
14
+ allow(key: string): Promise<boolean>;
15
+ /**
16
+ * 获取剩余请求数
17
+ * @param key - 限流键
18
+ * @returns 剩余请求数
19
+ */
20
+ getRemaining(key: string): number;
21
+ /**
22
+ * 重置限流器
23
+ */
24
+ reset(key?: string): void;
25
+ }
26
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyE;IACjG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAE1C,OAAO,GAAE,kBAAuB;IAOnD;;;;OAIG;IACU,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBjD;;;;OAIG;IACI,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUxC;;OAEG;IACI,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAOjC"}
@@ -0,0 +1,76 @@
1
+ import type { RateLimiterOptions } from './types';
2
+ /**
3
+ * Redis 限流器选项
4
+ */
5
+ export interface RedisRateLimiterOptions {
6
+ /**
7
+ * Redis 客户端(需要用户提供)
8
+ * 支持任何兼容的 Redis 客户端接口
9
+ */
10
+ client: {
11
+ /**
12
+ * 获取键值
13
+ */
14
+ get(key: string): Promise<string | null>;
15
+ /**
16
+ * 设置键值(带过期时间)
17
+ */
18
+ set(key: string, value: string, options?: {
19
+ PX?: number;
20
+ EX?: number;
21
+ }): Promise<void>;
22
+ /**
23
+ * 删除键
24
+ */
25
+ del(key: string): Promise<void>;
26
+ /**
27
+ * 递增键值(原子操作)
28
+ */
29
+ incr(key: string): Promise<number>;
30
+ /**
31
+ * 设置键的过期时间
32
+ */
33
+ expire(key: string, seconds: number): Promise<void>;
34
+ /**
35
+ * 检查键是否存在
36
+ */
37
+ exists(key: string): Promise<number>;
38
+ };
39
+ /**
40
+ * 键前缀
41
+ * @default 'ratelimit:'
42
+ */
43
+ keyPrefix?: string;
44
+ }
45
+ /**
46
+ * Redis 限流器实现(分布式限流)
47
+ * 支持多个服务实例共享限流状态
48
+ */
49
+ export declare class RedisRateLimiter {
50
+ private readonly client;
51
+ private readonly keyPrefix;
52
+ private readonly options;
53
+ constructor(redisOptions: RedisRateLimiterOptions, rateLimiterOptions?: RateLimiterOptions);
54
+ /**
55
+ * 检查是否允许请求
56
+ * @param key - 限流键(如服务名、IP 等)
57
+ * @returns 是否允许请求
58
+ */
59
+ allow(key: string): Promise<boolean>;
60
+ /**
61
+ * 获取剩余请求数
62
+ * @param key - 限流键
63
+ * @returns 剩余请求数
64
+ */
65
+ getRemaining(key: string): Promise<number>;
66
+ /**
67
+ * 重置限流器
68
+ * @param key - 限流键(可选,如果不提供则重置所有)
69
+ */
70
+ reset(key?: string): Promise<void>;
71
+ /**
72
+ * 生成 Redis 键
73
+ */
74
+ private getKey;
75
+ }
76
+ //# sourceMappingURL=redis-rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/redis-rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;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;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;gBAGA,YAAY,EAAE,uBAAuB,EACrC,kBAAkB,GAAE,kBAAuB;IAU7C;;;;OAIG;IACU,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBjD;;;;OAIG;IACU,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvD;;;OAGG;IACU,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C;;OAEG;IACH,OAAO,CAAC,MAAM;CAGf"}
@@ -0,0 +1,21 @@
1
+ import type { RetryStrategy } from './types';
2
+ /**
3
+ * 重试策略实现
4
+ */
5
+ export declare class RetryStrategyImpl {
6
+ private readonly options;
7
+ constructor(options?: RetryStrategy);
8
+ /**
9
+ * 执行带重试的请求
10
+ */
11
+ execute<T>(fn: () => Promise<T>): Promise<T>;
12
+ /**
13
+ * 计算重试延迟
14
+ */
15
+ private calculateDelay;
16
+ /**
17
+ * 休眠
18
+ */
19
+ private sleep;
20
+ }
21
+ //# sourceMappingURL=retry-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-strategy.d.ts","sourceRoot":"","sources":["../../../src/microservice/governance/retry-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAEtB;gBAEiB,OAAO,GAAE,aAAkB;IAW9C;;OAEG;IACU,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA6BzD;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}