Security News
How Threat Actors are Abusing GitHub’s File Upload Feature to Host Malware
GitHub is susceptible to a CDN flaw that allows attackers to host malware on any public repository.
br-validate-dfe-access-key
Advanced tools
Changelog
v0.1.0
Release inicial
Validação de chaves de acesso de NFes. Versão inicial, instável.
Readme
Uma Chave de Acesso é um identificador único que referencia um DFe (Documento Fiscal Eletrônico), controlado pela SEFAZ (Secretaria da Fazenda, órgão do governo que gerencia os DFes).
import validateAccessKey from 'br-validate-access-key';
validateAccessKey('35120859597245000190550000000095831710040056'); //true
validateAccessKey('35-12/08-59.597.245/0001-90-55-000-000.009.583-171.004.005-6'); //true
validateAccessKey('42100484684182000157550010000000020108042108'); //false
Para que a validação da chave de acesso seja feita, é necessário fazer várias validações menores em cada campo. A chave só será válida se todos os campos forem válidos. Também é possível fazer validações diretamente nos campos de forma individual:
import validateAccessKey, { validate } from 'br-validate-access-key';
validateAccessKey('42100484684182000157550010000000020108042108'); //false
validate.uf('42'); //true
validate.aamm('1004'); //true
validate.cnpj('84684182000157'); //true
validate.model('55'); //true
validate.series('001'); //true
validate.number('000000002'); //true
validate.type('0'); //false
validate.code('010804210'); //true
É possível passar opções como o segundo argumento do método de validação.
ignoreType
: Ignora o campo tpEmis e considera o campo cNF com 9 dígitos.validateAccessKey('42100484684182000157550010000000020108042108', {
ignoreType: true,
}); //true
describe
: Retorna um objeto com as validações individuais ao invés de um booleano.Todo campo possui as propriedades
isValid
evalue
.Para validar a chave de acesso a partir da descrição use:
validateAccessKey(accessKey, { describe: true }) .every(field => field.isValid)
validateAccessKey('42100484684182000157550010000000020108042108', {
describe: true,
}); /* {
uf: {
isValid: true,
translation: 'Santa Catarina',
value: '42'
},
aamm: {
isValid: true,
value: '1004'
},
...
} */
As chaves de acesso são únicas para cada documento, mas todas seguem um padrão. O valor semântico dos campos é diferente para cada tipo de documento, mas a sua distribuição ao longo dos 44 caracteres é sempre a mesma.
Os campos que compõem uma chave de acesso são, em ordem da esquerda para a direita:
* O campo tpEmis passou a compor a chave de acesso a partir da versão 1.1 da NFe. Para as versões anteriores à 1.1 o campo cNF possui 9 dígitos.
Esta biblioteca valida apenas chaves de acesso de NFes. Apesar do layout de todos os DFes ser o mesmo, o valor semântico de cada campo é importante para a validação da chave. Por exemplo: em uma NFe o campo tpEmis assume valores entre 1 e 5, porém em um CTe os valores 7 e 8 são válidos, e possuem significados diferentes.
Visto que existem vários tipos de DFe, com vários valores semânticos diferentes, a implementação da validação completa de todos os DFes se dará pela demanda de tal validação. Caso queira a validação de um DFe específico, faça uma contribuição ou abra uma Issue.
Contribuições serão aceitas desde que acompanhadas da respectiva Nota Técnica que define a regra de validação. Contribuições serão aceitas para todos os tipos de DFe.
Contribuições que não possuam uma alta cobertura de testes não serão aceitas.
Esta biblioteca está publicada sob a licença MIT, o que significa que você é livre para modificar e/ou reusar o código gratuitamente ou para fins comerciais. Se você fizer alterações a partir do código original por favor faça referência ao autor.
FAQs
Um validador de chave de acesso de DFes (Documentos Fiscais eletrônicos)
The npm package br-validate-dfe-access-key receives a total of 50 weekly downloads. As such, br-validate-dfe-access-key popularity was classified as not popular.
We found that br-validate-dfe-access-key demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub is susceptible to a CDN flaw that allows attackers to host malware on any public repository.
Security News
At Node Congress, Socket CEO Feross Aboukhadijeh uncovers the darker aspects of open source, where applications that rely heavily on third-party dependencies can be exploited in supply chain attacks.
Research
Security News
The Socket Research team found this npm package includes code for collecting sensitive developer information, including your operating system username, Git username, and Git email.