@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.
77 lines (76 loc) • 5.17 kB
TypeScript
/**
* Public API for `@humanspeak/svelte-markdown`.
*
* This module re-exports every symbol that consumers of the package can
* import. Exports are organized into the following groups:
*
* - **Default export** — the main `SvelteMarkdown` component
* - **Component helpers** — `Html`, `Unsupported`, and `UnsupportedHTML`
* - **Filter utilities** — allow/deny helpers for HTML tags and renderers
* - **Constants** — `defaultRenderers`, `rendererKeys`, `htmlRendererKeys`
* - **Cache utilities** — `MemoryCache`, `TokenCache`, `tokenCache`
* - **Types** — `HtmlRenderers`, `Renderers`, `RendererComponent`,
* `SvelteMarkdownProps`, `SvelteMarkdownOptions`, `Token`, `TokensList`
*
* @see {@link https://markdown.svelte.page} — documentation site
* @module @humanspeak/svelte-markdown
*/
import { type HtmlRenderers } from './renderers/html/index.js';
import SvelteMarkdown from './SvelteMarkdown.svelte';
import type { BlockquoteSnippetProps, BrSnippetProps, CodeSnippetProps, CodespanSnippetProps, DelSnippetProps, EmSnippetProps, EscapeSnippetProps, HeadingSnippetProps, HrSnippetProps, HtmlSnippetOverrides, HtmlSnippetProps, ImageSnippetProps, LinkSnippetProps, ListItemSnippetProps, ListSnippetProps, ParagraphSnippetProps, RawTextSnippetProps, SnippetOverrides, StreamingChunk, StreamingOffsetChunk, StrongSnippetProps, SvelteMarkdownOptions, SvelteMarkdownProps, TableBodySnippetProps, TableCellSnippetProps, TableHeadSnippetProps, TableRowSnippetProps, TableSnippetProps, TextSnippetProps } from './types.js';
import { defaultRenderers, type RendererComponent, type Renderers, type Token, type TokensList } from './utils/markdown-parser.js';
import type { SanitizeAttributesFn, SanitizeContext, SanitizeUrlFn } from './utils/sanitize.js';
/** The primary markdown rendering component. */
export default SvelteMarkdown;
/** Default HTML tag-to-component map and the unsupported-tag placeholder. */
export { default as Html, UnsupportedHTML } from './renderers/html/index.js';
/** Placeholder component rendered for blocked markdown token types. */
export { Unsupported } from './renderers/index.js';
/**
* Filter utilities for restricting which HTML tags are rendered.
*
* - `allowHtmlOnly` — allow *only* the listed tags
* - `excludeHtmlOnly` — block specific tags, allow the rest
* - `buildUnsupportedHTML` — block every HTML tag
*/
export { allowHtmlOnly, buildUnsupportedHTML, excludeHtmlOnly } from './utils/unsupportedHtmlRenderers.js';
/**
* Filter utilities for restricting which markdown renderers are active.
*
* - `allowRenderersOnly` — allow *only* the listed renderers
* - `excludeRenderersOnly` — block specific renderers, allow the rest
* - `buildUnsupportedRenderers` — block every markdown renderer
*/
export { allowRenderersOnly, buildUnsupportedRenderers, excludeRenderersOnly } from './utils/unsupportedRenderers.js';
/** Built-in renderer map used when no custom `renderers` prop is provided. */
export { defaultRenderers };
/**
* Canonical key lists enumerating every valid renderer/HTML tag name.
*
* - `rendererKeys` — markdown renderer keys (excludes `html`)
* - `htmlRendererKeys` — supported HTML tag names
*/
export { htmlRendererKeysInternal as htmlRendererKeys, rendererKeysInternal as rendererKeys } from './utils/rendererKeys.js';
/**
* Cache utilities for parsed markdown tokens.
*
* - `MemoryCache` — generic LRU cache
* - `TokenCache` — LRU cache specialized for parsed token arrays
* - `tokenCache` — shared singleton `TokenCache` instance
*/
export { MemoryCache } from './utils/cache.js';
export { IncrementalParser, type IncrementalUpdateResult } from './utils/incremental-parser.js';
/**
* URL sanitization utilities for XSS prevention.
*
* - `defaultSanitizeUrl` — protocol allowlist (http, https, mailto, tel, relative)
* - `defaultSanitizeAttributes` — strips event handlers and sanitizes URL attributes
* - `unsanitizedUrl` — passthrough (allows all URLs)
* - `unsanitizedAttributes` — passthrough (allows all attributes)
*/
export { defaultSanitizeAttributes, defaultSanitizeUrl, unsanitizedAttributes, unsanitizedUrl } from './utils/sanitize.js';
export { TokenCache, tokenCache } from './utils/token-cache.js';
/** Re-exported `MarkedExtension` type for the `extensions` prop. */
export type { MarkedExtension } from 'marked';
/** Re-exported types for consumer convenience. */
export type { BlockquoteSnippetProps, BrSnippetProps, CodeSnippetProps, CodespanSnippetProps, DelSnippetProps, EmSnippetProps, EscapeSnippetProps, HeadingSnippetProps, HrSnippetProps, HtmlRenderers, HtmlSnippetOverrides, HtmlSnippetProps, ImageSnippetProps, LinkSnippetProps, ListItemSnippetProps, ListSnippetProps, ParagraphSnippetProps, RawTextSnippetProps, RendererComponent, Renderers, SanitizeAttributesFn, SanitizeContext, SanitizeUrlFn, SnippetOverrides, StreamingChunk, StreamingOffsetChunk, StrongSnippetProps, SvelteMarkdownOptions, SvelteMarkdownProps, TableBodySnippetProps, TableCellSnippetProps, TableHeadSnippetProps, TableRowSnippetProps, TableSnippetProps, TextSnippetProps, Token, TokensList };