Neo Zero

markdown

Pool

Modern, tree-shakeable markdown parser with TypeScript support

$ lpm install @lpm.dev/[email protected]

@lpm.dev/neo.markdown

Modern, tree-shakeable markdown parser. Zero dependencies, TypeScript-first, XSS-safe by default.

Install

lpm install @lpm.dev/neo.markdown

Quick Start

import { parse } from '@lpm.dev/neo.markdown'

const html = parse('# Hello\n\nWorld')
// '<h1>Hello</h1>\n<p>World</p>\n'

Features

  • CommonMark compliant parsing
  • GFM (GitHub Flavored Markdown) — tables, task lists, strikethrough
  • XSS protection — HTML escaped by default
  • Tree-shakeable — sub-path imports for each layer
  • Zero dependencies
  • TypeScript — full type declarations

API

parse(markdown, options?)

import { parse } from '@lpm.dev/neo.markdown'

// Basic
parse('# Hello')
// => '<h1>Hello</h1>\n'

// XSS-safe by default
parse('<script>alert("xss")</script>')
// => '<p>&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;</p>\n'

// Allow trusted HTML
parse('<div class="box">content</div>', { allowHtml: true })
// => '<div class="box">content</div>\n'

createParser(options?)

import { createParser } from '@lpm.dev/neo.markdown'

const parser = createParser({ allowHtml: false })

parser.parse('# Hello')
parser.parse('**bold** text')

Options

Option Type Default Description
allowHtml boolean false Allow raw HTML in output
preset `'commonmark' \ 'gfm'` 'gfm'
breaks boolean false Convert \n to <br>

Supported Syntax

Block elements

# Heading 1
## Heading 2

Paragraph text with **bold**, *italic*, and `code`.

> Blockquote

- Unordered list
- Item two

1. Ordered list
2. Item two

    Code block (indented)

code block (fenced)```


Table Header
Cell Cell
  • Task list item
  • Unchecked item ```

Inline elements

**bold** or __bold__
*italic* or _italic_
~~strikethrough~~
`inline code`
[link text](https://example.com)
![alt text](image.png)
<https://autolink.example.com>

Presets

// CommonMark preset (strict spec compliance)
import { createParser } from '@lpm.dev/neo.markdown/commonmark'

// GFM preset (GitHub Flavored Markdown — tables, task lists, strikethrough)
import { createParser } from '@lpm.dev/neo.markdown/gfm'

Sub-path Imports

// Core parser and renderer
import { createParser, HtmlRenderer } from '@lpm.dev/neo.markdown/core'

// Block parsers only
import { /* block parsers */ } from '@lpm.dev/neo.markdown/blocks'

// Inline parsers only
import { /* inline parsers */ } from '@lpm.dev/neo.markdown/inline'

Migration from marked

// Before (marked)
import { marked } from 'marked'
const html = marked('# Hello')

// After (neo.markdown)
import { parse } from '@lpm.dev/neo.markdown'
const html = parse('# Hello')

Migration from markdown-it

// Before (markdown-it)
import MarkdownIt from 'markdown-it'
const md = new MarkdownIt()
const html = md.render('# Hello')

// After (neo.markdown)
import { createParser } from '@lpm.dev/neo.markdown'
const parser = createParser()
const html = parser.parse('# Hello')

License

MIT

Unlimited AccessInstall as many Pool packages as you need.
Fund Real WorkEvery install you run sends revenue directly to the developer who built it.

Taxes calculated at checkout based on your location.

Weekly Installs
25
Version
1.0.0
Published
LicenseMIT
Size1.04 MB
Files50
Node version>= 18
TypeScriptYes