satteri

High-performance Markdown and MDX processing

  • Types
  • ESM
License
MIT
Install Size
287.2 kB(3.3 MB)
Vulns
0
Published

Get started

$npm install satteri
$pnpm add satteri
$yarn add satteri
$bun add satteri
$deno add npm:satteri
$vlt install satteri
$vp add satteri
$nub add satteri

License changed since previous version.

The license of this package changed from "UNKNOWN" to "MIT".

Readme

satteri

Native-enhanced Markdown parsing and processing for JavaScript. Parse and compile in Rust, create flexible 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!

Install

npm install satteri
yarn add satteri
pnpm add satteri

Usage

Markdown to HTML
import { markdownToHtml } from "satteri";

const { html } = markdownToHtml("# Hello\n\nWorld");
// <h1>Hello</h1>\n<p>World</p>
MDX to JS
import { mdxToJs } from "satteri";

const { code } = mdxToJs("# Hello\n\n<MyComponent />");
With plugins

Both functions accept mdastPlugins (operate on the Markdown AST) and hastPlugins (operate on the HTML AST). A plugin is an object with a name and a visitor per node type; defineMdastPlugin / defineHastPlugin add type inference.

import { markdownToHtml, defineMdastPlugin } from "satteri";

const stripInlineCode = defineMdastPlugin({
  name: "strip-inline-code",
  inlineCode(node, ctx) {
    ctx.replaceNode(node, { type: "text", value: node.value });
  },
});

const { html } = markdownToHtml("Use `let` instead of `var`.", {
  mdastPlugins: [stripInlineCode],
});
// <p>Use let instead of var.</p>

If you're familiar with the unified ecosystem, mdast and hast plugins are similar to remark and rehype plugins, respectively, reusing the same AST shapes.

Development

Refer to CONTRIBUTING.md for development setup and workflow details.