@portabletext/markdown 2.0.0 → 2.1.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.
package/README.md CHANGED
@@ -81,32 +81,28 @@ const markdown = portableTextToMarkdown([
81
81
 
82
82
  ## Round-trip behavior
83
83
 
84
- 1. Translation preserves semantics, not source spelling. The first MD→PT→MD pass normalizes Markdown to one canonical spelling: autolinks and reference links become inline links, indented code becomes fenced code, and emphasis, headings, lists, and tables each get one canonical form.
84
+ Converting Markdown to Portable Text and back isn't a lossless mirror:
85
85
 
86
- ```
87
- <https://portabletext.org> -> [https://portabletext.org](https://portabletext.org)
88
- [ref link][id] -> [ref link](https://example.com "title")
89
- ```
86
+ 1. Translation preserves semantics, not source spelling: the first MD→PT→MD pass normalizes Markdown to one canonical spelling (autolinks become inline links, indented code becomes fenced code, soft-wrapped lines join into one, and so on).
87
+ 2. The normalized Markdown is a fixpoint for plain text and the [Supported features](#supported-features) table: parsing it and serializing again reproduces it byte-for-byte.
88
+ 3. MD→PT survival is schema-driven: a construct whose type the schema doesn't declare keeps its content and drops the structure that named it.
89
+ 4. PT structures with no Markdown form degrade predictably on PT→MD (extra table header rows flatten into the body, deep or level-skipping lists collapse to relative nesting, unknown marks pass their text through unformatted). Unknown object types round-trip instead: block-level as a ` ```json:object ` fence, inline as a `json:object`-tagged code span, both carrying the value as JSON. A fence or span whose body isn't a JSON object with a `_type` is ordinary code.
90
+ 5. Identity does not round-trip for text blocks: keys are regenerated on every parse, and adjacent spans with identical marks merge into one. Unknown objects keep their `_key`.
91
+ 6. A hard break and a `\n` in a span's text are exclusive counterparts in both directions: a `\n` always renders as hard-break syntax on the way out, and hard-break syntax always becomes `\n` on the way in, never the space a soft wrap joins with.
90
92
 
91
- 2. The normalized Markdown is a fixpoint for the constructs in the [Supported features](#supported-features) table above: parsing it and serializing again reproduces it byte-for-byte, pinned by a full-document round-trip test. This doesn't yet extend to plain text that happens to contain literal Markdown punctuation: serialization doesn't escape it, so a second parse reads it back as markup instead of literal text.
93
+ The named exceptions to the fixpoint claim: an explicit-scheme URL or email keeps its text but gains a `link` mark on reparse, and a fuzzy `www.` form does too unless it carries markdown-significant punctuation; a hard break inside a heading splits into a second block on reparse, since an ATX heading is single-line; leading or trailing whitespace that CommonMark's own block parsing trims isn't part of the fixpoint; a `code` object with the reserved language `json:object` loses that language on serialization; and span text ending in `json:object` directly before a code-marked span holding a typed JSON object binds into an inline object on reparse.
92
94
 
93
- ```
94
- \*bar\* -> *bar* (serialized unescaped; a second parse reads this as emphasis)
95
- ```
96
-
97
- 3. MD→PT survival is schema-driven. Constructs whose type the schema doesn't declare degrade predictably: they keep their content and drop the structure that named them. Marks drop formatting but keep the text (`**bar**` with no `strong` decorator in the schema becomes a plain span reading `bar`); tables flatten their cell content into top-level blocks; images fall back to their Markdown source as plain text; task-list checkboxes strip to plain list items.
98
-
99
- 4. PT structures with no Markdown form degrade predictably on PT→MD. GFM tables have one header row, so header rows beyond the first flatten into the body. Deep or level-skipping lists collapse to relative nesting. A list's first item renders at the top level whatever its `level`, and each deeper jump between items indents one step, however many levels it skips. Multi-block table cells join their blocks with spaces. Unknown object types render as a fenced JSON block; unknown marks pass their text through unformatted.
100
-
101
- 5. Identity does not round-trip. Keys are regenerated on every parse, and adjacent spans with identical marks merge into one.
95
+ See [Markdown round-tripping](https://www.portabletext.org/conversion/markdown-round-tripping/) on the docs site for the full contract and worked examples.
102
96
 
103
97
  ## Usage
104
98
 
105
- <!-- The schema table, matcher table, supported-features table, and
106
- round-trip section have condensed twins on the docs site
99
+ <!-- The schema table, matcher table, and supported-features table have
100
+ condensed twins on the docs site
107
101
  (apps/docs/src/content/docs/conversion/markdown-to-portable-text.mdx).
108
102
  Keep them in sync: a claim corrected in one place is stale in the
109
- other. -->
103
+ other. The Round-trip behavior section above is a summary of
104
+ apps/docs/src/content/docs/conversion/markdown-round-tripping.mdx,
105
+ which is canonical; keep the two in sync the same way. -->
110
106
 
111
107
  ### `markdownToPortableText`
112
108
 
@@ -270,6 +266,8 @@ The default code block matcher requires the schema type to have a `'code'` field
270
266
 
271
267
  **Links** support optional titles using `[text](url "title")` syntax. The title is captured in the `'title'` field of the `'link'` annotation.
272
268
 
269
+ **Line breaks**: soft-wrapped lines within a paragraph join with a single space; a hard break (two or more trailing spaces, or a backslash, before the newline) becomes a line break within the block.
270
+
273
271
  **Nested lists** are handled automatically. Each list item block includes a `level` property indicating its nesting depth (1 for top-level, 2 for nested, etc.).
274
272
 
275
273
  **HTML blocks** (like `<div>...</div>`) become `'html'` block objects with the raw HTML in the `'html'` field. Inline HTML is controlled by the `html.inline` option.
@@ -299,7 +297,7 @@ markdownToPortableText(markdown, {
299
297
  })
300
298
  ```
301
299
 
302
- > **Note:** Checking if the type exists in the schema isn't required, but it's good practice. Returning `undefined` gracefully skips unsupported types.
300
+ > **Note:** Checking if the type exists in the schema isn't required, but it's good practice. Returning `undefined` skips unsupported types.
303
301
 
304
302
  **Table matcher:** GFM pipe tables convert by default (see [Default behavior](#default-behavior)). Provide your own matcher to map onto a differently-shaped `table` type:
305
303
 
@@ -417,6 +415,39 @@ markdownToPortableText(markdown, {
417
415
  })
418
416
  ```
419
417
 
418
+ #### Reporting degradation
419
+
420
+ Every construct the schema can't represent (a decorator not in the schema, a table with no `table` block object, a task checkbox with no `task` list, and so on) degrades to a lossier shape rather than throwing. A ` ```json:object ` fence or tagged code span that fails to reconstruct (invalid JSON, or no string `_type`) reports too, as `object-carrier-invalid`, even on a schema that would otherwise accept everything: it's the payload that's unusable, not the schema. `onDegradation` observes both, one callback covering all uses. Left unset, the conversion stays silent and returns the lossiest representation it can build, since a library shouldn't log on its own initiative. Passed a function, observe the losses: it's called once, after the whole document has been walked, only when at least one construct degraded, with a report object holding every `Degradation` in encounter order and a canonical grouped `message`. Enforce against lossy output by throwing your own error from inside that callback; the throw propagates out of `markdownToPortableText`.
421
+
422
+ ```ts
423
+ markdownToPortableText(markdown, {
424
+ onDegradation: ({degradations, message}) => {
425
+ // degradations: every Degradation, in encounter order
426
+ // message: the same degradations grouped, snippeted, and sorted by line
427
+ logger.warn(message)
428
+ },
429
+ })
430
+ ```
431
+
432
+ Each `Degradation` carries `type`, a human-readable `message`, `line` when a source line is available, and `snippet` (the offending construct's text, truncated to 40 characters) when there's a specific piece of source text to quote. Match on `type`, not `message`: the type is the stable contract, the message can change between releases.
433
+
434
+ Enforcing means throwing your own error from inside the callback:
435
+
436
+ ```ts
437
+ markdownToPortableText('# heading\n\n**bold**', {
438
+ schema: compileSchema(defineSchema({})),
439
+ onDegradation: ({message}) => {
440
+ throw new Error(message)
441
+ },
442
+ })
443
+ // throws Error:
444
+ // Markdown could not be converted without loss:
445
+ // - line 1: `#` heading became a normal paragraph: the schema has no `h1` style ("heading")
446
+ // - line 3: Removed bold formatting, kept the text: the schema has no `strong` decorator ("bold")
447
+ ```
448
+
449
+ Repeated declines of the same kind (the same missing decorator on three spans, say) collapse into one line of `message` instead of repeating the sentence: `- Removed bold formatting, kept the text: the schema has no \`strong\` decorator (3×: "a", "b", "c")`. `degradations` stays ungrouped, one entry per occurrence.
450
+
420
451
  ### `portableTextToMarkdown`
421
452
 
422
453
  ```ts
@@ -568,17 +599,19 @@ portableTextToMarkdown(blocks, {
568
599
 
569
600
  #### What renderers receive
570
601
 
602
+ One question decides which text field a renderer reads: **are you wrapping markdown, or emitting something else?** `children` is markdown: nested marks are rendered and literal punctuation is backslash-escaped, so it embeds in markdown output as-is (`` `**${children}**` ``). `text` is source: the raw span text exactly as stored, for renderers that emit their own delimiters or non-markdown output (code fences, HTML tags), where escapes would appear literally. The built-in `code` decorator renderer reads `text`; every other built-in reads `children`.
603
+
571
604
  **Block renderers** (`block.*`):
572
605
 
573
606
  - `value` – the block object
574
- - `children` – rendered content of the block
607
+ - `children` – rendered content of the block, as markdown (escaped)
575
608
  - `index` – position in the blocks array
576
609
 
577
610
  **Mark renderers** (`marks.*`):
578
611
 
579
612
  - `value` – the mark definition (for annotations like links)
580
- - `children` – the rendered marked content
581
- - `text` – the raw text content (without nested mark rendering)
613
+ - `children` – the rendered marked content, as markdown (escaped)
614
+ - `text` – the raw text content (unescaped, no nested mark rendering)
582
615
  - `markType` – the mark type name
583
616
  - `markKey` – the mark's key (for annotations)
584
617
 
@@ -633,7 +666,7 @@ portableTextToMarkdown(blocks, {
633
666
  })
634
667
  ```
635
668
 
636
- By default, unknown types render as JSON code blocks, and unknown marks/styles pass through their children unchanged.
669
+ By default, unknown types render as `json:object` fences or tagged code spans that round-trip (see [Round-trip behavior](#round-trip-behavior)), and unknown marks/styles pass through their children unchanged.
637
670
 
638
671
  You can also customize hard break rendering:
639
672
 
package/dist/index.d.ts CHANGED
@@ -282,7 +282,9 @@ interface PortableTextRendererOptions<T> {
282
282
  */
283
283
  isInline: boolean;
284
284
  /**
285
- * Serialized Markdown of child nodes of this block/type
285
+ * Serialized Markdown of child nodes of this block/type: nested marks
286
+ * rendered, markdown-significant punctuation in plain text
287
+ * backslash-escaped. Safe to embed in markdown output as-is.
286
288
  */
287
289
  children?: string;
288
290
  /**
@@ -309,7 +311,12 @@ interface PortableTextMarkRendererOptions<M extends TypedObject = ArbitraryTyped
309
311
  */
310
312
  value?: M;
311
313
  /**
312
- * Text content of this mark
314
+ * The raw text content of this mark: the span text exactly as stored in
315
+ * the Portable Text, unescaped, with no nested mark rendering. Read this
316
+ * when your renderer emits its own delimiters or non-markdown output
317
+ * (code fences, HTML tags), where backslash escapes would appear
318
+ * literally. The built-in `code` decorator renderer works from this
319
+ * field.
313
320
  */
314
321
  text: string;
315
322
  /**
@@ -321,7 +328,11 @@ interface PortableTextMarkRendererOptions<M extends TypedObject = ArbitraryTyped
321
328
  */
322
329
  markType: string;
323
330
  /**
324
- * Serialized Markdown of child nodes of this mark
331
+ * Serialized Markdown of this mark's child nodes: nested marks are
332
+ * rendered and markdown-significant punctuation in plain text is
333
+ * backslash-escaped. Safe to embed in markdown output as-is; wrapping
334
+ * renderers (`**${children}**`) should always use this. For the raw,
335
+ * unescaped text, read `text` instead.
325
336
  */
326
337
  children: string;
327
338
  /**
@@ -403,6 +414,20 @@ declare const DefaultEmRenderer: PortableTextMarkRenderer;
403
414
  */
404
415
  declare const DefaultStrongRenderer: PortableTextMarkRenderer;
405
416
  /**
417
+ * Renders a `code` decorator from the raw span text, bypassing the escaped
418
+ * `children`: code content is verbatim, never markdown syntax. The
419
+ * backtick fence is widened past the longest run of backticks already in
420
+ * the text (CommonMark: the fence must be longer than any run it encloses).
421
+ *
422
+ * A space is padded on each side when the content starts or ends with a
423
+ * backtick, so the fence and the content's own backtick never merge into
424
+ * one run, and also when the content starts and ends with a space and
425
+ * isn't all whitespace (`text.trim() !== ''`; an all-space code span has
426
+ * nothing else for CommonMark's strip rule to leave behind, so padding it
427
+ * would only add visible spaces), because CommonMark itself would
428
+ * otherwise strip one such space per side on reparse; the padding
429
+ * pre-compensates for that strip.
430
+ *
406
431
  * @public
407
432
  */
408
433
  declare const DefaultCodeRenderer: PortableTextMarkRenderer;
@@ -579,9 +604,67 @@ type ObjectMatcher<TValue extends Record<string, unknown> = Record<string, never
579
604
  value: TValue;
580
605
  isInline: boolean;
581
606
  }) => PortableTextObject | undefined;
607
+ /**
608
+ * The classification of a lossy conversion encountered while converting
609
+ * markdown to Portable Text: a markdown construct the conversion couldn't
610
+ * carry through losslessly, whether because the target schema (or the
611
+ * active matchers) doesn't represent it, or because the surrounding
612
+ * structure (a table cell, for instance) can't hold the shape markdown
613
+ * expressed, so the conversion fell back to a lossier representation
614
+ * instead of failing.
615
+ *
616
+ * @public
617
+ */
618
+ type DegradationType = 'decorator-dropped' | 'annotation-dropped' | 'style-fallback' | 'list-flattened' | 'task-checkbox-stripped' | 'table-flattened' | 'code-block-to-text' | 'horizontal-rule-to-text' | 'html-block-to-text' | 'inline-html-dropped' | 'image-block-to-inline' | 'image-inline-to-block' | 'image-to-text' | 'callout-fallback' | 'fields-dropped' | 'object-carrier-invalid';
619
+ /**
620
+ * Reports a single lossy conversion, in encounter order: as the conversion
621
+ * walks the markdown, that's the order nested constructs close in, not
622
+ * necessarily top-to-bottom document order. `line` is the 1-based markdown
623
+ * source line: usually the line of the token that degraded, but for a
624
+ * token without its own line (an inline construct inside a table cell, for
625
+ * instance) the enclosing construct's line instead; absent when no token
626
+ * carries a usable line at all. `snippet` is the offending construct's
627
+ * text, truncated to 40 characters with an ellipsis, present whenever the
628
+ * degradation has a specific piece of source text to quote (a dropped
629
+ * decorator's span, an unsupported image's alt text) and absent when the
630
+ * construct has nothing to quote (a table with no `table` block object, a
631
+ * callout whose type isn't in the schema). `message` is human-readable and
632
+ * may change between releases; match on `type`, not `message`. The set of
633
+ * `type` values grows in minor releases as new degradation sites report, so
634
+ * compare against the values you handle rather than switching exhaustively.
635
+ *
636
+ * @public
637
+ */
638
+ type Degradation = {
639
+ type: DegradationType;
640
+ message: string;
641
+ line?: number;
642
+ snippet?: string;
643
+ };
582
644
  type Options = {
583
645
  schema?: Schema;
584
646
  keyGenerator?: () => string;
647
+ /**
648
+ * Called at most once, after the conversion has walked the whole
649
+ * document, only when at least one construct degraded. Left unset, the
650
+ * conversion stays silent and returns the lossiest representation it can
651
+ * build. Passed a function, observe every degradation via
652
+ * `report.degradations`, in encounter order. Enforce against lossy output by
653
+ * throwing your own error from inside the callback, using
654
+ * `report.message` (the canonical grouped text) as its message; the
655
+ * throw propagates out of `markdownToPortableText`.
656
+ *
657
+ * ```ts
658
+ * markdownToPortableText(markdown, {onDegradation: ({message}) => { throw new Error(message) }})
659
+ * ```
660
+ *
661
+ * `report` is a single object, not positional parameters, so it can gain
662
+ * fields later without a breaking change.
663
+ */
664
+ onDegradation?: (report: {
665
+ degradations: Array<Degradation>;
666
+ message: string;
667
+ }) => void;
585
668
  marks?: {
586
669
  strong?: DecoratorMatcher;
587
670
  em?: DecoratorMatcher;
@@ -668,5 +751,5 @@ type Options = {
668
751
  * @public
669
752
  */
670
753
  declare function markdownToPortableText(markdown: string, options?: Options): Array<PortableTextBlock>;
671
- export { type AnnotationMatcher, type BlockSpacingRenderer, type DecoratorMatcher, DefaultBlockSpacingRenderer, DefaultBlockquoteObjectRenderer, DefaultBlockquoteRenderer, DefaultCalloutRenderer, DefaultCodeBlockRenderer, DefaultCodeRenderer, DefaultEmRenderer, DefaultH1Renderer, DefaultH2Renderer, DefaultH3Renderer, DefaultH4Renderer, DefaultH5Renderer, DefaultH6Renderer, DefaultHardBreakRenderer, DefaultHorizontalRuleRenderer, DefaultHtmlRenderer, DefaultImageRenderer, DefaultLinkRenderer, DefaultListItemRenderer, DefaultListRenderer, DefaultNormalRenderer, DefaultStrikeThroughRenderer, DefaultStrongRenderer, DefaultTableRenderer, DefaultUnderlineRenderer, type ListItemMatcher, type ObjectMatcher, type PortableTextBlockRenderer, type PortableTextListItemRenderer, type PortableTextMarkRenderer, type PortableTextMarkRendererOptions, type PortableTextRenderer, type PortableTextRendererOptions, type PortableTextRenderers, type PortableTextTypeRenderer, type PortableTextTypeRendererOptions, type StyleMatcher, markdownToPortableText, portableTextToMarkdown };
754
+ export { type AnnotationMatcher, type BlockSpacingRenderer, type DecoratorMatcher, DefaultBlockSpacingRenderer, DefaultBlockquoteObjectRenderer, DefaultBlockquoteRenderer, DefaultCalloutRenderer, DefaultCodeBlockRenderer, DefaultCodeRenderer, DefaultEmRenderer, DefaultH1Renderer, DefaultH2Renderer, DefaultH3Renderer, DefaultH4Renderer, DefaultH5Renderer, DefaultH6Renderer, DefaultHardBreakRenderer, DefaultHorizontalRuleRenderer, DefaultHtmlRenderer, DefaultImageRenderer, DefaultLinkRenderer, DefaultListItemRenderer, DefaultListRenderer, DefaultNormalRenderer, DefaultStrikeThroughRenderer, DefaultStrongRenderer, DefaultTableRenderer, DefaultUnderlineRenderer, type Degradation, type ListItemMatcher, type ObjectMatcher, type PortableTextBlockRenderer, type PortableTextListItemRenderer, type PortableTextMarkRenderer, type PortableTextMarkRendererOptions, type PortableTextRenderer, type PortableTextRendererOptions, type PortableTextRenderers, type PortableTextTypeRenderer, type PortableTextTypeRendererOptions, type StyleMatcher, markdownToPortableText, portableTextToMarkdown };
672
755
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../node_modules/.pnpm/@portabletext+types@4.0.2/node_modules/@portabletext/types/dist/index.d.ts","../src/from-portable-text/renderers/block-spacing.ts","../src/from-portable-text/types.ts","../src/from-portable-text/portable-text-to-markdown.ts","../src/from-portable-text/renderers/hard-break.ts","../src/from-portable-text/renderers/list-item.ts","../src/from-portable-text/renderers/style.ts","../src/from-portable-text/renderers/marks.ts","../src/from-portable-text/renderers/type.ts","../src/to-portable-text/matchers.ts","../src/to-portable-text/markdown-to-portable-text.ts"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../node_modules/.pnpm/@portabletext+types@4.0.2/node_modules/@portabletext/types/dist/index.d.ts","../src/from-portable-text/renderers/block-spacing.ts","../src/from-portable-text/types.ts","../src/from-portable-text/portable-text-to-markdown.ts","../src/from-portable-text/renderers/hard-break.ts","../src/from-portable-text/renderers/list-item.ts","../src/from-portable-text/renderers/style.ts","../src/from-portable-text/renderers/marks.ts","../src/from-portable-text/renderers/type.ts","../src/to-portable-text/matchers.ts","../src/to-portable-text/markdown-to-portable-text.ts"],"x_google_ignoreList":[0],"mappings":"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"}