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

ontouml-js

v1.0.0

Published

Javascript library to create, edit, and query OntoUML models programmatically.

Readme

ontouml-js

CI npm License

A TypeScript/JavaScript library to create, edit, query, and serialize OntoUML models programmatically. Models round-trip to and from OntoUML JSON — the interchange format shared with the OntoUML visual tools — with byte-identical serialization.

📖 Tutorial & documentation: https://ontouml.github.io/ontouml-js/ — a guided tour with live, editable code samples.

Installation

npm install ontouml-js

The package ships CommonJS and ES module builds with full TypeScript declarations; Node.js ≥ 18 is required.

Usage

Projects and their containers (packages, classes) act as factories of fluent builders for their contents:

import { Project, serializationUtils } from 'ontouml-js';

// Create an OntoUML project
const project = new Project();
project.name.add('My Project');

// Projects serve as factories of builders for their contents
const model = project.packageBuilder().root().name('Model').build();

// Container elements, e.g., packages and classes, are also factories of
// builders for their contents
const person = model.classBuilder().kind().name('Person').build();
const school = model.classBuilder().kind().name('School').build();
const date = model.classBuilder().datatype().name('Date').build();
const enrollment = model.classBuilder().relator().name('Enrollment').build();

const studiesAt = model
  .binaryRelationBuilder()
  .material()
  .name('studies at')
  .source(person)
  .target(school)
  .build();

model
  .binaryRelationBuilder()
  .mediation()
  .source(enrollment)
  .target(person)
  .build();

// Relation ends and attributes are fully configurable
studiesAt.sourceEnd.name.add('student');
studiesAt.sourceEnd.cardinality.setAsOneToMany();
studiesAt.targetEnd.name.add('school');
studiesAt.targetEnd.cardinality.setAsZeroToMany();

enrollment.propertyBuilder().type(date).name('enrollment date').build();

// Containers expose their contents, and query methods span the model
model.classes; // the classes in the package
project.attributes; // every attribute in the project
project.getRelatorTypes(); // every class stereotyped «relator»

// Projects serialize into OntoUML JSON (https://w3id.org/ontouml/schema),
// and serialized projects parse back — byte-identically
const json = JSON.stringify(project);
const copy = serializationUtils.parse(json);

The library covers the full OntoUML metamodel: classes and their stereotypes, relations (binary and n-ary), attributes, generalizations and generalization sets, notes and anchors, diagrams with views and shapes, multilingual naming, and the OntoUML/UFO Catalog metadata vocabulary. See the tutorial for the complete tour.

Development

npm install
npm test          # run the Jest suite
npm run lint      # type-check with tsc
npm run build     # bundle CJS + ESM + type declarations

The tutorial site lives in website/ and its code samples are type-checked against the library at build time. See AGENTS.md for repository conventions, and the publish workflow for how releases reach npm.

About

ontouml-js is developed and maintained by the OntoUML community. If you want to know more, feel free to open an issue to provide feedback on the project or reach our team members for more specific cases:

License

Apache 2.0