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

validozer-monad

v0.3.4

Published

Typescript runtime validator with the monad syntax

Readme

CircleCI License: MIT Quality Gate Status Coverage Maintainability Rating Code Smells Lines of Code

validozer

TypeScript runtime validator. Hugely inspired typescript implementation of https://github.com/iluwatar/java-design-patterns

Performs a validation on runtime using a monad.

It chains the validation steps to gather all potential failures into one single error, if there is at least one. You can use a variety of predicate combined with this library, create your own, as long at it responds to the following signature (t:T) => boolean on a Validator<T>.

Getting started

npm package

npm i validozer-monad

Usage

const validatedRequest = Validator.of<Request>(request)
    .validate(request => isDefined(request.name), new Error('The name is not defined'))
    .validate(request => isDefined(request.firstname),  new Error('The firstname is not defined'))
    .validate(request => isEmail(request.email),  new Error('The email is not at the right format'))
    .get();

In this example, isDefined and isEmail are coming from a third party called class validator

Motivation

You could ask yourself what is the purpose of this library when you have the library class validator The main problem about this library is that it depends on how you build your object.


class Foo {
    @IsNotEmpty()
    bar: string;
}
const foo : Foo = {
    bar: ''
}

const errors = validate(foo); // Result: []

class Foo {
    @IsNotEmpty()
    bar: string;
}
const foo : Foo = new Foo();
foo.bar = ''

const errors = validate(foo); // Result: [ ValidationError {...} ]

The way to perform it with class-validator is to use the lib class-transformer


class Foo {
    @IsNotEmpty()
    bar: string;
}
const foo : Foo = {
    bar: ''
}
let users = plainToClass(Foo, foo)
const errors = validate(foo); // Result: [ ValidationError {...} ]

That can be really frustrating because missing this step will lead to the validation of the object because it is the new Foo() which triggers the decorators binding.

While the combo class-validator / class-transformer is really good to check objects coming from a JSON.parse() and in the general way, for deserialization of data coming from the network, it is a real pain in other contexts.

This repository brings a way to use the monad and still continue to use the check functions of class-validator, and everything that fulfills the contract of a predicate to build your validation to achieve the contract programmation.