validify

validify is a Validation Class that helps you to validate your incoming data

Examples

Initialize

import Validation, {ErrorMessages, Fields, Rules} from "https://deno.land/x/validify@v0.0.2/mod.ts";

const validation = new Validation()

Custom error messages

const customErrorMessages: ErrorMessages = JSON.parse(Deno.readTextFileSync("./en.json"))
/*
{
  "required": "The {field} field is required.",
  "email": "The {field} field must contain a valid email address.",
  "url": "The {field} field must contain a valid URL.",
  "ip": "The {field} field must contain a valid IP.",
  "min": "The {field} field must be at least {param} in length.",
  "max": "The {field} field cannot exceed {param} in length.",
  "size": "The {field} field must be exactly {param} in length.",
  "in": "The {field} field must be one of: {param}.",
  "string": "The {field} must be a text.",
  "number": "The {field} field must be an number.",
  "array": "The {field} field must be an array."
}
*/
const validation = new Validation(customErrorMessages)

If you don't pass custom error messages object the errors will look like this by default:

There is an error in field: {field}**

validate, single, getErrors

// Data to validate
const input = {
    name: 'Doğukan Akkaya',
    email: 'info@codethereal.com',
    url: 'codethereal.com',
    address: [
        {
            name: 'Address line 1',
            location: 'Turkey, Istanbul'
        },
        {
            name: 'Address line 2',
            location: 'Turkey, Istanbul'
        }
    ],
    detail: {
        job: 'Software Developer',
        salary: 10.000,
        currency: 'USD'
    },
    status: 1,
    numbers: [1,2,3,4,5,6]
}

// Rules to apply
const rules: Rules = {
    name: 'string|required|max:25|min:5',
    email: 'string|required|email',
    url: 'string|required|url',
    address: {
        name: 'string|required',
        location: 'string|required'
    },
    detail: {
        job: 'string',
        salary: 'number',
        currency: 'string|in:USD,EUR,TRY'
    },
    status: 'number|required|in:0,1',
    numbers: 'required|array|max:5'
}

// Errored fields name to show prettier messages to user
const fields: Fields = {
    name: 'Name',
    email: 'Email',
    address: {
        name: 'Address Name',
        location: 'Address Location'
    },
    detail: {
        job: 'Job',
        salary: 'Salary',
        currency: 'Currency'
    },
}

// Run `validate` with arguments and chain more data if you want with `single` function and then get the errors at last with `getErrors`
const errors = validation
    .validate(input, rules, fields)
    .single('name surname', 'min:5|required', 'The Name')
    .getErrors()

// Check for any errors
if (errors.length > 0) {
    console.log(errors)
    /*
    [
      "The url field must contain a valid URL.",
      "The numbers field cannot exceed 5 in length.",
      "The test field must be at least 5 in length."
    ]
     */
} else {
    console.log('There is no error')
}