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

@intentius/tsad-conformance

v2.1.0

Published

The conformance suite of the typescript-as-data specification: fixture loader, runner, and the named hosts. An implementation supplies an adapter and gets a report.

Downloads

764

Readme

@intentius/tsad-conformance

The conformance suite of the typescript-as-data specification, as a package. It carries the fixtures under spec/fixtures/ at the version it declares, the loader and runner that judge an implementation against them, and the named hosts a whole-build fixture may ask for. It carries no implementation: the reference implementation is @intentius/tsad-reference, a separate package, so an implementation under test does not have to install a competing one to get the harness.

Running the suite against an implementation

Supply a ConformanceAdapter (src/adapter.ts): a name, the specification version the implementation declares, a shape classifier, an expression folder, and optionally a whole-build entry. Then:

import { loadFixtures, runFixtures, bundledFixturesDir } from "@intentius/tsad-conformance";

const fixtures = loadFixtures(bundledFixturesDir());
const reports = await runFixtures(myAdapter, fixtures);
for (const r of reports) if (!r.pass) console.log(r.fixture, r.failures);

compareAdapters(a, b, fixtures) reports where two implementations disagree with each other, independently of what the fixtures expect. The repository's own use of it is in src/chant-agreement.test.ts.

Versions

The package's major and minor are the specification version it carries (spec/VERSION); the patch is the package's own. A 1.0.x package holds the fixtures of specification 1.0. An adapter's specVersion is compared against the fixtures' version by whoever runs the suite, never assumed.

Gating a document's citations (#34)

An implementation's documentation cites rule identifiers, and a subset change here can leave that prose describing the old subset. loadRules(bundledSpecDir()) indexes every S-* and F-* with its text at the version the package carries, and checkCitations(document, index, declaredVersion) reports an identifier that is not a rule, a quote that is not the rule's text, and a declared version that is not the index's. A document quotes a rule with a marker line and a blockquote:

{/* rule: F-Depth */}
> Each terminates a different recursion and each turns exhaustion into a fallback.

A bare mention is held only to existing; a quote is held to being verbatim. The repository runs this over chant's own docs in the corpus workflow, and chant can run the same call in its CI against the published package.

What is not in the package

The chant adapter and the corpus cross-check (src/adapters/, src/corpus.ts) are excluded from the build: they import chant and the reference, and they are the repository's own cross-checks rather than the harness.