@generacy-ai/generacy-plugin-jira 0.0.0-preview-20260304013206
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/LICENSE +191 -0
- package/dist/client.d.ts +81 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +163 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/operations/comments.d.ts +35 -0
- package/dist/operations/comments.d.ts.map +1 -0
- package/dist/operations/comments.js +128 -0
- package/dist/operations/comments.js.map +1 -0
- package/dist/operations/custom-fields.d.ts +48 -0
- package/dist/operations/custom-fields.d.ts.map +1 -0
- package/dist/operations/custom-fields.js +184 -0
- package/dist/operations/custom-fields.js.map +1 -0
- package/dist/operations/issues.d.ts +34 -0
- package/dist/operations/issues.d.ts.map +1 -0
- package/dist/operations/issues.js +215 -0
- package/dist/operations/issues.js.map +1 -0
- package/dist/operations/search.d.ts +47 -0
- package/dist/operations/search.d.ts.map +1 -0
- package/dist/operations/search.js +174 -0
- package/dist/operations/search.js.map +1 -0
- package/dist/operations/sprints.d.ts +54 -0
- package/dist/operations/sprints.d.ts.map +1 -0
- package/dist/operations/sprints.js +196 -0
- package/dist/operations/sprints.js.map +1 -0
- package/dist/operations/transitions.d.ts +41 -0
- package/dist/operations/transitions.d.ts.map +1 -0
- package/dist/operations/transitions.js +135 -0
- package/dist/operations/transitions.js.map +1 -0
- package/dist/plugin.d.ts +221 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +403 -0
- package/dist/plugin.js.map +1 -0
- package/dist/types/config.d.ts +149 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +33 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/custom-fields.d.ts +48 -0
- package/dist/types/custom-fields.d.ts.map +1 -0
- package/dist/types/custom-fields.js +2 -0
- package/dist/types/custom-fields.js.map +1 -0
- package/dist/types/events.d.ts +250 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/issues.d.ts +139 -0
- package/dist/types/issues.d.ts.map +1 -0
- package/dist/types/issues.js +2 -0
- package/dist/types/issues.js.map +1 -0
- package/dist/types/projects.d.ts +48 -0
- package/dist/types/projects.d.ts.map +1 -0
- package/dist/types/projects.js +2 -0
- package/dist/types/projects.js.map +1 -0
- package/dist/types/sprints.d.ts +26 -0
- package/dist/types/sprints.d.ts.map +1 -0
- package/dist/types/sprints.js +2 -0
- package/dist/types/sprints.js.map +1 -0
- package/dist/types/workflows.d.ts +60 -0
- package/dist/types/workflows.d.ts.map +1 -0
- package/dist/types/workflows.js +2 -0
- package/dist/types/workflows.js.map +1 -0
- package/dist/utils/adf.d.ts +26 -0
- package/dist/utils/adf.d.ts.map +1 -0
- package/dist/utils/adf.js +104 -0
- package/dist/utils/adf.js.map +1 -0
- package/dist/utils/errors.d.ts +60 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +117 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/jql-builder.d.ts +148 -0
- package/dist/utils/jql-builder.d.ts.map +1 -0
- package/dist/utils/jql-builder.js +264 -0
- package/dist/utils/jql-builder.js.map +1 -0
- package/dist/utils/validation.d.ts +31 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +75 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/webhooks/handler.d.ts +80 -0
- package/dist/webhooks/handler.d.ts.map +1 -0
- package/dist/webhooks/handler.js +130 -0
- package/dist/webhooks/handler.js.map +1 -0
- package/dist/webhooks/parser.d.ts +34 -0
- package/dist/webhooks/parser.d.ts.map +1 -0
- package/dist/webhooks/parser.js +155 -0
- package/dist/webhooks/parser.js.map +1 -0
- package/dist/webhooks/types.d.ts +94 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/dist/webhooks/types.js +2 -0
- package/dist/webhooks/types.js.map +1 -0
- package/dist/webhooks/verify.d.ts +53 -0
- package/dist/webhooks/verify.d.ts.map +1 -0
- package/dist/webhooks/verify.js +140 -0
- package/dist/webhooks/verify.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { JiraClient } from '../client.js';
|
|
2
|
+
import type { JiraIssue, SearchOptions } from '../types/issues.js';
|
|
3
|
+
/**
|
|
4
|
+
* Search operations for JQL queries
|
|
5
|
+
*/
|
|
6
|
+
export declare class SearchOperations {
|
|
7
|
+
private readonly client;
|
|
8
|
+
constructor(client: JiraClient);
|
|
9
|
+
/**
|
|
10
|
+
* Search issues using JQL with async iterator for memory-efficient pagination
|
|
11
|
+
*/
|
|
12
|
+
search(jql: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
|
|
13
|
+
/**
|
|
14
|
+
* Search and return all results as an array
|
|
15
|
+
* Note: Use search() generator for large result sets to avoid memory issues
|
|
16
|
+
*/
|
|
17
|
+
searchAll(jql: string, options?: SearchOptions): Promise<JiraIssue[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Count issues matching a JQL query
|
|
20
|
+
*/
|
|
21
|
+
count(jql: string): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Search issues by project
|
|
24
|
+
*/
|
|
25
|
+
byProject(projectKey: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
|
|
26
|
+
/**
|
|
27
|
+
* Search issues by assignee
|
|
28
|
+
*/
|
|
29
|
+
byAssignee(accountId: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
|
|
30
|
+
/**
|
|
31
|
+
* Search issues by status
|
|
32
|
+
*/
|
|
33
|
+
byStatus(statusName: string, projectKey?: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
|
|
34
|
+
/**
|
|
35
|
+
* Search issues by sprint
|
|
36
|
+
*/
|
|
37
|
+
bySprint(sprintId: number, options?: SearchOptions): AsyncGenerator<JiraIssue>;
|
|
38
|
+
/**
|
|
39
|
+
* Search issues updated since a date
|
|
40
|
+
*/
|
|
41
|
+
updatedSince(date: Date, projectKey?: string, options?: SearchOptions): AsyncGenerator<JiraIssue>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create search operations instance
|
|
45
|
+
*/
|
|
46
|
+
export declare function createSearchOperations(client: JiraClient): SearchOperations;
|
|
47
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/operations/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EAOd,MAAM,oBAAoB,CAAC;AAkE5B;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAsC9E;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQ3E;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAczC;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAIjF;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAIjF;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAQrG;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;IAI9E;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;CAQlG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAE3E"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { wrapJiraError } from '../utils/errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Map Jira API response to JiraIssue (simplified for search results)
|
|
4
|
+
*/
|
|
5
|
+
function mapSearchIssue(raw) {
|
|
6
|
+
const fields = raw.fields;
|
|
7
|
+
return {
|
|
8
|
+
id: raw.id,
|
|
9
|
+
key: raw.key,
|
|
10
|
+
self: raw.self,
|
|
11
|
+
summary: fields.summary ?? '',
|
|
12
|
+
description: fields.description ?? null,
|
|
13
|
+
status: fields.status ?? { id: '', name: '', description: null, statusCategory: { id: 0, key: 'new', name: '', colorName: '' } },
|
|
14
|
+
issueType: fields.issuetype ?? { id: '', name: '', description: '', iconUrl: '', subtask: false, hierarchyLevel: 0 },
|
|
15
|
+
priority: fields.priority ?? { id: '', name: '', iconUrl: '' },
|
|
16
|
+
reporter: fields.reporter ?? { accountId: '', displayName: '', emailAddress: null, avatarUrls: { '16x16': '', '24x24': '', '32x32': '', '48x48': '' }, active: true },
|
|
17
|
+
assignee: fields.assignee ?? null,
|
|
18
|
+
project: fields.project ?? { id: '', key: '', name: '', self: '' },
|
|
19
|
+
parent: fields.parent ?? null,
|
|
20
|
+
subtasks: fields.subtasks ?? [],
|
|
21
|
+
linkedIssues: fields.issuelinks ?? [],
|
|
22
|
+
created: fields.created ?? '',
|
|
23
|
+
updated: fields.updated ?? '',
|
|
24
|
+
dueDate: fields.duedate ?? null,
|
|
25
|
+
sprint: extractSprint(fields),
|
|
26
|
+
labels: fields.labels ?? [],
|
|
27
|
+
components: fields.components ?? [],
|
|
28
|
+
customFields: extractCustomFields(fields),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Extract sprint from issue fields
|
|
33
|
+
*/
|
|
34
|
+
function extractSprint(fields) {
|
|
35
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
36
|
+
if (key.startsWith('customfield_') && Array.isArray(value) && value.length > 0) {
|
|
37
|
+
const first = value[0];
|
|
38
|
+
if (first && typeof first === 'object' && 'state' in first && 'name' in first) {
|
|
39
|
+
return first;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Extract custom fields from issue fields
|
|
47
|
+
*/
|
|
48
|
+
function extractCustomFields(fields) {
|
|
49
|
+
const customFields = {};
|
|
50
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
51
|
+
if (key.startsWith('customfield_')) {
|
|
52
|
+
customFields[key] = value;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return customFields;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Search operations for JQL queries
|
|
59
|
+
*/
|
|
60
|
+
export class SearchOperations {
|
|
61
|
+
client;
|
|
62
|
+
constructor(client) {
|
|
63
|
+
this.client = client;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Search issues using JQL with async iterator for memory-efficient pagination
|
|
67
|
+
*/
|
|
68
|
+
async *search(jql, options) {
|
|
69
|
+
const pageSize = options?.pageSize ?? 50;
|
|
70
|
+
const fields = options?.fields ?? ['*all'];
|
|
71
|
+
const expand = options?.expand ?? [];
|
|
72
|
+
const validateQuery = options?.validateQuery ?? true;
|
|
73
|
+
let startAt = options?.startAt ?? 0;
|
|
74
|
+
try {
|
|
75
|
+
while (true) {
|
|
76
|
+
const response = await this.client.v3.issueSearch.searchForIssuesUsingJql({
|
|
77
|
+
jql,
|
|
78
|
+
startAt,
|
|
79
|
+
maxResults: pageSize,
|
|
80
|
+
fields,
|
|
81
|
+
expand: expand.join(',') || undefined,
|
|
82
|
+
validateQuery: validateQuery ? 'strict' : 'none',
|
|
83
|
+
});
|
|
84
|
+
const issues = response.issues ?? [];
|
|
85
|
+
for (const issue of issues) {
|
|
86
|
+
yield mapSearchIssue(issue);
|
|
87
|
+
}
|
|
88
|
+
// Check if we've fetched all items
|
|
89
|
+
const total = response.total ?? 0;
|
|
90
|
+
startAt += issues.length;
|
|
91
|
+
if (issues.length < pageSize || startAt >= total) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
throw wrapJiraError(error, `JQL search failed: ${jql}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Search and return all results as an array
|
|
102
|
+
* Note: Use search() generator for large result sets to avoid memory issues
|
|
103
|
+
*/
|
|
104
|
+
async searchAll(jql, options) {
|
|
105
|
+
const results = [];
|
|
106
|
+
for await (const issue of this.search(jql, options)) {
|
|
107
|
+
results.push(issue);
|
|
108
|
+
}
|
|
109
|
+
return results;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Count issues matching a JQL query
|
|
113
|
+
*/
|
|
114
|
+
async count(jql) {
|
|
115
|
+
try {
|
|
116
|
+
const response = await this.client.v3.issueSearch.searchForIssuesUsingJql({
|
|
117
|
+
jql,
|
|
118
|
+
startAt: 0,
|
|
119
|
+
maxResults: 0,
|
|
120
|
+
fields: ['key'],
|
|
121
|
+
});
|
|
122
|
+
return response.total ?? 0;
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
throw wrapJiraError(error, `JQL count failed: ${jql}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Search issues by project
|
|
130
|
+
*/
|
|
131
|
+
byProject(projectKey, options) {
|
|
132
|
+
return this.search(`project = "${projectKey}"`, options);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Search issues by assignee
|
|
136
|
+
*/
|
|
137
|
+
byAssignee(accountId, options) {
|
|
138
|
+
return this.search(`assignee = "${accountId}"`, options);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Search issues by status
|
|
142
|
+
*/
|
|
143
|
+
byStatus(statusName, projectKey, options) {
|
|
144
|
+
let jql = `status = "${statusName}"`;
|
|
145
|
+
if (projectKey) {
|
|
146
|
+
jql += ` AND project = "${projectKey}"`;
|
|
147
|
+
}
|
|
148
|
+
return this.search(jql, options);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Search issues by sprint
|
|
152
|
+
*/
|
|
153
|
+
bySprint(sprintId, options) {
|
|
154
|
+
return this.search(`sprint = ${sprintId}`, options);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Search issues updated since a date
|
|
158
|
+
*/
|
|
159
|
+
updatedSince(date, projectKey, options) {
|
|
160
|
+
const dateStr = date.toISOString().split('T')[0];
|
|
161
|
+
let jql = `updated >= "${dateStr}"`;
|
|
162
|
+
if (projectKey) {
|
|
163
|
+
jql += ` AND project = "${projectKey}"`;
|
|
164
|
+
}
|
|
165
|
+
return this.search(jql, options);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Create search operations instance
|
|
170
|
+
*/
|
|
171
|
+
export function createSearchOperations(client) {
|
|
172
|
+
return new SearchOperations(client);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/operations/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { JiraClient } from '../client.js';
|
|
2
|
+
import type { Sprint, SprintState, AddToSprintParams } from '../types/sprints.js';
|
|
3
|
+
import type { Board } from '../types/projects.js';
|
|
4
|
+
/**
|
|
5
|
+
* Sprint operations (requires Agile API)
|
|
6
|
+
*/
|
|
7
|
+
export declare class SprintOperations {
|
|
8
|
+
private readonly client;
|
|
9
|
+
constructor(client: JiraClient);
|
|
10
|
+
/**
|
|
11
|
+
* Get the active sprint for a board
|
|
12
|
+
*/
|
|
13
|
+
getActiveSprint(boardId: number): Promise<Sprint | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Get all sprints for a board
|
|
16
|
+
*/
|
|
17
|
+
getSprintsForBoard(boardId: number, state?: SprintState): Promise<Sprint[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Get a sprint by ID
|
|
20
|
+
*/
|
|
21
|
+
getSprint(sprintId: number): Promise<Sprint>;
|
|
22
|
+
/**
|
|
23
|
+
* Add an issue to a sprint
|
|
24
|
+
*/
|
|
25
|
+
addIssueToSprint(issueKey: string, sprintId: number): Promise<void>;
|
|
26
|
+
addIssueToSprint(params: AddToSprintParams): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Add multiple issues to a sprint
|
|
29
|
+
*/
|
|
30
|
+
addIssuesToSprint(issueKeys: string[], sprintId: number): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Remove an issue from its current sprint (move to backlog)
|
|
33
|
+
*/
|
|
34
|
+
removeFromSprint(issueKey: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Get issues in a sprint
|
|
37
|
+
*/
|
|
38
|
+
getIssuesInSprint(sprintId: number, options?: {
|
|
39
|
+
fields?: string[];
|
|
40
|
+
}): Promise<string[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Get all boards for a project
|
|
43
|
+
*/
|
|
44
|
+
getBoardsForProject(projectKey: string): Promise<Board[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Get a board by ID
|
|
47
|
+
*/
|
|
48
|
+
getBoard(boardId: number): Promise<Board>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create sprint operations instance
|
|
52
|
+
*/
|
|
53
|
+
export declare function createSprintOperations(client: JiraClient): SprintOperations;
|
|
54
|
+
//# sourceMappingURL=sprints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprints.d.ts","sourceRoot":"","sources":["../../src/operations/sprints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAkClD;;GAEG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgB9D;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAajF;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAclD;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACnE,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhE;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7E;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAa7F;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAY/D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;CAahD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAE3E"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { ensureIssueKey } from '../utils/validation.js';
|
|
2
|
+
import { wrapJiraError, JiraNotFoundError } from '../utils/errors.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map API response to Sprint
|
|
5
|
+
*/
|
|
6
|
+
function mapSprint(raw) {
|
|
7
|
+
return {
|
|
8
|
+
id: raw.id,
|
|
9
|
+
self: raw.self,
|
|
10
|
+
state: raw.state,
|
|
11
|
+
name: raw.name,
|
|
12
|
+
startDate: raw.startDate ?? null,
|
|
13
|
+
endDate: raw.endDate ?? null,
|
|
14
|
+
completeDate: raw.completeDate ?? null,
|
|
15
|
+
originBoardId: raw.originBoardId,
|
|
16
|
+
goal: raw.goal ?? null,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Map API response to Board
|
|
21
|
+
*/
|
|
22
|
+
function mapBoard(raw) {
|
|
23
|
+
return {
|
|
24
|
+
id: raw.id,
|
|
25
|
+
self: raw.self,
|
|
26
|
+
name: raw.name,
|
|
27
|
+
type: raw.type,
|
|
28
|
+
location: raw.location,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sprint operations (requires Agile API)
|
|
33
|
+
*/
|
|
34
|
+
export class SprintOperations {
|
|
35
|
+
client;
|
|
36
|
+
constructor(client) {
|
|
37
|
+
this.client = client;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get the active sprint for a board
|
|
41
|
+
*/
|
|
42
|
+
async getActiveSprint(boardId) {
|
|
43
|
+
try {
|
|
44
|
+
const response = await this.client.agile.board.getAllSprints({
|
|
45
|
+
boardId,
|
|
46
|
+
state: 'active',
|
|
47
|
+
});
|
|
48
|
+
const sprints = response.values ?? [];
|
|
49
|
+
if (sprints.length === 0) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return mapSprint(sprints[0]);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
throw wrapJiraError(error, `Failed to get active sprint for board ${boardId}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get all sprints for a board
|
|
60
|
+
*/
|
|
61
|
+
async getSprintsForBoard(boardId, state) {
|
|
62
|
+
try {
|
|
63
|
+
const response = await this.client.agile.board.getAllSprints({
|
|
64
|
+
boardId,
|
|
65
|
+
state,
|
|
66
|
+
});
|
|
67
|
+
const sprints = response.values ?? [];
|
|
68
|
+
return sprints.map((s) => mapSprint(s));
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw wrapJiraError(error, `Failed to get sprints for board ${boardId}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get a sprint by ID
|
|
76
|
+
*/
|
|
77
|
+
async getSprint(sprintId) {
|
|
78
|
+
try {
|
|
79
|
+
const response = await this.client.agile.sprint.getSprint({
|
|
80
|
+
sprintId,
|
|
81
|
+
});
|
|
82
|
+
return mapSprint(response);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (typeof error === 'object' && error !== null && 'status' in error && error.status === 404) {
|
|
86
|
+
throw new JiraNotFoundError('Sprint', sprintId.toString(), error);
|
|
87
|
+
}
|
|
88
|
+
throw wrapJiraError(error, `Failed to get sprint ${sprintId}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async addIssueToSprint(issueKeyOrParams, sprintId) {
|
|
92
|
+
let key;
|
|
93
|
+
let sprint;
|
|
94
|
+
if (typeof issueKeyOrParams === 'string') {
|
|
95
|
+
key = ensureIssueKey(issueKeyOrParams);
|
|
96
|
+
sprint = sprintId;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
key = ensureIssueKey(issueKeyOrParams.issueKey);
|
|
100
|
+
sprint = issueKeyOrParams.sprintId;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
await this.client.agile.sprint.moveIssuesToSprintAndRank({
|
|
104
|
+
sprintId: sprint,
|
|
105
|
+
issues: [key],
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
throw wrapJiraError(error, `Failed to add ${key} to sprint ${sprint}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Add multiple issues to a sprint
|
|
114
|
+
*/
|
|
115
|
+
async addIssuesToSprint(issueKeys, sprintId) {
|
|
116
|
+
const keys = issueKeys.map(ensureIssueKey);
|
|
117
|
+
try {
|
|
118
|
+
await this.client.agile.sprint.moveIssuesToSprintAndRank({
|
|
119
|
+
sprintId,
|
|
120
|
+
issues: keys,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
throw wrapJiraError(error, `Failed to add issues to sprint ${sprintId}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Remove an issue from its current sprint (move to backlog)
|
|
129
|
+
*/
|
|
130
|
+
async removeFromSprint(issueKey) {
|
|
131
|
+
const key = ensureIssueKey(issueKey);
|
|
132
|
+
try {
|
|
133
|
+
await this.client.agile.backlog.moveIssuesToBacklog({
|
|
134
|
+
issues: [key],
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
throw wrapJiraError(error, `Failed to remove ${key} from sprint`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get issues in a sprint
|
|
143
|
+
*/
|
|
144
|
+
async getIssuesInSprint(sprintId, options) {
|
|
145
|
+
try {
|
|
146
|
+
const response = await this.client.agile.sprint.getIssuesForSprint({
|
|
147
|
+
sprintId,
|
|
148
|
+
fields: options?.fields ?? ['key'],
|
|
149
|
+
});
|
|
150
|
+
const issues = (response.issues ?? []);
|
|
151
|
+
return issues.map((i) => i.key);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
throw wrapJiraError(error, `Failed to get issues for sprint ${sprintId}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get all boards for a project
|
|
159
|
+
*/
|
|
160
|
+
async getBoardsForProject(projectKey) {
|
|
161
|
+
try {
|
|
162
|
+
const response = await this.client.agile.board.getAllBoards({
|
|
163
|
+
projectKeyOrId: projectKey,
|
|
164
|
+
});
|
|
165
|
+
const boards = (response.values ?? []);
|
|
166
|
+
return boards.map(mapBoard);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
throw wrapJiraError(error, `Failed to get boards for project ${projectKey}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get a board by ID
|
|
174
|
+
*/
|
|
175
|
+
async getBoard(boardId) {
|
|
176
|
+
try {
|
|
177
|
+
const response = await this.client.agile.board.getBoard({
|
|
178
|
+
boardId,
|
|
179
|
+
});
|
|
180
|
+
return mapBoard(response);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
if (typeof error === 'object' && error !== null && 'status' in error && error.status === 404) {
|
|
184
|
+
throw new JiraNotFoundError('Board', boardId.toString(), error);
|
|
185
|
+
}
|
|
186
|
+
throw wrapJiraError(error, `Failed to get board ${boardId}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Create sprint operations instance
|
|
192
|
+
*/
|
|
193
|
+
export function createSprintOperations(client) {
|
|
194
|
+
return new SprintOperations(client);
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=sprints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../src/operations/sprints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { JiraClient } from '../client.js';
|
|
2
|
+
import type { Transition, TransitionParams, JiraStatus } from '../types/workflows.js';
|
|
3
|
+
/**
|
|
4
|
+
* Transition (workflow) operations
|
|
5
|
+
*/
|
|
6
|
+
export declare class TransitionOperations {
|
|
7
|
+
private readonly client;
|
|
8
|
+
constructor(client: JiraClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get available transitions for an issue
|
|
11
|
+
*/
|
|
12
|
+
getTransitions(issueKey: string): Promise<Transition[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Execute a transition on an issue
|
|
15
|
+
*/
|
|
16
|
+
transition(issueKey: string, transitionId: string, options?: {
|
|
17
|
+
fields?: Record<string, unknown>;
|
|
18
|
+
comment?: string;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
transition(issueKey: string, params: TransitionParams): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Transition an issue by target status name
|
|
23
|
+
*/
|
|
24
|
+
transitionToStatus(issueKey: string, targetStatusName: string, options?: {
|
|
25
|
+
fields?: Record<string, unknown>;
|
|
26
|
+
comment?: string;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get the current status of an issue
|
|
30
|
+
*/
|
|
31
|
+
getStatus(issueKey: string): Promise<JiraStatus>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a transition is available for an issue
|
|
34
|
+
*/
|
|
35
|
+
isTransitionAvailable(issueKey: string, transitionName: string): Promise<boolean>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create transition operations instance
|
|
39
|
+
*/
|
|
40
|
+
export declare function createTransitionOperations(client: JiraClient): TransitionOperations;
|
|
41
|
+
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/operations/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AAqBvG;;GAEG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAc7D;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACnI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3E;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrJ;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBtD;;OAEG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAOxF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAEnF"}
|