@hardlydifficult/task-list 1.0.0 → 1.0.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/README.md +62 -54
- package/dist/FullState.d.ts +14 -15
- package/dist/FullState.d.ts.map +1 -1
- package/dist/FullState.js +21 -22
- package/dist/FullState.js.map +1 -1
- package/dist/Project.d.ts +42 -0
- package/dist/Project.d.ts.map +1 -0
- package/dist/Project.js +65 -0
- package/dist/Project.js.map +1 -0
- package/dist/Task.d.ts +9 -8
- package/dist/Task.d.ts.map +1 -1
- package/dist/Task.js +23 -12
- package/dist/Task.js.map +1 -1
- package/dist/TaskListClient.d.ts +15 -7
- package/dist/TaskListClient.d.ts.map +1 -1
- package/dist/TaskListClient.js +11 -0
- package/dist/TaskListClient.js.map +1 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -10
- package/dist/index.js.map +1 -1
- package/dist/linear/LinearTaskListClient.d.ts +21 -0
- package/dist/linear/LinearTaskListClient.d.ts.map +1 -0
- package/dist/linear/LinearTaskListClient.js +184 -0
- package/dist/linear/LinearTaskListClient.js.map +1 -0
- package/dist/linear/index.d.ts +2 -0
- package/dist/linear/index.d.ts.map +1 -0
- package/dist/linear/index.js +6 -0
- package/dist/linear/index.js.map +1 -0
- package/dist/trello/TrelloTaskListClient.d.ts +4 -6
- package/dist/trello/TrelloTaskListClient.d.ts.map +1 -1
- package/dist/trello/TrelloTaskListClient.js +66 -43
- package/dist/trello/TrelloTaskListClient.js.map +1 -1
- package/dist/types.d.ts +31 -38
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/BoardState.d.ts +0 -36
- package/dist/BoardState.d.ts.map +0 -1
- package/dist/BoardState.js +0 -62
- package/dist/BoardState.js.map +0 -1
- package/dist/TaskList.d.ts +0 -20
- package/dist/TaskList.d.ts.map +0 -1
- package/dist/TaskList.js +0 -31
- package/dist/TaskList.js.map +0 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAW3E"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.LinearTaskListClient = exports.TrelloTaskListClient = exports.FullState = exports.Project = exports.Task = exports.TaskListClient = void 0;
|
|
4
4
|
exports.createTaskListClient = createTaskListClient;
|
|
5
5
|
// Core classes
|
|
6
6
|
var TaskListClient_js_1 = require("./TaskListClient.js");
|
|
7
7
|
Object.defineProperty(exports, "TaskListClient", { enumerable: true, get: function () { return TaskListClient_js_1.TaskListClient; } });
|
|
8
8
|
var Task_js_1 = require("./Task.js");
|
|
9
9
|
Object.defineProperty(exports, "Task", { enumerable: true, get: function () { return Task_js_1.Task; } });
|
|
10
|
-
var
|
|
11
|
-
Object.defineProperty(exports, "
|
|
12
|
-
var BoardState_js_1 = require("./BoardState.js");
|
|
13
|
-
Object.defineProperty(exports, "BoardState", { enumerable: true, get: function () { return BoardState_js_1.BoardState; } });
|
|
10
|
+
var Project_js_1 = require("./Project.js");
|
|
11
|
+
Object.defineProperty(exports, "Project", { enumerable: true, get: function () { return Project_js_1.Project; } });
|
|
14
12
|
var FullState_js_1 = require("./FullState.js");
|
|
15
13
|
Object.defineProperty(exports, "FullState", { enumerable: true, get: function () { return FullState_js_1.FullState; } });
|
|
16
14
|
// Platform implementations
|
|
17
15
|
var trello_1 = require("./trello");
|
|
18
16
|
Object.defineProperty(exports, "TrelloTaskListClient", { enumerable: true, get: function () { return trello_1.TrelloTaskListClient; } });
|
|
17
|
+
var linear_1 = require("./linear");
|
|
18
|
+
Object.defineProperty(exports, "LinearTaskListClient", { enumerable: true, get: function () { return linear_1.LinearTaskListClient; } });
|
|
19
|
+
// Factory
|
|
20
|
+
const linear_2 = require("./linear");
|
|
19
21
|
const trello_2 = require("./trello");
|
|
20
22
|
/**
|
|
21
23
|
* Factory function to create a task list client based on config type
|
|
@@ -25,11 +27,13 @@ const trello_2 = require("./trello");
|
|
|
25
27
|
* // Trello (uses env vars by default)
|
|
26
28
|
* const client = createTaskListClient({ type: 'trello' });
|
|
27
29
|
*
|
|
30
|
+
* // Linear (team-scoped)
|
|
31
|
+
* const client = createTaskListClient({ type: 'linear', teamId: 'team-uuid' });
|
|
32
|
+
*
|
|
28
33
|
* // Usage
|
|
29
|
-
* const
|
|
30
|
-
* const
|
|
31
|
-
*
|
|
32
|
-
* await task.update({ name: "Updated task" });
|
|
34
|
+
* const project = await client.findProject("My Project");
|
|
35
|
+
* const task = await project.createTask("New task");
|
|
36
|
+
* await task.update({ status: "done" });
|
|
33
37
|
* ```
|
|
34
38
|
*/
|
|
35
39
|
function createTaskListClient(config) {
|
|
@@ -37,7 +41,7 @@ function createTaskListClient(config) {
|
|
|
37
41
|
case "trello":
|
|
38
42
|
return new trello_2.TrelloTaskListClient(config);
|
|
39
43
|
case "linear":
|
|
40
|
-
|
|
44
|
+
return new linear_2.LinearTaskListClient(config);
|
|
41
45
|
default:
|
|
42
46
|
throw new Error(`Unknown task list provider: ${config.type}`);
|
|
43
47
|
}
|
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":";;;AA2CA,oDAWC;AA5CD,eAAe;AACf,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,qCAAiC;AAAxB,+FAAA,IAAI,OAAA;AACb,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAChB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAElB,2BAA2B;AAC3B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAE7B,UAAU;AACV,qCAAgD;AAEhD,qCAAgD;AAGhD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,oBAAoB,CAAC,MAAsB;IACzD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,IAAI,6BAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,IAAI,6BAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C;YACE,MAAM,IAAI,KAAK,CACb,+BAAgC,MAA2B,CAAC,IAAI,EAAE,CACnE,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FullState } from "../FullState.js";
|
|
2
|
+
import { Project } from "../Project.js";
|
|
3
|
+
import { Task } from "../Task.js";
|
|
4
|
+
import { TaskListClient } from "../TaskListClient.js";
|
|
5
|
+
import type { LinearConfig } from "../types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Linear implementation of TaskListClient.
|
|
8
|
+
* Scoped to a single team — workflow states, labels, and mutations use the configured teamId.
|
|
9
|
+
*/
|
|
10
|
+
export declare class LinearTaskListClient extends TaskListClient {
|
|
11
|
+
private readonly apiKey;
|
|
12
|
+
private readonly teamId;
|
|
13
|
+
constructor(config: LinearConfig);
|
|
14
|
+
private request;
|
|
15
|
+
private toTaskData;
|
|
16
|
+
private createContext;
|
|
17
|
+
getProjects(): Promise<FullState>;
|
|
18
|
+
getProject(projectId: string): Promise<Project>;
|
|
19
|
+
getTask(taskId: string): Promise<Task>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=LinearTaskListClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinearTaskListClient.d.ts","sourceRoot":"","sources":["../../src/linear/LinearTaskListClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AA+FvE;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,YAAY;YAMlB,OAAO;IA4BrB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,aAAa;IAwFf,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAsCjC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgC/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB7C"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LinearTaskListClient = void 0;
|
|
4
|
+
const FullState_js_1 = require("../FullState.js");
|
|
5
|
+
const Project_js_1 = require("../Project.js");
|
|
6
|
+
const Task_js_1 = require("../Task.js");
|
|
7
|
+
const TaskListClient_js_1 = require("../TaskListClient.js");
|
|
8
|
+
const LINEAR_API_URL = "https://api.linear.app/graphql";
|
|
9
|
+
// --- GraphQL query fragments ---
|
|
10
|
+
const ISSUE_FIELDS = `
|
|
11
|
+
id title description url
|
|
12
|
+
state { id }
|
|
13
|
+
team { id }
|
|
14
|
+
project { id }
|
|
15
|
+
labels { nodes { id name color } }
|
|
16
|
+
`;
|
|
17
|
+
/**
|
|
18
|
+
* Linear implementation of TaskListClient.
|
|
19
|
+
* Scoped to a single team — workflow states, labels, and mutations use the configured teamId.
|
|
20
|
+
*/
|
|
21
|
+
class LinearTaskListClient extends TaskListClient_js_1.TaskListClient {
|
|
22
|
+
apiKey;
|
|
23
|
+
teamId;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
super(config);
|
|
26
|
+
this.apiKey = config.apiKey ?? process.env.LINEAR_API_KEY ?? "";
|
|
27
|
+
this.teamId = config.teamId;
|
|
28
|
+
}
|
|
29
|
+
async request(query, variables) {
|
|
30
|
+
const response = await fetch(LINEAR_API_URL, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: {
|
|
33
|
+
"Content-Type": "application/json",
|
|
34
|
+
Authorization: this.apiKey,
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify({ query, variables }),
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
const text = await response.text();
|
|
40
|
+
throw new Error(`Linear API error: ${String(response.status)} ${text}`);
|
|
41
|
+
}
|
|
42
|
+
const json = (await response.json());
|
|
43
|
+
if (json.errors && json.errors.length > 0) {
|
|
44
|
+
throw new Error(`Linear API error: ${json.errors[0].message}`);
|
|
45
|
+
}
|
|
46
|
+
return json.data;
|
|
47
|
+
}
|
|
48
|
+
// --- Mappers: Linear API shapes → platform-agnostic types ---
|
|
49
|
+
toTaskData(issue) {
|
|
50
|
+
return {
|
|
51
|
+
id: issue.id,
|
|
52
|
+
name: issue.title,
|
|
53
|
+
description: issue.description ?? "",
|
|
54
|
+
statusId: issue.state.id,
|
|
55
|
+
projectId: issue.project?.id ?? "",
|
|
56
|
+
labels: issue.labels.nodes.map((l) => ({ id: l.id, name: l.name })),
|
|
57
|
+
url: issue.url,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// --- Context object wired into domain classes ---
|
|
61
|
+
createContext(states, labels) {
|
|
62
|
+
return {
|
|
63
|
+
createTask: async (params) => {
|
|
64
|
+
const input = {
|
|
65
|
+
teamId: this.teamId,
|
|
66
|
+
stateId: params.statusId,
|
|
67
|
+
title: params.name,
|
|
68
|
+
};
|
|
69
|
+
if (params.projectId) {
|
|
70
|
+
input.projectId = params.projectId;
|
|
71
|
+
}
|
|
72
|
+
if (params.description !== undefined) {
|
|
73
|
+
input.description = params.description;
|
|
74
|
+
}
|
|
75
|
+
if (params.labelIds !== undefined && params.labelIds.length > 0) {
|
|
76
|
+
input.labelIds = params.labelIds;
|
|
77
|
+
}
|
|
78
|
+
const result = await this.request(`mutation($input: IssueCreateInput!) {
|
|
79
|
+
issueCreate(input: $input) {
|
|
80
|
+
issue { ${ISSUE_FIELDS} }
|
|
81
|
+
}
|
|
82
|
+
}`, { input });
|
|
83
|
+
return this.toTaskData(result.issueCreate.issue);
|
|
84
|
+
},
|
|
85
|
+
updateTask: async (params) => {
|
|
86
|
+
const input = {};
|
|
87
|
+
if (params.name !== undefined) {
|
|
88
|
+
input.title = params.name;
|
|
89
|
+
}
|
|
90
|
+
if (params.description !== undefined) {
|
|
91
|
+
input.description = params.description;
|
|
92
|
+
}
|
|
93
|
+
if (params.statusId !== undefined) {
|
|
94
|
+
input.stateId = params.statusId;
|
|
95
|
+
}
|
|
96
|
+
if (params.labelIds !== undefined) {
|
|
97
|
+
input.labelIds = params.labelIds;
|
|
98
|
+
}
|
|
99
|
+
const result = await this.request(`mutation($id: String!, $input: IssueUpdateInput!) {
|
|
100
|
+
issueUpdate(id: $id, input: $input) {
|
|
101
|
+
issue { ${ISSUE_FIELDS} }
|
|
102
|
+
}
|
|
103
|
+
}`, { id: params.taskId, input });
|
|
104
|
+
return this.toTaskData(result.issueUpdate.issue);
|
|
105
|
+
},
|
|
106
|
+
resolveStatusId: (name) => {
|
|
107
|
+
const lower = name.toLowerCase();
|
|
108
|
+
const state = states.find((s) => s.name.toLowerCase().includes(lower));
|
|
109
|
+
if (!state) {
|
|
110
|
+
throw new Error(`Status "${name}" not found`);
|
|
111
|
+
}
|
|
112
|
+
return state.id;
|
|
113
|
+
},
|
|
114
|
+
resolveStatusName: (id) => {
|
|
115
|
+
const state = states.find((s) => s.id === id);
|
|
116
|
+
if (!state) {
|
|
117
|
+
throw new Error(`Status with ID "${id}" not found`);
|
|
118
|
+
}
|
|
119
|
+
return state.name;
|
|
120
|
+
},
|
|
121
|
+
resolveLabelId: (name) => {
|
|
122
|
+
const lower = name.toLowerCase();
|
|
123
|
+
const label = labels.find((l) => l.name.toLowerCase().includes(lower));
|
|
124
|
+
if (!label) {
|
|
125
|
+
throw new Error(`Label "${name}" not found`);
|
|
126
|
+
}
|
|
127
|
+
return label.id;
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// --- Abstract method implementations ---
|
|
132
|
+
async getProjects() {
|
|
133
|
+
const data = await this.request(`query($teamId: String!) {
|
|
134
|
+
organization { urlKey }
|
|
135
|
+
team(id: $teamId) {
|
|
136
|
+
projects {
|
|
137
|
+
nodes {
|
|
138
|
+
id name url
|
|
139
|
+
issues(filter: { team: { id: { eq: $teamId } } }) {
|
|
140
|
+
nodes { ${ISSUE_FIELDS} }
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
states { nodes { id name } }
|
|
145
|
+
labels { nodes { id name color } }
|
|
146
|
+
}
|
|
147
|
+
}`, { teamId: this.teamId });
|
|
148
|
+
const ctx = this.createContext(data.team.states.nodes, data.team.labels.nodes);
|
|
149
|
+
const projects = data.team.projects.nodes.map((p) => {
|
|
150
|
+
return new Project_js_1.Project({ id: p.id, name: p.name, url: p.url }, data.team.states.nodes.map((s) => ({ id: s.id, name: s.name })), p.issues.nodes.map((i) => new Task_js_1.Task(this.toTaskData(i), ctx)), data.team.labels.nodes.map((l) => ({ id: l.id, name: l.name })), ctx);
|
|
151
|
+
});
|
|
152
|
+
return new FullState_js_1.FullState(projects);
|
|
153
|
+
}
|
|
154
|
+
async getProject(projectId) {
|
|
155
|
+
const data = await this.request(`query($projectId: String!, $teamId: String!) {
|
|
156
|
+
organization { urlKey }
|
|
157
|
+
project(id: $projectId) {
|
|
158
|
+
id name url
|
|
159
|
+
issues(filter: { team: { id: { eq: $teamId } } }) {
|
|
160
|
+
nodes { ${ISSUE_FIELDS} }
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
team(id: $teamId) {
|
|
164
|
+
states { nodes { id name } }
|
|
165
|
+
labels { nodes { id name color } }
|
|
166
|
+
}
|
|
167
|
+
}`, { projectId, teamId: this.teamId });
|
|
168
|
+
const ctx = this.createContext(data.team.states.nodes, data.team.labels.nodes);
|
|
169
|
+
return new Project_js_1.Project({ id: data.project.id, name: data.project.name, url: data.project.url }, data.team.states.nodes.map((s) => ({ id: s.id, name: s.name })), data.project.issues.nodes.map((i) => new Task_js_1.Task(this.toTaskData(i), ctx)), data.team.labels.nodes.map((l) => ({ id: l.id, name: l.name })), ctx);
|
|
170
|
+
}
|
|
171
|
+
async getTask(taskId) {
|
|
172
|
+
const data = await this.request(`query($id: String!, $teamId: String!) {
|
|
173
|
+
issue(id: $id) { ${ISSUE_FIELDS} }
|
|
174
|
+
team(id: $teamId) {
|
|
175
|
+
states { nodes { id name } }
|
|
176
|
+
labels { nodes { id name color } }
|
|
177
|
+
}
|
|
178
|
+
}`, { id: taskId, teamId: this.teamId });
|
|
179
|
+
const ctx = this.createContext(data.team.states.nodes, data.team.labels.nodes);
|
|
180
|
+
return new Task_js_1.Task(this.toTaskData(data.issue), ctx);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.LinearTaskListClient = LinearTaskListClient;
|
|
184
|
+
//# sourceMappingURL=LinearTaskListClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinearTaskListClient.js","sourceRoot":"","sources":["../../src/linear/LinearTaskListClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linear/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LinearTaskListClient = void 0;
|
|
4
|
+
var LinearTaskListClient_js_1 = require("./LinearTaskListClient.js");
|
|
5
|
+
Object.defineProperty(exports, "LinearTaskListClient", { enumerable: true, get: function () { return LinearTaskListClient_js_1.LinearTaskListClient; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/linear/index.ts"],"names":[],"mappings":";;;AAAA,qEAAiE;AAAxD,+HAAA,oBAAoB,OAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BoardState } from "../BoardState.js";
|
|
2
1
|
import { FullState } from "../FullState.js";
|
|
2
|
+
import { Project } from "../Project.js";
|
|
3
3
|
import { Task } from "../Task.js";
|
|
4
4
|
import { TaskListClient } from "../TaskListClient.js";
|
|
5
5
|
import type { TrelloConfig } from "../types.js";
|
|
@@ -11,12 +11,10 @@ export declare class TrelloTaskListClient extends TaskListClient {
|
|
|
11
11
|
private readonly token;
|
|
12
12
|
constructor(config: TrelloConfig);
|
|
13
13
|
private request;
|
|
14
|
-
private toBoard;
|
|
15
|
-
private toLabel;
|
|
16
14
|
private toTaskData;
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
private createContext;
|
|
16
|
+
getProjects(): Promise<FullState>;
|
|
17
|
+
getProject(projectId: string): Promise<Project>;
|
|
20
18
|
getTask(taskId: string): Promise<Task>;
|
|
21
19
|
}
|
|
22
20
|
//# sourceMappingURL=TrelloTaskListClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrelloTaskListClient.d.ts","sourceRoot":"","sources":["../../src/trello/TrelloTaskListClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TrelloTaskListClient.d.ts","sourceRoot":"","sources":["../../src/trello/TrelloTaskListClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAyB,YAAY,EAAE,MAAM,aAAa,CAAC;AAmCvE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,EAAE,YAAY;YAMlB,OAAO;IA0BrB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,aAAa;IA0Ef,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAyBjC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS7C"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TrelloTaskListClient = void 0;
|
|
4
|
-
const BoardState_js_1 = require("../BoardState.js");
|
|
5
4
|
const FullState_js_1 = require("../FullState.js");
|
|
5
|
+
const Project_js_1 = require("../Project.js");
|
|
6
6
|
const Task_js_1 = require("../Task.js");
|
|
7
|
-
const TaskList_js_1 = require("../TaskList.js");
|
|
8
7
|
const TaskListClient_js_1 = require("../TaskListClient.js");
|
|
9
8
|
const TRELLO_API_BASE = "https://api.trello.com/1";
|
|
10
9
|
/**
|
|
@@ -36,33 +35,30 @@ class TrelloTaskListClient extends TaskListClient_js_1.TaskListClient {
|
|
|
36
35
|
return response.json();
|
|
37
36
|
}
|
|
38
37
|
// --- Mappers: Trello API shapes → platform-agnostic types ---
|
|
39
|
-
toBoard(b) {
|
|
40
|
-
return { id: b.id, name: b.name, url: b.url };
|
|
41
|
-
}
|
|
42
|
-
toLabel(l) {
|
|
43
|
-
return { id: l.id, name: l.name, color: l.color };
|
|
44
|
-
}
|
|
45
38
|
toTaskData(c) {
|
|
46
39
|
return {
|
|
47
40
|
id: c.id,
|
|
48
41
|
name: c.name,
|
|
49
42
|
description: c.desc,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
labels: c.labels.map((l) =>
|
|
43
|
+
statusId: c.idList,
|
|
44
|
+
projectId: c.idBoard,
|
|
45
|
+
labels: c.labels.map((l) => ({ id: l.id, name: l.name })),
|
|
53
46
|
url: c.url,
|
|
54
47
|
};
|
|
55
48
|
}
|
|
56
|
-
// ---
|
|
57
|
-
|
|
49
|
+
// --- Context object wired into domain classes ---
|
|
50
|
+
createContext(lists, labels) {
|
|
58
51
|
return {
|
|
59
|
-
createTask: async (
|
|
60
|
-
const body = {
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
createTask: async (params) => {
|
|
53
|
+
const body = {
|
|
54
|
+
name: params.name,
|
|
55
|
+
idList: params.statusId,
|
|
56
|
+
};
|
|
57
|
+
if (params.description !== undefined) {
|
|
58
|
+
body.desc = params.description;
|
|
63
59
|
}
|
|
64
|
-
if (labelIds !== undefined && labelIds.length > 0) {
|
|
65
|
-
body.idLabels = labelIds.join(",");
|
|
60
|
+
if (params.labelIds !== undefined && params.labelIds.length > 0) {
|
|
61
|
+
body.idLabels = params.labelIds.join(",");
|
|
66
62
|
}
|
|
67
63
|
const card = await this.request("/cards", {
|
|
68
64
|
method: "POST",
|
|
@@ -70,56 +66,83 @@ class TrelloTaskListClient extends TaskListClient_js_1.TaskListClient {
|
|
|
70
66
|
});
|
|
71
67
|
return this.toTaskData(card);
|
|
72
68
|
},
|
|
73
|
-
updateTask: async (
|
|
69
|
+
updateTask: async (params) => {
|
|
74
70
|
const body = {};
|
|
75
|
-
if (name !== undefined) {
|
|
76
|
-
body.name = name;
|
|
71
|
+
if (params.name !== undefined) {
|
|
72
|
+
body.name = params.name;
|
|
77
73
|
}
|
|
78
|
-
if (description !== undefined) {
|
|
79
|
-
body.desc = description;
|
|
74
|
+
if (params.description !== undefined) {
|
|
75
|
+
body.desc = params.description;
|
|
80
76
|
}
|
|
81
|
-
if (
|
|
82
|
-
body.idList =
|
|
77
|
+
if (params.statusId !== undefined) {
|
|
78
|
+
body.idList = params.statusId;
|
|
83
79
|
}
|
|
84
|
-
if (labelIds !== undefined) {
|
|
85
|
-
body.idLabels = labelIds.join(",");
|
|
80
|
+
if (params.labelIds !== undefined) {
|
|
81
|
+
body.idLabels = params.labelIds.join(",");
|
|
86
82
|
}
|
|
87
|
-
const card = await this.request(`/cards/${taskId}`, {
|
|
83
|
+
const card = await this.request(`/cards/${params.taskId}`, {
|
|
88
84
|
method: "PUT",
|
|
89
85
|
body: JSON.stringify(body),
|
|
90
86
|
});
|
|
91
87
|
return this.toTaskData(card);
|
|
92
88
|
},
|
|
89
|
+
resolveStatusId: (name) => {
|
|
90
|
+
const lower = name.toLowerCase();
|
|
91
|
+
const list = lists.find((l) => l.name.toLowerCase().includes(lower));
|
|
92
|
+
if (!list) {
|
|
93
|
+
throw new Error(`Status "${name}" not found`);
|
|
94
|
+
}
|
|
95
|
+
return list.id;
|
|
96
|
+
},
|
|
97
|
+
resolveStatusName: (id) => {
|
|
98
|
+
const list = lists.find((l) => l.id === id);
|
|
99
|
+
if (!list) {
|
|
100
|
+
throw new Error(`Status with ID "${id}" not found`);
|
|
101
|
+
}
|
|
102
|
+
return list.name;
|
|
103
|
+
},
|
|
104
|
+
resolveLabelId: (name) => {
|
|
105
|
+
const lower = name.toLowerCase();
|
|
106
|
+
const label = labels.find((l) => l.name.toLowerCase().includes(lower));
|
|
107
|
+
if (!label) {
|
|
108
|
+
throw new Error(`Label "${name}" not found`);
|
|
109
|
+
}
|
|
110
|
+
return label.id;
|
|
111
|
+
},
|
|
93
112
|
};
|
|
94
113
|
}
|
|
95
114
|
// --- Abstract method implementations ---
|
|
96
|
-
async
|
|
97
|
-
const ops = this.createOperations();
|
|
115
|
+
async getProjects() {
|
|
98
116
|
const trelloBoards = await this.request("/members/me/boards");
|
|
99
|
-
const
|
|
117
|
+
const projects = await Promise.all(trelloBoards.map(async (tb) => {
|
|
100
118
|
const [lists, cards, labels] = await Promise.all([
|
|
101
119
|
this.request(`/boards/${tb.id}/lists`),
|
|
102
120
|
this.request(`/boards/${tb.id}/cards`),
|
|
103
121
|
this.request(`/boards/${tb.id}/labels`),
|
|
104
122
|
]);
|
|
105
|
-
|
|
123
|
+
const ctx = this.createContext(lists, labels);
|
|
124
|
+
return new Project_js_1.Project({ id: tb.id, name: tb.name, url: tb.url }, lists.map((l) => ({ id: l.id, name: l.name })), cards.map((c) => new Task_js_1.Task(this.toTaskData(c), ctx)), labels.map((l) => ({ id: l.id, name: l.name })), ctx);
|
|
106
125
|
}));
|
|
107
|
-
return new FullState_js_1.FullState(
|
|
126
|
+
return new FullState_js_1.FullState(projects);
|
|
108
127
|
}
|
|
109
|
-
async
|
|
110
|
-
const ops = this.createOperations();
|
|
128
|
+
async getProject(projectId) {
|
|
111
129
|
const [tb, trelloLists, trelloCards, trelloLabels] = await Promise.all([
|
|
112
|
-
this.request(`/boards/${
|
|
113
|
-
this.request(`/boards/${
|
|
114
|
-
this.request(`/boards/${
|
|
115
|
-
this.request(`/boards/${
|
|
130
|
+
this.request(`/boards/${projectId}`),
|
|
131
|
+
this.request(`/boards/${projectId}/lists`),
|
|
132
|
+
this.request(`/boards/${projectId}/cards`),
|
|
133
|
+
this.request(`/boards/${projectId}/labels`),
|
|
116
134
|
]);
|
|
117
|
-
|
|
135
|
+
const ctx = this.createContext(trelloLists, trelloLabels);
|
|
136
|
+
return new Project_js_1.Project({ id: tb.id, name: tb.name, url: tb.url }, trelloLists.map((l) => ({ id: l.id, name: l.name })), trelloCards.map((c) => new Task_js_1.Task(this.toTaskData(c), ctx)), trelloLabels.map((l) => ({ id: l.id, name: l.name })), ctx);
|
|
118
137
|
}
|
|
119
138
|
async getTask(taskId) {
|
|
120
|
-
const ops = this.createOperations();
|
|
121
139
|
const card = await this.request(`/cards/${taskId}`);
|
|
122
|
-
|
|
140
|
+
const [lists, labels] = await Promise.all([
|
|
141
|
+
this.request(`/boards/${card.idBoard}/lists`),
|
|
142
|
+
this.request(`/boards/${card.idBoard}/labels`),
|
|
143
|
+
]);
|
|
144
|
+
const ctx = this.createContext(lists, labels);
|
|
145
|
+
return new Task_js_1.Task(this.toTaskData(card), ctx);
|
|
123
146
|
}
|
|
124
147
|
}
|
|
125
148
|
exports.TrelloTaskListClient = TrelloTaskListClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrelloTaskListClient.js","sourceRoot":"","sources":["../../src/trello/TrelloTaskListClient.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"TrelloTaskListClient.js","sourceRoot":"","sources":["../../src/trello/TrelloTaskListClient.ts"],"names":[],"mappings":"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"}
|