Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@mdream/js

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mdream/js

JavaScript HTML-to-Markdown engine for mdream. Escape hatch for hooks and edge runtimes.

Source
npmnpm
Version
0.17.0
Version published
Weekly downloads
3.2K
-25.5%
Maintainers
1
Weekly downloads
 
Created
Source

@mdream/js

npm version npm downloads License

JavaScript HTML-to-Markdown engine for mdream. Use this package when you need plugin hooks, custom transform plugins, or are targeting edge runtimes where the native Rust engine cannot run.

This package consolidates functionality previously split across @mdream/core, @mdream/shared, and @mdream/llms-txt.

For most use cases, prefer the main mdream package which uses the Rust engine for significantly better performance. Reach for @mdream/js when you need hooks, custom plugins, or edge runtime compatibility.

Installation

pnpm add @mdream/js

Entry Points

ImportDescription
@mdream/jsCore htmlToMarkdown and streamHtmlToMarkdown APIs
@mdream/js/pluginsPlugin utilities: createPlugin, extractionPlugin, filterPlugin, frontmatterPlugin, isolateMainPlugin, tailwindPlugin
@mdream/js/preset/minimalwithMinimalPreset -- declarative config for frontmatter, isolateMain, tailwind, and filter plugins
@mdream/js/negotiateHTTP content negotiation: shouldServeMarkdown, parseAcceptHeader
@mdream/js/parseLow-level HTML parser: parseHtml, parseHtmlStream
@mdream/js/splitterSingle-pass markdown splitter: htmlToMarkdownSplitChunks, htmlToMarkdownSplitChunksStream
@mdream/js/llms-txtllms.txt artifact generation: generateLlmsTxtArtifacts, createLlmsTxtStream

Usage

Basic Conversion

import { htmlToMarkdown } from '@mdream/js'

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

Streaming

import { streamHtmlToMarkdown } from '@mdream/js'

const stream = streamHtmlToMarkdown(response.body, {
  origin: 'https://example.com',
})

for await (const chunk of stream) {
  process.stdout.write(chunk)
}

With Plugins

import { htmlToMarkdown } from '@mdream/js'
import { createPlugin } from '@mdream/js/plugins'

const md = htmlToMarkdown(html, {
  hooks: [
    createPlugin({
      onNodeEnter(element) {
        if (element.name === 'aside')
          return '' // skip asides
      },
    }),
  ],
})

Minimal Preset

import { htmlToMarkdown } from '@mdream/js'
import { withMinimalPreset } from '@mdream/js/preset/minimal'

const md = htmlToMarkdown(html, withMinimalPreset({
  origin: 'https://example.com',
}))

Content Negotiation

import { shouldServeMarkdown } from '@mdream/js/negotiate'

// Returns true when Accept header prefers text/markdown over text/html
if (shouldServeMarkdown(request.headers.accept, request.headers['sec-fetch-dest'])) {
  return new Response(markdown, { headers: { 'content-type': 'text/markdown' } })
}

llms.txt Generation

import { generateLlmsTxtArtifacts } from '@mdream/js/llms-txt'

const result = await generateLlmsTxtArtifacts({
  files: processedPages,
  siteName: 'My Site',
  origin: 'https://example.com',
  generateFull: true,
})

// result.llmsTxt -- index file with links
// result.llmsFullTxt -- single file with all page content

Markdown Splitter

import { htmlToMarkdownSplitChunks } from '@mdream/js/splitter'

const chunks = htmlToMarkdownSplitChunks(html, {
  chunkSize: 1000,
  origin: 'https://example.com',
})

License

MIT License

FAQs

Package last updated on 17 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts