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

@plantuml/core

v1.2026.9

Published

PlantUML diagram rendering engine compiled to JavaScript with TeaVM. Renders UML and many other diagrams entirely in the browser, with no server and no Java.

Readme

@plantuml/core

The PlantUML diagram engine, compiled to JavaScript with TeaVM. It renders UML and many other diagrams entirely in the browser -- no server, no Java, no Graphviz binary required.

This package is generated from the official PlantUML build (issue #2715).

Install

npm install @plantuml/core

Or import straight from a CDN:

<script src="https://unpkg.com/@plantuml/[email protected]/viz-global.js"></script>
<script type="module">
  import { render } from "https://unpkg.com/@plantuml/[email protected]/plantuml.js";
  render("@startuml\nAlice -> Bob : Hello\n@enduml".split("\n"), "out");
</script>
<div id="out"></div>

API

The public surface is two functions exported from the plantuml.js ES2015 module. viz-global.js (the Graphviz layout engine) must be loaded as a classic script beforehand.

If you bundle your host into a single file, viz-global.js (a UMD) attaches Viz to your bundle's exports instead of globalThis, and the engine does not see it. Hand it over yourself, before the first render: globalThis.PLANTUML_VIZ = Viz; (where Viz is however you obtained it, for example @viz-js/viz). It takes precedence over a global Viz.

  • render(lines, targetId) -- render into the DOM element with that id. lines is an Array<string>.
  • render(lines, targetId, { dark: true }) -- same, in dark mode.
  • renderToString(lines, onSuccess, onError) -- deliver the SVG as a string to onSuccess(svg); errors go to onError(message). Calls may overlap: each is queued, and exactly one of its callbacks is called, once, in the order of the calls. (render() keeps only the latest waiting call.)
  • renderToString(lines, onSuccess, onError, options) -- same, with the optional options object that render() also accepts as its last argument: dark (boolean, default false) for a dark-mode SVG, and maxSvgSize (pixels, default 8192) above which a diagram fails with an error instead of producing a huge SVG; 0 disables the check.

Rendering is asynchronous: render() returns immediately and writes the SVG into the target element later. See GITHUB_INTEGRATION.md for details and a full GitHub-style integration example.

What's included

  • plantuml.js -- the engine
  • viz-global.js -- Graphviz / Viz.js layout engine (required)
  • themes.js -- the bundled !theme definitions, fetched on demand from the same directory as the page; serve it next to the engine, or register globalThis.PLANTUML_THEMES yourself, e.g. inside a Web Worker. Without it, !theme renders the diagram unthemed and warns on the console; an unknown theme name in a loaded themes.js still reports "Cannot load theme"
  • demo pages: index.html (playground, with its main.js, plantuml-codec.js, zoom.js and vendor/fflate), index-basic.html, index-basic-dark.html, index-collection.html, and two GitHub integration proofs of concept

Heavy optional sprite libraries (IBM, tupadr3, material, AWS...) are not bundled here to keep the package small. To use them (and the rest of the standard library: !include <C4/C4_Context>, azure, kubernetes, ...), point the engine at wherever the bundles are hosted before rendering; they are fetched lazily, one bundle per library, only when a diagram includes it:

<script>
  window.PLANTUML_STDLIB_BASE = "https://plantuml.github.io/plantuml/js-plantuml/";
</script>

(Note the trailing slash: the value is a plain URL prefix.) For production, self-host the bundles your diagrams use and point the base at your own assets. Hosts that cannot load scripts at all (Web Workers, browser extensions) set a PLANTUML_STDLIB_LOADER callback instead -- see GITHUB_INTEGRATION.md.

The engine has no file system, so a local !include styles/common.puml fails unless the host delivers the file: set a PLANTUML_FILE_LOADER callback, which also decides which files may be read -- see GITHUB_INTEGRATION.md.

License

MIT.

Versions ≥ 1.2026.6 are MIT-licensed; earlier versions are GPL-3.0-or-later. npm only displays the license of the latest version, so if you are pinned to an older release, check the license of that specific version.