{"_id":"@azul-marino000080/rw-validators","_rev":"2-c6acd0c7a0294c19d90cec1fb41144b9","name":"@azul-marino000080/rw-validators","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@azul-marino000080/rw-validators","version":"1.0.0","keywords":["validation","validators","dni","nif","cif","email","phone","spanish","rw"],"author":{"name":"Juanvi"},"license":"MIT","_id":"@azul-marino000080/rw-validators@1.0.0","maintainers":[{"name":"azul-marino000080","email":"jvfaubel@proton.me"}],"homepage":"https://github.com/Azul-Marino000080/rw-validators#readme","bugs":{"url":"https://github.com/Azul-Marino000080/rw-validators/issues"},"dist":{"shasum":"31ccbff9268f4076bcdb361d102ece7aed4fd77b","tarball":"https://registry.npmjs.org/@azul-marino000080/rw-validators/-/rw-validators-1.0.0.tgz","fileCount":3,"integrity":"sha512-BsWwmWbRZRJfnbudPQWQjnqZgTe3CLhyh970wipnGvuG/z0OO/AJbZukZ7UiOoXfuuRxPgCAWyIG+Iq+88MBRA==","signatures":[{"sig":"MEUCIC+khT1S8FYtqrwbFRkizavB7E3xxCmU32ysPDIZIOMmAiEA5kpNy6eDf01Wk+z82Q3QiSH3AQ1vL8WTEUoWClH/NuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12828},"main":"dist/index.js","gitHead":"155e8702bea68231caa659c7d09b28f92d0ce1e4","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"node scripts/build.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"azul-marino000080","actor":{"name":"azul-marino000080","type":"user","email":"jvfaubel@proton.me"},"email":"jvfaubel@proton.me"},"repository":{"url":"git+https://github.com/Azul-Marino000080/rw-validators.git","type":"git"},"_npmVersion":"10.9.2","description":"Librería de validación de formatos para aplicaciones web (DNI, teléfono, email, CIF...)","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/rw-validators_1.0.0_1751006807829_0.24448853070916154","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@azul-marino000080/rw-validators","version":"1.1.0","description":"Librería de validación de formatos para aplicaciones web (DNI, teléfono, email, CIF...)","main":"dist/index.js","scripts":{"build":"node scripts/build.js","test":"echo \"Error: no test specified\" && exit 1","prepublishOnly":"npm run build"},"keywords":["validation","validators","dni","nif","cif","email","phone","spanish","rw"],"author":{"name":"Juanvi"},"license":"MIT","devDependencies":{},"repository":{"type":"git","url":"git+https://github.com/Azul-Marino000080/rw-validators.git"},"bugs":{"url":"https://github.com/Azul-Marino000080/rw-validators/issues"},"homepage":"https://github.com/Azul-Marino000080/rw-validators#readme","publishConfig":{"access":"public"},"_id":"@azul-marino000080/rw-validators@1.1.0","gitHead":"ed3b52445b1bf161a27556d957d55fbc1c01bc9e","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-BOSS3wpazTHdv9HCaqfiWMuBi+uPvH7VgjlezTCMTLfOudilpjnjs71CNGsvl1yacxtPr8RRn1jW1nteX4svFw==","shasum":"51b6417835cac829f89b46ad61f7b0873d86d1d6","tarball":"https://registry.npmjs.org/@azul-marino000080/rw-validators/-/rw-validators-1.1.0.tgz","fileCount":3,"unpackedSize":17036,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGTzg108icEn3atgDIucvH1k0KaSc26w3cxbakddTuurAiEArjOu2o0LdpQFTaIuQZl4qvz6dpxKsl8ZNDH07Wso0R8="}]},"_npmUser":{"name":"azul-marino000080","email":"jvfaubel@proton.me","actor":{"name":"azul-marino000080","email":"jvfaubel@proton.me","type":"user"}},"directories":{},"maintainers":[{"name":"azul-marino000080","email":"jvfaubel@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rw-validators_1.1.0_1751008092450_0.2247345924868196"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-27T06:46:47.740Z","modified":"2025-06-27T07:08:12.877Z","1.0.0":"2025-06-27T06:46:48.033Z","1.1.0":"2025-06-27T07:08:12.688Z"},"bugs":{"url":"https://github.com/Azul-Marino000080/rw-validators/issues"},"author":{"name":"Juanvi"},"license":"MIT","homepage":"https://github.com/Azul-Marino000080/rw-validators#readme","keywords":["validation","validators","dni","nif","cif","email","phone","spanish","rw"],"repository":{"type":"git","url":"git+https://github.com/Azul-Marino000080/rw-validators.git"},"description":"Librería de validación de formatos para aplicaciones web (DNI, teléfono, email, CIF...)","maintainers":[{"name":"azul-marino000080","email":"jvfaubel@proton.me"}],"readme":"# RW Validators\r\n\r\nBiblioteca de validación compacta para formatos españoles y comunes. Incluye validación lógica estructural avanzada y detalles informativos.\r\n\r\n## 📦 Instalación\r\n\r\n```bash\r\nnpm install @azul-marino000080/rw-validators\r\n```\r\n\r\n## 🚀 Uso Básico\r\n\r\n```javascript\r\nconst { isValidDNI, validateEmail, validateMultiple } = require('@azul-marino000080/rw-validators');\r\n\r\n// Validación simple (boolean)\r\nconsole.log(isValidDNI('12345678Z')); // true\r\n\r\n// Validación detallada\r\nconst emailResult = validateEmail('test@example.com');\r\nconsole.log(emailResult.isValid); // true\r\nconsole.log(emailResult.error);   // null\r\n\r\n// Validación múltiple\r\nconst results = validateMultiple({\r\n  email: { value: 'user@domain.com', validator: validateEmail },\r\n  dni: { value: '12345678Z', validator: validateDNI }\r\n});\r\n```\r\n\r\n## 📋 Validadores Disponibles\r\n\r\n### 📄 Documentos Españoles\r\n- `isValidDNI(dni)` / `validateDNI(dni)` - DNI con validación de letra de control\r\n- `isValidNIE(nie)` / `validateNIE(nie)` - NIE con validación de letra de control  \r\n- `isValidCIF(cif)` / `validateCIF(cif)` - CIF con validación de dígito de control\r\n\r\n### 📧 Formatos Comunes\r\n- `isValidEmail(email)` / `validateEmail(email)` - Email RFC compliant\r\n- `isValidPhoneES(phone)` / `validatePhoneES(phone)` - Teléfonos móviles españoles\r\n- `isValidPostalCodeES(code)` / `validatePostalCodeES(code)` - Códigos postales españoles\r\n- `isValidURL(url)` / `validateURL(url)` - URLs HTTP/HTTPS\r\n- `isValidIBAN(iban)` / `validateIBAN(iban)` - IBAN con validación de módulo 97\r\n- `isValidCreditCard(card)` / `validateCreditCard(card)` - Tarjetas con algoritmo de Luhn\r\n\r\n## ⚡ Características Avanzadas\r\n\r\n### 🔍 Validación Lógica Estructural\r\n- **DNI/NIE**: Verifica que la letra corresponda matemáticamente al número\r\n- **CIF**: Valida dígito de control según tipo de organización\r\n- **IBAN**: Implementa algoritmo módulo 97 y reconoce entidades bancarias españolas\r\n- **Tarjetas**: Aplica algoritmo de Luhn para validación\r\n\r\n### 📊 Información Detallada\r\nLos validadores `validate*` retornan objetos con:\r\n- `isValid`: boolean\r\n- `value`: valor limpio\r\n- `error`: mensaje de error específico\r\n- `details`: información adicional (tipo de documento, operador, banco, etc.)\r\n\r\n```javascript\r\nconst result = validateCIF('A12345674');\r\nconsole.log(result);\r\n// { \r\n//   isValid: true, \r\n//   value: 'A12345674', \r\n//   error: null, \r\n//   details: { \r\n//     type: 'CIF', \r\n//     document: 'Código de Identificación Fiscal', \r\n//     orgType: 'Sociedad Anónima' \r\n//   }\r\n// }\r\n\r\nconst phoneResult = validatePhoneES('600123456');\r\nconsole.log(phoneResult.details.operator); // 'Movistar/Orange'\r\n\r\nconst ibanResult = validateIBAN('ES2100491500051234567892');\r\nconsole.log(ibanResult.details.bank); // 'CaixaBank'\r\n```\r\n\r\n### 🛠️ Utilidades Avanzadas\r\n\r\n```javascript\r\n// Validación múltiple con mensajes personalizados\r\nconst results = validateMultiple({\r\n  userEmail: { \r\n    value: 'invalid-email', \r\n    validator: validateEmail, \r\n    customMessage: 'Email de usuario requerido' \r\n  },\r\n  userDNI: {\r\n    value: '12345678Z',\r\n    validator: validateDNI\r\n  }\r\n});\r\n\r\nconsole.log(results.isAllValid); // false\r\nconsole.log(results.results.userEmail.error); // 'Email de usuario requerido'\r\n\r\n// Validación segura con manejo de errores\r\nconst safeResult = safeValidate(validateDNI, possiblyNullValue);\r\n\r\n// Acceso a patrones RegExp para uso personalizado\r\nconst { VALIDATION_PATTERNS } = require('@azul-marino000080/rw-validators');\r\nconsole.log(VALIDATION_PATTERNS.EMAIL); // /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n```\r\n\r\n## 📝 Formatos Soportados\r\n\r\n### 📄 Documentos\r\n- **DNI**: 8 dígitos + letra (ej: `12345678Z`)\r\n- **NIE**: X/Y/Z + 7 dígitos + letra (ej: `X1234567L`)  \r\n- **CIF**: Letra + 7 dígitos + dígito/letra control (ej: `A12345674`)\r\n\r\n### 📞 Contacto\r\n- **Email**: RFC compliant\r\n- **Teléfono**: Móviles españoles (+34 opcional, prefijos 6/7/8/9)\r\n- **Código Postal**: Españoles (5 dígitos, rango 01000-52999)\r\n\r\n### 💰 Financiero\r\n- **IBAN**: Formato europeo con validación módulo 97\r\n- **Tarjeta**: Visa, Mastercard, American Express, Discover (algoritmo Luhn)\r\n\r\n## 🏪 Entidades Reconocidas\r\n\r\n### 🏦 Bancos IBAN\r\n- CaixaBank (2100)\r\n- Banco Santander (0049)\r\n- BBVA (0182)\r\n- Banco Sabadell (0081)\r\n- ING Bank (1465)\r\n- Bankinter (0128)\r\n- Y más...\r\n\r\n### 📱 Operadores Móviles\r\n- Prefijo 6: Movistar/Orange\r\n- Prefijo 7: Movistar/Vodafone\r\n- Prefijo 8: Yoigo/Pepephone\r\n- Prefijo 9: Orange/Vodafone\r\n\r\n### 🏢 Tipos de Organización CIF\r\n- A: Sociedad Anónima\r\n- B: Sociedad de Responsabilidad Limitada\r\n- G: Asociación\r\n- Q: Organismo Autónomo\r\n- Y más tipos organizacionales...\r\n\r\n## 🧪 Ejemplo Completo\r\n\r\n```javascript\r\nconst validators = require('@azul-marino000080/rw-validators');\r\n\r\n// Validar un formulario completo\r\nconst formData = {\r\n  email: 'usuario@empresa.com',\r\n  dni: '12345678Z',\r\n  phone: '600123456',\r\n  company: 'A12345674',\r\n  iban: 'ES2100491500051234567892'\r\n};\r\n\r\nconst validation = validators.validateMultiple({\r\n  email: { value: formData.email, validator: validators.validateEmail },\r\n  dni: { value: formData.dni, validator: validators.validateDNI },\r\n  phone: { value: formData.phone, validator: validators.validatePhoneES },\r\n  company: { value: formData.company, validator: validators.validateCIF },\r\n  iban: { value: formData.iban, validator: validators.validateIBAN }\r\n});\r\n\r\nif (validation.isAllValid) {\r\n  console.log('✅ Todos los datos son válidos');\r\n  \r\n  // Mostrar información adicional\r\n  const phoneDetails = validation.results.phone.details;\r\n  const companyDetails = validation.results.company.details;\r\n  const bankDetails = validation.results.iban.details;\r\n  \r\n  console.log(`📱 Operador: ${phoneDetails.operator}`);\r\n  console.log(`🏢 Tipo empresa: ${companyDetails.orgType}`);\r\n  console.log(`🏦 Banco: ${bankDetails.bank}`);\r\n} else {\r\n  console.log('❌ Errores encontrados:');\r\n  Object.entries(validation.results).forEach(([field, result]) => {\r\n    if (!result.isValid) {\r\n      console.log(`  ${field}: ${result.error}`);\r\n    }\r\n  });\r\n}\r\n```\r\n\r\n## 📜 Licencia\r\n\r\nMIT License - Copyright (c) 2024\r\n\r\n---\r\n\r\n**Versión**: 1.1.0  \r\n**Autor**: @azul-marino000080  \r\n**Repositorio**: [GitHub](https://github.com/azul-marino000080/rw-validators)\r\n","readmeFilename":"README.md"}