npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@plurnk/plurnk-mimetypes-text-html

v1.0.9

Published

text/html and application/xhtml+xml mimetype handler for plurnk-service. Structural extraction via parse5; readable markdown (content channel) via Readability + turndown.

Readme

@plurnk/plurnk-mimetypes-text-html

text/html AND application/xhtml+xml mimetype handler for the plurnk ecosystem. Two faces: structural extraction via parse5 (symbols, deep-json/deep-xml, real-DOM xpath via @xmldom/xmldom + xpath) and readable projection — the page's main content as clean reading markdown via @mozilla/readability + turndown over a linkedom DOM.

install

npm i @plurnk/plurnk-mimetypes-text-html

what it does

  • content(content) — the content channel (SPEC §18): the page's markup-free reading markdown. Main-content extraction via Readability strips nav, ads, and chrome; turndown renders the article body as markdown. Non-article pages (apps, forms, fragments, very short HTML) degrade to best-effort markdown of the <body> — never raw HTML, never a throw. Empty/whitespace input → absent. This is also the embed-source: an HTML entry's embedding reflects the article, not <div class> noise. HTML is the only mimetype that populates this channel.
  • extractRaw(content) — h1–h6 headings as heading symbols (with level), <title> as an h1 fallback when no headings exist, and code blocks as module symbols. Source line numbers come from parse5's location info.
  • deepJson(content) — the parse5 DOM as a nested node tree, with source-algebra attributes under the attrs convention (framework projects this to the deep-xml channel).
  • query(content, dialect, pattern) — overrides xpath to dispatch against the real parsed DOM (XPath 1.0) instead of the projected deep-xml. regex/glob run against the same readable markdown the content channel produces (one projection, shared by toText).
  • validate(content) — no-op (HTML is forgiving).

two faces, one handler

The structural channels (extractRaw/deepJson/query xpath) stay parse5-based with source positions — they answer "where is this tag, on what line." The content channel answers a different question — "what does this page say" — and for that the raw markup is noise. Readability + turndown denoise it into reading markdown. Web-page denoising used to be deferred to the fetcher layer; SPEC §18 moved it here, because the readable projection is a pure function of the HTML bytes (whatever a browser scheme rendered and serialized, or a file on disk) and belongs with the mimetype that owns HTML.

license

MIT.