@round2ai/r2-cli 1.0.2 → 1.0.3

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 (158) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +843 -181
  3. package/dist/index.js.map +7 -1
  4. package/package.json +8 -4
  5. package/dist/api.d.ts +0 -45
  6. package/dist/api.d.ts.map +0 -1
  7. package/dist/api.js +0 -90
  8. package/dist/api.js.map +0 -1
  9. package/dist/auth.d.ts +0 -35
  10. package/dist/auth.d.ts.map +0 -1
  11. package/dist/auth.js +0 -240
  12. package/dist/auth.js.map +0 -1
  13. package/dist/commands/ai/chat.d.ts +0 -9
  14. package/dist/commands/ai/chat.d.ts.map +0 -1
  15. package/dist/commands/ai/chat.js +0 -16
  16. package/dist/commands/ai/chat.js.map +0 -1
  17. package/dist/commands/ai/skills.d.ts +0 -9
  18. package/dist/commands/ai/skills.d.ts.map +0 -1
  19. package/dist/commands/ai/skills.js +0 -16
  20. package/dist/commands/ai/skills.js.map +0 -1
  21. package/dist/commands/auth/login.d.ts +0 -24
  22. package/dist/commands/auth/login.d.ts.map +0 -1
  23. package/dist/commands/auth/login.js +0 -288
  24. package/dist/commands/auth/login.js.map +0 -1
  25. package/dist/commands/auth/logout.d.ts +0 -16
  26. package/dist/commands/auth/logout.d.ts.map +0 -1
  27. package/dist/commands/auth/logout.js +0 -49
  28. package/dist/commands/auth/logout.js.map +0 -1
  29. package/dist/commands/auth/status.d.ts +0 -28
  30. package/dist/commands/auth/status.d.ts.map +0 -1
  31. package/dist/commands/auth/status.js +0 -92
  32. package/dist/commands/auth/status.js.map +0 -1
  33. package/dist/commands/base.d.ts +0 -107
  34. package/dist/commands/base.d.ts.map +0 -1
  35. package/dist/commands/base.js +0 -153
  36. package/dist/commands/base.js.map +0 -1
  37. package/dist/commands/business/pricing.d.ts +0 -9
  38. package/dist/commands/business/pricing.d.ts.map +0 -1
  39. package/dist/commands/business/pricing.js +0 -16
  40. package/dist/commands/business/pricing.js.map +0 -1
  41. package/dist/commands/business/report.d.ts +0 -9
  42. package/dist/commands/business/report.d.ts.map +0 -1
  43. package/dist/commands/business/report.js +0 -16
  44. package/dist/commands/business/report.js.map +0 -1
  45. package/dist/commands/inventory/risk.d.ts +0 -9
  46. package/dist/commands/inventory/risk.d.ts.map +0 -1
  47. package/dist/commands/inventory/risk.js +0 -16
  48. package/dist/commands/inventory/risk.js.map +0 -1
  49. package/dist/config.d.ts +0 -54
  50. package/dist/config.d.ts.map +0 -1
  51. package/dist/config.js +0 -111
  52. package/dist/config.js.map +0 -1
  53. package/dist/index.d.ts +0 -7
  54. package/dist/index.d.ts.map +0 -1
  55. package/dist/query/executor.d.ts +0 -138
  56. package/dist/query/executor.d.ts.map +0 -1
  57. package/dist/query/executor.js +0 -232
  58. package/dist/query/executor.js.map +0 -1
  59. package/dist/query/types.d.ts +0 -116
  60. package/dist/query/types.d.ts.map +0 -1
  61. package/dist/query/types.js +0 -15
  62. package/dist/query/types.js.map +0 -1
  63. package/dist/query/utils.d.ts +0 -99
  64. package/dist/query/utils.d.ts.map +0 -1
  65. package/dist/query/utils.js +0 -151
  66. package/dist/query/utils.js.map +0 -1
  67. package/dist/services/ServiceContainer.d.ts +0 -110
  68. package/dist/services/ServiceContainer.d.ts.map +0 -1
  69. package/dist/services/ServiceContainer.js +0 -242
  70. package/dist/services/ServiceContainer.js.map +0 -1
  71. package/dist/services/api/client.d.ts +0 -88
  72. package/dist/services/api/client.d.ts.map +0 -1
  73. package/dist/services/api/client.js +0 -188
  74. package/dist/services/api/client.js.map +0 -1
  75. package/dist/services/api/types.d.ts +0 -233
  76. package/dist/services/api/types.d.ts.map +0 -1
  77. package/dist/services/api/types.js +0 -83
  78. package/dist/services/api/types.js.map +0 -1
  79. package/dist/services/auth/provider.d.ts +0 -73
  80. package/dist/services/auth/provider.d.ts.map +0 -1
  81. package/dist/services/auth/provider.js +0 -339
  82. package/dist/services/auth/provider.js.map +0 -1
  83. package/dist/services/auth/session.d.ts +0 -73
  84. package/dist/services/auth/session.d.ts.map +0 -1
  85. package/dist/services/auth/session.js +0 -200
  86. package/dist/services/auth/session.js.map +0 -1
  87. package/dist/services/business/demand.d.ts +0 -70
  88. package/dist/services/business/demand.d.ts.map +0 -1
  89. package/dist/services/business/demand.js +0 -240
  90. package/dist/services/business/demand.js.map +0 -1
  91. package/dist/services/business/fulfillment.d.ts +0 -122
  92. package/dist/services/business/fulfillment.d.ts.map +0 -1
  93. package/dist/services/business/fulfillment.js +0 -267
  94. package/dist/services/business/fulfillment.js.map +0 -1
  95. package/dist/services/business/inventory.d.ts +0 -54
  96. package/dist/services/business/inventory.d.ts.map +0 -1
  97. package/dist/services/business/inventory.js +0 -245
  98. package/dist/services/business/inventory.js.map +0 -1
  99. package/dist/services/business/pricing.d.ts +0 -41
  100. package/dist/services/business/pricing.d.ts.map +0 -1
  101. package/dist/services/business/pricing.js +0 -133
  102. package/dist/services/business/pricing.js.map +0 -1
  103. package/dist/services/business/report.d.ts +0 -74
  104. package/dist/services/business/report.d.ts.map +0 -1
  105. package/dist/services/business/report.js +0 -380
  106. package/dist/services/business/report.js.map +0 -1
  107. package/dist/services/config/manager.d.ts +0 -105
  108. package/dist/services/config/manager.d.ts.map +0 -1
  109. package/dist/services/config/manager.js +0 -324
  110. package/dist/services/config/manager.js.map +0 -1
  111. package/dist/services/config/types.d.ts +0 -128
  112. package/dist/services/config/types.d.ts.map +0 -1
  113. package/dist/services/config/types.js +0 -209
  114. package/dist/services/config/types.js.map +0 -1
  115. package/dist/services/index.d.ts +0 -17
  116. package/dist/services/index.d.ts.map +0 -1
  117. package/dist/services/index.js +0 -44
  118. package/dist/services/index.js.map +0 -1
  119. package/dist/services/storage/index.d.ts +0 -63
  120. package/dist/services/storage/index.d.ts.map +0 -1
  121. package/dist/services/storage/index.js +0 -136
  122. package/dist/services/storage/index.js.map +0 -1
  123. package/dist/types/api.d.ts +0 -58
  124. package/dist/types/api.d.ts.map +0 -1
  125. package/dist/types/api.js +0 -5
  126. package/dist/types/api.js.map +0 -1
  127. package/dist/types/auth.d.ts +0 -59
  128. package/dist/types/auth.d.ts.map +0 -1
  129. package/dist/types/auth.js +0 -11
  130. package/dist/types/auth.js.map +0 -1
  131. package/dist/types/business.d.ts +0 -201
  132. package/dist/types/business.d.ts.map +0 -1
  133. package/dist/types/business.js +0 -5
  134. package/dist/types/business.js.map +0 -1
  135. package/dist/types/command.d.ts +0 -106
  136. package/dist/types/command.d.ts.map +0 -1
  137. package/dist/types/command.js +0 -5
  138. package/dist/types/command.js.map +0 -1
  139. package/dist/types/config.d.ts +0 -66
  140. package/dist/types/config.d.ts.map +0 -1
  141. package/dist/types/config.js +0 -5
  142. package/dist/types/config.js.map +0 -1
  143. package/dist/utils/async.d.ts +0 -79
  144. package/dist/utils/async.d.ts.map +0 -1
  145. package/dist/utils/async.js +0 -179
  146. package/dist/utils/async.js.map +0 -1
  147. package/dist/utils/format.d.ts +0 -90
  148. package/dist/utils/format.d.ts.map +0 -1
  149. package/dist/utils/format.js +0 -227
  150. package/dist/utils/format.js.map +0 -1
  151. package/dist/utils/logger.d.ts +0 -136
  152. package/dist/utils/logger.d.ts.map +0 -1
  153. package/dist/utils/logger.js +0 -249
  154. package/dist/utils/logger.js.map +0 -1
  155. package/dist/utils/validation.d.ts +0 -100
  156. package/dist/utils/validation.d.ts.map +0 -1
  157. package/dist/utils/validation.js +0 -334
  158. package/dist/utils/validation.js.map +0 -1
@@ -1,99 +0,0 @@
1
- /**
2
- * 查询工具函数
3
- */
4
- /**
5
- * 生成 UUID
6
- */
7
- export declare function createUUID(): string;
8
- /**
9
- * 生成短 ID
10
- */
11
- export declare function createShortId(length?: number): string;
12
- /**
13
- * 创建查询计时器
14
- */
15
- export declare class QueryTimer {
16
- private startTime;
17
- private endTime?;
18
- constructor();
19
- /**
20
- * 获取已用时间(毫秒)
21
- */
22
- getElapsedTime(): number;
23
- /**
24
- * 停止计时
25
- */
26
- stop(): number;
27
- /**
28
- * 重置计时器
29
- */
30
- reset(): void;
31
- }
32
- /**
33
- * 创建查询进度状态机
34
- */
35
- export declare class QueryProgress {
36
- private currentProgress;
37
- private message;
38
- /**
39
- * 更新进度
40
- */
41
- update(progress: number, message: string): void;
42
- /**
43
- * 增加进度
44
- */
45
- increment(amount: number, message?: string): void;
46
- /**
47
- * 获取当前进度
48
- */
49
- getProgress(): number;
50
- /**
51
- * 获取当前消息
52
- */
53
- getMessage(): string;
54
- /**
55
- * 重置进度
56
- */
57
- reset(): void;
58
- }
59
- /**
60
- * 重试计数器
61
- */
62
- export declare class RetryCounter {
63
- private retries;
64
- private maxRetries;
65
- constructor(maxRetries?: number);
66
- /**
67
- * 增加重试次数
68
- */
69
- increment(): number;
70
- /**
71
- * 获取当前重试次数
72
- */
73
- getRetries(): number;
74
- /**
75
- * 获取最大重试次数
76
- */
77
- getMaxRetries(): number;
78
- /**
79
- * 是否达到最大重试次数
80
- */
81
- isMaxRetriesReached(): boolean;
82
- /**
83
- * 重置计数器
84
- */
85
- reset(): void;
86
- /**
87
- * 获取下次延迟时间(毫秒)
88
- */
89
- getNextDelay(): number;
90
- }
91
- /**
92
- * 创建查询上下文 ID
93
- */
94
- export declare function createQueryId(): string;
95
- /**
96
- * 计算查询耗时
97
- */
98
- export declare function calculateQueryDuration(startTime: number): number;
99
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/query/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAI,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAS;;IAMzB;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,IAAI,IAAI,MAAM;IAKd;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,OAAO,CAAM;IAErB;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ/C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjD;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,UAAU,CAAK;gBAEX,UAAU,SAAI;IAI1B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -1,151 +0,0 @@
1
- /**
2
- * 查询工具函数
3
- */
4
- import { randomBytes } from "node:crypto";
5
- /**
6
- * 生成 UUID
7
- */
8
- export function createUUID() {
9
- return randomBytes(16).toString("hex");
10
- }
11
- /**
12
- * 生成短 ID
13
- */
14
- export function createShortId(length = 8) {
15
- return randomBytes(length).toString("hex").substring(0, length);
16
- }
17
- /**
18
- * 创建查询计时器
19
- */
20
- export class QueryTimer {
21
- startTime;
22
- endTime;
23
- constructor() {
24
- this.startTime = Date.now();
25
- }
26
- /**
27
- * 获取已用时间(毫秒)
28
- */
29
- getElapsedTime() {
30
- if (this.endTime) {
31
- return this.endTime - this.startTime;
32
- }
33
- return Date.now() - this.startTime;
34
- }
35
- /**
36
- * 停止计时
37
- */
38
- stop() {
39
- this.endTime = Date.now();
40
- return this.getElapsedTime();
41
- }
42
- /**
43
- * 重置计时器
44
- */
45
- reset() {
46
- this.startTime = Date.now();
47
- this.endTime = null;
48
- }
49
- }
50
- /**
51
- * 创建查询进度状态机
52
- */
53
- export class QueryProgress {
54
- currentProgress = 0;
55
- message = "";
56
- /**
57
- * 更新进度
58
- */
59
- update(progress, message) {
60
- if (progress < 0)
61
- progress = 0;
62
- if (progress > 100)
63
- progress = 100;
64
- this.currentProgress = progress;
65
- this.message = message;
66
- }
67
- /**
68
- * 增加进度
69
- */
70
- increment(amount, message) {
71
- this.update(this.currentProgress + amount, message || this.message);
72
- }
73
- /**
74
- * 获取当前进度
75
- */
76
- getProgress() {
77
- return this.currentProgress;
78
- }
79
- /**
80
- * 获取当前消息
81
- */
82
- getMessage() {
83
- return this.message;
84
- }
85
- /**
86
- * 重置进度
87
- */
88
- reset() {
89
- this.currentProgress = 0;
90
- this.message = "";
91
- }
92
- }
93
- /**
94
- * 重试计数器
95
- */
96
- export class RetryCounter {
97
- retries = 0;
98
- maxRetries = 3;
99
- constructor(maxRetries = 3) {
100
- this.maxRetries = maxRetries;
101
- }
102
- /**
103
- * 增加重试次数
104
- */
105
- increment() {
106
- return ++this.retries;
107
- }
108
- /**
109
- * 获取当前重试次数
110
- */
111
- getRetries() {
112
- return this.retries;
113
- }
114
- /**
115
- * 获取最大重试次数
116
- */
117
- getMaxRetries() {
118
- return this.maxRetries;
119
- }
120
- /**
121
- * 是否达到最大重试次数
122
- */
123
- isMaxRetriesReached() {
124
- return this.retries >= this.maxRetries;
125
- }
126
- /**
127
- * 重置计数器
128
- */
129
- reset() {
130
- this.retries = 0;
131
- }
132
- /**
133
- * 获取下次延迟时间(毫秒)
134
- */
135
- getNextDelay() {
136
- return Math.pow(2, this.retries) * 1000; // 指数退避
137
- }
138
- }
139
- /**
140
- * 创建查询上下文 ID
141
- */
142
- export function createQueryId() {
143
- return `query-${Date.now()}-${createShortId(4)}`;
144
- }
145
- /**
146
- * 计算查询耗时
147
- */
148
- export function calculateQueryDuration(startTime) {
149
- return Date.now() - startTime;
150
- }
151
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/query/utils.ts"],"names":[],"mappings":"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"}
@@ -1,110 +0,0 @@
1
- /**
2
- * 服务容器 - 依赖注入核心
3
- */
4
- /**
5
- * 服务容器配置
6
- */
7
- export interface ServiceContainerConfig {
8
- strictMode?: boolean;
9
- autoResolve?: boolean;
10
- }
11
- /**
12
- * 服务工厂
13
- */
14
- export type ServiceFactory<T> = T | (() => Promise<T> | T);
15
- /**
16
- * 服务容器
17
- */
18
- export declare class ServiceContainer {
19
- private services;
20
- private config;
21
- constructor(config?: ServiceContainerConfig);
22
- /**
23
- * 注册服务
24
- */
25
- register<T>(name: string, factory: ServiceFactory<T>, options?: {
26
- singleton?: boolean;
27
- }): void;
28
- /**
29
- * 注册单例服务
30
- */
31
- registerSingleton<T>(name: string, factory: ServiceFactory<T>): void;
32
- /**
33
- * 注册多实例服务
34
- */
35
- registerTransient<T>(name: string, factory: ServiceFactory<T>): void;
36
- /**
37
- * 注册工厂服务
38
- */
39
- registerFactory<T>(name: string, factory: () => Promise<T> | T): void;
40
- /**
41
- * 注册单例工厂服务
42
- */
43
- registerSingletonFactory<T>(name: string, factory: () => Promise<T> | T): void;
44
- /**
45
- * 获取服务
46
- */
47
- resolve<T>(name: string): Promise<T>;
48
- /**
49
- * 获取服务(同步版本)
50
- */
51
- resolveSync<T>(name: string): T;
52
- /**
53
- * 检查服务是否已注册
54
- */
55
- has(name: string): boolean;
56
- /**
57
- * 获取所有注册的服务名称
58
- */
59
- list(): string[];
60
- /**
61
- * 移除服务
62
- */
63
- unregister(name: string): void;
64
- /**
65
- * 创建子容器
66
- */
67
- createChild(config?: ServiceContainerConfig): ServiceContainer;
68
- /**
69
- * 创建模块
70
- */
71
- createModule(name: string, setup: (container: ServiceContainer) => void): void;
72
- /**
73
- * 清空所有服务
74
- */
75
- clear(): void;
76
- /**
77
- * 获取统计信息
78
- */
79
- getStats(): {
80
- totalServices: number;
81
- singletonCount: number;
82
- transientCount: number;
83
- resolvedSingletons: number;
84
- };
85
- }
86
- /**
87
- * 依赖注入装饰器工厂
88
- */
89
- export declare function Inject(serviceName?: string): ParameterDecorator;
90
- /**
91
- * 自动注入装饰器
92
- */
93
- export declare function Injectable(): ClassDecorator;
94
- /**
95
- * 创建默认服务容器
96
- */
97
- export declare const defaultContainer: ServiceContainer;
98
- /**
99
- * 服务容器提供者
100
- */
101
- export interface ServiceProvider {
102
- container: ServiceContainer;
103
- bootstrap(): Promise<void>;
104
- shutdown(): Promise<void>;
105
- }
106
- /**
107
- * 创建默认服务提供者
108
- */
109
- export declare function createServiceProvider(): ServiceProvider;
110
- //# sourceMappingURL=ServiceContainer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceContainer.d.ts","sourceRoot":"","sources":["../../src/services/ServiceContainer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAW3D;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,GAAE,sBAA2B;IAQ/C;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAUlG;;OAEG;IACH,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpE;;OAEG;IACH,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpE;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAIrE;;OAEG;IACH,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAI9E;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IA2C1C;;OAEG;IACH,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAqC/B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B;;OAEG;IACH,WAAW,CAAC,MAAM,GAAE,sBAA2B,GAAG,gBAAgB;IAWlE;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAoB9E;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ;;;;;;CAoBT;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQ/D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAK3C;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAevD"}
@@ -1,242 +0,0 @@
1
- /**
2
- * 服务容器 - 依赖注入核心
3
- */
4
- /**
5
- * 服务容器
6
- */
7
- export class ServiceContainer {
8
- services = new Map();
9
- config;
10
- constructor(config = {}) {
11
- this.config = {
12
- strictMode: true,
13
- autoResolve: true,
14
- ...config,
15
- };
16
- }
17
- /**
18
- * 注册服务
19
- */
20
- register(name, factory, options = {}) {
21
- const { singleton = true } = options;
22
- this.services.set(name, {
23
- factory,
24
- isSingleton: singleton,
25
- instance: singleton ? undefined : null,
26
- });
27
- }
28
- /**
29
- * 注册单例服务
30
- */
31
- registerSingleton(name, factory) {
32
- this.register(name, factory, { singleton: true });
33
- }
34
- /**
35
- * 注册多实例服务
36
- */
37
- registerTransient(name, factory) {
38
- this.register(name, factory, { singleton: false });
39
- }
40
- /**
41
- * 注册工厂服务
42
- */
43
- registerFactory(name, factory) {
44
- this.register(name, factory);
45
- }
46
- /**
47
- * 注册单例工厂服务
48
- */
49
- registerSingletonFactory(name, factory) {
50
- this.registerSingleton(name, factory);
51
- }
52
- /**
53
- * 获取服务
54
- */
55
- async resolve(name) {
56
- const registration = this.services.get(name);
57
- if (!registration) {
58
- if (this.config.strictMode) {
59
- throw new Error(`Service '${name}' not found`);
60
- }
61
- return null;
62
- }
63
- // 如果是单例且已实例化,直接返回
64
- if (registration.isSingleton && registration.instance !== undefined) {
65
- return registration.instance;
66
- }
67
- // 处理工厂函数
68
- const factory = registration.factory;
69
- let instance;
70
- if (typeof factory === "function") {
71
- // 如果是异步工厂函数
72
- if (this.config.autoResolve && factory.constructor.name === "AsyncFunction") {
73
- instance = await factory();
74
- }
75
- else if (this.config.autoResolve && factory.length === 0) {
76
- // 同步工厂函数
77
- instance = factory();
78
- }
79
- else {
80
- // 如果需要参数但未提供,报错
81
- throw new Error(`Service '${name}' is a factory function but requires arguments`);
82
- }
83
- }
84
- else {
85
- // 直接返回值
86
- instance = factory;
87
- }
88
- // 缓存单例实例
89
- if (registration.isSingleton) {
90
- registration.instance = instance;
91
- }
92
- return instance;
93
- }
94
- /**
95
- * 获取服务(同步版本)
96
- */
97
- resolveSync(name) {
98
- const registration = this.services.get(name);
99
- if (!registration) {
100
- if (this.config.strictMode) {
101
- throw new Error(`Service '${name}' not found`);
102
- }
103
- return null;
104
- }
105
- // 如果是单例且已实例化,直接返回
106
- if (registration.isSingleton && registration.instance !== undefined) {
107
- return registration.instance;
108
- }
109
- // 处理工厂函数
110
- const factory = registration.factory;
111
- let instance;
112
- if (typeof factory === "function") {
113
- if (factory.constructor.name !== "AsyncFunction" && factory.length === 0) {
114
- instance = factory();
115
- }
116
- else {
117
- throw new Error(`Service '${name}' is an async factory, use resolve() instead`);
118
- }
119
- }
120
- else {
121
- instance = factory;
122
- }
123
- // 缓存单例实例
124
- if (registration.isSingleton) {
125
- registration.instance = instance;
126
- }
127
- return instance;
128
- }
129
- /**
130
- * 检查服务是否已注册
131
- */
132
- has(name) {
133
- return this.services.has(name);
134
- }
135
- /**
136
- * 获取所有注册的服务名称
137
- */
138
- list() {
139
- return Array.from(this.services.keys());
140
- }
141
- /**
142
- * 移除服务
143
- */
144
- unregister(name) {
145
- const registration = this.services.get(name);
146
- if (registration) {
147
- this.services.delete(name);
148
- }
149
- }
150
- /**
151
- * 创建子容器
152
- */
153
- createChild(config = {}) {
154
- const child = new ServiceContainer({ ...this.config, ...config });
155
- // 复制服务注册信息
156
- for (const [name, registration] of this.services) {
157
- child.services.set(name, registration);
158
- }
159
- return child;
160
- }
161
- /**
162
- * 创建模块
163
- */
164
- createModule(name, setup) {
165
- const modulePrefix = `${name}.`;
166
- // 获取该模块的所有服务
167
- const moduleServices = Array.from(this.services.entries()).filter(([key]) => key.startsWith(modulePrefix));
168
- // 创建新的服务容器用于模块
169
- const moduleContainer = new ServiceContainer(this.config);
170
- // 复制模块服务
171
- for (const [key, registration] of moduleServices) {
172
- moduleContainer.services.set(key.replace(modulePrefix, ""), registration);
173
- }
174
- // 应用模块设置
175
- setup(moduleContainer);
176
- }
177
- /**
178
- * 清空所有服务
179
- */
180
- clear() {
181
- this.services.clear();
182
- }
183
- /**
184
- * 获取统计信息
185
- */
186
- getStats() {
187
- const singletonCount = Array.from(this.services.values()).filter((reg) => reg.isSingleton).length;
188
- const transientCount = Array.from(this.services.values()).filter((reg) => !reg.isSingleton).length;
189
- const resolvedSingletons = Array.from(this.services.values()).filter((reg) => reg.isSingleton && reg.instance !== undefined).length;
190
- return {
191
- totalServices: this.services.size,
192
- singletonCount,
193
- transientCount,
194
- resolvedSingletons,
195
- };
196
- }
197
- }
198
- /**
199
- * 依赖注入装饰器工厂
200
- */
201
- export function Inject(serviceName) {
202
- return (target, propertyKey, parameterIndex) => {
203
- const constructor = target;
204
- if (!constructor.__inject__) {
205
- constructor.__inject__ = [];
206
- }
207
- constructor.__inject__[parameterIndex] = serviceName;
208
- };
209
- }
210
- /**
211
- * 自动注入装饰器
212
- */
213
- export function Injectable() {
214
- return (target) => {
215
- // 为类添加自动注入标记
216
- target.__injectable__ = true;
217
- };
218
- }
219
- /**
220
- * 创建默认服务容器
221
- */
222
- export const defaultContainer = new ServiceContainer();
223
- /**
224
- * 创建默认服务提供者
225
- */
226
- export function createServiceProvider() {
227
- return {
228
- container: defaultContainer,
229
- bootstrap: async () => {
230
- // 初始化核心服务
231
- if (!defaultContainer.has("logger")) {
232
- const { logger } = await import("../utils/logger.js");
233
- defaultContainer.registerSingleton("logger", logger);
234
- }
235
- },
236
- shutdown: async () => {
237
- // 清理资源
238
- defaultContainer.clear();
239
- },
240
- };
241
- }
242
- //# sourceMappingURL=ServiceContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceContainer.js","sourceRoot":"","sources":["../../src/services/ServiceContainer.ts"],"names":[],"mappings":"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"}