@juliodevelop/br-utils
v0.1.0
Published
Utilitários brasileiros: CPF, CNPJ, CEP, telefone, moeda BRL, placa, estados + Zod schemas
Readme
@juliodevelop/br-utils
Utilitários brasileiros: CPF, CNPJ, CEP, telefone, moeda BRL, placa de veículo, estados + schemas Zod.
Zero dependências — 100% standalone (Zod é peer dep opcional).
Instalação
npm install @juliodevelop/br-utilsRequer
.npmrcconfigurado com o registry@juliodevelop. Veja o README raiz.
Uso
import { cpf, cnpj, cpfCnpj, phone, cep, currency, plate, states } from '@juliodevelop/br-utils'
// CPF
cpf.validate('123.456.789-09') // true
cpf.format('12345678909') // '123.456.789-09'
cpf.strip('123.456.789-09') // '12345678909'
cpf.mask('12345678909') // '123.456.***-**'
cpf.generate() // CPF válido (para testes)
// CNPJ
cnpj.validate('11.222.333/0001-81') // true
cnpj.format('11222333000181') // '11.222.333/0001-81'
// CPF/CNPJ auto-detect
cpfCnpj.validate('12345678909') // valida como CPF
cpfCnpj.validate('11222333000181') // valida como CNPJ
cpfCnpj.type('12345678909') // 'cpf'
// Telefone
phone.format('92991234567') // '(92) 99123-4567'
phone.validate('(92) 99123-4567') // true
phone.isMobile('92991234567') // true
phone.toInternational('92991234567') // '+5592991234567'
// CEP
cep.format('69050001') // '69050-001'
const addr = await cep.fetch('69050-001')
// → { cep, street, neighborhood, city, state, stateCode }
// Moeda BRL
currency.format(1234.56) // 'R$ 1.234,56'
currency.parse('R$ 1.234,56') // 1234.56
currency.cents(1234.56) // 123456
// Placa de veículo
plate.validate('ABC1D23') // true (Mercosul)
plate.validate('ABC-1234') // true (antiga)
plate.type('ABC1D23') // 'mercosul'
// Estados
states.list() // [{ code: 'AC', name: 'Acre' }, ...]
states.getByCode('AM') // { code: 'AM', name: 'Amazonas', region: 'Norte' }Zod Schemas
npm install zod # peer dep necessáriaimport { schemas } from '@juliodevelop/br-utils/zod'
import { z } from 'zod'
const userSchema = z.object({
cpf: schemas.cpf(), // valida + strip automático
phone: schemas.phone(), // valida formato BR
cep: schemas.cep(),
salary: schemas.brl(), // "1.234,56" → 1234.56
plate: schemas.plate(),
})