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

verifijs

v1.0.2

Published

Light weight node.js validation library

Downloads

7

Readme

verifijs

![NPM version][npm-image] Known Vulnerabilities

Light weight node js validation library.

Installation

npm i verifijs

Release Notes 1.0.2

New Features!

Why verifijs?

verifijs is validation library that inspired by laravel freamwork.

  • provides over 35 frequently used validation rules.

  • verifijs is very light weight node.js validation library written in java script.

  • verifijs use very limited number of dependencies. (It is useing database driver packges such as mysql,mongodb only) The good news is you only need to install either of this database driver which means if you use mysql database you only need to install mysql npm driver.

  • verifijs define validation enable defined chained validation rule schema.It allow use multiple validations to single input.

  • It allow use even database based validations. For instance : If you want to check some data wether already in the database or not verifijs allow check value by simply define a schema.

  • It currantly support only mongodb database validations. But as soon as possible it will support other database manamagent systems as well.

Sample Usage

verifijs express js examples here you can find and clone live examples of usage of verifijs.

verifijs is light weight java script/Node js validation library It can be use with Node js, express , server less (AWS,Azure, etc).

const Validation = require("verifijs");
// the request object that include data which submitted by the user.
let reqObj = {
  name: "kalo",
  age: 56,
  address: "No234Knnimahara",
  obj: '{"name":"kalo"}',
  email: "[email protected]",
  id: "f1277d16-5cb9-43f6-95ce-a5e22e12cdaa",
  is_enable: true,
  term: "Yes",
};

//verifijs allows to defined your own validation error messages.
const messages = {
  first_name_required: "First name is required",
  is_enable_boolean: "is enable must be true or false",
  name_required: "This porparty is required",
  name_alpha: "Name must be include letters and numbers",
};
//create validation object.
const validation = new Validation();

//defined validation rules. This is asynchronous method.
//or reqObj.body
validation
  .check(
    reqObj,
    {
      first_name: "required|string|max:30|regExp:[a-zA-Z ]",
      name: "required|string|max:30|regExp:[a-zA-Z ]|alpha",
      age: "required|integer",
      address: "required|string",
      obj: "required|json",
      email: "required|email",
      id: "uuid",
      is_enable: "boolean",
      term: "in:yes,no,maybe",
    },
    messages
  )
  .then((result) => {
    console.log(result);
  });

Above example shows the proposed example usage of verifijs.

const Validation = require("verifijs");

import validation library 'the standerd way'

let reqObj = {
  name: "kalo",
  age: 56,
  address: "No234Knnimahara",
  obj: '{"name":"kalo"}',
  email: "[email protected]",
  id: "f1277d16-5cb9-43f6-95ce-a5e22e12cdaa",
  is_enable: true,
  term: "Yes",
};

'reqObj' is the object that include values that need to validate. this may be a 'post' request or your own reqObj(sometimes this can be req.body).

{
    first_name: 'required|string|max:30|regExp:[a-zA-Z ]',
    name: 'required|string|max:30|regExp:[a-zA-Z ]|alpha',
    age: 'required|integer',
    address: 'required|string',
    obj: 'required|json',
    email: 'required|email',
    id: 'uuid',
    is_enable: 'boolean',
    term: 'in:yes,no,maybe',
}

You can specify validation parameters separated by '|'. Remember you have to use same key values that used in reqObj that you already defined.

Validation Rules

alpha | alphaNum | alphaDash | array |after(date)| bail | before(date)| beforeOrEqual(date) | boolean | between | distinct | database_validation_rules | dateEquals | digits | digits | digitsBetween | dateEquals| email | graterThan | graterThanOrEqual | in| includes | json | lessThanOrEqual |latitude| longitude | min | max | lessThan | notIn | required | regExp | string | size | same | setBailAll | uuid

required

The field under validation must be present in the input data and not empty. A field is considered "empty" if one of the following conditions are true:

  • The value is null.
  • The value is an empty string.
  • The value is an empty array or empty Countable object.

size:value

The field under validation must have a size matching the given value. For string data, value corresponds to the number of characters. For numeric data, value corresponds to a given integer value (the attribute must also have the numeric or integer rule). For an array, size corresponds to the count of the array. Let's look at some examples:

// Validate that a string is exactly 12 characters long...
'title': 'size:12';

// Validate that a provided integer equals 10...
'seats': 'integer|size:10';

// Validate that an array has exactly 5 elements...
'tags' : 'array|size:5';

min:value

The field under validation must have a minimum value. Strings, numerics, arrays are evaluated in the same fashion as the size rule.

max:value

The field under validation must be less than or equal to a maximum value. Strings, numerics, arrays are evaluated in the same fashion as the size rule.

string

The field under validation must be a string.

Database Validation rules (unique,exists)

Database validation rules helps to validate your input data against data that stored in your application's database. for that you need to install node js database drivers that supports your particular database.

if you are using mysql database, you need to install manually mysql node.js drivers using below npm command.

npm i [email protected]

if you are using mongodb, you need to install manually mongodb node.js drivers using below npm command.

npm i [email protected]

NOTE: If you don't intend to use below validations (unique,exists) You don't need to install any theired party library.

Now you need to initiate database connection.

// Validation object creation
const validation = new Validation();

if you use mongo db

validation.initMongoDbConnection({
  url: "url to your mongodb",
});

if you use mysql

validation.initMysqlConnection({
  host: "host",
  user: "username",
  password: "password",
  database: "database name",
});

This configurations will make a database connection.

unique:table,column

The field under validation must not exist within the given database table. The column option may be used to specify the field's corresponding database column. If the column option is not specified, the field name will be used.

Currently supports Mongodb and MySql only

//validation rule
email: "unique:users,email_address";

exists:table,column

The field under validation must exist on a given database table. If the column option is not specified, the field name will be used.

Currently supports Mongodb and MySql only

//validation rule
email: 'exists:users,email_address

alpha

The field under validation must be entirely alphabetic characters.

alphaDash

The field under validation may have alpha-numeric characters, as well as dashes and underscores.

alphaNum

The field under validation must be entirely alpha-numeric characters.

boolean

The field under validation must be able to be cast as a boolean. Accepted input are true, false, 1, 0, "1",and "0".

dateEquals:date

The field under validation must be equal to the given date.

digits:value

The field under validation must be numeric and must have an exact length of value.

digitsBetween:min,max

The field under validation must be numeric and must have a length between the given min and max.

email

The field under validation must be formatted as an e-mail address.

gt:field

The field under validation must be greater than the given field. The two fields must be of the same type. Strings, numerics, arrays, and files are evaluated using the same conventions as the size rule.

gte:field

The field under validation must be greater than or equal to the given field. The two fields must be of the same type. Strings, numerics, arrays, and files are evaluated using the same conventions as the size rule.

in:value1,valie2,...

The field under validation must be included in the given list of values.

 term: 'in:yes,no,maybe',

not_in:value1,valie2,...

The field under validation must not be included in the given list of values.

json

The field under validation must be a valid JSON string.

lt:field

The field under validation must be less than the given field. The two fields must be of the same type. Strings, numerics, arrays, and files are evaluated using the same conventions as the size rule.

regExp:pattern

The field under validation must match the given regular expression.

lte:field

The field under validation must be less than or equal to the given field. The two fields must be of the same type. Strings, numerics, arrays, and files are evaluated using the same conventions as the size rule.

dateEquals:date

The field under validation must be equal to the given date.

date: 'dateEquals:1994-02-24',

after:date

The field under validation must be a value after a given date.

'start_date' : 'required|after:2010-02-24'

Instead of passing a date string, you may specify another field to compare against the date.

'finish_date' : 'required|after:start_date'

before:date

The field under validation must be a value preceding the given date.

beforeOrEqual:date

The field under validation must be a value preceding or equal to the given date.

bail

Stop running validation rules after the first validation failure. Suppose you have defined sevaral validations for each data property.

 name: 'bail|required|string|max:30|regExp:[a-zA-Z ]|alphaDash',
 age: 'bail|required|integer',

normally, verifijs gives all validation error messages at once.but when you specifiy bail for each property first validation falier stop evaluate other validation rules for each property.then it will move to next property to validation. Example: when name property's max validation fails, bail stop validate rest of validation rules and jump to age property.

setBailAll

bail all is not a validation rule. It's a method.If you set bailAll property value as true, verifijs stop validation when one validation fails and give you the error message.default value is false.

const validation = new Validation();
validation.setBailAll(true);

distinct

When working with arrays, the field under validation must not have any duplicate values.

includes

includes evauate strings has spesific phase.for instance you want to allow mail addresses such as gmail,yahoo only includes able to use specify them.

 email: 'required|email|includes:@gmail.com,@hotmail.com',

between:min,max

The field under validation must have a size between the given min and max. Strings, numerics, arrays are evaluated in the same fashion as the size rule.

uuid

The field under validation must be a valid RFC 4122 (version 1, 3, 4, or 5) universally unique identifier (UUID).

array

The field under validation must be a java script array.

lat

Validate geo locations - latitude validations.

lng

Validate geo locations - longitude validations.

same:field

The given field must match the field under validation.

'password': 'required|string|same:confirmPassword',
'confirmPassword': 'required|string'

same validation rules not only supports strings.It will support:

  • Arrays
  • Objects
  • String
  • Integers
  • Floats

Customizing The Error Messages

You can define your own error messages instead of existing messages. pass the message object into check method just like above.here you have two options

  1. Apply some message effect to all criteria
const messages = {
  // max is the criteria
  max: "you cannot use more than max value",
};

this messages will apply all "max" validation checks.

  1. Apply some message to specific data field.
const messages = {
  name_required: "This property is required",
};

here you need to specify data field (name) and criteria (required) then error message will add only to that specific data field required criteria. data field and criteria should separate by using "_".