UNPKG

n8n-nodes-br-data-utils

Version:

Valida e higieniza dados brasileiros (CPF, CNPJ, telefone, CEP e mais) em workflows do n8n.

61 lines (60 loc) 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateCep = validateCep; exports.formatCep = formatCep; /** * Remove apenas os caracteres de formatação esperados para CEP (hífen) * e valida se o formato básico está correto */ function sanitizeCep(value) { // Remove espaços no início e fim const trimmed = value.trim(); // Aceita apenas números e hífen if (!/^[\d-]+$/.test(trimmed)) { return { cleaned: '', isValidFormat: false }; } // Remove apenas hífen const cleaned = trimmed.replace(/-/g, ''); // Verifica se restaram apenas números if (!/^\d+$/.test(cleaned)) { return { cleaned: '', isValidFormat: false }; } return { cleaned, isValidFormat: true }; } /** * Valida um CEP brasileiro */ function validateCep(cep, options = {}) { try { const { cleaned: cleanCep, isValidFormat } = sanitizeCep(cep); if (!isValidFormat) { return { isValid: false, error: 'CEP contém caracteres inválidos' }; } // CEP deve ter exatamente 8 dígitos if (cleanCep.length !== 8) { return { isValid: false, error: 'CEP deve ter 8 dígitos' }; } // Verifica se não são todos zeros if (cleanCep === '00000000') { return { isValid: false, error: 'CEP não pode ser 00000-000' }; } return { isValid: true, unmasked: cleanCep, masked: formatCep(cleanCep), }; } catch (error) { return { isValid: false, error: 'Erro ao validar CEP' }; } } /** * Formata um CEP no padrão XXXXX-XXX */ function formatCep(cep) { const { cleaned: cleanCep, isValidFormat } = sanitizeCep(cep); if (!isValidFormat || cleanCep.length !== 8) { return cep; } return cleanCep.replace(/^(\d{5})(\d{3})$/, '$1-$2'); }