Ir para o conteúdo

Utilidades BR

Helpers prontos para os campos de identidade e contato mais comuns em APIs brasileiras: CPF, CNPJ, CEP, telefone e UF/cidades.

Validação e normalização

import {
  isValidCpf,
  isValidCnpj,
  normalizeCpf,
  onlyDigits,
} from "tempest-express-sdk";

isValidCpf("529.982.247-25"); // true (formato + dígitos verificadores)
isValidCpf("111.111.111-11"); // false (sequência repetida)
normalizeCpf("529.982.247-25"); // "52998224725"
onlyDigits("(11) 99999-8888"); // "11999998888"

Disponíveis: isValidCpf, isValidCnpj, isValidCpfCnpj, isValidCep, isValidPhoneBr, mais os normalize* correspondentes (que lançam em entrada inválida).

Campos Zod

Cada documento tem um campo Zod que valida e normaliza para dígitos:

import { cpfField, phoneBrField, ufField, z } from "tempest-express-sdk";

const customerSchema = z.object({
  cpf: cpfField, // "529.982.247-25" → "52998224725"
  phone: phoneBrField,
  uf: ufField, // "sp" → "SP"
});

customerSchema.parse({ cpf: "529.982.247-25", phone: "(11) 99999-8888", uf: "sp" });

Um valor inválido lança ZodError, que o handler de erro transforma em 422.

Estados e cidades

import { listStates, getState, isValidCity, statesByRegion, Region } from "tempest-express-sdk";

listStates().length; // 27
getState("SP")?.name; // "São Paulo"
isValidCity("são paulo", "SP"); // true (ignora acento e caixa)
statesByRegion(Region.SOUTH).map((s) => s.uf); // ["PR", "RS", "SC"]

Dataset offline

O pacote embute todos os 27 estados e ~5,6 mil municípios — sem chamadas de rede. As comparações de cidade ignoram acento e caixa.

Recapitulando

Validadores + campos Zod cobrem CPF/CNPJ/CEP/telefone; o dataset de UF/cidades é offline. Tudo se integra ao envelope de erro padrão via ZodError → 422.