@azul-marino000080/rw-validators
v1.1.0
Published
Librería de validación de formatos para aplicaciones web (DNI, teléfono, email, CIF...)
Maintainers
Readme
RW Validators
Biblioteca de validación compacta para formatos españoles y comunes. Incluye validación lógica estructural avanzada y detalles informativos.
📦 Instalación
npm install @azul-marino000080/rw-validators🚀 Uso Básico
const { isValidDNI, validateEmail, validateMultiple } = require('@azul-marino000080/rw-validators');
// Validación simple (boolean)
console.log(isValidDNI('12345678Z')); // true
// Validación detallada
const emailResult = validateEmail('[email protected]');
console.log(emailResult.isValid); // true
console.log(emailResult.error); // null
// Validación múltiple
const results = validateMultiple({
email: { value: '[email protected]', validator: validateEmail },
dni: { value: '12345678Z', validator: validateDNI }
});📋 Validadores Disponibles
📄 Documentos Españoles
isValidDNI(dni)/validateDNI(dni)- DNI con validación de letra de controlisValidNIE(nie)/validateNIE(nie)- NIE con validación de letra de controlisValidCIF(cif)/validateCIF(cif)- CIF con validación de dígito de control
📧 Formatos Comunes
isValidEmail(email)/validateEmail(email)- Email RFC compliantisValidPhoneES(phone)/validatePhoneES(phone)- Teléfonos móviles españolesisValidPostalCodeES(code)/validatePostalCodeES(code)- Códigos postales españolesisValidURL(url)/validateURL(url)- URLs HTTP/HTTPSisValidIBAN(iban)/validateIBAN(iban)- IBAN con validación de módulo 97isValidCreditCard(card)/validateCreditCard(card)- Tarjetas con algoritmo de Luhn
⚡ Características Avanzadas
🔍 Validación Lógica Estructural
- DNI/NIE: Verifica que la letra corresponda matemáticamente al número
- CIF: Valida dígito de control según tipo de organización
- IBAN: Implementa algoritmo módulo 97 y reconoce entidades bancarias españolas
- Tarjetas: Aplica algoritmo de Luhn para validación
📊 Información Detallada
Los validadores validate* retornan objetos con:
isValid: booleanvalue: valor limpioerror: mensaje de error específicodetails: información adicional (tipo de documento, operador, banco, etc.)
const result = validateCIF('A12345674');
console.log(result);
// {
// isValid: true,
// value: 'A12345674',
// error: null,
// details: {
// type: 'CIF',
// document: 'Código de Identificación Fiscal',
// orgType: 'Sociedad Anónima'
// }
// }
const phoneResult = validatePhoneES('600123456');
console.log(phoneResult.details.operator); // 'Movistar/Orange'
const ibanResult = validateIBAN('ES2100491500051234567892');
console.log(ibanResult.details.bank); // 'CaixaBank'🛠️ Utilidades Avanzadas
// Validación múltiple con mensajes personalizados
const results = validateMultiple({
userEmail: {
value: 'invalid-email',
validator: validateEmail,
customMessage: 'Email de usuario requerido'
},
userDNI: {
value: '12345678Z',
validator: validateDNI
}
});
console.log(results.isAllValid); // false
console.log(results.results.userEmail.error); // 'Email de usuario requerido'
// Validación segura con manejo de errores
const safeResult = safeValidate(validateDNI, possiblyNullValue);
// Acceso a patrones RegExp para uso personalizado
const { VALIDATION_PATTERNS } = require('@azul-marino000080/rw-validators');
console.log(VALIDATION_PATTERNS.EMAIL); // /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/📝 Formatos Soportados
📄 Documentos
- DNI: 8 dígitos + letra (ej:
12345678Z) - NIE: X/Y/Z + 7 dígitos + letra (ej:
X1234567L) - CIF: Letra + 7 dígitos + dígito/letra control (ej:
A12345674)
📞 Contacto
- Email: RFC compliant
- Teléfono: Móviles españoles (+34 opcional, prefijos 6/7/8/9)
- Código Postal: Españoles (5 dígitos, rango 01000-52999)
💰 Financiero
- IBAN: Formato europeo con validación módulo 97
- Tarjeta: Visa, Mastercard, American Express, Discover (algoritmo Luhn)
🏪 Entidades Reconocidas
🏦 Bancos IBAN
- CaixaBank (2100)
- Banco Santander (0049)
- BBVA (0182)
- Banco Sabadell (0081)
- ING Bank (1465)
- Bankinter (0128)
- Y más...
📱 Operadores Móviles
- Prefijo 6: Movistar/Orange
- Prefijo 7: Movistar/Vodafone
- Prefijo 8: Yoigo/Pepephone
- Prefijo 9: Orange/Vodafone
🏢 Tipos de Organización CIF
- A: Sociedad Anónima
- B: Sociedad de Responsabilidad Limitada
- G: Asociación
- Q: Organismo Autónomo
- Y más tipos organizacionales...
🧪 Ejemplo Completo
const validators = require('@azul-marino000080/rw-validators');
// Validar un formulario completo
const formData = {
email: '[email protected]',
dni: '12345678Z',
phone: '600123456',
company: 'A12345674',
iban: 'ES2100491500051234567892'
};
const validation = validators.validateMultiple({
email: { value: formData.email, validator: validators.validateEmail },
dni: { value: formData.dni, validator: validators.validateDNI },
phone: { value: formData.phone, validator: validators.validatePhoneES },
company: { value: formData.company, validator: validators.validateCIF },
iban: { value: formData.iban, validator: validators.validateIBAN }
});
if (validation.isAllValid) {
console.log('✅ Todos los datos son válidos');
// Mostrar información adicional
const phoneDetails = validation.results.phone.details;
const companyDetails = validation.results.company.details;
const bankDetails = validation.results.iban.details;
console.log(`📱 Operador: ${phoneDetails.operator}`);
console.log(`🏢 Tipo empresa: ${companyDetails.orgType}`);
console.log(`🏦 Banco: ${bankDetails.bank}`);
} else {
console.log('❌ Errores encontrados:');
Object.entries(validation.results).forEach(([field, result]) => {
if (!result.isValid) {
console.log(` ${field}: ${result.error}`);
}
});
}📜 Licencia
MIT License - Copyright (c) 2024
Versión: 1.1.0
Autor: @azul-marino000080
Repositorio: GitHub
