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

@originals/vh

v0.4.0

Published

Verifiable History for the Originals Protocol: strict JSON/JCS, eddsa-jcs-2022 and bip340-jcs-2025, a VH-Log engine, did:vh, did:webvh and the originals:1.0 extension, browser-safe

Readme

@originals/vh

Verifiable History for the Originals Protocol: the layers under each Original's did:vh asset log, and a dependency of @originals/sdk. It is published with the SDK's releases, and is browser-safe, with no Node builtins or Buffer in any entry.

| Subpath | Contents | |---|---| | @originals/vh/json | Strict JSON and JSON Lines parsing (duplicate keys, lone surrogates, lossy integers and -0 rejected), JCS (RFC 8785) | | @originals/vh/crypto | base58btc multibase, sha2-256 multihash, Ed25519 and compressed secp256k1 Multikeys, did:key verification methods, eddsa-jcs-2022 and bip340-jcs-2025 proofs | | @originals/vh/log | The generic VH-Log engine: SCID, entry hashes, parameters, update keys and pre-rotation, keys from a controller (VH-Log PR 11), witness thresholds, versionTime precision (PR 8), comparing copies with retained versionIds and minCopies, version selection, building entries | | @originals/vh/didvh | did:vh resolution with logs passed directly, and the extension mechanism (did:vh PR 3) | | @originals/vh/webvh | did:webvh 1.0 on VH-Log (didwebvh PR 302): identifier rules, DID-to-HTTPS transformation, portability, implicit services, resolution of logs passed directly | | @originals/vh/originals | The originals:1.0 extension: asset state rules, author DID histories and binding (P5.2, P5.3, P5.8, P5.11), the derived DID document, entry builders and verifyOriginal's report |

The root entry re-exports all of them, plus OriginalsError and its error categories.

Status against plan 011

PRs 2 and 3 are in. Later PRs add these, in order:

  • the SDK's local workflow and the evidence package (PR 4);
  • author DID rotation, freshness and forks (PR 6);
  • witnesses, the did:webvh alias, and retrieval from src and from watchers (PR 7);
  • authoritative sources and alternative encodings (PR 9).

The engine compares copies it is given (resolveCopies). Until retrieval lands, the did:vh resolver returns featureNotSupported for src, checkWatchers, extraWatchers and minCopies.

Evidence

Tests use independently produced fixtures, never vectors this code generated:

  • the shared vh interop vectors (brianorwhatever/vh@f5176785, profile vh-log-interop-0), all 170 passing: primitives, 158 resolution cases, generation with cross-resolution, the didwebvh-ts external logs and 89 independent Ed25519 boundary cases. They run through interop/handler.ts, which is also the protocol driver (bun interop/driver.ts) for that repository's harness;
  • the C2SP CCTV (914) and Wycheproof (151) Ed25519 corpora, under the profile's acceptance rules: canonical encodings, no small-order points and the uncofactored equation. noble's own verify is cofactored and accepts low-order residues, so the equation is checked in verifyEd25519;
  • the W3C eddsa-jcs-2022 test vectors, signed byte for byte;
  • bip340-jcs-2025 proofs from @did-btcr2/[email protected], covering keys with both y parities;
  • did:webvh 1.0 logs from [email protected], covering pre-rotation, rotation, witness activation, witness removal and deactivation.

The interop profile differs from Originals in places. A strict parse rejects duplicate keys and lossy integers, and a specialisation rejects unknown parameters. The interop driver opts out of these through INTEROP_PARSE and vhLog10; nothing Originals verifies does.

The generator scripts are in tests/fixtures/generators/. They are run outside the repository, against separately installed packages. The worked entry-hash example in the VH-Log spec does not reproduce (spec finding S7), so it is not used as a vector.