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

pelers

v1.0.0-alpha1

Published

A fast, lightweight Mermaid renderer that outputs themeable SVG (derived from Pele; Rust port in progress).

Readme

pelers

A fast, lightweight Mermaid renderer that outputs themeable SVG. pelers is derived from Pele by kepano: the npm package is the TypeScript renderer, and the Rust crate is a port that is being built up one diagram type at a time.

Status

Alpha (v1.0.0-alpha1).

| Registry | Name | State | | --------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | npm | pelers | The TypeScript renderer: Mermaid 12.1.0 syntax, themeable SVG, browser mounting, lazy loading and per-diagram registration. | | crates.io | pelers | The Rust port: diagram type detection, preprocessing, flowchart parsing and a basic SVG renderer. Other diagram types and the full CLI are not ported yet. |

Install

bun add pelers          # TypeScript / JavaScript (or: npm install pelers)
cargo add pelers        # Rust

Usage

TypeScript / JavaScript:

import { render } from 'pelers';

const { svg, width, height } = render('flowchart LR\n  A --> B');

Smaller bundles: pelers/core plus the diagram types you need (pelers/diagrams/<type>), or pelers/lazy to load a type the first time it is rendered. pelers/global is a browser build that exposes a global.

Rust:

use pelers::{detect_diagram, parse_flowchart, preprocess, render_flowchart};

let prepared = preprocess("flowchart LR\n  A --> B")?;
if detect_diagram(&prepared.text).is_some() {
    let model = parse_flowchart(&prepared.text)?;
    let svg = render_flowchart(&model).svg;
}

Command line (reads Mermaid source on standard input, prints the detected diagram and, for flowcharts, the SVG):

printf 'flowchart LR\n  A --> B\n' | cargo run

Repository layout

src/*.rs          the Rust crate: api, detect, preprocess, flowchart, render, errors
src/diagrams/     the TypeScript renderer, one directory per diagram type
src/entries/      generated per-diagram entry points
scripts/          build, benchmarks and generators (registry, metrics, unicode, specs)
tests/            vitest suites, compatibility specs and corpus

Development

Requirements: Rust (stable), Bun and Node.js 20 or newer.

bun install                # JS dependencies and git hooks
bun run build              # bundles dist/ with esbuild
bun run typecheck          # tsc --noEmit (TypeScript 7)
bun run lint               # eslint (typescript-eslint on the TypeScript 6 API)
bun run fmt:check          # prettier
bun run test               # vitest
cargo test --locked
cargo clippy --all-targets --all-features --locked -- -D warnings
cargo fmt --check
cargo deny check

TypeScript 7 does not ship a programmatic API yet, so the repository installs both compilers side by side: typescript is an alias for @typescript/typescript6 (used by typescript-eslint) and @typescript/native provides the tsc 7 binary. See the TypeScript 7.0 announcement.

Releases are cut with git-flow (git-flow release start/finish), tagged vX.Y.Z. The npm package is published with npm publish --tag alpha while the version is a prerelease, and the crate with cargo publish.

Upstream and attribution

Pele is © kepano and distributed under the MIT License. The TypeScript implementation and test corpus here carry over that work, together with material from Mermaid and Lucide. Their notices are reproduced in NOTICE and must stay with every copy of this code.

Contributing

This repository uses git-flow-next (classic preset): main is release-only, work happens on feature/* and bugfix/* branches off develop. Commits are signed off (git commit -s) and follow Conventional Commits, enforced by commitlint in a commit-msg hook and in CI. Install the hooks with bash .githooks/install.sh (bun install does it through the prepare script). CI runs on CircleCI: reuse lint, format and lint, tests, cargo deny, a TruffleHog secret scan and commitlint on every push. The branch rules are written out in CLAUDE.md.

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Copyright © 2026 Farhan Kurnia Pratama. Portions are derived from Pele (© kepano, MIT); see NOTICE.