import type { Plugin } from 'unified'; export type MarkdownRemarkPlugin = Plugin | [Plugin, ...unknown[]]; export type MarkdownToHtmlOptions = MarkdownRemarkPlugin[]; /** * Markdown 转 HTML 的配置选项 */ export interface MarkdownToHtmlConfig { /** 是否在新标签页打开链接 */ openLinksInNewTab?: boolean; /** 自定义段落标签,默认为 'p' */ paragraphTag?: string; /** 用户自定义的 unified 插件配置 */ markedConfig?: MarkdownRemarkPlugin[]; } /** * HTML 转义函数 * @param html - 要转义的 HTML 字符串 * @param encode - 是否编码所有特殊字符(包括 &) * @returns 转义后的字符串 */ export declare function escapeHtml(html: string, encode?: boolean): string; export declare const DEFAULT_MARKDOWN_REMARK_PLUGINS: readonly MarkdownRemarkPlugin[]; /** * 将 Markdown 内容转换为 HTML(异步版本) * * 使用 unified 处理器链来处理 Markdown 到 HTML 的转换,支持: * - GitHub 风味 Markdown (GFM) * - 数学公式 (KaTeX) * - 前置元数据 (Frontmatter) * - 特殊字符修复 * - 原始 HTML 标签 * - 链接在新标签页打开(可选) * - 自定义段落标签(可选) * - 代码块流式状态支持 * * @param markdown - 要转换的 Markdown 字符串 * @param plugins - 可选的 unified 插件配置 * @param config - 可选的渲染配置选项 * @returns Promise - 从 Markdown 生成的 HTML 字符串 * * @example * ```typescript * const html = await markdownToHtml('# 标题\n\n这是**粗体**文本'); * console.log(html); // '

标题

这是粗体文本

' * * // 使用配置选项 * const htmlWithConfig = await markdownToHtml( * '[链接](https://example.com)', * undefined, * { openLinksInNewTab: true, paragraphTag: 'div' } * ); * ``` * * @throws {Error} 当转换过程中发生错误时返回空字符串 */ export declare const markdownToHtml: (markdown: string, plugins?: MarkdownToHtmlOptions, config?: MarkdownToHtmlConfig) => Promise; /** * 将 Markdown 内容转换为 HTML(同步版本) * * 同步版本的 markdownToHtml,使用相同的处理器链但以同步方式执行。 * 适用于不需要异步处理的场景,但可能会阻塞主线程。 * * @param markdown - 要转换的 Markdown 字符串 * @param plugins - 可选的 unified 插件配置 * @param config - 可选的渲染配置选项 * @returns string - 从 Markdown 生成的 HTML 字符串 * * @example * ```typescript * const html = markdownToHtmlSync('## 副标题\n\n- 列表项1\n- 列表项2'); * console.log(html); // '

副标题

' * * // 使用配置选项 * const htmlWithConfig = markdownToHtmlSync( * '[链接](https://example.com)', * undefined, * { openLinksInNewTab: true } * ); * ``` * * @throws {Error} 当转换过程中发生错误时返回空字符串 * * @remarks * - 建议在可能的情况下使用异步版本 `markdownToHtml` * - 同步版本可能影响用户界面响应性 */ export declare const markdownToHtmlSync: (markdown: string, plugins?: MarkdownToHtmlOptions, config?: MarkdownToHtmlConfig) => string;