NOTE: Markdown streaming parser is still in development and not production ready. I am working on fixing some bugs for the next minor release.
A lightweight, memory-efficient streaming parser for Markdown content that supports real-time rendering.
- Stream-based processing for Markdown content
- Memory efficient for large documents
- Real-time rendering of content as it arrives
- Support for basic Markdown elements (headers, paragraphs, code blocks, emphasis)
- Customizable rendering options
npm install markdown-streaming-parserimport { MarkdownStreamingParser } from 'markdown-streaming-parser';
import { createReadStream } from 'fs';
// Create a streaming parser
const parser = new MarkdownStreamingParser();
// Set up data handling
parser.on('data', (html) => {
console.log('Rendered HTML:', html);
});
// Create a readable stream from a Markdown file
const markdownStream = createReadStream('document.md', 'utf-8');
// Pipe the Markdown content through the parser
markdownStream.pipe(parser);The main class that handles streaming of markdown content and transforms it into HTML.
import { MarkdownStreamingParser, MarkdownParserOptions } from 'markdown-streaming-parser';
// Create with default options
const parser = new MarkdownStreamingParser();
// Or with custom options
const parserWithOptions = new MarkdownStreamingParser({
parserOptions: {
// Custom parser options
}
});write(chunk: string | Buffer): Write a chunk of markdown content to the parserend(): Signal the end of the markdown contentreset(): Reset the parser state
You can use this parser with the Web Streams API for browser-based applications:
// Example with fetch and streams
async function fetchAndParseMarkdown(url) {
const response = await fetch(url);
const reader = response.body.getReader();
const parser = new MarkdownStreamingParser();
// Process the stream
while (true) {
const { done, value } = await reader.read();
if (done) break;
// Convert Uint8Array to string and feed to parser
const chunk = new TextDecoder().decode(value);
parser.write(chunk);
}
parser.end();
}See the example directory for a complete example of a server streaming markdown content to a browser client.
MIT
Author: Roshan Swain Email: [email protected] Github: https://github.com/swaingotnochill Twitter: https://twitter.com/@pucchkaa