nfe-lib-node 1.1.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,93 +1,113 @@
1
- # nfe-lib-node 🚀
2
-
3
- Uma biblioteca Node.js em TypeScript para emissão de Nota Fiscal Eletrônica (NF-e) focada em simplicidade, segurança e sem dependência de serviços terceiros (SaaS).
4
-
5
- Pague apenas os seus impostos, não pela emissão! 😉
6
-
7
- ## 📦 Instalação
8
-
9
- Instale diretamente via NPM:
10
-
11
- ```bash
12
- npm install nfe-lib-node
13
- ```
14
-
15
- Ou, para clonar e rodar localmente:
16
-
17
- ```bash
18
- git clone https://github.com/rafconrado/nfe-lib-node.git
19
- cd nfe-lib-node
20
- npm install
21
- ```
22
-
23
- ## 🚀 Como usar
24
-
25
- A arquitetura foi pensada para ser o mais simples possível. Você só precisa do seu Certificado Digital A1 (`.pfx`).
26
-
27
- ### 1. Consultar Status do Serviço (SEFAZ)
28
-
29
- ```typescript
30
- import { NFe, Certificado } from 'nfe-lib-node';
31
- import fs from 'fs';
32
-
33
- async function testarSefaz() {
34
- const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
35
- const nfe = new NFe({ uf: 'DF', ambiente: 'homologacao', certificado });
36
-
37
- const status = await nfe.consultarStatus();
38
- console.log(status.xml);
39
- }
40
- ```
41
-
42
- ### 2. Emitir uma NF-e (Autorização)
43
-
44
- A biblioteca foca na infraestrutura (Assinatura XMLDSig e SOAP). Você fornece um objeto com a estrutura da SEFAZ, e a biblioteca cuida da dor de cabeça da criptografia:
45
-
46
- ```typescript
47
- import { NFe, Certificado, DadosNFe } from 'nfe-lib-node';
48
- import fs from 'fs';
49
-
50
- async function emitirNota() {
51
- const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
52
- const nfe = new NFe({ uf: 'DF', ambiente: 'homologacao', certificado });
53
-
54
- const nota: DadosNFe = {
55
- infNFe: {
56
- '@Id': 'NFe5326...',
57
- '@versao': '4.00',
58
- ide: { /* ... */ },
59
- emit: { /* ... */ },
60
- dest: { /* ... */ },
61
- det: { /* ... */ },
62
- total: { /* ... */ },
63
- transp: { /* ... */ },
64
- pag: { /* ... */ }
65
- }
66
- };
67
-
68
- const resposta = await nfe.emitir(nota);
69
- console.log(resposta.xml); // Autorizado!
70
- }
71
- ```
72
-
73
- testarSefaz();
74
-
75
- ## 🛡️ Segurança
76
-
77
- * **Nunca** faça commit do seu arquivo `.pfx` ou da sua senha para o GitHub.
78
- * O arquivo `.gitignore` já vem configurado para ignorar extensões de certificados por padrão.
79
-
80
- ## 🤝 Contribuições
81
-
82
- Este projeto está no início (Fase 1: Comunicação Base). As próximas etapas envolvem a construção dos Builders de XML e a Assinatura Digital (XMLDSig). Toda contribuição da comunidade Node.js brasileira é bem-vinda!
83
-
84
- ## 👨‍💻 Autor
85
-
86
- Criado e idealizado por **Rafael Conrado**.
87
- Se você curtiu o projeto, me dê um "Alô" nas redes:
88
- * [GitHub - @rafconrado](https://github.com/rafconrado)
89
- * [LinkedIn](https://www.linkedin.com/in/rafconradoo/)
90
-
91
- ## 📝 Licença
92
-
93
- MIT License
1
+ # nfe-lib-node 🚀
2
+
3
+ Uma biblioteca Node.js em TypeScript para emissão de Nota Fiscal Eletrônica (NF-e) focada em simplicidade, segurança e sem dependência de serviços terceiros (SaaS).
4
+
5
+ Pague apenas os seus impostos, não pela emissão! 😉
6
+
7
+ ## 📦 Instalação
8
+
9
+ Instale diretamente via NPM:
10
+
11
+ ```bash
12
+ npm install nfe-lib-node
13
+ ```
14
+
15
+ Ou, para clonar e rodar localmente:
16
+
17
+ ```bash
18
+ git clone https://github.com/rafconrado/nfe-lib-node.git
19
+ cd nfe-lib-node
20
+ npm install
21
+ ```
22
+
23
+ ## 🚀 Como usar
24
+
25
+ A arquitetura foi pensada para ser o mais simples possível. Você só precisa do seu Certificado Digital A1 (`.pfx`).
26
+
27
+ ### 1. Validar Certificado e Consultar Status do Serviço (SEFAZ)
28
+
29
+ ```typescript
30
+ import { NFe, Certificado } from 'nfe-lib-node';
31
+ import fs from 'fs';
32
+
33
+ async function testarSefaz() {
34
+ const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
35
+
36
+ // Opcional: Inspecionar dados e validade do Certificado A1 (ICP-Brasil)
37
+ const dadosCert = certificado.getDados();
38
+ console.log(`Titular: ${dadosCert.nomeComum} (${dadosCert.cnpjOuCpf})`);
39
+ console.log(`Válido: ${dadosCert.estaValido} (${dadosCert.diasParaVencer} dias restantes)`);
40
+
41
+ const nfe = new NFe({ uf: 'DF', ambiente: 'homologacao', certificado });
42
+
43
+ const status = await nfe.consultarStatus();
44
+ console.log(status.xml);
45
+ }
46
+ ```
47
+
48
+ ### 2. Emitir uma NF-e (Autorização) e Gerar DANFE em PDF
49
+
50
+ A biblioteca cuida da infraestrutura completa (Tipagem do Layout 4.00, Assinatura XMLDSig, comunicação SOAP e geração de DANFE em PDF sem dependências pesadas):
51
+
52
+ ```typescript
53
+ import { NFe, Certificado, Danfe, type DadosNFe } from 'nfe-lib-node';
54
+ import fs from 'fs';
55
+
56
+ async function emitirNota() {
57
+ const certificado = new Certificado(fs.readFileSync('./certificado.pfx'), 'SENHA_DO_CERTIFICADO');
58
+ const nfe = new NFe({ uf: 'DF', ambiente: 'homologacao', certificado });
59
+
60
+ const nota: DadosNFe = {
61
+ infNFe: {
62
+ '@Id': 'NFe5326...',
63
+ '@versao': '4.00',
64
+ ide: { /* ... */ },
65
+ emit: { /* ... */ },
66
+ dest: { /* ... */ },
67
+ det: [ /* ... */ ],
68
+ total: { /* ... */ },
69
+ transp: { /* ... */ },
70
+ pag: { /* ... */ }
71
+ }
72
+ };
73
+
74
+ const resposta = await nfe.emitir(nota);
75
+ console.log(`Status: ${resposta.status} - ${resposta.motivo}`);
76
+
77
+ // Gera o PDF do DANFE diretamente a partir do XML assinado + retorno da SEFAZ
78
+ if (resposta.xmlAssinado) {
79
+ const pdfBuffer = Danfe.fromXml(resposta.xmlAssinado, resposta.xml);
80
+ fs.writeFileSync('./danfe.pdf', pdfBuffer);
81
+ }
82
+ }
83
+ ```
84
+
85
+ ## ✨ Funcionalidades Atuais
86
+
87
+ * 🔐 **Certificado Digital A1 (`.pfx`)**: Extração com cache em memória, inspeção de validade/titular (`getDados()`, `estaValido()`) e configuração de mTLS.
88
+ * 🔑 **Chave de Acesso (Módulo 11)**: Geração, validação, extração de dados da chave de 44 dígitos e cálculo automático do `cDV` (`gerarChaveAcesso`, `validarChaveAcesso`, `extrairDadosChaveAcesso`, `calcularDigitoVerificador`).
89
+ * ✍️ **Assinatura Digital XMLDSig**: Assinatura no padrão exigido pela SEFAZ (`rsa-sha1` / `enveloped-signature` / `c14n`).
90
+ * 🗺️ **Mapeamento Completo de WebServices por UF**: Resolução automática das URLs oficiais da NF-e 4.00 para todas as 27 UFs (Autorizadores próprios: AM, BA, GO, MG, MS, MT, PE, PR, RS, SP + SVAN, SVRS e contingência SVC-AN / SVC-RS).
91
+ * 📡 **Comunicação SEFAZ (SOAP 1.2)**: Consulta de status do serviço (`consultarStatus`) e autorização síncrona de NF-e (`emitir`) com geração automática do `<nfeProc>`.
92
+ * 📄 **Gerador de DANFE em PDF**: Geração nativa de PDF com código de barras `Code128C` via `Danfe.fromXml()`.
93
+ * 📘 **Tipagem TypeScript Completa**: Interfaces completas da NF-e / NFC-e 4.00 (incluindo os novos grupos de IBS/CBS da Reforma Tributária).
94
+
95
+ ## 🛡️ Segurança
96
+
97
+ * **Nunca** faça commit do seu arquivo `.pfx` ou da sua senha para o GitHub.
98
+ * O arquivo `.gitignore` já vem configurado para ignorar extensões de certificados por padrão.
99
+
100
+ ## 🤝 Contribuições
101
+
102
+ As próximas etapas envolvem suporte a eventos (Cancelamento, Carta de Correção), Consulta de Protocolo por chave e Inutilização. Toda contribuição da comunidade Node.js brasileira é bem-vinda!
103
+
104
+ ## 👨‍💻 Autor
105
+
106
+ Criado e idealizado por **Rafael Conrado**.
107
+ Se você curtiu o projeto, me dê um "Alô" nas redes:
108
+ * [GitHub - @rafconrado](https://github.com/rafconrado)
109
+ * [LinkedIn](https://www.linkedin.com/in/rafconradoo/)
110
+
111
+ ## 📝 Licença
112
+
113
+ MIT License
@@ -1,12 +1,8 @@
1
+ import { Certificado } from './Certificado.js';
1
2
  export declare class Assinador {
2
3
  private privateKeyPem;
3
4
  private publicCertPem;
4
- constructor(pfxBuffer: Buffer, password?: string | undefined);
5
- /**
6
- * Extrai a chave privada e o certificado público do PFX
7
- */
8
- private extractPemFromPfx;
9
- private getLeafCert;
5
+ constructor(certificadoOuPfx: Certificado | Buffer, password?: string | undefined);
10
6
  /**
11
7
  * Assina o XML da Nota Fiscal Eletrônica no padrão SEFAZ (XMLDSig)
12
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Assinador.d.ts","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"AAIA,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAE9B,YAAY,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAI3D;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,WAAW;IAanB;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqC3C;CACF"}
1
+ {"version":3,"file":"Assinador.d.ts","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAE9B,YAAY,gBAAgB,EAAE,WAAW,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAQhF;IAED;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqC3C;CACF"}
package/dist/Assinador.js CHANGED
@@ -1,50 +1,17 @@
1
1
  import { SignedXml } from 'xml-crypto';
2
- import forge from 'node-forge';
3
2
  import { DOMParser } from '@xmldom/xmldom';
3
+ import { Certificado } from './Certificado.js';
4
4
  export class Assinador {
5
5
  privateKeyPem;
6
6
  publicCertPem;
7
- constructor(pfxBuffer, password) {
8
- const { privateKey, certificate } = this.extractPemFromPfx(pfxBuffer, password);
7
+ constructor(certificadoOuPfx, password) {
8
+ const cert = certificadoOuPfx instanceof Certificado
9
+ ? certificadoOuPfx
10
+ : new Certificado(certificadoOuPfx, password);
11
+ const { privateKey, certificate } = cert.getPem();
9
12
  this.privateKeyPem = privateKey;
10
13
  this.publicCertPem = certificate;
11
14
  }
12
- /**
13
- * Extrai a chave privada e o certificado público do PFX
14
- */
15
- extractPemFromPfx(pfxBuffer, password) {
16
- const p12Asn1 = forge.asn1.fromDer(pfxBuffer.toString('binary'));
17
- const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, password || '');
18
- let privateKeyPem = '';
19
- let certPem = '';
20
- const certBagOid = forge.pki.oids.certBag;
21
- const certBags = p12.getBags({ bagType: certBagOid })[certBagOid] ?? [];
22
- const cert = this.getLeafCert(certBags);
23
- if (cert) {
24
- certPem = forge.pki.certificateToPem(cert);
25
- }
26
- const keyBagOid = forge.pki.oids.pkcs8ShroudedKeyBag;
27
- const keyBags = p12.getBags({ bagType: keyBagOid });
28
- const key = keyBags[keyBagOid]?.[0]?.key;
29
- if (key) {
30
- privateKeyPem = forge.pki.privateKeyToPem(key);
31
- }
32
- if (!privateKeyPem || !certPem) {
33
- throw new Error('Não foi possível extrair a chave privada ou o certificado do PFX.');
34
- }
35
- return { privateKey: privateKeyPem, certificate: certPem };
36
- }
37
- getLeafCert(certBags) {
38
- for (const bag of certBags) {
39
- if (!bag.cert)
40
- continue;
41
- const isCa = bag.cert.extensions?.some((ext) => ext.name === 'basicConstraints' && ext.cA === true);
42
- if (!isCa) {
43
- return bag.cert;
44
- }
45
- }
46
- return certBags[0]?.cert;
47
- }
48
15
  /**
49
16
  * Assina o XML da Nota Fiscal Eletrônica no padrão SEFAZ (XMLDSig)
50
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Assinador.js","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Assinador.js","sourceRoot":"","sources":["../src/Assinador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,SAAS;IACZ,aAAa,CAAS;IACtB,aAAa,CAAS;IAE9B,YAAY,gBAAsC,EAAE,QAA6B;QAC/E,MAAM,IAAI,GACR,gBAAgB,YAAY,WAAW;YACrC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,MAAc;QACjC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,sDAAsD;QACtD,GAAG,CAAC,YAAY,CAAC;YACf,KAAK,EAAE,YAAY,EAAE,IAAI;YACzB,UAAU,EAAE;gBACV,uDAAuD;gBACvD,iDAAiD;aAClD;YACD,eAAe,EAAE,wCAAwC;YACzD,GAAG,EAAE,IAAI,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,GAAG,CAAC,kBAAkB,GAAG,4CAA4C,CAAC;QACtE,GAAG,CAAC,yBAAyB,GAAG,iDAAiD,CAAC;QAElF,8CAA8C;QAC9C,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjD,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC3B,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,EAAE;SACtE,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;CACF"}
@@ -1,13 +1,39 @@
1
1
  import https from 'https';
2
+ export interface DadosCertificado {
3
+ nomeComum: string;
4
+ cnpjOuCpf?: string | undefined;
5
+ emissor: string;
6
+ validoDe: Date;
7
+ validoAte: Date;
8
+ estaValido: boolean;
9
+ diasParaVencer: number;
10
+ }
2
11
  export declare class Certificado {
3
12
  pfxBuffer: Buffer;
4
13
  password?: string | undefined;
14
+ private cacheExtraido?;
5
15
  constructor(pfxBuffer: Buffer, password?: string | undefined);
16
+ /**
17
+ * Retorna a chave privada e o certificado público em formato PEM.
18
+ */
19
+ getPem(): {
20
+ privateKey: string;
21
+ certificate: string;
22
+ };
6
23
  /**
7
24
  * Retorna um https.Agent configurado com o certificado para autenticação mútua TLS (exigida pela SEFAZ).
8
25
  */
9
26
  getHttpsAgent(): https.Agent;
10
- private extractPemFromPfx;
27
+ /**
28
+ * Retorna metadados e informações de validade do certificado A1 (ICP-Brasil).
29
+ */
30
+ getDados(): DadosCertificado;
31
+ /**
32
+ * Indica se o certificado está dentro do prazo de validade na data atual.
33
+ */
34
+ estaValido(): boolean;
35
+ private extractFromPfx;
11
36
  private getLeafCert;
37
+ private getAttrValue;
12
38
  }
13
39
  //# sourceMappingURL=Certificado.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Certificado.d.ts","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,qBAAa,WAAW;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,YAAY,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAG3D;IAED;;OAEG;IACI,aAAa,IAAI,KAAK,CAAC,KAAK,CAOlC;IAED,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,WAAW;CAYpB"}
1
+ {"version":3,"file":"Certificado.d.ts","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAQD,qBAAa,WAAW;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,aAAa,CAAC,CAA0B;IAEhD,YAAY,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAG3D;IAED;;OAEG;IACI,MAAM,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAG3D;IAED;;OAEG;IACI,aAAa,IAAI,KAAK,CAAC,KAAK,CAOlC;IAED;;OAEG;IACI,QAAQ,IAAI,gBAAgB,CAyBlC;IAED;;OAEG;IACI,UAAU,IAAI,OAAO,CAE3B;IAED,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,YAAY;CAOrB"}
@@ -3,22 +3,64 @@ import forge from 'node-forge';
3
3
  export class Certificado {
4
4
  pfxBuffer;
5
5
  password;
6
+ cacheExtraido;
6
7
  constructor(pfxBuffer, password) {
7
8
  this.pfxBuffer = pfxBuffer;
8
9
  this.password = password;
9
10
  }
11
+ /**
12
+ * Retorna a chave privada e o certificado público em formato PEM.
13
+ */
14
+ getPem() {
15
+ const { privateKey, certificate } = this.extractFromPfx();
16
+ return { privateKey, certificate };
17
+ }
10
18
  /**
11
19
  * Retorna um https.Agent configurado com o certificado para autenticação mútua TLS (exigida pela SEFAZ).
12
20
  */
13
21
  getHttpsAgent() {
14
- const { privateKey, certificate } = this.extractPemFromPfx();
22
+ const { privateKey, certificate } = this.getPem();
15
23
  return new https.Agent({
16
24
  cert: certificate,
17
25
  key: privateKey,
18
26
  rejectUnauthorized: false, // Em ambientes de homologação da Sefaz, a cadeia pode ser inválida
19
27
  });
20
28
  }
21
- extractPemFromPfx() {
29
+ /**
30
+ * Retorna metadados e informações de validade do certificado A1 (ICP-Brasil).
31
+ */
32
+ getDados() {
33
+ const { leafCert } = this.extractFromPfx();
34
+ const nomeComum = this.getAttrValue(leafCert.subject.attributes, 'CN');
35
+ const emissor = this.getAttrValue(leafCert.issuer.attributes, 'CN') ||
36
+ this.getAttrValue(leafCert.issuer.attributes, 'O');
37
+ const matchDoc = nomeComum.match(/:(\d{11}|\d{14})\b/) ?? nomeComum.match(/\b(\d{14})\b/);
38
+ const cnpjOuCpf = matchDoc?.[1];
39
+ const validoDe = leafCert.validity.notBefore;
40
+ const validoAte = leafCert.validity.notAfter;
41
+ const agora = new Date();
42
+ const estaValido = agora >= validoDe && agora <= validoAte;
43
+ const diasParaVencer = Math.floor((validoAte.getTime() - agora.getTime()) / (1000 * 60 * 60 * 24));
44
+ return {
45
+ nomeComum,
46
+ cnpjOuCpf,
47
+ emissor,
48
+ validoDe,
49
+ validoAte,
50
+ estaValido,
51
+ diasParaVencer,
52
+ };
53
+ }
54
+ /**
55
+ * Indica se o certificado está dentro do prazo de validade na data atual.
56
+ */
57
+ estaValido() {
58
+ return this.getDados().estaValido;
59
+ }
60
+ extractFromPfx() {
61
+ if (this.cacheExtraido) {
62
+ return this.cacheExtraido;
63
+ }
22
64
  const p12Asn1 = forge.asn1.fromDer(this.pfxBuffer.toString('binary'));
23
65
  const p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, this.password ?? '');
24
66
  const certBagOid = forge.pki.oids.certBag;
@@ -29,10 +71,15 @@ export class Certificado {
29
71
  const keyBags = p12.getBags({ bagType: keyBagOid })[keyBagOid] ?? [];
30
72
  const key = keyBags[0]?.key;
31
73
  const privateKeyPem = key ? forge.pki.privateKeyToPem(key) : '';
32
- if (!privateKeyPem || !certPem) {
74
+ if (!privateKeyPem || !certPem || !cert) {
33
75
  throw new Error('Não foi possível extrair a chave privada ou o certificado do PFX.');
34
76
  }
35
- return { privateKey: privateKeyPem, certificate: certPem };
77
+ this.cacheExtraido = {
78
+ privateKey: privateKeyPem,
79
+ certificate: certPem,
80
+ leafCert: cert,
81
+ };
82
+ return this.cacheExtraido;
36
83
  }
37
84
  getLeafCert(certBags) {
38
85
  for (const bag of certBags) {
@@ -45,5 +92,9 @@ export class Certificado {
45
92
  }
46
93
  return certBags[0]?.cert;
47
94
  }
95
+ getAttrValue(attributes, shortName) {
96
+ const field = attributes.find((attr) => attr.shortName === shortName);
97
+ return typeof field?.value === 'string' ? field.value : '';
98
+ }
48
99
  }
49
100
  //# sourceMappingURL=Certificado.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Certificado.js","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,OAAO,WAAW;IACf,SAAS,CAAS;IAClB,QAAQ,CAAsB;IAErC,YAAY,SAAiB,EAAE,QAA6B;QAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7D,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,UAAU;YACf,kBAAkB,EAAE,KAAK,EAAE,mEAAmE;SAC/F,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAiB,CAAC;QACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAA6B,CAAC;QAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5B,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC7D,CAAC;IAEO,WAAW,CAAC,QAA4B;QAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,SAAS;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CACpC,CAAC,GAAoC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAC7F,CAAC;YACF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,GAAG,CAAC,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"Certificado.js","sourceRoot":"","sources":["../src/Certificado.ts"],"names":[],"mappings":"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"}
package/dist/NFe.d.ts CHANGED
@@ -1,17 +1,20 @@
1
1
  import { Certificado } from './Certificado.js';
2
2
  import type { DadosNFe, RetornoSefaz } from './types.js';
3
- export type AmbienteSefaz = 'producao' | 'homologacao';
3
+ import { type AmbienteSefaz, type AutorizadorSefaz, type ServicoSefaz, type SiglaUF } from './webservices.js';
4
+ export type { AmbienteSefaz } from './webservices.js';
4
5
  export interface ConfiguracaoNFe {
5
- uf: string;
6
+ uf: SiglaUF | (string & {});
6
7
  ambiente: AmbienteSefaz;
7
8
  certificado: Certificado;
9
+ contingencia?: boolean | undefined;
8
10
  }
9
11
  export declare class NFe {
10
12
  private config;
11
13
  private assinador;
12
14
  constructor(config: ConfiguracaoNFe);
13
- private getUrl;
14
- private getCodigoUF;
15
+ getAutorizador(): AutorizadorSefaz;
16
+ getUrl(servico: ServicoSefaz): string;
17
+ getCodigoUF(): string;
15
18
  consultarStatus(): Promise<RetornoSefaz>;
16
19
  /**
17
20
  * Recebe os dados da NFe em formato JS/JSON, converte para XML, assina e envia.
package/dist/NFe.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"NFe.d.ts","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAY;IAE7B,YAAY,MAAM,EAAE,eAAe,EAGlC;IAED,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,WAAW;IAUN,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAOpD;IAED;;OAEG;IACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B7D;YAEa,UAAU;CAmCzB"}
1
+ {"version":3,"file":"NFe.d.ts","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,OAAO,EACb,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAY;IAE7B,YAAY,MAAM,EAAE,eAAe,EAGlC;IAEM,cAAc,IAAI,gBAAgB,CAExC;IAEM,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAO3C;IAEM,WAAW,IAAI,MAAM,CAE3B;IAEY,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAOpD;IAED;;OAEG;IACU,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B7D;YAEa,UAAU;CAmCzB"}
package/dist/NFe.js CHANGED
@@ -2,34 +2,22 @@ import axios from 'axios';
2
2
  import { Assinador } from './Assinador.js';
3
3
  import { create } from 'xmlbuilder2';
4
4
  import { DOMParser } from '@xmldom/xmldom';
5
+ import { obterAutorizadorPorUF, obterCodigoUF, obterUrlSefaz, } from './webservices.js';
5
6
  export class NFe {
6
7
  config;
7
8
  assinador;
8
9
  constructor(config) {
9
10
  this.config = config;
10
- this.assinador = new Assinador(config.certificado.pfxBuffer, config.certificado.password);
11
+ this.assinador = new Assinador(config.certificado);
12
+ }
13
+ getAutorizador() {
14
+ return obterAutorizadorPorUF(this.config.uf, this.config.contingencia ?? false);
11
15
  }
12
16
  getUrl(servico) {
13
- // SVRS (Atende DF, RS, etc)
14
- const baseUrl = this.config.ambiente === 'homologacao'
15
- ? 'https://nfe-homologacao.svrs.rs.gov.br/ws'
16
- : 'https://nfe.svrs.rs.gov.br/ws';
17
- if (servico === 'status') {
18
- return `${baseUrl}/NfeStatusServico/NfeStatusServico4.asmx`;
19
- }
20
- if (servico === 'autorizacao') {
21
- return `${baseUrl}/NfeAutorizacao/NFeAutorizacao4.asmx`;
22
- }
23
- throw new Error('Serviço desconhecido');
17
+ return obterUrlSefaz(this.config.uf, this.config.ambiente, servico, this.config.contingencia ?? false);
24
18
  }
25
19
  getCodigoUF() {
26
- const ufs = {
27
- AC: '12', AL: '27', AM: '13', AP: '16', BA: '29', CE: '23', DF: '53', ES: '32',
28
- GO: '52', MA: '21', MG: '31', MS: '50', MT: '51', PA: '15', PB: '25', PE: '26',
29
- PI: '22', PR: '41', RJ: '33', RN: '24', RO: '11', RR: '14', RS: '43', SC: '42',
30
- SE: '28', SP: '35', TO: '17',
31
- };
32
- return ufs[this.config.uf.toUpperCase()] || '53';
20
+ return obterCodigoUF(this.config.uf);
33
21
  }
34
22
  async consultarStatus() {
35
23
  const url = this.getUrl('status');
package/dist/NFe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"NFe.js","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NFe.js","sourceRoot":"","sources":["../src/NFe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type SiglaUF } from './webservices.js';
2
+ export interface ParametrosChaveAcesso {
3
+ /** Sigla da UF (ex: 'SP', 'DF') ou código IBGE de 2 dígitos (ex: '35', '53') */
4
+ uf: SiglaUF | (string & {});
5
+ /** Data de emissão (Date, string ISO 'YYYY-MM-DD...' ou 'AAMM') */
6
+ dataEmissao: Date | string;
7
+ /** CNPJ (14 dígitos) ou CPF (11 dígitos) do emitente */
8
+ cnpjOuCpf: string;
9
+ /** Modelo do documento fiscal ('55' para NF-e, '65' para NFC-e). Padrão: '55' */
10
+ modelo?: '55' | '65' | number | string | undefined;
11
+ /** Série do documento fiscal (1 a 3 dígitos) */
12
+ serie: number | string;
13
+ /** Número da NF-e (1 a 9 dígitos) */
14
+ numero: number | string;
15
+ /** Tipo de emissão (1 = Normal, 6 = SVC-AN, 7 = SVC-RS, 9 = Offline, etc.) */
16
+ tpEmis: number | string;
17
+ /** Código numérico aleatório de 8 dígitos que compõe a chave (cNF) */
18
+ cNF: number | string;
19
+ }
20
+ export interface ResultadoChaveAcesso {
21
+ /** Chave de acesso completa com 44 dígitos numéricos */
22
+ chave: string;
23
+ /** Dígito verificador calculado em Módulo 11 (1 dígito) */
24
+ cDV: string;
25
+ /** Identificador para a tag `<infNFe Id="NFe...">` */
26
+ id: `NFe${string}`;
27
+ }
28
+ export interface DadosChaveAcesso {
29
+ /** Chave de acesso limpa com 44 dígitos */
30
+ chave: string;
31
+ /** Código IBGE da UF (2 dígitos) */
32
+ cUF: string;
33
+ /** Ano e mês de emissão no formato AAMM */
34
+ aamm: string;
35
+ /** Ano de emissão com 4 dígitos (ex: '2026') */
36
+ ano: string;
37
+ /** Mês de emissão com 2 dígitos (ex: '11') */
38
+ mes: string;
39
+ /** CNPJ (ou CPF com zeros à esquerda) de 14 dígitos */
40
+ cnpj: string;
41
+ /** Modelo do documento fiscal ('55' ou '65') */
42
+ modelo: string;
43
+ /** Série do documento com 3 dígitos */
44
+ serie: string;
45
+ /** Número da nota fiscal com 9 dígitos */
46
+ numero: string;
47
+ /** Tipo de emissão (1 dígito) */
48
+ tpEmis: string;
49
+ /** Código numérico aleatório (8 dígitos) */
50
+ cNF: string;
51
+ /** Dígito verificador (1 dígito) */
52
+ cDV: string;
53
+ /** Indica se o dígito verificador (Módulo 11) é válido */
54
+ valida: boolean;
55
+ }
56
+ /**
57
+ * Calcula o dígito verificador (cDV) em Módulo 11 a partir dos 43 primeiros dígitos da chave.
58
+ */
59
+ export declare function calcularDigitoVerificador(chave43: string): string;
60
+ /**
61
+ * Gera a chave de acesso de 44 dígitos da NF-e/NFC-e e seu dígito verificador (cDV).
62
+ */
63
+ export declare function gerarChaveAcesso(params: ParametrosChaveAcesso): ResultadoChaveAcesso;
64
+ /**
65
+ * Valida se uma chave de acesso (com ou sem o prefixo 'NFe') possui 44 dígitos e cDV válido.
66
+ */
67
+ export declare function validarChaveAcesso(chaveOuId: string): boolean;
68
+ /**
69
+ * Extrai e decompõe os campos que formam uma chave de acesso de 44 dígitos da NF-e/NFC-e.
70
+ */
71
+ export declare function extrairDadosChaveAcesso(chaveOuId: string): DadosChaveAcesso;
72
+ //# sourceMappingURL=chaveAcesso.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chaveAcesso.d.ts","sourceRoot":"","sources":["../src/chaveAcesso.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC5B,mEAAmE;IACnE,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;IAC3B,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,gDAAgD;IAChD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,qCAAqC;IACrC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,EAAE,EAAE,MAAM,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,oBAAoB,CA8BpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAkC3E"}
@@ -0,0 +1,119 @@
1
+ import { obterCodigoUF } from './webservices.js';
2
+ /**
3
+ * Calcula o dígito verificador (cDV) em Módulo 11 a partir dos 43 primeiros dígitos da chave.
4
+ */
5
+ export function calcularDigitoVerificador(chave43) {
6
+ const limpa = chave43.replace(/\D/g, '');
7
+ if (limpa.length !== 43) {
8
+ throw new Error(`A base da chave de acesso deve conter exatamente 43 dígitos (recebido: ${limpa.length}).`);
9
+ }
10
+ let peso = 2;
11
+ let soma = 0;
12
+ for (let i = 42; i >= 0; i--) {
13
+ const digito = Number(limpa[i]);
14
+ soma += digito * peso;
15
+ peso = peso === 9 ? 2 : peso + 1;
16
+ }
17
+ const resto = soma % 11;
18
+ const dv = resto === 0 || resto === 1 ? 0 : 11 - resto;
19
+ return String(dv);
20
+ }
21
+ /**
22
+ * Gera a chave de acesso de 44 dígitos da NF-e/NFC-e e seu dígito verificador (cDV).
23
+ */
24
+ export function gerarChaveAcesso(params) {
25
+ const ufTrim = params.uf.trim();
26
+ const cUF = /^\d{2}$/.test(ufTrim) ? ufTrim : obterCodigoUF(ufTrim);
27
+ const aamm = extrairAnoMes(params.dataEmissao);
28
+ const docLimpo = params.cnpjOuCpf.replace(/\D/g, '');
29
+ if (docLimpo.length !== 11 && docLimpo.length !== 14) {
30
+ throw new Error('O CNPJ/CPF do emitente deve conter 11 (CPF) ou 14 (CNPJ) dígitos.');
31
+ }
32
+ const cnpj = docLimpo.padStart(14, '0');
33
+ const mod = String(params.modelo ?? '55').padStart(2, '0');
34
+ const serie = String(params.serie).replace(/\D/g, '').padStart(3, '0');
35
+ const nNF = String(params.numero).replace(/\D/g, '').padStart(9, '0');
36
+ const tpEmis = String(params.tpEmis).replace(/\D/g, '');
37
+ const cNF = String(params.cNF).replace(/\D/g, '').padStart(8, '0');
38
+ if (tpEmis.length !== 1) {
39
+ throw new Error('O tipo de emissão (tpEmis) deve conter exatamente 1 dígito.');
40
+ }
41
+ const base43 = `${cUF}${aamm}${cnpj}${mod}${serie}${nNF}${tpEmis}${cNF}`;
42
+ const cDV = calcularDigitoVerificador(base43);
43
+ const chave = `${base43}${cDV}`;
44
+ return {
45
+ chave,
46
+ cDV,
47
+ id: `NFe${chave}`,
48
+ };
49
+ }
50
+ /**
51
+ * Valida se uma chave de acesso (com ou sem o prefixo 'NFe') possui 44 dígitos e cDV válido.
52
+ */
53
+ export function validarChaveAcesso(chaveOuId) {
54
+ const limpa = chaveOuId.trim().replace(/^NFe/i, '');
55
+ if (!/^\d{44}$/.test(limpa)) {
56
+ return false;
57
+ }
58
+ const dvEsperado = calcularDigitoVerificador(limpa.slice(0, 43));
59
+ return limpa[43] === dvEsperado;
60
+ }
61
+ /**
62
+ * Extrai e decompõe os campos que formam uma chave de acesso de 44 dígitos da NF-e/NFC-e.
63
+ */
64
+ export function extrairDadosChaveAcesso(chaveOuId) {
65
+ const limpa = chaveOuId.trim().replace(/^NFe/i, '').replace(/\D/g, '');
66
+ if (limpa.length !== 44) {
67
+ throw new Error(`A chave de acesso deve conter 44 dígitos (recebido: ${limpa.length}).`);
68
+ }
69
+ const cUF = limpa.slice(0, 2);
70
+ const aamm = limpa.slice(2, 6);
71
+ const ano = `20${aamm.slice(0, 2)}`;
72
+ const mes = aamm.slice(2, 4);
73
+ const cnpj = limpa.slice(6, 20);
74
+ const modelo = limpa.slice(20, 22);
75
+ const serie = limpa.slice(22, 25);
76
+ const numero = limpa.slice(25, 34);
77
+ const tpEmis = limpa.slice(34, 35);
78
+ const cNF = limpa.slice(35, 43);
79
+ const cDV = limpa.slice(43, 44);
80
+ const valida = calcularDigitoVerificador(limpa.slice(0, 43)) === cDV;
81
+ return {
82
+ chave: limpa,
83
+ cUF,
84
+ aamm,
85
+ ano,
86
+ mes,
87
+ cnpj,
88
+ modelo,
89
+ serie,
90
+ numero,
91
+ tpEmis,
92
+ cNF,
93
+ cDV,
94
+ valida,
95
+ };
96
+ }
97
+ function extrairAnoMes(data) {
98
+ if (data instanceof Date) {
99
+ const ano = String(data.getFullYear()).slice(-2);
100
+ const mes = String(data.getMonth() + 1).padStart(2, '0');
101
+ return `${ano}${mes}`;
102
+ }
103
+ const str = data.trim();
104
+ if (/^\d{4}$/.test(str)) {
105
+ return str;
106
+ }
107
+ const matchIso = str.match(/^(\d{4})-(\d{2})/);
108
+ if (matchIso?.[1] && matchIso[2]) {
109
+ return `${matchIso[1].slice(-2)}${matchIso[2]}`;
110
+ }
111
+ const parsed = new Date(str);
112
+ if (!Number.isNaN(parsed.getTime())) {
113
+ const ano = String(parsed.getFullYear()).slice(-2);
114
+ const mes = String(parsed.getMonth() + 1).padStart(2, '0');
115
+ return `${ano}${mes}`;
116
+ }
117
+ throw new Error(`Formato de dataEmissao inválido: "${data}". Use Date, string ISO ou 'AAMM'.`);
118
+ }
119
+ //# sourceMappingURL=chaveAcesso.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chaveAcesso.js","sourceRoot":"","sources":["../src/chaveAcesso.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,12 @@
1
1
  export { NFe } from './NFe.js';
2
2
  export type { ConfiguracaoNFe, AmbienteSefaz } from './NFe.js';
3
3
  export { Certificado } from './Certificado.js';
4
+ export type { DadosCertificado } from './Certificado.js';
4
5
  export { Assinador } from './Assinador.js';
5
6
  export { Danfe } from './Danfe.js';
7
+ export { AUTORIZADOR_CONTINGENCIA_POR_UF, AUTORIZADOR_POR_UF, CODIGOS_UF, URLS_SEFAZ, normalizarUF, obterAutorizadorPorUF, obterCodigoUF, obterUrlSefaz, } from './webservices.js';
8
+ export type { AutorizadorSefaz, MapaServicosSefaz, ServicoSefaz, SiglaUF, } from './webservices.js';
9
+ export { calcularDigitoVerificador, extrairDadosChaveAcesso, gerarChaveAcesso, validarChaveAcesso, } from './chaveAcesso.js';
10
+ export type { DadosChaveAcesso, ParametrosChaveAcesso, ResultadoChaveAcesso, } from './chaveAcesso.js';
6
11
  export type * from './types.js';
7
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,mBAAmB,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,4 +2,6 @@ export { NFe } from './NFe.js';
2
2
  export { Certificado } from './Certificado.js';
3
3
  export { Assinador } from './Assinador.js';
4
4
  export { Danfe } from './Danfe.js';
5
+ export { AUTORIZADOR_CONTINGENCIA_POR_UF, AUTORIZADOR_POR_UF, CODIGOS_UF, URLS_SEFAZ, normalizarUF, obterAutorizadorPorUF, obterCodigoUF, obterUrlSefaz, } from './webservices.js';
6
+ export { calcularDigitoVerificador, extrairDadosChaveAcesso, gerarChaveAcesso, validarChaveAcesso, } from './chaveAcesso.js';
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type AmbienteSefaz = 'producao' | 'homologacao';
2
+ export type SiglaUF = 'AC' | 'AL' | 'AM' | 'AP' | 'BA' | 'CE' | 'DF' | 'ES' | 'GO' | 'MA' | 'MG' | 'MS' | 'MT' | 'PA' | 'PB' | 'PE' | 'PI' | 'PR' | 'RJ' | 'RN' | 'RO' | 'RR' | 'RS' | 'SC' | 'SE' | 'SP' | 'TO';
3
+ export type AutorizadorSefaz = 'AM' | 'BA' | 'GO' | 'MG' | 'MS' | 'MT' | 'PE' | 'PR' | 'RS' | 'SP' | 'SVAN' | 'SVRS' | 'SVC-AN' | 'SVC-RS';
4
+ export type ServicoSefaz = 'status' | 'autorizacao' | 'retAutorizacao' | 'consultaProtocolo' | 'inutilizacao' | 'recepcaoEvento';
5
+ export type MapaServicosSefaz = Record<ServicoSefaz, string>;
6
+ export declare const CODIGOS_UF: Record<SiglaUF, string>;
7
+ export declare const AUTORIZADOR_POR_UF: Record<SiglaUF, AutorizadorSefaz>;
8
+ export declare const AUTORIZADOR_CONTINGENCIA_POR_UF: Record<SiglaUF, 'SVC-AN' | 'SVC-RS'>;
9
+ export declare const URLS_SEFAZ: Record<AutorizadorSefaz, Record<AmbienteSefaz, MapaServicosSefaz>>;
10
+ export declare function normalizarUF(uf: string): SiglaUF;
11
+ export declare function obterCodigoUF(uf: string): string;
12
+ export declare function obterAutorizadorPorUF(uf: string, contingencia?: boolean): AutorizadorSefaz;
13
+ export declare function obterUrlSefaz(uf: string, ambiente: AmbienteSefaz, servico: ServicoSefaz, contingencia?: boolean): string;
14
+ //# sourceMappingURL=webservices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webservices.d.ts","sourceRoot":"","sources":["../src/webservices.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;AAEvD,MAAM,MAAM,OAAO,GACf,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,MAAM,gBAAgB,GACxB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,MAAM,GACN,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,aAAa,GACb,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,gBAAgB,CAAC;AAErB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CA4B9C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CA4BhE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CA4BhF,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CA6PzF,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMhD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,gBAAgB,CAGxF;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,YAAY,EACrB,YAAY,UAAQ,GACnB,MAAM,CAOR"}
@@ -0,0 +1,365 @@
1
+ export const CODIGOS_UF = {
2
+ AC: '12',
3
+ AL: '27',
4
+ AM: '13',
5
+ AP: '16',
6
+ BA: '29',
7
+ CE: '23',
8
+ DF: '53',
9
+ ES: '32',
10
+ GO: '52',
11
+ MA: '21',
12
+ MG: '31',
13
+ MS: '50',
14
+ MT: '51',
15
+ PA: '15',
16
+ PB: '25',
17
+ PE: '26',
18
+ PI: '22',
19
+ PR: '41',
20
+ RJ: '33',
21
+ RN: '24',
22
+ RO: '11',
23
+ RR: '14',
24
+ RS: '43',
25
+ SC: '42',
26
+ SE: '28',
27
+ SP: '35',
28
+ TO: '17',
29
+ };
30
+ export const AUTORIZADOR_POR_UF = {
31
+ AC: 'SVRS',
32
+ AL: 'SVRS',
33
+ AM: 'AM',
34
+ AP: 'SVRS',
35
+ BA: 'BA',
36
+ CE: 'SVRS',
37
+ DF: 'SVRS',
38
+ ES: 'SVRS',
39
+ GO: 'GO',
40
+ MA: 'SVAN',
41
+ MG: 'MG',
42
+ MS: 'MS',
43
+ MT: 'MT',
44
+ PA: 'SVRS',
45
+ PB: 'SVRS',
46
+ PE: 'PE',
47
+ PI: 'SVRS',
48
+ PR: 'PR',
49
+ RJ: 'SVRS',
50
+ RN: 'SVRS',
51
+ RO: 'SVRS',
52
+ RR: 'SVRS',
53
+ RS: 'RS',
54
+ SC: 'SVRS',
55
+ SE: 'SVRS',
56
+ SP: 'SP',
57
+ TO: 'SVRS',
58
+ };
59
+ export const AUTORIZADOR_CONTINGENCIA_POR_UF = {
60
+ AC: 'SVC-AN',
61
+ AL: 'SVC-AN',
62
+ AM: 'SVC-RS',
63
+ AP: 'SVC-AN',
64
+ BA: 'SVC-RS',
65
+ CE: 'SVC-AN',
66
+ DF: 'SVC-AN',
67
+ ES: 'SVC-AN',
68
+ GO: 'SVC-RS',
69
+ MA: 'SVC-RS',
70
+ MG: 'SVC-AN',
71
+ MS: 'SVC-RS',
72
+ MT: 'SVC-RS',
73
+ PA: 'SVC-AN',
74
+ PB: 'SVC-AN',
75
+ PE: 'SVC-RS',
76
+ PI: 'SVC-AN',
77
+ PR: 'SVC-RS',
78
+ RJ: 'SVC-AN',
79
+ RN: 'SVC-AN',
80
+ RO: 'SVC-AN',
81
+ RR: 'SVC-AN',
82
+ RS: 'SVC-AN',
83
+ SC: 'SVC-AN',
84
+ SE: 'SVC-AN',
85
+ SP: 'SVC-AN',
86
+ TO: 'SVC-AN',
87
+ };
88
+ export const URLS_SEFAZ = {
89
+ AM: {
90
+ producao: {
91
+ status: 'https://nfe.sefaz.am.gov.br/services2/services/NfeStatusServico4',
92
+ autorizacao: 'https://nfe.sefaz.am.gov.br/services2/services/NfeAutorizacao4',
93
+ retAutorizacao: 'https://nfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao4',
94
+ consultaProtocolo: 'https://nfe.sefaz.am.gov.br/services2/services/NfeConsulta4',
95
+ inutilizacao: 'https://nfe.sefaz.am.gov.br/services2/services/NfeInutilizacao4',
96
+ recepcaoEvento: 'https://nfe.sefaz.am.gov.br/services2/services/RecepcaoEvento4',
97
+ },
98
+ homologacao: {
99
+ status: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeStatusServico4',
100
+ autorizacao: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeAutorizacao4',
101
+ retAutorizacao: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeRetAutorizacao4',
102
+ consultaProtocolo: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeConsulta4',
103
+ inutilizacao: 'https://homnfe.sefaz.am.gov.br/services2/services/NfeInutilizacao4',
104
+ recepcaoEvento: 'https://homnfe.sefaz.am.gov.br/services2/services/RecepcaoEvento4',
105
+ },
106
+ },
107
+ BA: {
108
+ producao: {
109
+ status: 'https://nfe.sefaz.ba.gov.br/webservices/NFeStatusServico4/NFeStatusServico4.asmx',
110
+ autorizacao: 'https://nfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx',
111
+ retAutorizacao: 'https://nfe.sefaz.ba.gov.br/webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
112
+ consultaProtocolo: 'https://nfe.sefaz.ba.gov.br/webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
113
+ inutilizacao: 'https://nfe.sefaz.ba.gov.br/webservices/NFeInutilizacao4/NFeInutilizacao4.asmx',
114
+ recepcaoEvento: 'https://nfe.sefaz.ba.gov.br/webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
115
+ },
116
+ homologacao: {
117
+ status: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeStatusServico4/NFeStatusServico4.asmx',
118
+ autorizacao: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeAutorizacao4/NFeAutorizacao4.asmx',
119
+ retAutorizacao: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
120
+ consultaProtocolo: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
121
+ inutilizacao: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeInutilizacao4/NFeInutilizacao4.asmx',
122
+ recepcaoEvento: 'https://hnfe.sefaz.ba.gov.br/webservices/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
123
+ },
124
+ },
125
+ GO: {
126
+ producao: {
127
+ status: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeStatusServico4',
128
+ autorizacao: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeAutorizacao4',
129
+ retAutorizacao: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4',
130
+ consultaProtocolo: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4',
131
+ inutilizacao: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeInutilizacao4',
132
+ recepcaoEvento: 'https://nfe.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4',
133
+ },
134
+ homologacao: {
135
+ status: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeStatusServico4',
136
+ autorizacao: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeAutorizacao4',
137
+ retAutorizacao: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeRetAutorizacao4',
138
+ consultaProtocolo: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeConsultaProtocolo4',
139
+ inutilizacao: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeInutilizacao4',
140
+ recepcaoEvento: 'https://homolog.sefaz.go.gov.br/nfe/services/NFeRecepcaoEvento4',
141
+ },
142
+ },
143
+ MG: {
144
+ producao: {
145
+ status: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4',
146
+ autorizacao: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeAutorizacao4',
147
+ retAutorizacao: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeRetAutorizacao4',
148
+ consultaProtocolo: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeConsultaProtocolo4',
149
+ inutilizacao: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeInutilizacao4',
150
+ recepcaoEvento: 'https://nfe.fazenda.mg.gov.br/nfe2/services/NFeRecepcaoEvento4',
151
+ },
152
+ homologacao: {
153
+ status: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeStatusServico4',
154
+ autorizacao: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeAutorizacao4',
155
+ retAutorizacao: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeRetAutorizacao4',
156
+ consultaProtocolo: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeConsultaProtocolo4',
157
+ inutilizacao: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeInutilizacao4',
158
+ recepcaoEvento: 'https://hnfe.fazenda.mg.gov.br/nfe2/services/NFeRecepcaoEvento4',
159
+ },
160
+ },
161
+ MS: {
162
+ producao: {
163
+ status: 'https://nfe.sefaz.ms.gov.br/ws/NFeStatusServico4',
164
+ autorizacao: 'https://nfe.sefaz.ms.gov.br/ws/NFeAutorizacao4',
165
+ retAutorizacao: 'https://nfe.sefaz.ms.gov.br/ws/NFeRetAutorizacao4',
166
+ consultaProtocolo: 'https://nfe.sefaz.ms.gov.br/ws/NFeConsultaProtocolo4',
167
+ inutilizacao: 'https://nfe.sefaz.ms.gov.br/ws/NFeInutilizacao4',
168
+ recepcaoEvento: 'https://nfe.sefaz.ms.gov.br/ws/NFeRecepcaoEvento4',
169
+ },
170
+ homologacao: {
171
+ status: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeStatusServico4',
172
+ autorizacao: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeAutorizacao4',
173
+ retAutorizacao: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeRetAutorizacao4',
174
+ consultaProtocolo: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeConsultaProtocolo4',
175
+ inutilizacao: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeInutilizacao4',
176
+ recepcaoEvento: 'https://hom.nfe.sefaz.ms.gov.br/ws/NFeRecepcaoEvento4',
177
+ },
178
+ },
179
+ MT: {
180
+ producao: {
181
+ status: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4',
182
+ autorizacao: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4',
183
+ retAutorizacao: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4',
184
+ consultaProtocolo: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4',
185
+ inutilizacao: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4',
186
+ recepcaoEvento: 'https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4',
187
+ },
188
+ homologacao: {
189
+ status: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeStatusServico4',
190
+ autorizacao: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeAutorizacao4',
191
+ retAutorizacao: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeRetAutorizacao4',
192
+ consultaProtocolo: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeConsulta4',
193
+ inutilizacao: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/NfeInutilizacao4',
194
+ recepcaoEvento: 'https://homologacao.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento4',
195
+ },
196
+ },
197
+ PE: {
198
+ producao: {
199
+ status: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeStatusServico4',
200
+ autorizacao: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4',
201
+ retAutorizacao: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeRetAutorizacao4',
202
+ consultaProtocolo: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4',
203
+ inutilizacao: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeInutilizacao4',
204
+ recepcaoEvento: 'https://nfe.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4',
205
+ },
206
+ homologacao: {
207
+ status: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeStatusServico4',
208
+ autorizacao: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4',
209
+ retAutorizacao: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRetAutorizacao4',
210
+ consultaProtocolo: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4',
211
+ inutilizacao: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeInutilizacao4',
212
+ recepcaoEvento: 'https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4',
213
+ },
214
+ },
215
+ PR: {
216
+ producao: {
217
+ status: 'https://nfe.sefa.pr.gov.br/nfe/NFeStatusServico4',
218
+ autorizacao: 'https://nfe.sefa.pr.gov.br/nfe/NFeAutorizacao4',
219
+ retAutorizacao: 'https://nfe.sefa.pr.gov.br/nfe/NFeRetAutorizacao4',
220
+ consultaProtocolo: 'https://nfe.sefa.pr.gov.br/nfe/NFeConsultaProtocolo4',
221
+ inutilizacao: 'https://nfe.sefa.pr.gov.br/nfe/NFeInutilizacao4',
222
+ recepcaoEvento: 'https://nfe.sefa.pr.gov.br/nfe/NFeRecepcaoEvento4',
223
+ },
224
+ homologacao: {
225
+ status: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeStatusServico4',
226
+ autorizacao: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeAutorizacao4',
227
+ retAutorizacao: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeRetAutorizacao4',
228
+ consultaProtocolo: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeConsultaProtocolo4',
229
+ inutilizacao: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeInutilizacao4',
230
+ recepcaoEvento: 'https://homologacao.nfe.sefa.pr.gov.br/nfe/NFeRecepcaoEvento4',
231
+ },
232
+ },
233
+ RS: {
234
+ producao: {
235
+ status: 'https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
236
+ autorizacao: 'https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
237
+ retAutorizacao: 'https://nfe.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
238
+ consultaProtocolo: 'https://nfe.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
239
+ inutilizacao: 'https://nfe.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
240
+ recepcaoEvento: 'https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
241
+ },
242
+ homologacao: {
243
+ status: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
244
+ autorizacao: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
245
+ retAutorizacao: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
246
+ consultaProtocolo: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
247
+ inutilizacao: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
248
+ recepcaoEvento: 'https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
249
+ },
250
+ },
251
+ SP: {
252
+ producao: {
253
+ status: 'https://nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx',
254
+ autorizacao: 'https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx',
255
+ retAutorizacao: 'https://nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx',
256
+ consultaProtocolo: 'https://nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx',
257
+ inutilizacao: 'https://nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx',
258
+ recepcaoEvento: 'https://nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx',
259
+ },
260
+ homologacao: {
261
+ status: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfestatusservico4.asmx',
262
+ autorizacao: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeautorizacao4.asmx',
263
+ retAutorizacao: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nferetautorizacao4.asmx',
264
+ consultaProtocolo: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeconsultaprotocolo4.asmx',
265
+ inutilizacao: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nfeinutilizacao4.asmx',
266
+ recepcaoEvento: 'https://homologacao.nfe.fazenda.sp.gov.br/ws/nferecepcaoevento4.asmx',
267
+ },
268
+ },
269
+ SVAN: {
270
+ producao: {
271
+ status: 'https://www.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
272
+ autorizacao: 'https://www.sefazvirtual.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
273
+ retAutorizacao: 'https://www.sefazvirtual.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
274
+ consultaProtocolo: 'https://www.sefazvirtual.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
275
+ inutilizacao: 'https://www.sefazvirtual.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
276
+ recepcaoEvento: 'https://www.sefazvirtual.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
277
+ },
278
+ homologacao: {
279
+ status: 'https://hom.sefazvirtual.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
280
+ autorizacao: 'https://hom.sefazvirtual.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
281
+ retAutorizacao: 'https://hom.sefazvirtual.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
282
+ consultaProtocolo: 'https://hom.sefazvirtual.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
283
+ inutilizacao: 'https://hom.sefazvirtual.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
284
+ recepcaoEvento: 'https://hom.sefazvirtual.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
285
+ },
286
+ },
287
+ SVRS: {
288
+ producao: {
289
+ status: 'https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
290
+ autorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
291
+ retAutorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
292
+ consultaProtocolo: 'https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
293
+ inutilizacao: 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
294
+ recepcaoEvento: 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
295
+ },
296
+ homologacao: {
297
+ status: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
298
+ autorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
299
+ retAutorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
300
+ consultaProtocolo: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
301
+ inutilizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
302
+ recepcaoEvento: 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
303
+ },
304
+ },
305
+ 'SVC-AN': {
306
+ producao: {
307
+ status: 'https://www.svc.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
308
+ autorizacao: 'https://www.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
309
+ retAutorizacao: 'https://www.svc.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
310
+ consultaProtocolo: 'https://www.svc.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
311
+ inutilizacao: 'https://www.svc.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
312
+ recepcaoEvento: 'https://www.svc.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
313
+ },
314
+ homologacao: {
315
+ status: 'https://hom.svc.fazenda.gov.br/NFeStatusServico4/NFeStatusServico4.asmx',
316
+ autorizacao: 'https://hom.svc.fazenda.gov.br/NFeAutorizacao4/NFeAutorizacao4.asmx',
317
+ retAutorizacao: 'https://hom.svc.fazenda.gov.br/NFeRetAutorizacao4/NFeRetAutorizacao4.asmx',
318
+ consultaProtocolo: 'https://hom.svc.fazenda.gov.br/NFeConsultaProtocolo4/NFeConsultaProtocolo4.asmx',
319
+ inutilizacao: 'https://hom.svc.fazenda.gov.br/NFeInutilizacao4/NFeInutilizacao4.asmx',
320
+ recepcaoEvento: 'https://hom.svc.fazenda.gov.br/NFeRecepcaoEvento4/NFeRecepcaoEvento4.asmx',
321
+ },
322
+ },
323
+ 'SVC-RS': {
324
+ producao: {
325
+ status: 'https://nfe.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
326
+ autorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
327
+ retAutorizacao: 'https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
328
+ consultaProtocolo: 'https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
329
+ inutilizacao: 'https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
330
+ recepcaoEvento: 'https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
331
+ },
332
+ homologacao: {
333
+ status: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico4.asmx',
334
+ autorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao4.asmx',
335
+ retAutorizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao4.asmx',
336
+ consultaProtocolo: 'https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta4.asmx',
337
+ inutilizacao: 'https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao4.asmx',
338
+ recepcaoEvento: 'https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx',
339
+ },
340
+ },
341
+ };
342
+ export function normalizarUF(uf) {
343
+ const sigla = uf.trim().toUpperCase();
344
+ if (!(sigla in CODIGOS_UF)) {
345
+ throw new Error(`UF inválida: "${uf}". Informe uma sigla válida (ex: SP, DF, MG, RS).`);
346
+ }
347
+ return sigla;
348
+ }
349
+ export function obterCodigoUF(uf) {
350
+ const sigla = normalizarUF(uf);
351
+ return CODIGOS_UF[sigla];
352
+ }
353
+ export function obterAutorizadorPorUF(uf, contingencia = false) {
354
+ const sigla = normalizarUF(uf);
355
+ return contingencia ? AUTORIZADOR_CONTINGENCIA_POR_UF[sigla] : AUTORIZADOR_POR_UF[sigla];
356
+ }
357
+ export function obterUrlSefaz(uf, ambiente, servico, contingencia = false) {
358
+ const autorizador = obterAutorizadorPorUF(uf, contingencia);
359
+ const url = URLS_SEFAZ[autorizador]?.[ambiente]?.[servico];
360
+ if (!url) {
361
+ throw new Error(`Serviço "${servico}" não encontrado para o autorizador ${autorizador} (${ambiente}).`);
362
+ }
363
+ return url;
364
+ }
365
+ //# sourceMappingURL=webservices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webservices.js","sourceRoot":"","sources":["../src/webservices.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nfe-lib-node",
3
- "version": "1.1.0",
3
+ "version": "1.4.0",
4
4
  "description": "Biblioteca Node.js para emissão, assinatura e comunicação com webservices de NF-e (SEFAZ)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -48,4 +48,4 @@
48
48
  "ts-node": "^10.9.2",
49
49
  "typescript": "^7.0.2"
50
50
  }
51
- }
51
+ }