markdown-to-adf 0.2.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/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +328 -0
- package/SECURITY.md +3 -0
- package/dist/builders/index.d.ts +22 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +22 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/marks.d.ts +43 -0
- package/dist/builders/marks.d.ts.map +1 -0
- package/dist/builders/marks.js +54 -0
- package/dist/builders/marks.js.map +1 -0
- package/dist/builders/nodes.d.ts +133 -0
- package/dist/builders/nodes.d.ts.map +1 -0
- package/dist/builders/nodes.js +234 -0
- package/dist/builders/nodes.js.map +1 -0
- package/dist/converter/block-parser.d.ts +38 -0
- package/dist/converter/block-parser.d.ts.map +1 -0
- package/dist/converter/block-parser.js +426 -0
- package/dist/converter/block-parser.js.map +1 -0
- package/dist/converter.d.ts +39 -0
- package/dist/converter.d.ts.map +1 -0
- package/dist/converter.js +81 -0
- package/dist/converter.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/parser.d.ts +11 -0
- package/dist/markdown/parser.d.ts.map +1 -0
- package/dist/markdown/parser.js +16 -0
- package/dist/markdown/parser.js.map +1 -0
- package/dist/presets/index.d.ts +23 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +90 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/types/adf.d.ts +252 -0
- package/dist/types/adf.d.ts.map +1 -0
- package/dist/types/adf.js +7 -0
- package/dist/types/adf.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +141 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +5 -0
- package/dist/types/options.js.map +1 -0
- package/dist/utils/inline-parser.d.ts +16 -0
- package/dist/utils/inline-parser.d.ts.map +1 -0
- package/dist/utils/inline-parser.js +174 -0
- package/dist/utils/inline-parser.js.map +1 -0
- package/docs/compatibility.md +30 -0
- package/docs/presets.md +22 -0
- package/docs/warnings.md +20 -0
- package/package.json +68 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Block-level markdown-it token parsing for ADF conversion.
|
|
3
|
+
*/
|
|
4
|
+
import { paragraph, heading, bulletList, orderedList, listItem, taskList, taskItem, codeBlock, blockQuote, text, table, tableRow, tableHeader, tableCell, } from '../builders/index.js';
|
|
5
|
+
import { strong } from '../builders/marks.js';
|
|
6
|
+
import { parseInlineTokens } from '../utils/inline-parser.js';
|
|
7
|
+
export class BlockParser {
|
|
8
|
+
options;
|
|
9
|
+
preset;
|
|
10
|
+
warnings;
|
|
11
|
+
constructor(context) {
|
|
12
|
+
this.options = context.options;
|
|
13
|
+
this.preset = context.preset;
|
|
14
|
+
this.warnings = context.warnings;
|
|
15
|
+
}
|
|
16
|
+
parse(tokens) {
|
|
17
|
+
return this.parseBlockTokens(tokens, 0, undefined).nodes;
|
|
18
|
+
}
|
|
19
|
+
parseBlockTokens(tokens, startIndex, endType) {
|
|
20
|
+
const nodes = [];
|
|
21
|
+
let i = startIndex;
|
|
22
|
+
while (i < tokens.length) {
|
|
23
|
+
const token = tokens[i];
|
|
24
|
+
if (endType && token.type === endType) {
|
|
25
|
+
return { nodes, nextIndex: i + 1 };
|
|
26
|
+
}
|
|
27
|
+
switch (token.type) {
|
|
28
|
+
case 'paragraph_open': {
|
|
29
|
+
const inlineToken = tokens[i + 1];
|
|
30
|
+
const inline = this.parseInline(inlineToken);
|
|
31
|
+
nodes.push(inline.length > 0 ? paragraph(inline) : paragraph());
|
|
32
|
+
i += 3;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
case 'heading_open': {
|
|
36
|
+
const level = this.getHeadingLevel(token.tag);
|
|
37
|
+
const inlineToken = tokens[i + 1];
|
|
38
|
+
const inline = this.parseInline(inlineToken);
|
|
39
|
+
const presetAllowsHeadings = this.preset === 'story' || this.preset === 'default';
|
|
40
|
+
const exceedsMaxLevel = level > this.options.maxHeadingLevel;
|
|
41
|
+
const canUseHeading = presetAllowsHeadings && this.options.useHeadings && !exceedsMaxLevel;
|
|
42
|
+
if (canUseHeading) {
|
|
43
|
+
nodes.push(heading(level, inline.length > 0 ? inline : [text('')]));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const incompatibleWithPreset = !presetAllowsHeadings;
|
|
47
|
+
const incompatibleWithMax = this.options.useHeadings && exceedsMaxLevel;
|
|
48
|
+
const shouldThrow = this.options.strictMode && (incompatibleWithPreset || incompatibleWithMax);
|
|
49
|
+
const reason = incompatibleWithPreset
|
|
50
|
+
? `Headings are not supported in the ${this.preset} context`
|
|
51
|
+
: `Heading level ${level} exceeds maxHeadingLevel ${this.options.maxHeadingLevel}`;
|
|
52
|
+
if (shouldThrow) {
|
|
53
|
+
throw this.createError('unsupported_feature', reason, this.getLine(token), token.content);
|
|
54
|
+
}
|
|
55
|
+
if (incompatibleWithPreset || incompatibleWithMax) {
|
|
56
|
+
this.addWarning('lossy_conversion', `${reason}; converting to bold text`, this.getLine(token), token.content);
|
|
57
|
+
}
|
|
58
|
+
nodes.push(paragraph(this.applyMarkToInline(inline, strong())));
|
|
59
|
+
}
|
|
60
|
+
i += 3;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case 'bullet_list_open': {
|
|
64
|
+
const result = this.parseList(tokens, i, 'bullet');
|
|
65
|
+
nodes.push(...result.nodes);
|
|
66
|
+
i = result.nextIndex;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case 'ordered_list_open': {
|
|
70
|
+
const result = this.parseList(tokens, i, 'ordered');
|
|
71
|
+
nodes.push(...result.nodes);
|
|
72
|
+
i = result.nextIndex;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case 'blockquote_open': {
|
|
76
|
+
const result = this.parseBlockQuote(tokens, i);
|
|
77
|
+
nodes.push(result.node);
|
|
78
|
+
i = result.nextIndex;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'fence':
|
|
82
|
+
case 'code_block': {
|
|
83
|
+
nodes.push(this.parseCodeBlockToken(token));
|
|
84
|
+
i += 1;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case 'table_open': {
|
|
88
|
+
const result = this.parseTable(tokens, i);
|
|
89
|
+
this.warnIfRisky('table', this.getLine(token));
|
|
90
|
+
nodes.push(result.node);
|
|
91
|
+
i = result.nextIndex;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'hr': {
|
|
95
|
+
if (this.options.strictMode) {
|
|
96
|
+
throw this.createError('unsupported_feature', 'Horizontal rules are not supported in this context', this.getLine(token), token.content);
|
|
97
|
+
}
|
|
98
|
+
this.addWarning('unsupported_feature', 'Horizontal rules are not supported in this context', this.getLine(token), token.content);
|
|
99
|
+
i += 1;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case 'inline': {
|
|
103
|
+
const inline = this.parseInline(token);
|
|
104
|
+
nodes.push(inline.length > 0 ? paragraph(inline) : paragraph());
|
|
105
|
+
i += 1;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
default: {
|
|
109
|
+
i += 1;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { nodes, nextIndex: i };
|
|
115
|
+
}
|
|
116
|
+
parseCodeBlockToken(token) {
|
|
117
|
+
const language = token.info?.trim() || this.options.defaultCodeLanguage;
|
|
118
|
+
const content = token.content.replace(/\n$/, '');
|
|
119
|
+
return codeBlock(content, language);
|
|
120
|
+
}
|
|
121
|
+
parseList(tokens, startIndex, listType) {
|
|
122
|
+
const closeType = listType === 'bullet' ? 'bullet_list_close' : 'ordered_list_close';
|
|
123
|
+
let i = startIndex + 1;
|
|
124
|
+
const segments = [];
|
|
125
|
+
const pushSegment = (segment) => {
|
|
126
|
+
if (segment.items.length === 0)
|
|
127
|
+
return;
|
|
128
|
+
segments.push(segment);
|
|
129
|
+
};
|
|
130
|
+
let currentSegment = null;
|
|
131
|
+
while (i < tokens.length && tokens[i].type !== closeType) {
|
|
132
|
+
if (tokens[i].type === 'list_item_open') {
|
|
133
|
+
const isTaskItem = listType === 'bullet' && this.isTaskListItem(tokens, i);
|
|
134
|
+
const segmentType = isTaskItem ? 'task' : 'regular';
|
|
135
|
+
if (!currentSegment || currentSegment.type !== segmentType) {
|
|
136
|
+
if (currentSegment)
|
|
137
|
+
pushSegment(currentSegment);
|
|
138
|
+
currentSegment =
|
|
139
|
+
segmentType === 'task' ? { type: 'task', items: [] } : { type: 'regular', items: [] };
|
|
140
|
+
}
|
|
141
|
+
const result = this.parseListItem(tokens, i, isTaskItem);
|
|
142
|
+
if (currentSegment.type === 'task') {
|
|
143
|
+
currentSegment.items.push(result.taskItem);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
currentSegment.items.push(result.listItem);
|
|
147
|
+
}
|
|
148
|
+
i = result.nextIndex;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
i += 1;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (currentSegment)
|
|
155
|
+
pushSegment(currentSegment);
|
|
156
|
+
const nodes = segments.map((segment) => {
|
|
157
|
+
if (segment.type === 'task') {
|
|
158
|
+
return taskList(segment.items);
|
|
159
|
+
}
|
|
160
|
+
return listType === 'bullet' ? bulletList(segment.items) : orderedList(segment.items);
|
|
161
|
+
});
|
|
162
|
+
return { nodes, nextIndex: i + 1 };
|
|
163
|
+
}
|
|
164
|
+
parseListItem(tokens, startIndex, asTask) {
|
|
165
|
+
let i = startIndex + 1;
|
|
166
|
+
const blocks = [];
|
|
167
|
+
let taskChecked = false;
|
|
168
|
+
let taskContent = [];
|
|
169
|
+
while (i < tokens.length && tokens[i].type !== 'list_item_close') {
|
|
170
|
+
const token = tokens[i];
|
|
171
|
+
switch (token.type) {
|
|
172
|
+
case 'paragraph_open': {
|
|
173
|
+
const inlineToken = tokens[i + 1];
|
|
174
|
+
const inlineResult = parseInlineTokens(inlineToken?.children, {
|
|
175
|
+
preserveLineBreaks: this.options.preserveLineBreaks,
|
|
176
|
+
stripTaskCheckbox: asTask,
|
|
177
|
+
});
|
|
178
|
+
if (asTask && taskContent.length === 0) {
|
|
179
|
+
taskContent = this.trimLeadingSpace(inlineResult.nodes);
|
|
180
|
+
taskChecked = inlineResult.taskChecked;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
blocks.push(inlineResult.nodes.length > 0 ? paragraph(inlineResult.nodes) : paragraph());
|
|
184
|
+
}
|
|
185
|
+
i += 3;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
case 'bullet_list_open': {
|
|
189
|
+
const result = this.parseList(tokens, i, 'bullet');
|
|
190
|
+
blocks.push(...result.nodes);
|
|
191
|
+
i = result.nextIndex;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
case 'ordered_list_open': {
|
|
195
|
+
const result = this.parseList(tokens, i, 'ordered');
|
|
196
|
+
blocks.push(...result.nodes);
|
|
197
|
+
i = result.nextIndex;
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
case 'blockquote_open': {
|
|
201
|
+
const result = this.parseBlockQuote(tokens, i);
|
|
202
|
+
blocks.push(result.node);
|
|
203
|
+
i = result.nextIndex;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case 'fence':
|
|
207
|
+
case 'code_block': {
|
|
208
|
+
blocks.push(this.parseCodeBlockToken(token));
|
|
209
|
+
i += 1;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
case 'table_open': {
|
|
213
|
+
const result = this.parseTable(tokens, i);
|
|
214
|
+
this.warnIfRisky('table', this.getLine(token));
|
|
215
|
+
blocks.push(result.node);
|
|
216
|
+
i = result.nextIndex;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
case 'inline': {
|
|
220
|
+
const inlineResult = parseInlineTokens(token.children, {
|
|
221
|
+
preserveLineBreaks: this.options.preserveLineBreaks,
|
|
222
|
+
stripTaskCheckbox: asTask,
|
|
223
|
+
});
|
|
224
|
+
if (asTask && taskContent.length === 0) {
|
|
225
|
+
taskContent = this.trimLeadingSpace(inlineResult.nodes);
|
|
226
|
+
taskChecked = inlineResult.taskChecked;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
blocks.push(inlineResult.nodes.length > 0 ? paragraph(inlineResult.nodes) : paragraph());
|
|
230
|
+
}
|
|
231
|
+
i += 1;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
case 'hr': {
|
|
235
|
+
if (this.options.strictMode) {
|
|
236
|
+
throw this.createError('unsupported_feature', 'Horizontal rules are not supported in this context', this.getLine(token), token.content);
|
|
237
|
+
}
|
|
238
|
+
this.addWarning('unsupported_feature', 'Horizontal rules are not supported in this context', this.getLine(token), token.content);
|
|
239
|
+
i += 1;
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
default: {
|
|
243
|
+
i += 1;
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const nextIndex = i + 1;
|
|
249
|
+
if (asTask) {
|
|
250
|
+
if (blocks.length > 0) {
|
|
251
|
+
this.addWarning('lossy_conversion', 'Task list items only support inline content; extra blocks were dropped', this.getLine(tokens[startIndex]));
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
listItem: listItem([paragraph(taskContent)]),
|
|
255
|
+
taskItem: taskItem(taskContent, taskChecked),
|
|
256
|
+
nextIndex,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
const allowed = blocks.filter((block) => block.type === 'paragraph' || block.type === 'bulletList' || block.type === 'orderedList');
|
|
260
|
+
if (allowed.length !== blocks.length) {
|
|
261
|
+
this.addWarning('lossy_conversion', 'List items only support paragraphs and nested lists; unsupported blocks were dropped', this.getLine(tokens[startIndex]));
|
|
262
|
+
}
|
|
263
|
+
if (allowed.length === 0) {
|
|
264
|
+
allowed.push(paragraph());
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
listItem: listItem(allowed),
|
|
268
|
+
taskItem: taskItem(taskContent, taskChecked),
|
|
269
|
+
nextIndex,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
parseBlockQuote(tokens, startIndex) {
|
|
273
|
+
const result = this.parseBlockTokens(tokens, startIndex + 1, 'blockquote_close');
|
|
274
|
+
return { node: blockQuote(result.nodes), nextIndex: result.nextIndex };
|
|
275
|
+
}
|
|
276
|
+
parseTable(tokens, startIndex) {
|
|
277
|
+
let i = startIndex + 1;
|
|
278
|
+
const rows = [];
|
|
279
|
+
while (i < tokens.length && tokens[i].type !== 'table_close') {
|
|
280
|
+
const sectionToken = tokens[i];
|
|
281
|
+
if (sectionToken.type === 'thead_open' || sectionToken.type === 'tbody_open') {
|
|
282
|
+
const sectionClose = sectionToken.type === 'thead_open' ? 'thead_close' : 'tbody_close';
|
|
283
|
+
const isHeader = sectionToken.type === 'thead_open';
|
|
284
|
+
i += 1;
|
|
285
|
+
while (i < tokens.length && tokens[i].type !== sectionClose) {
|
|
286
|
+
if (tokens[i].type === 'tr_open') {
|
|
287
|
+
const rowCells = [];
|
|
288
|
+
i += 1;
|
|
289
|
+
while (i < tokens.length && tokens[i].type !== 'tr_close') {
|
|
290
|
+
if (tokens[i].type === 'th_open' || tokens[i].type === 'td_open') {
|
|
291
|
+
const isHeaderCell = tokens[i].type === 'th_open' || isHeader;
|
|
292
|
+
const inlineToken = tokens[i + 1];
|
|
293
|
+
const inline = this.parseInline(inlineToken);
|
|
294
|
+
const cellContent = [inline.length > 0 ? paragraph(inline) : paragraph()];
|
|
295
|
+
rowCells.push(isHeaderCell ? tableHeader(cellContent) : tableCell(cellContent));
|
|
296
|
+
i += 3;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
i += 1;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
rows.push(tableRow(rowCells));
|
|
303
|
+
i += 1;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
i += 1;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
i += 1;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
i += 1;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
node: table(rows, { isNumberColumnEnabled: false, layout: 'default' }),
|
|
317
|
+
nextIndex: i + 1,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
parseInline(token) {
|
|
321
|
+
return parseInlineTokens(token?.children ?? undefined, {
|
|
322
|
+
preserveLineBreaks: this.options.preserveLineBreaks,
|
|
323
|
+
}).nodes;
|
|
324
|
+
}
|
|
325
|
+
applyMarkToInline(nodes, mark) {
|
|
326
|
+
if (nodes.length === 0) {
|
|
327
|
+
return [text('', [mark])];
|
|
328
|
+
}
|
|
329
|
+
return nodes.map((node) => {
|
|
330
|
+
if (node.type !== 'text')
|
|
331
|
+
return node;
|
|
332
|
+
const marks = node.marks ? [...node.marks, mark] : [mark];
|
|
333
|
+
return text(node.text, marks);
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
trimLeadingSpace(nodes) {
|
|
337
|
+
if (nodes.length === 0)
|
|
338
|
+
return [...nodes];
|
|
339
|
+
const first = nodes[0];
|
|
340
|
+
if (!first || first.type !== 'text')
|
|
341
|
+
return [...nodes];
|
|
342
|
+
if (!first.text.startsWith(' '))
|
|
343
|
+
return [...nodes];
|
|
344
|
+
const trimmed = first.text.replace(/^\s+/, '');
|
|
345
|
+
if (trimmed === '') {
|
|
346
|
+
return nodes.slice(1);
|
|
347
|
+
}
|
|
348
|
+
return [text(trimmed, first.marks), ...nodes.slice(1)];
|
|
349
|
+
}
|
|
350
|
+
getHeadingLevel(tag) {
|
|
351
|
+
const level = Number(tag.replace('h', ''));
|
|
352
|
+
if (level >= 1 && level <= 6)
|
|
353
|
+
return level;
|
|
354
|
+
return 1;
|
|
355
|
+
}
|
|
356
|
+
warnIfRisky(nodeType, line) {
|
|
357
|
+
if (!this.options.warnOnRiskyNodes)
|
|
358
|
+
return;
|
|
359
|
+
if (nodeType === 'table' && this.preset === 'comment') {
|
|
360
|
+
this.addWarning('risky_feature', 'Tables in comments are supported but can be inconsistent in some Jira views', line);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
isTaskListItem(tokens, startIndex) {
|
|
364
|
+
const openToken = tokens[startIndex];
|
|
365
|
+
if (this.hasTaskItemClass(openToken))
|
|
366
|
+
return true;
|
|
367
|
+
let i = startIndex + 1;
|
|
368
|
+
while (i < tokens.length && tokens[i].type !== 'list_item_close') {
|
|
369
|
+
const token = tokens[i];
|
|
370
|
+
if (token.type === 'inline' && this.inlineHasTaskCheckbox(token)) {
|
|
371
|
+
return true;
|
|
372
|
+
}
|
|
373
|
+
i += 1;
|
|
374
|
+
}
|
|
375
|
+
return false;
|
|
376
|
+
}
|
|
377
|
+
hasTaskItemClass(token) {
|
|
378
|
+
const classAttr = this.getAttr(token, 'class');
|
|
379
|
+
if (!classAttr)
|
|
380
|
+
return false;
|
|
381
|
+
return classAttr.split(/\s+/).includes('task-list-item');
|
|
382
|
+
}
|
|
383
|
+
inlineHasTaskCheckbox(token) {
|
|
384
|
+
if (!token.children)
|
|
385
|
+
return false;
|
|
386
|
+
return token.children.some((child) => child.type === 'html_inline' && /type=["']checkbox["']/i.test(child.content));
|
|
387
|
+
}
|
|
388
|
+
addWarning(type, message, line, markdown) {
|
|
389
|
+
const warning = { type, message };
|
|
390
|
+
if (line !== undefined)
|
|
391
|
+
warning.line = line;
|
|
392
|
+
if (markdown !== undefined)
|
|
393
|
+
warning.markdown = markdown;
|
|
394
|
+
this.warnings.push(warning);
|
|
395
|
+
}
|
|
396
|
+
createError(type, message, line, markdown) {
|
|
397
|
+
const details = line ? ` (line ${line})` : '';
|
|
398
|
+
const error = new Error(`${message}${details}`);
|
|
399
|
+
const conversionError = { type, message };
|
|
400
|
+
if (line !== undefined)
|
|
401
|
+
conversionError.line = line;
|
|
402
|
+
if (markdown !== undefined)
|
|
403
|
+
conversionError.markdown = markdown;
|
|
404
|
+
error.conversionError = conversionError;
|
|
405
|
+
return error;
|
|
406
|
+
}
|
|
407
|
+
getAttr(token, name) {
|
|
408
|
+
if (typeof token.attrGet === 'function') {
|
|
409
|
+
return token.attrGet(name);
|
|
410
|
+
}
|
|
411
|
+
if (!token.attrs)
|
|
412
|
+
return null;
|
|
413
|
+
for (const attr of token.attrs) {
|
|
414
|
+
if (attr[0] === name) {
|
|
415
|
+
return attr[1] ?? null;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
getLine(token) {
|
|
421
|
+
if (!token.map)
|
|
422
|
+
return undefined;
|
|
423
|
+
return token.map[0] + 1;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=block-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-parser.js","sourceRoot":"","sources":["../../src/converter/block-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core markdown to ADF converter.
|
|
3
|
+
*/
|
|
4
|
+
import type { ADFDocument } from './types/adf.js';
|
|
5
|
+
import type { ConversionOptions, ConversionResult } from './types/options.js';
|
|
6
|
+
/**
|
|
7
|
+
* Converts markdown text to Atlassian Document Format (ADF).
|
|
8
|
+
*
|
|
9
|
+
* @param markdown - The markdown string to convert
|
|
10
|
+
* @param options - Optional conversion configuration
|
|
11
|
+
* @returns The generated ADF document
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { markdownToAdf } from 'markdown-to-adf';
|
|
16
|
+
*
|
|
17
|
+
* // Simple conversion
|
|
18
|
+
* const adf = markdownToAdf('## Hello\n- Item 1\n- Item 2');
|
|
19
|
+
*
|
|
20
|
+
* // With preset for Jira comments
|
|
21
|
+
* const adf = markdownToAdf(markdown, { preset: 'comment' });
|
|
22
|
+
*
|
|
23
|
+
* // With custom options
|
|
24
|
+
* const adf = markdownToAdf(markdown, {
|
|
25
|
+
* useHeadings: false,
|
|
26
|
+
* defaultCodeLanguage: 'javascript',
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function markdownToAdf(markdown: string, options?: ConversionOptions): ADFDocument;
|
|
31
|
+
/**
|
|
32
|
+
* Converts markdown to ADF and returns conversion warnings.
|
|
33
|
+
*
|
|
34
|
+
* @param markdown - The markdown string to convert
|
|
35
|
+
* @param options - Optional conversion configuration
|
|
36
|
+
* @returns The generated ADF document plus warnings
|
|
37
|
+
*/
|
|
38
|
+
export declare function markdownToAdfWithWarnings(markdown: string, options?: ConversionOptions): ConversionResult;
|
|
39
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EAGjB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,WAAW,CAG5F;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAGlB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core markdown to ADF converter.
|
|
3
|
+
*/
|
|
4
|
+
import { resolveOptions } from './presets/index.js';
|
|
5
|
+
import { doc, paragraph } from './builders/index.js';
|
|
6
|
+
import { createMarkdownParser } from './markdown/parser.js';
|
|
7
|
+
import { BlockParser } from './converter/block-parser.js';
|
|
8
|
+
/**
|
|
9
|
+
* Converts markdown text to Atlassian Document Format (ADF).
|
|
10
|
+
*
|
|
11
|
+
* @param markdown - The markdown string to convert
|
|
12
|
+
* @param options - Optional conversion configuration
|
|
13
|
+
* @returns The generated ADF document
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { markdownToAdf } from 'markdown-to-adf';
|
|
18
|
+
*
|
|
19
|
+
* // Simple conversion
|
|
20
|
+
* const adf = markdownToAdf('## Hello\n- Item 1\n- Item 2');
|
|
21
|
+
*
|
|
22
|
+
* // With preset for Jira comments
|
|
23
|
+
* const adf = markdownToAdf(markdown, { preset: 'comment' });
|
|
24
|
+
*
|
|
25
|
+
* // With custom options
|
|
26
|
+
* const adf = markdownToAdf(markdown, {
|
|
27
|
+
* useHeadings: false,
|
|
28
|
+
* defaultCodeLanguage: 'javascript',
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function markdownToAdf(markdown, options = {}) {
|
|
33
|
+
const converter = new MarkdownConverter(options);
|
|
34
|
+
return converter.convert(markdown);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Converts markdown to ADF and returns conversion warnings.
|
|
38
|
+
*
|
|
39
|
+
* @param markdown - The markdown string to convert
|
|
40
|
+
* @param options - Optional conversion configuration
|
|
41
|
+
* @returns The generated ADF document plus warnings
|
|
42
|
+
*/
|
|
43
|
+
export function markdownToAdfWithWarnings(markdown, options = {}) {
|
|
44
|
+
const converter = new MarkdownConverter(options);
|
|
45
|
+
return converter.convertWithWarnings(markdown);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Internal converter class that maintains state during conversion.
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
class MarkdownConverter {
|
|
53
|
+
options;
|
|
54
|
+
warnings = [];
|
|
55
|
+
md = createMarkdownParser();
|
|
56
|
+
preset;
|
|
57
|
+
constructor(options) {
|
|
58
|
+
this.preset = options.preset ?? 'default';
|
|
59
|
+
this.options = resolveOptions(options);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Converts markdown to an ADF document.
|
|
63
|
+
*/
|
|
64
|
+
convert(markdown) {
|
|
65
|
+
if (!markdown || markdown.trim() === '') {
|
|
66
|
+
return doc([paragraph()]);
|
|
67
|
+
}
|
|
68
|
+
const tokens = this.md.parse(markdown, {});
|
|
69
|
+
const blocks = new BlockParser({
|
|
70
|
+
options: this.options,
|
|
71
|
+
preset: this.preset,
|
|
72
|
+
warnings: this.warnings,
|
|
73
|
+
}).parse(tokens);
|
|
74
|
+
return doc(blocks.length > 0 ? blocks : [paragraph()]);
|
|
75
|
+
}
|
|
76
|
+
convertWithWarnings(markdown) {
|
|
77
|
+
const adf = this.convert(markdown);
|
|
78
|
+
return { adf, warnings: [...this.warnings] };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,UAA6B,EAAE;IAC7E,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAgB,EAChB,UAA6B,EAAE;IAE/B,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB;IACJ,OAAO,CAA8C;IACrD,QAAQ,GAAwB,EAAE,CAAC;IACnC,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAC5B,MAAM,CAAgB;IAEvC,YAAY,OAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,OAAO,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,mBAAmB,CAAC,QAAgB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/C,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* markdown-to-adf - Convert Markdown to Atlassian Document Format
|
|
3
|
+
*
|
|
4
|
+
* A robust, type-safe library for converting Markdown to ADF with context-aware
|
|
5
|
+
* presets for different Jira use cases.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { markdownToAdf } from 'markdown-to-adf';
|
|
10
|
+
*
|
|
11
|
+
* // Simple conversion
|
|
12
|
+
* const adf = markdownToAdf('## Hello World\n- Item 1\n- Item 2');
|
|
13
|
+
*
|
|
14
|
+
* // For Jira comments (no headings)
|
|
15
|
+
* const adf = markdownToAdf(markdown, { preset: 'comment' });
|
|
16
|
+
*
|
|
17
|
+
* // For Task-type issues (headings convert to bold)
|
|
18
|
+
* const adf = markdownToAdf(markdown, { preset: 'task' });
|
|
19
|
+
*
|
|
20
|
+
* // For Story/Epic issues (full heading support)
|
|
21
|
+
* const adf = markdownToAdf(markdown, { preset: 'story' });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
export { markdownToAdf, markdownToAdfWithWarnings } from './converter.js';
|
|
27
|
+
export type { ADFDocument, ADFBlockNode, ADFInlineNode, ADFParagraph, ADFHeading, ADFBulletList, ADFOrderedList, ADFListItem, ADFCodeBlock, ADFBlockQuote, ADFRule, ADFPanel, ADFText, ADFHardBreak, ADFInlineCard, ADFMention, ADFEmoji, ADFMark, ADFStrongMark, ADFEmMark, ADFCodeMark, ADFStrikeMark, ADFUnderlineMark, ADFLinkMark, ADFTextColorMark, ContextPreset, ConversionOptions, ConversionResult, ConversionWarning, } from './types/index.js';
|
|
28
|
+
export { doc, paragraph, heading, bulletList, orderedList, listItem, codeBlock, blockQuote, rule, text, hardBreak, strong, em, code, strike, underline, link, } from './builders/index.js';
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG1E,YAAY,EAEV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,OAAO,EACP,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,EACb,SAAS,EACT,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAGhB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,GAAG,EACH,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,MAAM,EACN,EAAE,EACF,IAAI,EACJ,MAAM,EACN,SAAS,EACT,IAAI,GACL,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* markdown-to-adf - Convert Markdown to Atlassian Document Format
|
|
3
|
+
*
|
|
4
|
+
* A robust, type-safe library for converting Markdown to ADF with context-aware
|
|
5
|
+
* presets for different Jira use cases.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { markdownToAdf } from 'markdown-to-adf';
|
|
10
|
+
*
|
|
11
|
+
* // Simple conversion
|
|
12
|
+
* const adf = markdownToAdf('## Hello World\n- Item 1\n- Item 2');
|
|
13
|
+
*
|
|
14
|
+
* // For Jira comments (no headings)
|
|
15
|
+
* const adf = markdownToAdf(markdown, { preset: 'comment' });
|
|
16
|
+
*
|
|
17
|
+
* // For Task-type issues (headings convert to bold)
|
|
18
|
+
* const adf = markdownToAdf(markdown, { preset: 'task' });
|
|
19
|
+
*
|
|
20
|
+
* // For Story/Epic issues (full heading support)
|
|
21
|
+
* const adf = markdownToAdf(markdown, { preset: 'story' });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
// Main converter functions
|
|
27
|
+
export { markdownToAdf, markdownToAdfWithWarnings } from './converter.js';
|
|
28
|
+
// Builder exports (for advanced usage)
|
|
29
|
+
export { doc, paragraph, heading, bulletList, orderedList, listItem, codeBlock, blockQuote, rule, text, hardBreak, strong, em, code, strike, underline, link, } from './builders/index.js';
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAsC1E,uCAAuC;AACvC,OAAO,EACL,GAAG,EACH,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,MAAM,EACN,EAAE,EACF,IAAI,EACJ,MAAM,EACN,SAAS,EACT,IAAI,GACL,MAAM,qBAAqB,CAAC"}
|