UNPKG

dev-utils-plus

Version:

Type-safe utility functions for JavaScript/TypeScript: string, array, object, date, validation, crypto, format, math

176 lines 4.82 kB
"use strict"; /** * Validation utility functions for common validation tasks */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidEmail = isValidEmail; exports.isValidUrl = isValidUrl; exports.isValidPhoneNumber = isValidPhoneNumber; exports.isValidCreditCard = isValidCreditCard; exports.isValidPassword = isValidPassword; exports.isValidIPv4 = isValidIPv4; exports.isValidIPv6 = isValidIPv6; exports.isValidPostalCode = isValidPostalCode; exports.isValidSSN = isValidSSN; exports.isValidDate = isValidDate; exports.isValidTime = isValidTime; exports.isValidHexColor = isValidHexColor; exports.isValidJSON = isValidJSON; exports.isValidUUID = isValidUUID; exports.validateSchema = validateSchema; /** * Checks if a value is a valid email address */ function isValidEmail(email) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } /** * Checks if a value is a valid URL */ function isValidUrl(url) { try { new URL(url); return true; } catch { return false; } } /** * Checks if a value is a valid phone number (basic validation) */ function isValidPhoneNumber(phone) { const phoneRegex = /^[\+]?[1-9][\d]{0,15}$/; return phoneRegex.test(phone.replace(/[\s\-\(\)]/g, '')); } /** * Checks if a value is a valid credit card number (Luhn algorithm) */ function isValidCreditCard(cardNumber) { const cleanNumber = cardNumber.replace(/\s/g, ''); if (!/^\d{13,19}$/.test(cleanNumber)) return false; let sum = 0; let isEven = false; for (let i = cleanNumber.length - 1; i >= 0; i--) { let digit = parseInt(cleanNumber.charAt(i)); if (isEven) { digit *= 2; if (digit > 9) { digit -= 9; } } sum += digit; isEven = !isEven; } return sum % 10 === 0; } /** * Checks if a value is a valid password (minimum requirements) */ function isValidPassword(password, options = {}) { const { minLength = 8, requireUppercase = true, requireLowercase = true, requireNumbers = true, requireSpecialChars = false } = options; if (password.length < minLength) return false; if (requireUppercase && !/[A-Z]/.test(password)) return false; if (requireLowercase && !/[a-z]/.test(password)) return false; if (requireNumbers && !/\d/.test(password)) return false; if (requireSpecialChars && !/[!@#$%^&*(),.?":{}|<>]/.test(password)) return false; return true; } /** * Checks if a value is a valid IPv4 address */ function isValidIPv4(ip) { const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/; if (!ipv4Regex.test(ip)) return false; const parts = ip.split('.'); return parts.every(part => { const num = parseInt(part); return num >= 0 && num <= 255; }); } /** * Checks if a value is a valid IPv6 address */ function isValidIPv6(ip) { const ipv6Regex = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/; return ipv6Regex.test(ip); } /** * Checks if a value is a valid postal code (US format) */ function isValidPostalCode(postalCode) { const postalRegex = /^\d{5}(-\d{4})?$/; return postalRegex.test(postalCode); } /** * Checks if a value is a valid social security number (US format) */ function isValidSSN(ssn) { const ssnRegex = /^\d{3}-\d{2}-\d{4}$/; return ssnRegex.test(ssn); } /** * Checks if a value is a valid date string */ function isValidDate(dateString) { const date = new Date(dateString); return !isNaN(date.getTime()); } /** * Checks if a value is a valid time string (HH:MM format) */ function isValidTime(timeString) { const timeRegex = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/; return timeRegex.test(timeString); } /** * Checks if a value is a valid hexadecimal color code */ function isValidHexColor(color) { const hexRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; return hexRegex.test(color); } /** * Checks if a value is a valid JSON string */ function isValidJSON(jsonString) { try { JSON.parse(jsonString); return true; } catch { return false; } } /** * Checks if a value is a valid UUID */ function isValidUUID(uuid) { const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; return uuidRegex.test(uuid); } /** * Validates an object against a schema */ function validateSchema(obj, schema) { const errors = []; for (const [key, validator] of Object.entries(schema)) { const validatorFn = validator; if (!validatorFn(obj[key])) { errors.push(`Invalid value for ${key}`); } } return { isValid: errors.length === 0, errors }; } //# sourceMappingURL=index.js.map