4.1.5 • Published 2 years ago

@ianwalter/nrg-validation v4.1.5

Weekly downloads
390
License
SEE LICENSE IN LI...
Repository
github
Last release
2 years ago

@ianwalter/nrg-validation

Pragmatic validation for Node.js

Example Usage

Implementation

import {
  SchemaValidator,
  isEmail,
  isString,
  isStrongPassword,
  isPhone,
  canBeEmpty,
  Validation,
  ValidationError
} from '@ianwalter/nrg-validation'

// Custom validator example:
const msg = 'Occupation must contain software.'
const mustContainSoftware = occupation => (
  new Validation(occupation.toLowerCase().includes('software') || msg)
)

// Create the validator.
const registrationValidator = new SchemaValidator({
  email: { isEmail },
  name: { isString },
  password: { isStrongPassword, message: 'Your password must be stronger.' },
  occupation: { mustContainSoftware },
  phone: { isPhone, canBeEmpty, name: 'telephone number' }
})

try {
  // Validate the input.
  await registrationValidator.validate(req.body).orThrow()

  // Continue to do something here.
} catch (error) {
  if (error instanceof ValidationError) {
    // If the error is a ValidationError, respond with the invalid results.
    res.status(400).json(error.feedback)
  } else {
    res.status(500).end()
  }
}

Input (req.body):

{
  "email": "hahahaha",
  "name": "",
  "password": "qwerty",
  "occupation": "CEO",
  "phone": "777"
}

Output (validation):

{
  email: ['A valid email address is required.'],
  name: ['Name is required.'],
  password: ['Your password must be stronger.'],
  occupation: ['Occupation must contain software.'],
  phone: ['A valid telephone number is required.']
}

Bundled Validators

Basic Types

NameDescriptionn
isStringValidates whether input is a String.

Advanced Types

NameDescriptionn
isTimestampValidates whether input is a valid ISO8601 timestamp.
Valid example: '2018-01-01T00:00:00.000Z'
isEmailValidates whether input is a valid email address.
Valid example: sharonjones@hotmail.com
Invalid example: ting#fastmail.com
isPhoneValidates whether input is a valid phone number.
isStrongPasswordValidates whether input is a strong (has a score of 3 or 4)
password using zxcvbn
Valid example: 'Dmbu5bc5yeCRwsRD'
Invalid example: 'qwerty'
isUrlValidates whether input is a valid URL.
isZipValidates wehther input is a valid zip code.

Non-validator Options

NameDescription
nameAllows you to customize the name of the field as it appears in
the error message. If this is not specified, the error message
will use a default specified by the validator used or the object
key.
messageAllows you to set the error message.
isOptionalAllows you to mark the field as optional/not required.

License

Hippocratic License - See LICENSE

 

Created by Ian Walter

4.1.4

2 years ago

4.1.3

2 years ago

4.1.5

2 years ago

4.1.2

3 years ago

4.1.1

3 years ago

4.1.0

3 years ago

4.0.4

3 years ago

4.0.1

3 years ago

4.0.0

3 years ago

4.0.3

3 years ago

4.0.2

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.1.2

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.0

3 years ago

1.5.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.2.1

3 years ago