New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

parry

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parry

A structural Node.js validation module

latest
Source
npmnpm
Version
2.1.0
Version published
Maintainers
1
Created
Source

parry

npm version Build Status

A structural Node.js validation module.

This module will protect your application from invalid inputs!

Installation

npm install parry

Or, you can use in browser through the browserify.

Usage

var Field = require('parry').Field;
var Form = require('parry').Form;

var UsernameField = Field.extend()
  .type('matches', /[-_a-z0-9]/i)
  .type('isLength', [4, 16])
;
var PasswordField = Field.extend()
  .type('isAlphanumeric')
  .type('isLength', [8, 16])
;
var GenderField = Field.extend({ passIfEmpty: true })
  .type('isIn', ['male', 'female'])
;

var UserForm = Form.extend()
  .field('username', UsernameField)
  .field('password', PasswordField)
  .field('gender', GenderField)
;

// Validate inputs
var inputs = {
  username: 'my-username@',
  password: 'abcd123',
  gender: 'man'
};
var userForm = new UserForm(inputs);
userForm.validate(function(err, validationResult) {
  console.log(validationResult);
  // -> {
  //   isValid: false,
  //   errors: {
  //     username: [ 'Not matched' ],
  //     password: [ 'String is not in range' ],
  //     gender: [ 'Unexpected value' ]
  //   },
  //   reporter: { ErrorReporter instance }
  // }
});

Field

Field.type

You can set the following typical validations.

var SubField = Field.extend();
  .type('isEmail');
  .type('isLength', [4, 64])
;

Field.specify

Use it, in the case of complex validation.

var SubField = Field.extend()
  .specify(function(input, callback) {
    if (input === 'good') {
      callback(null, { isValid: true });
    } else if (input === 'bad') {
      callback(null, { isValid: false, errorMessages: ['It is a bad input'] });
    } else {
      // Error message is 'It is a not good input'
      callback(null, { isValid: false });
    }
  }, 'It is a not good input')
;

Field.passIfEmpty

Pass validation if value is empty.

Default: false

var SubField = Field.extend({ passIfEmpty: true });

Field.shouldValidateAll

Validate all validators already even if error occurs.

Default: false

var SubField = Field.extend({ shouldValidateAll: true });

Field.extend

Create sub class.

var SubField = Field.extend({ passIfEmpty: true, shouldValidateAll: true });

Field.prototype.validate

Validate with input.

field.validate('your input', function(err, { isValid, errorMessages }) {
});

Or, if you use promise:

field.validate('your input').then(..);

Form

Form.field

Set Field sub class with id.

Please see Usage.

Form.extend

Create sub class.

var SubForm = Field.extend({ shouldValidateAll: true });

Form.shouldValidateAll

Validate all fields already even if error occurs

Default: true

var SubForm = Form.extend({ shouldValidateAll: true });

Form.prototype.input

Input a value.

form.input('email', 'foo@example.com');

Form.prototype.inputs

Input values.

form.inputs({
  email: 'foo@example.com',
  username: 'foo'
});

Or,

var form = new SubForm({
  email: 'foo@example.com',
  username: 'foo'
});

Form.prototype.validate

Validate fields with inputs.

Please see Usage.

Or, if you use promise:

form.validate().then(..);

ErrorReporter

DEFAULT_ERROR_MESSAGES

Keywords

validation

FAQs

Package last updated on 27 Feb 2015

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