@sascha384/tic 4.1.0 → 4.3.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.
Files changed (89) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/app.js +4 -2
  3. package/dist/app.js.map +1 -1
  4. package/dist/auth/ado.js +76 -28
  5. package/dist/auth/ado.js.map +1 -1
  6. package/dist/auth/github.js +57 -24
  7. package/dist/auth/github.js.map +1 -1
  8. package/dist/auth/gitlab.js +54 -23
  9. package/dist/auth/gitlab.js.map +1 -1
  10. package/dist/auth/jira.d.ts +8 -0
  11. package/dist/auth/jira.js +24 -0
  12. package/dist/auth/jira.js.map +1 -0
  13. package/dist/backends/ado/api.d.ts +1 -0
  14. package/dist/backends/ado/api.js +66 -16
  15. package/dist/backends/ado/api.js.map +1 -1
  16. package/dist/backends/ado/index.js +4 -1
  17. package/dist/backends/ado/index.js.map +1 -1
  18. package/dist/backends/factory.js +1 -1
  19. package/dist/backends/factory.js.map +1 -1
  20. package/dist/backends/files/index.js +1 -0
  21. package/dist/backends/files/index.js.map +1 -1
  22. package/dist/backends/github/api.js +61 -17
  23. package/dist/backends/github/api.js.map +1 -1
  24. package/dist/backends/github/index.js +1 -0
  25. package/dist/backends/github/index.js.map +1 -1
  26. package/dist/backends/github/mappers.d.ts +1 -1
  27. package/dist/backends/github/mappers.js +1 -1
  28. package/dist/backends/github/mappers.js.map +1 -1
  29. package/dist/backends/gitlab/api.js +22 -8
  30. package/dist/backends/gitlab/api.js.map +1 -1
  31. package/dist/backends/gitlab/index.js +1 -0
  32. package/dist/backends/gitlab/index.js.map +1 -1
  33. package/dist/backends/jira/api.d.ts +9 -0
  34. package/dist/backends/jira/api.js +89 -0
  35. package/dist/backends/jira/api.js.map +1 -0
  36. package/dist/backends/jira/index.d.ts +10 -2
  37. package/dist/backends/jira/index.js +140 -161
  38. package/dist/backends/jira/index.js.map +1 -1
  39. package/dist/backends/jira/mappers.d.ts +8 -2
  40. package/dist/backends/jira/mappers.js +20 -5
  41. package/dist/backends/jira/mappers.js.map +1 -1
  42. package/dist/backends/shared/api-client.d.ts +1 -0
  43. package/dist/backends/shared/api-client.js +18 -3
  44. package/dist/backends/shared/api-client.js.map +1 -1
  45. package/dist/backends/types.d.ts +1 -0
  46. package/dist/backends/types.js.map +1 -1
  47. package/dist/cli/commands/auth.js +34 -2
  48. package/dist/cli/commands/auth.js.map +1 -1
  49. package/dist/cli/commands/item.js +2 -2
  50. package/dist/cli/commands/item.js.map +1 -1
  51. package/dist/components/AuthPrompt.js +36 -4
  52. package/dist/components/AuthPrompt.js.map +1 -1
  53. package/dist/components/ErrorBoundary.d.ts +14 -0
  54. package/dist/components/ErrorBoundary.js +30 -0
  55. package/dist/components/ErrorBoundary.js.map +1 -0
  56. package/dist/components/Settings.js +82 -17
  57. package/dist/components/Settings.js.map +1 -1
  58. package/dist/components/StatusScreen.js +3 -1
  59. package/dist/components/StatusScreen.js.map +1 -1
  60. package/dist/components/WorkItemForm.js +57 -14
  61. package/dist/components/WorkItemForm.js.map +1 -1
  62. package/dist/components/WorkItemList.js +141 -35
  63. package/dist/components/WorkItemList.js.map +1 -1
  64. package/dist/components/getMarkedDistribution.d.ts +6 -0
  65. package/dist/components/getMarkedDistribution.js +17 -0
  66. package/dist/components/getMarkedDistribution.js.map +1 -0
  67. package/dist/editor.js +0 -1
  68. package/dist/editor.js.map +1 -1
  69. package/dist/hooks/useFormValidation.d.ts +20 -0
  70. package/dist/hooks/useFormValidation.js +146 -0
  71. package/dist/hooks/useFormValidation.js.map +1 -0
  72. package/dist/index.js +2 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/storage/index.js +15 -12
  75. package/dist/storage/index.js.map +1 -1
  76. package/dist/stores/backendDataStore.d.ts +2 -1
  77. package/dist/stores/backendDataStore.js +78 -6
  78. package/dist/stores/backendDataStore.js.map +1 -1
  79. package/dist/stores/recentCommandsStore.js +3 -1
  80. package/dist/stores/recentCommandsStore.js.map +1 -1
  81. package/dist/sync/SyncManager.d.ts +1 -1
  82. package/dist/sync/SyncManager.js +51 -10
  83. package/dist/sync/SyncManager.js.map +1 -1
  84. package/dist/update-checker.js +5 -3
  85. package/dist/update-checker.js.map +1 -1
  86. package/package.json +1 -1
  87. package/dist/backends/jira/acli.d.ts +0 -6
  88. package/dist/backends/jira/acli.js +0 -35
  89. package/dist/backends/jira/acli.js.map +0 -1
@@ -0,0 +1,89 @@
1
+ import { AuthError, BaseApiClient, DEFAULT_TIMEOUT_MS, } from '../shared/api-client.js';
2
+ export class JiraApiClient extends BaseApiClient {
3
+ email;
4
+ constructor(email, token, site) {
5
+ super(token, `https://${site}/rest`);
6
+ this.email = email;
7
+ }
8
+ getAuthHeader() {
9
+ return `Basic ${Buffer.from(`${this.email}:${this.token}`).toString('base64')}`;
10
+ }
11
+ async fetch(method, path, body) {
12
+ const url = this.baseUrl + path;
13
+ const headers = {
14
+ Authorization: this.getAuthHeader(),
15
+ Accept: 'application/json',
16
+ };
17
+ const init = { method, headers };
18
+ if (body !== undefined && ['POST', 'PATCH', 'PUT'].includes(method)) {
19
+ headers['Content-Type'] = 'application/json';
20
+ init.body = JSON.stringify(body);
21
+ }
22
+ const controller = new AbortController();
23
+ const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS);
24
+ let response;
25
+ try {
26
+ response = await globalThis.fetch(url, {
27
+ ...init,
28
+ signal: controller.signal,
29
+ });
30
+ }
31
+ catch (error) {
32
+ if (error instanceof DOMException && error.name === 'AbortError') {
33
+ throw new Error('Request timed out');
34
+ }
35
+ throw error;
36
+ }
37
+ finally {
38
+ clearTimeout(timeout);
39
+ }
40
+ if (response.status === 401) {
41
+ throw new AuthError();
42
+ }
43
+ if (!response.ok) {
44
+ // Try to parse Jira error format for readable messages
45
+ try {
46
+ const text = await response.text();
47
+ const errorBody = JSON.parse(text);
48
+ const messages = [];
49
+ if (errorBody.errorMessages?.length) {
50
+ messages.push(...errorBody.errorMessages);
51
+ }
52
+ if (errorBody.errors) {
53
+ for (const [field, msg] of Object.entries(errorBody.errors)) {
54
+ messages.push(`${field}: ${msg}`);
55
+ }
56
+ }
57
+ if (messages.length > 0) {
58
+ throw new Error(`Jira API error: ${messages.join('; ')}`);
59
+ }
60
+ }
61
+ catch (e) {
62
+ if (e instanceof Error && e.message.startsWith('Jira API error:')) {
63
+ throw e;
64
+ }
65
+ }
66
+ throw new Error(`HTTP ${response.status}: Request failed`);
67
+ }
68
+ return (await response.json());
69
+ }
70
+ async rest(method, path, body) {
71
+ return this.retry(() => this.fetch(method, path, body));
72
+ }
73
+ async *paginate(path) {
74
+ let startAt = 0;
75
+ const separator = path.includes('?') ? '&' : '?';
76
+ while (true) {
77
+ const url = `${path}${separator}startAt=${startAt}&maxResults=50`;
78
+ const response = await this.rest('GET', url);
79
+ if (response.issues.length > 0) {
80
+ yield response.issues;
81
+ }
82
+ startAt += response.issues.length;
83
+ if (startAt >= response.total || response.issues.length === 0) {
84
+ break;
85
+ }
86
+ }
87
+ }
88
+ }
89
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/backends/jira/api.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,20 @@
1
1
  import { BaseBackend } from '../types.js';
2
2
  import type { BackendCapabilities } from '../types.js';
3
3
  import type { WorkItem, NewWorkItem, NewComment, Comment, Template } from '../../types.js';
4
+ /**
5
+ * Escape a value for safe interpolation into a JQL query string.
6
+ * Wraps in single quotes and doubles any embedded single quotes.
7
+ */
8
+ export declare function escapeJqlValue(value: string): string;
4
9
  export declare class JiraBackend extends BaseBackend {
5
- private cwd;
6
10
  private config;
11
+ private api;
7
12
  private cachedSprints;
8
13
  private constructor();
9
14
  protected onCacheInvalidate(): void;
10
- static create(cwd: string): Promise<JiraBackend>;
15
+ static create(root: string, options?: {
16
+ skipAuth?: boolean;
17
+ }): Promise<JiraBackend>;
11
18
  getCapabilities(): BackendCapabilities;
12
19
  getStatuses(): Promise<string[]>;
13
20
  getWorkItemTypes(): Promise<string[]>;
@@ -32,4 +39,5 @@ export declare class JiraBackend extends BaseBackend {
32
39
  updateTemplate(_oldSlug: string, _template: Template): Promise<Template>;
33
40
  deleteTemplate(_slug: string): Promise<void>;
34
41
  private fetchSprints;
42
+ private collectPages;
35
43
  }
@@ -1,6 +1,8 @@
1
1
  import { BaseBackend, UnsupportedOperationError } from '../types.js';
2
- import { acli, acliExec, acliExecSync } from './acli.js';
2
+ import { JiraApiClient } from './api.js';
3
3
  import { readJiraConfig } from './config.js';
4
+ import { getJiraCredentials } from '../../auth/jira.js';
5
+ import { AuthError } from '../shared/api-client.js';
4
6
  import { mapIssueToWorkItem, mapPriorityToJira, mapCommentToComment, } from './mappers.js';
5
7
  function titleCase(s) {
6
8
  return s
@@ -8,22 +10,40 @@ function titleCase(s) {
8
10
  .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
9
11
  .join(' ');
10
12
  }
13
+ function normalizeSite(site) {
14
+ return site.replace(/^https?:\/\//, '');
15
+ }
16
+ /**
17
+ * Escape a value for safe interpolation into a JQL query string.
18
+ * Wraps in single quotes and doubles any embedded single quotes.
19
+ */
20
+ export function escapeJqlValue(value) {
21
+ return `'${value.replace(/'/g, "''")}'`;
22
+ }
11
23
  export class JiraBackend extends BaseBackend {
12
- cwd;
13
24
  config;
25
+ api;
14
26
  cachedSprints = null;
15
- constructor(cwd, config) {
27
+ constructor(config, api) {
16
28
  super(60_000);
17
- this.cwd = cwd;
18
29
  this.config = config;
30
+ this.api = api;
19
31
  }
20
32
  onCacheInvalidate() {
21
33
  this.cachedSprints = null;
22
34
  }
23
- static async create(cwd) {
24
- acliExecSync(['jira', 'auth', 'status'], cwd);
25
- const config = await readJiraConfig(cwd);
26
- return new JiraBackend(cwd, config);
35
+ static async create(root, options) {
36
+ const config = await readJiraConfig(root);
37
+ const site = normalizeSite(config.site);
38
+ const creds = getJiraCredentials(site);
39
+ if (!creds) {
40
+ throw new AuthError(`No Jira credentials found for ${site}. Run "tic auth login --backend jira" first.`);
41
+ }
42
+ const api = new JiraApiClient(creds.email, creds.token, site);
43
+ if (!options?.skipAuth) {
44
+ await api.rest('GET', '/api/3/myself');
45
+ }
46
+ return new JiraBackend(config, api);
27
47
  }
28
48
  getCapabilities() {
29
49
  return {
@@ -51,26 +71,31 @@ export class JiraBackend extends BaseBackend {
51
71
  dependsOn: false,
52
72
  description: false,
53
73
  },
74
+ requiredFields: ['title', 'type'],
54
75
  };
55
76
  }
56
77
  async getStatuses() {
57
- const statuses = await acli([
58
- 'jira',
59
- 'project',
60
- 'statuses',
61
- '--project',
62
- this.config.project,
63
- '--json',
64
- ], this.cwd);
65
- return statuses.map((s) => s.name.toLowerCase());
78
+ const groups = await this.api.rest('GET', `/api/3/project/${this.config.project}/statuses`);
79
+ const seen = new Set();
80
+ const result = [];
81
+ for (const group of groups) {
82
+ for (const s of group.statuses) {
83
+ const lower = s.name.toLowerCase();
84
+ if (!seen.has(lower)) {
85
+ seen.add(lower);
86
+ result.push(lower);
87
+ }
88
+ }
89
+ }
90
+ return result;
66
91
  }
67
92
  async getWorkItemTypes() {
68
- const project = await acli(['jira', 'project', 'view', '--project', this.config.project, '--json'], this.cwd);
93
+ const project = await this.api.rest('GET', `/api/3/project/${this.config.project}`);
69
94
  return project.issueTypes.map((t) => t.name.toLowerCase());
70
95
  }
71
96
  async getAssignees() {
72
97
  try {
73
- const users = await acli(['jira', 'user', 'search', '--project', this.config.project, '--json'], this.cwd);
98
+ const users = await this.api.rest('GET', `/api/3/user/assignable/search?project=${this.config.project}`);
74
99
  return users.map((u) => u.emailAddress);
75
100
  }
76
101
  catch {
@@ -89,17 +114,8 @@ export class JiraBackend extends BaseBackend {
89
114
  async getCurrentIteration() {
90
115
  if (!this.config.boardId)
91
116
  return '';
92
- const sprints = await acli([
93
- 'jira',
94
- 'board',
95
- 'list-sprints',
96
- '--id',
97
- String(this.config.boardId),
98
- '--state',
99
- 'active',
100
- '--json',
101
- ], this.cwd);
102
- return sprints.length > 0 ? sprints[0].name : '';
117
+ const response = await this.api.rest('GET', `/agile/1.0/board/${this.config.boardId}/sprint?state=active`);
118
+ return response.values.length > 0 ? response.values[0].name : '';
103
119
  }
104
120
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
105
121
  async setCurrentIteration(_name) {
@@ -112,30 +128,10 @@ export class JiraBackend extends BaseBackend {
112
128
  const sprint = sprints.find((s) => s.name === iteration);
113
129
  if (!sprint)
114
130
  return [];
115
- const issues = await acli([
116
- 'jira',
117
- 'workitem',
118
- 'search',
119
- '--jql',
120
- `project = ${this.config.project} AND sprint = ${sprint.id}`,
121
- '--fields',
122
- '*all',
123
- '--paginate',
124
- '--json',
125
- ], this.cwd);
131
+ const issues = await this.collectPages(`/api/3/search?jql=${encodeURIComponent(`project = ${escapeJqlValue(this.config.project)} AND sprint = ${sprint.id}`)}&fields=*all`);
126
132
  return issues.map(mapIssueToWorkItem);
127
133
  }
128
- const issues = await acli([
129
- 'jira',
130
- 'workitem',
131
- 'search',
132
- '--jql',
133
- `project = ${this.config.project}`,
134
- '--fields',
135
- '*all',
136
- '--paginate',
137
- '--json',
138
- ], this.cwd);
134
+ const issues = await this.collectPages(`/api/3/search?jql=${encodeURIComponent(`project = ${escapeJqlValue(this.config.project)}`)}&fields=*all`);
139
135
  let items = issues.map(mapIssueToWorkItem);
140
136
  if (iteration) {
141
137
  items = items.filter((i) => i.iteration === iteration);
@@ -143,12 +139,12 @@ export class JiraBackend extends BaseBackend {
143
139
  return items;
144
140
  }
145
141
  async getWorkItem(id) {
146
- const issue = await acli(['jira', 'workitem', 'view', '--key', id, '--fields', '*all', '--json'], this.cwd);
142
+ const issue = await this.api.rest('GET', `/api/3/issue/${id}?fields=*all`);
147
143
  const item = mapIssueToWorkItem(issue);
148
144
  // Fetch comments separately
149
145
  try {
150
- const comments = await acli(['jira', 'workitem', 'comment', 'list', '--key', id, '--json'], this.cwd);
151
- item.comments = comments.map(mapCommentToComment);
146
+ const response = await this.api.rest('GET', `/api/3/issue/${id}/comment`);
147
+ item.comments = response.comments.map(mapCommentToComment);
152
148
  }
153
149
  catch {
154
150
  // Comments may fail — leave empty
@@ -157,56 +153,53 @@ export class JiraBackend extends BaseBackend {
157
153
  }
158
154
  async createWorkItem(data) {
159
155
  this.validateFields(data);
160
- const args = [
161
- 'jira',
162
- 'workitem',
163
- 'create',
164
- '--project',
165
- this.config.project,
166
- '--type',
167
- titleCase(data.type),
168
- '--summary',
169
- data.title,
170
- ];
156
+ const fields = {
157
+ project: { key: this.config.project },
158
+ issuetype: { name: titleCase(data.type) },
159
+ summary: data.title,
160
+ };
171
161
  if (data.description) {
172
- args.push('--description', data.description);
162
+ fields['description'] = {
163
+ type: 'doc',
164
+ version: 1,
165
+ content: [
166
+ {
167
+ type: 'paragraph',
168
+ content: [{ type: 'text', text: data.description }],
169
+ },
170
+ ],
171
+ };
173
172
  }
174
173
  if (data.priority && data.priority !== 'medium') {
175
- args.push('--priority', mapPriorityToJira(data.priority));
174
+ fields['priority'] = { name: mapPriorityToJira(data.priority) };
176
175
  }
177
176
  if (data.assignee) {
178
- args.push('--assignee', data.assignee);
177
+ fields['assignee'] = { id: data.assignee };
179
178
  }
180
179
  if (data.labels.length > 0) {
181
- args.push('--labels', data.labels.join(','));
180
+ fields['labels'] = data.labels;
182
181
  }
183
182
  if (data.parent) {
184
- args.push('--parent', data.parent);
183
+ fields['parent'] = { key: data.parent };
185
184
  }
186
- args.push('--json');
187
- const result = await acli(args, this.cwd);
185
+ const result = await this.api.rest('POST', '/api/3/issue', {
186
+ fields,
187
+ });
188
188
  const key = result.key;
189
189
  // Create dependency links
190
190
  if (data.dependsOn.length > 0) {
191
191
  try {
192
192
  for (const dep of data.dependsOn) {
193
- await acliExec([
194
- 'jira',
195
- 'workitem',
196
- 'link',
197
- 'create',
198
- '--out',
199
- dep,
200
- '--in',
201
- key,
202
- '--type',
203
- 'Blocks',
204
- ], this.cwd);
193
+ await this.api.rest('POST', '/api/3/issueLink', {
194
+ type: { name: 'Blocks' },
195
+ inwardIssue: { key },
196
+ outwardIssue: { key: dep },
197
+ });
205
198
  }
206
199
  }
207
200
  catch (err) {
208
201
  try {
209
- await acliExec(['jira', 'workitem', 'delete', '--key', key, '--yes'], this.cwd);
202
+ await this.api.rest('DELETE', `/api/3/issue/${key}`);
210
203
  }
211
204
  catch {
212
205
  // Best-effort cleanup
@@ -220,76 +213,81 @@ export class JiraBackend extends BaseBackend {
220
213
  }
221
214
  async updateWorkItem(id, data) {
222
215
  this.validateFields(data);
223
- // Handle status transition separately
216
+ // Handle status transition separately — must look up transition ID
224
217
  if (data.status !== undefined) {
225
- await acliExec([
226
- 'jira',
227
- 'workitem',
228
- 'transition',
229
- '--key',
230
- id,
231
- '--status',
232
- titleCase(data.status),
233
- '--yes',
234
- ], this.cwd);
235
- }
236
- // Handle assignee separately
237
- if (data.assignee !== undefined) {
238
- if (data.assignee) {
239
- await acliExec([
240
- 'jira',
241
- 'workitem',
242
- 'assign',
243
- '--key',
244
- id,
245
- '--assignee',
246
- data.assignee,
247
- ], this.cwd);
218
+ const transitionsResponse = await this.api.rest('GET', `/api/3/issue/${id}/transitions`);
219
+ const target = titleCase(data.status);
220
+ const transition = transitionsResponse.transitions.find((t) => t.name === target);
221
+ if (transition) {
222
+ await this.api.rest('POST', `/api/3/issue/${id}/transitions`, {
223
+ transition: { id: transition.id },
224
+ });
248
225
  }
249
226
  else {
250
- await acliExec(['jira', 'workitem', 'assign', '--key', id, '--remove-assignee'], this.cwd);
227
+ throw new Error(`No transition found to status "${target}". Available: ${transitionsResponse.transitions.map((t) => t.name).join(', ')}`);
251
228
  }
252
229
  }
253
- // Handle edit fields (title, description, labels, type)
254
- const editArgs = ['jira', 'workitem', 'edit', '--key', id];
230
+ // Handle edit fields (title, description, labels, type, assignee)
231
+ const fields = {};
255
232
  let hasEdits = false;
256
233
  if (data.title !== undefined) {
257
- editArgs.push('--summary', data.title);
234
+ fields['summary'] = data.title;
258
235
  hasEdits = true;
259
236
  }
260
237
  if (data.description !== undefined) {
261
- editArgs.push('--description', data.description);
238
+ fields['description'] = data.description
239
+ ? {
240
+ type: 'doc',
241
+ version: 1,
242
+ content: [
243
+ {
244
+ type: 'paragraph',
245
+ content: [{ type: 'text', text: data.description }],
246
+ },
247
+ ],
248
+ }
249
+ : null;
262
250
  hasEdits = true;
263
251
  }
264
252
  if (data.labels !== undefined) {
265
- editArgs.push('--labels', data.labels.join(','));
253
+ fields['labels'] = data.labels;
266
254
  hasEdits = true;
267
255
  }
268
256
  if (data.type !== undefined) {
269
- editArgs.push('--type', titleCase(data.type));
257
+ fields['issuetype'] = { name: titleCase(data.type) };
258
+ hasEdits = true;
259
+ }
260
+ if (data.assignee !== undefined) {
261
+ fields['assignee'] = data.assignee ? { id: data.assignee } : null;
262
+ hasEdits = true;
263
+ }
264
+ if (data.priority !== undefined) {
265
+ fields['priority'] = { name: mapPriorityToJira(data.priority) };
270
266
  hasEdits = true;
271
267
  }
272
268
  if (hasEdits) {
273
- await acliExec(editArgs, this.cwd);
269
+ await this.api.rest('PUT', `/api/3/issue/${id}`, { fields });
274
270
  }
275
271
  this.invalidateCache();
276
272
  return this.getWorkItem(id);
277
273
  }
278
274
  async deleteWorkItem(id) {
279
- await acliExec(['jira', 'workitem', 'delete', '--key', id, '--yes'], this.cwd);
275
+ await this.api.rest('DELETE', `/api/3/issue/${id}`);
280
276
  this.invalidateCache();
281
277
  }
282
278
  async addComment(workItemId, comment) {
283
- await acliExec([
284
- 'jira',
285
- 'workitem',
286
- 'comment',
287
- 'create',
288
- '--key',
289
- workItemId,
290
- '--body',
291
- comment.body,
292
- ], this.cwd);
279
+ await this.api.rest('POST', `/api/3/issue/${workItemId}/comment`, {
280
+ body: {
281
+ type: 'doc',
282
+ version: 1,
283
+ content: [
284
+ {
285
+ type: 'paragraph',
286
+ content: [{ type: 'text', text: comment.body }],
287
+ },
288
+ ],
289
+ },
290
+ });
293
291
  return {
294
292
  author: comment.author,
295
293
  date: new Date().toISOString(),
@@ -297,38 +295,19 @@ export class JiraBackend extends BaseBackend {
297
295
  };
298
296
  }
299
297
  async getChildren(id) {
300
- const issues = await acli([
301
- 'jira',
302
- 'workitem',
303
- 'search',
304
- '--jql',
305
- `parent = ${id}`,
306
- '--fields',
307
- '*all',
308
- '--paginate',
309
- '--json',
310
- ], this.cwd);
298
+ const issues = await this.collectPages(`/api/3/search?jql=${encodeURIComponent(`parent = ${id}`)}&fields=*all`);
311
299
  return issues.map(mapIssueToWorkItem);
312
300
  }
313
301
  async getDependents(id) {
314
- const issues = await acli([
315
- 'jira',
316
- 'workitem',
317
- 'search',
318
- '--jql',
319
- `issue in linkedIssues("${id}","is blocked by")`,
320
- '--fields',
321
- '*all',
322
- '--paginate',
323
- '--json',
324
- ], this.cwd);
302
+ const issues = await this.collectPages(`/api/3/search?jql=${encodeURIComponent(`issue in linkedIssues("${id}","is blocked by")`)}&fields=*all`);
325
303
  return issues.map(mapIssueToWorkItem);
326
304
  }
327
305
  getItemUrl(id) {
328
306
  return `${this.config.site}/browse/${id}`;
329
307
  }
330
308
  async openItem(id) {
331
- await acliExec(['jira', 'workitem', 'view', id, '--web'], this.cwd);
309
+ const openModule = await import('open');
310
+ await openModule.default(this.getItemUrl(id));
332
311
  }
333
312
  /* eslint-disable @typescript-eslint/require-await, @typescript-eslint/no-unused-vars */
334
313
  async listTemplates() {
@@ -350,16 +329,16 @@ export class JiraBackend extends BaseBackend {
350
329
  async fetchSprints() {
351
330
  if (this.cachedSprints)
352
331
  return this.cachedSprints;
353
- this.cachedSprints = await acli([
354
- 'jira',
355
- 'board',
356
- 'list-sprints',
357
- '--id',
358
- String(this.config.boardId),
359
- '--paginate',
360
- '--json',
361
- ], this.cwd);
332
+ const response = await this.api.rest('GET', `/agile/1.0/board/${this.config.boardId}/sprint`);
333
+ this.cachedSprints = response.values;
362
334
  return this.cachedSprints;
363
335
  }
336
+ async collectPages(path) {
337
+ const all = [];
338
+ for await (const page of this.api.paginate(path)) {
339
+ all.push(...page);
340
+ }
341
+ return all;
342
+ }
364
343
  }
365
344
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/jira/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backends/jira/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AASrE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC;SACL,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IAClC,MAAM,CAAa;IACnB,GAAG,CAAgB;IAEnB,aAAa,GAAwB,IAAI,CAAC;IAElD,YAAoB,MAAkB,EAAE,GAAkB;QACxD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEkB,iBAAiB;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,IAAY,EACZ,OAAgC;QAEhC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,SAAS,CACjB,iCAAiC,IAAI,8CAA8C,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE9D,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,KAAK;YACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI;YACvC,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;aAChB;YACD,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE;gBACd,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,KAAK;aACnB;YACD,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAChC,KAAK,EACL,kBAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,WAAW,CACjD,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACjC,KAAK,EACL,kBAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CACxC,CAAC;QACF,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC/B,KAAK,EACL,yCAAyC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAC/D,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,KAAK,EACL,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAC9D,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,iDAAiD;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAkB;QACpC,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,kDAAkD;YAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,qBAAqB,kBAAkB,CAAC,aAAa,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,MAAM,CAAC,EAAE,EAAE,CAAC,cAAc,CACpI,CAAC;YACF,OAAO,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,qBAAqB,kBAAkB,CAAC,aAAa,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,CAC1G,CAAC;QACF,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAC/B,KAAK,EACL,gBAAgB,EAAE,cAAc,CACjC,CAAC;QACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEvC,4BAA4B;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,KAAK,EACL,gBAAgB,EAAE,UAAU,CAC7B,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAiB;QACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,MAAM,GAA4B;YACtC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACrC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,aAAa,CAAC,GAAG;gBACtB,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAChC,MAAM,EACN,cAAc,EACd;YACE,MAAM;SACP,CACF,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAEvB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE;wBAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACxB,WAAW,EAAE,EAAE,GAAG,EAAE;wBACpB,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;gBACD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,yCAAyC,GAAG,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3H,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,IAAuB;QACtD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,mEAAmE;QACnE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAE5C,KAAK,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CACzB,CAAC;YACF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE;oBAC5D,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;iBAClC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,kCAAkC,MAAM,iBAAiB,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,WAAW;gBACtC,CAAC,CAAC;oBACE,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;yBACpD;qBACF;iBACF;gBACH,CAAC,CAAC,IAAI,CAAC;YACT,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/B,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,OAAmB;QACtD,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,UAAU,UAAU,EAAE;YAChE,IAAI,EAAE;gBACJ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;qBAChD;iBACF;aACF;SACF,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,EAAU;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,qBAAqB,kBAAkB,CAAC,YAAY,EAAE,EAAE,CAAC,cAAc,CACxE,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,aAAa,CAAC,EAAU;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,qBAAqB,kBAAkB,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,cAAc,CACxG,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAI,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,SAAmB;QACtC,MAAM,IAAI,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAmB;QAEnB,MAAM,IAAI,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,MAAM,IAAI,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,uFAAuF;IAE/E,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,KAAK,EACL,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,SAAS,CACjD,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,YAAY,CAAI,IAAY;QACxC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAI,IAAI,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -1,9 +1,15 @@
1
1
  import type { WorkItem, Comment } from '../../types.js';
2
+ export interface AdfNode {
3
+ type: string;
4
+ text?: string;
5
+ content?: AdfNode[];
6
+ }
7
+ export declare function adfToText(adf: AdfNode | string | null | undefined): string;
2
8
  export interface JiraIssue {
3
9
  key: string;
4
10
  fields: {
5
11
  summary: string;
6
- description: string | null;
12
+ description: unknown;
7
13
  status: {
8
14
  name: string;
9
15
  };
@@ -48,7 +54,7 @@ export interface JiraComment {
48
54
  emailAddress: string;
49
55
  };
50
56
  created: string;
51
- body: string;
57
+ body: unknown;
52
58
  }
53
59
  export interface JiraSprint {
54
60
  id: number;