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

mohar-verify

v1.2.0

Published

Rebuild Mohar exam-leak verdicts straight from the public Arkiv RPC. Zero dependencies.

Readme

mohar-verify

Rebuilds every Mohar verdict for an exam straight from the public Arkiv RPC: which seals are official, whether the revealed paper matches them, and which witnesses held real questions before the exam started.

No dependencies, no website, no API key. One file, Node 18+.

npx mohar-verify DSPSC-PRE26-10170937
sealed exam DSPSC-PRE26-10170937: 2 set(s) by 0x6A473f5cE4AfB5acC58a56C4988b1fCb7A5E36A6, 1 look-alike(s) from other wallets ignored
paper revealed: 10/10 questions match the seal
deadline 2026-10-17T09:40:54.039Z (earlier of announced start and reveal)

0x0dbab71656… 0xcf1bbbe4… 2026-10-17T09:41:08.000Z AFTER: too late
0x518da20dea… 0xa1befa50… 2026-10-17T09:38:08.000Z BEFORE: LEAK A-Q2, A-Q4, A-Q5

Usage

npx mohar-verify <exam-id> [issuer-address] [--domain exam-body.gov.in] [--paper paper.txt]
  • issuer-address: the exam body's published address. Only seals created by it count. Defaults to the demo exam body.
  • --domain: trust whatever addresses the exam body lists at https://<domain>/.well-known/mohar.json instead of a fixed address. This is the strongest check, because the trust comes from the exam body's own website.
  • --paper: for an open exam (no official seal), the official paper as a text file, one question per line.
  • ARKIV_RPC: point it at another RPC endpoint.

It also works as a plain copy: download verify.mjs and run node verify.mjs <exam-id>.

Every verdict is also available as data, which is what the site's share cards use:

import { verdicts } from "mohar-verify"
const v = await verdicts("DSPSC-PRE26-10170937")
v.witnesses.filter((w) => w.verdict === "leak") // [{ key, creator, at, before, total, hits: ["A-Q2", …] }]

The hashing helpers are exported too:

import { normalise, sha, lines } from "mohar-verify"
sha(normalise("Q4) Which river is known as the Dakshin Ganga?"))

The rules match the app exactly; the repo's tests check it on 2000 random mixed-script strings. MIT license.