@round2ai/r2-cli 1.0.1 → 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 (157) hide show
  1. package/dist/api.d.ts +45 -0
  2. package/dist/api.d.ts.map +1 -0
  3. package/dist/api.js +90 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/auth.d.ts +35 -0
  6. package/dist/auth.d.ts.map +1 -0
  7. package/dist/auth.js +240 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/commands/ai/chat.d.ts +9 -0
  10. package/dist/commands/ai/chat.d.ts.map +1 -0
  11. package/dist/commands/ai/chat.js +16 -0
  12. package/dist/commands/ai/chat.js.map +1 -0
  13. package/dist/commands/ai/skills.d.ts +9 -0
  14. package/dist/commands/ai/skills.d.ts.map +1 -0
  15. package/dist/commands/ai/skills.js +16 -0
  16. package/dist/commands/ai/skills.js.map +1 -0
  17. package/dist/commands/auth/login.d.ts +24 -0
  18. package/dist/commands/auth/login.d.ts.map +1 -0
  19. package/dist/commands/auth/login.js +288 -0
  20. package/dist/commands/auth/login.js.map +1 -0
  21. package/dist/commands/auth/logout.d.ts +16 -0
  22. package/dist/commands/auth/logout.d.ts.map +1 -0
  23. package/dist/commands/auth/logout.js +49 -0
  24. package/dist/commands/auth/logout.js.map +1 -0
  25. package/dist/commands/auth/status.d.ts +28 -0
  26. package/dist/commands/auth/status.d.ts.map +1 -0
  27. package/dist/commands/auth/status.js +92 -0
  28. package/dist/commands/auth/status.js.map +1 -0
  29. package/dist/commands/base.d.ts +107 -0
  30. package/dist/commands/base.d.ts.map +1 -0
  31. package/dist/commands/base.js +153 -0
  32. package/dist/commands/base.js.map +1 -0
  33. package/dist/commands/business/pricing.d.ts +9 -0
  34. package/dist/commands/business/pricing.d.ts.map +1 -0
  35. package/dist/commands/business/pricing.js +16 -0
  36. package/dist/commands/business/pricing.js.map +1 -0
  37. package/dist/commands/business/report.d.ts +9 -0
  38. package/dist/commands/business/report.d.ts.map +1 -0
  39. package/dist/commands/business/report.js +16 -0
  40. package/dist/commands/business/report.js.map +1 -0
  41. package/dist/commands/inventory/risk.d.ts +9 -0
  42. package/dist/commands/inventory/risk.d.ts.map +1 -0
  43. package/dist/commands/inventory/risk.js +16 -0
  44. package/dist/commands/inventory/risk.js.map +1 -0
  45. package/dist/config.d.ts +54 -0
  46. package/dist/config.d.ts.map +1 -0
  47. package/dist/config.js +111 -0
  48. package/dist/config.js.map +1 -0
  49. package/dist/index.d.ts +4 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +66 -116
  52. package/dist/index.js.map +1 -1
  53. package/dist/query/executor.d.ts +138 -0
  54. package/dist/query/executor.d.ts.map +1 -0
  55. package/dist/query/executor.js +232 -0
  56. package/dist/query/executor.js.map +1 -0
  57. package/dist/query/types.d.ts +116 -0
  58. package/dist/query/types.d.ts.map +1 -0
  59. package/dist/query/types.js +15 -0
  60. package/dist/query/types.js.map +1 -0
  61. package/dist/query/utils.d.ts +99 -0
  62. package/dist/query/utils.d.ts.map +1 -0
  63. package/dist/query/utils.js +151 -0
  64. package/dist/query/utils.js.map +1 -0
  65. package/dist/services/ServiceContainer.d.ts +110 -0
  66. package/dist/services/ServiceContainer.d.ts.map +1 -0
  67. package/dist/services/ServiceContainer.js +242 -0
  68. package/dist/services/ServiceContainer.js.map +1 -0
  69. package/dist/services/api/client.d.ts +88 -0
  70. package/dist/services/api/client.d.ts.map +1 -0
  71. package/dist/services/api/client.js +188 -0
  72. package/dist/services/api/client.js.map +1 -0
  73. package/dist/services/api/types.d.ts +233 -0
  74. package/dist/services/api/types.d.ts.map +1 -0
  75. package/dist/services/api/types.js +83 -0
  76. package/dist/services/api/types.js.map +1 -0
  77. package/dist/services/auth/provider.d.ts +73 -0
  78. package/dist/services/auth/provider.d.ts.map +1 -0
  79. package/dist/services/auth/provider.js +339 -0
  80. package/dist/services/auth/provider.js.map +1 -0
  81. package/dist/services/auth/session.d.ts +73 -0
  82. package/dist/services/auth/session.d.ts.map +1 -0
  83. package/dist/services/auth/session.js +200 -0
  84. package/dist/services/auth/session.js.map +1 -0
  85. package/dist/services/business/demand.d.ts +70 -0
  86. package/dist/services/business/demand.d.ts.map +1 -0
  87. package/dist/services/business/demand.js +240 -0
  88. package/dist/services/business/demand.js.map +1 -0
  89. package/dist/services/business/fulfillment.d.ts +122 -0
  90. package/dist/services/business/fulfillment.d.ts.map +1 -0
  91. package/dist/services/business/fulfillment.js +267 -0
  92. package/dist/services/business/fulfillment.js.map +1 -0
  93. package/dist/services/business/inventory.d.ts +54 -0
  94. package/dist/services/business/inventory.d.ts.map +1 -0
  95. package/dist/services/business/inventory.js +245 -0
  96. package/dist/services/business/inventory.js.map +1 -0
  97. package/dist/services/business/pricing.d.ts +41 -0
  98. package/dist/services/business/pricing.d.ts.map +1 -0
  99. package/dist/services/business/pricing.js +133 -0
  100. package/dist/services/business/pricing.js.map +1 -0
  101. package/dist/services/business/report.d.ts +74 -0
  102. package/dist/services/business/report.d.ts.map +1 -0
  103. package/dist/services/business/report.js +380 -0
  104. package/dist/services/business/report.js.map +1 -0
  105. package/dist/services/config/manager.d.ts +105 -0
  106. package/dist/services/config/manager.d.ts.map +1 -0
  107. package/dist/services/config/manager.js +324 -0
  108. package/dist/services/config/manager.js.map +1 -0
  109. package/dist/services/config/types.d.ts +128 -0
  110. package/dist/services/config/types.d.ts.map +1 -0
  111. package/dist/services/config/types.js +209 -0
  112. package/dist/services/config/types.js.map +1 -0
  113. package/dist/services/index.d.ts +17 -0
  114. package/dist/services/index.d.ts.map +1 -0
  115. package/dist/services/index.js +44 -0
  116. package/dist/services/index.js.map +1 -0
  117. package/dist/services/storage/index.d.ts +63 -0
  118. package/dist/services/storage/index.d.ts.map +1 -0
  119. package/dist/services/storage/index.js +136 -0
  120. package/dist/services/storage/index.js.map +1 -0
  121. package/dist/types/api.d.ts +58 -0
  122. package/dist/types/api.d.ts.map +1 -0
  123. package/dist/types/api.js +5 -0
  124. package/dist/types/api.js.map +1 -0
  125. package/dist/types/auth.d.ts +59 -0
  126. package/dist/types/auth.d.ts.map +1 -0
  127. package/dist/types/auth.js +11 -0
  128. package/dist/types/auth.js.map +1 -0
  129. package/dist/types/business.d.ts +201 -0
  130. package/dist/types/business.d.ts.map +1 -0
  131. package/dist/types/business.js +5 -0
  132. package/dist/types/business.js.map +1 -0
  133. package/dist/types/command.d.ts +106 -0
  134. package/dist/types/command.d.ts.map +1 -0
  135. package/dist/types/command.js +5 -0
  136. package/dist/types/command.js.map +1 -0
  137. package/dist/types/config.d.ts +66 -0
  138. package/dist/types/config.d.ts.map +1 -0
  139. package/dist/types/config.js +5 -0
  140. package/dist/types/config.js.map +1 -0
  141. package/dist/utils/async.d.ts +79 -0
  142. package/dist/utils/async.d.ts.map +1 -0
  143. package/dist/utils/async.js +179 -0
  144. package/dist/utils/async.js.map +1 -0
  145. package/dist/utils/format.d.ts +90 -0
  146. package/dist/utils/format.d.ts.map +1 -0
  147. package/dist/utils/format.js +227 -0
  148. package/dist/utils/format.js.map +1 -0
  149. package/dist/utils/logger.d.ts +136 -0
  150. package/dist/utils/logger.d.ts.map +1 -0
  151. package/dist/utils/logger.js +249 -0
  152. package/dist/utils/logger.js.map +1 -0
  153. package/dist/utils/validation.d.ts +100 -0
  154. package/dist/utils/validation.d.ts.map +1 -0
  155. package/dist/utils/validation.js +334 -0
  156. package/dist/utils/validation.js.map +1 -0
  157. package/package.json +6 -2
@@ -0,0 +1,209 @@
1
+ /**
2
+ * 配置相关的类型定义
3
+ */
4
+ /**
5
+ * 环境变量映射
6
+ */
7
+ export const ENV_CONFIG_MAP = {
8
+ API_BASE_URL: "api.baseUrl",
9
+ API_TIMEOUT: "api.timeout",
10
+ API_RETRIES: "api.retries",
11
+ AUTH_TOKEN: "auth.accessToken",
12
+ AUTH_USERNAME: "auth.username",
13
+ LOG_LEVEL: "logging.level",
14
+ LOG_FORMAT: "logging.format",
15
+ ENABLE_CACHE: "cache.enabled",
16
+ CACHE_TTL: "cache.ttl",
17
+ };
18
+ /**
19
+ * 配置转换器
20
+ */
21
+ export class ConfigTransformer {
22
+ /**
23
+ * 从环境变量加载配置
24
+ */
25
+ static fromEnv(env) {
26
+ const config = {};
27
+ Object.entries(ENV_CONFIG_MAP).forEach(([envKey, configKey]) => {
28
+ const envValue = env[envKey];
29
+ if (envValue !== undefined) {
30
+ this.setNestedValue(config, configKey, this.parseValue(envValue));
31
+ }
32
+ });
33
+ return config;
34
+ }
35
+ /**
36
+ * 从命令行参数加载配置
37
+ */
38
+ static fromArgs(args) {
39
+ const config = {};
40
+ // 处理 --api.base-url 参数
41
+ if (args["api.baseUrl"]) {
42
+ config.api = { ...config.api, baseUrl: String(args["api.baseUrl"]) };
43
+ }
44
+ // 处理 --auth.token 参数
45
+ if (args["auth.token"]) {
46
+ config.auth = { ...config.auth, accessToken: String(args["auth.token"]) };
47
+ }
48
+ // 处理 --logging.level 参数
49
+ if (args["logging.level"]) {
50
+ config.logging = { ...config.logging, level: String(args["logging.level"]) };
51
+ }
52
+ return config;
53
+ }
54
+ /**
55
+ * 转换为字符串
56
+ */
57
+ static stringifyConfig(config) {
58
+ return JSON.stringify(config, null, 2);
59
+ }
60
+ /**
61
+ * 解析值
62
+ */
63
+ static parseValue(value) {
64
+ // 布尔值
65
+ if (value === "true")
66
+ return true;
67
+ if (value === "false")
68
+ return false;
69
+ // 数字
70
+ if (/^\d+$/.test(value))
71
+ return Number(value);
72
+ if (/^\d+\.\d+$/.test(value))
73
+ return Number(value);
74
+ // 数组
75
+ if (value.startsWith("[") && value.endsWith("]")) {
76
+ try {
77
+ return JSON.parse(value);
78
+ }
79
+ catch {
80
+ return value;
81
+ }
82
+ }
83
+ // JSON 对象
84
+ if (value.startsWith("{") && value.endsWith("}")) {
85
+ try {
86
+ return JSON.parse(value);
87
+ }
88
+ catch {
89
+ return value;
90
+ }
91
+ }
92
+ // 字符串
93
+ return value;
94
+ }
95
+ /**
96
+ * 设置嵌套值
97
+ */
98
+ static setNestedValue(obj, path, value) {
99
+ const keys = path.split(".");
100
+ let current = obj;
101
+ for (let i = 0; i < keys.length - 1; i++) {
102
+ const key = keys[i];
103
+ if (!(key in current) || typeof current[key] !== "object") {
104
+ current[key] = {};
105
+ }
106
+ current = current[key];
107
+ }
108
+ const lastKey = keys[keys.length - 1];
109
+ if (lastKey) {
110
+ current[lastKey] = value;
111
+ }
112
+ }
113
+ }
114
+ /**
115
+ * 配置定义
116
+ */
117
+ export const CONFIG_DEFINITIONS = [
118
+ {
119
+ key: "api.baseUrl",
120
+ description: "API 服务器的基础 URL",
121
+ type: "string",
122
+ required: false,
123
+ defaultValue: "https://api.round2ai.com",
124
+ envVar: "API_BASE_URL",
125
+ example: "https://api.example.com",
126
+ },
127
+ {
128
+ key: "api.timeout",
129
+ description: "API 请求超时时间(毫秒)",
130
+ type: "number",
131
+ required: false,
132
+ defaultValue: 30000,
133
+ envVar: "API_TIMEOUT",
134
+ validation: "1000-60000",
135
+ },
136
+ {
137
+ key: "api.retries",
138
+ description: "API 请求失败时的重试次数",
139
+ type: "number",
140
+ required: false,
141
+ defaultValue: 3,
142
+ envVar: "API_RETRIES",
143
+ validation: "0-10",
144
+ },
145
+ {
146
+ key: "auth.accessToken",
147
+ description: "访问令牌",
148
+ type: "string",
149
+ required: false,
150
+ envVar: "AUTH_TOKEN",
151
+ },
152
+ {
153
+ key: "auth.username",
154
+ description: "用户名",
155
+ type: "string",
156
+ required: false,
157
+ envVar: "AUTH_USERNAME",
158
+ },
159
+ {
160
+ key: "auth.expiresAt",
161
+ description: "令牌过期时间(时间戳)",
162
+ type: "number",
163
+ required: false,
164
+ },
165
+ {
166
+ key: "cache.enabled",
167
+ description: "是否启用缓存",
168
+ type: "boolean",
169
+ required: false,
170
+ defaultValue: true,
171
+ },
172
+ {
173
+ key: "cache.ttl",
174
+ description: "缓存存活时间(秒)",
175
+ type: "number",
176
+ required: false,
177
+ defaultValue: 300,
178
+ validation: "60-3600",
179
+ },
180
+ {
181
+ key: "logging.level",
182
+ description: "日志级别",
183
+ type: "string",
184
+ required: false,
185
+ defaultValue: "info",
186
+ example: "info",
187
+ },
188
+ {
189
+ key: "logging.format",
190
+ description: "日志格式",
191
+ type: "string",
192
+ required: false,
193
+ defaultValue: "text",
194
+ example: "text",
195
+ },
196
+ ];
197
+ /**
198
+ * 获取配置定义
199
+ */
200
+ export function getConfigDefinition(key) {
201
+ return CONFIG_DEFINITIONS.find(def => def.key === key);
202
+ }
203
+ /**
204
+ * 获取所有配置定义
205
+ */
206
+ export function getAllConfigDefinitions() {
207
+ return CONFIG_DEFINITIONS;
208
+ }
209
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 服务初始化
3
+ */
4
+ import { ServiceContainer } from "./ServiceContainer.js";
5
+ /**
6
+ * 初始化服务容器
7
+ */
8
+ export declare function initializeServices(): ServiceContainer;
9
+ /**
10
+ * 创建服务容器
11
+ */
12
+ export declare function createServiceContainer(): ServiceContainer;
13
+ /**
14
+ * 获取全局服务容器
15
+ */
16
+ export declare function getGlobalServiceContainer(): ServiceContainer;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,CAiBrD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAOD;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,gBAAgB,CAK5D"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 服务初始化
3
+ */
4
+ import { ServiceContainer } from "./ServiceContainer.js";
5
+ import { ConfigManager } from "./config/manager.js";
6
+ import { AuthProvider } from "./auth/provider.js";
7
+ import { ApiClient } from "./api/client.js";
8
+ import { sessionManager } from "./auth/session.js";
9
+ /**
10
+ * 初始化服务容器
11
+ */
12
+ export function initializeServices() {
13
+ const container = new ServiceContainer();
14
+ // 注册核心服务
15
+ container.register("config", new ConfigManager());
16
+ // 注册 API 客户端
17
+ const apiClient = new ApiClient(container);
18
+ container.register("api", apiClient);
19
+ // 注册认证服务
20
+ container.register("auth", new AuthProvider(container));
21
+ // 注册会话服务
22
+ container.register("session", sessionManager);
23
+ return container;
24
+ }
25
+ /**
26
+ * 创建服务容器
27
+ */
28
+ export function createServiceContainer() {
29
+ return initializeServices();
30
+ }
31
+ /**
32
+ * 全局服务容器(延迟初始化)
33
+ */
34
+ let globalContainer = null;
35
+ /**
36
+ * 获取全局服务容器
37
+ */
38
+ export function getGlobalServiceContainer() {
39
+ if (!globalContainer) {
40
+ globalContainer = initializeServices();
41
+ }
42
+ return globalContainer;
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEzC,SAAS;IACT,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;IAElD,aAAa;IACb,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAErC,SAAS;IACT,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAExD,SAAS;IACT,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,IAAI,eAAe,GAA4B,IAAI,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,kBAAkB,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 本地存储服务
3
+ */
4
+ import type { UserInfo } from "../../types/auth.js";
5
+ /** 存储的凭证信息 */
6
+ export interface StoredCredentials {
7
+ token: string;
8
+ userInfo: UserInfo;
9
+ timestamp: number;
10
+ }
11
+ /** 本地配置文件内容 */
12
+ export interface LocalConfig {
13
+ credentials: StoredCredentials | null;
14
+ }
15
+ /**
16
+ * 存储服务类
17
+ */
18
+ export declare class StorageService {
19
+ private configPath;
20
+ private config;
21
+ constructor();
22
+ /**
23
+ * 获取配置文件路径
24
+ */
25
+ getConfigPath(): string;
26
+ /**
27
+ * 加载配置
28
+ */
29
+ loadConfig(): Promise<LocalConfig>;
30
+ /**
31
+ * 保存配置
32
+ */
33
+ saveConfig(config: LocalConfig): Promise<void>;
34
+ /**
35
+ * 保存登录凭证
36
+ */
37
+ saveCredentials(token: string, userInfo: UserInfo): Promise<void>;
38
+ /**
39
+ * 获取登录凭证
40
+ */
41
+ getCredentials(): Promise<StoredCredentials | null>;
42
+ /**
43
+ * 清除登录凭证
44
+ */
45
+ clearCredentials(): Promise<void>;
46
+ /**
47
+ * 获取 token
48
+ */
49
+ getToken(): Promise<string | null>;
50
+ /**
51
+ * 获取用户信息
52
+ */
53
+ getUserInfo(): Promise<UserInfo | null>;
54
+ /**
55
+ * 检查是否已登录
56
+ */
57
+ isLoggedIn(): Promise<boolean>;
58
+ }
59
+ /**
60
+ * 创建存储服务
61
+ */
62
+ export declare function createStorageService(): StorageService;
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAe;AACf,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACvC;AAYD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAc;;IAa5B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAexC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpD;;OAEG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAKzD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAIrC;AAID;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * 本地存储服务
3
+ */
4
+ import { promises as fs } from "node:fs";
5
+ import path from "node:path";
6
+ import os from "node:os";
7
+ import { stat, mkdir } from "node:fs/promises";
8
+ // ==================== 常量 ====================
9
+ /** 配置文件名 */
10
+ const CONFIG_FILE_NAME = ".r2-cli";
11
+ /** 配置文件版本 */
12
+ const CONFIG_VERSION = "1.0.0";
13
+ // ==================== 存储服务 ====================
14
+ /**
15
+ * 存储服务类
16
+ */
17
+ export class StorageService {
18
+ configPath;
19
+ config;
20
+ constructor() {
21
+ // 获取用户主目录
22
+ const homeDir = os.homedir();
23
+ // 创建 .r2-cli 目录
24
+ const configDir = path.join(homeDir, CONFIG_FILE_NAME);
25
+ // 配置文件路径
26
+ this.configPath = path.join(configDir, "config.json");
27
+ this.config = { credentials: null };
28
+ }
29
+ /**
30
+ * 获取配置文件路径
31
+ */
32
+ getConfigPath() {
33
+ return this.configPath;
34
+ }
35
+ /**
36
+ * 加载配置
37
+ */
38
+ async loadConfig() {
39
+ try {
40
+ const content = await fs.readFile(this.configPath, "utf-8");
41
+ const config = JSON.parse(content);
42
+ this.config = config;
43
+ return config;
44
+ }
45
+ catch (error) {
46
+ if (error.code === "ENOENT") {
47
+ // 文件不存在,返回空配置
48
+ return { credentials: null };
49
+ }
50
+ throw error;
51
+ }
52
+ }
53
+ /**
54
+ * 保存配置
55
+ */
56
+ async saveConfig(config) {
57
+ this.config = config;
58
+ const content = JSON.stringify(config, null, 2);
59
+ const dirPath = path.dirname(this.configPath);
60
+ try {
61
+ // 检查目录是否存在,不存在则创建
62
+ await stat(dirPath);
63
+ }
64
+ catch (error) {
65
+ if (error.code === "ENOENT") {
66
+ // 目录不存在,创建目录
67
+ await mkdir(dirPath, { recursive: true });
68
+ }
69
+ }
70
+ await fs.writeFile(this.configPath, content, "utf-8");
71
+ }
72
+ /**
73
+ * 保存登录凭证
74
+ */
75
+ async saveCredentials(token, userInfo) {
76
+ const credentials = {
77
+ token,
78
+ userInfo,
79
+ timestamp: Date.now(),
80
+ };
81
+ let config;
82
+ try {
83
+ config = await this.loadConfig();
84
+ }
85
+ catch (error) {
86
+ // 如果文件不存在,创建空配置
87
+ config = { credentials: null };
88
+ }
89
+ config.credentials = credentials;
90
+ await this.saveConfig(config);
91
+ }
92
+ /**
93
+ * 获取登录凭证
94
+ */
95
+ async getCredentials() {
96
+ const config = await this.loadConfig();
97
+ return config.credentials;
98
+ }
99
+ /**
100
+ * 清除登录凭证
101
+ */
102
+ async clearCredentials() {
103
+ const config = await this.loadConfig();
104
+ config.credentials = null;
105
+ await this.saveConfig(config);
106
+ }
107
+ /**
108
+ * 获取 token
109
+ */
110
+ async getToken() {
111
+ const credentials = await this.getCredentials();
112
+ return credentials?.token ?? null;
113
+ }
114
+ /**
115
+ * 获取用户信息
116
+ */
117
+ async getUserInfo() {
118
+ const credentials = await this.getCredentials();
119
+ return credentials?.userInfo ?? null;
120
+ }
121
+ /**
122
+ * 检查是否已登录
123
+ */
124
+ async isLoggedIn() {
125
+ const credentials = await this.getCredentials();
126
+ return credentials !== null;
127
+ }
128
+ }
129
+ // ==================== 工厂函数 ====================
130
+ /**
131
+ * 创建存储服务
132
+ */
133
+ export function createStorageService() {
134
+ return new StorageService();
135
+ }
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * API 相关类型定义
3
+ */
4
+ /**
5
+ * API 统一响应格式
6
+ */
7
+ export interface ApiResponse<T = unknown> {
8
+ code: number;
9
+ message: string;
10
+ data: T;
11
+ }
12
+ /**
13
+ * API 错误类型
14
+ */
15
+ export interface ApiError {
16
+ code: number;
17
+ message: string;
18
+ statusCode: number;
19
+ }
20
+ /**
21
+ * API 请求配置
22
+ */
23
+ export interface RequestOptions {
24
+ method?: "GET" | "POST" | "PUT" | "DELETE";
25
+ headers?: Record<string, string>;
26
+ body?: unknown;
27
+ timeout?: number;
28
+ }
29
+ /**
30
+ * 二维码登录响应
31
+ */
32
+ export interface QrCodeResponse {
33
+ qrCodeUrl: string;
34
+ qrCodeData: string;
35
+ expireIn: number;
36
+ loginId: string;
37
+ }
38
+ /**
39
+ * 登录状态响应
40
+ */
41
+ export interface LoginStatusResponse {
42
+ status: "pending" | "scanned" | "confirmed" | "expired" | "canceled";
43
+ userId?: string;
44
+ username?: string;
45
+ accessToken?: string;
46
+ refreshToken?: string;
47
+ expiresIn?: number;
48
+ }
49
+ /**
50
+ * 用户详细信息
51
+ */
52
+ export interface UserInfo {
53
+ userId: string;
54
+ username: string;
55
+ email?: string;
56
+ phone?: string;
57
+ }
58
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * API 相关类型定义
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * 认证相关类型定义
3
+ */
4
+ /** 二维码登录状态 */
5
+ export type QRCodeStatus = "waiting" | "scanned" | "confirmed" | "expired" | "canceled";
6
+ /** 用户信息 */
7
+ export interface UserInfo {
8
+ userId: number;
9
+ username: string;
10
+ nickname: string;
11
+ mobile: string;
12
+ logo: string;
13
+ }
14
+ /** 生成二维码响应数据 */
15
+ export interface GenerateQRCodeData {
16
+ qrToken: string;
17
+ qrContent: string;
18
+ expireTime: string;
19
+ pollInterval: string;
20
+ }
21
+ /** 查询二维码状态响应数据 */
22
+ export interface QRCodeStatusData {
23
+ status: QRCodeStatus;
24
+ userInfo: UserInfo | null;
25
+ token: string | null;
26
+ }
27
+ /** API 响应基础结构 */
28
+ export interface ApiResponse<T = unknown> {
29
+ success: boolean;
30
+ status: number;
31
+ data: T;
32
+ }
33
+ /** 登录凭证 */
34
+ export interface AuthToken {
35
+ token: string;
36
+ refreshToken?: string;
37
+ expiresIn?: number;
38
+ }
39
+ /** 认证状态 */
40
+ export interface AuthState {
41
+ isLoggedIn: boolean;
42
+ userInfo: UserInfo | null;
43
+ token: string | null;
44
+ lastLoginTime: number | null;
45
+ }
46
+ /** 配置信息 */
47
+ export interface AuthConfig {
48
+ /** API 基础地址 */
49
+ baseUrl: string;
50
+ /** API 版本 */
51
+ version: string;
52
+ /** 轮询超时时间(毫秒) */
53
+ pollingTimeout: number;
54
+ /** 是否启用调试日志 */
55
+ debug: boolean;
56
+ }
57
+ /** 默认配置 */
58
+ export declare const DEFAULT_AUTH_CONFIG: AuthConfig;
59
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,cAAc;AACd,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAExF,WAAW;AACX,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gBAAgB;AAChB,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,kBAAkB;AAClB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,iBAAiB;AACjB,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT;AAID,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,WAAW;AACX,MAAM,WAAW,UAAU;IACzB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe;IACf,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,WAAW;AACX,eAAO,MAAM,mBAAmB,EAAE,UAKjC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 认证相关类型定义
3
+ */
4
+ /** 默认配置 */
5
+ export const DEFAULT_AUTH_CONFIG = {
6
+ baseUrl: process.env.R2_API_BASE_URL || "https://api.round2ai.com",
7
+ version: "v3",
8
+ pollingTimeout: 300000, // 5分钟
9
+ debug: process.env.DEBUG === "true",
10
+ };
11
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmEH,WAAW;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,0BAA0B;IAClE,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,MAAM,EAAE,MAAM;IAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM;CACpC,CAAC"}