@sullux/markdown-compiler
A lightweight, zero-dependency, purely functional Markdown abstract syntax tree (AST) parser, stringifier, and construction DSL for JavaScript and Node.js.
📖 Official Documentation: https://sullux.com/projects/markdown/markdown-compiler/
Overview
Designed around strict local-first, low-overhead principles, @sullux/markdown-compiler provides a standard, timeless intermediate document representation between rich sender formats (such as HTML or platform-specific messaging APIs) and consumer presentation surfaces (such as web dashboards, static documentation sites, or terminal interfaces).
It features symmetric round-trip conversion between Markdown text and a clean, two-level AST, a declarative Node.* builder DSL for programmatic document construction, and comprehensive support for GitHub Flavored Markdown (GFM) tables, task lists, callout boxes, YAML frontmatter, code block metadata, and multi-syntax image dimensions.
Quick Start
Installation
yarn add @sullux/markdown-compiler
Usage
const { parse, stringify, Node } = require('@sullux/markdown-compiler')
// Parse raw Markdown into a structured AST
const ast = parse('# Hello World\n\nWelcome to **sullux**.')
// Construct or manipulate AST nodes programmatically
const doc = {
frontmatter: { title: 'Specification' },
blocks: [
Node.header(1, [Node.text('Specification')]),
Node.paragraph([Node.text('Auditable, zero-dependency Markdown compiler.')]),
],
}
// Compile AST back to clean Markdown
const markdown = stringify(doc)
console.log(markdown)
For complete guides, interactive examples, and full API specifications, see the official documentation.
Standards & Specification
@sullux/markdown-compiler conforms to the CommonMark Specification (v0.31.2) for block structure and container hierarchy, while supporting popular production extensions:
- GFM Extensions: Pipe tables, task list items (
- [ ],- [x]), and strikethrough (~~). - Document Metadata: YAML frontmatter parsed into a top-level
frontmatterobject. - Mathematical Notation: Inline
$formula$and block$$display$$math elements. - Multi-Syntax Image Dimensions: Obsidian (
|WxH), Pandoc ({:width=}), GitHub, and VS Code dimensions. - Callout Banners: GitHub alerts (
> [!NOTE]) and GitBook hint blocks ({% hint %}). - Wikilinks: Internal Obsidian-style page links (
[[Target|Title]]).
Contributing & License
Please see the Monorepo README for contribution guidelines, testing instructions, and license details.