UNPKG

@humanspeak/svelte-markdown

Version:

Markdown and HTML renderer for Svelte 5 — built for rendering streaming AI agent output from Claude Code, ChatGPT, and agentic workflows. XSS-safe defaults, streaming-aware sanitization, token caching, TypeScript types, and Svelte 5 runes.

90 lines (89 loc) 3.18 kB
/** * Markdown parsing utilities and default renderer configuration. * * Re-exports key symbols from `marked` and `github-slugger`, defines the * {@link Renderers} type and {@link defaultRenderers} map, and provides * the default parser options used by `SvelteMarkdown`. * * @module */ /** Slugger instance used to generate GitHub-style heading IDs. */ export { default as Slugger } from 'github-slugger'; /** Core `marked` exports used for lexing and type definitions. */ export { Lexer, type MarkedOptions, type Token, type Tokens, type TokensList } from 'marked'; import { type HtmlRenderers } from '../renderers/html/index.js'; import type { Component } from 'svelte'; import type { SvelteMarkdownOptions } from '../types.js'; /** * Represents a Svelte component that can be used as a renderer. * Allows for flexible component types while maintaining type safety. * * @typedef {Component<any, any, any> | undefined | null} RendererComponent */ export type RendererComponent = Component<any, any, any> | undefined | null; /** * Comprehensive mapping of markdown elements to their renderer components. * Structured in categories for better organization and maintainability. * * Categories: * - HTML: Special renderer for HTML content * - Block elements: Major structural elements * - Table elements: Table-specific components * - Inline elements: Text-level components * - List variations: Specialized list item renderers * * @interface Renderers */ export type Renderers = { html: HtmlRenderers; rawtext: RendererComponent; escape: RendererComponent; heading: RendererComponent; paragraph: RendererComponent; blockquote: RendererComponent; code: RendererComponent; list: RendererComponent; listitem: RendererComponent; hr: RendererComponent; table: RendererComponent; tablehead: RendererComponent; tablebody: RendererComponent; tablerow: RendererComponent; tablecell: RendererComponent; text: RendererComponent; link: RendererComponent; image: RendererComponent; em: RendererComponent; strong: RendererComponent; codespan: RendererComponent; br: RendererComponent; del: RendererComponent; orderedlistitem: RendererComponent; unorderedlistitem: RendererComponent; }; /** * Default renderer configuration mapping markdown elements to Svelte components. * Provides out-of-the-box rendering capabilities while allowing for customization. * * Implementation notes: * - All components are lazy-loaded for better performance * - Null values indicate optional renderers * - Components are type-checked against the Renderers interface * * @const {Renderers} */ export declare const defaultRenderers: Renderers; /** * Default configuration options for the markdown parser. * Provides sensible defaults while allowing for customization. * * Notable defaults: * - GitHub Flavored Markdown enabled * - Header IDs generated automatically * - No syntax highlighting by default * - HTML sanitization disabled * - Standard markdown parsing rules * * @const {SvelteMarkdownOptions} */ export declare const defaultOptions: SvelteMarkdownOptions;