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

@shivanshv/crumb

v1.0.0

Published

TypeScript-first runtime contract and validation library

Readme

Crumb

Crumb is a TypeScript first runtime contract and validation library.

It solves one problem well:

Validating untrusted data at runtime while keeping TypeScript honest.

Crumb is small, explicit, and boring on purpose.


Why Crumb exists

TypeScript types disappear at runtime.

Any data coming from the outside world is untrusted:

  • API request bodies
  • environment variables
  • config files
  • JSON payloads
  • webhooks
  • message queues

Crumb sits at the boundary where data becomes trusted.

You validate once.
After that, your code can rely on types without guessing.


What Crumb is

Crumb provides:

  • runtime validation
  • static type inference
  • explicit parsing
  • readable errors
  • zero magic

Crumb validates data when it enters your system.


What Crumb is not

Crumb is not:

  • a form library
  • UI validation
  • schema driven code generation
  • an ORM
  • automatic data transformation
  • a framework

If you need state, side effects, or hidden behavior, Crumb is not the tool.


Installation

pnpm add crumb

or

npm install crumb

Basic example

import { crumb } from "crumb"

const User = crumb.object({
  id: crumb.string(),
  age: crumb.number().min(18),
  email: crumb.string().email()
})

const user = User.parse(input)

Behavior

If parsing fails:

  • an error is thrown
  • the error includes a readable path
  • no partial data is returned

If parsing succeeds:

  • user is fully typed
  • no undefined fields
  • no runtime guessing

Core concept

Data is untrusted until it is parsed.

Treat all external input as unknown and validate it explicitly.

Common use cases

Crumb is designed for:

  • API request validation
  • environment variable validation
  • config file validation
  • webhook payload validation
  • message queue events
  • internal trust boundaries
  • Crumb is transport agnostic.
  • It does not care where the data comes from.

Error handling

Crumb fails loudly. By default:

  • invalid data throws an error
  • errors include the exact failing path
  • nested structures produce nested paths
  • Errors are designed for humans first and machines second.

Design principles

  • Runtime behavior comes first
  • No implicit coercion
  • No global state
  • Errors must be readable by humans
  • Optional values must be explicit
  • One clear way to do one thing

Runtime support

Crumb v1.0 is Node first.
Other runtimes may be supported after the core API stabilizes.

Project status

  • Crumb is in early development.
  • APIs may change
  • features are intentionally limited
  • feedback is welcome
  • The goal is correctness and clarity, not completeness.

License

MIT