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

@chartdown/measure

v0.6.0

Published

Derive Chartdown feature declarations from georeferenced imagery — size=, reach=, taper= and via measured rather than remembered. Zero runtime dependencies.

Readme

@chartdown/measure

Turn georeferenced imagery into Chartdown declarations — so a traced coastline is data a story can attach to, not a wall of coordinates.

GEO="--origin 48.65,-123.75 \
     --georef 1146,2052=47.2690,-122.5517 \
     --georef 1046,478=48.4061,-122.6433 \
     --georef 202,838=48.1490,-123.5670"

npx @chartdown/measure inspect sea.png --invert $GEO
npx @chartdown/measure feature sea.png --invert --mouth 1255,1361 --into 1094,1646 --word cove --id sinclair $GEO
npx @chartdown/measure coast   sea.png --invert --from "68,0mi" --to "0,32.1mi" --id shore $GEO
npx @chartdown/measure island  sea.png --invert --inside 793,2126 --id squaxin $GEO

Each verb prints a declaration you can paste into a document, with its assumptions above it as ; comments.

The verbs

  • inspect — what the tool sees before it measures anything: the classification it chose, how much of the frame is water, and the georeference it fitted, including the transform itself and how far each landmark missed. Run it first; a bad georeference is invisible afterwards.
  • feature — one inlet, from a mouth and a point inside it. Emits size=, taper=, and a via centerline carrying the channel's width at each control.
  • coast — a coastline with the inlets you intend to declare removed, so the shore and the features on it are not drawn twice.
  • island — one island's outline from a point inside it, framed as offsets from its anchor.

What it promises

A measurement emits a line that draws. The output is checked the way the renderer will check it — splined with the renderer's own implementation, not a second copy — because two implementations is how a measurement comes to certify a line the renderer then refuses (ADR 0032).

It says what it consumed, not only what it produced. A verb that removes water says how much; a mouth says what share of the sea it enclosed. A control count looks equally reasonable for a good spine and for a deleted one (ADR 0036).

It refuses rather than guesses. A point in water, a point on the mainland, an image too coarse to resolve the island — each is reported with the number you need to fix it in one edit, not measured around.

PNG only, and zero runtime dependencies (ADR 0029).

More

The specification is the source of truth; ADR 0028 explains why measurement is an optional package rather than part of the language. Try Chartdown itself in the playground.

MIT.