@cogitator-ai/channels 0.16.0 → 0.18.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 (112) hide show
  1. package/README.md +78 -14
  2. package/dist/approvals.d.ts +3 -0
  3. package/dist/approvals.d.ts.map +1 -1
  4. package/dist/approvals.js +1 -0
  5. package/dist/approvals.js.map +1 -1
  6. package/dist/assistant-config.d.ts +60 -0
  7. package/dist/assistant-config.d.ts.map +1 -1
  8. package/dist/assistant-config.js +102 -0
  9. package/dist/assistant-config.js.map +1 -1
  10. package/dist/channels/email/address.d.ts +44 -0
  11. package/dist/channels/email/address.d.ts.map +1 -0
  12. package/dist/channels/email/address.js +211 -0
  13. package/dist/channels/email/address.js.map +1 -0
  14. package/dist/channels/email/auth.d.ts +59 -0
  15. package/dist/channels/email/auth.d.ts.map +1 -0
  16. package/dist/channels/email/auth.js +212 -0
  17. package/dist/channels/email/auth.js.map +1 -0
  18. package/dist/channels/email/channel.d.ts +256 -0
  19. package/dist/channels/email/channel.d.ts.map +1 -0
  20. package/dist/channels/email/channel.js +701 -0
  21. package/dist/channels/email/channel.js.map +1 -0
  22. package/dist/channels/email/errors.d.ts +11 -0
  23. package/dist/channels/email/errors.d.ts.map +1 -0
  24. package/dist/channels/email/errors.js +13 -0
  25. package/dist/channels/email/errors.js.map +1 -0
  26. package/dist/channels/email/imap.d.ts +125 -0
  27. package/dist/channels/email/imap.d.ts.map +1 -0
  28. package/dist/channels/email/imap.js +309 -0
  29. package/dist/channels/email/imap.js.map +1 -0
  30. package/dist/channels/email/index.d.ts +7 -0
  31. package/dist/channels/email/index.d.ts.map +1 -0
  32. package/dist/channels/email/index.js +3 -0
  33. package/dist/channels/email/index.js.map +1 -0
  34. package/dist/channels/email/mime.d.ts +71 -0
  35. package/dist/channels/email/mime.d.ts.map +1 -0
  36. package/dist/channels/email/mime.js +83 -0
  37. package/dist/channels/email/mime.js.map +1 -0
  38. package/dist/channels/email/multipart.d.ts +28 -0
  39. package/dist/channels/email/multipart.d.ts.map +1 -0
  40. package/dist/channels/email/multipart.js +102 -0
  41. package/dist/channels/email/multipart.js.map +1 -0
  42. package/dist/channels/email/providers.d.ts +49 -0
  43. package/dist/channels/email/providers.d.ts.map +1 -0
  44. package/dist/channels/email/providers.js +292 -0
  45. package/dist/channels/email/providers.js.map +1 -0
  46. package/dist/channels/email/reply.d.ts +9 -0
  47. package/dist/channels/email/reply.d.ts.map +1 -0
  48. package/dist/channels/email/reply.js +122 -0
  49. package/dist/channels/email/reply.js.map +1 -0
  50. package/dist/channels/teams/activity.d.ts +108 -0
  51. package/dist/channels/teams/activity.d.ts.map +1 -0
  52. package/dist/channels/teams/activity.js +206 -0
  53. package/dist/channels/teams/activity.js.map +1 -0
  54. package/dist/channels/teams/auth.d.ts +65 -0
  55. package/dist/channels/teams/auth.d.ts.map +1 -0
  56. package/dist/channels/teams/auth.js +213 -0
  57. package/dist/channels/teams/auth.js.map +1 -0
  58. package/dist/channels/teams/cards.d.ts +23 -0
  59. package/dist/channels/teams/cards.d.ts.map +1 -0
  60. package/dist/channels/teams/cards.js +97 -0
  61. package/dist/channels/teams/cards.js.map +1 -0
  62. package/dist/channels/teams/channel.d.ts +303 -0
  63. package/dist/channels/teams/channel.d.ts.map +1 -0
  64. package/dist/channels/teams/channel.js +1071 -0
  65. package/dist/channels/teams/channel.js.map +1 -0
  66. package/dist/channels/teams/client.d.ts +72 -0
  67. package/dist/channels/teams/client.d.ts.map +1 -0
  68. package/dist/channels/teams/client.js +161 -0
  69. package/dist/channels/teams/client.js.map +1 -0
  70. package/dist/channels/teams/index.d.ts +7 -0
  71. package/dist/channels/teams/index.d.ts.map +1 -0
  72. package/dist/channels/teams/index.js +6 -0
  73. package/dist/channels/teams/index.js.map +1 -0
  74. package/dist/channels/teams/pacer.d.ts +47 -0
  75. package/dist/channels/teams/pacer.d.ts.map +1 -0
  76. package/dist/channels/teams/pacer.js +174 -0
  77. package/dist/channels/teams/pacer.js.map +1 -0
  78. package/dist/channels/teams/token.d.ts +47 -0
  79. package/dist/channels/teams/token.d.ts.map +1 -0
  80. package/dist/channels/teams/token.js +107 -0
  81. package/dist/channels/teams/token.js.map +1 -0
  82. package/dist/channels/telegram.d.ts.map +1 -1
  83. package/dist/channels/telegram.js +3 -0
  84. package/dist/channels/telegram.js.map +1 -1
  85. package/dist/formatters/html.d.ts +16 -0
  86. package/dist/formatters/html.d.ts.map +1 -0
  87. package/dist/formatters/html.js +535 -0
  88. package/dist/formatters/html.js.map +1 -0
  89. package/dist/formatters/markdown-images.d.ts +8 -0
  90. package/dist/formatters/markdown-images.d.ts.map +1 -0
  91. package/dist/formatters/markdown-images.js +181 -0
  92. package/dist/formatters/markdown-images.js.map +1 -0
  93. package/dist/formatters/markdown.d.ts.map +1 -1
  94. package/dist/formatters/markdown.js +22 -3
  95. package/dist/formatters/markdown.js.map +1 -1
  96. package/dist/gateway.d.ts +23 -1
  97. package/dist/gateway.d.ts.map +1 -1
  98. package/dist/gateway.js +113 -16
  99. package/dist/gateway.js.map +1 -1
  100. package/dist/inbound-debounce.d.ts +4 -1
  101. package/dist/inbound-debounce.d.ts.map +1 -1
  102. package/dist/inbound-debounce.js +4 -2
  103. package/dist/inbound-debounce.js.map +1 -1
  104. package/dist/index.d.ts +5 -2
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +5 -2
  107. package/dist/index.js.map +1 -1
  108. package/dist/runtime-builder.d.ts +9 -0
  109. package/dist/runtime-builder.d.ts.map +1 -1
  110. package/dist/runtime-builder.js +145 -1
  111. package/dist/runtime-builder.js.map +1 -1
  112. package/package.json +25 -8
@@ -0,0 +1,535 @@
1
+ const NAMED_ENTITIES = {
2
+ amp: '&',
3
+ lt: '<',
4
+ gt: '>',
5
+ quot: '"',
6
+ apos: "'",
7
+ nbsp: ' ',
8
+ copy: '\u00A9',
9
+ reg: '\u00AE',
10
+ trade: '\u2122',
11
+ hellip: '\u2026',
12
+ mdash: '\u2014',
13
+ ndash: '\u2013',
14
+ lsquo: '\u2018',
15
+ rsquo: '\u2019',
16
+ ldquo: '\u201C',
17
+ rdquo: '\u201D',
18
+ laquo: '\u00AB',
19
+ raquo: '\u00BB',
20
+ bull: '\u2022',
21
+ middot: '\u00B7',
22
+ euro: '\u20AC',
23
+ zwnj: '',
24
+ zwj: '',
25
+ shy: '',
26
+ };
27
+ /** Text with HTML entities (named, decimal and hex) decoded, unknown names staying as written. */
28
+ export function decodeHtmlEntities(text) {
29
+ return text.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (entity, name) => {
30
+ if (name.startsWith('#')) {
31
+ const code = name[1] === 'x' || name[1] === 'X' ? parseInt(name.slice(2), 16) : Number(name.slice(1));
32
+ return Number.isFinite(code) && code > 0 && code <= 0x10ffff
33
+ ? String.fromCodePoint(code)
34
+ : entity;
35
+ }
36
+ return NAMED_ENTITIES[name.toLowerCase()] ?? entity;
37
+ });
38
+ }
39
+ export function escapeHtml(text) {
40
+ return text
41
+ .replace(/&/g, '&amp;')
42
+ .replace(/</g, '&lt;')
43
+ .replace(/>/g, '&gt;')
44
+ .replace(/"/g, '&quot;')
45
+ .replace(/'/g, '&#39;');
46
+ }
47
+ const SKIPPED = new Set(['script', 'style', 'head', 'title', 'template', 'noscript']);
48
+ const PARAGRAPHS = new Set([
49
+ 'p',
50
+ 'h1',
51
+ 'h2',
52
+ 'h3',
53
+ 'h4',
54
+ 'h5',
55
+ 'h6',
56
+ 'ul',
57
+ 'ol',
58
+ 'table',
59
+ 'pre',
60
+ 'dl',
61
+ 'figure',
62
+ ]);
63
+ const LINES = new Set([
64
+ 'div',
65
+ 'tr',
66
+ 'li',
67
+ 'section',
68
+ 'article',
69
+ 'header',
70
+ 'footer',
71
+ 'address',
72
+ 'dt',
73
+ 'dd',
74
+ 'caption',
75
+ 'center',
76
+ ]);
77
+ function attribute(attributes, name) {
78
+ const match = new RegExp(`(?:^|\\s)${name}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s>]+))`, 'i').exec(attributes);
79
+ const value = match?.[1] ?? match?.[2] ?? match?.[3];
80
+ return value === undefined ? undefined : decodeHtmlEntities(value);
81
+ }
82
+ /** `text` without the trailing characters of `chars`, in one pass from the end. */
83
+ function trimEndOf(text, chars) {
84
+ let end = text.length;
85
+ while (end > 0 && chars.includes(text[end - 1]))
86
+ end--;
87
+ return text.slice(0, end);
88
+ }
89
+ const TAG_NAME = /\/?([a-zA-Z][\w:-]*)/y;
90
+ /**
91
+ * The tokens of HTML, in one linear pass: text, and tags with their attributes. Comments,
92
+ * CDATA, doctypes and processing instructions are left out. A tag that is never closed makes
93
+ * the rest of the input text, and a comment that is never closed drops it, so malformed input
94
+ * cannot make the scan go over the rest again for every `<`.
95
+ */
96
+ function* htmlTokens(html) {
97
+ let i = 0;
98
+ const skipTo = (marker, from) => {
99
+ const end = html.indexOf(marker, from);
100
+ return end === -1 ? html.length : end + marker.length;
101
+ };
102
+ while (i < html.length) {
103
+ const open = html.indexOf('<', i);
104
+ if (open === -1) {
105
+ yield { text: html.slice(i) };
106
+ return;
107
+ }
108
+ if (open > i)
109
+ yield { text: html.slice(i, open) };
110
+ if (html.startsWith('<!--', open)) {
111
+ i = skipTo('-->', open + 4);
112
+ continue;
113
+ }
114
+ if (html.startsWith('<![CDATA[', open)) {
115
+ i = skipTo(']]>', open + 9);
116
+ continue;
117
+ }
118
+ if (html[open + 1] === '!' || html[open + 1] === '?') {
119
+ i = skipTo('>', open + 2);
120
+ continue;
121
+ }
122
+ TAG_NAME.lastIndex = open + 1;
123
+ const name = TAG_NAME.exec(html);
124
+ if (!name) {
125
+ yield { text: '<' };
126
+ i = open + 1;
127
+ continue;
128
+ }
129
+ const attributesStart = TAG_NAME.lastIndex;
130
+ let end = attributesStart;
131
+ let quote = '';
132
+ let previous = '';
133
+ for (; end < html.length; end++) {
134
+ const char = html[end];
135
+ if (quote) {
136
+ if (char === quote)
137
+ quote = '';
138
+ }
139
+ else if ((char === '"' || char === "'") && previous === '=')
140
+ quote = char;
141
+ else if (char === '>')
142
+ break;
143
+ if (!/\s/.test(char))
144
+ previous = char;
145
+ }
146
+ if (end >= html.length) {
147
+ yield { text: html.slice(open) };
148
+ return;
149
+ }
150
+ yield {
151
+ closing: name[0].startsWith('/'),
152
+ name: name[1],
153
+ attributes: html.slice(attributesStart, end),
154
+ };
155
+ i = end + 1;
156
+ }
157
+ }
158
+ /**
159
+ * The text of an HTML email: paragraphs and line breaks kept, links written as `text (url)`,
160
+ * list items with a dash, quoted blocks (`<blockquote>`) as `>` lines, scripts, styles and the
161
+ * head dropped and entities decoded.
162
+ */
163
+ export function htmlToText(html) {
164
+ const lines = [];
165
+ let line = '';
166
+ let depth = 0;
167
+ let lineDepth = 0;
168
+ let skipping = 0;
169
+ let pre = 0;
170
+ const lists = [];
171
+ const links = [];
172
+ const flush = () => {
173
+ lines.push({ depth: lineDepth, text: trimEndOf(line, ' \t') });
174
+ line = '';
175
+ lineDepth = depth;
176
+ };
177
+ const endLine = () => {
178
+ if (line.trim())
179
+ flush();
180
+ else {
181
+ line = '';
182
+ lineDepth = depth;
183
+ }
184
+ };
185
+ const endParagraph = () => {
186
+ endLine();
187
+ const last = lines[lines.length - 1];
188
+ if (last && last.text !== '')
189
+ lines.push({ depth: last.depth, text: '' });
190
+ };
191
+ const write = (text) => {
192
+ if (!line)
193
+ lineDepth = depth;
194
+ line += text;
195
+ };
196
+ for (const token of htmlTokens(html)) {
197
+ if ('text' in token) {
198
+ if (skipping > 0)
199
+ continue;
200
+ const decoded = decodeHtmlEntities(token.text);
201
+ if (pre > 0) {
202
+ const parts = decoded.split('\n');
203
+ parts.forEach((part, index) => {
204
+ if (index > 0)
205
+ flush();
206
+ write(part);
207
+ });
208
+ }
209
+ else {
210
+ const collapsed = decoded.replace(/\s+/g, ' ');
211
+ write(line === '' || line.endsWith(' ') ? collapsed.replace(/^ /, '') : collapsed);
212
+ }
213
+ continue;
214
+ }
215
+ const { closing, attributes } = token;
216
+ const name = token.name.toLowerCase();
217
+ if (SKIPPED.has(name)) {
218
+ if (closing)
219
+ skipping = Math.max(0, skipping - 1);
220
+ else if (!attributes.trimEnd().endsWith('/'))
221
+ skipping++;
222
+ continue;
223
+ }
224
+ if (skipping > 0)
225
+ continue;
226
+ if (closing) {
227
+ switch (name) {
228
+ case 'blockquote':
229
+ endParagraph();
230
+ depth = Math.max(0, depth - 1);
231
+ lineDepth = depth;
232
+ break;
233
+ case 'pre':
234
+ pre = Math.max(0, pre - 1);
235
+ endParagraph();
236
+ break;
237
+ case 'ul':
238
+ case 'ol':
239
+ lists.pop();
240
+ endParagraph();
241
+ break;
242
+ case 'a': {
243
+ const link = links.pop();
244
+ const label = link ? line.slice(link.start).trim() : '';
245
+ if (link?.href &&
246
+ /^https?:\/\//i.test(link.href) &&
247
+ label !== link.href &&
248
+ label !== link.href.replace(/^https?:\/\//i, '').replace(/\/$/, '')) {
249
+ write(label ? ` (${link.href})` : link.href);
250
+ }
251
+ break;
252
+ }
253
+ case 'td':
254
+ case 'th':
255
+ write('\t');
256
+ break;
257
+ default:
258
+ if (PARAGRAPHS.has(name))
259
+ endParagraph();
260
+ else if (LINES.has(name))
261
+ endLine();
262
+ }
263
+ continue;
264
+ }
265
+ switch (name) {
266
+ case 'br':
267
+ flush();
268
+ break;
269
+ case 'hr':
270
+ endLine();
271
+ write('---');
272
+ endLine();
273
+ break;
274
+ case 'img': {
275
+ const alt = attribute(attributes, 'alt');
276
+ if (alt)
277
+ write(alt);
278
+ break;
279
+ }
280
+ case 'blockquote':
281
+ endParagraph();
282
+ depth++;
283
+ lineDepth = depth;
284
+ break;
285
+ case 'pre':
286
+ endParagraph();
287
+ pre++;
288
+ break;
289
+ case 'ul':
290
+ case 'ol':
291
+ endLine();
292
+ lists.push({ ordered: name === 'ol', next: Number(attribute(attributes, 'start')) || 1 });
293
+ break;
294
+ case 'li': {
295
+ endLine();
296
+ const list = lists[lists.length - 1];
297
+ const indent = ' '.repeat(Math.max(0, lists.length - 1));
298
+ write(list?.ordered ? `${indent}${list.next++}. ` : `${indent}- `);
299
+ break;
300
+ }
301
+ case 'a':
302
+ links.push({ href: attribute(attributes, 'href'), start: line.length });
303
+ break;
304
+ default:
305
+ if (PARAGRAPHS.has(name))
306
+ endParagraph();
307
+ else if (LINES.has(name))
308
+ endLine();
309
+ }
310
+ }
311
+ endLine();
312
+ const rendered = lines.map(({ depth: level, text }) => {
313
+ const cleaned = trimEndOf(text, '\t').replace(/\t/g, ' | ');
314
+ return level > 0 ? `${'> '.repeat(level)}${cleaned}`.trimEnd() : cleaned;
315
+ });
316
+ while (rendered.length > 0 && trimEndOf(rendered[rendered.length - 1], '> ') === '') {
317
+ rendered.pop();
318
+ }
319
+ return rendered
320
+ .join('\n')
321
+ .replace(/\n{3,}/g, '\n\n')
322
+ .trim();
323
+ }
324
+ const CODE_STYLE = 'font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; background: #f4f4f5; border-radius: 4px';
325
+ function safeUrl(url) {
326
+ const decoded = decodeHtmlEntities(url).trim();
327
+ return /^(https?:|mailto:)/i.test(decoded) ? escapeHtml(decoded) : undefined;
328
+ }
329
+ /** How deep quotes and lists nest before the rest is a paragraph of text. */
330
+ const MAX_NESTING = 16;
331
+ /** The longest text formatted inline: a longer paragraph is sent as escaped text. */
332
+ const MAX_INLINE = 100_000;
333
+ /** Inline Markdown (code spans, emphasis, links) as HTML, the text escaped. */
334
+ function inlineHtml(input) {
335
+ if (input.length > MAX_INLINE)
336
+ return escapeHtml(input).replace(/\n/g, '<br>\n');
337
+ const code = [];
338
+ const keep = (html) => `\uE000${code.push(html) - 1}\uE000`;
339
+ const text = input.replace(/\uE000/g, '\uFFFD');
340
+ let html = text.replace(/(`+)([\s\S]{0,4000}?[^`])\1(?!`)/g, (_, _ticks, body) => keep(`<code style="${CODE_STYLE}; padding: 0 3px">${escapeHtml(body.trim())}</code>`));
341
+ html = escapeHtml(html)
342
+ .replace(/!\[([^\]\n]{0,1000})\]\(([^)\s]{1,2048})(?:\s+&quot;[^)\n]{0,1000}&quot;)?\)/g, (whole, alt, url) => {
343
+ const href = safeUrl(url);
344
+ return href ? keep(`<a href="${href}">${alt || href}</a>`) : whole;
345
+ })
346
+ .replace(/\[([^\]\n]{1,1000})\]\(([^)\s]{1,2048})(?:\s+&quot;[^)\n]{0,1000}&quot;)?\)/g, (whole, label, url) => {
347
+ const href = safeUrl(url);
348
+ return href ? keep(`<a href="${href}">${label}</a>`) : whole;
349
+ })
350
+ .replace(/&lt;((?:https?:\/\/|mailto:)[^\s&]{1,2048}(?:&amp;[^\s&]{1,2048}){0,64})&gt;/gi, (whole, url) => {
351
+ const href = safeUrl(url);
352
+ return href ? keep(`<a href="${href}">${url}</a>`) : whole;
353
+ })
354
+ .replace(/(\*\*|__)(?=\S)([^\n]{0,2000}?\S)\1/g, '<strong>$2</strong>')
355
+ .replace(/(?<![\w*])\*(?=\S)([^*\n]*?\S)\*(?![\w*])/g, '<em>$1</em>')
356
+ .replace(/(?<![\w_])_(?=\S)([^_\n]*?\S)_(?![\w_])/g, '<em>$1</em>')
357
+ .replace(/~~(?=\S)([^\n]{0,2000}?\S)~~/g, '<del>$1</del>')
358
+ .replace(/\n/g, '<br>\n');
359
+ for (let round = 0; round < 3 && html.includes('\uE000'); round++) {
360
+ html = html.replace(/\uE000(\d+)\uE000/g, (_, index) => code[Number(index)]);
361
+ }
362
+ return html;
363
+ }
364
+ const FENCE_OPEN = /^ {0,3}(`{3,}|~{3,})(.*)$/;
365
+ const HEADING = /^ {0,3}(#{1,6})\s+(.*?)\s*#*\s*$/;
366
+ const RULE = /^ {0,3}([-*_])(\s*\1){2,}\s*$/;
367
+ const QUOTE = /^ {0,3}>\s?(.*)$/;
368
+ const LIST_ITEM = /^(\s*)([-*+]|\d{1,9}[.)])\s+(.*)$/;
369
+ const TABLE_SEPARATOR = /^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)*\|?\s*$/;
370
+ function tableCells(line) {
371
+ return line
372
+ .trim()
373
+ .replace(/^\|/, '')
374
+ .replace(/\|$/, '')
375
+ .split(/(?<!\\)\|/)
376
+ .map((cell) => cell.trim().replace(/\\\|/g, '|'));
377
+ }
378
+ function startsBlock(line, next) {
379
+ return (FENCE_OPEN.test(line) ||
380
+ HEADING.test(line) ||
381
+ RULE.test(line) ||
382
+ QUOTE.test(line) ||
383
+ LIST_ITEM.test(line) ||
384
+ (line.includes('|') && next !== undefined && TABLE_SEPARATOR.test(next) && next.includes('-')));
385
+ }
386
+ function renderList(lines, depth) {
387
+ const first = LIST_ITEM.exec(lines[0]);
388
+ const indent = first?.[1].length ?? 0;
389
+ const ordered = /\d/.test(first?.[2] ?? '');
390
+ const items = [];
391
+ for (const line of lines) {
392
+ const item = LIST_ITEM.exec(line);
393
+ if (item && item[1].length <= indent)
394
+ items.push([item[3]]);
395
+ else if (items.length > 0)
396
+ items[items.length - 1].push(line.replace(/^\s{1,4}/, ''));
397
+ }
398
+ const start = ordered ? Number(/\d+/.exec(first?.[2] ?? '1')?.[0] ?? 1) : 1;
399
+ const tag = ordered ? 'ol' : 'ul';
400
+ const body = items
401
+ .map((item) => {
402
+ const nested = item.findIndex((line, index) => index > 0 && LIST_ITEM.test(line));
403
+ if (nested === -1 && !item.some((line) => !line.trim())) {
404
+ return `<li>${inlineHtml(item.join('\n').trim())}</li>`;
405
+ }
406
+ const head = nested === -1 ? item : item.slice(0, nested);
407
+ const rest = nested === -1 ? [] : item.slice(nested);
408
+ return `<li>${inlineHtml(head.join('\n').trim())}${rest.length ? renderBlocks(rest, depth + 1) : ''}</li>`;
409
+ })
410
+ .join('');
411
+ return `<${tag}${ordered && start !== 1 ? ` start="${start}"` : ''}>${body}</${tag}>`;
412
+ }
413
+ function renderBlocks(lines, depth = 0) {
414
+ if (depth >= MAX_NESTING) {
415
+ return `<p>${inlineHtml(lines.join('\n').trim())}</p>`;
416
+ }
417
+ const out = [];
418
+ let i = 0;
419
+ while (i < lines.length) {
420
+ const line = lines[i];
421
+ if (!line.trim()) {
422
+ i++;
423
+ continue;
424
+ }
425
+ const fence = FENCE_OPEN.exec(line);
426
+ if (fence) {
427
+ const marker = fence[1];
428
+ const body = [];
429
+ i++;
430
+ while (i < lines.length) {
431
+ const closing = /^ {0,3}(`{3,}|~{3,})\s*$/.exec(lines[i]);
432
+ if (closing?.[1].startsWith(marker[0]) && closing[1].length >= marker.length)
433
+ break;
434
+ body.push(lines[i]);
435
+ i++;
436
+ }
437
+ i++;
438
+ out.push(`<pre style="${CODE_STYLE}; padding: 8px 12px; overflow-x: auto"><code>${escapeHtml(body.join('\n'))}</code></pre>`);
439
+ continue;
440
+ }
441
+ const heading = HEADING.exec(line);
442
+ if (heading) {
443
+ const level = heading[1].length;
444
+ out.push(`<h${level}>${inlineHtml(heading[2])}</h${level}>`);
445
+ i++;
446
+ continue;
447
+ }
448
+ if (RULE.test(line)) {
449
+ out.push('<hr>');
450
+ i++;
451
+ continue;
452
+ }
453
+ if (QUOTE.test(line)) {
454
+ const quoted = [];
455
+ while (i < lines.length && lines[i].trim()) {
456
+ const match = QUOTE.exec(lines[i]);
457
+ quoted.push(match ? match[1] : lines[i]);
458
+ i++;
459
+ }
460
+ out.push(`<blockquote style="margin: 0 0 0 8px; padding-left: 12px; border-left: 3px solid #d4d4d8; color: #52525b">${renderBlocks(quoted, depth + 1)}</blockquote>`);
461
+ continue;
462
+ }
463
+ const listStart = LIST_ITEM.exec(line);
464
+ if (listStart) {
465
+ const indent = listStart[1].length;
466
+ const ordered = /\d/.test(listStart[2]);
467
+ const sameList = (candidate) => {
468
+ const item = LIST_ITEM.exec(candidate);
469
+ if (!item)
470
+ return false;
471
+ return item[1].length > indent || /\d/.test(item[2]) === ordered;
472
+ };
473
+ const items = [];
474
+ while (i < lines.length) {
475
+ const current = lines[i];
476
+ if (LIST_ITEM.test(current) && !sameList(current))
477
+ break;
478
+ if (!current.trim()) {
479
+ const next = lines[i + 1];
480
+ if (next !== undefined && (sameList(next) || /^\s{2,}\S/.test(next))) {
481
+ items.push(current);
482
+ i++;
483
+ continue;
484
+ }
485
+ break;
486
+ }
487
+ if (!LIST_ITEM.test(current) && !/^\s/.test(current) && items.length > 0) {
488
+ const previous = items[items.length - 1];
489
+ if (!previous.trim() || startsBlock(current, lines[i + 1]))
490
+ break;
491
+ }
492
+ items.push(current);
493
+ i++;
494
+ }
495
+ out.push(renderList(items, depth));
496
+ continue;
497
+ }
498
+ const next = lines[i + 1];
499
+ if (line.includes('|') &&
500
+ next !== undefined &&
501
+ TABLE_SEPARATOR.test(next) &&
502
+ next.includes('-')) {
503
+ const header = tableCells(line);
504
+ const rows = [];
505
+ i += 2;
506
+ while (i < lines.length && lines[i].includes('|') && lines[i].trim()) {
507
+ rows.push(tableCells(lines[i]));
508
+ i++;
509
+ }
510
+ const cell = (tag, text) => `<${tag} style="border: 1px solid #d4d4d8; padding: 4px 8px; text-align: left">${inlineHtml(text)}</${tag}>`;
511
+ out.push(`<table style="border-collapse: collapse"><thead><tr>${header.map((text) => cell('th', text)).join('')}</tr></thead><tbody>${rows
512
+ .map((row) => `<tr>${row.map((text) => cell('td', text)).join('')}</tr>`)
513
+ .join('')}</tbody></table>`);
514
+ continue;
515
+ }
516
+ const paragraph = [line];
517
+ i++;
518
+ while (i < lines.length && lines[i].trim() && !startsBlock(lines[i], lines[i + 1])) {
519
+ paragraph.push(lines[i]);
520
+ i++;
521
+ }
522
+ out.push(`<p>${inlineHtml(paragraph.join('\n').trim())}</p>`);
523
+ }
524
+ return out.join('\n');
525
+ }
526
+ /**
527
+ * Markdown as the HTML body of an email: headings, paragraphs, lists, quotes, code blocks,
528
+ * tables, emphasis and links (only `http`, `https` and `mailto`), with inline styles, since
529
+ * many mail clients drop style sheets. Raw HTML in the Markdown is escaped, not rendered.
530
+ */
531
+ export function markdownToHtml(markdown) {
532
+ const body = renderBlocks(markdown.replace(/\r\n?/g, '\n').split('\n'));
533
+ return `<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.5; color: #18181b">\n${body}\n</div>`;
534
+ }
535
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Markdown with its images turned into links and raw `<img>` tags into text, outside code
3
+ * (fenced blocks and code spans, read as CommonMark reads them), so a client that loads images
4
+ * as it shows a message cannot be made to request a URL the text names. Linear in the length of
5
+ * `text`.
6
+ */
7
+ export declare function imagesAsLinks(text: string): string;
8
+ //# sourceMappingURL=markdown-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-images.d.ts","sourceRoot":"","sources":["../../src/formatters/markdown-images.ts"],"names":[],"mappings":"AAgIA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkClD"}