Coder Social home page Coder Social logo

correct's Introduction

Correct

Pragmatic validation for Node.js

Example Usage

Implementation

const {
  SchemaValidator,
  isEmail,
  isString,
  isStrongPassword,
  isPhone,
  isOptional,
  Validation,
  ValidationError
} = require('correct')

// 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, isOptional, 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

Name Descriptionn
isString Validates whether input is a String.

Advanced Types

Name Descriptionn
isTimestamp Validates whether input is a valid ISO8601 timestamp.
             | Valid example: '2018-01-01T00:00:00.000Z'                   |

isEmail | Validates whether input is a valid email address. | | Valid example: [email protected] | | Invalid example: ting#fastmail.com | isPhone | Validates whether input is a valid phone number. | isStrongPassword | Validates whether input is a strong (has a score of 3 or 4) | | password using zxcvbn | | Valid example: 'Dmbu5bc5yeCRwsRD' | | Invalid example: 'qwerty' | isUrl | Validates whether input is a valid URL. | isZip | Validates wehther input is a valid zip code. |

Non-validator Options

Name Description
name Allows 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.                                                              |

message | Allows you to set the error message. | isOptional | Allows you to mark the field as optional/not required. |

License

Hippocratic License - See LICENSE

ย 

Created by Ian Walter

correct's People

Contributors

renovate-bot avatar ianwalter avatar dependabot[bot] avatar github-actions[bot] avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar

correct's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.