@parall/sdk 1.54.0 → 1.55.1
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/dist/client.d.ts +104 -74
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +173 -124
- package/dist/constants.d.ts +25 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +35 -5
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/project-task-client.d.ts +101 -0
- package/dist/project-task-client.d.ts.map +1 -0
- package/dist/project-task-client.js +173 -0
- package/dist/subject.d.ts +22 -0
- package/dist/subject.d.ts.map +1 -0
- package/dist/subject.js +45 -0
- package/dist/task-label-client.d.ts +13 -0
- package/dist/task-label-client.d.ts.map +1 -0
- package/dist/task-label-client.js +24 -0
- package/dist/task-label-types.d.ts +33 -0
- package/dist/task-label-types.d.ts.map +1 -0
- package/dist/task-label-types.js +1 -0
- package/dist/types.d.ts +388 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -3
- package/package.json +1 -1
- package/src/client.ts +471 -460
- package/src/constants.ts +48 -5
- package/src/index.ts +2 -0
- package/src/project-task-client.ts +342 -0
- package/src/subject.ts +57 -0
- package/src/task-label-client.ts +37 -0
- package/src/task-label-types.ts +51 -0
- package/src/types.ts +433 -26
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { AddProjectMemberRequest, Approval, CreateProjectRequest, CreateTaskCommentRequest, CreateTaskRelationRequest, CreateTaskRequest, PaginatedResponse, Project, ProjectJoinRequest, ProjectLibraryEntry, ProjectMember, ProjectTaskSummaryResponse, Task, TaskActivity, TaskComment, TaskRelation, TaskRelationTargetType, TaskSubtaskSummaryResponse, TaskWatcher, ThreadWatcher, UpdateProjectMemberRequest, UpdateProjectRequest, UpdateTaskCommentRequest, UpdateTaskRequest } from './types.js';
|
|
2
|
+
/** Project and task REST methods shared by every ParallClient instance. */
|
|
3
|
+
export declare abstract class ProjectTaskClient {
|
|
4
|
+
protected abstract request<T>(method: string, path: string, body?: unknown, query?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
5
|
+
createTask(orgId: string, data: CreateTaskRequest): Promise<Task>;
|
|
6
|
+
getTasks(orgId: string, params?: {
|
|
7
|
+
q?: string;
|
|
8
|
+
status?: string;
|
|
9
|
+
priority?: string;
|
|
10
|
+
assignee_id?: string;
|
|
11
|
+
parent_id?: string;
|
|
12
|
+
project_id?: string;
|
|
13
|
+
/** Comma-separated label IDs; matching uses any-of semantics. */
|
|
14
|
+
label_ids?: string;
|
|
15
|
+
limit?: number;
|
|
16
|
+
cursor?: string;
|
|
17
|
+
sort?: string;
|
|
18
|
+
order?: string;
|
|
19
|
+
scope?: 'active' | 'archived' | 'all';
|
|
20
|
+
}): Promise<PaginatedResponse<Task>>;
|
|
21
|
+
getTaskSubtaskSummary(orgId: string, params?: {
|
|
22
|
+
assignee_id?: string;
|
|
23
|
+
project_id?: string;
|
|
24
|
+
}): Promise<TaskSubtaskSummaryResponse>;
|
|
25
|
+
getTask(orgId: string, taskId: string): Promise<Task>;
|
|
26
|
+
updateTask(orgId: string, taskId: string, data: UpdateTaskRequest): Promise<Task>;
|
|
27
|
+
deleteTask(orgId: string, taskId: string, opts?: {
|
|
28
|
+
force?: boolean;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
archiveTask(orgId: string, taskId: string): Promise<void>;
|
|
31
|
+
restoreTask(orgId: string, taskId: string): Promise<void>;
|
|
32
|
+
watchTask(orgId: string, taskId: string): Promise<void>;
|
|
33
|
+
unwatchTask(orgId: string, taskId: string): Promise<void>;
|
|
34
|
+
getTaskWatchers(orgId: string, taskId: string): Promise<TaskWatcher[]>;
|
|
35
|
+
subscribeTaskMember(orgId: string, taskId: string, userId: string): Promise<void>;
|
|
36
|
+
unsubscribeTaskMember(orgId: string, taskId: string, userId: string): Promise<void>;
|
|
37
|
+
watchThread(threadRootId: string): Promise<void>;
|
|
38
|
+
unwatchThread(threadRootId: string): Promise<void>;
|
|
39
|
+
getThreadWatchers(threadRootId: string): Promise<ThreadWatcher[]>;
|
|
40
|
+
isWatchingThread(threadRootId: string): Promise<boolean>;
|
|
41
|
+
getSubtasks(orgId: string, taskId: string): Promise<Task[]>;
|
|
42
|
+
createTaskRelation(orgId: string, taskId: string, data: CreateTaskRelationRequest): Promise<TaskRelation>;
|
|
43
|
+
getTaskRelations(orgId: string, taskId: string): Promise<TaskRelation[]>;
|
|
44
|
+
listTaskRelationsByTarget(orgId: string, params: {
|
|
45
|
+
target_type: TaskRelationTargetType;
|
|
46
|
+
target_id: string;
|
|
47
|
+
}): Promise<TaskRelation[]>;
|
|
48
|
+
deleteTaskRelation(orgId: string, taskId: string, relationId: string): Promise<void>;
|
|
49
|
+
getTaskComments(orgId: string, taskId: string, params?: {
|
|
50
|
+
limit?: number;
|
|
51
|
+
cursor?: string;
|
|
52
|
+
order?: string;
|
|
53
|
+
}): Promise<PaginatedResponse<TaskComment>>;
|
|
54
|
+
getTaskComment(orgId: string, taskId: string, commentId: string): Promise<TaskComment>;
|
|
55
|
+
createTaskComment(orgId: string, taskId: string, data: CreateTaskCommentRequest): Promise<TaskComment>;
|
|
56
|
+
updateTaskComment(orgId: string, taskId: string, commentId: string, data: UpdateTaskCommentRequest): Promise<TaskComment>;
|
|
57
|
+
deleteTaskComment(orgId: string, taskId: string, commentId: string): Promise<void>;
|
|
58
|
+
getTaskActivities(orgId: string, taskId: string, params?: {
|
|
59
|
+
limit?: number;
|
|
60
|
+
cursor?: string;
|
|
61
|
+
}): Promise<PaginatedResponse<TaskActivity>>;
|
|
62
|
+
createProject(orgId: string, data: CreateProjectRequest): Promise<Project>;
|
|
63
|
+
getProjects(orgId: string): Promise<Project[]>;
|
|
64
|
+
getProjectTaskSummary(orgId: string): Promise<ProjectTaskSummaryResponse>;
|
|
65
|
+
getProject(orgId: string, projectId: string): Promise<Project>;
|
|
66
|
+
updateProject(orgId: string, projectId: string, data: UpdateProjectRequest): Promise<Project>;
|
|
67
|
+
deleteProject(orgId: string, projectId: string): Promise<void>;
|
|
68
|
+
/** Roster with display info; readable by anyone who can read the project. */
|
|
69
|
+
getProjectMembers(orgId: string, projectId: string): Promise<ProjectMember[]>;
|
|
70
|
+
/**
|
|
71
|
+
* User IDs who may read the project — the assignee-eligibility set. Every
|
|
72
|
+
* tier answers the roster expansion (direct, team-reached, org
|
|
73
|
+
* owners/admins); visibility only shapes admission, never reach.
|
|
74
|
+
*/
|
|
75
|
+
getProjectReaders(orgId: string, projectId: string): Promise<string[]>;
|
|
76
|
+
/** The join library: every discoverable project (public + restricted, plus
|
|
77
|
+
* private for org owners/admins) with the caller's admission state. */
|
|
78
|
+
getProjectLibrary(orgId: string): Promise<ProjectLibraryEntry[]>;
|
|
79
|
+
/** Public-tier self-admission: writes the caller's own member row.
|
|
80
|
+
* Other tiers answer `404 PROJECT_NOT_FOUND`; a duplicate answers
|
|
81
|
+
* `409 MEMBER_EXISTS`. */
|
|
82
|
+
joinProject(orgId: string, projectId: string): Promise<ProjectMember>;
|
|
83
|
+
/** Restricted-tier admission petition. A pending duplicate answers
|
|
84
|
+
* `409 REQUEST_EXISTS`; membership answers `409 MEMBER_EXISTS`. */
|
|
85
|
+
createProjectJoinRequest(orgId: string, projectId: string): Promise<Approval>;
|
|
86
|
+
/** Pending petitions for one project — manager standing required. */
|
|
87
|
+
listProjectJoinRequests(orgId: string, projectId: string): Promise<ProjectJoinRequest[]>;
|
|
88
|
+
/** Withdraws the caller's own pending petition. */
|
|
89
|
+
cancelProjectJoinRequest(orgId: string, projectId: string): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Adds one subject (user ID or team ID) to the roster. Manager-only,
|
|
92
|
+
* create-only: an existing row answers `409 MEMBER_EXISTS` — change roles
|
|
93
|
+
* through updateProjectMember instead.
|
|
94
|
+
*/
|
|
95
|
+
addProjectMember(orgId: string, projectId: string, req: AddProjectMemberRequest): Promise<ProjectMember>;
|
|
96
|
+
/** Sets one roster entry's role. Demoting the last manager answers `400 LAST_MANAGER`. */
|
|
97
|
+
updateProjectMember(orgId: string, projectId: string, subject: string, req: UpdateProjectMemberRequest): Promise<ProjectMember>;
|
|
98
|
+
/** Removes one roster entry. Removing the last manager answers `400 LAST_MANAGER`. */
|
|
99
|
+
removeProjectMember(orgId: string, projectId: string, subject: string): Promise<void>;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=project-task-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-task-client.d.ts","sourceRoot":"","sources":["../src/project-task-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { ENDPOINTS } from './constants.js';
|
|
2
|
+
/** Project and task REST methods shared by every ParallClient instance. */
|
|
3
|
+
export class ProjectTaskClient {
|
|
4
|
+
async createTask(orgId, data) {
|
|
5
|
+
return this.request('POST', ENDPOINTS.TASKS(orgId), data);
|
|
6
|
+
}
|
|
7
|
+
async getTasks(orgId, params) {
|
|
8
|
+
return this.request('GET', ENDPOINTS.TASKS(orgId), undefined, params);
|
|
9
|
+
}
|
|
10
|
+
async getTaskSubtaskSummary(orgId, params) {
|
|
11
|
+
return this.request('GET', ENDPOINTS.TASK_SUBTASK_SUMMARY(orgId), undefined, params);
|
|
12
|
+
}
|
|
13
|
+
async getTask(orgId, taskId) {
|
|
14
|
+
return this.request('GET', ENDPOINTS.TASK(orgId, taskId));
|
|
15
|
+
}
|
|
16
|
+
async updateTask(orgId, taskId, data) {
|
|
17
|
+
return this.request('PATCH', ENDPOINTS.TASK(orgId, taskId), data);
|
|
18
|
+
}
|
|
19
|
+
async deleteTask(orgId, taskId, opts) {
|
|
20
|
+
return this.request('DELETE', ENDPOINTS.TASK(orgId, taskId), undefined, opts?.force ? { force: 'true' } : undefined);
|
|
21
|
+
}
|
|
22
|
+
async archiveTask(orgId, taskId) {
|
|
23
|
+
return this.request('POST', ENDPOINTS.TASK_ARCHIVE(orgId, taskId));
|
|
24
|
+
}
|
|
25
|
+
async restoreTask(orgId, taskId) {
|
|
26
|
+
return this.request('POST', ENDPOINTS.TASK_RESTORE(orgId, taskId));
|
|
27
|
+
}
|
|
28
|
+
async watchTask(orgId, taskId) {
|
|
29
|
+
return this.request('POST', ENDPOINTS.TASK_WATCH(orgId, taskId));
|
|
30
|
+
}
|
|
31
|
+
async unwatchTask(orgId, taskId) {
|
|
32
|
+
return this.request('DELETE', ENDPOINTS.TASK_WATCH(orgId, taskId));
|
|
33
|
+
}
|
|
34
|
+
async getTaskWatchers(orgId, taskId) {
|
|
35
|
+
const res = await this.request('GET', ENDPOINTS.TASK_WATCHERS(orgId, taskId));
|
|
36
|
+
return res.data;
|
|
37
|
+
}
|
|
38
|
+
async subscribeTaskMember(orgId, taskId, userId) {
|
|
39
|
+
return this.request('PUT', ENDPOINTS.TASK_SUBSCRIBER(orgId, taskId, userId));
|
|
40
|
+
}
|
|
41
|
+
async unsubscribeTaskMember(orgId, taskId, userId) {
|
|
42
|
+
return this.request('DELETE', ENDPOINTS.TASK_SUBSCRIBER(orgId, taskId, userId));
|
|
43
|
+
}
|
|
44
|
+
async watchThread(threadRootId) {
|
|
45
|
+
return this.request('POST', ENDPOINTS.MESSAGE_WATCH(threadRootId));
|
|
46
|
+
}
|
|
47
|
+
async unwatchThread(threadRootId) {
|
|
48
|
+
return this.request('DELETE', ENDPOINTS.MESSAGE_WATCH(threadRootId));
|
|
49
|
+
}
|
|
50
|
+
async getThreadWatchers(threadRootId) {
|
|
51
|
+
const res = await this.request('GET', ENDPOINTS.MESSAGE_WATCHERS(threadRootId));
|
|
52
|
+
return res.data;
|
|
53
|
+
}
|
|
54
|
+
async isWatchingThread(threadRootId) {
|
|
55
|
+
const res = await this.request('GET', ENDPOINTS.MESSAGE_WATCHING(threadRootId));
|
|
56
|
+
return res.watching;
|
|
57
|
+
}
|
|
58
|
+
async getSubtasks(orgId, taskId) {
|
|
59
|
+
const res = await this.request('GET', ENDPOINTS.TASK_SUBTASKS(orgId, taskId));
|
|
60
|
+
return res.data;
|
|
61
|
+
}
|
|
62
|
+
async createTaskRelation(orgId, taskId, data) {
|
|
63
|
+
return this.request('POST', ENDPOINTS.TASK_RELATIONS(orgId, taskId), data);
|
|
64
|
+
}
|
|
65
|
+
async getTaskRelations(orgId, taskId) {
|
|
66
|
+
const res = await this.request('GET', ENDPOINTS.TASK_RELATIONS(orgId, taskId));
|
|
67
|
+
return res.data;
|
|
68
|
+
}
|
|
69
|
+
async listTaskRelationsByTarget(orgId, params) {
|
|
70
|
+
const query = new URLSearchParams({
|
|
71
|
+
target_type: params.target_type,
|
|
72
|
+
target_id: params.target_id,
|
|
73
|
+
});
|
|
74
|
+
const res = await this.request('GET', `${ENDPOINTS.TASK_RELATIONS_BY_TARGET(orgId)}?${query.toString()}`);
|
|
75
|
+
return res.data;
|
|
76
|
+
}
|
|
77
|
+
async deleteTaskRelation(orgId, taskId, relationId) {
|
|
78
|
+
return this.request('DELETE', ENDPOINTS.TASK_RELATION(orgId, taskId, relationId));
|
|
79
|
+
}
|
|
80
|
+
async getTaskComments(orgId, taskId, params) {
|
|
81
|
+
return this.request('GET', ENDPOINTS.TASK_COMMENTS(orgId, taskId), undefined, params);
|
|
82
|
+
}
|
|
83
|
+
async getTaskComment(orgId, taskId, commentId) {
|
|
84
|
+
return this.request('GET', ENDPOINTS.TASK_COMMENT(orgId, taskId, commentId));
|
|
85
|
+
}
|
|
86
|
+
async createTaskComment(orgId, taskId, data) {
|
|
87
|
+
return this.request('POST', ENDPOINTS.TASK_COMMENTS(orgId, taskId), data);
|
|
88
|
+
}
|
|
89
|
+
async updateTaskComment(orgId, taskId, commentId, data) {
|
|
90
|
+
return this.request('PATCH', ENDPOINTS.TASK_COMMENT(orgId, taskId, commentId), data);
|
|
91
|
+
}
|
|
92
|
+
async deleteTaskComment(orgId, taskId, commentId) {
|
|
93
|
+
return this.request('DELETE', ENDPOINTS.TASK_COMMENT(orgId, taskId, commentId));
|
|
94
|
+
}
|
|
95
|
+
async getTaskActivities(orgId, taskId, params) {
|
|
96
|
+
return this.request('GET', ENDPOINTS.TASK_ACTIVITIES(orgId, taskId), undefined, params);
|
|
97
|
+
}
|
|
98
|
+
async createProject(orgId, data) {
|
|
99
|
+
return this.request('POST', ENDPOINTS.PROJECTS(orgId), data);
|
|
100
|
+
}
|
|
101
|
+
async getProjects(orgId) {
|
|
102
|
+
const res = await this.request('GET', ENDPOINTS.PROJECTS(orgId));
|
|
103
|
+
return res.data;
|
|
104
|
+
}
|
|
105
|
+
async getProjectTaskSummary(orgId) {
|
|
106
|
+
return this.request('GET', ENDPOINTS.PROJECT_TASK_SUMMARY(orgId));
|
|
107
|
+
}
|
|
108
|
+
async getProject(orgId, projectId) {
|
|
109
|
+
return this.request('GET', ENDPOINTS.PROJECT(orgId, projectId));
|
|
110
|
+
}
|
|
111
|
+
async updateProject(orgId, projectId, data) {
|
|
112
|
+
return this.request('PATCH', ENDPOINTS.PROJECT(orgId, projectId), data);
|
|
113
|
+
}
|
|
114
|
+
async deleteProject(orgId, projectId) {
|
|
115
|
+
return this.request('DELETE', ENDPOINTS.PROJECT(orgId, projectId));
|
|
116
|
+
}
|
|
117
|
+
/** Roster with display info; readable by anyone who can read the project. */
|
|
118
|
+
async getProjectMembers(orgId, projectId) {
|
|
119
|
+
const res = await this.request('GET', ENDPOINTS.PROJECT_MEMBERS(orgId, projectId));
|
|
120
|
+
return res.data;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* User IDs who may read the project — the assignee-eligibility set. Every
|
|
124
|
+
* tier answers the roster expansion (direct, team-reached, org
|
|
125
|
+
* owners/admins); visibility only shapes admission, never reach.
|
|
126
|
+
*/
|
|
127
|
+
async getProjectReaders(orgId, projectId) {
|
|
128
|
+
const res = await this.request('GET', ENDPOINTS.PROJECT_READERS(orgId, projectId));
|
|
129
|
+
return res.data;
|
|
130
|
+
}
|
|
131
|
+
/** The join library: every discoverable project (public + restricted, plus
|
|
132
|
+
* private for org owners/admins) with the caller's admission state. */
|
|
133
|
+
async getProjectLibrary(orgId) {
|
|
134
|
+
const res = await this.request('GET', ENDPOINTS.PROJECT_LIBRARY(orgId));
|
|
135
|
+
return res.data;
|
|
136
|
+
}
|
|
137
|
+
/** Public-tier self-admission: writes the caller's own member row.
|
|
138
|
+
* Other tiers answer `404 PROJECT_NOT_FOUND`; a duplicate answers
|
|
139
|
+
* `409 MEMBER_EXISTS`. */
|
|
140
|
+
async joinProject(orgId, projectId) {
|
|
141
|
+
return this.request('POST', ENDPOINTS.PROJECT_JOIN(orgId, projectId));
|
|
142
|
+
}
|
|
143
|
+
/** Restricted-tier admission petition. A pending duplicate answers
|
|
144
|
+
* `409 REQUEST_EXISTS`; membership answers `409 MEMBER_EXISTS`. */
|
|
145
|
+
async createProjectJoinRequest(orgId, projectId) {
|
|
146
|
+
return this.request('POST', ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
147
|
+
}
|
|
148
|
+
/** Pending petitions for one project — manager standing required. */
|
|
149
|
+
async listProjectJoinRequests(orgId, projectId) {
|
|
150
|
+
const res = await this.request('GET', ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
151
|
+
return res.data;
|
|
152
|
+
}
|
|
153
|
+
/** Withdraws the caller's own pending petition. */
|
|
154
|
+
async cancelProjectJoinRequest(orgId, projectId) {
|
|
155
|
+
return this.request('DELETE', ENDPOINTS.PROJECT_JOIN_REQUESTS(orgId, projectId));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Adds one subject (user ID or team ID) to the roster. Manager-only,
|
|
159
|
+
* create-only: an existing row answers `409 MEMBER_EXISTS` — change roles
|
|
160
|
+
* through updateProjectMember instead.
|
|
161
|
+
*/
|
|
162
|
+
async addProjectMember(orgId, projectId, req) {
|
|
163
|
+
return this.request('POST', ENDPOINTS.PROJECT_MEMBERS(orgId, projectId), req);
|
|
164
|
+
}
|
|
165
|
+
/** Sets one roster entry's role. Demoting the last manager answers `400 LAST_MANAGER`. */
|
|
166
|
+
async updateProjectMember(orgId, projectId, subject, req) {
|
|
167
|
+
return this.request('PATCH', ENDPOINTS.PROJECT_MEMBER(orgId, projectId, subject), req);
|
|
168
|
+
}
|
|
169
|
+
/** Removes one roster entry. Removing the last manager answers `400 LAST_MANAGER`. */
|
|
170
|
+
async removeProjectMember(orgId, projectId, subject) {
|
|
171
|
+
return this.request('DELETE', ENDPOINTS.PROJECT_MEMBER(orgId, projectId, subject));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Shared ACL subject token helpers for clients that edit permission rosters. */
|
|
2
|
+
export type SubjectKind = 'wildcard' | 'user' | 'team';
|
|
3
|
+
export interface ParsedSubject {
|
|
4
|
+
kind: SubjectKind;
|
|
5
|
+
/** Empty for wildcard, user ID for user, and the full team ID for team. */
|
|
6
|
+
value: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function isTeamSubject(token: string): boolean;
|
|
9
|
+
export declare function parseSubjectToken(token: string): ParsedSubject;
|
|
10
|
+
/**
|
|
11
|
+
* Maximum distinct team references one ACL row may carry. Mirrors
|
|
12
|
+
* `subject.MaxTeamSubjectsPerWrite` on the server, which enforces it.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MAX_TEAM_SUBJECTS_PER_WRITE = 200;
|
|
15
|
+
/**
|
|
16
|
+
* Returns unique team IDs in first-seen order for batched write validation.
|
|
17
|
+
* An ID that names no team comes back from the server's existence check
|
|
18
|
+
* reported missing, so the write fails with a legible error instead of
|
|
19
|
+
* storing a token that matches nobody.
|
|
20
|
+
*/
|
|
21
|
+
export declare function teamIdsFromSubjects(subjects: readonly string[]): string[];
|
|
22
|
+
//# sourceMappingURL=subject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../src/subject.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAW9D;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CASzE"}
|
package/dist/subject.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Shared ACL subject token helpers for clients that edit permission rosters. */
|
|
2
|
+
/**
|
|
3
|
+
* Team subjects are stored as bare team IDs (`team_...`), mirroring the
|
|
4
|
+
* server's `pkg/subject`: the ID prefix is what makes a token a team
|
|
5
|
+
* reference, so no marker syntax exists and a rename never invalidates a
|
|
6
|
+
* stored reference.
|
|
7
|
+
*/
|
|
8
|
+
const TEAM_ID_PREFIX = 'team_';
|
|
9
|
+
export function isTeamSubject(token) {
|
|
10
|
+
return token.startsWith(TEAM_ID_PREFIX);
|
|
11
|
+
}
|
|
12
|
+
export function parseSubjectToken(token) {
|
|
13
|
+
if (token === '*') {
|
|
14
|
+
return { kind: 'wildcard', value: '' };
|
|
15
|
+
}
|
|
16
|
+
if (!token) {
|
|
17
|
+
throw new Error('Subject token is empty');
|
|
18
|
+
}
|
|
19
|
+
if (isTeamSubject(token)) {
|
|
20
|
+
return { kind: 'team', value: token };
|
|
21
|
+
}
|
|
22
|
+
return { kind: 'user', value: token };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Maximum distinct team references one ACL row may carry. Mirrors
|
|
26
|
+
* `subject.MaxTeamSubjectsPerWrite` on the server, which enforces it.
|
|
27
|
+
*/
|
|
28
|
+
export const MAX_TEAM_SUBJECTS_PER_WRITE = 200;
|
|
29
|
+
/**
|
|
30
|
+
* Returns unique team IDs in first-seen order for batched write validation.
|
|
31
|
+
* An ID that names no team comes back from the server's existence check
|
|
32
|
+
* reported missing, so the write fails with a legible error instead of
|
|
33
|
+
* storing a token that matches nobody.
|
|
34
|
+
*/
|
|
35
|
+
export function teamIdsFromSubjects(subjects) {
|
|
36
|
+
const seen = new Set();
|
|
37
|
+
const ids = [];
|
|
38
|
+
for (const token of subjects) {
|
|
39
|
+
if (!isTeamSubject(token) || seen.has(token))
|
|
40
|
+
continue;
|
|
41
|
+
seen.add(token);
|
|
42
|
+
ids.push(token);
|
|
43
|
+
}
|
|
44
|
+
return ids;
|
|
45
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProjectTaskClient } from './project-task-client.js';
|
|
2
|
+
import type { AddTaskLabelsRequest, CreateLabelRequest, Label, UpdateLabelRequest } from './task-label-types.js';
|
|
3
|
+
import type { Task } from './types.js';
|
|
4
|
+
/** Organization label vocabulary and incremental Task attachment methods. */
|
|
5
|
+
export declare abstract class TaskLabelClient extends ProjectTaskClient {
|
|
6
|
+
getLabels(orgId: string): Promise<Label[]>;
|
|
7
|
+
createLabel(orgId: string, data: CreateLabelRequest): Promise<Label>;
|
|
8
|
+
updateLabel(orgId: string, labelId: string, data: UpdateLabelRequest): Promise<Label>;
|
|
9
|
+
deleteLabel(orgId: string, labelId: string): Promise<void>;
|
|
10
|
+
addTaskLabels(orgId: string, taskId: string, data: AddTaskLabelsRequest): Promise<Task>;
|
|
11
|
+
removeTaskLabel(orgId: string, taskId: string, labelId: string): Promise<Task>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=task-label-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-label-client.d.ts","sourceRoot":"","sources":["../src/task-label-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,EACL,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,6EAA6E;AAC7E,8BAAsB,eAAgB,SAAQ,iBAAiB;IACvD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAK1C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIpE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAIrF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ENDPOINTS } from './constants.js';
|
|
2
|
+
import { ProjectTaskClient } from './project-task-client.js';
|
|
3
|
+
/** Organization label vocabulary and incremental Task attachment methods. */
|
|
4
|
+
export class TaskLabelClient extends ProjectTaskClient {
|
|
5
|
+
async getLabels(orgId) {
|
|
6
|
+
const response = await this.request('GET', ENDPOINTS.LABELS(orgId));
|
|
7
|
+
return response.data;
|
|
8
|
+
}
|
|
9
|
+
async createLabel(orgId, data) {
|
|
10
|
+
return this.request('POST', ENDPOINTS.LABELS(orgId), data);
|
|
11
|
+
}
|
|
12
|
+
async updateLabel(orgId, labelId, data) {
|
|
13
|
+
return this.request('PATCH', ENDPOINTS.LABEL(orgId, labelId), data);
|
|
14
|
+
}
|
|
15
|
+
async deleteLabel(orgId, labelId) {
|
|
16
|
+
return this.request('DELETE', ENDPOINTS.LABEL(orgId, labelId));
|
|
17
|
+
}
|
|
18
|
+
async addTaskLabels(orgId, taskId, data) {
|
|
19
|
+
return this.request('POST', ENDPOINTS.TASK_LABELS(orgId, taskId), data);
|
|
20
|
+
}
|
|
21
|
+
async removeTaskLabel(orgId, taskId, labelId) {
|
|
22
|
+
return this.request('DELETE', ENDPOINTS.TASK_LABEL(orgId, taskId, labelId));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type LabelColor = 'default' | 'red' | 'green' | 'yellow' | 'blue' | 'lilac' | 'orange' | 'magenta' | 'sand' | 'fuchsia' | 'cerulean' | 'teal' | 'lime';
|
|
2
|
+
export interface Label {
|
|
3
|
+
id: string;
|
|
4
|
+
org_id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
color: LabelColor;
|
|
7
|
+
/** Optional agent-readable guidance for when this label applies. */
|
|
8
|
+
description?: string | null;
|
|
9
|
+
created_by: string;
|
|
10
|
+
created_at: string;
|
|
11
|
+
updated_at: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CreateLabelRequest {
|
|
14
|
+
name: string;
|
|
15
|
+
color?: LabelColor;
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface UpdateLabelRequest {
|
|
19
|
+
name?: string;
|
|
20
|
+
color?: LabelColor;
|
|
21
|
+
/** Explicit null clears the description. */
|
|
22
|
+
description?: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface AddTaskLabelsRequest {
|
|
25
|
+
label_ids: string[];
|
|
26
|
+
}
|
|
27
|
+
export type LabelCreatedData = Label;
|
|
28
|
+
export type LabelUpdatedData = Label;
|
|
29
|
+
export interface LabelDeletedData {
|
|
30
|
+
label_id: string;
|
|
31
|
+
org_id: string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=task-label-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-label-types.d.ts","sourceRoot":"","sources":["../src/task-label-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,SAAS,GACT,UAAU,GACV,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACrC,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|