Markdown-it-enhancer - modern pluggable markdown parser.
npm install @markdown-it-enhancer/core

This is a fork from markdown-it, there are some changes in this fork:
- ESM only.
- Source code migrate to TypeScript, now you don't need to install @types/markdown-it.
- Async support. include parser rule, render rule, plugins, highlight function.
``bash`
npm install markdown-it-enchaceryarn add markdown-it-enchacer
pnpm add markdown-it-enchacer
`javascript
import { MarkdownIt } from "markdown-it-enchancer";
// delay s seconds.
const delay = (s) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, s * 1000);
});
};
const md = new MarkdownIt();
// push a async ruler
md.block.ruler.push(
"async_rule",
async (_state, _startLine, _endLine, _slient) => {
// async operation
await delay(3);
},
);
`
`javascript
import { MarkdownIt } from "markdown-it-enchancer";
// delay s seconds.
const delay = (s) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, s * 1000);
});
};
const md = new MarkdownIt();
// set a async render rule.
md.renderer.rules.test = async (tokens, idx, options, env, renderer) => {
// some async operation
await delay(3);
return "test";
};
`
`javascript
import { MarkdownIt } from "markdown-it-enchancer";
// delay s seconds.
const delay = (s) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, s * 1000);
});
};
const md = new MarkdownIt();
md
.use(async (md, arg1, arg2) => {
// some async operation
await delay(3);
}, 'arg1', 'arg2')
.use(async (md, arg1, arg2) => {
// some async operation
await delay(3);
}, 'arg1', 'arg2')
.use(async (md, arg1, arg2) => {
// some async operation
await delay(3);
}, 'arg1', 'arg2');
// you must exec await md.isReady() to ensure the initializations of all plugins are success.`
await md.isReady();
function`javascript
import { MarkdownIt } from "markdown-it-enchancer";
// delay s seconds.
const delay = (s) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, s * 1000);
});
};
const md = new MarkdownIt({
async highlight() {
// async operation
await delay(3);
return "highlight function";
}
});
`
Env support maxAutoCompletedCells property. See #1000
`javascript
import { MarkdownIt } from "markdown-it-enchancer";
const md = new MarkdownIt();
md.render('md content', {
maxAutoCompletedCells: 100
});
``
There are some plugins that migrate to markdown-it-enhancer.
- markdown-it-katex -> markdown-it-katex-for-enhancer
- markdown-it-attrs -> markdown-it-attrs-for-enhancer
- markdown-it-anchor -> markdown-it-anchor-for-enhancer
- markdown-it-implicit-figures -> markdown-it-implicit-figures-for-enhancer
- markdown-it-sup -> markdown-it-sup-for-enhancer
- markdown-it-emoji -> markdown-it-emoji-for-enhancer
- markdown-it-task-lists -> markdown-it-task-lists-for-enhancer
- markdown-it-container -> markdown-it-container-for-enhancer
- markdown-it-sub -> markdown-it-sub-for-enhancer
- markdown-it-abbr -> markdown-it-abbr-for-enhancer
- markdown-it-for-inline -> markdown-it-for-inline-for-enhancer
- markdown-it-deflist -> markdown-it-deflist-for-enhancer
- markdown-it-footnote -> markdown-it-footnote-for-enhancer
- markdown-it-ins -> markdown-it-ins-for-enhancer
- markdown-it-mark -> markdown-it-mark-for-enhancer
- markdown-it-link-attributes -> markdown-it-link-attributes-for-enhancer
- markdown-it-magic-link -> markdown-it-magic-link-for-enhancer
- markdown-it-table-of-contents -> markdown-it-table-of-contents-for-enhancer