Skip to content

m1sha/object-validation-pattern

Repository files navigation

Build Status Coverage Status

Object Validation Pattern

Simplest Usage

interface SignUp {
  name: string
  email: string
  password: string
  confirmPassword: string
}

const stateModel = new StateModel<SignUp>()

const validator = validatorFactory (stateModel, rules => {
  rules.add("name").isString().notEmpty()
    .checkAsync(async (_, __, value) => 
    !(await userService.userExists(value)),
      "$name: The user name $value is already exists")  
  
  rules.add("email").isString().notEmpty().isEmail()
      
  rules.add("password").isString().notEmpty()  
  
  rules.add("confirmPassword").isString().notEmpty()
         .compareWithField("password", "equal", 
          "The password and the confirm password fields are not same")
})

async function validate(signUp: SignUp) {
  // For validate the whole data: await validator.validate(signUp) 
  await validator.validateField(signUp, "confirmPassword")
  console.log(stateModel.isValid) 
  console.log(stateModel.getItem("confirmPassword")) 
}

validate({
  name: "User name",
  email: "username@someexampleserver.com",
  password: "password",
  confirmPassword: "passw0rd"
})

Output:

false

{ 
  "valid": false, 
  "text": "The password and the confirm password fields are not same"
}

Custom validation extension

  1. use an import "object-validator-pattern/lib/extensions"
  2. How can I do custom validation extension

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published