Markdown and search records from the authored source
remarkLLMs() and remarkStructure() of fumadocs-core slice their Markdown from the authored source like Sätteri, instead of stringifying the syntax tree. It is much faster, Markdown is no longer escaped or reformatted, and local images keep their addresses. Re-sync your search indexes to pick up the new records.
- Plugins record the Markdown of content they replace with
replaceSource()orembedSource()fromfumadocs-core/mdx-plugins/stringifier, in place ofdata._stringify, and add search records withdata.structuredData. Nodes they insert otherwise are left out. Anamespacelimits an edit to the stringifiers of that namespace, likesearchfor search records. - Search records are always Markdown, also in Sätteri.
filterElementreplacesstringify.filterElement, it chooses the JSX elements kept as HTML tags (File,TypeTable,CalloutandCardby default) that search dialogs render as components. Other elements and links are replaced by their content, images are removed, and an element on one line is recorded like a paragraph. - Removed
defaultStringifier()(usecreateStringifier()),StringifyOptions,allowedMdxAttributes,filterMdxAttributes,placeholder()(usemdxAsPlaceholder), and thestringifyandmdast-util-to-markdownoptions of both plugins. - Included content goes through the plugins like the document's own, Sätteri includes
.mdfiles as Markdown. <auto-files>shows its files in a code block,auto-type-tableits props in a Markdown table, created bytypeTableToMarkdown()fromfumadocs-typescript.remarkShow()andfileGenerator()offumadocs-docgenrecord their Markdown, generators receive thefileto do the same.- Records of
fumadocs-obsidianresolve wikilinks, and leave comments, block IDs, callout markers and embeds out. Comments are removed before parsing, so they no longer split a paragraph. - Pages of
fumadocs-pythoncompile from their MDX, so they have Markdown and search records. fumadocs-mdx,fumadocs-docgenandfumadocs-obsidianrequirefumadocs-core16.17.0.
Fix #3662