Validis
Comprehensive Validation Library
A powerful JavaScript validation library with a user-friendly, chainable API for complex validations.
npm install validis
Powerful Features
Everything you need for form validation
Validis provides a comprehensive set of validation tools while maintaining simplicity and performance.
- Schema-based API
Powerful chainable API for complex validations with intuitive syntax.
- Class-based Validation
User-friendly class implementations with chainable methods for all validation types.
- Legacy Function API
Simple function-based validations for quick implementation.
- Comprehensive
Extensive validation options for strings, numbers, objects, arrays, and more.
- Customizable
Highly customizable validation rules to fit your specific needs.
- Cross Platform
Works seamlessly in both Browser and Node.js environments.
Powerful Schema-based Validation
Validis provides two modern APIs for complex validation scenarios, giving you flexibility and power.
1const { Schema } = require('validis');
2
3// String validation
4const stringSchema = Schema.string().min(3).max(10).email();
5const result = stringSchema.parse('test@example.com');
6
7// Number validation
8const numberSchema = Schema.number().min(5).max(100).positive();
9const numResult = numberSchema.parse(42);
10
11// Boolean validation
12const boolSchema = Schema.boolean();
13const boolResult = boolSchema.parse(true);
14
15// Object validation
16const userSchema = Schema.object({
17 username: Schema.string().min(3).max(20),
18 email: Schema.string().email(),
19 age: Schema.number().min(18).optional()
20});
21const userResult = userSchema.parse({
22 username: 'johndoe',
23 email: 'john@example.com',
24 age: 25
25});
26
27// Array validation
28const arraySchema = Schema.array(Schema.string()).min(1).max(5);
29const arrayResult = arraySchema.parse(['apple', 'banana', 'cherry']);
Available Validations
Explore the comprehensive set of validation methods available in Validis for all your validation needs.
min(length)
Minimum string length
max(length)
Maximum string length
length(length)
Exact string length
email()
Email format validation
url()
URL format validation
pattern(regex)
Custom regex pattern validation
noWhitespace()
No whitespace validation
nonEmpty()
Non-empty string validation
Comprehensive Validation Library
Explore Validis's extensive validation functions with detailed examples, use cases, and return values. Our library supports Schema-based API, Legacy Function API, and Validation Schema Classes for all your validation needs.
Validates email format using regex pattern matching
Usage
1const { email } = require('validis');
2const result = email('test@example.com');
3// Returns: { valid: true } or { valid: false, reason: "Invalid email format." }
Valid Examples
Invalid Examples
phone
Validates phone numbers with optional '+' prefix (10-15 digits)
Usage
1const { phone } = require('validis');
2const result = phone('+1234567890');
3// Returns: { valid: true } or { valid: false, reason: "Invalid phone number format." }
Valid Examples
Invalid Examples
char
Checks if the input string length does not exceed the given limit
Usage
1const { char } = require('validis');
2const result = char('hello', 10);
3// Returns: { valid: true } or { valid: false, reason: "Input exceeds character limit." }
Valid Examples
Invalid Examples
Real-World Examples
See Validis in Action
Try out these interactive examples to see how Validis handles real-world validation scenarios.
Validis in Your Projects
Integrate Validis seamlessly into your frontend applications with these framework-specific examples. See how to implement form validation with our intuitive API across popular frameworks.
1import React, { useState } from "react";
2import { Schema } from "validis";
3
4const SignupForm = () => {
5 const [formData, setFormData] = useState({ email: "", password: "", username: "" });
6 const [errors, setErrors] = useState({});
7
8 // Define validation schemas
9 const userSchema = {
10 email: Schema.string().email(),
11 password: Schema.string().min(8).pass(),
12 username: Schema.string().min(3).max(20).noWhitespace()
13 };
14
15 const handleChange = ({ target: { name, value } }) =>
16 setFormData({ ...formData, [name]: value });
17
18 const handleSubmit = (e) => {
19 e.preventDefault();
20 const newErrors = {};
21
22 // Validate each field using Schema API
23 Object.entries(userSchema).forEach(([field, schema]) => {
24 const result = schema.parse(formData[field]);
25 if (!result.success) {
26 newErrors[field] = result.errors.map(err => err.message).join(", ");
27 }
28 });
29
30 setErrors(newErrors);
31
32 if (Object.keys(newErrors).length === 0) {
33 console.log("Form submitted:", formData);
34 // Submit form data to server
35 }
36 };
37
38 return (
39 <form onSubmit={handleSubmit} className="space-y-4 p-6 bg-white dark:bg-gray-800 rounded-lg shadow">
40 {["email", "password", "username"].map((field) => (
41 <div key={field} className="space-y-2">
42 <label className="block text-sm font-medium">
43 {field.charAt(0).toUpperCase() + field.slice(1)}:
44 </label>
45 <input
46 type={field === "password" ? "password" : "text"}
47 name={field}
48 value={formData[field]}
49 onChange={handleChange}
50 className="w-full px-3 py-2 border rounded-md"
51 />
52 {errors[field] && (
53 <p className="text-red-500 text-sm">{errors[field]}</p>
54 )}
55 </div>
56 ))}
57 <button
58 type="submit"
59 className="w-full py-2 px-4 bg-blue-600 text-white rounded-md hover:bg-blue-700"
60 >
61 Sign Up
62 </button>
63 </form>
64 );
65};
66
67export default SignupForm;
68