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 🙏

© 2024 – Pkg Stats / Ryan Hefner

the_validator

v1.8.2

Published

universal validation through a json interface

Downloads

169

Readme

The Validator!

Capable of leaping across language barriers, validating data in a flash, and rescuing small kittens.

npm install the_validator --save

By using a JSON interface, Validator can be implemented in any programming language. Validator prevents duplication of validation logic on the client and server.

Create a schema

{
    "fieldName": [
        "test1", "test2", "..."
    ],
    "anotherField": ["..."]
}

tests are of the form

{ "testType:testValue": "message if test fails" }

testType

required

Required will fail if the tested value is null, undefined, or the empty string.

{
    "username": [
        { "required": "you must supply a username" }
    ]
}

illegalField

ensures that the test data does not contain the given key. illegalField should be the first and only test on a field.

{
    "internalField": [
        { "illegalField": "You are not allowed to edit the internalField" }
    ]
}

minimumLength

string must be of the specified minum length

{
    "password": [
        { "required": "password required" },
        { "minimumLength:6", "password must be at least six characters long" }
    ]
}

maximumLength

analogous logic to minimumLength

regex

must match the supplied regex

{"regex:/^[a-zA-Z0-9*$/": "alphanumeric characters only" }

type

can test for types number, string, boolean, and object.

{ "type:boolean": "must be true or false" }

comparison operators

perform the <, >, <=, >=, and == operators.

{ ">=:100": "you must be 100cm tall to ride the Ferris wheel" }

email

test if matches a proper email format

{ "email": "bad email format" }

uuid

test if matches a proper uuid format

{ "uuid": "bad uuid format" }

match

tests both values of a passed array of two values match

{
    "password": [
        { "match": "passwords must match" }
    ]
}

enumerated

tests that value is a member of a set of values

{
    "letter": [
        { "enumerated:a,b,c": "value is not 'a', 'b' or 'c'" }
    ]
}

numeric

Numeric strings. accepts values such as "123", "1.2", ".5", "05", "1."

{ "numeric": "numeric string" }

integer

Integer strings. Only characters 0-9

alphabetical

Strings of only letters (upper or lower case)

alphanumeric

Strings of only letters and digits

allowNull

Allow null values to pass through, regardless of other validation rules applied to the field.

Run

var validator = new Validator(schema);

var errors = validator.test({
    username: 'bob',
    password: 'cornflakes'
});

Strict Mode

Only allow fields explicitly listed in the schema

var validator = new Validator(schema);

var errors = validator.test({
    username: 'bob',
    password: 'cornflakes'
}, { strict: true });

customMessageMaps

Create your own error messages

var errors = new Validator(
    { foo: ['<:5'] },
    {
        customMessageMaps: {
            '<': function (name, testValue) {
                return 'The field ' + name + ' should be less than ' + testValue;
            }
        }
    }
).test({ foo: 6 });