Coder Social home page Coder Social logo

mariohmol / js-brasil Goto Github PK

View Code? Open in Web Editor NEW
234.0 9.0 35.0 650 KB

Javascript Validate, Mask, Faker e Utils para Tipos do Brasil: Celular, CEP, Certidão, CNH, CNPJ, CNS, CPF, Currency, Date, ECT, EMAIL, Empresa, Endereço, Inscrição Estadual, Number, Percentage, Pessoa, PIS/PASEP, Placa de carro, Processo da justiça, RENAVAM , RG , Site, Telefone , Time (data/hora), Título de Eleitor , Veículo

Home Page: http://geradorbrasileiro.com

License: MIT License

TypeScript 98.72% HTML 1.28%

js-brasil's Introduction

js-brasil

Javascript Validate, Mask, Faker e Utils para Tipos do Brasil: Celular, CEP, Certidão, CNH, CNPJ, CNS, CPF, Currency, Date, ECT, EMAIL, Empresa, Endereço, Inscrição Estadual, Number, Percentage, Pessoa, PIS/PASEP, Placa de carro, Processo da justiça, RENAVAM , RG , Site, Telefone , Time (data/hora), Título de Eleitor , Veículo

Build Status

npm i js-brasil

ou

<script src="js-brasil.js"></script>

Módulos ValidateBR, MaskBR e FakerBR para nodejs ou browser.

Plugins para :

Veja tudo em ação no Gerador Brasileiro - http://geradorbrasileiro.com/

Ou veja um exemplo de código live: https://jsfiddle.net/mariohmol/qnmxhwrb/6/

Tipos Suportados

ValidateBR

Verifique se os dados dos seus usuários são válidos

Node:

const { validateBr } = require('js-brasil');
const cpf = validateBr.cpf('123.456.789-00');

Typescript:

import { validateBr } from 'js-brasil';
const cpf = validateBr.cpf('123.456.789-00');

Browser:

<script src="js-brasil.js"></script>
<script>
var cpf = jsbrasil.validateBr.cpf('123.456.789-00');
</script>  

MaskBR

Formate seus dados com mascaras de tipos de dados brasileiros

Node:

const { maskBr } = require('js-brasil');
const cpf = maskBr.cpf('12345678900'); 
console.info(cpf) // '123.456.789-00'

Typescript:

import { maskBr } from 'js-brasil';
const cpf = maskBr.cpf('12345678900'); 
console.info(cpf) // '123.456.789-00'

Browser:

<script src="js-brasil.js"></script>
<script>
var cpf = jsbrasil.maskBr.cpf('12345678900'); 
console.info(cpf) // '123.456.789-00'
</script>  

UtilsBR

Métodos úteis para todos apps brasileiros, veja alguns exemplos

  const currency = utilsBr.currencyToNumber(' R$ 1.234.456,44 ');
  expect(currency).to.be.equal(1234456.44);
  const percent = utilsBr.currencyToNumber(' 1.234.456,44%');
  expect(percent).to.be.equal(1234456.44);
  const percent2 = utilsBr.currencyToNumber(' 12 % ');
  expect(percent2).to.be.equal(12);

Node:

const { utilsBr } = require('js-brasil');
const currency = utilsBr.currencyToNumber(' R$ 1.234.456,44 '); // 1234456.44
const percent2 = utilsBr.currencyToNumber(' 12 % '); // 12

Typescript:

import { utilsBr } from 'js-brasil';
const currency = utilsBr.currencyToNumber(' R$ 1.234.456,44 ');
const percent2 = utilsBr.currencyToNumber(' 12 % '); // 12

Browser:

<script src="js-brasil.js"></script>
<script>
var currency = jsbrasil.utilsBr.currencyToNumber(' 12 % '); // 12
</script>  

FakerBR

FakerBR é um gerador de dados de teste usando tipos de dados brasileiro, similar o fakerjs agora tem um repositório próprio para deixar o js-brasil bem enxuto em mask e validation.

Angular

Utilize em angular 2 a 8 com:

React

Utilize com React:

API

Quer usar estes métodos através de uma API Web? Entre em contato conosco!

Contribuir

Para ajudar veja nossa issues e use a seguinte documentação: Contribuir

js-brasil's People

Contributors

188599 avatar bbarreto avatar caiorsantanna avatar guilhermebpnr avatar halfs2 avatar igorwilliam avatar joseaalexandre avatar mariohmol avatar mmc001 avatar william-keller avatar woj1965 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

js-brasil's Issues

AIH

Autorização de Internação Hospitalar

NIT

Temos o PIS PASEP funcionando.. nao consegui entender se o NIT é um numero diferente

alguem consegue ajudar?

Mask Tests

Make all tests for maskBr

Complete

Typescript code publicado junto com o código transpilado

Describe the bug
Estou tentando usar a lib em um projeto com typescript no modo strict. Este modo não permite uso implícito de any nem retornos que podem ser null. Teoricamente, a configuração no tsconfig deveria ignorar o node_modules mas, mesmo com ele no excludes, a compilação ainda falha no js-brasil. Pelo que entendi, como existe código typescript dentro do package da lib (pasta src), ele tenta checar os tipos por causa dos imports.

To Reproduce
Steps to reproduce the behavior:

  1. Criar um projeto que use o js-brasil
  2. Habilitar o modo strict do typescript
  3. Executar typechecking com o tsc

Expected behavior
O pacote publicado não deveria conter código typescript não transcompilado.

Desktop (please complete the following information):

  • OS: Ubuntu 20.04
  • Browser firefox
  • Version 81.0

Fragmento dos errors levantados pelo tsc:

node_modules/js-brasil/src/validate.ts:180:30 - error TS7006: Parameter 'number' implicitly has an 'any' type.

180 function validate_contabanco(number) {
                                 ~~~~~~

node_modules/js-brasil/src/validate.ts:200:7 - error TS7053: Element implicitly has an 'any' type because expression of type '0' can't be used to index type 'false | number[]'.
  Property '0' does not exist on type 'false | number[]'.

200   if (restos[0] !== parseInt(strCPF.substring(9, 10), 10)) {
          ~~~~~~~~~

node_modules/js-brasil/src/validate.ts:204:7 - error TS7053: Element implicitly has an 'any' type because expression of type '1' can't be used to index type 'false | number[]'.
  Property '1' does not exist on type 'false | number[]'.

204   if (restos[1] !== parseInt(strCPF.substring(10, 11), 10)) {
          ~~~~~~~~~

node_modules/js-brasil/src/validate.ts:210:27 - error TS7006: Parameter 'number' implicitly has an 'any' type.

210 function validate_cpfcnpj(number) {
                              ~~~~~~

node_modules/js-brasil/src/validate.ts:214:30 - error TS7006: Parameter 'value' implicitly has an 'any' type.

214 export function validate_cns(value) {
                                 ~~~~~

node_modules/js-brasil/src/validate.ts:231:40 - error TS7006: Parameter 'value' implicitly has an 'any' type.

231 export function validate_cartaocredito(value) {
                                           ~~~~~

node_modules/js-brasil/src/validate.ts:256:9 - error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ mc: RegExp; ec: RegExp; vi: RegExp; ax: RegExp; dc: RegExp; bl: RegExp; di: RegExp; jcb: RegExp; er: RegExp; }'.
  No index signature with a parameter of type 'string' was found on type '{ mc: RegExp; ec: RegExp; vi: RegExp; ax: RegExp; dc: RegExp; bl: RegExp; di: RegExp; jcb: RegExp; er: RegExp; }'.

256     if (creditCardValidator[key].test(number)) {
            ~~~~~~~~~~~~~~~~~~~~~~~~

Veículo

marca, modelo, ano, chassi, renavam, placa, cor

textmask com erro no modo strict

Salve Mario, tranquilo?
Atualizei os pacotes com a última versão porém agora estou com erro na máscara quando o "strictTemplates" é TRUE no arquivo "tsconfig".

Mensagem de erro:
Type 'Function | MaskType | (string | RegExp)[] | undefined' is not assignable to type 'false | (string | RegExp)[] | ((raw: string) => (string | RegExp)[])'.
Type 'undefined' is not assignable to type 'false | (string | RegExp)[] | ((raw: string) => (string | RegExp)[])'.ngtsc(2322)
image

Se eu desativo, consigo utilizar normalmente, porém o próprio VsCode fica aparecendo um alerta toda hora.
image

Tscondig
image

Html
image

App component
image

Módulo
image

"A partir da versão 12, removeremos o prompt do modo estrito e todos os novos projetos terão essas configurações habilitadas desde o início."

referência: https://blog.angular.io/with-best-practices-from-the-start-d64881a16de8

Observação: eu ainda não encontrei um fix :D

Nova I.E do Distrito Federal

Foi liberado no mês 09/2020 um novo padrão para geração de inscrição estadual do D.F, as novas empresas estão cadastradas com a inicial 08 antigamente era fixo 07.

image

Estado

CEP e Telefone e Endereço por estado, pessoa (rg, tel, cel) e empresa (inscricao estadual, tel, cel)

CNH não funciona

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:
Alguns cnh's válidos estão resultando em false, exemplo: 59796888141

Expected behavior
Deveria validar como true

Desktop (please complete the following information):
próprio site http://geradorbrasileiro.com/cnh.html

Not all code paths return a value

Salve Mario, tranquilo?
Se você criar um novo projeto angular utilizando "ng new [nome_do_projeto] --strict" ele cria alguns parâmetros a mais no arquivo tsconfig.json sendo um deles "noImplicitReturns": true que me retorna dois erros:

  1. js-brasil/src/mask.ts

image

  1. js-brasil/src/iptu/validate.ts

image

Obs: Acredito que no Angular 12 essa opção será ativada por padrão.

Cenário: criei o projeto, importei os dois módulos no app.module e importei a mask no app.component, no build apresenta erro.

cpfOrCnpj

Field where the user can fill in a CPF or a CNPJ

Inscrição Estadual valida apenas estado de MG

Estou implementando a máscara e o validator para inscrição estadual. Porém gerando IE para testar, ele só valida se eu digitar
todos números iguais (ex: 111.111.111, 222.222.222 e assim por diante, para todos estados). Os IE gerados para cara estado que ele implementa a mascara, retorna um false... exceto o estado de MG.
Testei neste link se era algo na implementação: https://stackblitz.com/edit/ng-brazil?file=src%2Fapp%2Fapp.component.html
porém também só valida o estado de MG, os outros não.

Seria algo na forma que implementei ou na lib ?

ECT

Encomendas

[Bug] Known CNPJ invalid as valid CPF

I am facing a situation in which a user input document number is expected, it can be a CPF or a CNPJ. When the entry is a known CNPJ invalid, the result of the validation of the CPF is true.

if (isCPFValid || isCNPJValid) {
  // ...do stuff
} else {
  // ...do stuff
}
const { validateBr } = require('js-brasil');

const str = '00.000.000/0000-00';

const test = validateBr.cpf(str);

console.log(test); // true

Senha

  • Tamanho
  • Letras maiúsculas
  • Letras minúsculas
  • Símbolos
  • Números

CNAE

https://pt.wikipedia.org/wiki/Classifica%C3%A7%C3%A3o_Nacional_de_Atividades_Econ%C3%B4micas

https://concla.ibge.gov.br/busca-online-cnae.html?view=estrutura

O número do CNAE é composto por 7 dígitos, sendo uma classificação estruturada de forma hierarquizada em cinco níveis, com 21 seções (primeiro dígito), 87 divisões (segundo dígito), 285 grupos (terceiro dígito), 672 classes (quarto dígito + um dígito verificador) e 1318 subclasses (dois dígitos após o dígito verificador). Exemplo: 6821-8/01 – Corretagem na compra e venda e avaliação de imóveis.

Vue Failed to compile.

Depois de instalar com sucesso via npm no projeto
dá um erro de compilação !!

Failed to compile.

./node_modules/vue-brazil/src/index.js
Module not found: Error: [CaseSensitivePathsPlugin] c:\Users\samir\Dropbox\Vue_projects\vue-material-dashboard-pro-v1.3.2\node_modules\vue-brazil\src\filter\JSBrazilFilter.js does not match the corresponding path on disk JsBrazilFilter.js.

Faker test

Make tests for:

  • currency
  • percentage

DONE:

Validação de Inscrição Estadual de Alagoas

Describe the bug
Erro na validação da inscrição estadual do estado de Alagoas.

To Reproduce
Executar o método validateBr.inscricaoestadual com qualquer Inscrição Estadual válida para Alagoas.

Expected behavior
Deveria retornar true. Retorna false.

Additional context
Comparando o fonte:

al: function (valor: any) {
    if (tamanhoNaoE(valor)) {
      return false;
    }

    if (naoComecaCom(valor, '24')) {
      return false;
    }

    //
    // Removi a validação do tipo da empresa abaixo
    // devido a ambiguidade entre a especificação do
    // Sintegra (http://www.sintegra.gov.br/Cad_Estados/cad_AL.html) e do
    // site do da Sefaz do Alagoas (http://www.sefaz.al.gov.br/sintegra/cad_AL.asp).
    // Veja o issue #4 - https://github.com/gammasoft/ie/issues/4
    //
    // if('03578'.split('').indexOf(valor.substring(2, 3)) === -1) {
    //     return false;
    // }

    const base: any = primeiros(valor);

    let resto = mod(base) * 10;

    const resT = resto / 11
    resto = resto - (resT * 11);
    const digito = resto === 10 ? 0 : resto;

    return base + digito;
  }

Com o método no qual você se baseou do https://github.com/gammasoft/ie/:

 al: function(valor){
        if(tamanhoNaoE(valor)) {
            return false;
        }

        if(naoComecaCom(valor, '24')) {
            return false;
        }

        //
        // Removi a validação do tipo da empresa abaixo
        // devido a ambiguidade entre a especificação do
        // Sintegra (http://www.sintegra.gov.br/Cad_Estados/cad_AL.html) e do
        // site do da Sefaz do Alagoas (http://www.sefaz.al.gov.br/sintegra/cad_AL.asp).
        // Veja o issue #4 - https://github.com/gammasoft/ie/issues/4
        //
        // if('03578'.split('').indexOf(valor.substring(2, 3)) === -1) {
        //     return false;
        // }

        var base = primeiros(valor);

        var resto = mod(base) * 10;
        resto = resto - (parseInt(resto/11, 10) * 11);
        var digito = resto === 10 ? 0 : resto;

        return valor === base + digito;
    }

Nesta parte específica, você não está pegando o número inteiro como deveria:

    const resT = resto / 11

O método refeito para funcionar como o do ie:

al: function (valor: any) {
    if (tamanhoNaoE(valor)) {
      return false;
    }

    if (naoComecaCom(valor, '24')) {
      return false;
    }

    const base: any = primeiros(valor);

    let resto = mod(base) * 10;

    const resT = Math.floor(resto / 11);
    resto = resto - (resT * 11);
    const digito = resto === 10 ? 0 : resto;

    return base + digito;
  }

Alternativamente, assim também funcionaria:

al: function (valor: any) {
    if (tamanhoNaoE(valor)) {
      return false;
    }

    if (naoComecaCom(valor, '24')) {
      return false;
    }

    const base: any = primeiros(valor);

    const resto = 11 - mod(base);

    const digito = resto === 10 ? 0 : resto;

    return base + digito;
  }

Aqui a documentação do SINTEGRA do estado de Alagoas:
http://www.sintegra.gov.br/Cad_Estados/cad_AL.html

Baseei meus testes no exemplo da própria documentação acima, e neste site https://www.4devs.com.br/gerador_de_inscricao_estadual_alagoas.

Algumas vezes é gerado uma inscrição com um digito a mais, neste site acima, mas ignorando estes, todos os gerados que testei funcionaram.

CNS

Cartão nacional de saúde

Módulos não encontrados na versão 2.0.0

Estou recebendo esse erro ao utilizar a versão 2.0.0

ERROR in ./node_modules/js-brasil/dist/index.js
Module not found: Error: Can't resolve './src/estados' in '/var/www/html/node_modules/js-brasil/dist'
ERROR in ./node_modules/js-brasil/dist/index.js
Module not found: Error: Can't resolve './src/faker' in '/var/www/html/node_modules/js-brasil/dist'
ERROR in ./node_modules/js-brasil/dist/index.js
Module not found: Error: Can't resolve './src/mask' in '/var/www/html/node_modules/js-brasil/dist'
ERROR in ./node_modules/js-brasil/dist/index.js
Module not found: Error: Can't resolve './src/placa' in '/var/www/html/node_modules/js-brasil/dist'
ERROR in ./node_modules/js-brasil/dist/index.js
Module not found: Error: Can't resolve './src/utils' in '/var/www/html/node_modules/js-brasil/dist'
ERROR in ./node_modules/js-brasil/dist/index.js
Module not found: Error: Can't resolve './src/validate' in '/var/www/html/node_modules/js-brasil/dist'

Ao utilizar npm start, npm build, ng serve --aot, ng build --aot, todos produziram o mesmo erro.
Os arquivos realmente não se encontram na pasta. Mas na versão 1.4.3, ou inferior, eles aparecem normalmente.

Validate Data

Descrição do Problema

Ao usar o comando validateBr.data(paciente.dtNascimento); com o paciente.dtNascimento vazio é retornado o valor true.

Testando o valor validateBr.data(""); também é retornado o valor true.
Acredito que deveria ser retornado o valor false para datas vazias.

Placas do Mercosul

Adicionar máscara e faker para que funcione com placa tradicional BR e/ou placas do mercosul.

Vlidação - #50 - OK
Mask - TODO
Faker - TODO

Combined Generators

  • Generate person (male/female, age, state, city)

Make with: name, cpf, rg, born date, parents, address, phones, email, password
(person with or withou accent

  • Generate pasword

  • Generate name

  • Generate Company

  • Generate image

error with ng build --prod

error with ng build --prod in version 2.3.2

ERROR in node_modules/js-brasil/src/utils.ts:2:27 - error TS2307: Cannot find module 'interfaces' or its corresponding type declarations.

2 import { BigObject } from "interfaces";
~~~~~~~~~~~~
node_modules/js-brasil/src/iptu/mask.ts:1:37 - error TS2307: Cannot find module 'interfaces' or its corresponding type declarations.

1 import { BigObject, MaskType } from "interfaces";
~~~~~~~~~~~~
node_modules/js-brasil/src/iptu/create.ts:3:27 - error TS2307: Cannot find module 'interfaces' or its corresponding type declarations.

3 import { BigObject } from "interfaces";
~~~~~~~~~~~~
node_modules/js-brasil/src/iptu/validate.ts:3:27 - error TS2307: Cannot find module 'interfaces' or its corresponding type declarations.

Renavam Docs

Include in example on html web, readme and others

Validate Tests

Make all tests for validateBr

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.