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

@shlomoa/openui-spec

v0.13.1

Published

Load, validate, and edit OpenUI JSON documents.

Readme

OpenUI Specification

This repository contains a technology-independent specification for a Web UI framework. It also includes an Angular TypeScript generator that applies a UI description authored against the spec to an existing Angular workspace. The goal is to use the specification as the basis for a standard.

Developer docs

Contributor and developer entry points for this repository:

  • Contributing guide — repository map, local setup and validation.
  • Releasing — version rules, release validation and publishing.
  • Requirements — what the solution must provide.
  • Changelog — release notes, breaking changes, and upgrade guidance.
  • AGENTS.md — guidance for AI coding assistants.

OpenUI JSON packages

Both implementations bundle spec/openui.schema.json and spec/openui.json, and parse, model and validate documents with the same API and the same diagnostics. Their grammar stage validates decoded values against the bundled JSON Schema; JSON decoding supplies the syntax and duplicate-member diagnostics the schema cannot observe. Validation runs the four stages of the conformance suite: grammar, document (globally unique ids and the spec version), catalog (every type is a known object type) and contract (every attribute value fits its declared value type).

Python

The openui-spec package requires Python 3.12 or newer and installs two command-line tools:

  • openui_spec validates and edits documents with validate, add, remove, and modify commands.
  • compare_openui_spec structurally compares two documents and emits a deterministic JSON changelog.
python -m pip install openui-spec
openui_spec validate --input document.json
openui_spec add --input document.json --parent root --object '{"id":"newTable","type":"Table"}'
compare_openui_spec reference.json updated.json --output changelog.json

The parse, model and validate API is the bin.openui_document module (parse, validate, validate_text, Document, Element, Attribute, Diagnostic).

The comparison API is openui_spec.compare(reference, new), which returns the same changelog as compare_openui_spec; its output contract is pinned by the conformance suite's comparison cases.

TypeScript and Node.js

The @shlomoa/openui-spec package provides the typed OpenUiJson document API, the equivalent ng-openui-spec editing CLI, and the same parse, model and validate API as the Python package (parse, validate, validateText, Document, Element, Attribute, Diagnostic).

npm install @shlomoa/openui-spec
import { OpenUiJson } from "@shlomoa/openui-spec";

const document = OpenUiJson.load("input.json");
document.validate();
document.add("root", { id: "newTable", type: "Table" });
document.updateAttributes("newTable", { title: "Updated" });
document.save("output.json");
ng-openui-spec validate --input document.json

Essentials

  • An OpenUI document is a tree with a root id of root; every node has a unique camelCase id and an exact, case-sensitive catalog type.
  • Put non-hierarchical values in attrs and nested objects in children. An attribute key names its category, uses.<name>, produces.<name> or behaves.<name>, and its value is typed; see attributes and value types.
  • Editing commands revalidate the result and update --input in place. Pass --output to preserve the source document.
  • Values accepted by --object and --attrs can be inline JSON or paths to JSON files.

Documentation