meeglesdk 0.1.0

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 +191 -0
  2. package/dist/client.d.ts +186 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +197 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/core/base-service.d.ts +156 -0
  7. package/dist/core/base-service.d.ts.map +1 -0
  8. package/dist/core/base-service.js +240 -0
  9. package/dist/core/base-service.js.map +1 -0
  10. package/dist/core/errors.d.ts +181 -0
  11. package/dist/core/errors.d.ts.map +1 -0
  12. package/dist/core/errors.js +250 -0
  13. package/dist/core/errors.js.map +1 -0
  14. package/dist/core/rate-limiter.d.ts +72 -0
  15. package/dist/core/rate-limiter.d.ts.map +1 -0
  16. package/dist/core/rate-limiter.js +269 -0
  17. package/dist/core/rate-limiter.js.map +1 -0
  18. package/dist/core/request.d.ts +270 -0
  19. package/dist/core/request.d.ts.map +1 -0
  20. package/dist/core/request.js +842 -0
  21. package/dist/core/request.js.map +1 -0
  22. package/dist/core/token-manager.d.ts +134 -0
  23. package/dist/core/token-manager.d.ts.map +1 -0
  24. package/dist/core/token-manager.js +412 -0
  25. package/dist/core/token-manager.js.map +1 -0
  26. package/dist/helpers/auth.d.ts +7 -0
  27. package/dist/helpers/auth.d.ts.map +1 -0
  28. package/dist/helpers/auth.js +19 -0
  29. package/dist/helpers/auth.js.map +1 -0
  30. package/dist/index.d.ts +72 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +61 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/service/auth/index.d.ts +96 -0
  35. package/dist/service/auth/index.d.ts.map +1 -0
  36. package/dist/service/auth/index.js +163 -0
  37. package/dist/service/auth/index.js.map +1 -0
  38. package/dist/service/config/basic.d.ts +37 -0
  39. package/dist/service/config/basic.d.ts.map +1 -0
  40. package/dist/service/config/basic.js +54 -0
  41. package/dist/service/config/basic.js.map +1 -0
  42. package/dist/service/config/config.d.ts +27 -0
  43. package/dist/service/config/config.d.ts.map +1 -0
  44. package/dist/service/config/config.js +34 -0
  45. package/dist/service/config/config.js.map +1 -0
  46. package/dist/service/config/field.d.ts +50 -0
  47. package/dist/service/config/field.d.ts.map +1 -0
  48. package/dist/service/config/field.js +74 -0
  49. package/dist/service/config/field.js.map +1 -0
  50. package/dist/service/config/relation.d.ts +53 -0
  51. package/dist/service/config/relation.d.ts.map +1 -0
  52. package/dist/service/config/relation.js +66 -0
  53. package/dist/service/config/relation.js.map +1 -0
  54. package/dist/service/config/resource.d.ts +59 -0
  55. package/dist/service/config/resource.d.ts.map +1 -0
  56. package/dist/service/config/resource.js +75 -0
  57. package/dist/service/config/resource.js.map +1 -0
  58. package/dist/service/config/role.d.ts +55 -0
  59. package/dist/service/config/role.d.ts.map +1 -0
  60. package/dist/service/config/role.js +90 -0
  61. package/dist/service/config/role.js.map +1 -0
  62. package/dist/service/config/template.d.ts +65 -0
  63. package/dist/service/config/template.d.ts.map +1 -0
  64. package/dist/service/config/template.js +95 -0
  65. package/dist/service/config/template.js.map +1 -0
  66. package/dist/service/measure/index.d.ts +26 -0
  67. package/dist/service/measure/index.d.ts.map +1 -0
  68. package/dist/service/measure/index.js +36 -0
  69. package/dist/service/measure/index.js.map +1 -0
  70. package/dist/service/measure/query.d.ts +56 -0
  71. package/dist/service/measure/query.d.ts.map +1 -0
  72. package/dist/service/measure/query.js +86 -0
  73. package/dist/service/measure/query.js.map +1 -0
  74. package/dist/service/space/relation.d.ts +63 -0
  75. package/dist/service/space/relation.d.ts.map +1 -0
  76. package/dist/service/space/relation.js +102 -0
  77. package/dist/service/space/relation.js.map +1 -0
  78. package/dist/service/space/space.d.ts +81 -0
  79. package/dist/service/space/space.d.ts.map +1 -0
  80. package/dist/service/space/space.js +110 -0
  81. package/dist/service/space/space.js.map +1 -0
  82. package/dist/service/tenant/tenant.d.ts +52 -0
  83. package/dist/service/tenant/tenant.d.ts.map +1 -0
  84. package/dist/service/tenant/tenant.js +75 -0
  85. package/dist/service/tenant/tenant.js.map +1 -0
  86. package/dist/service/user/group.d.ts +47 -0
  87. package/dist/service/user/group.d.ts.map +1 -0
  88. package/dist/service/user/group.js +70 -0
  89. package/dist/service/user/group.js.map +1 -0
  90. package/dist/service/user/query.d.ts +25 -0
  91. package/dist/service/user/query.d.ts.map +1 -0
  92. package/dist/service/user/query.js +26 -0
  93. package/dist/service/user/query.js.map +1 -0
  94. package/dist/service/user/search.d.ts +25 -0
  95. package/dist/service/user/search.d.ts.map +1 -0
  96. package/dist/service/user/search.js +26 -0
  97. package/dist/service/user/search.js.map +1 -0
  98. package/dist/service/user/user.d.ts +37 -0
  99. package/dist/service/user/user.d.ts.map +1 -0
  100. package/dist/service/user/user.js +46 -0
  101. package/dist/service/user/user.js.map +1 -0
  102. package/dist/service/view/query.d.ts +52 -0
  103. package/dist/service/view/query.d.ts.map +1 -0
  104. package/dist/service/view/query.js +76 -0
  105. package/dist/service/view/query.js.map +1 -0
  106. package/dist/service/view/view.d.ts +76 -0
  107. package/dist/service/view/view.d.ts.map +1 -0
  108. package/dist/service/view/view.js +108 -0
  109. package/dist/service/view/view.js.map +1 -0
  110. package/dist/service/workitem/attachment.d.ts +143 -0
  111. package/dist/service/workitem/attachment.d.ts.map +1 -0
  112. package/dist/service/workitem/attachment.js +231 -0
  113. package/dist/service/workitem/attachment.js.map +1 -0
  114. package/dist/service/workitem/batch.d.ts +135 -0
  115. package/dist/service/workitem/batch.d.ts.map +1 -0
  116. package/dist/service/workitem/batch.js +146 -0
  117. package/dist/service/workitem/batch.js.map +1 -0
  118. package/dist/service/workitem/chat.d.ts +42 -0
  119. package/dist/service/workitem/chat.d.ts.map +1 -0
  120. package/dist/service/workitem/chat.js +50 -0
  121. package/dist/service/workitem/chat.js.map +1 -0
  122. package/dist/service/workitem/comment.d.ts +139 -0
  123. package/dist/service/workitem/comment.d.ts.map +1 -0
  124. package/dist/service/workitem/comment.js +180 -0
  125. package/dist/service/workitem/comment.js.map +1 -0
  126. package/dist/service/workitem/review.d.ts +44 -0
  127. package/dist/service/workitem/review.d.ts.map +1 -0
  128. package/dist/service/workitem/review.js +49 -0
  129. package/dist/service/workitem/review.js.map +1 -0
  130. package/dist/service/workitem/search.d.ts +213 -0
  131. package/dist/service/workitem/search.d.ts.map +1 -0
  132. package/dist/service/workitem/search.js +242 -0
  133. package/dist/service/workitem/search.js.map +1 -0
  134. package/dist/service/workitem/subtask.d.ts +193 -0
  135. package/dist/service/workitem/subtask.d.ts.map +1 -0
  136. package/dist/service/workitem/subtask.js +247 -0
  137. package/dist/service/workitem/subtask.js.map +1 -0
  138. package/dist/service/workitem/workItem.d.ts +225 -0
  139. package/dist/service/workitem/workItem.d.ts.map +1 -0
  140. package/dist/service/workitem/workItem.js +310 -0
  141. package/dist/service/workitem/workItem.js.map +1 -0
  142. package/dist/service/workitem/workflow.d.ts +214 -0
  143. package/dist/service/workitem/workflow.d.ts.map +1 -0
  144. package/dist/service/workitem/workflow.js +281 -0
  145. package/dist/service/workitem/workflow.js.map +1 -0
  146. package/dist/service/workitem/workhour.d.ts +63 -0
  147. package/dist/service/workitem/workhour.d.ts.map +1 -0
  148. package/dist/service/workitem/workhour.js +93 -0
  149. package/dist/service/workitem/workhour.js.map +1 -0
  150. package/dist/types/auth.d.ts +115 -0
  151. package/dist/types/auth.d.ts.map +1 -0
  152. package/dist/types/auth.js +6 -0
  153. package/dist/types/auth.js.map +1 -0
  154. package/dist/types/common.d.ts +354 -0
  155. package/dist/types/common.d.ts.map +1 -0
  156. package/dist/types/common.js +14 -0
  157. package/dist/types/common.js.map +1 -0
  158. package/dist/types/config.d.ts +305 -0
  159. package/dist/types/config.d.ts.map +1 -0
  160. package/dist/types/config.js +6 -0
  161. package/dist/types/config.js.map +1 -0
  162. package/dist/types/index.d.ts +13 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +13 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/types/measure.d.ts +55 -0
  167. package/dist/types/measure.d.ts.map +1 -0
  168. package/dist/types/measure.js +6 -0
  169. package/dist/types/measure.js.map +1 -0
  170. package/dist/types/space.d.ts +164 -0
  171. package/dist/types/space.d.ts.map +1 -0
  172. package/dist/types/space.js +6 -0
  173. package/dist/types/space.js.map +1 -0
  174. package/dist/types/tenant.d.ts +106 -0
  175. package/dist/types/tenant.d.ts.map +1 -0
  176. package/dist/types/tenant.js +6 -0
  177. package/dist/types/tenant.js.map +1 -0
  178. package/dist/types/user.d.ts +110 -0
  179. package/dist/types/user.d.ts.map +1 -0
  180. package/dist/types/user.js +6 -0
  181. package/dist/types/user.js.map +1 -0
  182. package/dist/types/view.d.ts +162 -0
  183. package/dist/types/view.d.ts.map +1 -0
  184. package/dist/types/view.js +6 -0
  185. package/dist/types/view.js.map +1 -0
  186. package/dist/types/workitem.d.ts +1523 -0
  187. package/dist/types/workitem.d.ts.map +1 -0
  188. package/dist/types/workitem.js +6 -0
  189. package/dist/types/workitem.js.map +1 -0
  190. package/package.json +43 -0
@@ -0,0 +1,270 @@
1
+ /**
2
+ * HTTP 请求处理器
3
+ * 100% 参考 Meego API 文档
4
+ *
5
+ * 请求头规范:
6
+ * - Content-Type: application/json
7
+ * - X-Plugin-Token: {plugin_access_token | user_access_token}
8
+ * - X-User-Key: {user_key} (使用 plugin_token 时必须)
9
+ * - X-IDEM-UUID: {unique-id} (幂等标识,可选)
10
+ */
11
+ import type { Logger, PaginatedResult, PaginatedObjectResult } from '../types/common.js';
12
+ import type { TokenManager } from './token-manager.js';
13
+ import type { RateLimitConfig } from './rate-limiter.js';
14
+ /** 请求方法 */
15
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
16
+ /** 认证上下文(每个请求可独立指定) */
17
+ export type AuthContext = {
18
+ type: 'user';
19
+ token: string;
20
+ } | {
21
+ type: 'plugin';
22
+ token?: string;
23
+ userKey?: string;
24
+ } | {
25
+ type: 'auto';
26
+ userKey?: string;
27
+ };
28
+ /** 响应数据校验器 */
29
+ export type ResponseValidator<T> = (data: unknown) => data is T;
30
+ /** 基础请求配置(不含响应验证器) */
31
+ interface BaseRequestConfig {
32
+ /** HTTP 方法 */
33
+ method: HttpMethod;
34
+ /** API 路径(可包含路径参数如 :project_key) */
35
+ path: string;
36
+ /** 路径参数 */
37
+ pathParams?: Record<string, string>;
38
+ /** 查询参数 */
39
+ query?: Record<string, unknown>;
40
+ /** 请求体 */
41
+ body?: unknown;
42
+ /** 认证上下文(推荐显式传入) */
43
+ auth?: AuthContext;
44
+ /** 幂等键(可选) */
45
+ idempotencyKey?: string;
46
+ /** 请求超时(毫秒) */
47
+ timeout?: number;
48
+ /** 取消信号 */
49
+ signal?: AbortSignal;
50
+ /** 是否跳过重试 */
51
+ skipRetry?: boolean;
52
+ /** 重试配置(可选,覆盖默认配置) */
53
+ retry?: Partial<RetryConfig>;
54
+ }
55
+ /** 请求配置 */
56
+ export interface RequestConfig<T = unknown> extends BaseRequestConfig {
57
+ /** 响应数据校验(可选) */
58
+ responseValidator?: ResponseValidator<T>;
59
+ }
60
+ /** 文件上传配置 */
61
+ export interface UploadConfig<T = unknown> {
62
+ /** API 路径(可包含路径参数如 :project_key) */
63
+ path: string;
64
+ /** 路径参数 */
65
+ pathParams?: Record<string, string>;
66
+ /** 文件数据 (Blob/File/Buffer) */
67
+ file: Blob | File | Buffer;
68
+ /** 文件名 */
69
+ fileName: string;
70
+ /** 表单字段名(默认 'file') */
71
+ fieldName?: string;
72
+ /** 额外的表单字段 */
73
+ formFields?: Record<string, string>;
74
+ /** 认证上下文 */
75
+ auth?: AuthContext;
76
+ /** 请求超时(毫秒) */
77
+ timeout?: number;
78
+ /** 上传文件大小上限(字节),默认 100,000,000 */
79
+ maxUploadSizeBytes?: number;
80
+ /** 上传文件大小下限(字节),默认 1(禁止空文件) */
81
+ minUploadSizeBytes?: number;
82
+ /** 是否跳过重试 */
83
+ skipRetry?: boolean;
84
+ /** 重试配置(可选,覆盖默认配置) */
85
+ retry?: Partial<RetryConfig>;
86
+ /** 响应数据校验(可选) */
87
+ responseValidator?: ResponseValidator<T>;
88
+ }
89
+ /** 文件下载配置 */
90
+ export interface DownloadConfig {
91
+ /** API 路径 */
92
+ path: string;
93
+ /** 路径参数 */
94
+ pathParams?: Record<string, string>;
95
+ /** 请求体 */
96
+ body?: unknown;
97
+ /** 认证上下文 */
98
+ auth?: AuthContext;
99
+ /** 请求超时(毫秒) */
100
+ timeout?: number;
101
+ /** 取消信号 */
102
+ signal?: AbortSignal;
103
+ /** 下载进度回调 */
104
+ onProgress?: (progress: DownloadProgress) => void;
105
+ /** 分块回调(流式下载时可用于写文件) */
106
+ onChunk?: (chunk: Uint8Array, progress: DownloadProgress) => void;
107
+ /** 是否跳过重试 */
108
+ skipRetry?: boolean;
109
+ /** 重试配置(可选,覆盖默认配置) */
110
+ retry?: Partial<RetryConfig>;
111
+ }
112
+ /** 下载进度 */
113
+ export interface DownloadProgress {
114
+ /** 已接收字节数 */
115
+ receivedBytes: number;
116
+ /** 总字节数(如响应头中包含 content-length) */
117
+ totalBytes?: number;
118
+ /** 进度 (0-1),仅在 totalBytes 可用时计算 */
119
+ progress?: number;
120
+ }
121
+ /** 重试配置 */
122
+ export interface RetryConfig {
123
+ /** 最大重试次数 */
124
+ maxRetries: number;
125
+ /** 初始重试延迟(毫秒) */
126
+ retryDelay: number;
127
+ /** 最大重试延迟(毫秒,默认 30000) */
128
+ maxRetryDelay?: number;
129
+ /** 可重试的错误码 */
130
+ retryableErrorCodes: number[];
131
+ }
132
+ /** 请求处理器选项 */
133
+ export interface RequestHandlerOptions {
134
+ /** API 基础 URL */
135
+ baseURL: string;
136
+ /** Token 管理器 */
137
+ tokenManager: TokenManager;
138
+ /** Logger */
139
+ logger: Logger;
140
+ /** 默认超时(毫秒) */
141
+ timeout?: number;
142
+ /** 重试配置 */
143
+ retry?: Partial<RetryConfig>;
144
+ /** 本地限流(可选) */
145
+ rateLimit?: RateLimitConfig;
146
+ }
147
+ export declare class RequestHandler {
148
+ private readonly baseURL;
149
+ private readonly tokenManager;
150
+ private readonly logger;
151
+ private readonly timeout;
152
+ private readonly retryConfig;
153
+ private readonly rateLimitManager?;
154
+ constructor(options: RequestHandlerOptions);
155
+ /**
156
+ * 发送请求
157
+ */
158
+ request<T>(config: RequestConfig<T>): Promise<T>;
159
+ /**
160
+ * 发送分页请求
161
+ * 用于 pagination 与 data 同级的接口(如子任务搜索)
162
+ */
163
+ requestPaginated<T>(config: RequestConfig<T>): Promise<PaginatedResult<T>>;
164
+ /**
165
+ * 发送请求(自定义响应字段)
166
+ * 用于响应数据字段不是 data 的接口
167
+ */
168
+ requestWithResponseKey<T>(config: RequestConfig<T>, responseKey: string): Promise<T>;
169
+ /**
170
+ * 发送分页请求(data 为对象,pagination 与 data 同级)
171
+ */
172
+ requestWithPagination<T>(config: RequestConfig<T>): Promise<PaginatedObjectResult<T>>;
173
+ /**
174
+ * 构建请求头
175
+ */
176
+ private buildHeaders;
177
+ /**
178
+ * 解析路径参数
179
+ * 例如: /open_api/:project_key/work_item -> /open_api/my-project/work_item
180
+ */
181
+ private resolvePath;
182
+ private validatePathParams;
183
+ /**
184
+ * 构建查询字符串
185
+ */
186
+ private buildQueryString;
187
+ /**
188
+ * 判断是否应该重试
189
+ */
190
+ private shouldRetry;
191
+ /**
192
+ * 睡眠
193
+ */
194
+ private sleep;
195
+ /**
196
+ * 安全解析 JSON,将大整数转换为字符串
197
+ * 解决 JavaScript Number 无法精确表示超过 2^53-1 的整数问题
198
+ *
199
+ * 处理场景:
200
+ * - 对象属性值: {"id": 1234567890123456789}
201
+ * - 数组元素: [1234567890123456789]
202
+ * - 嵌套数组: [[1234567890123456789]]
203
+ * - 负数大整数: -1234567890123456789
204
+ */
205
+ private parseJsonSafely;
206
+ private getUploadFileSize;
207
+ /**
208
+ * 上传文件
209
+ * 使用 multipart/form-data 格式
210
+ */
211
+ upload<T>(config: UploadConfig<T>): Promise<T>;
212
+ /**
213
+ * 下载文件
214
+ * 返回二进制数据 (ArrayBuffer)
215
+ */
216
+ download(config: DownloadConfig): Promise<ArrayBuffer>;
217
+ /**
218
+ * 下载文件(流式)
219
+ * 返回 ReadableStream<Uint8Array>
220
+ */
221
+ downloadStream(config: DownloadConfig): Promise<ReadableStream<Uint8Array>>;
222
+ /**
223
+ * 构建文件上传请求头 (不包含 Content-Type)
224
+ */
225
+ private buildHeadersForUpload;
226
+ /**
227
+ * 构建鉴权请求头
228
+ */
229
+ private buildAuthHeaders;
230
+ /**
231
+ * 构建请求上下文
232
+ */
233
+ private prepareRequest;
234
+ /**
235
+ * 执行带重试的请求
236
+ * @param config 基础请求配置(不含 responseValidator)
237
+ * @param executor 执行器函数,负责实际的请求解析
238
+ */
239
+ private executeWithRetry;
240
+ private executeWithRetryContext;
241
+ private resolveRetryConfig;
242
+ /**
243
+ * 执行单次请求(统一超时与错误处理)
244
+ */
245
+ private executeOnce;
246
+ /**
247
+ * 解析通用响应包裹
248
+ */
249
+ private parseEnvelope;
250
+ private validateResponse;
251
+ /**
252
+ * 验证数组响应的每个元素
253
+ * 用于分页响应,将单元素验证器应用于数组中的每个元素
254
+ */
255
+ private validateArrayResponse;
256
+ private parseDataResponse;
257
+ private parsePaginatedResponse;
258
+ private parsePaginatedObjectResponse;
259
+ private parseResponseKeyResponse;
260
+ private parseDownloadResponse;
261
+ private parseDownloadStreamResponse;
262
+ private getContentLength;
263
+ private buildDownloadProgress;
264
+ private emitDownloadProgress;
265
+ private readStreamToArrayBuffer;
266
+ private wrapStreamWithProgress;
267
+ private buildUrlWithResolvedPath;
268
+ }
269
+ export {};
270
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/core/request.ts"],"names":[],"mappings":"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"}