npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@ferreira-dev/validation-core

v1.1.0

Published

Biblioteca TypeScript completa para desenvolvimento de aplicações de validação bancária, incluindo funcionalidades essenciais para internet banking, PIX e transferências bancárias no Brasil.

Readme

Banking Core - Biblioteca de Internet Banking

Uma biblioteca TypeScript completa para desenvolvimento de aplicações de internet banking, com validações, formatações, segurança e funcionalidades bancárias essenciais.

🚀 Características

  • Validações robustas: CPF, CNPJ, email, telefone, senha, contas bancárias e chaves PIX
  • Formatação de dados: Moeda, datas e números no padrão brasileiro
  • Segurança: Criptografia AES-256, hash de senhas e mascaramento de dados sensíveis
  • Funcionalidades bancárias: Transferências PIX, TED, DOC e internas
  • Compatibilidade: Funciona tanto em React quanto React Native
  • TypeScript: Totalmente tipado para melhor experiência de desenvolvimento

📦 Instalação

npm install @ferreira-dev/banking-core

🔧 Configuração

import { 
  isValidCPF, 
  formatCurrency, 
  transferService,
  encryptionService 
} from '@ferreira-dev/banking-core';

// Configure a URL da API (opcional)
process.env.API_URL = 'https://sua-api-bancaria.com';

📚 Uso

Validações

CPF

import { isValidCPF, formatCPF } from '@ferreira-dev/banking-core';

const cpf = '123.456.789-09';
if (isValidCPF(cpf)) {
  console.log('CPF válido');
  const formatted = formatCPF(cpf); // 123.456.789-09
}

CNPJ

import { isValidCNPJ, formatCNPJ } from '@ferreira-dev/banking-core';

const cnpj = '12.345.678/0001-90';
if (isValidCNPJ(cnpj)) {
  console.log('CNPJ válido');
  const formatted = formatCNPJ(cnpj); // 12.345.678/0001-90
}

Email

import { isValidEmail, normalizeEmail } from '@ferreira-dev/banking-core';

const email = '[email protected]';
if (isValidEmail(email)) {
  const normalized = normalizeEmail(email); // [email protected]
}

Telefone

import { isValidPhone, formatPhone, isMobile } from '@ferreira-dev/banking-core';

const phone = '11987654321';
if (isValidPhone(phone)) {
  const formatted = formatPhone(phone); // (11) 98765-4321
  const isMobilePhone = isMobile(phone); // true
}

Senha

import { validatePassword, generatePasswordSuggestions } from '@ferreira-dev/banking-core';

const password = 'MinhaSenha123!';
const result = validatePassword(password);

if (result.isValid) {
  console.log(`Senha forte! Score: ${result.score}/100`);
} else {
  console.log('Erros:', result.errors);
  const suggestions = generatePasswordSuggestions();
}

Conta Bancária

import { isValidBankAccount, getBankName } from '@ferreira-dev/banking-core';

const account = {
  bankCode: '001',
  agency: '1234',
  account: '12345-6',
  accountType: 'corrente'
};

if (isValidBankAccount(account)) {
  const bankName = getBankName(account.bankCode); // 'Banco do Brasil'
}

Chave PIX

import { isValidPixKey, detectPixKeyType, generateRandomPixKey } from '@ferreira-dev/banking-core';

const pixKey = {
  type: 'cpf',
  value: '123.456.789-09'
};

if (isValidPixKey(pixKey)) {
  console.log('Chave PIX válida');
}

// Detecta automaticamente o tipo
const detectedType = detectPixKeyType('[email protected]'); // 'email'

// Gera chave aleatória
const randomKey = generateRandomPixKey();

Formatação

Moeda

import { formatCurrency } from '@ferreira-dev/banking-core';

const value = 1234.56;
const formatted = formatCurrency(value); // R$ 1.234,56
const usd = formatCurrency(value, 'en-US', 'USD'); // $1,234.56

Data

import { formatDate, formatDateTime, formatRelativeTime } from '@ferreira-dev/banking-core';

const date = new Date();
const shortDate = formatDate(date); // 15/12/2024
const longDate = formatDate(date, 'long'); // domingo, 15 de dezembro de 2024
const dateTime = formatDateTime(date); // 15/12/2024 14:30
const relative = formatRelativeTime(date); // agora mesmo

Segurança

Criptografia

import { encryptionService } from '@ferreira-dev/banking-core';

// Gera chave de criptografia
const key = await encryptionService.generateKey();

// Criptografa dados
const encrypted = await encryptionService.encrypt('dados sensíveis', key);

// Descriptografa dados
const decrypted = await encryptionService.decrypt(
  encrypted.encrypted, 
  key, 
  encrypted.iv
);

// Mascara dados sensíveis
const maskedCard = encryptionService.maskCardNumber('1234567890123456'); // ************3456
const maskedCPF = encryptionService.maskCPF('123.456.789-09'); // ***.***.***-09

Hash de Senha

import { encryptionService } from '@ferreira-dev/banking-core';

// Gera hash da senha
const { hash, salt } = await encryptionService.hashPassword('minhaSenha123');

// Verifica senha
const isValid = await encryptionService.verifyPassword('minhaSenha123', hash, salt);

Funcionalidades Bancárias

Transferências

import { transferService } from '@ferreira-dev/banking-core';

const transferRequest = {
  fromAccount: 'conta-origem',
  toAccount: 'conta-destino',
  amount: 100.00,
  description: 'Pagamento de serviço',
  transferType: 'pix'
};

try {
  const result = await transferService.executeTransfer(transferRequest);
  console.log(`Transferência ${result.status}: ${result.id}`);
} catch (error) {
  console.error('Erro na transferência:', error.message);
}

// Verifica limites
const limits = await transferService.getTransferLimits('conta-id', 'pix');
console.log(`Limite diário: R$ ${limits.dailyLimit}`);

Autenticação

Login

import { login } from '@ferreira-dev/banking-core';

try {
  const response = await login('usuario', 'senha');
  console.log('Token:', response.token);
  console.log('Expira em:', response.expiresIn);
} catch (error) {
  console.error('Erro no login:', error.message);
}

Refresh Token

import { refreshToken } from '@ferreira-dev/banking-core';

try {
  const response = await refreshToken('refresh-token-atual');
  console.log('Novo token:', response.token);
} catch (error) {
  console.error('Erro no refresh:', error.message);
}

🏗️ Estrutura do Projeto

src/
├── auth/           # Autenticação e tokens
├── validation/     # Validações de dados
├── formatting/     # Formatação de dados
├── security/       # Criptografia e segurança
├── banking/        # Funcionalidades bancárias
├── http/           # Cliente HTTP
└── index.ts        # Exportações principais

🔒 Segurança

  • Criptografia AES-256-GCM para dados sensíveis
  • Hash SHA-256 com salt para senhas
  • Validações rigorosas de entrada
  • Mascaramento automático de dados sensíveis
  • Verificação de limites de transferência

📱 Compatibilidade

  • ✅ React (Web)
  • ✅ React Native
  • ✅ Node.js
  • ✅ TypeScript
  • ✅ JavaScript (ES6+)

🧪 Testes

# Em desenvolvimento - adicione testes unitários
npm test

📄 Licença

MIT

🤝 Contribuição

Contribuições são bem-vindas! Por favor, abra uma issue ou pull request.

📞 Suporte

Para dúvidas ou suporte, entre em contato através das issues do GitHub.


Desenvolvido com ❤️ para o sistema bancário brasileiro