@round2ai/r2-cli 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +101 -80
  2. package/dist/api.d.ts +45 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +90 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/auth.d.ts +35 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +240 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/commands/ai/chat.d.ts +9 -0
  11. package/dist/commands/ai/chat.d.ts.map +1 -0
  12. package/dist/commands/ai/chat.js +16 -0
  13. package/dist/commands/ai/chat.js.map +1 -0
  14. package/dist/commands/ai/skills.d.ts +9 -0
  15. package/dist/commands/ai/skills.d.ts.map +1 -0
  16. package/dist/commands/ai/skills.js +16 -0
  17. package/dist/commands/ai/skills.js.map +1 -0
  18. package/dist/commands/auth/login.d.ts +24 -0
  19. package/dist/commands/auth/login.d.ts.map +1 -0
  20. package/dist/commands/auth/login.js +288 -0
  21. package/dist/commands/auth/login.js.map +1 -0
  22. package/dist/commands/auth/logout.d.ts +16 -0
  23. package/dist/commands/auth/logout.d.ts.map +1 -0
  24. package/dist/commands/auth/logout.js +49 -0
  25. package/dist/commands/auth/logout.js.map +1 -0
  26. package/dist/commands/auth/status.d.ts +28 -0
  27. package/dist/commands/auth/status.d.ts.map +1 -0
  28. package/dist/commands/auth/status.js +92 -0
  29. package/dist/commands/auth/status.js.map +1 -0
  30. package/dist/commands/base.d.ts +107 -0
  31. package/dist/commands/base.d.ts.map +1 -0
  32. package/dist/commands/base.js +153 -0
  33. package/dist/commands/base.js.map +1 -0
  34. package/dist/commands/business/pricing.d.ts +9 -0
  35. package/dist/commands/business/pricing.d.ts.map +1 -0
  36. package/dist/commands/business/pricing.js +16 -0
  37. package/dist/commands/business/pricing.js.map +1 -0
  38. package/dist/commands/business/report.d.ts +9 -0
  39. package/dist/commands/business/report.d.ts.map +1 -0
  40. package/dist/commands/business/report.js +16 -0
  41. package/dist/commands/business/report.js.map +1 -0
  42. package/dist/commands/inventory/risk.d.ts +9 -0
  43. package/dist/commands/inventory/risk.d.ts.map +1 -0
  44. package/dist/commands/inventory/risk.js +16 -0
  45. package/dist/commands/inventory/risk.js.map +1 -0
  46. package/dist/config.d.ts +54 -0
  47. package/dist/config.d.ts.map +1 -0
  48. package/dist/config.js +111 -0
  49. package/dist/config.js.map +1 -0
  50. package/dist/index.d.ts +5 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +127 -81
  53. package/dist/index.js.map +1 -1
  54. package/dist/query/executor.d.ts +138 -0
  55. package/dist/query/executor.d.ts.map +1 -0
  56. package/dist/query/executor.js +232 -0
  57. package/dist/query/executor.js.map +1 -0
  58. package/dist/query/types.d.ts +116 -0
  59. package/dist/query/types.d.ts.map +1 -0
  60. package/dist/query/types.js +15 -0
  61. package/dist/query/types.js.map +1 -0
  62. package/dist/query/utils.d.ts +99 -0
  63. package/dist/query/utils.d.ts.map +1 -0
  64. package/dist/query/utils.js +151 -0
  65. package/dist/query/utils.js.map +1 -0
  66. package/dist/services/ServiceContainer.d.ts +110 -0
  67. package/dist/services/ServiceContainer.d.ts.map +1 -0
  68. package/dist/services/ServiceContainer.js +242 -0
  69. package/dist/services/ServiceContainer.js.map +1 -0
  70. package/dist/services/api/client.d.ts +88 -0
  71. package/dist/services/api/client.d.ts.map +1 -0
  72. package/dist/services/api/client.js +188 -0
  73. package/dist/services/api/client.js.map +1 -0
  74. package/dist/services/api/types.d.ts +233 -0
  75. package/dist/services/api/types.d.ts.map +1 -0
  76. package/dist/services/api/types.js +83 -0
  77. package/dist/services/api/types.js.map +1 -0
  78. package/dist/services/auth/provider.d.ts +73 -0
  79. package/dist/services/auth/provider.d.ts.map +1 -0
  80. package/dist/services/auth/provider.js +339 -0
  81. package/dist/services/auth/provider.js.map +1 -0
  82. package/dist/services/auth/session.d.ts +73 -0
  83. package/dist/services/auth/session.d.ts.map +1 -0
  84. package/dist/services/auth/session.js +200 -0
  85. package/dist/services/auth/session.js.map +1 -0
  86. package/dist/services/business/demand.d.ts +70 -0
  87. package/dist/services/business/demand.d.ts.map +1 -0
  88. package/dist/services/business/demand.js +240 -0
  89. package/dist/services/business/demand.js.map +1 -0
  90. package/dist/services/business/fulfillment.d.ts +122 -0
  91. package/dist/services/business/fulfillment.d.ts.map +1 -0
  92. package/dist/services/business/fulfillment.js +267 -0
  93. package/dist/services/business/fulfillment.js.map +1 -0
  94. package/dist/services/business/inventory.d.ts +54 -0
  95. package/dist/services/business/inventory.d.ts.map +1 -0
  96. package/dist/services/business/inventory.js +245 -0
  97. package/dist/services/business/inventory.js.map +1 -0
  98. package/dist/services/business/pricing.d.ts +41 -0
  99. package/dist/services/business/pricing.d.ts.map +1 -0
  100. package/dist/services/business/pricing.js +133 -0
  101. package/dist/services/business/pricing.js.map +1 -0
  102. package/dist/services/business/report.d.ts +74 -0
  103. package/dist/services/business/report.d.ts.map +1 -0
  104. package/dist/services/business/report.js +380 -0
  105. package/dist/services/business/report.js.map +1 -0
  106. package/dist/services/config/manager.d.ts +105 -0
  107. package/dist/services/config/manager.d.ts.map +1 -0
  108. package/dist/services/config/manager.js +324 -0
  109. package/dist/services/config/manager.js.map +1 -0
  110. package/dist/services/config/types.d.ts +128 -0
  111. package/dist/services/config/types.d.ts.map +1 -0
  112. package/dist/services/config/types.js +209 -0
  113. package/dist/services/config/types.js.map +1 -0
  114. package/dist/services/index.d.ts +17 -0
  115. package/dist/services/index.d.ts.map +1 -0
  116. package/dist/services/index.js +44 -0
  117. package/dist/services/index.js.map +1 -0
  118. package/dist/services/storage/index.d.ts +63 -0
  119. package/dist/services/storage/index.d.ts.map +1 -0
  120. package/dist/services/storage/index.js +136 -0
  121. package/dist/services/storage/index.js.map +1 -0
  122. package/dist/types/api.d.ts +58 -0
  123. package/dist/types/api.d.ts.map +1 -0
  124. package/dist/types/api.js +5 -0
  125. package/dist/types/api.js.map +1 -0
  126. package/dist/types/auth.d.ts +59 -0
  127. package/dist/types/auth.d.ts.map +1 -0
  128. package/dist/types/auth.js +11 -0
  129. package/dist/types/auth.js.map +1 -0
  130. package/dist/types/business.d.ts +201 -0
  131. package/dist/types/business.d.ts.map +1 -0
  132. package/dist/types/business.js +5 -0
  133. package/dist/types/business.js.map +1 -0
  134. package/dist/types/command.d.ts +106 -0
  135. package/dist/types/command.d.ts.map +1 -0
  136. package/dist/types/command.js +5 -0
  137. package/dist/types/command.js.map +1 -0
  138. package/dist/types/config.d.ts +66 -0
  139. package/dist/types/config.d.ts.map +1 -0
  140. package/dist/types/config.js +5 -0
  141. package/dist/types/config.js.map +1 -0
  142. package/dist/utils/async.d.ts +79 -0
  143. package/dist/utils/async.d.ts.map +1 -0
  144. package/dist/utils/async.js +179 -0
  145. package/dist/utils/async.js.map +1 -0
  146. package/dist/utils/format.d.ts +90 -0
  147. package/dist/utils/format.d.ts.map +1 -0
  148. package/dist/utils/format.js +227 -0
  149. package/dist/utils/format.js.map +1 -0
  150. package/dist/utils/logger.d.ts +136 -0
  151. package/dist/utils/logger.d.ts.map +1 -0
  152. package/dist/utils/logger.js +249 -0
  153. package/dist/utils/logger.js.map +1 -0
  154. package/dist/utils/validation.d.ts +100 -0
  155. package/dist/utils/validation.d.ts.map +1 -0
  156. package/dist/utils/validation.js +334 -0
  157. package/dist/utils/validation.js.map +1 -0
  158. package/package.json +11 -6
@@ -0,0 +1,232 @@
1
+ /**
2
+ * 查询执行器 - 参考 claude-code 的 query.ts 设计
3
+ * 支持异步流式输出、进度报告、状态管理
4
+ */
5
+ // ==================== 查询执行器 ====================
6
+ /**
7
+ * 异步查询执行器
8
+ *
9
+ * 参考 claude-code 的 query 函数设计,使用 AsyncGenerator 模式
10
+ * 支持流式输出进度事件和最终结果
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const query: QueryDefinition<UserInfo> = {
15
+ * id: "qrcode-login",
16
+ * description: "扫码登录",
17
+ * deps: deps,
18
+ * execute: async (deps, signal) => {
19
+ * return await loginWithQrcode(deps, signal);
20
+ * }
21
+ * };
22
+ *
23
+ * for await (const event of executeQuery(query)) {
24
+ * if (event.type === "progress") {
25
+ * console.log(event.message, event.progress);
26
+ * } else if (event.type === "result") {
27
+ * console.log("完成:", event.data);
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ export async function* executeQuery(query, customDeps) {
33
+ const deps = {
34
+ ...query.deps,
35
+ ...customDeps,
36
+ };
37
+ const ctx = {
38
+ id: query.id,
39
+ status: "idle",
40
+ startTime: Date.now(),
41
+ progress: 0,
42
+ progressEvents: [],
43
+ };
44
+ ctx.status = "running";
45
+ try {
46
+ // 发送开始事件
47
+ const startEvent = {
48
+ type: "start",
49
+ message: `开始执行: ${query.description}`,
50
+ timestamp: Date.now(),
51
+ };
52
+ ctx.progressEvents.push(startEvent);
53
+ yield startEvent;
54
+ // 执行查询
55
+ const startTime = Date.now();
56
+ const data = await query.execute(deps, deps.signal ?? undefined);
57
+ const duration = Date.now() - startTime;
58
+ // 发送完成事件
59
+ const completeEvent = {
60
+ type: "complete",
61
+ message: `${query.description} 完成`,
62
+ progress: 100,
63
+ timestamp: Date.now(),
64
+ };
65
+ ctx.progressEvents.push(completeEvent);
66
+ yield completeEvent;
67
+ // 构建结果
68
+ const result = {
69
+ data,
70
+ metadata: {
71
+ duration,
72
+ success: true,
73
+ },
74
+ progress: ctx.progressEvents,
75
+ };
76
+ ctx.status = "completed";
77
+ ctx.endTime = Date.now();
78
+ ctx.result = result;
79
+ return result;
80
+ }
81
+ catch (error) {
82
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
+ // 发送错误事件
84
+ const errorEvent = {
85
+ type: "error",
86
+ message: `执行失败: ${errorMessage}`,
87
+ timestamp: Date.now(),
88
+ };
89
+ ctx.progressEvents.push(errorEvent);
90
+ yield errorEvent;
91
+ ctx.status = "error";
92
+ ctx.endTime = Date.now();
93
+ ctx.error = error instanceof Error ? error : new Error(errorMessage);
94
+ // 返回错误结果
95
+ const errorResult = {
96
+ data: null,
97
+ metadata: {
98
+ duration: Date.now() - ctx.startTime,
99
+ success: false,
100
+ errors: [errorMessage],
101
+ },
102
+ progress: ctx.progressEvents,
103
+ };
104
+ throw error;
105
+ }
106
+ }
107
+ export async function* executePollingQuery(query, options) {
108
+ const { interval, timeout, condition, onProgress } = options;
109
+ const startTime = Date.now();
110
+ yield {
111
+ type: "start",
112
+ message: `开始轮询: ${query.description}`,
113
+ timestamp: startTime,
114
+ };
115
+ let attempts = 0;
116
+ let lastData = null;
117
+ while (Date.now() - startTime < timeout) {
118
+ attempts++;
119
+ // 检查是否被中止
120
+ if (query.deps.signal?.aborted) {
121
+ throw new Error("查询被中止");
122
+ }
123
+ try {
124
+ const data = await query.execute(query.deps);
125
+ lastData = data;
126
+ // 计算进度
127
+ const progress = Math.min(Math.floor(((Date.now() - startTime) / timeout) * 100), 99);
128
+ // 触发进度回调
129
+ onProgress?.(progress, `轮询中... (第 ${attempts} 次)`);
130
+ yield {
131
+ type: "update",
132
+ message: `轮询中... (第 ${attempts} 次)`,
133
+ progress,
134
+ timestamp: Date.now(),
135
+ };
136
+ // 检查条件是否满足
137
+ if (condition(data)) {
138
+ const duration = Date.now() - startTime;
139
+ yield {
140
+ type: "complete",
141
+ message: `轮询完成 (共 ${attempts} 次)`,
142
+ progress: 100,
143
+ timestamp: Date.now(),
144
+ };
145
+ return {
146
+ data,
147
+ metadata: {
148
+ duration,
149
+ success: true,
150
+ attempts,
151
+ },
152
+ };
153
+ }
154
+ }
155
+ catch (error) {
156
+ const errorMessage = error instanceof Error ? error.message : String(error);
157
+ yield {
158
+ type: "error",
159
+ message: `轮询错误: ${errorMessage}`,
160
+ timestamp: Date.now(),
161
+ };
162
+ throw error;
163
+ }
164
+ // 等待下一次轮询
165
+ await sleep(interval);
166
+ }
167
+ // 超时
168
+ throw new Error(`轮询超时: ${query.description} (已等待 ${timeout}ms, 共 ${attempts} 次)`);
169
+ }
170
+ // ==================== 工具函数 ====================
171
+ /**
172
+ * 延迟函数
173
+ */
174
+ export function sleep(ms) {
175
+ return new Promise(resolve => setTimeout(resolve, ms));
176
+ }
177
+ /**
178
+ * 生成 UUID
179
+ */
180
+ export function createUUID() {
181
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
182
+ const r = (Math.random() * 16) | 0;
183
+ const v = c === "x" ? r : (r & 0x3) | 0x8;
184
+ return v.toString(16);
185
+ });
186
+ }
187
+ /**
188
+ * 创建默认的查询依赖
189
+ */
190
+ export function createDefaultDeps(signal = null) {
191
+ return {
192
+ signal,
193
+ uuid: createUUID,
194
+ api: {
195
+ get: async (url) => {
196
+ const response = await fetch(url);
197
+ if (!response.ok) {
198
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
199
+ }
200
+ return response.json();
201
+ },
202
+ post: async (url, body) => {
203
+ const init = {
204
+ method: "POST",
205
+ headers: {
206
+ "Content-Type": "application/json",
207
+ },
208
+ };
209
+ if (body !== undefined) {
210
+ init.body = JSON.stringify(body);
211
+ }
212
+ const response = await fetch(url, init);
213
+ if (!response.ok) {
214
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
215
+ }
216
+ return response.json();
217
+ },
218
+ },
219
+ log: {
220
+ info: (message) => console.log(`[INFO] ${message}`),
221
+ error: (message, error) => {
222
+ console.error(`[ERROR] ${message}`, error);
223
+ },
224
+ debug: (message) => {
225
+ if (process.env.DEBUG === "true") {
226
+ console.log(`[DEBUG] ${message}`);
227
+ }
228
+ },
229
+ },
230
+ };
231
+ }
232
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/query/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * 查询相关类型定义
3
+ */
4
+ /**
5
+ * 查询进度事件类型
6
+ */
7
+ export type ProgressEventType = "start" | "update" | "complete" | "error" | "warning";
8
+ /**
9
+ * 查询进度事件
10
+ */
11
+ export interface ProgressEvent {
12
+ type: ProgressEventType;
13
+ message: string;
14
+ progress?: number;
15
+ timestamp: Date;
16
+ details?: unknown;
17
+ }
18
+ /**
19
+ * 查询结果元数据
20
+ */
21
+ export interface QueryMetadata {
22
+ id: string;
23
+ type: string;
24
+ startTime: Date;
25
+ endTime?: Date;
26
+ duration?: number;
27
+ status: "pending" | "running" | "completed" | "failed" | "cancelled";
28
+ errors?: string[];
29
+ }
30
+ /**
31
+ * 查询结果
32
+ */
33
+ export interface QueryResult<T = unknown> {
34
+ data: T;
35
+ metadata: QueryMetadata;
36
+ progress: ProgressEvent[];
37
+ }
38
+ /**
39
+ * 查询定义
40
+ */
41
+ export interface QueryDefinition<T> {
42
+ id: string;
43
+ type: string;
44
+ params: Record<string, unknown>;
45
+ execute: (params: Record<string, unknown>, deps: QueryDeps) => Promise<T>;
46
+ metadata?: {
47
+ retryCount?: number;
48
+ [key: string]: unknown;
49
+ };
50
+ }
51
+ /**
52
+ * 查询请求定义(用于命令层)
53
+ */
54
+ export interface QueryRequest<T> {
55
+ query: QueryDefinition<T>;
56
+ deps: QueryDeps;
57
+ options?: QueryOptions;
58
+ }
59
+ /**
60
+ * 查询依赖
61
+ */
62
+ export interface QueryDeps {
63
+ api: any;
64
+ auth: any;
65
+ config: any;
66
+ services: Map<string, unknown>;
67
+ }
68
+ /**
69
+ * 查询状态
70
+ */
71
+ export declare enum QueryState {
72
+ IDLE = "idle",
73
+ RUNNING = "running",
74
+ COMPLETED = "completed",
75
+ FAILED = "failed",
76
+ CANCELLED = "cancelled"
77
+ }
78
+ /**
79
+ * 查询上下文
80
+ */
81
+ export interface QueryContext {
82
+ id: string;
83
+ type: string;
84
+ state: QueryState;
85
+ params: Record<string, unknown>;
86
+ startTime: Date;
87
+ endTime?: Date;
88
+ progress: ProgressEvent[];
89
+ errors: Error[];
90
+ }
91
+ /**
92
+ * 查询处理器
93
+ */
94
+ export interface QueryHandler {
95
+ canHandle(queryType: string): boolean;
96
+ handle(context: QueryContext, deps: QueryDeps): Promise<QueryResult>;
97
+ }
98
+ /**
99
+ * 查询配置
100
+ */
101
+ export interface QueryConfig {
102
+ maxConcurrent: number;
103
+ timeout: number;
104
+ retryCount: number;
105
+ enableProgress: boolean;
106
+ }
107
+ /**
108
+ * 查询选项
109
+ */
110
+ export interface QueryOptions {
111
+ context?: Partial<QueryContext>;
112
+ onProgress?: (event: ProgressEvent) => void;
113
+ onError?: (error: Error) => void;
114
+ timeout?: number;
115
+ }
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 查询相关类型定义
3
+ */
4
+ /**
5
+ * 查询状态
6
+ */
7
+ export var QueryState;
8
+ (function (QueryState) {
9
+ QueryState["IDLE"] = "idle";
10
+ QueryState["RUNNING"] = "running";
11
+ QueryState["COMPLETED"] = "completed";
12
+ QueryState["FAILED"] = "failed";
13
+ QueryState["CANCELLED"] = "cancelled";
14
+ })(QueryState || (QueryState = {}));
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyEH;;GAEG;AACH,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,qCAAuB,CAAA;IACvB,+BAAiB,CAAA;IACjB,qCAAuB,CAAA;AACzB,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB"}
@@ -0,0 +1,99 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,151 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/query/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAM,GAAG,CAAC;IACtC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,SAAS,CAAS;IAClB,OAAO,CAAU;IAEzB;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAW,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,eAAe,GAAG,CAAC,CAAC;IACpB,OAAO,GAAG,EAAE,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,QAAgB,EAAE,OAAe;QACtC,IAAI,QAAQ,GAAG,CAAC;YAAE,QAAQ,GAAG,CAAC,CAAC;QAC/B,IAAI,QAAQ,GAAG,GAAG;YAAE,QAAQ,GAAG,GAAG,CAAC;QAEnC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc,EAAE,OAAgB;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,OAAO,GAAG,CAAC,CAAC;IACZ,UAAU,GAAG,CAAC,CAAC;IAEvB,YAAY,UAAU,GAAG,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO;IAClD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AAChC,CAAC"}