mariohmol / 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
http://geradorbrasileiro.com
MIT License
240 stars 37 forks source link

Typescript code publicado junto com o código transpilado #55

Closed viniciusjssouza closed 4 years ago

viniciusjssouza commented 4 years ago

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):

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)) {
            ~~~~~~~~~~~~~~~~~~~~~~~~
mariohmol commented 4 years ago

Rapaz... acho que vai ter muiiito erros, quantos levantou pra vc?

Então, vc pode tentar importar o .js final buildado.. ou ver se tem alguma conf do typescript que possa ignorar isso pra modulos ou que eu possa incluir no jsbrasil que faz esse bypass

viniciusjssouza commented 4 years ago

@mariohmol, minha sugestão é usar um arquivo .npmignore para ignorar o diretório src ao publicar o pacote para o npm.

viniciusjssouza commented 4 years ago

Seria adicionar um arquivo .npmignore com o conteúdo:

node_modules
src
tests

(inclusive, acho que dá pra excluir até outros arquivos do pacote pra diminuir o tamanho dele, como o docs e o addons)

mariohmol commented 4 years ago

testa a v2.3.0 pf

fiz a conversão pra TS com strict.. só não fiz pra pasta de testes mas estou querendo deixar o projeto no strict de uma vez

viniciusjssouza commented 4 years ago

Ok! Vou testar aqui. Valeu @mariohmol !

mariohmol commented 4 years ago

boa.. tive q subir um small fix agora.. 2.3.2

andrejm7 commented 4 years ago

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.

ainda tem erros... to tentando regredir as versoes.. mas sempre dá esse erro ai :S
viniciusjssouza commented 4 years ago

@mariohmol, adicionei um PR aqui para dar um tapa no .npmignore. O tamanho do pacote deve diminuir consideravelmente agora.

mariohmol commented 4 years ago

@viniciusjssouza valeu demais.. checa a v2.3.6

viniciusjssouza commented 4 years ago

@mariohmol tive que abrir um fix do meu PR porque o npmignore estava ignorando os diretórios dentro do dist também :disappointed: my bad