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

lewd

v0.9.0

Published

An intuitive and easy to use validation libray for JSON data.

Downloads

46

Readme

Build Status NPM version Coverage Status Dependency Status devDependency Status

lewd

lewd is an intuitive and easy to use data validation library inspired by Python's voluptuous.

Getting Started

Typically, your validations will look something like this:

var signUpValidator = lewd({
    name: String,
    username: lewd.all(String, lewd.range({ min: 3, max: 8 }), /^[a-z][a-z0-9]+$/i),
    password: lewd.all(String, lewd.range({ min: 5, max: 15 })),
    sex: lewd.some('male', 'female').optional(),
    street: String,
    zip: Number,
    city: String,
    subscribeToNewsletter: lewd(Boolean).default(false)
});

// assuming you know your data is a valid JSON string
var data = JSON.parse(rawData);

try {
    signUpValidator(data);
} catch (e) {
    console.warn(e.toString());
}

But they can of course get more complex by logically combining conditions or nesting validation structures. Please take a look at our wiki for a thorough introduction how to use lewd and its many features.

Features

  • intuitive and concise API
  • supports arbitrarily nested structures
  • optionally remove invalid or unexpected keys from objects
  • compose larger structures by combining and re-using smaller ones
  • value coercion
  • default values
  • custom validators
  • custom error messages
  • thoroughly unit tested
  • runs in browsers as an UMD module (experimental)

Contributing

You found a bug, fixed a typo or came up with a cool new feature? Feel free to open issues or send pull requests and I'll do my best to merge them. Please make sure you add tests as needed and reference the issue number in your commit (please open one if necessary). Pull requests must not break any JSHint and JSCS rules or let the test coverage drop below 100% (npm test is your friend).

License

lewd is licensed under the BSD 2-Clause License. You can find it in the LICENSE file.