sunsama-api 0.12.0 → 0.12.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.
@@ -15,11 +15,29 @@ exports.htmlToMarkdown = htmlToMarkdown;
15
15
  exports.markdownToHtml = markdownToHtml;
16
16
  exports.sanitizeHtml = sanitizeHtml;
17
17
  exports.convertContent = convertContent;
18
+ exports.parseMarkdownToSegments = parseMarkdownToSegments;
19
+ exports.parseMarkdownToBlocks = parseMarkdownToBlocks;
18
20
  const tslib_1 = require("tslib");
19
21
  const marked_1 = require("marked");
20
22
  const turndown_1 = tslib_1.__importDefault(require("turndown"));
21
23
  const zod_1 = require("zod");
22
24
  const index_js_1 = require("../errors/index.js");
25
+ /**
26
+ * Decodes common HTML entities back to their original characters.
27
+ * This is needed because marked's lexer HTML-encodes some characters.
28
+ */
29
+ function decodeHtmlEntities(text) {
30
+ return text
31
+ .replace(/&/g, '&')
32
+ .replace(/&lt;/g, '<')
33
+ .replace(/&gt;/g, '>')
34
+ .replace(/&quot;/g, '"')
35
+ .replace(/&#39;/g, "'")
36
+ .replace(/&#x27;/g, "'")
37
+ .replace(/&apos;/g, "'")
38
+ .replace(/&#(\d+);/g, (_, code) => String.fromCharCode(parseInt(code, 10)))
39
+ .replace(/&#x([0-9a-fA-F]+);/g, (_, code) => String.fromCharCode(parseInt(code, 16)));
40
+ }
23
41
  /**
24
42
  * Validation schema for HTML input
25
43
  */
@@ -233,4 +251,443 @@ function convertContent(content, fromFormat, toFormat, options = {}) {
233
251
  }
234
252
  throw new index_js_1.SunsamaAuthError(`Invalid conversion format: ${fromFormat} to ${toFormat}`);
235
253
  }
254
+ /**
255
+ * Parses inline tokens from marked and converts them to formatted segments
256
+ * with Yjs-compatible attributes
257
+ *
258
+ * @param tokens - Array of marked inline tokens
259
+ * @param inheritedAttributes - Attributes inherited from parent elements
260
+ * @returns Array of formatted segments with text and attributes
261
+ * @internal
262
+ */
263
+ function parseInlineTokens(tokens, inheritedAttributes = {}) {
264
+ const segments = [];
265
+ for (const token of tokens) {
266
+ switch (token.type) {
267
+ case 'text': {
268
+ const textToken = token;
269
+ // Handle text tokens that may have nested tokens (from inline parsing)
270
+ if ('tokens' in textToken && textToken.tokens && textToken.tokens.length > 0) {
271
+ segments.push(...parseInlineTokens(textToken.tokens, inheritedAttributes));
272
+ }
273
+ else {
274
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
275
+ segments.push({ text: decodeHtmlEntities(textToken.text), attributes: attrs });
276
+ }
277
+ break;
278
+ }
279
+ case 'strong': {
280
+ const strongToken = token;
281
+ const newAttrs = { ...inheritedAttributes, bold: true };
282
+ if ('tokens' in strongToken && strongToken.tokens && strongToken.tokens.length > 0) {
283
+ segments.push(...parseInlineTokens(strongToken.tokens, newAttrs));
284
+ }
285
+ else {
286
+ segments.push({ text: decodeHtmlEntities(strongToken.text), attributes: newAttrs });
287
+ }
288
+ break;
289
+ }
290
+ case 'em': {
291
+ const emToken = token;
292
+ const newAttrs = { ...inheritedAttributes, italic: true };
293
+ if ('tokens' in emToken && emToken.tokens && emToken.tokens.length > 0) {
294
+ segments.push(...parseInlineTokens(emToken.tokens, newAttrs));
295
+ }
296
+ else {
297
+ segments.push({ text: decodeHtmlEntities(emToken.text), attributes: newAttrs });
298
+ }
299
+ break;
300
+ }
301
+ case 'link': {
302
+ const linkToken = token;
303
+ // Sunsama expects link as a nested object with href property
304
+ const newAttrs = { ...inheritedAttributes, link: { href: linkToken.href } };
305
+ if ('tokens' in linkToken && linkToken.tokens && linkToken.tokens.length > 0) {
306
+ segments.push(...parseInlineTokens(linkToken.tokens, newAttrs));
307
+ }
308
+ else {
309
+ segments.push({ text: decodeHtmlEntities(linkToken.text), attributes: newAttrs });
310
+ }
311
+ break;
312
+ }
313
+ case 'codespan': {
314
+ const codeToken = token;
315
+ const newAttrs = { ...inheritedAttributes, code: true };
316
+ segments.push({ text: decodeHtmlEntities(codeToken.text), attributes: newAttrs });
317
+ break;
318
+ }
319
+ case 'del': {
320
+ // Note: Sunsama's editor doesn't support strikethrough marks
321
+ // So we render it as plain text with ~~ delimiters preserved
322
+ const delToken = token;
323
+ if ('tokens' in delToken && delToken.tokens && delToken.tokens.length > 0) {
324
+ segments.push({ text: '~~' });
325
+ segments.push(...parseInlineTokens(delToken.tokens, inheritedAttributes));
326
+ segments.push({ text: '~~' });
327
+ }
328
+ else {
329
+ segments.push({
330
+ text: `~~${decodeHtmlEntities(delToken.text)}~~`,
331
+ attributes: inheritedAttributes,
332
+ });
333
+ }
334
+ break;
335
+ }
336
+ case 'br': {
337
+ segments.push({ text: '\n' });
338
+ break;
339
+ }
340
+ case 'escape': {
341
+ const escapeToken = token;
342
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
343
+ segments.push({ text: decodeHtmlEntities(escapeToken.text), attributes: attrs });
344
+ break;
345
+ }
346
+ default: {
347
+ // For any other token types, try to extract text
348
+ if ('text' in token && typeof token.text === 'string') {
349
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
350
+ segments.push({
351
+ text: decodeHtmlEntities(token.text),
352
+ attributes: attrs,
353
+ });
354
+ }
355
+ else if ('raw' in token && typeof token.raw === 'string') {
356
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
357
+ segments.push({ text: token.raw, attributes: attrs });
358
+ }
359
+ break;
360
+ }
361
+ }
362
+ }
363
+ return segments;
364
+ }
365
+ /**
366
+ * Parses markdown content into formatted segments suitable for Yjs XmlText insertion.
367
+ *
368
+ * This function converts markdown text into an array of segments, where each segment
369
+ * contains the text content and optional formatting attributes (bold, italic, link, etc.).
370
+ * The segments can be used to insert rich text into a Yjs document with proper formatting.
371
+ *
372
+ * @param markdown - The markdown content to parse
373
+ * @returns Array of formatted segments with text and Yjs-compatible attributes
374
+ *
375
+ * @example
376
+ * ```typescript
377
+ * const segments = parseMarkdownToSegments('This is **bold** and *italic* text');
378
+ * // Returns:
379
+ * // [
380
+ * // { text: 'This is ' },
381
+ * // { text: 'bold', attributes: { bold: true } },
382
+ * // { text: ' and ' },
383
+ * // { text: 'italic', attributes: { italic: true } },
384
+ * // { text: ' text' }
385
+ * // ]
386
+ *
387
+ * const linkSegments = parseMarkdownToSegments('Visit [Google](https://google.com)');
388
+ * // Returns:
389
+ * // [
390
+ * // { text: 'Visit ' },
391
+ * // { text: 'Google', attributes: { link: 'https://google.com' } }
392
+ * // ]
393
+ * ```
394
+ */
395
+ function parseMarkdownToSegments(markdown) {
396
+ if (!markdown || markdown.trim() === '') {
397
+ return [];
398
+ }
399
+ const segments = [];
400
+ // Configure marked for GFM (GitHub Flavored Markdown) support
401
+ marked_1.marked.setOptions({
402
+ gfm: true,
403
+ breaks: true,
404
+ });
405
+ // Tokenize the markdown
406
+ const tokens = marked_1.marked.lexer(markdown);
407
+ for (let i = 0; i < tokens.length; i++) {
408
+ const token = tokens[i];
409
+ switch (token.type) {
410
+ case 'paragraph': {
411
+ const paragraphToken = token;
412
+ if (paragraphToken.tokens) {
413
+ segments.push(...parseInlineTokens(paragraphToken.tokens));
414
+ }
415
+ // Add newline after paragraph if not the last token
416
+ if (i < tokens.length - 1) {
417
+ segments.push({ text: '\n' });
418
+ }
419
+ break;
420
+ }
421
+ case 'heading': {
422
+ const headingToken = token;
423
+ if (headingToken.tokens) {
424
+ // Apply bold formatting to headings
425
+ segments.push(...parseInlineTokens(headingToken.tokens, { bold: true }));
426
+ }
427
+ segments.push({ text: '\n' });
428
+ break;
429
+ }
430
+ case 'list': {
431
+ const listToken = token;
432
+ for (let j = 0; j < listToken.items.length; j++) {
433
+ const item = listToken.items[j];
434
+ // Add list marker
435
+ const marker = listToken.ordered ? `${j + 1}. ` : '• ';
436
+ segments.push({ text: marker });
437
+ if (item.tokens) {
438
+ // Process list item content
439
+ for (const itemToken of item.tokens) {
440
+ if (itemToken.type === 'text' &&
441
+ 'tokens' in itemToken &&
442
+ itemToken.tokens) {
443
+ segments.push(...parseInlineTokens(itemToken.tokens));
444
+ }
445
+ else if ('tokens' in itemToken && itemToken.tokens) {
446
+ segments.push(...parseInlineTokens(itemToken.tokens));
447
+ }
448
+ else if ('text' in itemToken) {
449
+ segments.push({ text: decodeHtmlEntities(itemToken.text) });
450
+ }
451
+ }
452
+ }
453
+ segments.push({ text: '\n' });
454
+ }
455
+ break;
456
+ }
457
+ case 'code': {
458
+ const codeToken = token;
459
+ segments.push({ text: decodeHtmlEntities(codeToken.text), attributes: { code: true } });
460
+ segments.push({ text: '\n' });
461
+ break;
462
+ }
463
+ case 'blockquote': {
464
+ const blockquoteToken = token;
465
+ if (blockquoteToken.tokens) {
466
+ for (const innerToken of blockquoteToken.tokens) {
467
+ if (innerToken.type === 'paragraph' && 'tokens' in innerToken) {
468
+ segments.push({ text: '> ' });
469
+ segments.push(...parseInlineTokens(innerToken.tokens));
470
+ segments.push({ text: '\n' });
471
+ }
472
+ }
473
+ }
474
+ break;
475
+ }
476
+ case 'hr': {
477
+ segments.push({ text: '---\n' });
478
+ break;
479
+ }
480
+ case 'space': {
481
+ segments.push({ text: '\n' });
482
+ break;
483
+ }
484
+ case 'text': {
485
+ const textToken = token;
486
+ if ('tokens' in textToken && textToken.tokens) {
487
+ segments.push(...parseInlineTokens(textToken.tokens));
488
+ }
489
+ else {
490
+ segments.push({ text: decodeHtmlEntities(textToken.text) });
491
+ }
492
+ break;
493
+ }
494
+ default: {
495
+ // Handle any other token types by extracting raw text
496
+ if ('raw' in token && typeof token.raw === 'string') {
497
+ segments.push({ text: decodeHtmlEntities(token.raw) });
498
+ }
499
+ break;
500
+ }
501
+ }
502
+ }
503
+ // Merge adjacent segments with the same attributes for efficiency
504
+ return mergeAdjacentSegments(segments);
505
+ }
506
+ /**
507
+ * Merges adjacent segments that have the same attributes
508
+ * @param segments - Array of formatted segments
509
+ * @returns Merged array of segments
510
+ * @internal
511
+ */
512
+ function mergeAdjacentSegments(segments) {
513
+ if (segments.length === 0)
514
+ return [];
515
+ const merged = [];
516
+ let current = segments[0];
517
+ for (let i = 1; i < segments.length; i++) {
518
+ const next = segments[i];
519
+ // Check if attributes are the same (or both undefined/empty)
520
+ const currentAttrs = current.attributes || {};
521
+ const nextAttrs = next.attributes || {};
522
+ const attrsEqual = JSON.stringify(currentAttrs) === JSON.stringify(nextAttrs);
523
+ if (attrsEqual) {
524
+ // Merge the text
525
+ current = {
526
+ text: current.text + next.text,
527
+ attributes: Object.keys(currentAttrs).length > 0 ? currentAttrs : undefined,
528
+ };
529
+ }
530
+ else {
531
+ merged.push(current);
532
+ current = next;
533
+ }
534
+ }
535
+ merged.push(current);
536
+ return merged;
537
+ }
538
+ /**
539
+ * Parses markdown content into a document structure with block-level elements.
540
+ *
541
+ * This function converts markdown text into an array of document blocks, where each block
542
+ * represents a block-level element (paragraph, blockquote, horizontal rule, etc.).
543
+ * This structure is suitable for creating proper Yjs XmlElement hierarchies that match
544
+ * Sunsama's rich text editor format.
545
+ *
546
+ * @param markdown - The markdown content to parse
547
+ * @returns Array of document blocks representing the document structure
548
+ *
549
+ * @example
550
+ * ```typescript
551
+ * const blocks = parseMarkdownToBlocks('Hello **world**\n\n> A quote\n\n---');
552
+ * // Returns:
553
+ * // [
554
+ * // { type: 'paragraph', segments: [{ text: 'Hello ' }, { text: 'world', attributes: { bold: true } }] },
555
+ * // { type: 'blockquote', children: [{ type: 'paragraph', segments: [{ text: 'A quote' }] }] },
556
+ * // { type: 'horizontalRule' }
557
+ * // ]
558
+ * ```
559
+ */
560
+ function parseMarkdownToBlocks(markdown) {
561
+ if (!markdown || markdown.trim() === '') {
562
+ return [];
563
+ }
564
+ const blocks = [];
565
+ // Configure marked for GFM support
566
+ marked_1.marked.setOptions({
567
+ gfm: true,
568
+ breaks: true,
569
+ });
570
+ // Tokenize the markdown
571
+ const tokens = marked_1.marked.lexer(markdown);
572
+ for (const token of tokens) {
573
+ switch (token.type) {
574
+ case 'paragraph': {
575
+ const paragraphToken = token;
576
+ if (paragraphToken.tokens) {
577
+ const segments = parseInlineTokens(paragraphToken.tokens);
578
+ if (segments.length > 0) {
579
+ blocks.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
580
+ }
581
+ }
582
+ break;
583
+ }
584
+ case 'heading': {
585
+ // Convert headings to bold paragraphs (Sunsama may not support native headings)
586
+ const headingToken = token;
587
+ if (headingToken.tokens) {
588
+ const segments = parseInlineTokens(headingToken.tokens, { bold: true });
589
+ if (segments.length > 0) {
590
+ blocks.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
591
+ }
592
+ }
593
+ break;
594
+ }
595
+ case 'blockquote': {
596
+ const blockquoteToken = token;
597
+ const children = [];
598
+ if (blockquoteToken.tokens) {
599
+ for (const innerToken of blockquoteToken.tokens) {
600
+ if (innerToken.type === 'paragraph' && 'tokens' in innerToken) {
601
+ const segments = parseInlineTokens(innerToken.tokens);
602
+ if (segments.length > 0) {
603
+ children.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
604
+ }
605
+ }
606
+ }
607
+ }
608
+ if (children.length > 0) {
609
+ blocks.push({ type: 'blockquote', children });
610
+ }
611
+ break;
612
+ }
613
+ case 'hr': {
614
+ blocks.push({ type: 'horizontalRule' });
615
+ break;
616
+ }
617
+ case 'code': {
618
+ const codeToken = token;
619
+ blocks.push({
620
+ type: 'codeBlock',
621
+ segments: [{ text: decodeHtmlEntities(codeToken.text) }],
622
+ });
623
+ break;
624
+ }
625
+ case 'list': {
626
+ // Create proper list structure with listItem elements
627
+ const listToken = token;
628
+ const items = [];
629
+ for (const item of listToken.items) {
630
+ const segments = [];
631
+ if (item.tokens) {
632
+ for (const itemToken of item.tokens) {
633
+ if (itemToken.type === 'text' &&
634
+ 'tokens' in itemToken &&
635
+ itemToken.tokens) {
636
+ segments.push(...parseInlineTokens(itemToken.tokens));
637
+ }
638
+ else if ('tokens' in itemToken && itemToken.tokens) {
639
+ segments.push(...parseInlineTokens(itemToken.tokens));
640
+ }
641
+ else if ('text' in itemToken) {
642
+ segments.push({ text: decodeHtmlEntities(itemToken.text) });
643
+ }
644
+ }
645
+ }
646
+ if (segments.length > 0) {
647
+ items.push({ segments: mergeAdjacentSegments(segments) });
648
+ }
649
+ }
650
+ if (items.length > 0) {
651
+ blocks.push({
652
+ type: listToken.ordered ? 'orderedList' : 'bulletList',
653
+ items,
654
+ start: listToken.ordered && typeof listToken.start === 'number'
655
+ ? listToken.start
656
+ : undefined,
657
+ });
658
+ }
659
+ break;
660
+ }
661
+ case 'space': {
662
+ // Skip pure space tokens - they're handled by paragraph breaks
663
+ break;
664
+ }
665
+ case 'text': {
666
+ const textToken = token;
667
+ const segments = [];
668
+ if ('tokens' in textToken && textToken.tokens) {
669
+ segments.push(...parseInlineTokens(textToken.tokens));
670
+ }
671
+ else {
672
+ segments.push({ text: decodeHtmlEntities(textToken.text) });
673
+ }
674
+ if (segments.length > 0) {
675
+ blocks.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
676
+ }
677
+ break;
678
+ }
679
+ default: {
680
+ // Handle any other token types by extracting raw text
681
+ if ('raw' in token && typeof token.raw === 'string') {
682
+ const raw = token.raw.trim();
683
+ if (raw) {
684
+ blocks.push({ type: 'paragraph', segments: [{ text: raw }] });
685
+ }
686
+ }
687
+ break;
688
+ }
689
+ }
690
+ }
691
+ return blocks;
692
+ }
236
693
  //# sourceMappingURL=conversion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"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"}