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

@jbrowse/bandage-core

v8.0.1

Published

Pangenome graph layout and drawing with no host: GFA in, the Bandage force-directed engine and reference-anchored layouts, a Canvas2D renderer, hit testing and labels out

Readme

@jbrowse/bandage-core

Pangenome graph layout and drawing with no host, the engine behind jbrowse-plugin-graphgenomeviewer and BandageJS.

npm install @jbrowse/bandage-core
  • GFA and rGFA text in (loadGraph)

  • Layouts: Bandage's FMMM engine as WASM (loadBandage, forceLayout), ordered, anchored, sample rows, walk rows, tube map

  • A Canvas2D renderer (buildGeometry, Canvas2DRenderer), hit testing and label placement

  • Bubbles, deletion edges, path colors, gbz-base windows cut to GFA

  • Walks lifted out of the drawing (walkLift), one facet panel per walk (facetLifts, facetGrid) and each walk's key in words (walkKey)

  • Which assembly a backbone lies on (graphBackbone, backboneAssembly, assemblyWalk), and the genes on it: featuresOnBackbone renames an assembly's genes onto the backbone's refNames, and genePins pins only those

  • Figures: figureSvg draws a graph and its lifted walks to a standalone SVG, and the bandage-figure CLI makes one from a JSON spec with no browser: npx -p @jbrowse/bandage-core bandage-figure spec.json -o figure.svg. See docs/figures.md

Nothing here imports React, MobX or a JBrowse host. BandageJS's src/main.ts is the worked example.

Developing

pnpm install
pnpm test          # unit tests
pnpm build         # dist/ with declarations
pnpm test:wasm     # the committed layout engine still loads

The Bandage layout engine is OGDF's FMMM compiled to WASM and committed at src/bandage/bandage-layout.js; src/bandage/README.md says how to rebuild it from src/bandage/native and the vendored vendor/ogdf. A weekly workflow proves the committed artifact still reproduces.

CI also packs the core and runs BandageJS and jbrowse-plugin-graphgenomeviewer against it. An API change lands with the consumer's side on a core-next branch in that repo, which CI tests in place of main until the release.

Release with pnpm version patch: it lints, tests, stamps src/version.ts, writes the changelog with git-cliff and pushes the v* tag, and publish.yml publishes to npm with trusted publishing.

License

Both Bandage and OGDF are GPL, which is why this package is GPL-3.0-or-later.