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

@reponova/lang-plantuml

v0.4.1

Published

PlantUML diagram support for RepoNova

Readme

@reponova/lang-plantuml

PlantUML diagram support for RepoNova. Regex-based line-by-line parser — no tree-sitter grammar required.

Install

reponova lang add @reponova/lang-plantuml

What it extracts

  • Class diagrams: class, abstract class / abstract, interface, enum, plus relationship arrows (extends, association, aggregation, composition).
  • Sequence diagrams: actor, participant, boundary, control, entity, collections.
  • State diagrams: state X, state "Display" as Alias. The [*] pseudostate is intentionally not a symbol.
  • Implicit states: any bare identifier appearing as a transition endpoint without an explicit declaration anywhere else in the file is promoted to a component symbol decorated with ["state", "implicit"]. This means a pure-transition state diagram ([*] --> Draft, Draft --> Submitted, …) now produces a useful graph instead of zero symbols.
  • Component / deployment diagrams: component, cloud, node, database, queue, rectangle, frame, folder, package, plus the [Foo] bracket shorthand for inline components.
  • C4-DSL macros: Person, Person_Ext, System, System_Ext, SystemDb, Container, ContainerDb, ContainerQueue, Component, Component_Ext, plus the *_Boundary macros.
  • File docstring: derived from the first present directive in the order title > caption > header > footer. Both inline directives (title Foo) and multi-line block forms (header\n Foo\nendheader) are recognised. The body of multi-line header / footer blocks is NOT parsed as PlantUML, so misleading content inside an annotation doesn't create spurious symbols.

Aliases win over display labels: participant "Web UI" as UI produces a symbol named UI (so arrows like UI -> API resolve) with the display label Web UI retained as the symbol's docstring. When a node is declared without an alias, the unquoted display label is sanitised into a graph-friendly identifier ("Public Internet"Public_Internet).

Extensions

.puml, .plantuml

Configuration

In reponova.yml:

plugins:
  plantuml:
    enabled: true       # default: true
    # patterns: []      # override global patterns for PlantUML files
    # exclude: []       # override global exclude for PlantUML files

| Property | Type | Default | Description | |----------|------|---------|-------------| | enabled | boolean | true | Enable/disable PlantUML file detection and extraction | | patterns | string[] | [] | Glob patterns to override global file matching for this plugin | | exclude | string[] | [] | Glob patterns to override global exclusions for this plugin |

Resolution semantics

  • Relationship arrows are recognised only when both endpoints are bare identifiers. Sequence-message arrows (Foo -> Bar : msg) produce extends references when both ends are simple identifiers.
  • Implicit states are resolved AFTER the main pass, so a transition that mentions a node which is later declared explicitly (state Empty #green) keeps the explicit form (decorator ["state"], no implicit marker).
  • Bracket shorthand ([Browser]) records the node but not its containing cloud { … } or node { … } parent — the symbol hierarchy is intentionally flat.

License

MIT — see LICENSE.