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.
Files changed (56) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +328 -0
  4. package/SECURITY.md +3 -0
  5. package/dist/builders/index.d.ts +22 -0
  6. package/dist/builders/index.d.ts.map +1 -0
  7. package/dist/builders/index.js +22 -0
  8. package/dist/builders/index.js.map +1 -0
  9. package/dist/builders/marks.d.ts +43 -0
  10. package/dist/builders/marks.d.ts.map +1 -0
  11. package/dist/builders/marks.js +54 -0
  12. package/dist/builders/marks.js.map +1 -0
  13. package/dist/builders/nodes.d.ts +133 -0
  14. package/dist/builders/nodes.d.ts.map +1 -0
  15. package/dist/builders/nodes.js +234 -0
  16. package/dist/builders/nodes.js.map +1 -0
  17. package/dist/converter/block-parser.d.ts +38 -0
  18. package/dist/converter/block-parser.d.ts.map +1 -0
  19. package/dist/converter/block-parser.js +426 -0
  20. package/dist/converter/block-parser.js.map +1 -0
  21. package/dist/converter.d.ts +39 -0
  22. package/dist/converter.d.ts.map +1 -0
  23. package/dist/converter.js +81 -0
  24. package/dist/converter.js.map +1 -0
  25. package/dist/index.d.ts +29 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +30 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/markdown/parser.d.ts +11 -0
  30. package/dist/markdown/parser.d.ts.map +1 -0
  31. package/dist/markdown/parser.js +16 -0
  32. package/dist/markdown/parser.js.map +1 -0
  33. package/dist/presets/index.d.ts +23 -0
  34. package/dist/presets/index.d.ts.map +1 -0
  35. package/dist/presets/index.js +90 -0
  36. package/dist/presets/index.js.map +1 -0
  37. package/dist/types/adf.d.ts +252 -0
  38. package/dist/types/adf.d.ts.map +1 -0
  39. package/dist/types/adf.js +7 -0
  40. package/dist/types/adf.js.map +1 -0
  41. package/dist/types/index.d.ts +6 -0
  42. package/dist/types/index.d.ts.map +1 -0
  43. package/dist/types/index.js +5 -0
  44. package/dist/types/index.js.map +1 -0
  45. package/dist/types/options.d.ts +141 -0
  46. package/dist/types/options.d.ts.map +1 -0
  47. package/dist/types/options.js +5 -0
  48. package/dist/types/options.js.map +1 -0
  49. package/dist/utils/inline-parser.d.ts +16 -0
  50. package/dist/utils/inline-parser.d.ts.map +1 -0
  51. package/dist/utils/inline-parser.js +174 -0
  52. package/dist/utils/inline-parser.js.map +1 -0
  53. package/docs/compatibility.md +30 -0
  54. package/docs/presets.md +22 -0
  55. package/docs/warnings.md +20 -0
  56. 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"}
@@ -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"}