UNPKG

validis

Version:

Validation made simple! 🚀 This package gives you all the tools you need to quickly and effortlessly validate emails, phone numbers, passwords, character limits, and more. Whether you’re checking for a positive number, enforcing a specific range, or custo

134 lines (126 loc) • 3.56 kB
import Schema from './Schema.js'; /** * Number Schema for number validations */ class NumberSchema extends Schema { constructor() { super(); // Add base number type validation this.validations.push({ code: 'number', fn: (value) => { return typeof value === 'number' && !isNaN(value) ? { valid: true } : { valid: false, reason: 'Value must be a number' }; } }); this.errorMessages.push('Value must be a number'); } /** * Validates minimum value * @param {number} min - Minimum value * @param {string} message - Custom error message * @returns {NumberSchema} - The schema instance for chaining */ min(min, message = `Number must be at least ${min}`) { this.validations.push({ code: 'number.min', fn: (value) => { return value >= min ? { valid: true } : { valid: false, reason: message }; } }); this.errorMessages.push(message); return this; } /** * Validates maximum value * @param {number} max - Maximum value * @param {string} message - Custom error message * @returns {NumberSchema} - The schema instance for chaining */ max(max, message = `Number must be at most ${max}`) { this.validations.push({ code: 'number.max', fn: (value) => { return value <= max ? { valid: true } : { valid: false, reason: message }; } }); this.errorMessages.push(message); return this; } /** * Validates number is positive * @param {string} message - Custom error message * @returns {NumberSchema} - The schema instance for chaining */ positive(message = 'Number must be positive') { this.validations.push({ code: 'number.positive', fn: (value) => { return value > 0 ? { valid: true } : { valid: false, reason: message }; } }); this.errorMessages.push(message); return this; } /** * Validates number is negative * @param {string} message - Custom error message * @returns {NumberSchema} - The schema instance for chaining */ negative(message = 'Number must be negative') { this.validations.push({ code: 'number.negative', fn: (value) => { return value < 0 ? { valid: true } : { valid: false, reason: message }; } }); this.errorMessages.push(message); return this; } /** * Validates number is an integer * @param {string} message - Custom error message * @returns {NumberSchema} - The schema instance for chaining */ integer(message = 'Number must be an integer') { this.validations.push({ code: 'number.integer', fn: (value) => { return Number.isInteger(value) ? { valid: true } : { valid: false, reason: message }; } }); this.errorMessages.push(message); return this; } /** * Validates number is within a range * @param {number} min - Minimum value * @param {number} max - Maximum value * @param {string} message - Custom error message * @returns {NumberSchema} - The schema instance for chaining */ range(min, max, message = `Number must be between ${min} and ${max}`) { this.validations.push({ code: 'number.range', fn: (value) => { return value >= min && value <= max ? { valid: true } : { valid: false, reason: message }; } }); this.errorMessages.push(message); return this; } } export default NumberSchema;