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

@lakatos/lemma

v0.2.1

Published

The Lemma annotation language and lakatos's TypeScript front end: discovery of annotated files, @ensures extraction, the formula parser, binder domains, the typecheck gate, the parser bridge to ESTree, thales's emitter, and the lemma bin that prints a che

Readme

@lakatos/lemma

The Lemma annotation language, end to end: the language itself and its reference implementation, versioned together.

  • spec/ — the language: README.md introduces it, grammar.ebnf is the normative grammar, semantics.md the prose semantics (including What a Theorem rests on), and fixtures/ the conformance corpus, whose directory membership is the expectation.
  • src/ — the implementation the engines share: discovery of annotated files (resolveFiles), @ensures extraction (extract), the prefix and formula parsers (parsePrefix, parseBody), binder domains and their cardinalities, class-valued binder resolution, island typing, the strict-mode typecheck gate (typecheckProject), and the parser bridge from a script to the ESTree the tarski evaluator reads (parseScript, with stripTypes for a TypeScript file).
  • schemas/ — tarski-estree.schema.json, the ESTree subset the bridge emits, and lemma-document.schema.json, what the bin prints.

The lemma bin is the front end as a process, for an engine that is not written in TypeScript. It prints one checked-program document per file: the program, or the reason there is none.

npx lemma check src/foo.ts            # type check the project, strip, parse
npx lemma check                       # no files: the files tsconfig.json compiles
npx lemma parse test.js               # parse as written, no type check
npx lemma check --jsonl "src/**/*.ts" # globs; one compact document per line

check type checks the project under its own tsconfig.json with strict forced on top, as both engines do; parse is for plain JavaScript such as test262, where the question is what the evaluator covers. The exit status is 0 when every file has a program, 1 when any was refused, and 2 on bad usage, a pattern matching nothing, or a tsconfig that cannot be read.

Install it with npm install @lakatos/lemma, and import the package, not a path: import { parseBody } from "@lakatos/lemma". The barrel src/index.ts is the whole public surface; everything else under src/ is internal.

Lemma depends on typescript, takes fast-check as a peer (its range and string-pattern arbitraries must share the generated tests' copy), and depends on nothing else in this repository.