<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Claudio Medeiros</title>
    <description>The latest articles on DEV Community by Claudio Medeiros (@klawdyo).</description>
    <link>https://dev.to/klawdyo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F677325%2F5faa47e2-32a3-4545-9d24-cb445fc0795a.jpeg</url>
      <title>DEV Community: Claudio Medeiros</title>
      <link>https://dev.to/klawdyo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/klawdyo"/>
    <language>en</language>
    <item>
      <title>#typescript</title>
      <dc:creator>Claudio Medeiros</dc:creator>
      <pubDate>Wed, 16 Sep 2026 16:53:40 +0000</pubDate>
      <link>https://dev.to/klawdyo/typescript-5d0e</link>
      <guid>https://dev.to/klawdyo/typescript-5d0e</guid>
      <description></description>
    </item>
    <item>
      <title>validation-br 2.0: Validação em TypeScript, zero dependências</title>
      <dc:creator>Claudio Medeiros</dc:creator>
      <pubDate>Mon, 14 Sep 2026 18:29:04 +0000</pubDate>
      <link>https://dev.to/klawdyo/validation-br-20-validacao-em-typescript-zero-dependencias-h0p</link>
      <guid>https://dev.to/klawdyo/validation-br-20-validacao-em-typescript-zero-dependencias-h0p</guid>
      <description>&lt;p&gt;Acabei de lançar a versão 2.0 do &lt;a href="https://validation-br.js.org" rel="noopener noreferrer"&gt;validation-br&lt;/a&gt;, uma biblioteca em TypeScript para validar documentos brasileiros: CPF, CNPJ (numérico e alfanumérico), CEP, Boleto, chave Pix, Pix Copia e Cola, Título de Eleitor, PIS/PASEP, CNH, RENAVAM e mais uma dezena de outros formatos.&lt;/p&gt;

&lt;p&gt;A grande mudança da 2.0 é a forma como a validação funciona: cada documento agora é uma classe imutável, no estilo &lt;em&gt;value object&lt;/em&gt;. Em vez de chamar uma função que devolve &lt;code&gt;true&lt;/code&gt; ou &lt;code&gt;false&lt;/code&gt;, você instancia o documento e ele já nasce validado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CPF&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;validation-br/cpf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cpf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;CPF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;906.259.666-51&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;cpf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;      &lt;span class="c1"&gt;// -&amp;gt; '90625966651', o valor normalizado, sem máscara&lt;/span&gt;
&lt;span class="nx"&gt;cpf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;     &lt;span class="c1"&gt;// -&amp;gt; '906.259.666-51'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se o valor for inválido, o construtor lança uma exceção em vez de devolver &lt;code&gt;false&lt;/code&gt;. Isso deixa o fluxo mais explícito: ou você tem um &lt;code&gt;CPF&lt;/code&gt; de verdade em mãos, ou você trata o erro. Pra quem só quer um booleano rápido, os atalhos &lt;code&gt;isCPF&lt;/code&gt;, &lt;code&gt;isCNPJ&lt;/code&gt; etc. continuam existindo e funcionando exatamente como antes.&lt;/p&gt;

&lt;p&gt;Um ponto que considero importante: &lt;strong&gt;o pacote não tem nenhuma dependência em produção&lt;/strong&gt;. Zero. Só usa APIs nativas do JS/TS, o que significa um &lt;code&gt;node_modules&lt;/code&gt; mais enxuto e uma superfície de ataque bem menor pra quem se preocupa com supply chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exemplo: CNPJ alfanumérico
&lt;/h2&gt;

&lt;p&gt;Desde 2026 a Receita Federal aceita CNPJ com letras no corpo do número (mantendo os dois últimos dígitos verificadores sempre numéricos). O validation-br já suporta isso, inclusive pra gerar exemplos fake pra teste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CNPJ&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;validation-br/cnpj&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Gera um CNPJ alfanumérico de exemplo&lt;/span&gt;
&lt;span class="nx"&gt;CNPJ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fake&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;alphanumeric&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;// -&amp;gt; 'WX.BC2.1FX/0001-00'&lt;/span&gt;

&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;CNPJ&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;WX.BC2.1FX/0001-00&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// -&amp;gt; 'WXBC21FX000100', o valor normalizado&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A mesma classe calcula o dígito verificador, aplica e remove máscara, e gera valores fake válidos, tanto no formato numérico tradicional quanto no alfanumérico novo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Onde encontrar
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Site e documentação completa: &lt;a href="https://validation-br.js.org" rel="noopener noreferrer"&gt;https://validation-br.js.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Código no GitHub: &lt;a href="https://github.com/klawdyo/validation-br" rel="noopener noreferrer"&gt;https://github.com/klawdyo/validation-br&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Instalação: &lt;code&gt;npm install validation-br&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>typescript</category>
      <category>validation</category>
      <category>cpf</category>
      <category>cnpj</category>
    </item>
  </channel>
</rss>
