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

abstract-flow

v0.3.0

Published

Deterministic local TypeScript control-flow visualization

Readme

Abstract Flow

Deterministic code flow visualization — navigable, branch-level control flow graphs derived from the TypeScript AST. No LLM anywhere in the pipeline: if the tool shows an edge, that edge exists in the source. See docs/prd.

Run it

Abstract Flow is one Bun package with two entry points: a CLI that runs the local UI and API together, and a server export for embedding in another Bun service.

bunx abstract-flow
# UI: http://localhost:41730
# API: http://localhost:41731
# Uses the bundled production Next.js build

To install it as a project dependency instead:

bun add --dev abstract-flow
bunx abstract-flow

Remove a project-local installation with:

bun remove abstract-flow

If you only used bunx, there is no project dependency to remove.

Agent CLI

Analysis commands stay in the terminal and do not start the web server:

bunx abstract-flow entrypoints --repo .
bunx abstract-flow flow 'src/routes.ts#list:12' --repo . --depth 0
bunx abstract-flow refs 'src/routes.ts#list:12' --direction callers --repo .
bunx abstract-flow search --kind exit --outcome throw --repo . --limit 20

Use --json for machine-readable output. Generate a standalone SVG that can be committed to documentation or attached to a pull request:

bunx abstract-flow svg 'src/routes.ts#list:12' --repo . --depth 1 \
  -o docs/flows/list.svg

The SVG renderer is deterministic and has no Graphviz or browser dependency.

Agent skill

Copy skills/abstract-flow/ into the skill directory your coding agent scans.

git clone --depth 1 --branch beta https://github.com/code-salad/abstract-flow.git /tmp/abstract-flow
cp -R /tmp/abstract-flow/skills/abstract-flow <agent-skill-root>/abstract-flow
rm -rf /tmp/abstract-flow

To uninstall the skill, remove only that installed directory:

rm -rf <agent-skill-root>/abstract-flow

Leave project code and generated flow diagrams untouched.

To embed only the server:

import { app } from "abstract-flow";

app.listen(3000);

The package requires Bun and is published as abstract-flow on npm.

Website: code-salad.github.io/abstract-flow

| Path | What | |---|---| | server/ | Bun + Elysia API — the analysis engine (FCIS: pure core/, I/O in shell/) | | web/ | Next.js 16 + React 19 — the flow canvas | | site/ | Static Next.js public site, exported for GitHub Pages | | bin/ | Thin CLI launcher for the local API and UI | | examples/express-demo/ | Small fixture repo to index |

Develop locally

Prerequisites: Bun, just.

just setup
just dev-server   # API on :3000
just dev-web      # UI on :3002 — automatically indexes this repo
just dev-site     # public static site on :3003

Release and deployment

  • alpha is the default integration branch. Open feature pull requests against it.
  • beta is the release branch. Promote alpha to beta when preparing a release.
  • Release Please opens the version/changelog pull request on beta; after the npm trusted-publishing bootstrap, merging it publishes abstract-flow.
  • The Pages workflow builds site/ from beta and deploys to code-salad.github.io/abstract-flow.

For the first 0.1.0 publish, merge Release Please's initial release pull request so it creates the v0.1.0 tag, then sign in locally with the vikyw npm account and run npm publish --access public from that tag. Configure npm trusted publishing for GitHub owner code-salad, repository abstract-flow, and workflow file release-please.yml; later releases require no npm token in this repository.