@critical-path/client 0.1.5 → 0.2.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/CHANGELOG.md +11 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +21 -0
- package/dist/index.test.js.map +1 -1
- package/package.json +2 -2
- package/src/index.test.ts +25 -0
- package/src/index.ts +41 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @critical-path/client
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 35576a6: Introduce Workflow concept to the project management model with status definitions, allowed transition validation, task types, webhook events (workflow.created, workflow.updated, workflow.deleted), server routes, SDK methods, and React/Svelte state hooks.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [35576a6]
|
|
12
|
+
- @critical-path/core@0.4.0
|
|
13
|
+
|
|
3
14
|
## 0.1.5
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Project, Task, TaskDependencyGraph, Team, TaskContainer, Iteration, Activity, Comment, TimeEntry } from '@critical-path/core';
|
|
1
|
+
import type { Project, Task, TaskDependencyGraph, Team, TaskContainer, Iteration, Activity, Comment, TimeEntry, Workflow } from '@critical-path/core';
|
|
2
2
|
export interface ClientOptions {
|
|
3
3
|
baseUrl: string;
|
|
4
4
|
headers?: Record<string, string>;
|
|
@@ -10,6 +10,11 @@ export declare class CriticalPathClient {
|
|
|
10
10
|
private customFetch;
|
|
11
11
|
constructor(options: ClientOptions);
|
|
12
12
|
private request;
|
|
13
|
+
getWorkflows(): Promise<Workflow[]>;
|
|
14
|
+
getWorkflow(id: string): Promise<Workflow>;
|
|
15
|
+
createWorkflow(data: Omit<Workflow, 'id' | 'createdAt' | 'updatedAt'>): Promise<Workflow>;
|
|
16
|
+
updateWorkflow(id: string, updates: Partial<Workflow>): Promise<Workflow>;
|
|
17
|
+
deleteWorkflow(id: string): Promise<boolean>;
|
|
13
18
|
getProjects(): Promise<Project[]>;
|
|
14
19
|
getProject(id: string): Promise<Project>;
|
|
15
20
|
createProject(data: Omit<Project, 'id' | 'createdAt' | 'updatedAt'>): Promise<Project>;
|
|
@@ -19,6 +24,7 @@ export declare class CriticalPathClient {
|
|
|
19
24
|
updateTask(id: string, updates: Partial<Task>): Promise<Task>;
|
|
20
25
|
deleteTask(id: string): Promise<boolean>;
|
|
21
26
|
getTaskDependencies(taskId: string): Promise<TaskDependencyGraph>;
|
|
27
|
+
getAllowedTaskTransitions(taskId: string): Promise<string[]>;
|
|
22
28
|
getTeams(): Promise<Team[]>;
|
|
23
29
|
getTeam(id: string): Promise<Team>;
|
|
24
30
|
createTeam(data: Omit<Team, 'id' | 'createdAt' | 'updatedAt'>): Promise<Team>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,IAAI,EACJ,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,SAAS,EACT,QAAQ,EACR,OAAO,EACP,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,35 @@ export class CriticalPathClient {
|
|
|
31
31
|
}
|
|
32
32
|
return response.json();
|
|
33
33
|
}
|
|
34
|
+
// Workflows
|
|
35
|
+
async getWorkflows() {
|
|
36
|
+
const res = await this.request('/workflows');
|
|
37
|
+
return res.workflows;
|
|
38
|
+
}
|
|
39
|
+
async getWorkflow(id) {
|
|
40
|
+
const res = await this.request(`/workflows/${id}`);
|
|
41
|
+
return res.workflow;
|
|
42
|
+
}
|
|
43
|
+
async createWorkflow(data) {
|
|
44
|
+
const res = await this.request('/workflows', {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
body: JSON.stringify(data)
|
|
47
|
+
});
|
|
48
|
+
return res.workflow;
|
|
49
|
+
}
|
|
50
|
+
async updateWorkflow(id, updates) {
|
|
51
|
+
const res = await this.request(`/workflows/${id}`, {
|
|
52
|
+
method: 'PATCH',
|
|
53
|
+
body: JSON.stringify(updates)
|
|
54
|
+
});
|
|
55
|
+
return res.workflow;
|
|
56
|
+
}
|
|
57
|
+
async deleteWorkflow(id) {
|
|
58
|
+
const res = await this.request(`/workflows/${id}`, {
|
|
59
|
+
method: 'DELETE'
|
|
60
|
+
});
|
|
61
|
+
return res.success;
|
|
62
|
+
}
|
|
34
63
|
// Projects
|
|
35
64
|
async getProjects() {
|
|
36
65
|
const res = await this.request('/projects');
|
|
@@ -81,6 +110,10 @@ export class CriticalPathClient {
|
|
|
81
110
|
const res = await this.request(`/tasks/${encodeURIComponent(taskId)}/dependencies`);
|
|
82
111
|
return res.graph;
|
|
83
112
|
}
|
|
113
|
+
async getAllowedTaskTransitions(taskId) {
|
|
114
|
+
const res = await this.request(`/tasks/${encodeURIComponent(taskId)}/transitions`);
|
|
115
|
+
return res.allowedNextStatuses;
|
|
116
|
+
}
|
|
84
117
|
// Teams
|
|
85
118
|
async getTeams() {
|
|
86
119
|
const res = await this.request('/teams');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,kBAAkB;IACrB,OAAO,CAAS;IAChB,OAAO,CAAyB;IAChC,WAAW,CAAe;IAElC,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,QAAgB,EAAE,UAAuB,EAAE;QAClE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAC3C,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,QAAQ,GAAG,cAAc,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,KAAK;oBAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,YAAY,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAsD;QACzE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,YAAY,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,OAA0B;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,cAAc,EAAE,EAAE,EAAE;YACzE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,cAAc,EAAE,EAAE,EAAE;YACvE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,WAAW;IACX,KAAK,CAAC,WAAW;QACf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,WAAW,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,aAAa,EAAE,EAAE,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAqD;QACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,WAAW,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,QAAQ;IACR,KAAK,CAAC,QAAQ,CAAC,SAAkB;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoB,SAAS,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAkD;QACjE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,QAAQ,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAsB;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE,EAAE,EAAE;YAC7D,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,UAAU,EAAE,EAAE,EAAE;YACnE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiC,UAAU,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACpH,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,MAAc;QAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoC,UAAU,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtH,OAAO,GAAG,CAAC,mBAAmB,CAAC;IACjC,CAAC;IAED,QAAQ;IACR,KAAK,CAAC,QAAQ;QACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoB,QAAQ,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAkD;QACjE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,QAAQ,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAsB;QACjD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,UAAU,EAAE,EAAE,EAAE;YAC7D,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,UAAU,EAAE,EAAE,EAAE;YACnE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,aAAa;IACb,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkC,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1H,OAAO,GAAG,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAA2D;QAC/E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,aAAa,EAAE;YAC1E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU,EAAE,OAA+B;QAC/D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,eAAe,EAAE,EAAE,EAAE;YAChF,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,eAAe,EAAE,EAAE,EAAE;YACxE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,aAAa;IACb,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA8B,yBAAyB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtH,OAAO,GAAG,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAyC;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,aAAa,EAAE;YACtE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU,EAAE,OAA2B;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,eAAe,EAAE,EAAE,EAAE;YAC5E,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,eAAe,EAAE,EAAE,EAAE;YACxE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,aAAa,CAAC,MAAgD;QAClE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,MAAM,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA6B,cAAc,KAAK,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,WAAW;IACX,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1G,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAqD;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,WAAW,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,eAAe;IACf,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnH,OAAO,GAAG,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAwC;QACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,eAAe,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC;CACF"}
|
package/dist/index.test.js
CHANGED
|
@@ -17,5 +17,26 @@ describe('@critical-path/client Tests', () => {
|
|
|
17
17
|
expect(projects.length).toBe(1);
|
|
18
18
|
expect(projects[0].name).toBe('Mock Proj');
|
|
19
19
|
});
|
|
20
|
+
it('fetches workflows and task allowed transitions via client SDK', async () => {
|
|
21
|
+
const mockFetch = async (url, init) => {
|
|
22
|
+
const urlStr = url.toString();
|
|
23
|
+
if (urlStr.endsWith('/workflows')) {
|
|
24
|
+
return new Response(JSON.stringify({ workflows: [{ id: 'wf1', name: 'SDK Workflow' }] }), { status: 200 });
|
|
25
|
+
}
|
|
26
|
+
if (urlStr.endsWith('/tasks/t1/transitions')) {
|
|
27
|
+
return new Response(JSON.stringify({ allowedNextStatuses: ['in_progress', 'canceled'] }), { status: 200 });
|
|
28
|
+
}
|
|
29
|
+
return new Response(JSON.stringify({ error: 'Not found' }), { status: 404 });
|
|
30
|
+
};
|
|
31
|
+
const client = new CriticalPathClient({
|
|
32
|
+
baseUrl: 'http://localhost:3000/api/critical-path',
|
|
33
|
+
fetch: mockFetch
|
|
34
|
+
});
|
|
35
|
+
const workflows = await client.getWorkflows();
|
|
36
|
+
expect(workflows).toHaveLength(1);
|
|
37
|
+
expect(workflows[0].name).toBe('SDK Workflow');
|
|
38
|
+
const transitions = await client.getAllowedTaskTransitions('t1');
|
|
39
|
+
expect(transitions).toEqual(['in_progress', 'canceled']);
|
|
40
|
+
});
|
|
20
41
|
});
|
|
21
42
|
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,SAAS,GAAG,KAAK,EAAE,GAA2B,EAAE,IAAkB,EAAE,EAAE;YAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC3F,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACrH,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC;YACpC,OAAO,EAAE,yCAAyC;YAClD,KAAK,EAAE,SAAyB;SACjC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@critical-path/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Type-safe JavaScript/TypeScript client SDK for consuming Critical Path API endpoints",
|
|
5
5
|
"author": "Jack James",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@critical-path/core": "0.
|
|
21
|
+
"@critical-path/core": "0.4.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/node": "^24.0.0",
|
package/src/index.test.ts
CHANGED
|
@@ -20,4 +20,29 @@ describe('@critical-path/client Tests', () => {
|
|
|
20
20
|
expect(projects.length).toBe(1);
|
|
21
21
|
expect(projects[0].name).toBe('Mock Proj');
|
|
22
22
|
});
|
|
23
|
+
|
|
24
|
+
it('fetches workflows and task allowed transitions via client SDK', async () => {
|
|
25
|
+
const mockFetch = async (url: string | URL | Request, init?: RequestInit) => {
|
|
26
|
+
const urlStr = url.toString();
|
|
27
|
+
if (urlStr.endsWith('/workflows')) {
|
|
28
|
+
return new Response(JSON.stringify({ workflows: [{ id: 'wf1', name: 'SDK Workflow' }] }), { status: 200 });
|
|
29
|
+
}
|
|
30
|
+
if (urlStr.endsWith('/tasks/t1/transitions')) {
|
|
31
|
+
return new Response(JSON.stringify({ allowedNextStatuses: ['in_progress', 'canceled'] }), { status: 200 });
|
|
32
|
+
}
|
|
33
|
+
return new Response(JSON.stringify({ error: 'Not found' }), { status: 404 });
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const client = new CriticalPathClient({
|
|
37
|
+
baseUrl: 'http://localhost:3000/api/critical-path',
|
|
38
|
+
fetch: mockFetch as typeof fetch
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const workflows = await client.getWorkflows();
|
|
42
|
+
expect(workflows).toHaveLength(1);
|
|
43
|
+
expect(workflows[0].name).toBe('SDK Workflow');
|
|
44
|
+
|
|
45
|
+
const transitions = await client.getAllowedTaskTransitions('t1');
|
|
46
|
+
expect(transitions).toEqual(['in_progress', 'canceled']);
|
|
47
|
+
});
|
|
23
48
|
});
|
package/src/index.ts
CHANGED
|
@@ -7,7 +7,8 @@ import type {
|
|
|
7
7
|
Iteration,
|
|
8
8
|
Activity,
|
|
9
9
|
Comment,
|
|
10
|
-
TimeEntry
|
|
10
|
+
TimeEntry,
|
|
11
|
+
Workflow
|
|
11
12
|
} from '@critical-path/core';
|
|
12
13
|
|
|
13
14
|
export interface ClientOptions {
|
|
@@ -52,6 +53,40 @@ export class CriticalPathClient {
|
|
|
52
53
|
return response.json();
|
|
53
54
|
}
|
|
54
55
|
|
|
56
|
+
// Workflows
|
|
57
|
+
async getWorkflows(): Promise<Workflow[]> {
|
|
58
|
+
const res = await this.request<{ workflows: Workflow[] }>('/workflows');
|
|
59
|
+
return res.workflows;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async getWorkflow(id: string): Promise<Workflow> {
|
|
63
|
+
const res = await this.request<{ workflow: Workflow }>(`/workflows/${id}`);
|
|
64
|
+
return res.workflow;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async createWorkflow(data: Omit<Workflow, 'id' | 'createdAt' | 'updatedAt'>): Promise<Workflow> {
|
|
68
|
+
const res = await this.request<{ workflow: Workflow }>('/workflows', {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
body: JSON.stringify(data)
|
|
71
|
+
});
|
|
72
|
+
return res.workflow;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async updateWorkflow(id: string, updates: Partial<Workflow>): Promise<Workflow> {
|
|
76
|
+
const res = await this.request<{ workflow: Workflow }>(`/workflows/${id}`, {
|
|
77
|
+
method: 'PATCH',
|
|
78
|
+
body: JSON.stringify(updates)
|
|
79
|
+
});
|
|
80
|
+
return res.workflow;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
async deleteWorkflow(id: string): Promise<boolean> {
|
|
84
|
+
const res = await this.request<{ success: boolean }>(`/workflows/${id}`, {
|
|
85
|
+
method: 'DELETE'
|
|
86
|
+
});
|
|
87
|
+
return res.success;
|
|
88
|
+
}
|
|
89
|
+
|
|
55
90
|
// Projects
|
|
56
91
|
async getProjects(): Promise<Project[]> {
|
|
57
92
|
const res = await this.request<{ projects: Project[] }>('/projects');
|
|
@@ -111,6 +146,11 @@ export class CriticalPathClient {
|
|
|
111
146
|
return res.graph;
|
|
112
147
|
}
|
|
113
148
|
|
|
149
|
+
async getAllowedTaskTransitions(taskId: string): Promise<string[]> {
|
|
150
|
+
const res = await this.request<{ allowedNextStatuses: string[] }>(`/tasks/${encodeURIComponent(taskId)}/transitions`);
|
|
151
|
+
return res.allowedNextStatuses;
|
|
152
|
+
}
|
|
153
|
+
|
|
114
154
|
// Teams
|
|
115
155
|
async getTeams(): Promise<Team[]> {
|
|
116
156
|
const res = await this.request<{ teams: Team[] }>('/teams');
|