@round2ai/r2-cli 1.0.2 → 1.0.4

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 (161) hide show
  1. package/README.md +159 -75
  2. package/dist/README.md +221 -0
  3. package/dist/package.json +55 -0
  4. package/dist/r2-cli.js +28 -0
  5. package/package.json +26 -22
  6. package/dist/api.d.ts +0 -45
  7. package/dist/api.d.ts.map +0 -1
  8. package/dist/api.js +0 -90
  9. package/dist/api.js.map +0 -1
  10. package/dist/auth.d.ts +0 -35
  11. package/dist/auth.d.ts.map +0 -1
  12. package/dist/auth.js +0 -240
  13. package/dist/auth.js.map +0 -1
  14. package/dist/commands/ai/chat.d.ts +0 -9
  15. package/dist/commands/ai/chat.d.ts.map +0 -1
  16. package/dist/commands/ai/chat.js +0 -16
  17. package/dist/commands/ai/chat.js.map +0 -1
  18. package/dist/commands/ai/skills.d.ts +0 -9
  19. package/dist/commands/ai/skills.d.ts.map +0 -1
  20. package/dist/commands/ai/skills.js +0 -16
  21. package/dist/commands/ai/skills.js.map +0 -1
  22. package/dist/commands/auth/login.d.ts +0 -24
  23. package/dist/commands/auth/login.d.ts.map +0 -1
  24. package/dist/commands/auth/login.js +0 -288
  25. package/dist/commands/auth/login.js.map +0 -1
  26. package/dist/commands/auth/logout.d.ts +0 -16
  27. package/dist/commands/auth/logout.d.ts.map +0 -1
  28. package/dist/commands/auth/logout.js +0 -49
  29. package/dist/commands/auth/logout.js.map +0 -1
  30. package/dist/commands/auth/status.d.ts +0 -28
  31. package/dist/commands/auth/status.d.ts.map +0 -1
  32. package/dist/commands/auth/status.js +0 -92
  33. package/dist/commands/auth/status.js.map +0 -1
  34. package/dist/commands/base.d.ts +0 -107
  35. package/dist/commands/base.d.ts.map +0 -1
  36. package/dist/commands/base.js +0 -153
  37. package/dist/commands/base.js.map +0 -1
  38. package/dist/commands/business/pricing.d.ts +0 -9
  39. package/dist/commands/business/pricing.d.ts.map +0 -1
  40. package/dist/commands/business/pricing.js +0 -16
  41. package/dist/commands/business/pricing.js.map +0 -1
  42. package/dist/commands/business/report.d.ts +0 -9
  43. package/dist/commands/business/report.d.ts.map +0 -1
  44. package/dist/commands/business/report.js +0 -16
  45. package/dist/commands/business/report.js.map +0 -1
  46. package/dist/commands/inventory/risk.d.ts +0 -9
  47. package/dist/commands/inventory/risk.d.ts.map +0 -1
  48. package/dist/commands/inventory/risk.js +0 -16
  49. package/dist/commands/inventory/risk.js.map +0 -1
  50. package/dist/config.d.ts +0 -54
  51. package/dist/config.d.ts.map +0 -1
  52. package/dist/config.js +0 -111
  53. package/dist/config.js.map +0 -1
  54. package/dist/index.d.ts +0 -7
  55. package/dist/index.d.ts.map +0 -1
  56. package/dist/index.js +0 -186
  57. package/dist/index.js.map +0 -1
  58. package/dist/query/executor.d.ts +0 -138
  59. package/dist/query/executor.d.ts.map +0 -1
  60. package/dist/query/executor.js +0 -232
  61. package/dist/query/executor.js.map +0 -1
  62. package/dist/query/types.d.ts +0 -116
  63. package/dist/query/types.d.ts.map +0 -1
  64. package/dist/query/types.js +0 -15
  65. package/dist/query/types.js.map +0 -1
  66. package/dist/query/utils.d.ts +0 -99
  67. package/dist/query/utils.d.ts.map +0 -1
  68. package/dist/query/utils.js +0 -151
  69. package/dist/query/utils.js.map +0 -1
  70. package/dist/services/ServiceContainer.d.ts +0 -110
  71. package/dist/services/ServiceContainer.d.ts.map +0 -1
  72. package/dist/services/ServiceContainer.js +0 -242
  73. package/dist/services/ServiceContainer.js.map +0 -1
  74. package/dist/services/api/client.d.ts +0 -88
  75. package/dist/services/api/client.d.ts.map +0 -1
  76. package/dist/services/api/client.js +0 -188
  77. package/dist/services/api/client.js.map +0 -1
  78. package/dist/services/api/types.d.ts +0 -233
  79. package/dist/services/api/types.d.ts.map +0 -1
  80. package/dist/services/api/types.js +0 -83
  81. package/dist/services/api/types.js.map +0 -1
  82. package/dist/services/auth/provider.d.ts +0 -73
  83. package/dist/services/auth/provider.d.ts.map +0 -1
  84. package/dist/services/auth/provider.js +0 -339
  85. package/dist/services/auth/provider.js.map +0 -1
  86. package/dist/services/auth/session.d.ts +0 -73
  87. package/dist/services/auth/session.d.ts.map +0 -1
  88. package/dist/services/auth/session.js +0 -200
  89. package/dist/services/auth/session.js.map +0 -1
  90. package/dist/services/business/demand.d.ts +0 -70
  91. package/dist/services/business/demand.d.ts.map +0 -1
  92. package/dist/services/business/demand.js +0 -240
  93. package/dist/services/business/demand.js.map +0 -1
  94. package/dist/services/business/fulfillment.d.ts +0 -122
  95. package/dist/services/business/fulfillment.d.ts.map +0 -1
  96. package/dist/services/business/fulfillment.js +0 -267
  97. package/dist/services/business/fulfillment.js.map +0 -1
  98. package/dist/services/business/inventory.d.ts +0 -54
  99. package/dist/services/business/inventory.d.ts.map +0 -1
  100. package/dist/services/business/inventory.js +0 -245
  101. package/dist/services/business/inventory.js.map +0 -1
  102. package/dist/services/business/pricing.d.ts +0 -41
  103. package/dist/services/business/pricing.d.ts.map +0 -1
  104. package/dist/services/business/pricing.js +0 -133
  105. package/dist/services/business/pricing.js.map +0 -1
  106. package/dist/services/business/report.d.ts +0 -74
  107. package/dist/services/business/report.d.ts.map +0 -1
  108. package/dist/services/business/report.js +0 -380
  109. package/dist/services/business/report.js.map +0 -1
  110. package/dist/services/config/manager.d.ts +0 -105
  111. package/dist/services/config/manager.d.ts.map +0 -1
  112. package/dist/services/config/manager.js +0 -324
  113. package/dist/services/config/manager.js.map +0 -1
  114. package/dist/services/config/types.d.ts +0 -128
  115. package/dist/services/config/types.d.ts.map +0 -1
  116. package/dist/services/config/types.js +0 -209
  117. package/dist/services/config/types.js.map +0 -1
  118. package/dist/services/index.d.ts +0 -17
  119. package/dist/services/index.d.ts.map +0 -1
  120. package/dist/services/index.js +0 -44
  121. package/dist/services/index.js.map +0 -1
  122. package/dist/services/storage/index.d.ts +0 -63
  123. package/dist/services/storage/index.d.ts.map +0 -1
  124. package/dist/services/storage/index.js +0 -136
  125. package/dist/services/storage/index.js.map +0 -1
  126. package/dist/types/api.d.ts +0 -58
  127. package/dist/types/api.d.ts.map +0 -1
  128. package/dist/types/api.js +0 -5
  129. package/dist/types/api.js.map +0 -1
  130. package/dist/types/auth.d.ts +0 -59
  131. package/dist/types/auth.d.ts.map +0 -1
  132. package/dist/types/auth.js +0 -11
  133. package/dist/types/auth.js.map +0 -1
  134. package/dist/types/business.d.ts +0 -201
  135. package/dist/types/business.d.ts.map +0 -1
  136. package/dist/types/business.js +0 -5
  137. package/dist/types/business.js.map +0 -1
  138. package/dist/types/command.d.ts +0 -106
  139. package/dist/types/command.d.ts.map +0 -1
  140. package/dist/types/command.js +0 -5
  141. package/dist/types/command.js.map +0 -1
  142. package/dist/types/config.d.ts +0 -66
  143. package/dist/types/config.d.ts.map +0 -1
  144. package/dist/types/config.js +0 -5
  145. package/dist/types/config.js.map +0 -1
  146. package/dist/utils/async.d.ts +0 -79
  147. package/dist/utils/async.d.ts.map +0 -1
  148. package/dist/utils/async.js +0 -179
  149. package/dist/utils/async.js.map +0 -1
  150. package/dist/utils/format.d.ts +0 -90
  151. package/dist/utils/format.d.ts.map +0 -1
  152. package/dist/utils/format.js +0 -227
  153. package/dist/utils/format.js.map +0 -1
  154. package/dist/utils/logger.d.ts +0 -136
  155. package/dist/utils/logger.d.ts.map +0 -1
  156. package/dist/utils/logger.js +0 -249
  157. package/dist/utils/logger.js.map +0 -1
  158. package/dist/utils/validation.d.ts +0 -100
  159. package/dist/utils/validation.d.ts.map +0 -1
  160. package/dist/utils/validation.js +0 -334
  161. package/dist/utils/validation.js.map +0 -1
@@ -1,201 +0,0 @@
1
- /**
2
- * 业务领域类型定义
3
- */
4
- /**
5
- * 商品 SKU 信息
6
- */
7
- export interface SKU {
8
- id: string;
9
- name: string;
10
- brand: string;
11
- category: string;
12
- condition: "A" | "B" | "C" | "D";
13
- originalPrice?: number;
14
- currentValue?: number;
15
- images?: string[];
16
- description?: string;
17
- }
18
- /**
19
- * 地区信息
20
- */
21
- export interface Region {
22
- code: string;
23
- name: string;
24
- level: "national" | "provincial" | "city" | "district";
25
- }
26
- /**
27
- * 市场需求分析结果
28
- */
29
- export interface DemandAnalysis {
30
- sku: SKU;
31
- region: Region;
32
- demandLevel: "low" | "medium" | "high";
33
- gapPercentage: number;
34
- trend: "rising" | "stable" | "falling";
35
- lastUpdated: Date;
36
- }
37
- /**
38
- * 价格分析结果
39
- */
40
- export interface PricingAnalysis {
41
- sku: SKU;
42
- recentTrades: TradeRecord[];
43
- suggestedBuyPrice: number;
44
- suggestedSellPrice: number;
45
- priceRange: {
46
- min: number;
47
- max: number;
48
- avg: number;
49
- };
50
- confidence: number;
51
- }
52
- /**
53
- * 交易记录
54
- */
55
- export interface TradeRecord {
56
- id: string;
57
- skuId: string;
58
- soldPrice: number;
59
- soldDate: Date;
60
- buyerRegion: string;
61
- condition: "A" | "B" | "C" | "D";
62
- platform: "online" | "offline" | "secondary";
63
- }
64
- /**
65
- * 库存记录
66
- */
67
- export interface InventoryItem {
68
- id: string;
69
- sku: SKU;
70
- warehouseCode: string;
71
- quantity: number;
72
- stockInDate: Date;
73
- daysInStock: number;
74
- lastMovedDate?: Date;
75
- riskLevel: "low" | "medium" | "high";
76
- }
77
- /**
78
- * 库存风险分析
79
- */
80
- export interface InventoryRisk {
81
- warehouseCode: string;
82
- totalItems: number;
83
- riskBreakdown: {
84
- stagnant: number;
85
- depreciating: number;
86
- overdue: number;
87
- safe: number;
88
- };
89
- recommendations: InventoryRecommendation[];
90
- }
91
- /**
92
- * 库存建议
93
- */
94
- export interface InventoryRecommendation {
95
- type: "clearance" | "price_adjustment" | "transfer" | "hold";
96
- priority: "high" | "medium" | "low";
97
- skuId: string;
98
- reason: string;
99
- action: string;
100
- estimatedImpact: string;
101
- }
102
- /**
103
- * 经营报告
104
- */
105
- export interface BusinessReport {
106
- type: "daily" | "weekly" | "monthly";
107
- period: {
108
- startDate: Date;
109
- endDate: Date;
110
- };
111
- sales: SalesData;
112
- profit: ProfitData;
113
- inventory: InventoryData;
114
- alerts: Alert[];
115
- recommendations: Recommendation[];
116
- }
117
- /**
118
- * 销售数据
119
- */
120
- export interface SalesData {
121
- totalRevenue: number;
122
- totalOrders: number;
123
- avgOrderValue: number;
124
- topSellingProducts: ProductSale[];
125
- revenueByRegion: RegionSales[];
126
- growthRate: number;
127
- }
128
- /**
129
- * 利润数据
130
- */
131
- export interface ProfitData {
132
- totalProfit: number;
133
- profitMargin: number;
134
- avgProfitPerOrder: number;
135
- profitByCategory: CategoryProfit[];
136
- }
137
- /**
138
- * 库存数据
139
- */
140
- export interface InventoryData {
141
- totalValue: number;
142
- turnoverRate: number;
143
- averageDaysInStock: number;
144
- distributionByCondition: ConditionDistribution[];
145
- }
146
- /**
147
- * 产品销售记录
148
- */
149
- export interface ProductSale {
150
- sku: SKU;
151
- quantity: number;
152
- revenue: number;
153
- profit: number;
154
- }
155
- /**
156
- * 地区销售数据
157
- */
158
- export interface RegionSales {
159
- region: Region;
160
- revenue: number;
161
- orders: number;
162
- growthRate: number;
163
- }
164
- /**
165
- * 类别利润
166
- */
167
- export interface CategoryProfit {
168
- category: string;
169
- profit: number;
170
- margin: number;
171
- }
172
- /**
173
- * 成色分布
174
- */
175
- export interface ConditionDistribution {
176
- condition: "A" | "B" | "C" | "D";
177
- quantity: number;
178
- value: number;
179
- percentage: number;
180
- }
181
- /**
182
- * 警报信息
183
- */
184
- export interface Alert {
185
- type: "stagnant" | "overstock" | "price_drop" | "expiring";
186
- severity: "high" | "medium" | "low";
187
- message: string;
188
- skuIds: string[];
189
- timestamp: Date;
190
- }
191
- /**
192
- * 建议
193
- */
194
- export interface Recommendation {
195
- type: "restock" | "clearance" | "price_optimization" | "supplier_change";
196
- priority: "high" | "medium" | "low";
197
- message: string;
198
- targetSkuIds: string[];
199
- expectedBenefit: string;
200
- }
201
- //# sourceMappingURL=business.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business.d.ts","sourceRoot":"","sources":["../../src/types/business.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * 业务领域类型定义
3
- */
4
- export {};
5
- //# sourceMappingURL=business.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business.js","sourceRoot":"","sources":["../../src/types/business.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,106 +0,0 @@
1
- /**
2
- * 命令相关类型定义
3
- */
4
- import type { ProgressEvent } from "../query/types.js";
5
- /**
6
- * 命令参数接口
7
- */
8
- export interface CommandParams {
9
- [key: string]: unknown;
10
- }
11
- /**
12
- * 命令选项接口
13
- */
14
- export interface CommandOptions {
15
- [key: string]: unknown;
16
- }
17
- /**
18
- * 命令执行结果
19
- */
20
- export interface CommandResult<T = unknown> {
21
- success: boolean;
22
- data?: T;
23
- error?: {
24
- message: string;
25
- code?: string;
26
- details?: unknown;
27
- };
28
- metadata?: {
29
- duration?: number;
30
- progress?: ProgressEvent[];
31
- };
32
- }
33
- /**
34
- * 命令配置
35
- */
36
- export interface CommandConfig {
37
- name: string;
38
- description: string;
39
- aliases?: string[];
40
- hidden?: boolean;
41
- allowUnknownOptions?: boolean;
42
- }
43
- /**
44
- * 命令注册器
45
- */
46
- export interface CommandRegistry {
47
- register(command: any): void;
48
- unregister(name: string): void;
49
- get(name: string): any | undefined;
50
- list(): any[];
51
- execute(name: string, params: CommandParams): Promise<CommandResult>;
52
- }
53
- /**
54
- * 进度报告器
55
- */
56
- export interface ProgressReporter {
57
- start(message: string, total?: number): void;
58
- update(message: string, current?: number, total?: number): void;
59
- complete(message: string): void;
60
- error(message: string): void;
61
- }
62
- /**
63
- * 命令执行上下文
64
- */
65
- export interface CommandContext {
66
- options: CommandOptions;
67
- reporter: ProgressReporter;
68
- container: ServiceContainer;
69
- }
70
- /**
71
- * 服务容器接口(待实现)
72
- */
73
- export interface ServiceContainer {
74
- resolve<T>(name: string): T;
75
- register<T>(name: string, service: T): void;
76
- has(name: string): boolean;
77
- }
78
- /**
79
- * 输入验证规则
80
- */
81
- export interface ValidationRule {
82
- required?: boolean;
83
- type?: "string" | "number" | "boolean" | "array" | "object";
84
- min?: number;
85
- max?: number;
86
- pattern?: RegExp;
87
- message?: string;
88
- validator?: (value: unknown) => boolean | string;
89
- }
90
- /**
91
- * 验证结果
92
- */
93
- export interface ValidationResult {
94
- isValid: boolean;
95
- errors?: string[];
96
- value?: unknown;
97
- }
98
- /**
99
- * 命令参数 schema
100
- */
101
- export interface CommandSchema {
102
- properties: Record<string, ValidationRule>;
103
- required?: string[];
104
- additionalProperties?: boolean;
105
- }
106
- //# sourceMappingURL=command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/types/command.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * 命令相关类型定义
3
- */
4
- export {};
5
- //# sourceMappingURL=command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/types/command.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,66 +0,0 @@
1
- /**
2
- * 配置相关类型定义
3
- */
4
- /**
5
- * 应用程序配置
6
- */
7
- export interface AppConfig {
8
- api?: ApiConfig;
9
- auth?: AuthConfig;
10
- cache?: CacheConfig;
11
- logging?: LoggingConfig;
12
- }
13
- /**
14
- * API 配置
15
- */
16
- export interface ApiConfig {
17
- baseUrl?: string;
18
- timeout?: number;
19
- retries?: number;
20
- }
21
- /**
22
- * 认证配置
23
- */
24
- export interface AuthConfig {
25
- tokenRefreshThreshold?: number;
26
- }
27
- /**
28
- * 缓存配置
29
- */
30
- export interface CacheConfig {
31
- enabled?: boolean;
32
- ttl?: number;
33
- }
34
- /**
35
- * 日志配置
36
- */
37
- export interface LoggingConfig {
38
- level?: "debug" | "info" | "warn" | "error";
39
- format?: "json" | "text";
40
- }
41
- /**
42
- * 用户配置文件
43
- */
44
- export interface UserConfig {
45
- auth?: {
46
- accessToken?: string;
47
- refreshToken?: string;
48
- userId?: string;
49
- username?: string;
50
- expiresAt?: number;
51
- };
52
- api?: {
53
- baseUrl?: string;
54
- };
55
- }
56
- /**
57
- * 配置管理器接口
58
- */
59
- export interface IConfigManager {
60
- readConfig(): Promise<UserConfig>;
61
- writeConfig(config: UserConfig): Promise<void>;
62
- updateConfig(updates: Partial<UserConfig>): Promise<UserConfig>;
63
- get(key: string): Promise<unknown>;
64
- set(key: string, value: unknown): Promise<void>;
65
- }
66
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
@@ -1,5 +0,0 @@
1
- /**
2
- * 配置相关类型定义
3
- */
4
- export {};
5
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,79 +0,0 @@
1
- /**
2
- * 异步工具函数
3
- */
4
- /**
5
- * 延迟函数
6
- */
7
- export declare function delay(ms: number): Promise<void>;
8
- /**
9
- * 带超时的 Promise
10
- */
11
- export declare function timeout<T>(promise: Promise<T>, ms: number, errorMessage?: string): Promise<T>;
12
- /**
13
- * 重试执行函数
14
- */
15
- export declare function retry<T>(fn: () => Promise<T>, options?: {
16
- retries?: number;
17
- delay?: number;
18
- backoff?: number;
19
- onError?: (error: Error, attempt: number) => void;
20
- }): Promise<T>;
21
- /**
22
- * 轮询执行直到条件满足或超时
23
- */
24
- export declare function poll<T>(checkFn: () => Promise<T>, options?: {
25
- interval?: number;
26
- timeout?: number;
27
- condition?: (result: T) => boolean;
28
- onPoll?: (attempt: number, result: T) => void;
29
- }): Promise<T>;
30
- /**
31
- * 批量处理函数(并发控制)
32
- */
33
- export declare function batchProcess<T, R>(items: T[], processor: (item: T, index: number) => Promise<R>, options?: {
34
- concurrency?: number;
35
- delay?: number;
36
- onProgress?: (processed: number, total: number) => void;
37
- }): Promise<R[]>;
38
- /**
39
- * 异步队列
40
- */
41
- export declare class AsyncQueue<T> {
42
- private processor;
43
- private concurrency;
44
- private queue;
45
- private processing;
46
- constructor(processor: (item: T) => Promise<void>, concurrency?: number);
47
- /**
48
- * 添加项目到队列
49
- */
50
- add(item: T): Promise<void>;
51
- /**
52
- * 处理队列
53
- */
54
- private process;
55
- }
56
- /**
57
- * 取消控制器
58
- */
59
- export declare class AbortController {
60
- private abortController;
61
- private listeners;
62
- /**
63
- * 中断操作
64
- */
65
- abort(): void;
66
- /**
67
- * 添加取消监听器
68
- */
69
- addListener(listener: () => void): void;
70
- /**
71
- * 移除取消监听器
72
- */
73
- removeListener(listener: () => void): void;
74
- /**
75
- * 获取信号
76
- */
77
- get signal(): AbortSignal;
78
- }
79
- //# sourceMappingURL=async.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,EACV,YAAY,SAAwB,GACnC,OAAO,CAAC,CAAC,CAAC,CAOZ;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,GACL,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,CAAC,EAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC1C,GACL,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,CAAC,EACrC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,GACL,OAAO,CAAC,CAAC,EAAE,CAAC,CAgDd;AAED;;GAEG;AACH,qBAAa,UAAU,CAAC,CAAC;IAKrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IALrB,OAAO,CAAC,KAAK,CAAqD;IAClE,OAAO,CAAC,UAAU,CAAS;gBAGjB,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrC,WAAW,SAAI;IAKzB;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;YACW,OAAO;CAwBtB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,SAAS,CAA8B;IAE/C;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI1C;;OAEG;IACH,IAAI,MAAM,IAAI,WAAW,CAExB;CACF"}
@@ -1,179 +0,0 @@
1
- /**
2
- * 异步工具函数
3
- */
4
- /**
5
- * 延迟函数
6
- */
7
- export function delay(ms) {
8
- return new Promise((resolve) => setTimeout(resolve, ms));
9
- }
10
- /**
11
- * 带超时的 Promise
12
- */
13
- export function timeout(promise, ms, errorMessage = "Operation timed out") {
14
- return Promise.race([
15
- promise,
16
- new Promise((_, reject) => {
17
- setTimeout(() => reject(new Error(errorMessage)), ms);
18
- }),
19
- ]);
20
- }
21
- /**
22
- * 重试执行函数
23
- */
24
- export async function retry(fn, options = {}) {
25
- const { retries = 3, delay = 1000, backoff = 2, onError, } = options;
26
- let lastError;
27
- let currentDelay = delay;
28
- for (let attempt = 1; attempt <= retries; attempt++) {
29
- try {
30
- return await fn();
31
- }
32
- catch (error) {
33
- lastError = error;
34
- onError?.(lastError, attempt);
35
- if (attempt === retries) {
36
- throw lastError;
37
- }
38
- await delay(currentDelay);
39
- currentDelay *= backoff;
40
- }
41
- }
42
- throw lastError;
43
- }
44
- /**
45
- * 轮询执行直到条件满足或超时
46
- */
47
- export async function poll(checkFn, options = {}) {
48
- const { interval = 5000, timeout = 60000, condition = () => true, onPoll, } = options;
49
- const startTime = Date.now();
50
- while (Date.now() - startTime < timeout) {
51
- const result = await checkFn();
52
- if (condition(result)) {
53
- return result;
54
- }
55
- onPoll?.(Date.now() - startTime, result);
56
- await delay(interval);
57
- }
58
- throw new Error("Polling timeout");
59
- }
60
- /**
61
- * 批量处理函数(并发控制)
62
- */
63
- export async function batchProcess(items, processor, options = {}) {
64
- const { concurrency = 3, delay = 0, onProgress, } = options;
65
- const results = [];
66
- let processed = 0;
67
- let activePromises = [];
68
- for (let i = 0; i < items.length; i++) {
69
- // 如果达到并发限制,等待一个完成
70
- if (activePromises.length >= concurrency) {
71
- await Promise.race(activePromises);
72
- activePromises = activePromises.filter((p) => !p.isFulfilled && !p.isRejected);
73
- }
74
- const promise = processor(items[i], i)
75
- .then((result) => {
76
- results[i] = result;
77
- processed++;
78
- onProgress?.(processed, items.length);
79
- if (delay > 0) {
80
- delay(delay);
81
- }
82
- })
83
- .catch((error) => {
84
- console.error(`Error processing item ${i}:`, error);
85
- results[i] = error;
86
- processed++;
87
- onProgress?.(processed, items.length);
88
- });
89
- activePromises.push(promise);
90
- // 如果添加了延迟,稍等一下
91
- if (delay > 0) {
92
- await delay(10);
93
- }
94
- }
95
- // 等待所有处理完成
96
- await Promise.all(activePromises);
97
- return results;
98
- }
99
- /**
100
- * 异步队列
101
- */
102
- export class AsyncQueue {
103
- processor;
104
- concurrency;
105
- queue;
106
- processing = false;
107
- constructor(processor, concurrency = 1) {
108
- this.processor = processor;
109
- this.concurrency = concurrency;
110
- this.queue = [];
111
- }
112
- /**
113
- * 添加项目到队列
114
- */
115
- async add(item) {
116
- return new Promise((resolve) => {
117
- this.queue.push({ item, resolve });
118
- this.process();
119
- });
120
- }
121
- /**
122
- * 处理队列
123
- */
124
- async process() {
125
- if (this.processing || this.queue.length === 0) {
126
- return;
127
- }
128
- this.processing = true;
129
- const currentBatch = this.queue.splice(0, this.concurrency);
130
- const promises = currentBatch.map(async ({ item, resolve }) => {
131
- try {
132
- await this.processor(item);
133
- resolve();
134
- }
135
- catch (error) {
136
- console.error("Error processing item:", error);
137
- resolve();
138
- }
139
- });
140
- await Promise.all(promises);
141
- this.processing = false;
142
- // 继续处理队列中的下一批
143
- this.process();
144
- }
145
- }
146
- /**
147
- * 取消控制器
148
- */
149
- export class AbortController {
150
- abortController = new globalThis.AbortController();
151
- listeners = new Set();
152
- /**
153
- * 中断操作
154
- */
155
- abort() {
156
- this.abortController.abort();
157
- this.listeners.forEach((listener) => listener());
158
- this.listeners.clear();
159
- }
160
- /**
161
- * 添加取消监听器
162
- */
163
- addListener(listener) {
164
- this.listeners.add(listener);
165
- }
166
- /**
167
- * 移除取消监听器
168
- */
169
- removeListener(listener) {
170
- this.listeners.delete(listener);
171
- }
172
- /**
173
- * 获取信号
174
- */
175
- get signal() {
176
- return this.abortController.signal;
177
- }
178
- }
179
- //# sourceMappingURL=async.js.map