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.
- package/README.md +191 -0
- package/dist/client.d.ts +186 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +197 -0
- package/dist/client.js.map +1 -0
- package/dist/core/base-service.d.ts +156 -0
- package/dist/core/base-service.d.ts.map +1 -0
- package/dist/core/base-service.js +240 -0
- package/dist/core/base-service.js.map +1 -0
- package/dist/core/errors.d.ts +181 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +250 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +72 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +269 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/dist/core/request.d.ts +270 -0
- package/dist/core/request.d.ts.map +1 -0
- package/dist/core/request.js +842 -0
- package/dist/core/request.js.map +1 -0
- package/dist/core/token-manager.d.ts +134 -0
- package/dist/core/token-manager.d.ts.map +1 -0
- package/dist/core/token-manager.js +412 -0
- package/dist/core/token-manager.js.map +1 -0
- package/dist/helpers/auth.d.ts +7 -0
- package/dist/helpers/auth.d.ts.map +1 -0
- package/dist/helpers/auth.js +19 -0
- package/dist/helpers/auth.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/service/auth/index.d.ts +96 -0
- package/dist/service/auth/index.d.ts.map +1 -0
- package/dist/service/auth/index.js +163 -0
- package/dist/service/auth/index.js.map +1 -0
- package/dist/service/config/basic.d.ts +37 -0
- package/dist/service/config/basic.d.ts.map +1 -0
- package/dist/service/config/basic.js +54 -0
- package/dist/service/config/basic.js.map +1 -0
- package/dist/service/config/config.d.ts +27 -0
- package/dist/service/config/config.d.ts.map +1 -0
- package/dist/service/config/config.js +34 -0
- package/dist/service/config/config.js.map +1 -0
- package/dist/service/config/field.d.ts +50 -0
- package/dist/service/config/field.d.ts.map +1 -0
- package/dist/service/config/field.js +74 -0
- package/dist/service/config/field.js.map +1 -0
- package/dist/service/config/relation.d.ts +53 -0
- package/dist/service/config/relation.d.ts.map +1 -0
- package/dist/service/config/relation.js +66 -0
- package/dist/service/config/relation.js.map +1 -0
- package/dist/service/config/resource.d.ts +59 -0
- package/dist/service/config/resource.d.ts.map +1 -0
- package/dist/service/config/resource.js +75 -0
- package/dist/service/config/resource.js.map +1 -0
- package/dist/service/config/role.d.ts +55 -0
- package/dist/service/config/role.d.ts.map +1 -0
- package/dist/service/config/role.js +90 -0
- package/dist/service/config/role.js.map +1 -0
- package/dist/service/config/template.d.ts +65 -0
- package/dist/service/config/template.d.ts.map +1 -0
- package/dist/service/config/template.js +95 -0
- package/dist/service/config/template.js.map +1 -0
- package/dist/service/measure/index.d.ts +26 -0
- package/dist/service/measure/index.d.ts.map +1 -0
- package/dist/service/measure/index.js +36 -0
- package/dist/service/measure/index.js.map +1 -0
- package/dist/service/measure/query.d.ts +56 -0
- package/dist/service/measure/query.d.ts.map +1 -0
- package/dist/service/measure/query.js +86 -0
- package/dist/service/measure/query.js.map +1 -0
- package/dist/service/space/relation.d.ts +63 -0
- package/dist/service/space/relation.d.ts.map +1 -0
- package/dist/service/space/relation.js +102 -0
- package/dist/service/space/relation.js.map +1 -0
- package/dist/service/space/space.d.ts +81 -0
- package/dist/service/space/space.d.ts.map +1 -0
- package/dist/service/space/space.js +110 -0
- package/dist/service/space/space.js.map +1 -0
- package/dist/service/tenant/tenant.d.ts +52 -0
- package/dist/service/tenant/tenant.d.ts.map +1 -0
- package/dist/service/tenant/tenant.js +75 -0
- package/dist/service/tenant/tenant.js.map +1 -0
- package/dist/service/user/group.d.ts +47 -0
- package/dist/service/user/group.d.ts.map +1 -0
- package/dist/service/user/group.js +70 -0
- package/dist/service/user/group.js.map +1 -0
- package/dist/service/user/query.d.ts +25 -0
- package/dist/service/user/query.d.ts.map +1 -0
- package/dist/service/user/query.js +26 -0
- package/dist/service/user/query.js.map +1 -0
- package/dist/service/user/search.d.ts +25 -0
- package/dist/service/user/search.d.ts.map +1 -0
- package/dist/service/user/search.js +26 -0
- package/dist/service/user/search.js.map +1 -0
- package/dist/service/user/user.d.ts +37 -0
- package/dist/service/user/user.d.ts.map +1 -0
- package/dist/service/user/user.js +46 -0
- package/dist/service/user/user.js.map +1 -0
- package/dist/service/view/query.d.ts +52 -0
- package/dist/service/view/query.d.ts.map +1 -0
- package/dist/service/view/query.js +76 -0
- package/dist/service/view/query.js.map +1 -0
- package/dist/service/view/view.d.ts +76 -0
- package/dist/service/view/view.d.ts.map +1 -0
- package/dist/service/view/view.js +108 -0
- package/dist/service/view/view.js.map +1 -0
- package/dist/service/workitem/attachment.d.ts +143 -0
- package/dist/service/workitem/attachment.d.ts.map +1 -0
- package/dist/service/workitem/attachment.js +231 -0
- package/dist/service/workitem/attachment.js.map +1 -0
- package/dist/service/workitem/batch.d.ts +135 -0
- package/dist/service/workitem/batch.d.ts.map +1 -0
- package/dist/service/workitem/batch.js +146 -0
- package/dist/service/workitem/batch.js.map +1 -0
- package/dist/service/workitem/chat.d.ts +42 -0
- package/dist/service/workitem/chat.d.ts.map +1 -0
- package/dist/service/workitem/chat.js +50 -0
- package/dist/service/workitem/chat.js.map +1 -0
- package/dist/service/workitem/comment.d.ts +139 -0
- package/dist/service/workitem/comment.d.ts.map +1 -0
- package/dist/service/workitem/comment.js +180 -0
- package/dist/service/workitem/comment.js.map +1 -0
- package/dist/service/workitem/review.d.ts +44 -0
- package/dist/service/workitem/review.d.ts.map +1 -0
- package/dist/service/workitem/review.js +49 -0
- package/dist/service/workitem/review.js.map +1 -0
- package/dist/service/workitem/search.d.ts +213 -0
- package/dist/service/workitem/search.d.ts.map +1 -0
- package/dist/service/workitem/search.js +242 -0
- package/dist/service/workitem/search.js.map +1 -0
- package/dist/service/workitem/subtask.d.ts +193 -0
- package/dist/service/workitem/subtask.d.ts.map +1 -0
- package/dist/service/workitem/subtask.js +247 -0
- package/dist/service/workitem/subtask.js.map +1 -0
- package/dist/service/workitem/workItem.d.ts +225 -0
- package/dist/service/workitem/workItem.d.ts.map +1 -0
- package/dist/service/workitem/workItem.js +310 -0
- package/dist/service/workitem/workItem.js.map +1 -0
- package/dist/service/workitem/workflow.d.ts +214 -0
- package/dist/service/workitem/workflow.d.ts.map +1 -0
- package/dist/service/workitem/workflow.js +281 -0
- package/dist/service/workitem/workflow.js.map +1 -0
- package/dist/service/workitem/workhour.d.ts +63 -0
- package/dist/service/workitem/workhour.d.ts.map +1 -0
- package/dist/service/workitem/workhour.js +93 -0
- package/dist/service/workitem/workhour.js.map +1 -0
- package/dist/types/auth.d.ts +115 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +6 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/common.d.ts +354 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +14 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/config.d.ts +305 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +13 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/measure.d.ts +55 -0
- package/dist/types/measure.d.ts.map +1 -0
- package/dist/types/measure.js +6 -0
- package/dist/types/measure.js.map +1 -0
- package/dist/types/space.d.ts +164 -0
- package/dist/types/space.d.ts.map +1 -0
- package/dist/types/space.js +6 -0
- package/dist/types/space.js.map +1 -0
- package/dist/types/tenant.d.ts +106 -0
- package/dist/types/tenant.d.ts.map +1 -0
- package/dist/types/tenant.js +6 -0
- package/dist/types/tenant.js.map +1 -0
- package/dist/types/user.d.ts +110 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +6 -0
- package/dist/types/user.js.map +1 -0
- package/dist/types/view.d.ts +162 -0
- package/dist/types/view.d.ts.map +1 -0
- package/dist/types/view.js +6 -0
- package/dist/types/view.js.map +1 -0
- package/dist/types/workitem.d.ts +1523 -0
- package/dist/types/workitem.d.ts.map +1 -0
- package/dist/types/workitem.js +6 -0
- package/dist/types/workitem.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 视图查询服务
|
|
3
|
+
* 100% 参考 Meego API 文档
|
|
4
|
+
*/
|
|
5
|
+
import { BaseService } from '../../core/base-service.js';
|
|
6
|
+
/** API 路径 */
|
|
7
|
+
export const API_PATHS = {
|
|
8
|
+
/** 获取视图列表及配置信息 */
|
|
9
|
+
VIEW_CONF_LIST: '/open_api/:project_key/view_conf/list',
|
|
10
|
+
/** 获取固定视图下工作项列表 */
|
|
11
|
+
FIX_VIEW: '/open_api/:project_key/fix_view/:view_id',
|
|
12
|
+
/** 获取全景视图下工作项列表 */
|
|
13
|
+
VIEW_PANORAMIC: '/open_api/:project_key/view/:view_id',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* 视图查询服务
|
|
17
|
+
*/
|
|
18
|
+
export class ViewQueryService extends BaseService {
|
|
19
|
+
/**
|
|
20
|
+
* 获取视图列表及配置信息
|
|
21
|
+
*
|
|
22
|
+
* @param projectKey 空间 ID 或域名
|
|
23
|
+
* @param request 查询请求
|
|
24
|
+
* @param options 请求选项
|
|
25
|
+
* @returns 分页的视图配置列表
|
|
26
|
+
*/
|
|
27
|
+
async listConfigs(projectKey, request, options) {
|
|
28
|
+
return this.postPaginated(API_PATHS.VIEW_CONF_LIST, request, {
|
|
29
|
+
...options,
|
|
30
|
+
pathParams: {
|
|
31
|
+
project_key: projectKey,
|
|
32
|
+
...options?.pathParams,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 获取固定视图下工作项列表
|
|
38
|
+
*
|
|
39
|
+
* @param projectKey 空间 ID 或域名
|
|
40
|
+
* @param viewId 视图 ID
|
|
41
|
+
* @param query 查询参数
|
|
42
|
+
* @param options 请求选项
|
|
43
|
+
* @returns 固定视图信息及分页信息
|
|
44
|
+
*/
|
|
45
|
+
async getFixViewItems(projectKey, viewId, query, options) {
|
|
46
|
+
return this.getWithPagination(API_PATHS.FIX_VIEW, {
|
|
47
|
+
...options,
|
|
48
|
+
pathParams: {
|
|
49
|
+
project_key: projectKey,
|
|
50
|
+
view_id: viewId,
|
|
51
|
+
...options?.pathParams,
|
|
52
|
+
},
|
|
53
|
+
query: query ? { ...query } : undefined,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 获取全景视图下工作项列表
|
|
58
|
+
*
|
|
59
|
+
* @param projectKey 空间 ID 或域名
|
|
60
|
+
* @param viewId 全景视图 ID
|
|
61
|
+
* @param request 查询请求
|
|
62
|
+
* @param options 请求选项
|
|
63
|
+
* @returns 分页的工作项列表
|
|
64
|
+
*/
|
|
65
|
+
async listPanoramicItems(projectKey, viewId, request, options) {
|
|
66
|
+
return this.postPaginated(API_PATHS.VIEW_PANORAMIC, request ?? {}, {
|
|
67
|
+
...options,
|
|
68
|
+
pathParams: {
|
|
69
|
+
project_key: projectKey,
|
|
70
|
+
view_id: viewId,
|
|
71
|
+
...options?.pathParams,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/service/view/query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AAWrF,aAAa;AACb,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,kBAAkB;IAClB,cAAc,EAAE,uCAAuC;IACvD,mBAAmB;IACnB,QAAQ,EAAE,0CAA0C;IACpD,mBAAmB;IACnB,cAAc,EAAE,sCAAsC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAC/C;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,OAA4B,EAC5B,OAA6C;QAE7C,OAAO,IAAI,CAAC,aAAa,CAAe,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE;YACzE,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,eAAe,CACnB,UAAkB,EAClB,MAAc,EACd,KAA0B,EAC1B,OAA4C;QAE5C,OAAO,IAAI,CAAC,iBAAiB,CAAc,SAAS,CAAC,QAAQ,EAAE;YAC7D,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,GAAG,OAAO,EAAE,UAAU;aACvB;YACD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CACtB,UAAkB,EAClB,MAAc,EACd,OAAkC,EAClC,OAAyC;QAEzC,OAAO,IAAI,CAAC,aAAa,CAAW,SAAS,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,EAAE;YAC3E,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 视图服务
|
|
3
|
+
* 100% 参考 Meego API 文档
|
|
4
|
+
*
|
|
5
|
+
* 提供固定视图、条件视图的创建、更新与删除能力
|
|
6
|
+
*/
|
|
7
|
+
import type { RequestHandler } from '../../core/request.js';
|
|
8
|
+
import { BaseService, type ServiceRequestOptions } from '../../core/base-service.js';
|
|
9
|
+
import type { PaginatedObjectResult } from '../../types/common.js';
|
|
10
|
+
import type { CreateFixViewRequest, UpdateFixViewRequest, CreateConditionViewRequest, UpdateConditionViewRequest, CreateConditionViewResponse, FixViewInfo } from '../../types/view.js';
|
|
11
|
+
import { ViewQueryService } from './query.js';
|
|
12
|
+
/** API 路径 */
|
|
13
|
+
export declare const API_PATHS: {
|
|
14
|
+
/** 创建固定视图 */
|
|
15
|
+
CREATE_FIX_VIEW: string;
|
|
16
|
+
/** 更新固定视图 */
|
|
17
|
+
UPDATE_FIX_VIEW: string;
|
|
18
|
+
/** 删除视图 */
|
|
19
|
+
DELETE_VIEW: string;
|
|
20
|
+
/** 创建条件视图 */
|
|
21
|
+
CREATE_CONDITION_VIEW: string;
|
|
22
|
+
/** 更新条件视图 */
|
|
23
|
+
UPDATE_CONDITION_VIEW: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* 视图服务
|
|
27
|
+
*/
|
|
28
|
+
export declare class ViewService extends BaseService {
|
|
29
|
+
/** 查询服务 */
|
|
30
|
+
readonly query: ViewQueryService;
|
|
31
|
+
constructor(requestHandler: RequestHandler);
|
|
32
|
+
/**
|
|
33
|
+
* 创建固定视图
|
|
34
|
+
*
|
|
35
|
+
* @param projectKey 空间 ID 或域名
|
|
36
|
+
* @param workItemTypeKey 工作项类型 key
|
|
37
|
+
* @param request 创建请求
|
|
38
|
+
* @param options 请求选项
|
|
39
|
+
* @returns 新创建的固定视图信息与分页信息
|
|
40
|
+
*/
|
|
41
|
+
createFixView(projectKey: string, workItemTypeKey: string, request: CreateFixViewRequest, options?: ServiceRequestOptions<FixViewInfo>): Promise<PaginatedObjectResult<FixViewInfo>>;
|
|
42
|
+
/**
|
|
43
|
+
* 更新固定视图
|
|
44
|
+
*
|
|
45
|
+
* @param projectKey 空间 ID 或域名
|
|
46
|
+
* @param workItemTypeKey 工作项类型 key
|
|
47
|
+
* @param viewId 视图 ID
|
|
48
|
+
* @param request 更新请求
|
|
49
|
+
* @param options 请求选项
|
|
50
|
+
*/
|
|
51
|
+
updateFixView(projectKey: string, workItemTypeKey: string, viewId: string, request: UpdateFixViewRequest, options?: ServiceRequestOptions<void>): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* 删除视图
|
|
54
|
+
*
|
|
55
|
+
* @param projectKey 空间 ID 或域名
|
|
56
|
+
* @param viewId 视图 ID
|
|
57
|
+
* @param options 请求选项
|
|
58
|
+
*/
|
|
59
|
+
deleteView(projectKey: string, viewId: string, options?: ServiceRequestOptions<void>): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* 创建条件视图
|
|
62
|
+
*
|
|
63
|
+
* @param request 创建请求
|
|
64
|
+
* @param options 请求选项
|
|
65
|
+
* @returns 新创建视图 ID
|
|
66
|
+
*/
|
|
67
|
+
createConditionView(request: CreateConditionViewRequest, options?: ServiceRequestOptions<CreateConditionViewResponse>): Promise<CreateConditionViewResponse>;
|
|
68
|
+
/**
|
|
69
|
+
* 更新条件视图
|
|
70
|
+
*
|
|
71
|
+
* @param request 更新请求
|
|
72
|
+
* @param options 请求选项
|
|
73
|
+
*/
|
|
74
|
+
updateConditionView(request: UpdateConditionViewRequest, options?: ServiceRequestOptions<void>): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/service/view/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC3B,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,aAAa;AACb,eAAO,MAAM,SAAS;IACpB,aAAa;;IAEb,aAAa;;IAEb,WAAW;;IAEX,aAAa;;IAEb,aAAa;;CAEd,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C,WAAW;IACX,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;gBAErB,cAAc,EAAE,cAAc;IAK1C;;;;;;;;OAQG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,qBAAqB,CAAC,WAAW,CAAC,GAC3C,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAW9C;;;;;;;;OAQG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;OAMG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;;OAMG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,EACnC,OAAO,CAAC,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,GAC3D,OAAO,CAAC,2BAA2B,CAAC;IAIvC;;;;;OAKG;IACG,mBAAmB,CACvB,OAAO,EAAE,0BAA0B,EACnC,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;CAGjB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 视图服务
|
|
3
|
+
* 100% 参考 Meego API 文档
|
|
4
|
+
*
|
|
5
|
+
* 提供固定视图、条件视图的创建、更新与删除能力
|
|
6
|
+
*/
|
|
7
|
+
import { BaseService } from '../../core/base-service.js';
|
|
8
|
+
import { ViewQueryService } from './query.js';
|
|
9
|
+
/** API 路径 */
|
|
10
|
+
export const API_PATHS = {
|
|
11
|
+
/** 创建固定视图 */
|
|
12
|
+
CREATE_FIX_VIEW: '/open_api/:project_key/:work_item_type_key/fix_view',
|
|
13
|
+
/** 更新固定视图 */
|
|
14
|
+
UPDATE_FIX_VIEW: '/open_api/:project_key/:work_item_type_key/fix_view/:view_id',
|
|
15
|
+
/** 删除视图 */
|
|
16
|
+
DELETE_VIEW: '/open_api/:project_key/fix_view/:view_id',
|
|
17
|
+
/** 创建条件视图 */
|
|
18
|
+
CREATE_CONDITION_VIEW: '/open_api/view/v1/create_condition_view',
|
|
19
|
+
/** 更新条件视图 */
|
|
20
|
+
UPDATE_CONDITION_VIEW: '/open_api/view/v1/update_condition_view',
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* 视图服务
|
|
24
|
+
*/
|
|
25
|
+
export class ViewService extends BaseService {
|
|
26
|
+
/** 查询服务 */
|
|
27
|
+
query;
|
|
28
|
+
constructor(requestHandler) {
|
|
29
|
+
super(requestHandler);
|
|
30
|
+
this.query = new ViewQueryService(requestHandler);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 创建固定视图
|
|
34
|
+
*
|
|
35
|
+
* @param projectKey 空间 ID 或域名
|
|
36
|
+
* @param workItemTypeKey 工作项类型 key
|
|
37
|
+
* @param request 创建请求
|
|
38
|
+
* @param options 请求选项
|
|
39
|
+
* @returns 新创建的固定视图信息与分页信息
|
|
40
|
+
*/
|
|
41
|
+
async createFixView(projectKey, workItemTypeKey, request, options) {
|
|
42
|
+
return this.postWithPagination(API_PATHS.CREATE_FIX_VIEW, request, {
|
|
43
|
+
...options,
|
|
44
|
+
pathParams: {
|
|
45
|
+
project_key: projectKey,
|
|
46
|
+
work_item_type_key: workItemTypeKey,
|
|
47
|
+
...options?.pathParams,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 更新固定视图
|
|
53
|
+
*
|
|
54
|
+
* @param projectKey 空间 ID 或域名
|
|
55
|
+
* @param workItemTypeKey 工作项类型 key
|
|
56
|
+
* @param viewId 视图 ID
|
|
57
|
+
* @param request 更新请求
|
|
58
|
+
* @param options 请求选项
|
|
59
|
+
*/
|
|
60
|
+
async updateFixView(projectKey, workItemTypeKey, viewId, request, options) {
|
|
61
|
+
await this.post(API_PATHS.UPDATE_FIX_VIEW, request, {
|
|
62
|
+
...options,
|
|
63
|
+
pathParams: {
|
|
64
|
+
project_key: projectKey,
|
|
65
|
+
work_item_type_key: workItemTypeKey,
|
|
66
|
+
view_id: viewId,
|
|
67
|
+
...options?.pathParams,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 删除视图
|
|
73
|
+
*
|
|
74
|
+
* @param projectKey 空间 ID 或域名
|
|
75
|
+
* @param viewId 视图 ID
|
|
76
|
+
* @param options 请求选项
|
|
77
|
+
*/
|
|
78
|
+
async deleteView(projectKey, viewId, options) {
|
|
79
|
+
await this.delete(API_PATHS.DELETE_VIEW, {
|
|
80
|
+
...options,
|
|
81
|
+
pathParams: {
|
|
82
|
+
project_key: projectKey,
|
|
83
|
+
view_id: viewId,
|
|
84
|
+
...options?.pathParams,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 创建条件视图
|
|
90
|
+
*
|
|
91
|
+
* @param request 创建请求
|
|
92
|
+
* @param options 请求选项
|
|
93
|
+
* @returns 新创建视图 ID
|
|
94
|
+
*/
|
|
95
|
+
async createConditionView(request, options) {
|
|
96
|
+
return this.post(API_PATHS.CREATE_CONDITION_VIEW, request, options);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 更新条件视图
|
|
100
|
+
*
|
|
101
|
+
* @param request 更新请求
|
|
102
|
+
* @param options 请求选项
|
|
103
|
+
*/
|
|
104
|
+
async updateConditionView(request, options) {
|
|
105
|
+
await this.post(API_PATHS.UPDATE_CONDITION_VIEW, request, options);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/service/view/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAA8B,MAAM,4BAA4B,CAAC;AAUrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,aAAa;AACb,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,aAAa;IACb,eAAe,EAAE,qDAAqD;IACtE,aAAa;IACb,eAAe,EAAE,8DAA8D;IAC/E,WAAW;IACX,WAAW,EAAE,0CAA0C;IACvD,aAAa;IACb,qBAAqB,EAAE,yCAAyC;IAChE,aAAa;IACb,qBAAqB,EAAE,yCAAyC;CACjE,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,WAAW;IACF,KAAK,CAAmB;IAEjC,YAAY,cAA8B;QACxC,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,eAAuB,EACvB,OAA6B,EAC7B,OAA4C;QAE5C,OAAO,IAAI,CAAC,kBAAkB,CAAc,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE;YAC9E,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,kBAAkB,EAAE,eAAe;gBACnC,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,eAAuB,EACvB,MAAc,EACd,OAA6B,EAC7B,OAAqC;QAErC,MAAM,IAAI,CAAC,IAAI,CAAO,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE;YACxD,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,kBAAkB,EAAE,eAAe;gBACnC,OAAO,EAAE,MAAM;gBACf,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CACd,UAAkB,EAClB,MAAc,EACd,OAAqC;QAErC,MAAM,IAAI,CAAC,MAAM,CAAO,SAAS,CAAC,WAAW,EAAE;YAC7C,GAAG,OAAO;YACV,UAAU,EAAE;gBACV,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,GAAG,OAAO,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAmC,EACnC,OAA4D;QAE5D,OAAO,IAAI,CAAC,IAAI,CAA8B,SAAS,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnG,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAmC,EACnC,OAAqC;QAErC,MAAM,IAAI,CAAC,IAAI,CAAO,SAAS,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 附件服务
|
|
3
|
+
* 100% 参考 Meego API 文档
|
|
4
|
+
*
|
|
5
|
+
* 提供附件的上传、下载、删除功能
|
|
6
|
+
*/
|
|
7
|
+
import { BaseService, type ServiceRequestOptions, type UploadRequestOptions, type DownloadOptions } from '../../core/base-service.js';
|
|
8
|
+
import type { UploadAttachmentRequest, UploadFileRequest, DownloadAttachmentRequest, DeleteAttachmentRequest } from '../../types/workitem.js';
|
|
9
|
+
/** API 路径 */
|
|
10
|
+
export declare const API_PATHS: {
|
|
11
|
+
/** 上传文件或富文本图片(通用) */
|
|
12
|
+
FILE_UPLOAD: string;
|
|
13
|
+
/** 添加附件到工作项 */
|
|
14
|
+
ATTACHMENT_UPLOAD: string;
|
|
15
|
+
/** 下载附件 */
|
|
16
|
+
FILE_DOWNLOAD: string;
|
|
17
|
+
/** 删除附件 */
|
|
18
|
+
FILE_DELETE: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* 附件服务
|
|
22
|
+
*
|
|
23
|
+
* 提供附件的上传、下载、删除功能
|
|
24
|
+
*/
|
|
25
|
+
export declare class AttachmentService extends BaseService {
|
|
26
|
+
/**
|
|
27
|
+
* 上传文件(通用)
|
|
28
|
+
*
|
|
29
|
+
* 用于富文本中上传图片等场景,返回上传后的资源路径
|
|
30
|
+
* 最大支持 100M
|
|
31
|
+
*
|
|
32
|
+
* @param projectKey 空间 ID 或域名
|
|
33
|
+
* @param request 上传请求
|
|
34
|
+
* @param options 请求选项
|
|
35
|
+
* @returns 附件链接 URL 数组
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const urls = await client.workItem.attachment.uploadFile('my-project', {
|
|
40
|
+
* file: new Blob([...]),
|
|
41
|
+
* });
|
|
42
|
+
* console.log(urls[0]); // https://project.feishu.cn/goapi/v1/tos/file/...
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
uploadFile(projectKey: string, request: UploadFileRequest, options?: UploadRequestOptions<string[]>): Promise<string[]>;
|
|
46
|
+
/**
|
|
47
|
+
* 添加附件到工作项
|
|
48
|
+
*
|
|
49
|
+
* 在指定工作项的附件类型字段中添加附件
|
|
50
|
+
* - 最大支持 100M
|
|
51
|
+
* - 附件字段数量限制为 50 个
|
|
52
|
+
*
|
|
53
|
+
* @param projectKey 空间 ID 或域名
|
|
54
|
+
* @param workItemTypeKey 工作项类型 key
|
|
55
|
+
* @param workItemId 工作项 ID
|
|
56
|
+
* @param request 上传请求
|
|
57
|
+
* @param options 请求选项
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* // 普通附件上传
|
|
62
|
+
* await client.workItem.attachment.uploadAttachment('my-project', 'story', 123456, {
|
|
63
|
+
* file: new Blob([...]),
|
|
64
|
+
* field_key: 'field_xxx',
|
|
65
|
+
* });
|
|
66
|
+
*
|
|
67
|
+
* // 复合字段中上传附件
|
|
68
|
+
* await client.workItem.attachment.uploadAttachment('my-project', 'story', 123456, {
|
|
69
|
+
* file: new Blob([...]),
|
|
70
|
+
* field_key: 'compound_field_xxx',
|
|
71
|
+
* index: '0',
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
uploadAttachment(projectKey: string, workItemTypeKey: string, workItemId: number, request: UploadAttachmentRequest, options?: UploadRequestOptions<void>): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* 下载附件
|
|
78
|
+
*
|
|
79
|
+
* 下载工作项中的指定附件,返回二进制数据
|
|
80
|
+
*
|
|
81
|
+
* @param projectKey 空间 ID 或域名
|
|
82
|
+
* @param workItemTypeKey 工作项类型 key
|
|
83
|
+
* @param workItemId 工作项 ID
|
|
84
|
+
* @param request 下载请求
|
|
85
|
+
* @param options 请求选项
|
|
86
|
+
* @returns 文件二进制数据
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* // 下载附件
|
|
91
|
+
* const data = await client.workItem.attachment.downloadAttachment('my-project', 'story', 123456, {
|
|
92
|
+
* uuid: 'a0e0104f-94bc-4999-bf07-239fd2f7xxxx',
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // 保存到文件 (Node.js)
|
|
96
|
+
* import { writeFileSync } from 'fs';
|
|
97
|
+
* writeFileSync('downloaded.pdf', Buffer.from(data));
|
|
98
|
+
*
|
|
99
|
+
* // 转换为 Blob (浏览器)
|
|
100
|
+
* const blob = new Blob([data]);
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
downloadAttachment(projectKey: string, workItemTypeKey: string, workItemId: number, request: DownloadAttachmentRequest, options?: DownloadOptions): Promise<ArrayBuffer>;
|
|
104
|
+
/**
|
|
105
|
+
* 下载附件(流式)
|
|
106
|
+
*
|
|
107
|
+
* 适用于大文件下载,避免一次性占用大量内存
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const stream = await client.workItem.attachment.downloadAttachmentStream(
|
|
112
|
+
* 'my-project',
|
|
113
|
+
* 'story',
|
|
114
|
+
* 123456,
|
|
115
|
+
* { uuid: 'a0e0104f-94bc-4999-bf07-239fd2f7xxxx' },
|
|
116
|
+
* {
|
|
117
|
+
* onProgress: (p) => console.log(p.progress),
|
|
118
|
+
* }
|
|
119
|
+
* );
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
downloadAttachmentStream(projectKey: string, workItemTypeKey: string, workItemId: number, request: DownloadAttachmentRequest, options?: DownloadOptions): Promise<ReadableStream<Uint8Array>>;
|
|
123
|
+
/**
|
|
124
|
+
* 删除附件
|
|
125
|
+
*
|
|
126
|
+
* 删除指定工作项附件字段中的附件
|
|
127
|
+
*
|
|
128
|
+
* @param request 删除请求
|
|
129
|
+
* @param options 请求选项
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* await client.workItem.attachment.deleteAttachment({
|
|
134
|
+
* project_key: 'my-project',
|
|
135
|
+
* work_item_id: 123456,
|
|
136
|
+
* field_key: 'field_xxx',
|
|
137
|
+
* uuids: ['uuid1', 'uuid2'],
|
|
138
|
+
* });
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
deleteAttachment(request: DeleteAttachmentRequest, options?: ServiceRequestOptions<void>): Promise<void>;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=attachment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/service/workitem/attachment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAUjC,aAAa;AACb,eAAO,MAAM,SAAS;IACpB,qBAAqB;;IAErB,eAAe;;IAEf,WAAW;;IAEX,WAAW;;CAEZ,CAAC;AAEF;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAC,MAAM,EAAE,CAAC,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,yBAAyB,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC;IAmBvB;;;;;;;;;;;;;;;;;OAiBG;IACG,wBAAwB,CAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,yBAAyB,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAmBtC;;;;;;;;;;;;;;;;;OAiBG;IACG,gBAAgB,CACpB,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE,qBAAqB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;CAGjB"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 附件服务
|
|
3
|
+
* 100% 参考 Meego API 文档
|
|
4
|
+
*
|
|
5
|
+
* 提供附件的上传、下载、删除功能
|
|
6
|
+
*/
|
|
7
|
+
import { BaseService, } from '../../core/base-service.js';
|
|
8
|
+
const resolveFileName = (file, fileName) => {
|
|
9
|
+
if (typeof fileName === 'string' && fileName.trim().length > 0) {
|
|
10
|
+
return fileName;
|
|
11
|
+
}
|
|
12
|
+
const name = file.name;
|
|
13
|
+
return typeof name === 'string' && name.trim().length > 0 ? name : 'file';
|
|
14
|
+
};
|
|
15
|
+
/** API 路径 */
|
|
16
|
+
export const API_PATHS = {
|
|
17
|
+
/** 上传文件或富文本图片(通用) */
|
|
18
|
+
FILE_UPLOAD: '/open_api/:project_key/file/upload',
|
|
19
|
+
/** 添加附件到工作项 */
|
|
20
|
+
ATTACHMENT_UPLOAD: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/file/upload',
|
|
21
|
+
/** 下载附件 */
|
|
22
|
+
FILE_DOWNLOAD: '/open_api/:project_key/work_item/:work_item_type_key/:work_item_id/file/download',
|
|
23
|
+
/** 删除附件 */
|
|
24
|
+
FILE_DELETE: '/open_api/file/delete',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* 附件服务
|
|
28
|
+
*
|
|
29
|
+
* 提供附件的上传、下载、删除功能
|
|
30
|
+
*/
|
|
31
|
+
export class AttachmentService extends BaseService {
|
|
32
|
+
/**
|
|
33
|
+
* 上传文件(通用)
|
|
34
|
+
*
|
|
35
|
+
* 用于富文本中上传图片等场景,返回上传后的资源路径
|
|
36
|
+
* 最大支持 100M
|
|
37
|
+
*
|
|
38
|
+
* @param projectKey 空间 ID 或域名
|
|
39
|
+
* @param request 上传请求
|
|
40
|
+
* @param options 请求选项
|
|
41
|
+
* @returns 附件链接 URL 数组
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const urls = await client.workItem.attachment.uploadFile('my-project', {
|
|
46
|
+
* file: new Blob([...]),
|
|
47
|
+
* });
|
|
48
|
+
* console.log(urls[0]); // https://project.feishu.cn/goapi/v1/tos/file/...
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
async uploadFile(projectKey, request, options) {
|
|
52
|
+
return this.upload(API_PATHS.FILE_UPLOAD, {
|
|
53
|
+
pathParams: {
|
|
54
|
+
project_key: projectKey,
|
|
55
|
+
...options?.pathParams,
|
|
56
|
+
},
|
|
57
|
+
file: request.file,
|
|
58
|
+
fileName: resolveFileName(request.file, request.fileName),
|
|
59
|
+
auth: options?.auth,
|
|
60
|
+
timeout: options?.timeout,
|
|
61
|
+
maxUploadSizeBytes: options?.maxUploadSizeBytes,
|
|
62
|
+
minUploadSizeBytes: options?.minUploadSizeBytes,
|
|
63
|
+
skipRetry: options?.skipRetry,
|
|
64
|
+
retry: options?.retry,
|
|
65
|
+
responseValidator: options?.responseValidator,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 添加附件到工作项
|
|
70
|
+
*
|
|
71
|
+
* 在指定工作项的附件类型字段中添加附件
|
|
72
|
+
* - 最大支持 100M
|
|
73
|
+
* - 附件字段数量限制为 50 个
|
|
74
|
+
*
|
|
75
|
+
* @param projectKey 空间 ID 或域名
|
|
76
|
+
* @param workItemTypeKey 工作项类型 key
|
|
77
|
+
* @param workItemId 工作项 ID
|
|
78
|
+
* @param request 上传请求
|
|
79
|
+
* @param options 请求选项
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* // 普通附件上传
|
|
84
|
+
* await client.workItem.attachment.uploadAttachment('my-project', 'story', 123456, {
|
|
85
|
+
* file: new Blob([...]),
|
|
86
|
+
* field_key: 'field_xxx',
|
|
87
|
+
* });
|
|
88
|
+
*
|
|
89
|
+
* // 复合字段中上传附件
|
|
90
|
+
* await client.workItem.attachment.uploadAttachment('my-project', 'story', 123456, {
|
|
91
|
+
* file: new Blob([...]),
|
|
92
|
+
* field_key: 'compound_field_xxx',
|
|
93
|
+
* index: '0',
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
async uploadAttachment(projectKey, workItemTypeKey, workItemId, request, options) {
|
|
98
|
+
// 构建额外的表单字段
|
|
99
|
+
const formFields = {};
|
|
100
|
+
if (request.field_key) {
|
|
101
|
+
formFields['field_key'] = request.field_key;
|
|
102
|
+
}
|
|
103
|
+
if (request.field_alias) {
|
|
104
|
+
formFields['field_alias'] = request.field_alias;
|
|
105
|
+
}
|
|
106
|
+
if (request.index) {
|
|
107
|
+
formFields['index'] = request.index;
|
|
108
|
+
}
|
|
109
|
+
await this.upload(API_PATHS.ATTACHMENT_UPLOAD, {
|
|
110
|
+
pathParams: {
|
|
111
|
+
project_key: projectKey,
|
|
112
|
+
work_item_type_key: workItemTypeKey,
|
|
113
|
+
work_item_id: String(workItemId),
|
|
114
|
+
...options?.pathParams,
|
|
115
|
+
},
|
|
116
|
+
file: request.file,
|
|
117
|
+
fileName: resolveFileName(request.file, request.fileName),
|
|
118
|
+
formFields: Object.keys(formFields).length > 0 ? formFields : undefined,
|
|
119
|
+
auth: options?.auth,
|
|
120
|
+
timeout: options?.timeout,
|
|
121
|
+
maxUploadSizeBytes: options?.maxUploadSizeBytes,
|
|
122
|
+
minUploadSizeBytes: options?.minUploadSizeBytes,
|
|
123
|
+
skipRetry: options?.skipRetry,
|
|
124
|
+
retry: options?.retry,
|
|
125
|
+
responseValidator: options?.responseValidator,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 下载附件
|
|
130
|
+
*
|
|
131
|
+
* 下载工作项中的指定附件,返回二进制数据
|
|
132
|
+
*
|
|
133
|
+
* @param projectKey 空间 ID 或域名
|
|
134
|
+
* @param workItemTypeKey 工作项类型 key
|
|
135
|
+
* @param workItemId 工作项 ID
|
|
136
|
+
* @param request 下载请求
|
|
137
|
+
* @param options 请求选项
|
|
138
|
+
* @returns 文件二进制数据
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // 下载附件
|
|
143
|
+
* const data = await client.workItem.attachment.downloadAttachment('my-project', 'story', 123456, {
|
|
144
|
+
* uuid: 'a0e0104f-94bc-4999-bf07-239fd2f7xxxx',
|
|
145
|
+
* });
|
|
146
|
+
*
|
|
147
|
+
* // 保存到文件 (Node.js)
|
|
148
|
+
* import { writeFileSync } from 'fs';
|
|
149
|
+
* writeFileSync('downloaded.pdf', Buffer.from(data));
|
|
150
|
+
*
|
|
151
|
+
* // 转换为 Blob (浏览器)
|
|
152
|
+
* const blob = new Blob([data]);
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
async downloadAttachment(projectKey, workItemTypeKey, workItemId, request, options) {
|
|
156
|
+
return this.download(API_PATHS.FILE_DOWNLOAD, {
|
|
157
|
+
pathParams: {
|
|
158
|
+
project_key: projectKey,
|
|
159
|
+
work_item_type_key: workItemTypeKey,
|
|
160
|
+
work_item_id: String(workItemId),
|
|
161
|
+
...options?.pathParams,
|
|
162
|
+
},
|
|
163
|
+
body: { uuid: request.uuid },
|
|
164
|
+
auth: options?.auth,
|
|
165
|
+
timeout: options?.timeout,
|
|
166
|
+
signal: options?.signal,
|
|
167
|
+
onProgress: options?.onProgress,
|
|
168
|
+
onChunk: options?.onChunk,
|
|
169
|
+
skipRetry: options?.skipRetry,
|
|
170
|
+
retry: options?.retry,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* 下载附件(流式)
|
|
175
|
+
*
|
|
176
|
+
* 适用于大文件下载,避免一次性占用大量内存
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const stream = await client.workItem.attachment.downloadAttachmentStream(
|
|
181
|
+
* 'my-project',
|
|
182
|
+
* 'story',
|
|
183
|
+
* 123456,
|
|
184
|
+
* { uuid: 'a0e0104f-94bc-4999-bf07-239fd2f7xxxx' },
|
|
185
|
+
* {
|
|
186
|
+
* onProgress: (p) => console.log(p.progress),
|
|
187
|
+
* }
|
|
188
|
+
* );
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
async downloadAttachmentStream(projectKey, workItemTypeKey, workItemId, request, options) {
|
|
192
|
+
return this.downloadStream(API_PATHS.FILE_DOWNLOAD, {
|
|
193
|
+
pathParams: {
|
|
194
|
+
project_key: projectKey,
|
|
195
|
+
work_item_type_key: workItemTypeKey,
|
|
196
|
+
work_item_id: String(workItemId),
|
|
197
|
+
...options?.pathParams,
|
|
198
|
+
},
|
|
199
|
+
body: { uuid: request.uuid },
|
|
200
|
+
auth: options?.auth,
|
|
201
|
+
timeout: options?.timeout,
|
|
202
|
+
signal: options?.signal,
|
|
203
|
+
onProgress: options?.onProgress,
|
|
204
|
+
onChunk: options?.onChunk,
|
|
205
|
+
skipRetry: options?.skipRetry,
|
|
206
|
+
retry: options?.retry,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* 删除附件
|
|
211
|
+
*
|
|
212
|
+
* 删除指定工作项附件字段中的附件
|
|
213
|
+
*
|
|
214
|
+
* @param request 删除请求
|
|
215
|
+
* @param options 请求选项
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* await client.workItem.attachment.deleteAttachment({
|
|
220
|
+
* project_key: 'my-project',
|
|
221
|
+
* work_item_id: 123456,
|
|
222
|
+
* field_key: 'field_xxx',
|
|
223
|
+
* uuids: ['uuid1', 'uuid2'],
|
|
224
|
+
* });
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
async deleteAttachment(request, options) {
|
|
228
|
+
await this.post(API_PATHS.FILE_DELETE, request, options);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=attachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../../src/service/workitem/attachment.ts"],"names":[],"mappings":"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"}
|