@yadsh/dsh-web-fetch-authenticated 0.2.0 → 0.3.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 +66 -3
- package/compatibility.json +2 -2
- package/lib/adapters/confluence.js +406 -0
- package/lib/adapters/confluence.js.map +1 -0
- package/lib/adapters/index.js +65 -0
- package/lib/adapters/index.js.map +1 -0
- package/lib/adapters/jira.js +511 -0
- package/lib/adapters/jira.js.map +1 -0
- package/lib/adapters/markup.js +221 -0
- package/lib/adapters/markup.js.map +1 -0
- package/lib/client/index.js +5 -4
- package/lib/client/index.js.map +1 -1
- package/lib/client/sections.js +43 -16
- package/lib/client/sections.js.map +1 -1
- package/lib/client.js +149 -29
- package/lib/client.js.map +1 -1
- package/lib/config.js +15 -0
- package/lib/config.js.map +1 -1
- package/lib/errors.js +5 -0
- package/lib/errors.js.map +1 -1
- package/lib/index.js +10 -9
- package/lib/index.js.map +1 -1
- package/lib/provider.js +7 -3
- package/lib/provider.js.map +1 -1
- package/lib/rule-validation.js +22 -0
- package/lib/rule-validation.js.map +1 -1
- package/lib/testing.js +7 -5
- package/lib/testing.js.map +1 -1
- package/lib/typert.host.js +6 -4
- package/lib/typert.remote-client.js +5 -3
- package/lib/types/adapters/confluence.d.ts +46 -0
- package/lib/types/adapters/index.d.ts +30 -0
- package/lib/types/adapters/jira.d.ts +55 -0
- package/lib/types/adapters/markup.d.ts +31 -0
- package/lib/types/client/sections.d.ts +9 -3
- package/lib/types/errors.d.ts +3 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/types.d.ts +31 -0
- package/package.json +30 -27
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jira content adapter (SPEC §15.2): recognize `/browse/<ISSUE-KEY>` style
|
|
3
|
+
* URLs, fetch the issue through the Jira REST API with the SAME authenticated
|
|
4
|
+
* transport (so network policy, credentials, and limits apply unchanged), and
|
|
5
|
+
* normalize the response into compact Markdown text — one dense block of the
|
|
6
|
+
* fields the model actually needs instead of a page of application chrome.
|
|
7
|
+
* Server/Data Center issues carry wiki-markup descriptions; Cloud issues
|
|
8
|
+
* carry Atlassian Document Format bodies; both convert to Markdown here.
|
|
9
|
+
* @module adapters/jira
|
|
10
|
+
*/
|
|
11
|
+
import * as errors from '../errors.js';
|
|
12
|
+
/** Jira issue keys: two-plus letters, then digits (`PROJ-123`, `ABC1-4`). */
|
|
13
|
+
const ISSUE_KEY_PATTERN = /^[A-Z][A-Z0-9]*-\d+$/u;
|
|
14
|
+
/**
|
|
15
|
+
* Extract an issue key from a URL path. Recognizes `/browse/KEY` at any depth
|
|
16
|
+
* (deployments under `/jira/browse/…`) and `/issues/KEY`. Returns `undefined`
|
|
17
|
+
* for URLs the adapter cannot map, so the caller falls back to raw HTML.
|
|
18
|
+
*/
|
|
19
|
+
export function extractIssueKey(pathname) {
|
|
20
|
+
for (const segment of pathname.split('/')) {
|
|
21
|
+
if (segment.length > 0 && ISSUE_KEY_PATTERN.test(segment.toUpperCase()) && segment.includes('-')) {
|
|
22
|
+
return segment.toUpperCase();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
/** The REST fields a normalized issue text uses; `comment` only when enabled. */
|
|
28
|
+
function fieldList(adapter) {
|
|
29
|
+
const fields = ['summary', 'status', 'assignee', 'reporter', 'priority', 'labels', 'components', 'created', 'updated'];
|
|
30
|
+
if (adapter.includeLinks)
|
|
31
|
+
fields.push('issuelinks');
|
|
32
|
+
if (adapter.includeComments)
|
|
33
|
+
fields.push('comment');
|
|
34
|
+
return fields.join(',');
|
|
35
|
+
}
|
|
36
|
+
/** Build the REST issue URL for the configured flavor. */
|
|
37
|
+
export function issueApiUrl(origin, key, adapter, includeQuery = true) {
|
|
38
|
+
const path = adapter.jiraFlavor === 'cloud' ? `/rest/api/3/issue/${key}` : `/rest/api/2/issue/${key}`;
|
|
39
|
+
const url = new URL(path, origin);
|
|
40
|
+
if (includeQuery)
|
|
41
|
+
url.searchParams.set('fields', fieldList(adapter));
|
|
42
|
+
return url;
|
|
43
|
+
}
|
|
44
|
+
/** REST paging path of the issue's comments, used by the tester's diagnostics. */
|
|
45
|
+
export function commentApiPath(key, adapter) {
|
|
46
|
+
return adapter.jiraFlavor === 'cloud' ? `/rest/api/3/issue/${key}/comment` : `/rest/api/2/issue/${key}/comment`;
|
|
47
|
+
}
|
|
48
|
+
function userName(user) {
|
|
49
|
+
if (user === null || user === undefined)
|
|
50
|
+
return undefined;
|
|
51
|
+
for (const value of [user.displayName, user.name, user.emailAddress]) {
|
|
52
|
+
if (typeof value === 'string' && value.length > 0)
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
function fieldName(field) {
|
|
58
|
+
const name = field === null || field === undefined ? undefined : field.name;
|
|
59
|
+
return typeof name === 'string' && name.length > 0 ? name : undefined;
|
|
60
|
+
}
|
|
61
|
+
/** Fetch a Jira issue and normalize it into Markdown text (SPEC §15.2). */
|
|
62
|
+
export async function fetchIssueMarkdown(requestUrl, adapter, fetchJson) {
|
|
63
|
+
const key = extractIssueKey(requestUrl.pathname);
|
|
64
|
+
if (key === undefined)
|
|
65
|
+
throw errors.adapterFailed(`URL path "${requestUrl.pathname}" does not contain a Jira issue key`);
|
|
66
|
+
const apiUrl = issueApiUrl(requestUrl.origin, key, adapter);
|
|
67
|
+
const response = await fetchJson(apiUrl);
|
|
68
|
+
if (response.statusCode < 200 || response.statusCode >= 300) {
|
|
69
|
+
// Non-2xx stays a RESULT (the seam contract): the model sees why the
|
|
70
|
+
// REST fetch did not yield an issue, never a thrown half-state.
|
|
71
|
+
return {
|
|
72
|
+
statusCode: response.statusCode,
|
|
73
|
+
markdown: `[Jira] The Jira REST API returned HTTP ${response.statusCode} for issue ${key} at ${apiUrl.pathname}.`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const issue = asIssue(response.data, apiUrl.pathname);
|
|
77
|
+
return { statusCode: response.statusCode, markdown: renderIssue(key, issue, adapter) };
|
|
78
|
+
}
|
|
79
|
+
function asIssue(data, path) {
|
|
80
|
+
if (typeof data !== 'object' || data === null) {
|
|
81
|
+
throw errors.adapterFailed(`Jira REST response at ${path} is not a JSON object`);
|
|
82
|
+
}
|
|
83
|
+
const record = data;
|
|
84
|
+
if (typeof record.fields !== 'object' || record.fields === null) {
|
|
85
|
+
throw errors.adapterFailed(`Jira REST response at ${path} has no fields object`);
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
...(typeof record.key === 'string' ? { key: record.key } : {}),
|
|
89
|
+
fields: record.fields,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function renderIssue(key, issue, adapter) {
|
|
93
|
+
const fields = issue.fields;
|
|
94
|
+
const lines = [];
|
|
95
|
+
const summary = typeof fields.summary === 'string' ? fields.summary : '';
|
|
96
|
+
lines.push(`# ${issue.key ?? key}${summary.length > 0 ? `: ${summary}` : ''}`);
|
|
97
|
+
lines.push('');
|
|
98
|
+
const facts = [];
|
|
99
|
+
const status = fieldName(fields.status);
|
|
100
|
+
if (status !== undefined)
|
|
101
|
+
facts.push(`Status: ${status}`);
|
|
102
|
+
const assignee = userName(fields.assignee);
|
|
103
|
+
if (assignee !== undefined)
|
|
104
|
+
facts.push(`Assignee: ${assignee}`);
|
|
105
|
+
const reporter = userName(fields.reporter);
|
|
106
|
+
if (reporter !== undefined)
|
|
107
|
+
facts.push(`Reporter: ${reporter}`);
|
|
108
|
+
const priority = fieldName(fields.priority);
|
|
109
|
+
if (priority !== undefined)
|
|
110
|
+
facts.push(`Priority: ${priority}`);
|
|
111
|
+
if (Array.isArray(fields.labels) && fields.labels.length > 0) {
|
|
112
|
+
facts.push(`Labels: ${fields.labels.filter((label) => typeof label === 'string').join(', ')}`);
|
|
113
|
+
}
|
|
114
|
+
if (Array.isArray(fields.components) && fields.components.length > 0) {
|
|
115
|
+
const names = fields.components
|
|
116
|
+
.map(component => (typeof component === 'object' && component !== null ? component.name : undefined))
|
|
117
|
+
.filter((name) => typeof name === 'string');
|
|
118
|
+
if (names.length > 0)
|
|
119
|
+
facts.push(`Components: ${names.join(', ')}`);
|
|
120
|
+
}
|
|
121
|
+
if (typeof fields.created === 'string')
|
|
122
|
+
facts.push(`Created: ${fields.created.slice(0, 10)}`);
|
|
123
|
+
if (typeof fields.updated === 'string')
|
|
124
|
+
facts.push(`Updated: ${fields.updated.slice(0, 10)}`);
|
|
125
|
+
if (facts.length > 0) {
|
|
126
|
+
for (const fact of facts)
|
|
127
|
+
lines.push(`- ${fact}`);
|
|
128
|
+
lines.push('');
|
|
129
|
+
}
|
|
130
|
+
if (adapter.includeLinks) {
|
|
131
|
+
const links = renderIssueLinks(fields.issuelinks);
|
|
132
|
+
if (links.length > 0) {
|
|
133
|
+
lines.push('## Issue links');
|
|
134
|
+
lines.push(...links);
|
|
135
|
+
lines.push('');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const description = renderDescription(fields.description);
|
|
139
|
+
if (description.length > 0) {
|
|
140
|
+
lines.push('## Description');
|
|
141
|
+
lines.push(description);
|
|
142
|
+
lines.push('');
|
|
143
|
+
}
|
|
144
|
+
if (adapter.includeComments) {
|
|
145
|
+
const comments = renderComments(fields.comment);
|
|
146
|
+
if (comments.length > 0) {
|
|
147
|
+
lines.push('## Comments');
|
|
148
|
+
lines.push(...comments);
|
|
149
|
+
lines.push('');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return lines.join('\n').trimEnd();
|
|
153
|
+
}
|
|
154
|
+
function renderIssueLinks(links) {
|
|
155
|
+
if (!Array.isArray(links))
|
|
156
|
+
return [];
|
|
157
|
+
const out = [];
|
|
158
|
+
for (const link of links) {
|
|
159
|
+
if (typeof link !== 'object' || link === null)
|
|
160
|
+
continue;
|
|
161
|
+
const record = link;
|
|
162
|
+
const type = record.type;
|
|
163
|
+
if (type === undefined || typeof type !== 'object')
|
|
164
|
+
continue;
|
|
165
|
+
if (record.outwardIssue !== undefined && typeof type.outward === 'string') {
|
|
166
|
+
const target = record.outwardIssue.key;
|
|
167
|
+
if (typeof target === 'string')
|
|
168
|
+
out.push(`- ${type.outward} [${target}]`);
|
|
169
|
+
}
|
|
170
|
+
if (record.inwardIssue !== undefined && typeof type.inward === 'string') {
|
|
171
|
+
const target = record.inwardIssue.key;
|
|
172
|
+
if (typeof target === 'string')
|
|
173
|
+
out.push(`- ${type.inward} [${target}]`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
/** Convert a description body (wiki markup or ADF) into Markdown. */
|
|
179
|
+
export function renderDescription(body) {
|
|
180
|
+
if (typeof body === 'string')
|
|
181
|
+
return wikiMarkupToMarkdown(body);
|
|
182
|
+
if (body === null || body === undefined)
|
|
183
|
+
return '';
|
|
184
|
+
if (typeof body === 'object')
|
|
185
|
+
return adfToMarkdown(body);
|
|
186
|
+
return '';
|
|
187
|
+
}
|
|
188
|
+
function renderComments(comment) {
|
|
189
|
+
if (typeof comment !== 'object' || comment === null)
|
|
190
|
+
return [];
|
|
191
|
+
const comments = comment.comments;
|
|
192
|
+
if (!Array.isArray(comments))
|
|
193
|
+
return [];
|
|
194
|
+
const out = [];
|
|
195
|
+
for (const entry of comments) {
|
|
196
|
+
if (typeof entry !== 'object' || entry === null)
|
|
197
|
+
continue;
|
|
198
|
+
const record = entry;
|
|
199
|
+
const author = userName(record.author) ?? 'unknown';
|
|
200
|
+
const date = typeof record.created === 'string' ? record.created.slice(0, 10) : '';
|
|
201
|
+
const body = renderDescription(record.body);
|
|
202
|
+
out.push(`### ${author}${date.length > 0 ? ` — ${date}` : ''}`);
|
|
203
|
+
out.push(body.length > 0 ? body : '_empty_');
|
|
204
|
+
out.push('');
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|
|
208
|
+
// ---- Jira wiki markup → Markdown (Server/DC descriptions and comments) ----
|
|
209
|
+
/**
|
|
210
|
+
* Convert Jira wiki markup to Markdown. Handles the heading, list, table,
|
|
211
|
+
* block, and code constructs that occur in issue descriptions; inline markup
|
|
212
|
+
* converts conservatively and unknown macros pass through as text.
|
|
213
|
+
*/
|
|
214
|
+
export function wikiMarkupToMarkdown(source) {
|
|
215
|
+
if (source.trim().length === 0)
|
|
216
|
+
return '';
|
|
217
|
+
const lines = source.replace(/\r\n?/gu, '\n').split('\n');
|
|
218
|
+
const out = [];
|
|
219
|
+
let inCode;
|
|
220
|
+
let inQuote = false;
|
|
221
|
+
let tableRows;
|
|
222
|
+
const flushTable = () => {
|
|
223
|
+
if (tableRows === undefined)
|
|
224
|
+
return;
|
|
225
|
+
const rows = tableRows.map(row => row.split('|').slice(1, -1));
|
|
226
|
+
const width = Math.max(...rows.map(row => row.length), 1);
|
|
227
|
+
const emit = (cells) => `| ${Array.from({ length: width }, (_, index) => (cells[index] ?? '').trim()).join(' | ')} |`;
|
|
228
|
+
for (const [index, cells] of rows.entries()) {
|
|
229
|
+
out.push(emit(cells));
|
|
230
|
+
if (index === 0)
|
|
231
|
+
out.push(`| ${Array.from({ length: width }, () => '---').join(' | ')} |`);
|
|
232
|
+
}
|
|
233
|
+
tableRows = undefined;
|
|
234
|
+
};
|
|
235
|
+
const closeQuote = () => {
|
|
236
|
+
if (inQuote) {
|
|
237
|
+
inQuote = false;
|
|
238
|
+
out.push('');
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
for (const line of lines) {
|
|
242
|
+
if (inCode !== undefined) {
|
|
243
|
+
if (line.trim() === `{${inCode.tag}}`) {
|
|
244
|
+
out.push('```');
|
|
245
|
+
inCode = undefined;
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
out.push(line);
|
|
249
|
+
}
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const fence = /^\{(code|noformat)(?::([^}]*))?\}$/u.exec(line.trim());
|
|
253
|
+
if (fence !== null && fence[1] !== undefined) {
|
|
254
|
+
flushTable();
|
|
255
|
+
closeQuote();
|
|
256
|
+
const tag = fence[1];
|
|
257
|
+
const params = fence[2] ?? '';
|
|
258
|
+
inCode = { tag };
|
|
259
|
+
const lang = tag === 'code' ? params.split('|')[0]?.replace(/^lang/i, '') ?? '' : '';
|
|
260
|
+
out.push(lang.length > 0 ? '```' + lang : '```');
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
const trimmed = line.trim();
|
|
264
|
+
if (trimmed.startsWith('||') && trimmed.endsWith('||')) {
|
|
265
|
+
tableRows = [`|${trimmed.slice(2, -2).replace(/\|\|/gu, '|')}|`];
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
if (trimmed.startsWith('|') && trimmed.endsWith('|')) {
|
|
269
|
+
tableRows = tableRows ?? [];
|
|
270
|
+
tableRows.push(`|${trimmed.slice(1, -1)}|`);
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
flushTable();
|
|
274
|
+
if (trimmed.length === 0) {
|
|
275
|
+
closeQuote();
|
|
276
|
+
out.push('');
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
const heading = /^h([1-6])\.\s+(.*)$/u.exec(trimmed);
|
|
280
|
+
if (heading !== null) {
|
|
281
|
+
closeQuote();
|
|
282
|
+
const level = Math.min(Number(heading[1] ?? '1') + 1, 6);
|
|
283
|
+
out.push(`${'#'.repeat(level)} ${heading[2] ?? ''}`);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (trimmed === '----') {
|
|
287
|
+
closeQuote();
|
|
288
|
+
out.push('---');
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (trimmed.startsWith('bq. ')) {
|
|
292
|
+
if (!inQuote)
|
|
293
|
+
inQuote = true;
|
|
294
|
+
out.push(`> ${trimmed.slice(4)}`);
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
if (trimmed === '{quote}') {
|
|
298
|
+
closeQuote();
|
|
299
|
+
inQuote = true;
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
const listMatch = /^([*#]+)\s+(.*)$/u.exec(trimmed);
|
|
303
|
+
if (listMatch !== null) {
|
|
304
|
+
const depth = (listMatch[1] ?? '').length - 1;
|
|
305
|
+
const indent = ' '.repeat(depth);
|
|
306
|
+
const bullet = (listMatch[1] ?? '').endsWith('#') ? '1.' : '-';
|
|
307
|
+
out.push(`${indent}${bullet} ${listMatch[2] ?? ''}`);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
if (inQuote)
|
|
311
|
+
out.push(`> ${trimmed}`);
|
|
312
|
+
else
|
|
313
|
+
out.push(wikiInlineToMarkdown(trimmed));
|
|
314
|
+
}
|
|
315
|
+
flushTable();
|
|
316
|
+
closeQuote();
|
|
317
|
+
return out.join('\n').replace(/\n{3,}/gu, '\n\n').trim();
|
|
318
|
+
}
|
|
319
|
+
/** Convert inline wiki markup (bold, italic, code, links) to Markdown. */
|
|
320
|
+
function isBareUrl(text) {
|
|
321
|
+
return /^https?:\/\//iu.test(text.trim());
|
|
322
|
+
}
|
|
323
|
+
function wikiInlineToMarkdown(text) {
|
|
324
|
+
let out = text;
|
|
325
|
+
// One pass over wiki links so later inline rules cannot re-match converted
|
|
326
|
+
// markdown brackets: `[label|url]` → `[label](url)`, bare `[url]` → autolink.
|
|
327
|
+
out = out.replace(/\[([^\]]+)\]/gu, (match, inner) => {
|
|
328
|
+
const pipe = inner.indexOf('|');
|
|
329
|
+
if (pipe >= 0) {
|
|
330
|
+
const label = inner.slice(0, pipe).trim();
|
|
331
|
+
const target = inner.slice(pipe + 1).trim();
|
|
332
|
+
return label.length > 0 ? `[${label}](${target})` : `<${target}>`;
|
|
333
|
+
}
|
|
334
|
+
return isBareUrl(inner) ? `<${inner.trim()}>` : match;
|
|
335
|
+
});
|
|
336
|
+
out = out.replace(/\{color:[^}]*\}/gu, '').replace(/\{color\}/gu, '');
|
|
337
|
+
out = out.replace(/!([^!\s]+)!/gu, '`$1`');
|
|
338
|
+
out = out.replace(/\{\{([^}]+)\}\}/gu, '`$1`');
|
|
339
|
+
out = out.replace(/\{([^{}:]+)[^{}]*\}/gu, '');
|
|
340
|
+
out = out.replace(/\*\*([^*]+)\*\*/gu, '**$1**');
|
|
341
|
+
out = out.replace(/(^|[\s(])\*([^*\s][^*]*)\*/gu, '$1**$2**');
|
|
342
|
+
out = out.replace(/(^|[\s(])_([^_\s][^_]*)_/gu, '$1*$2*');
|
|
343
|
+
out = out.replace(/\?\?([^?]+)\?\?/gu, '*$1*');
|
|
344
|
+
out = out.replace(/\+\+([^+]+)\+\+/gu, '__$1__');
|
|
345
|
+
out = out.replace(/\^([^^]+)\^/gu, '^$1^');
|
|
346
|
+
out = out.replace(/~([^~\s]+)~/gu, '~$1~');
|
|
347
|
+
return out.trim();
|
|
348
|
+
}
|
|
349
|
+
function adfNode(node) {
|
|
350
|
+
return typeof node === 'object' && node !== null ? node : undefined;
|
|
351
|
+
}
|
|
352
|
+
function adfChildren(node) {
|
|
353
|
+
return Array.isArray(node.content) ? node.content.map(adfNode).filter((child) => child !== undefined) : [];
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Convert an ADF document to Markdown. Recognizes the standard text block
|
|
357
|
+
* structure (paragraphs, headings, lists, code, quotes, tables); unknown node
|
|
358
|
+
* types render their descendant text so content is never silently dropped.
|
|
359
|
+
*/
|
|
360
|
+
export function adfToMarkdown(document) {
|
|
361
|
+
const root = adfNode(document);
|
|
362
|
+
if (root === undefined || root.type !== 'doc') {
|
|
363
|
+
const text = adfNodeText(adfNode(document));
|
|
364
|
+
return text.trim();
|
|
365
|
+
}
|
|
366
|
+
const blocks = (Array.isArray(root.content) ? root.content : [])
|
|
367
|
+
.map(adfNode)
|
|
368
|
+
.filter((node) => node !== undefined)
|
|
369
|
+
.map(adfBlock)
|
|
370
|
+
.filter(block => block.length > 0);
|
|
371
|
+
return blocks.join('\n\n').trim();
|
|
372
|
+
}
|
|
373
|
+
function adfBlock(node) {
|
|
374
|
+
switch (node.type) {
|
|
375
|
+
case 'paragraph': {
|
|
376
|
+
const text = adfInline(adfChildren(node));
|
|
377
|
+
return text.trim().length === 0 ? '' : text;
|
|
378
|
+
}
|
|
379
|
+
case 'heading': {
|
|
380
|
+
const level = Math.min(Math.max(Number(node.attrs?.level) || 1, 1), 6);
|
|
381
|
+
return `${'#'.repeat(level)} ${adfInline(adfChildren(node)).trim()}`;
|
|
382
|
+
}
|
|
383
|
+
case 'codeBlock': {
|
|
384
|
+
const language = typeof node.attrs?.language === 'string' ? node.attrs.language : '';
|
|
385
|
+
return '```' + language + '\n' + adfNodeText(node) + '\n```';
|
|
386
|
+
}
|
|
387
|
+
case 'blockQuote':
|
|
388
|
+
return adfChildren(node).map(adfBlock).filter(block => block.length > 0).map(block => block.split('\n').map(line => `> ${line}`).join('\n')).join('\n>\n');
|
|
389
|
+
case 'bulletList':
|
|
390
|
+
return adfList(adfChildren(node), '-', 0);
|
|
391
|
+
case 'orderedList':
|
|
392
|
+
return adfList(adfChildren(node), '1.', 0);
|
|
393
|
+
case 'table':
|
|
394
|
+
return adfTable(node);
|
|
395
|
+
case 'rule':
|
|
396
|
+
return '---';
|
|
397
|
+
case 'mediaSingle': {
|
|
398
|
+
const media = adfChildren(node).find(child => child.type === 'media');
|
|
399
|
+
const alt = typeof media?.attrs?.text === 'string' ? media.attrs.text : 'attachment';
|
|
400
|
+
return `_[${alt}]_`;
|
|
401
|
+
}
|
|
402
|
+
default: {
|
|
403
|
+
const text = adfInline(adfChildren(node));
|
|
404
|
+
if (text.trim().length > 0)
|
|
405
|
+
return text;
|
|
406
|
+
const plain = adfNodeText(node);
|
|
407
|
+
return plain.trim();
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
function adfList(items, marker, depth) {
|
|
412
|
+
const out = [];
|
|
413
|
+
items.forEach((item, index) => {
|
|
414
|
+
if (item.type !== 'listItem') {
|
|
415
|
+
const text = adfInline(adfChildren(item));
|
|
416
|
+
if (text.trim().length > 0)
|
|
417
|
+
out.push(`${' '.repeat(depth)}${marker} ${text.trim()}`);
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const parts = adfChildren(item);
|
|
421
|
+
const first = parts[0];
|
|
422
|
+
const text = first === undefined ? '' : adfBlock(first).replace(/\n/gu, ' ').trim();
|
|
423
|
+
const bullet = marker === '1.' ? `${index + 1}.` : marker;
|
|
424
|
+
if (text.length > 0)
|
|
425
|
+
out.push(`${' '.repeat(depth)}${bullet} ${text}`);
|
|
426
|
+
for (const nested of parts.slice(1)) {
|
|
427
|
+
const block = adfBlock(nested);
|
|
428
|
+
if (block.length === 0)
|
|
429
|
+
continue;
|
|
430
|
+
if (nested.type === 'bulletList' || nested.type === 'orderedList') {
|
|
431
|
+
out.push(adfList(adfChildren(nested), nested.type === 'orderedList' ? '1.' : '-', depth + 1));
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
out.push(block);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
return out.join('\n');
|
|
439
|
+
}
|
|
440
|
+
function adfTable(table) {
|
|
441
|
+
const rows = adfChildren(table).filter(row => row.type === 'tableRow');
|
|
442
|
+
const cellsOf = (row) => adfChildren(row).map(cell => adfInline(adfChildren(cell)).replace(/\|/gu, '\\|').trim());
|
|
443
|
+
const [header, ...body] = rows.map(cellsOf);
|
|
444
|
+
if (header === undefined || header.length === 0)
|
|
445
|
+
return '';
|
|
446
|
+
const width = header.length;
|
|
447
|
+
const pad = (cells) => {
|
|
448
|
+
const next = [...cells];
|
|
449
|
+
while (next.length < width)
|
|
450
|
+
next.push('');
|
|
451
|
+
return next.slice(0, width);
|
|
452
|
+
};
|
|
453
|
+
const lines = [`| ${pad(header).join(' | ')} |`];
|
|
454
|
+
if (body.length > 0)
|
|
455
|
+
lines.push(`| ${header.map(() => '---').join(' | ')} |`);
|
|
456
|
+
for (const row of body)
|
|
457
|
+
lines.push(`| ${pad(row).join(' | ')} |`);
|
|
458
|
+
return lines.join('\n');
|
|
459
|
+
}
|
|
460
|
+
/** Render inline ADF content (text runs with marks, breaks, mentions). */
|
|
461
|
+
function adfInline(nodes) {
|
|
462
|
+
let out = '';
|
|
463
|
+
for (const node of nodes) {
|
|
464
|
+
if (node.type === 'hardBreak') {
|
|
465
|
+
out += '\n';
|
|
466
|
+
continue;
|
|
467
|
+
}
|
|
468
|
+
if (node.type === 'mention') {
|
|
469
|
+
out += `@${typeof node.attrs?.text === 'string' ? node.attrs.text : 'user'}`;
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
if (node.type === 'emoji') {
|
|
473
|
+
out += typeof node.attrs?.text === 'string' ? node.attrs.text : ':emoji:';
|
|
474
|
+
continue;
|
|
475
|
+
}
|
|
476
|
+
if (node.type === 'text') {
|
|
477
|
+
let text = typeof node.text === 'string' ? node.text : '';
|
|
478
|
+
const marks = node.marks ?? [];
|
|
479
|
+
const has = (type) => marks.some(mark => mark.type === type);
|
|
480
|
+
const link = marks.find(mark => mark.type === 'link')?.attrs?.href;
|
|
481
|
+
if (typeof link === 'string' && link.length > 0) {
|
|
482
|
+
text = `[${text}](${link})`;
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
if (has('strong'))
|
|
486
|
+
text = `**${text}**`;
|
|
487
|
+
if (has('em'))
|
|
488
|
+
text = `*${text}*`;
|
|
489
|
+
if (has('code'))
|
|
490
|
+
text = '`' + text + '`';
|
|
491
|
+
if (has('strike'))
|
|
492
|
+
text = `~~${text}~~`;
|
|
493
|
+
if (has('underline'))
|
|
494
|
+
text = `__${text}__`;
|
|
495
|
+
}
|
|
496
|
+
out += text;
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
out += adfInline(adfChildren(node));
|
|
500
|
+
}
|
|
501
|
+
return out;
|
|
502
|
+
}
|
|
503
|
+
/** Concatenated plain text of an ADF subtree (fallback for unknown blocks). */
|
|
504
|
+
function adfNodeText(node) {
|
|
505
|
+
if (node === undefined)
|
|
506
|
+
return '';
|
|
507
|
+
if (node.type === 'text')
|
|
508
|
+
return typeof node.text === 'string' ? node.text : '';
|
|
509
|
+
return adfChildren(node).map(adfNodeText).join('');
|
|
510
|
+
}
|
|
511
|
+
//# sourceMappingURL=jira.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../src/adapters/jira.ts"],"names":[],"mappings":"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"}
|