meeglesdk 0.1.1 → 0.1.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 (190) hide show
  1. package/README.md +32 -0
  2. package/package.json +1 -1
  3. package/dist/client.d.ts +0 -186
  4. package/dist/client.d.ts.map +0 -1
  5. package/dist/client.js +0 -197
  6. package/dist/client.js.map +0 -1
  7. package/dist/core/base-service.d.ts +0 -156
  8. package/dist/core/base-service.d.ts.map +0 -1
  9. package/dist/core/base-service.js +0 -240
  10. package/dist/core/base-service.js.map +0 -1
  11. package/dist/core/errors.d.ts +0 -181
  12. package/dist/core/errors.d.ts.map +0 -1
  13. package/dist/core/errors.js +0 -250
  14. package/dist/core/errors.js.map +0 -1
  15. package/dist/core/rate-limiter.d.ts +0 -72
  16. package/dist/core/rate-limiter.d.ts.map +0 -1
  17. package/dist/core/rate-limiter.js +0 -269
  18. package/dist/core/rate-limiter.js.map +0 -1
  19. package/dist/core/request.d.ts +0 -276
  20. package/dist/core/request.d.ts.map +0 -1
  21. package/dist/core/request.js +0 -856
  22. package/dist/core/request.js.map +0 -1
  23. package/dist/core/token-manager.d.ts +0 -134
  24. package/dist/core/token-manager.d.ts.map +0 -1
  25. package/dist/core/token-manager.js +0 -412
  26. package/dist/core/token-manager.js.map +0 -1
  27. package/dist/helpers/auth.d.ts +0 -7
  28. package/dist/helpers/auth.d.ts.map +0 -1
  29. package/dist/helpers/auth.js +0 -19
  30. package/dist/helpers/auth.js.map +0 -1
  31. package/dist/index.d.ts +0 -72
  32. package/dist/index.d.ts.map +0 -1
  33. package/dist/index.js +0 -61
  34. package/dist/index.js.map +0 -1
  35. package/dist/service/auth/index.d.ts +0 -96
  36. package/dist/service/auth/index.d.ts.map +0 -1
  37. package/dist/service/auth/index.js +0 -163
  38. package/dist/service/auth/index.js.map +0 -1
  39. package/dist/service/config/basic.d.ts +0 -37
  40. package/dist/service/config/basic.d.ts.map +0 -1
  41. package/dist/service/config/basic.js +0 -54
  42. package/dist/service/config/basic.js.map +0 -1
  43. package/dist/service/config/config.d.ts +0 -27
  44. package/dist/service/config/config.d.ts.map +0 -1
  45. package/dist/service/config/config.js +0 -34
  46. package/dist/service/config/config.js.map +0 -1
  47. package/dist/service/config/field.d.ts +0 -50
  48. package/dist/service/config/field.d.ts.map +0 -1
  49. package/dist/service/config/field.js +0 -74
  50. package/dist/service/config/field.js.map +0 -1
  51. package/dist/service/config/relation.d.ts +0 -53
  52. package/dist/service/config/relation.d.ts.map +0 -1
  53. package/dist/service/config/relation.js +0 -66
  54. package/dist/service/config/relation.js.map +0 -1
  55. package/dist/service/config/resource.d.ts +0 -59
  56. package/dist/service/config/resource.d.ts.map +0 -1
  57. package/dist/service/config/resource.js +0 -75
  58. package/dist/service/config/resource.js.map +0 -1
  59. package/dist/service/config/role.d.ts +0 -55
  60. package/dist/service/config/role.d.ts.map +0 -1
  61. package/dist/service/config/role.js +0 -90
  62. package/dist/service/config/role.js.map +0 -1
  63. package/dist/service/config/template.d.ts +0 -65
  64. package/dist/service/config/template.d.ts.map +0 -1
  65. package/dist/service/config/template.js +0 -95
  66. package/dist/service/config/template.js.map +0 -1
  67. package/dist/service/measure/index.d.ts +0 -26
  68. package/dist/service/measure/index.d.ts.map +0 -1
  69. package/dist/service/measure/index.js +0 -36
  70. package/dist/service/measure/index.js.map +0 -1
  71. package/dist/service/measure/query.d.ts +0 -56
  72. package/dist/service/measure/query.d.ts.map +0 -1
  73. package/dist/service/measure/query.js +0 -86
  74. package/dist/service/measure/query.js.map +0 -1
  75. package/dist/service/space/relation.d.ts +0 -63
  76. package/dist/service/space/relation.d.ts.map +0 -1
  77. package/dist/service/space/relation.js +0 -102
  78. package/dist/service/space/relation.js.map +0 -1
  79. package/dist/service/space/space.d.ts +0 -81
  80. package/dist/service/space/space.d.ts.map +0 -1
  81. package/dist/service/space/space.js +0 -110
  82. package/dist/service/space/space.js.map +0 -1
  83. package/dist/service/tenant/tenant.d.ts +0 -52
  84. package/dist/service/tenant/tenant.d.ts.map +0 -1
  85. package/dist/service/tenant/tenant.js +0 -75
  86. package/dist/service/tenant/tenant.js.map +0 -1
  87. package/dist/service/user/group.d.ts +0 -47
  88. package/dist/service/user/group.d.ts.map +0 -1
  89. package/dist/service/user/group.js +0 -70
  90. package/dist/service/user/group.js.map +0 -1
  91. package/dist/service/user/query.d.ts +0 -25
  92. package/dist/service/user/query.d.ts.map +0 -1
  93. package/dist/service/user/query.js +0 -26
  94. package/dist/service/user/query.js.map +0 -1
  95. package/dist/service/user/search.d.ts +0 -25
  96. package/dist/service/user/search.d.ts.map +0 -1
  97. package/dist/service/user/search.js +0 -26
  98. package/dist/service/user/search.js.map +0 -1
  99. package/dist/service/user/user.d.ts +0 -37
  100. package/dist/service/user/user.d.ts.map +0 -1
  101. package/dist/service/user/user.js +0 -46
  102. package/dist/service/user/user.js.map +0 -1
  103. package/dist/service/view/query.d.ts +0 -52
  104. package/dist/service/view/query.d.ts.map +0 -1
  105. package/dist/service/view/query.js +0 -76
  106. package/dist/service/view/query.js.map +0 -1
  107. package/dist/service/view/view.d.ts +0 -76
  108. package/dist/service/view/view.d.ts.map +0 -1
  109. package/dist/service/view/view.js +0 -108
  110. package/dist/service/view/view.js.map +0 -1
  111. package/dist/service/workitem/attachment.d.ts +0 -143
  112. package/dist/service/workitem/attachment.d.ts.map +0 -1
  113. package/dist/service/workitem/attachment.js +0 -231
  114. package/dist/service/workitem/attachment.js.map +0 -1
  115. package/dist/service/workitem/batch.d.ts +0 -135
  116. package/dist/service/workitem/batch.d.ts.map +0 -1
  117. package/dist/service/workitem/batch.js +0 -146
  118. package/dist/service/workitem/batch.js.map +0 -1
  119. package/dist/service/workitem/chat.d.ts +0 -42
  120. package/dist/service/workitem/chat.d.ts.map +0 -1
  121. package/dist/service/workitem/chat.js +0 -50
  122. package/dist/service/workitem/chat.js.map +0 -1
  123. package/dist/service/workitem/comment.d.ts +0 -139
  124. package/dist/service/workitem/comment.d.ts.map +0 -1
  125. package/dist/service/workitem/comment.js +0 -180
  126. package/dist/service/workitem/comment.js.map +0 -1
  127. package/dist/service/workitem/review.d.ts +0 -44
  128. package/dist/service/workitem/review.d.ts.map +0 -1
  129. package/dist/service/workitem/review.js +0 -49
  130. package/dist/service/workitem/review.js.map +0 -1
  131. package/dist/service/workitem/search.d.ts +0 -213
  132. package/dist/service/workitem/search.d.ts.map +0 -1
  133. package/dist/service/workitem/search.js +0 -242
  134. package/dist/service/workitem/search.js.map +0 -1
  135. package/dist/service/workitem/subtask.d.ts +0 -193
  136. package/dist/service/workitem/subtask.d.ts.map +0 -1
  137. package/dist/service/workitem/subtask.js +0 -247
  138. package/dist/service/workitem/subtask.js.map +0 -1
  139. package/dist/service/workitem/workItem.d.ts +0 -225
  140. package/dist/service/workitem/workItem.d.ts.map +0 -1
  141. package/dist/service/workitem/workItem.js +0 -310
  142. package/dist/service/workitem/workItem.js.map +0 -1
  143. package/dist/service/workitem/workflow.d.ts +0 -214
  144. package/dist/service/workitem/workflow.d.ts.map +0 -1
  145. package/dist/service/workitem/workflow.js +0 -281
  146. package/dist/service/workitem/workflow.js.map +0 -1
  147. package/dist/service/workitem/workhour.d.ts +0 -63
  148. package/dist/service/workitem/workhour.d.ts.map +0 -1
  149. package/dist/service/workitem/workhour.js +0 -93
  150. package/dist/service/workitem/workhour.js.map +0 -1
  151. package/dist/types/auth.d.ts +0 -115
  152. package/dist/types/auth.d.ts.map +0 -1
  153. package/dist/types/auth.js +0 -6
  154. package/dist/types/auth.js.map +0 -1
  155. package/dist/types/common.d.ts +0 -354
  156. package/dist/types/common.d.ts.map +0 -1
  157. package/dist/types/common.js +0 -14
  158. package/dist/types/common.js.map +0 -1
  159. package/dist/types/config.d.ts +0 -305
  160. package/dist/types/config.d.ts.map +0 -1
  161. package/dist/types/config.js +0 -6
  162. package/dist/types/config.js.map +0 -1
  163. package/dist/types/index.d.ts +0 -13
  164. package/dist/types/index.d.ts.map +0 -1
  165. package/dist/types/index.js +0 -13
  166. package/dist/types/index.js.map +0 -1
  167. package/dist/types/measure.d.ts +0 -55
  168. package/dist/types/measure.d.ts.map +0 -1
  169. package/dist/types/measure.js +0 -6
  170. package/dist/types/measure.js.map +0 -1
  171. package/dist/types/space.d.ts +0 -164
  172. package/dist/types/space.d.ts.map +0 -1
  173. package/dist/types/space.js +0 -6
  174. package/dist/types/space.js.map +0 -1
  175. package/dist/types/tenant.d.ts +0 -106
  176. package/dist/types/tenant.d.ts.map +0 -1
  177. package/dist/types/tenant.js +0 -6
  178. package/dist/types/tenant.js.map +0 -1
  179. package/dist/types/user.d.ts +0 -110
  180. package/dist/types/user.d.ts.map +0 -1
  181. package/dist/types/user.js +0 -6
  182. package/dist/types/user.js.map +0 -1
  183. package/dist/types/view.d.ts +0 -162
  184. package/dist/types/view.d.ts.map +0 -1
  185. package/dist/types/view.js +0 -6
  186. package/dist/types/view.js.map +0 -1
  187. package/dist/types/workitem.d.ts +0 -1523
  188. package/dist/types/workitem.d.ts.map +0 -1
  189. package/dist/types/workitem.js +0 -6
  190. package/dist/types/workitem.js.map +0 -1
package/README.md CHANGED
@@ -168,6 +168,38 @@ const wbs = await client.workItem.workflow.getWbsView(
168
168
  );
169
169
  ```
170
170
 
171
+ ## Universal Search (Field Select)
172
+
173
+ ```ts
174
+ const request = {
175
+ data_sources: [
176
+ {
177
+ project_key: 'project_key',
178
+ work_item_type_keys: 'story',
179
+ },
180
+ ],
181
+ search_group: {
182
+ conjunction: 'AND',
183
+ search_params: [{ param_key: 'created_at', value: Date.now() - 86400000, operator: '>' }],
184
+ },
185
+ field_selected: ['work_item_id', 'name'],
186
+ pagination: { page_size: 20 },
187
+ };
188
+
189
+ const result = await client.workItem.search.universalSearch(request, {
190
+ auth: { type: 'plugin', userKey: 'user_key' },
191
+ });
192
+
193
+ // Next page
194
+ const next = await client.workItem.search.universalSearch(
195
+ {
196
+ ...request,
197
+ pagination: { page_size: 20, search_after: result.pagination.search_after },
198
+ },
199
+ { auth: { type: 'plugin', userKey: 'user_key' } }
200
+ );
201
+ ```
202
+
171
203
  ## Services Overview
172
204
 
173
205
  Top-level services:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meeglesdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "飞书项目 Open API TypeScript SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/dist/client.d.ts DELETED
@@ -1,186 +0,0 @@
1
- /**
2
- * Meego SDK 客户端
3
- * 飞书项目 Open API TypeScript SDK
4
- */
5
- import type { Logger } from './types/common.js';
6
- import type { UserTokenInput } from './types/auth.js';
7
- import type { RetryConfig } from './core/request.js';
8
- import type { RateLimitConfig } from './core/rate-limiter.js';
9
- import { TokenManager } from './core/token-manager.js';
10
- import { RequestHandler } from './core/request.js';
11
- import { AuthService } from './service/auth/index.js';
12
- import { WorkItemService } from './service/workitem/workItem.js';
13
- import { SpaceService } from './service/space/space.js';
14
- import { UserService } from './service/user/user.js';
15
- import { ConfigService } from './service/config/config.js';
16
- import { ViewService } from './service/view/view.js';
17
- import { MeasureService } from './service/measure/index.js';
18
- import { TenantService } from './service/tenant/tenant.js';
19
- /**
20
- * MeegoClient 配置选项
21
- */
22
- export interface MeegoClientOptions {
23
- /** 插件 ID (Plugin ID) */
24
- pluginId: string;
25
- /** 插件密钥 (Plugin Secret) */
26
- pluginSecret: string;
27
- /**
28
- * API 基础 URL
29
- * @default 'https://project.feishu.cn'
30
- */
31
- baseURL?: string;
32
- /**
33
- * 请求超时(毫秒)
34
- * @default 30000
35
- */
36
- timeout?: number;
37
- /**
38
- * 重试配置
39
- */
40
- retry?: Partial<RetryConfig>;
41
- /**
42
- * 本地限流配置(可选)
43
- */
44
- rateLimit?: RateLimitConfig;
45
- /**
46
- * 自定义 Logger
47
- * @default console logger
48
- */
49
- logger?: Logger;
50
- /**
51
- * 是否使用虚拟 token(开发调试用)
52
- * - 0: plugin_access_token (默认)
53
- * - 1: virtual_plugin_token
54
- * @default 0
55
- */
56
- tokenType?: 0 | 1;
57
- /**
58
- * Token 刷新回调
59
- * 当 token 被刷新时调用,可用于持久化 token(user token 会带上 userKey)
60
- */
61
- onTokenRefresh?: (token: string, type: 'plugin' | 'user', userKey?: string) => void;
62
- }
63
- /**
64
- * Meego SDK 客户端
65
- *
66
- * @example
67
- * ```typescript
68
- * // 初始化客户端
69
- * const client = new MeegoClient({
70
- * pluginId: 'MII_xxx',
71
- * pluginSecret: 'xxx',
72
- * });
73
- *
74
- * // 使用认证服务
75
- * const pluginToken = await client.auth.getPluginToken();
76
- *
77
- * // 通过授权码获取用户 token
78
- * const userInfo = await client.auth.getUserToken(code);
79
- *
80
- * // 使用工作项服务
81
- * const workItems = await client.workItem.query('project', 'story', { work_item_ids: [123] });
82
- *
83
- * // 使用工作项子服务
84
- * const searchResult = await client.workItem.search.filter('project', { work_item_type_keys: ['story'] });
85
- * const comments = await client.workItem.comment.list('project', 'story', 123);
86
- * ```
87
- */
88
- export declare class MeegoClient {
89
- /** 认证服务 */
90
- readonly auth: AuthService;
91
- /**
92
- * 工作项服务
93
- *
94
- * 包含子服务:
95
- * - search: 搜索与筛选
96
- * - batch: 批量操作
97
- * - comment: 评论管理
98
- * - subtask: 子任务管理
99
- * - attachment: 附件管理
100
- * - chat: 群聊管理
101
- */
102
- readonly workItem: WorkItemService;
103
- /**
104
- * 空间服务
105
- *
106
- * 包含子服务:
107
- * - relation: 空间关联
108
- */
109
- readonly space: SpaceService;
110
- /**
111
- * 用户服务
112
- *
113
- * 包含子服务:
114
- * - group: 用户组管理
115
- */
116
- readonly user: UserService;
117
- /**
118
- * 配置服务
119
- *
120
- * 包含子服务:
121
- * - basic: 基础配置
122
- * - field: 字段配置
123
- * - relation: 关系配置
124
- * - resource: 资源库配置
125
- * - role: 角色配置
126
- * - template: 模板配置
127
- */
128
- readonly config: ConfigService;
129
- /**
130
- * 视图服务
131
- *
132
- * 包含子服务:
133
- * - query: 视图查询
134
- */
135
- readonly view: ViewService;
136
- /**
137
- * 度量服务
138
- *
139
- * 包含子服务:
140
- * - query: 度量查询
141
- */
142
- readonly measure: MeasureService;
143
- /**
144
- * 租户服务(ISV 场景)
145
- *
146
- * - getInfo: 获取商业租户信息
147
- * - getEntitlement: 查询租户权益
148
- * - listInstalledSpaces: 获取安装空间列表
149
- */
150
- readonly tenant: TenantService;
151
- /** Token 管理器 (内部使用) */
152
- private readonly tokenManager;
153
- /** 请求处理器 (内部使用) */
154
- private readonly requestHandler;
155
- /** Logger */
156
- private readonly logger;
157
- /** 配置 */
158
- private readonly options;
159
- constructor(options: MeegoClientOptions);
160
- /**
161
- * 手动设置用户访问凭证
162
- * 用于从外部设置已有的 token(如从前端传入)
163
- *
164
- * @param input 用户 token 信息
165
- */
166
- setUserToken(input: UserTokenInput): void;
167
- /**
168
- * 获取请求处理器
169
- * 供其他服务使用
170
- */
171
- getRequestHandler(): RequestHandler;
172
- /**
173
- * 获取 Token 管理器
174
- * 供其他服务使用
175
- */
176
- getTokenManager(): TokenManager;
177
- /**
178
- * 获取 Logger
179
- */
180
- getLogger(): Logger;
181
- /**
182
- * 获取配置的基础 URL
183
- */
184
- getBaseURL(): string;
185
- }
186
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js DELETED
@@ -1,197 +0,0 @@
1
- /**
2
- * Meego SDK 客户端
3
- * 飞书项目 Open API TypeScript SDK
4
- */
5
- import { defaultLogger } from './types/common.js';
6
- import { TokenManager } from './core/token-manager.js';
7
- import { RequestHandler } from './core/request.js';
8
- import { AuthService } from './service/auth/index.js';
9
- import { WorkItemService } from './service/workitem/workItem.js';
10
- import { SpaceService } from './service/space/space.js';
11
- import { UserService } from './service/user/user.js';
12
- import { ConfigService } from './service/config/config.js';
13
- import { ViewService } from './service/view/view.js';
14
- import { MeasureService } from './service/measure/index.js';
15
- import { TenantService } from './service/tenant/tenant.js';
16
- /** 默认 API 基础 URL */
17
- const DEFAULT_BASE_URL = 'https://project.feishu.cn';
18
- /** 默认超时 30 秒 */
19
- const DEFAULT_TIMEOUT = 30000;
20
- /**
21
- * Meego SDK 客户端
22
- *
23
- * @example
24
- * ```typescript
25
- * // 初始化客户端
26
- * const client = new MeegoClient({
27
- * pluginId: 'MII_xxx',
28
- * pluginSecret: 'xxx',
29
- * });
30
- *
31
- * // 使用认证服务
32
- * const pluginToken = await client.auth.getPluginToken();
33
- *
34
- * // 通过授权码获取用户 token
35
- * const userInfo = await client.auth.getUserToken(code);
36
- *
37
- * // 使用工作项服务
38
- * const workItems = await client.workItem.query('project', 'story', { work_item_ids: [123] });
39
- *
40
- * // 使用工作项子服务
41
- * const searchResult = await client.workItem.search.filter('project', { work_item_type_keys: ['story'] });
42
- * const comments = await client.workItem.comment.list('project', 'story', 123);
43
- * ```
44
- */
45
- export class MeegoClient {
46
- /** 认证服务 */
47
- auth;
48
- /**
49
- * 工作项服务
50
- *
51
- * 包含子服务:
52
- * - search: 搜索与筛选
53
- * - batch: 批量操作
54
- * - comment: 评论管理
55
- * - subtask: 子任务管理
56
- * - attachment: 附件管理
57
- * - chat: 群聊管理
58
- */
59
- workItem;
60
- /**
61
- * 空间服务
62
- *
63
- * 包含子服务:
64
- * - relation: 空间关联
65
- */
66
- space;
67
- /**
68
- * 用户服务
69
- *
70
- * 包含子服务:
71
- * - group: 用户组管理
72
- */
73
- user;
74
- /**
75
- * 配置服务
76
- *
77
- * 包含子服务:
78
- * - basic: 基础配置
79
- * - field: 字段配置
80
- * - relation: 关系配置
81
- * - resource: 资源库配置
82
- * - role: 角色配置
83
- * - template: 模板配置
84
- */
85
- config;
86
- /**
87
- * 视图服务
88
- *
89
- * 包含子服务:
90
- * - query: 视图查询
91
- */
92
- view;
93
- /**
94
- * 度量服务
95
- *
96
- * 包含子服务:
97
- * - query: 度量查询
98
- */
99
- measure;
100
- /**
101
- * 租户服务(ISV 场景)
102
- *
103
- * - getInfo: 获取商业租户信息
104
- * - getEntitlement: 查询租户权益
105
- * - listInstalledSpaces: 获取安装空间列表
106
- */
107
- tenant;
108
- /** Token 管理器 (内部使用) */
109
- tokenManager;
110
- /** 请求处理器 (内部使用) */
111
- requestHandler;
112
- /** Logger */
113
- logger;
114
- /** 配置 */
115
- options;
116
- constructor(options) {
117
- // 合并默认配置
118
- this.options = {
119
- ...options,
120
- baseURL: options.baseURL ?? DEFAULT_BASE_URL,
121
- timeout: options.timeout ?? DEFAULT_TIMEOUT,
122
- };
123
- this.logger = options.logger ?? defaultLogger;
124
- // 初始化 Token 管理器
125
- this.tokenManager = new TokenManager({
126
- pluginId: this.options.pluginId,
127
- pluginSecret: this.options.pluginSecret,
128
- baseURL: this.options.baseURL,
129
- logger: this.logger,
130
- tokenType: this.options.tokenType,
131
- onTokenRefresh: this.options.onTokenRefresh,
132
- });
133
- // 初始化请求处理器
134
- this.requestHandler = new RequestHandler({
135
- baseURL: this.options.baseURL,
136
- tokenManager: this.tokenManager,
137
- logger: this.logger,
138
- timeout: this.options.timeout,
139
- retry: this.options.retry,
140
- rateLimit: this.options.rateLimit,
141
- });
142
- // 初始化服务
143
- this.auth = new AuthService({
144
- baseURL: this.options.baseURL,
145
- tokenManager: this.tokenManager,
146
- logger: this.logger,
147
- timeout: this.options.timeout,
148
- });
149
- this.workItem = new WorkItemService(this.requestHandler);
150
- this.space = new SpaceService(this.requestHandler);
151
- this.user = new UserService(this.requestHandler);
152
- this.config = new ConfigService(this.requestHandler);
153
- this.view = new ViewService(this.requestHandler);
154
- this.measure = new MeasureService(this.requestHandler);
155
- this.tenant = new TenantService(this.requestHandler);
156
- this.logger.info('MeegoClient initialized', {
157
- baseURL: this.options.baseURL,
158
- pluginId: this.options.pluginId,
159
- });
160
- }
161
- /**
162
- * 手动设置用户访问凭证
163
- * 用于从外部设置已有的 token(如从前端传入)
164
- *
165
- * @param input 用户 token 信息
166
- */
167
- setUserToken(input) {
168
- this.auth.setUserToken(input);
169
- }
170
- /**
171
- * 获取请求处理器
172
- * 供其他服务使用
173
- */
174
- getRequestHandler() {
175
- return this.requestHandler;
176
- }
177
- /**
178
- * 获取 Token 管理器
179
- * 供其他服务使用
180
- */
181
- getTokenManager() {
182
- return this.tokenManager;
183
- }
184
- /**
185
- * 获取 Logger
186
- */
187
- getLogger() {
188
- return this.logger;
189
- }
190
- /**
191
- * 获取配置的基础 URL
192
- */
193
- getBaseURL() {
194
- return this.options.baseURL;
195
- }
196
- }
197
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,oBAAoB;AACpB,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAErD,gBAAgB;AAChB,MAAM,eAAe,GAAG,KAAK,CAAC;AA+C9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,WAAW;IACtB,WAAW;IACF,IAAI,CAAc;IAE3B;;;;;;;;;;OAUG;IACM,QAAQ,CAAkB;IAEnC;;;;;OAKG;IACM,KAAK,CAAe;IAE7B;;;;;OAKG;IACM,IAAI,CAAc;IAE3B;;;;;;;;;;OAUG;IACM,MAAM,CAAgB;IAE/B;;;;;OAKG;IACM,IAAI,CAAc;IAE3B;;;;;OAKG;IACM,OAAO,CAAiB;IAEjC;;;;;;OAMG;IACM,MAAM,CAAgB;IAE/B,uBAAuB;IACN,YAAY,CAAe;IAE5C,mBAAmB;IACF,cAAc,CAAiB;IAEhD,aAAa;IACI,MAAM,CAAS;IAEhC,SAAS;IACQ,OAAO,CAGH;IAErB,YAAY,OAA2B;QACrC,SAAS;QACT,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,OAAO;YACV,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,gBAAgB;YAC5C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;SAC5C,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;QAE9C,gBAAgB;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC;YACnC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;SAC5C,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;SAChC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAqB;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF"}
@@ -1,156 +0,0 @@
1
- /**
2
- * Service 基类
3
- * 提供通用的请求方法封装
4
- */
5
- import type { RequestHandler, AuthContext, RetryConfig, DownloadProgress, ResponseValidator } from './request.js';
6
- import type { PaginatedResult, PaginatedObjectResult } from '../types/common.js';
7
- /** 请求选项 */
8
- export interface ServiceRequestOptions<T = unknown> {
9
- /** 路径参数 */
10
- pathParams?: Record<string, string>;
11
- /** 查询参数 */
12
- query?: Record<string, unknown>;
13
- /** 认证上下文 */
14
- auth?: AuthContext;
15
- /** 幂等键 */
16
- idempotencyKey?: string;
17
- /** 超时(毫秒) */
18
- timeout?: number;
19
- /** 跳过重试 */
20
- skipRetry?: boolean;
21
- /** 重试配置(可选,覆盖默认配置) */
22
- retry?: Partial<RetryConfig>;
23
- /** 响应数据校验(可选)。分页请求中将应用于每个元素 */
24
- responseValidator?: ResponseValidator<T>;
25
- }
26
- /** 上传请求选项 */
27
- export interface UploadRequestOptions<T = unknown> extends ServiceRequestOptions<T> {
28
- /** 上传文件大小上限(字节),默认 100,000,000 */
29
- maxUploadSizeBytes?: number;
30
- /** 上传文件大小下限(字节),默认 1 */
31
- minUploadSizeBytes?: number;
32
- }
33
- /** 文件上传选项 */
34
- export interface UploadOptions<T = unknown> {
35
- /** 路径参数 */
36
- pathParams?: Record<string, string>;
37
- /** 文件数据 */
38
- file: Blob | File | Buffer;
39
- /** 文件名 */
40
- fileName: string;
41
- /** 表单字段名 (默认 'file') */
42
- fieldName?: string;
43
- /** 额外的表单字段 */
44
- formFields?: Record<string, string>;
45
- /** 认证上下文 */
46
- auth?: AuthContext;
47
- /** 超时(毫秒) */
48
- timeout?: number;
49
- /** 上传文件大小上限(字节),默认 100,000,000 */
50
- maxUploadSizeBytes?: number;
51
- /** 上传文件大小下限(字节),默认 1 */
52
- minUploadSizeBytes?: number;
53
- /** 跳过重试 */
54
- skipRetry?: boolean;
55
- /** 重试配置(可选,覆盖默认配置) */
56
- retry?: Partial<RetryConfig>;
57
- /** 响应数据校验(可选) */
58
- responseValidator?: ResponseValidator<T>;
59
- }
60
- /** 文件下载选项 */
61
- export interface DownloadOptions {
62
- /** 路径参数 */
63
- pathParams?: Record<string, string>;
64
- /** 请求体 */
65
- body?: unknown;
66
- /** 认证上下文 */
67
- auth?: AuthContext;
68
- /** 超时(毫秒) */
69
- timeout?: number;
70
- /** 取消信号 */
71
- signal?: AbortSignal;
72
- /** 下载进度回调 */
73
- onProgress?: (progress: DownloadProgress) => void;
74
- /** 分块回调(流式下载时可用于写文件) */
75
- onChunk?: (chunk: Uint8Array, progress: DownloadProgress) => void;
76
- /** 跳过重试 */
77
- skipRetry?: boolean;
78
- /** 重试配置(可选,覆盖默认配置) */
79
- retry?: Partial<RetryConfig>;
80
- }
81
- /**
82
- * Service 基类
83
- */
84
- export declare abstract class BaseService {
85
- protected readonly requestHandler: RequestHandler;
86
- constructor(requestHandler: RequestHandler);
87
- /**
88
- * GET 请求
89
- */
90
- protected get<T>(path: string, options?: ServiceRequestOptions<T>): Promise<T>;
91
- /**
92
- * POST 请求
93
- */
94
- protected post<T>(path: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<T>;
95
- /**
96
- * PUT 请求
97
- */
98
- protected put<T>(path: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<T>;
99
- /**
100
- * PATCH 请求
101
- */
102
- protected patch<T>(path: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<T>;
103
- /**
104
- * DELETE 请求
105
- */
106
- protected delete<T>(path: string, options?: ServiceRequestOptions<T>): Promise<T>;
107
- /**
108
- * DELETE 请求(带请求体)
109
- */
110
- protected deleteWithBody<T>(path: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<T>;
111
- /**
112
- * GET 分页请求
113
- * 用于 pagination 与 data 同级的接口
114
- */
115
- protected getPaginated<T>(path: string, options?: ServiceRequestOptions<T>): Promise<PaginatedResult<T>>;
116
- /**
117
- * POST 分页请求
118
- * 用于 pagination 与 data 同级的接口
119
- */
120
- protected postPaginated<T>(path: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<PaginatedResult<T>>;
121
- /**
122
- * GET 分页请求(data 为对象)
123
- * 用于 pagination 与 data 同级,但 data 为对象的接口
124
- */
125
- protected getWithPagination<T>(path: string, options?: ServiceRequestOptions<T>): Promise<PaginatedObjectResult<T>>;
126
- /**
127
- * POST 分页请求(data 为对象)
128
- * 用于 pagination 与 data 同级,但 data 为对象的接口
129
- */
130
- protected postWithPagination<T>(path: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<PaginatedObjectResult<T>>;
131
- /**
132
- * GET 请求(自定义响应字段)
133
- */
134
- protected getWithResponseKey<T>(path: string, responseKey: string, options?: ServiceRequestOptions<T>): Promise<T>;
135
- /**
136
- * POST 请求(自定义响应字段)
137
- */
138
- protected postWithResponseKey<T>(path: string, responseKey: string, body?: unknown, options?: ServiceRequestOptions<T>): Promise<T>;
139
- /**
140
- * 执行请求
141
- */
142
- private doRequest;
143
- /**
144
- * 上传文件
145
- */
146
- protected upload<T>(path: string, options: UploadOptions<T>): Promise<T>;
147
- /**
148
- * 下载文件
149
- */
150
- protected download(path: string, options?: DownloadOptions): Promise<ArrayBuffer>;
151
- /**
152
- * 下载文件(流式)
153
- */
154
- protected downloadStream(path: string, options?: DownloadOptions): Promise<ReadableStream<Uint8Array>>;
155
- }
156
- //# sourceMappingURL=base-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-service.d.ts","sourceRoot":"","sources":["../../src/core/base-service.ts"],"names":[],"mappings":"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"}