Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

m-validate

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

m-validate

NodeJS simple validation functions

  • 2.1.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

m-validate

npm npm stars GitHub forks license

Moblets' NodeJS simple validation to validate data based on a definition JSon.

Installation

$ npm install --save m-validate

Available validations

Validations were created for input type, length, required and string.

Input type validation

These are all HTML 5 input type validations.

number

Check input type number for integers.

Usage

Definition JSon

{
  "name": "Number of friends",
  "type": "number"
}

Error response: not_a_number

select, radio and checkbox

Check if the response belongs to the possible values.

Usage

Definition JSon

{
  "name": "position",
  "type": "radio",
  "values": {
    "left": "value_left",
    "right": "value_right",
    "up": "value_up",
    "down": "value_down"
  }
}

If the value is left, right, up or down, it will be validated.

Error response: not_in_the_select_list, not_in_the_radio_list or not_in_the_checkbox_list

color

Check if the response is a valid HTML 5, hexadecimal color, like '#FF0033'.

Usage

Definition JSon

{
  "name": "themeColor",
  "type": "color"
}

Error response: not_a_color

date

Check if the response is a valid HTML 5, 'YYYY-MM-DD' date.

Usage

Definition JSon

{
  "name": "birthDay",
  "type": "date"
}

Error response: not_a_date

time

Check if the response is a valid HTML 5, 'H:mm' time.

Usage

Definition JSon

{
  "name": "arrival",
  "type": "time"
}

Error response: not_a_time

email

Check if the response is a valid email.

Usage

Definition JSon

{
  "name": "userEmail",
  "type": "email"
}

Error response: not_an_email

url

Check if the response is a valid url.

Usage

Definition JSon

{
  "name": "siteUrl",
  "type": "url"
}

Error response: not_an_url

tel

Check if the response is a phone. It's a generic phone validator that accepts international (with plus sign) and local phones (with or without paranthesis).

Usage

Definition JSon

{
  "name": "cellNumber",
  "type": "tel"
}

Error response: not_a_tel

Value validation

These four validations are for numbers to define it's min and max values.

lessThan and moreThan

These validations require the data to be a number (int or float) that is 'less than' and/or 'more than' the chosen values.

Usage

Definition JSon

{
  "name": "zoom",
  "more-than": 0.1,
  "less-than": 10.4
}

Error response: must_be_more_than: 0.1 or must_be_less_than: 10.4

lessThanOrEqual and moreThanOrEqual

These validations require the data to be a number (int or float) that is 'less than or equal' and/or 'more than or equal' the chosen values.

Usage

Definition JSon

{
  "name": "precision",
  "more-than-or-equal": 3,
  "less-than-or-equal": 8.6
}

Error response: must_be_more_than_or_equal: 3 or must_be_less_than_or_equal: 8.6

Length validation

These two validations are for generic strings to define it's min and max length.

Usage

Definition JSon

{
  "name": "pinCode",
  "min-length": 4,
  "max-length": 8
}

Error response: must_be_min: 4 or must_be_max: 8

Required validation

This validation checks if the required value is available in the POST JSon.

Usage

Definition JSon

{
  "name": "name",
  "required": true
}

Error response: field_is_required

String validations

These are validations for specific kinds of strings, that must help creating validations tom many field types.

alpha

This validation require the data to be only letters and accented letters (A-z and À-ÿ).

Usage

Definition JSon

{
  "name": "firstName",
  "type": "text",
  "string": "alpha"
}

Error response: not_an_alpha

alphaSpace

This validation require the data to be only letters, accented letters and spaces (A-z, À-ÿ and ' ').

Usage

Definition JSon

{
  "name": "fullName",
  "type": "text",
  "string": "alphaSpace"
}

Error response: not_an_alpha_space

alphaDash

This validation require the data to be only letters, accented letters and dashes (A-z, À-ÿ, - and _).

Usage

Definition JSon

{
  "name": "serialNumber",
  "type": "text",
  "string": "alphaDash"
}

Error response: not_an_alpha_dash

alphaSymbol

This validation require the data to be letters, accented letters and many symbols:

A-zÀ-ÿ-_.,!@
#$%^{}[]
&*()<>+=
?:;" "

Usage

Definition JSon

{
  "name": "address",
  "type": "text",
  "string": "alphaSymbol"
}

Error response: not_an_alpha_symbol

alphaNumeric

This validation require the data to be letters, accented letters and numbers (A-z, À-ÿ and 0-9).

Usage

Definition JSon

{
  "name": "code",
  "type": "text",
  "string": "alphaNumeric"
}

Error response: not_an_alpha_numeric

alphaNumericSpace

This validation require the data to be letters, accented letters, numbers and space (A-z, À-ÿ, 0-9 and ' ').

Usage

Definition JSon

{
  "name": "keyCode",
  "type": "text",
  "string": "alphaNumericSpace"
}

Error response: not_an_alpha_numeric_space

alphaNumericDash

This validation require the data to be letters, accented letters, numbers and space (A-z, À-ÿ, 0-9, - and _).

Usage

Definition JSon

{
  "name": "serialNumber",
  "type": "text",
  "string": "alphaNumericDash"
}

Error response: not_an_alpha_numeric_dash

alphaNumericSymbol

This validation require the data to be letters, accented letters, numbers and many symbols:

A-zÀ-ÿ0-9" ".,!@
#$%^&*()
{}[]<>+=
?:;-_

Usage

Definition JSon

{
  "name": "serialNumber",
  "type": "text",
  "string": "alphaNumericSymbol"
}

Error response: not_an_alpha_numeric_symbol

numeric

This validation require the data to be numbers (0-9).

Usage

Definition JSon

{
  "name": "products",
  "type": "text",
  "string": "numeric"
}

Error response: not_a_numeric

numericFloat

This validation require the data to be numbers, -, . and , (0-9.,-).

Usage

Definition JSon

{
  "name": "price",
  "type": "text",
  "string": "numericFloat"
}

Error response: not_a_numeric_float

numericDash

This validation require the data to be numbers, -, _, . and , (0-9.,-_).

Usage

Definition JSon

{
  "name": "balance",
  "type": "text",
  "string": "numericDash"
}

Error response: not_a_numeric_dash

numericSymbol

This validation require the data to be numbers and many symbols:

0-9" "0-9_.,!@
#$%^&*()
{}[]<>+=
?:;-

Usage

Definition JSon

{
  "name": "code",
  "type": "text",
  "string": "numericSymbol"
}

Error response: not_a_numeric_symbol

Pre requisites

You must have a definition json like this:

{
  "fields": [
    {
      "name": "name",
      "type": "text",
      "min-length": 3
    },
    {
      "name": "password",
      "type": "number",
      "max-length": 4,
      "min-length": 4,
      "required": true
    },
    {
      "name": "description",
      "type": "text-area"
    },
    {
      "name": "quantity",
      "type": "select",
      "values": {
        "0": "value_3",
        "1": "value_6",
        "2": "value_9"
      }
    },
    {
      "name": "themeColor",
      "type": "color"
    },
    {
      "name": "birthDay",
      "type": "date"
    },
    {
      "name": "arrival",
      "type": "time"
    }
  ]
}

This definition must have all the fields and the validations.

And you must have the data to be validated:

{
  "password": "1232",
  "description": "A great fidelity card",
  "quantity": "0"
}

Usage

First, you need to configure the language (m-validate uses i18n-2) passing a config object and the language you want your response.

i18n-2 will create the language files as they are needed, but you can set all translations using this base file.

var MValidate = require('../m-validate');
// The object is a i18n-2 config object. The second parameter is the locale
var validator = new MValidate({
  locales: [
    'en-US',
    'pt-BR'
  ],
  directory: './locales',
  extension: '.json'
},
 'pt-BR');

var fs = require('fs');

// Get the definition json here
var definitionPath = 'form.json';
var definitionContent = fs.readFileSync(definitionPath, 'utf8');
var definition = JSON.parse(definitionContent);
var definitionFields = definition.fields;

// Assuming the data comes from a post
var content = req.body;

// Response variable will have the result
var response = validator.validate(content, mobletDefinitionFields);

The validation response will be an object with two items: a boolean and an object.

The boolean is called "error" and will be true if any of the validations did not pass.

The object is called "result" and will have all the validated fields as an object. If any validation failed, this object will have the translated validation type and the result, for instance:

{
  error: true,
  response: {
    name: {},
    password: {
      required: 'field_is_required',
      'max-length': 'must_be_more_than_chars: 4'
    },
    description: {},
    quantity: {},
    position: {},
    color: {},
    themeColor: {
      type: 'not_a_color'
    },
    birthDay: {},
    arrival: {},
    email: {},
    siteaddress: {
      type: 'not_an_url'
    },
    phone: {
      type: 'not_a_tel'
    },
    cell: {}
  }
}

You can check the tests to see it in action.

License

The MIT License (MIT)

Copyright (c) 2016 Moblets

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Keywords

FAQs

Package last updated on 15 Jun 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc