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

validation-result

v1.0.0

Published

Wrapper for unified client-server communication with methods to simplify validation and error handling.

Downloads

26

Readme

validation-result

Wrapper for unified client-server and function-function communication with methods to simplify validation and error handling.

function ValidationResult(data) {
    // Wrapped data
    this.data = data;
    // Validity flag
    this.isValid;
    // Lists of messages
    this.errors = [];
    this.warnings = [];
    this.messages = [];

    // ...validation functions...
}

Installation

npm install validation-result

Usage

Include validation-result in your file:

var ValidationResult = require('validation-result');

Then use it to wrap any object

var validation = new ValidationResult(data);

Basic functions and properties

// Check if data are valid
if (!validation.isValid) {
    // Data are not valid
}

// Add error to list of errors
// sets isValid to false
validation.addError(error);

// Add message to message list
validation.addMessage(message);

// Add warning to warnings list
validation.addWarning(warning);

// Append other validations
if (!validation.append(otherValidation)) {
    // Data are not valid
}

Validation functions

Each validation function returns its result. If the result is false, validation.addError(error) is called.

// Check if given property is number
validation.isNumber('path.to.property', error));

// Check if given property is lesser or equal than given value
validation.isLesserOrEqual('path.to.property', value, error));

// Check if given property is greater or equal than given value
validation.isGreaterOrEqual('path.to.property', value, error));

// Check if given property is equal to given value
validation.isEqual('path.to.property', value, error));

// Check if given expression is true
validation.isTrue(expression, error);

// Check if given property is not empty
validation.notEmpty('path.to.property', error));

// Check if given property is defined
validation.isDefined('path.to.property', error));

// Check if given property matches given regex
validation.matches('path.to.property', regex, error));

// Check if given property contains given value
validation.contains('path.to.property', value, error));

Example

// Require module
var ValidationResult = require('validation-result');

// Create example data
var user = {
    Name: "Bob",
    Age: 17,
    Local: {
        Password: "ucantgetme"
    }
}

// Wrap user in validation
var validation = new ValidationResult(user);

// Make validation controls
validation.notEmpty('Name', 'Name field is required');
validation.isGreaterOrEqual('Age', 18, 'You are too young');
validation.isDefined('Hobbies', 'Don\' you have a hobby?');

// Does it make sense to keep going?
if (!validation.isValid) {
    return validation;
}

// Nested validation to avoid access to undefined properties
// If we do not want to append error message, dont
if (validation.isDefined('Local')) {
    validation.notEmpty('Local.Password', 'Password field is required');
}

// Use your own checks
if (myMoodIsBlue) {
    validation.addError('You shall not pass');
}

// Return validation
return validation;

Testing

npm test