Executando verificação de segurança...
19

[PITCH] Uma biblioteca Typescript e Open-Source, "valid-email.ts".

Acabei de lançar no npm a valid-email.ts, uma biblioteca TypeScript para validação de e-mails completa e flexível.


🔍 O que ela resolve?

Muitos sistemas fazem apenas uma verificação simples com regex, mas isso não garante que o e-mail realmente exista ou seja confiável (o meu ta quase lá).

Estou adicionando novos validadores e em breve adicionarei mais alguns links de dominios de e-mails temporários para melhores validações.

O valid-email.ts vai além, trazendo validações reais e configuráveis:

  • ✅ Formato válido (RFC compliant)
  • ✅ Normalização (trim + lowercase)
  • ✅ Limites de tamanho (RFC: 64/255/254)
  • ✅ Verificação de TLDs (lista oficial IANA, atualizada online)
  • ✅ Bloqueio de domínios descartáveis
  • ✅ Checagem de DNS (MX records)
  • ✅ Deep Check SMTP (best effort)
  • ✅ i18n integrado (PT/EN) + mensagens customizáveis
  • ✅ Validação em lote (validateMany)

📦 Instalação

npm install valid-email.ts
yarn add valid-email.ts

🛠️ Exemplo de uso

import { validate } from "valid-email.ts";

const result = await validate("[email protected]", { lang: "pt" });

console.log(result);

Saída:

{
  "email": "[email protected]",
  "user": "test",
  "domain": "gmail.com",
  "status": "valid",
  "reasonCode": "VALID",
  "reason": "Email válido",
  "disposable": false
}

⚙️ Opções de validação

export interface ValidationOptions {
  checkDNS?: boolean; // padrão: true - valida MX records
  deepCheckSMTP?: boolean; // padrão: false - conecta via SMTP (lento e opcional)
  allowDisposable?: boolean; // padrão: false - bloqueia descartáveis
  checkTLD?: boolean; // padrão: true - valida TLDs oficiais IANA
  lang?: "en" | "pt"; // padrão: "en" - seleciona idioma
  customMessages?: ValidationMessages; // sobrescreve mensagens padrão
}

Exemplo:

await validate("[email protected]", { allowDisposable: true });
// retorna como válido, mesmo sendo descartável

📦 Validação em lote

import { validateMany } from "valid-email.ts";

const emails = ["[email protected]", "[email protected]", "c@invalid"];
const results = await validateMany(emails);

console.log(results);

Se achou útil, deixa uma ⭐ no GitHub e compartilha com a comunidade!

Carregando publicação patrocinada...