Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

volder is powerful Object schema validation lets you describe your data using a simple and readable schema and transform a value to match the requirements

License

Notifications You must be signed in to change notification settings

devSupporters/volder

Repository files navigation

Codecov Coverage Package Size Downloads Version License Gitter CI GitHub followers

"Buy Me A Coffee" DevSupporters discord server volder - schema builder and data validation for javascript | Product Hunt

volder is powerful Object schema validation, it lets you describe your data using a simple and readable schema and transform a value to match the requirements, it has custom error messages, custom types and nested schemas.

Installation

$ npm install --save volder
$ yarn add volder

visit volder.vercel.app for API, documentation, and contributing.

Table of Contents

Usage

You define and create volder schema object. Schema objects are immutable, so each validate call returns a new schema object.

import { Volder } from 'volder';

const personSchema = new Volder({
  name:{ type: String, required: true, maxLength: 10, trim: true },
  age: { type: Number, min: 18, sign: 'positive' }
})

const { valid, errors, value } = personSchema.validate({name: "max  ", age: 19});
// { valid: true, errors: {}, value: {name: "max", age: 19}}

Example

let's took one example using volder for login validation.

import { Volder, Email } from "volder";

// initialize using Volder constructor.
const userSchema = new Volder({
  username: {
    type: String,
    maxLength: 10,
    // use Custom Error Message feature.
    minLength: [4, "username should be at least 4 characters"],
    default: "guest user",
  },
  email: {
    // Email type imported for volder package, there are other types like UUID.
    type: [Email, "is not valid email"],
    trim: true,
    required: true,
  },
  // you can just Enter the type.
  birth_day: Date,
  password: {
    type: String,
    matches: /^[a-zA-Z0-9]{3,30}$/,
    // pattern config run and return true if value valid otherwise false.
    pattern: [(input) => input.includes("_"), "underscore not included"],
  },
});

const validInput = {
  user: "max123",
  email: "   test@gmail.test    ",
  birth_day: "1/2/2010",
  password: "new_Password123",
};

const { valid, errors, value } = userSchema.validate(validInput);
// { valid: true, errors: {}, value: {...validInput, email:"test@gmail.test"}}

const invalidInput = {
  user: "1",
  email: "test@gmail",
  birth_day: "2010",
  password: "newPassword123",
};

const { valid, errors, value } = userSchema.validate(invalidInput);
// {
//  valid: false,
//  errors: {
//     user: "username should be at least 4 characters"
//     email: "is not valid email",
//     password: "underscore not included",
//     birth_day: "birth_day is not valid date, date should be in 'mm/dd/yyyy' format"
// },
//  value: {}
//}

more example:

Contributing

I appreciate to contributing in this repository.(go throw the guild lines)

📝 License

Copyright © 2021 salah alhashmi.
This project is GPL-3.0 licensed.