Here the page is set, the loose locked fast, the words marked down.
High-performance Markdown and MDX processing. Parses and compiles in Rust, runs your plugins in JavaScript.
Check out the documentation for installation instructions, the API reference, and usage examples, try it online on the playground, or join us on Discord!
Sätteri is a Rust + TypeScript monorepo containing the following Rust crates:
| Name | Description | Registry | README |
|---|---|---|---|
satteri |
High-level Rust API for the pipeline: parse, convert, compile | README | |
satteri-arena |
Arena allocator and binary buffer primitives | README | |
satteri-ast |
MDAST and HAST node types, codecs, tree operations, and conversion | README | |
satteri-plugin-api |
Rust Plugin trait for Rust plugins, typed visitors, and runner |
README | |
satteri-napi-binding |
NAPI bindings exposing the Rust pipeline to JavaScript | — | README |
satteri-mdxjs-rs |
MDX-to-JavaScript compiler, fork of mdxjs-rs adapted for OXC | README | |
satteri-pulldown-cmark |
CommonMark parser with MDX extension support, fork of pulldown-cmark | README |
And the following npm packages:
| Name | Description | Registry | README |
|---|---|---|---|
satteri |
TypeScript layer: plugin API and top-level functions | README | |
satteri-expressive-code |
HAST plugin: render code blocks with Expressive Code | README | |
vite-plugin-satteri |
Vite plugin: import .md and .mdx files |
README |
Sätteri builds on the work and knowledge of several open-source projects:
- unifiedjs -- the ecosystem of tools for processing content with syntax trees, including remark and rehype
- pulldown-cmark -- CommonMark pull parser
- mdxjs-rs -- MDX compiler by Titus Wormer, forked to use pulldown-cmark and OXC
Special thanks to the following projects for paving the way for high-performance Rust <-> JavaScript interop:
- oxc -- Rust JavaScript parser and compiler by the OXC team, used for MDX compilation
- Lightning CSS -- Rust CSS parser with a optimized JavaScript Visitor API
Sätteri is an open-source project born from Bruits, a Rust-focused collective 💛