@bitize/bitmde 0.17.0 → 0.17.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.17.1] / 2026-09-10
4
+
5
+ ### Adicionado
6
+
7
+ - A CI de publicação passa a conferir se a versão já está no npm antes do `npm publish` e pula a publicação em vez de falhar com `EPUBLISHCONFLICT`. Com isso o release no GitHub deixa de ter exceção: versão publicada à mão — o bootstrap de um nome novo — e re-run de release terminam verdes
8
+
3
9
  ## [0.17.0] / 2026-09-10
4
10
 
5
11
  ### Modificado
package/LICENSE CHANGED
@@ -1,22 +1,22 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Lucas Melo
4
- Copyright (c) 2026 Bitize
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in all
14
- copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Lucas Melo
4
+ Copyright (c) 2026 Bitize
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md CHANGED
@@ -1,398 +1,398 @@
1
- # Bit MD-e
2
-
3
- [![npm version](https://img.shields.io/npm/v/@bitize/bitmde.svg)](https://www.npmjs.com/package/@bitize/bitmde)
4
- [![npm downloads](https://img.shields.io/npm/dt/@bitize/bitmde.svg)](https://npm-stat.com/charts.html?package=@bitize/bitmde)
5
- [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/bitize/bitmde/blob/main/LICENSE)
6
- [![Mantido pelo BitERP](https://img.shields.io/badge/mantido%20por-BitERP-0b5fff.svg)](https://www.biterp.ai)
7
-
8
- Biblioteca para consumo dos Web Services da Sefaz de Distribuição de DF-e e Evento de Manifestação do Destinatário.
9
-
10
- Essa biblioteca permite consultar a relação das notas fiscais emitidas contra um determinado CNPJ/CPF e realizar o envio do evento de manifestação, podendo assim, baixar o XML da NF-e.
11
-
12
- Desenvolvida e mantida pela equipe do **[BitERP](https://www.biterp.ai)**, onde é usada em produção para a automação da manifestação do destinatário e do download de XML de NF-e de entrada.
13
-
14
- > Este projeto é um fork de [node-mde](https://github.com/lucashpmelo/node-mde), criado por [Lucas Melo](https://github.com/lucashpmelo), mantido pela [Bitize](https://www.biterp.ai) e publicado no npm como `@bitize/bitmde`. A API pública permanece a mesma — apenas o nome do pacote muda.
15
- >
16
- > **Vindo de `@bitize/bit-mde` ou de `node-mde`?** O pacote é o mesmo; só o nome mudou (`node-mde` até a 0.14.13, `@bitize/bit-mde` até a 0.16.0). Troque o nome na instalação e nos `require`/`import` — nenhuma outra alteração é necessária.
17
-
18
- ## Instalação
19
-
20
- ```sh
21
- npm i @bitize/bitmde
22
- ```
23
-
24
- ## Pré-Requisitos
25
-
26
- - Possuir um **Certificado A1** válido emitido por uma Autoridade Certificadora credenciada pela Infraestrutura de Chaves Públicas Brasileira – **ICP-Brasil**.
27
- - O certificado pode ser usando no formato **PFX** e **Senha** _OU_ **cert.pem** e **key.pem**
28
-
29
- ## Funcionalidades
30
-
31
- - Consultar por último NSU
32
- - Retorna a relação dos Documentos Fiscais (`Resumo da NF-e`, `NF-e`, `Resumo do Evento` ou `Evento`)
33
- - Consultar por chave de acesso
34
- - Retorna o `XML da NF-e` ou o `Resumo da NF-e`
35
- - Consultar por NSU
36
- - Retorna o Documento Fiscal referente ao NSU informado, podendo ser um `Resumo`, uma `NF-e` ou um `Evento`
37
- - Envio de evento
38
- - Registra o evento de manifestação na nota informada (`Confirmação da Operação`, `Ciência da Operação`, `Desconhecimento da Operação` ou `Operação não Realizada`)
39
-
40
- ## Distribuição de DF-e
41
-
42
- ### Construtor
43
-
44
- ```js
45
- new DistribuicaoDFe(config)
46
- ```
47
-
48
- - `config` `<Object>`
49
- - `pfx` `<Buffer>` - [OPCIONAL] - Arquivo **.pfx**. Se o `pfx` não for informado, as propriedades `cert` e `key` passam a ser obrigatórias.
50
- - `passphrase` `<String>` - [OPCIONAL] - Senha do arquivo **.pfx**.
51
- - `cert` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _cert.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
52
- - `key` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _key.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
53
- - `cUFAutor` `<String>` - [OBRIGATÓRIO] - Código da UF do autor. Consulte a tabela [códigos UF](#códigos-uf).
54
- - `cnpj` `<String>` - [OPCIONAL] - CNPJ do interessado no DF-e. Se não informado um CNPJ, será obrigatório informar um CPF.
55
- - `cpf` `<String>` - [OPCIONAL] - CPF do interessado no DF-e. Se não informado um CPF, será obrigatório informar um CNPJ.
56
- - `tpAmb` `<String>` - [OBRIGATÓRIO] - Identificação de Ambiente. Informar `'1'` para **Produção** ou `'2'` para **Homologação**.
57
- - `options` `<Object>` - [OPCIONAL]
58
- - `requestOptions` `<AxiosRequestConfig>` - [OPCIONAL]
59
- - `httpsOptions` `<AgentOptions>` - [OPCIONAL]
60
-
61
- ### Consulta por ultNSU
62
-
63
- | Campo | Tipo | Tamanho | Descrição |
64
- | :------- | :------: | :-----: | :----------------------------- |
65
- | `ultNSU` | _string_ | 1-15 | Último NSU recebido pelo ator. |
66
-
67
- #### Exemplo
68
-
69
- ```js
70
- const { DistribuicaoDFe } = require('@bitize/bitmde')
71
- const fs = require('fs')
72
-
73
- const distribuicao = new DistribuicaoDFe({
74
- pfx: fs.readFileSync('./certificado.pfx'),
75
- passphrase: 'senha',
76
- cnpj: '12345678901234',
77
- cUFAutor: '41',
78
- tpAmb: '2',
79
- })
80
-
81
- const consulta = await distribuicao.consultaUltNSU('000000000000000')
82
-
83
- if (consulta.error) {
84
- throw new Error(consulta.error)
85
- }
86
-
87
- console.log(consulta)
88
- // {
89
- // data: {
90
- // tpAmb: '2',
91
- // verAplic: '1.5.11',
92
- // cStat: '138',
93
- // xMotivo: 'Documento(s) localizado(s)',
94
- // dhResp: '2022-06-21T10:48:14-03:00',
95
- // ultNSU: '000000000000050',
96
- // maxNSU: '000000000000212',
97
- // docZip: [
98
- // {
99
- // xml: '<resNFe xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </resNFe>',
100
- // json: { resNFe: { ... } },
101
- // nsu: '000000000000049',
102
- // schema: 'resNFe_v1.01.xsd',
103
- // },
104
- // {
105
- // xml: '<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> ... </nfeProc>',
106
- // json: { nfeProc: { ... } },
107
- // nsu: '000000000000050',
108
- // schema: 'procNFe_v4.00.xsd',
109
- // },
110
- // ],
111
- // },
112
- // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
113
- // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
114
- // status: 200,
115
- // }
116
- ```
117
-
118
- ### Consulta por chNFe
119
-
120
- | Campo | Tipo | Tamanho | Descrição |
121
- | :------ | :------: | :-----: | :-------------------------- |
122
- | `chNFe` | _string_ | 44 | Chave de acesso específica. |
123
-
124
- #### Exemplo
125
-
126
- ```js
127
- const { DistribuicaoDFe } = require('@bitize/bitmde')
128
- const fs = require('fs')
129
-
130
- const distribuicao = new DistribuicaoDFe({
131
- pfx: fs.readFileSync('./certificado.pfx'),
132
- passphrase: 'senha',
133
- cnpj: '12345678901234',
134
- cUFAutor: '41',
135
- tpAmb: '2',
136
- })
137
-
138
- const consulta = await distribuicao.consultaChNFe(
139
- '41000000000000000000000000000000000000000039'
140
- )
141
-
142
- if (consulta.error) {
143
- throw new Error(consulta.error)
144
- }
145
-
146
- console.log(consulta)
147
- // {
148
- // data: {
149
- // tpAmb: '2',
150
- // verAplic: '1.5.11',
151
- // cStat: '138',
152
- // xMotivo: 'Documento localizado',
153
- // dhResp: '2022-06-21T10:49:21-03:00',
154
- // ultNSU: '',
155
- // maxNSU: '',
156
- // docZip: [
157
- // {
158
- // xml: '<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> ... </nfeProc>',
159
- // json: { nfeProc: { ... } },
160
- // nsu: '000000000000050',
161
- // schema: 'procNFe_v4.00.xsd',
162
- // },
163
- // ],
164
- // },
165
- // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
166
- // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
167
- // status: 200,
168
- // }
169
- ```
170
-
171
- ### Consulta por NSU
172
-
173
- | Campo | Tipo | Tamanho | Descrição |
174
- | :---- | :------: | :-----: | :---------------------------------- |
175
- | `NSU` | _string_ | 1-15 | Número Sequencial Único específico. |
176
-
177
- #### Exemplo
178
-
179
- ```js
180
- const { DistribuicaoDFe } = require('@bitize/bitmde')
181
- const fs = require('fs')
182
-
183
- const distribuicao = new DistribuicaoDFe({
184
- pfx: fs.readFileSync('./certificado.pfx'),
185
- passphrase: 'senha',
186
- cnpj: '12345678901234',
187
- cUFAutor: '41',
188
- tpAmb: '2',
189
- })
190
-
191
- const consulta = await distribuicao.consultaNSU('000000000000049')
192
-
193
- if (consulta.error) {
194
- throw new Error(consulta.error)
195
- }
196
-
197
- console.log(consulta)
198
- // {
199
- // data: {
200
- // tpAmb: '2',
201
- // verAplic: '1.5.11',
202
- // cStat: '138',
203
- // xMotivo: 'Documento localizado',
204
- // dhResp: '2022-06-21T10:50:46-03:00',
205
- // ultNSU: '000000000000049',
206
- // maxNSU: '000000000000212',
207
- // docZip: [
208
- // {
209
- // xml: '<resNFe xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </resNFe>',
210
- // json: { resNFe: { ... } },
211
- // nsu: '000000000000049',
212
- // schema: 'resNFe_v1.01.xsd',
213
- // },
214
- // ],
215
- // },
216
- // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
217
- // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
218
- // status: 200,
219
- // }
220
- ```
221
-
222
- ## Manifestação do Destinatário
223
-
224
- ### Construtor
225
-
226
- ```js
227
- new RecepcaoEvento(config)
228
- ```
229
-
230
- - `config` `<Object>`
231
- - `pfx` `<Buffer>` - [OPCIONAL] - Arquivo **.pfx**. Se o `pfx` não for informado, as propriedades `cert` e `key` passam a ser obrigatórias.
232
- - `passphrase` `<String>` - [OPCIONAL] - Senha do arquivo **.pfx**.
233
- - `cert` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _cert.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
234
- - `key` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _key.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
235
- - `cnpj` `<String>` - [OPCIONAL] - CNPJ do interessado no DF-e. Se não informado um CNPJ, será obrigatório informar um CPF.
236
- - `cpf` `<String>` - [OPCIONAL] - CPF do interessado no DF-e. Se não informado um CPF, será obrigatório informar um CNPJ.
237
- - `tpAmb` `<String>` - [OBRIGATÓRIO] - Identificação de Ambiente. Informar `'1'` para **Produção** ou `'2'` para **Homologação**.
238
- - `timezone` `<String>` - [OPCIONAL] - Fuso horário do autor. É utilizado `'America/Sao_Paulo'` como valor padrão. Consulte a tabela [lista de timezones](#lista-de-timezones) válidos para o Brasil.
239
- - `options` `<Object>` - [OPCIONAL]
240
- - `requestOptions` `<AxiosRequestConfig>` - [OPCIONAL]
241
- - `httpsOptions` `<AgentOptions>` - [OPCIONAL]
242
-
243
- ### Enviar Lote de Eventos
244
-
245
- | Campo | Tipo | Tamanho | Descrição |
246
- | :------------------- | :------: | :-----: | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
247
- | `idLote` | _string_ | 1-15 | Identificador de controle do Lote de envio do Evento. |
248
- | `lote` | _array_ | 1-20 | Lista de eventos para manifestação. |
249
- | `lote.chNFe` | _string_ | 44 | Chave de Acesso da NF-e vinculada ao Evento. |
250
- | `lote.tpEvento` | _number_ | 6 | Código do evento: 210200 - Confirmacao da Operacao; 210210 - Ciencia da Operacao; 210220 - Desconhecimento da Operacao; 210240 - Operacao nao Realizada. |
251
- | `lote.justificativa` | _string_ | 15-255 | Informar a justificativa do porque a operação não foi realizada, este campo deve ser informado somente no evento de Operação não Realizada. |
252
-
253
- #### Exemplo
254
-
255
- ```js
256
- const { RecepcaoEvento } = require('@bitize/bitmde')
257
- const fs = require('fs')
258
-
259
- const recepcao = new RecepcaoEvento({
260
- pfx: fs.readFileSync('./certificado.pfx'),
261
- passphrase: 'senha',
262
- cnpj: '12345678901234',
263
- tpAmb: '2',
264
- })
265
-
266
- const lote = [
267
- {
268
- chNFe: '41000000000000000000000000000000000000000040',
269
- tipoEvento: 210210,
270
- },
271
- {
272
- chNFe: '41000000000000000000000000000000000000000041',
273
- tipoEvento: 210240,
274
- justificativa: 'Não foi realizado a entrega correta dos itens da nota.',
275
- },
276
- ]
277
-
278
- const manifestacao = await recepcao.enviarEvento({
279
- idLote: '1337',
280
- lote: lote,
281
- })
282
-
283
- if (manifestacao.error) {
284
- throw new Error(manifestacao.error)
285
- }
286
-
287
- console.log(manifestacao)
288
- // {
289
- // data: {
290
- // idLote: '1337',
291
- // tpAmb: '2',
292
- // verAplic: 'AN_1.4.3',
293
- // cOrgao: '91',
294
- // cStat: '128',
295
- // xMotivo: 'Lote de evento processado',
296
- // infEvento: [
297
- // {
298
- // tpAmb: '2',
299
- // verAplic: 'AN_1.4.3',
300
- // cOrgao: '91',
301
- // cStat: '596',
302
- // xMotivo: 'Rejeicao: Evento apresentado apos o prazo permitido para o evento: [10 dias]',
303
- // chNFe: '41000000000000000000000000000000000000000040',
304
- // tpEvento: '210210',
305
- // xEvento: 'Ciencia da Operacao',
306
- // nSeqEvento: '1',
307
- // CNPJDest: '',
308
- // dhRegEvento: '2022-06-21T11:20:10-03:00',
309
- // nProt: ''
310
- // },
311
- // {
312
- // tpAmb: '2',
313
- // verAplic: 'AN_1.4.3',
314
- // cOrgao: '91',
315
- // cStat: '135',
316
- // xMotivo: 'Evento registrado e vinculado a NF-e',
317
- // chNFe: '41000000000000000000000000000000000000000041',
318
- // tpEvento: '210240',
319
- // xEvento: 'Operacao nao Realizada',
320
- // nSeqEvento: '1',
321
- // CNPJDest: '12345678901234',
322
- // dhRegEvento: '2022-06-21T11:20:10-03:00',
323
- // nProt: '891220000003301'
324
- // },
325
- // ],
326
- // },
327
- // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
328
- // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
329
- // status: 200,
330
- // }
331
- ```
332
-
333
- ## Sobre o BitERP
334
-
335
- O `@bitize/bitmde` é mantido pela equipe do **[BitERP](https://www.biterp.ai)**, um ERP online que automatiza a rotina fiscal, financeira e comercial de empresas brasileiras.
336
-
337
- Dentro do BitERP, esta biblioteca é o componente responsável por:
338
-
339
- - monitorar os documentos fiscais destinados ao CNPJ/CPF do cliente (Distribuição de DF-e);
340
- - registrar a manifestação do destinatário (Ciência, Confirmação, Desconhecimento ou Operação não Realizada);
341
- - baixar e armazenar o XML das NF-e de entrada.
342
-
343
- Se você precisa disso pronto — sem manter certificado, agendamento de consulta por NSU e conciliação de notas de entrada na mão — conheça o BitERP em **[www.biterp.ai](https://www.biterp.ai)**.
344
-
345
- ## Tabelas
346
-
347
- ### Códigos UF
348
-
349
- | UF | cUF | Estado |
350
- | :--: | :--: | :---------------------- |
351
- | `RO` | _11_ | **Rondônia** |
352
- | `AC` | _12_ | **Acre** |
353
- | `AM` | _13_ | **Amazonas** |
354
- | `RR` | _14_ | **Roraima** |
355
- | `PA` | _15_ | **Pará** |
356
- | `AP` | _16_ | **Amapá** |
357
- | `TO` | _17_ | **Tocantins** |
358
- | `MA` | _21_ | **Maranhão** |
359
- | `PI` | _22_ | **Piauí** |
360
- | `CE` | _23_ | **Ceará** |
361
- | `RN` | _24_ | **Rio Grande do Norte** |
362
- | `PB` | _25_ | **Paraíba** |
363
- | `PE` | _26_ | **Pernambuco** |
364
- | `AL` | _27_ | **Alagoas** |
365
- | `SE` | _28_ | **Sergipe** |
366
- | `BA` | _29_ | **Bahia** |
367
- | `MG` | _31_ | **Minas Gerais** |
368
- | `ES` | _32_ | **Espírito Santo** |
369
- | `RJ` | _33_ | **Rio de Janeiro** |
370
- | `SP` | _35_ | **São Paulo** |
371
- | `PR` | _41_ | **Paraná** |
372
- | `SC` | _42_ | **Santa Catarina** |
373
- | `RS` | _43_ | **Rio Grande do Sul** |
374
- | `MS` | _50_ | **Mato Grosso do Sul** |
375
- | `MT` | _51_ | **Mato Grosso** |
376
- | `GO` | _52_ | **Goiás** |
377
- | `DF` | _53_ | **Distrito Federal** |
378
-
379
- ### Lista de Timezones
380
-
381
- | timezone | Estado | UTC |
382
- | :--------------------: | :------------------------------------- | :------: |
383
- | `America/Noronha` | **Fernando de Noronha** | _−02:00_ |
384
- | `America/Araguaina` | **TO** | _−03:00_ |
385
- | `America/Bahia` | **BA** | _−03:00_ |
386
- | `America/Belem` | **AP, PA (leste)** | _−03:00_ |
387
- | `America/Fortaleza` | **CE, MA, PB, PI, RN** | _−03:00_ |
388
- | `America/Maceio` | **AL, SE** | _−03:00_ |
389
- | `America/Recife` | **PE** | _−03:00_ |
390
- | `America/Santarem` | **PA (oeste)** | _−03:00_ |
391
- | `America/Sao_Paulo` | **DF, ES, GO, MG, PR, RJ, RS, SC, SP** | _−03:00_ |
392
- | `America/Boa_Vista` | **RR** | _−04:00_ |
393
- | `America/Campo_Grande` | **MS** | _−04:00_ |
394
- | `America/Cuiaba` | **MT** | _−04:00_ |
395
- | `America/Manaus` | **AM (leste)** | _−04:00_ |
396
- | `America/Porto_Velho` | **RO** | _−04:00_ |
397
- | `America/Eirunepe` | **AM (oeste)** | _−05:00_ |
398
- | `America/Rio_Branco` | **AC** | _−05:00_ |
1
+ # Bit MD-e
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@bitize/bitmde.svg)](https://www.npmjs.com/package/@bitize/bitmde)
4
+ [![npm downloads](https://img.shields.io/npm/dt/@bitize/bitmde.svg)](https://npm-stat.com/charts.html?package=@bitize/bitmde)
5
+ [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/bitize/bitmde/blob/main/LICENSE)
6
+ [![Mantido pelo BitERP](https://img.shields.io/badge/mantido%20por-BitERP-0b5fff.svg)](https://www.biterp.ai)
7
+
8
+ Biblioteca para consumo dos Web Services da Sefaz de Distribuição de DF-e e Evento de Manifestação do Destinatário.
9
+
10
+ Essa biblioteca permite consultar a relação das notas fiscais emitidas contra um determinado CNPJ/CPF e realizar o envio do evento de manifestação, podendo assim, baixar o XML da NF-e.
11
+
12
+ Desenvolvida e mantida pela equipe do **[BitERP](https://www.biterp.ai)**, onde é usada em produção para a automação da manifestação do destinatário e do download de XML de NF-e de entrada.
13
+
14
+ > Este projeto é um fork de [node-mde](https://github.com/lucashpmelo/node-mde), criado por [Lucas Melo](https://github.com/lucashpmelo), mantido pela [Bitize](https://www.biterp.ai) e publicado no npm como `@bitize/bitmde`. A API pública permanece a mesma — apenas o nome do pacote muda.
15
+ >
16
+ > **Vindo de `@bitize/bit-mde` ou de `node-mde`?** O pacote é o mesmo; só o nome mudou (`node-mde` até a 0.14.13, `@bitize/bit-mde` até a 0.16.0). Troque o nome na instalação e nos `require`/`import` — nenhuma outra alteração é necessária.
17
+
18
+ ## Instalação
19
+
20
+ ```sh
21
+ npm i @bitize/bitmde
22
+ ```
23
+
24
+ ## Pré-Requisitos
25
+
26
+ - Possuir um **Certificado A1** válido emitido por uma Autoridade Certificadora credenciada pela Infraestrutura de Chaves Públicas Brasileira – **ICP-Brasil**.
27
+ - O certificado pode ser usando no formato **PFX** e **Senha** _OU_ **cert.pem** e **key.pem**
28
+
29
+ ## Funcionalidades
30
+
31
+ - Consultar por último NSU
32
+ - Retorna a relação dos Documentos Fiscais (`Resumo da NF-e`, `NF-e`, `Resumo do Evento` ou `Evento`)
33
+ - Consultar por chave de acesso
34
+ - Retorna o `XML da NF-e` ou o `Resumo da NF-e`
35
+ - Consultar por NSU
36
+ - Retorna o Documento Fiscal referente ao NSU informado, podendo ser um `Resumo`, uma `NF-e` ou um `Evento`
37
+ - Envio de evento
38
+ - Registra o evento de manifestação na nota informada (`Confirmação da Operação`, `Ciência da Operação`, `Desconhecimento da Operação` ou `Operação não Realizada`)
39
+
40
+ ## Distribuição de DF-e
41
+
42
+ ### Construtor
43
+
44
+ ```js
45
+ new DistribuicaoDFe(config)
46
+ ```
47
+
48
+ - `config` `<Object>`
49
+ - `pfx` `<Buffer>` - [OPCIONAL] - Arquivo **.pfx**. Se o `pfx` não for informado, as propriedades `cert` e `key` passam a ser obrigatórias.
50
+ - `passphrase` `<String>` - [OPCIONAL] - Senha do arquivo **.pfx**.
51
+ - `cert` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _cert.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
52
+ - `key` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _key.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
53
+ - `cUFAutor` `<String>` - [OBRIGATÓRIO] - Código da UF do autor. Consulte a tabela [códigos UF](#códigos-uf).
54
+ - `cnpj` `<String>` - [OPCIONAL] - CNPJ do interessado no DF-e. Se não informado um CNPJ, será obrigatório informar um CPF.
55
+ - `cpf` `<String>` - [OPCIONAL] - CPF do interessado no DF-e. Se não informado um CPF, será obrigatório informar um CNPJ.
56
+ - `tpAmb` `<String>` - [OBRIGATÓRIO] - Identificação de Ambiente. Informar `'1'` para **Produção** ou `'2'` para **Homologação**.
57
+ - `options` `<Object>` - [OPCIONAL]
58
+ - `requestOptions` `<AxiosRequestConfig>` - [OPCIONAL]
59
+ - `httpsOptions` `<AgentOptions>` - [OPCIONAL]
60
+
61
+ ### Consulta por ultNSU
62
+
63
+ | Campo | Tipo | Tamanho | Descrição |
64
+ | :------- | :------: | :-----: | :----------------------------- |
65
+ | `ultNSU` | _string_ | 1-15 | Último NSU recebido pelo ator. |
66
+
67
+ #### Exemplo
68
+
69
+ ```js
70
+ const { DistribuicaoDFe } = require('@bitize/bitmde')
71
+ const fs = require('fs')
72
+
73
+ const distribuicao = new DistribuicaoDFe({
74
+ pfx: fs.readFileSync('./certificado.pfx'),
75
+ passphrase: 'senha',
76
+ cnpj: '12345678901234',
77
+ cUFAutor: '41',
78
+ tpAmb: '2',
79
+ })
80
+
81
+ const consulta = await distribuicao.consultaUltNSU('000000000000000')
82
+
83
+ if (consulta.error) {
84
+ throw new Error(consulta.error)
85
+ }
86
+
87
+ console.log(consulta)
88
+ // {
89
+ // data: {
90
+ // tpAmb: '2',
91
+ // verAplic: '1.5.11',
92
+ // cStat: '138',
93
+ // xMotivo: 'Documento(s) localizado(s)',
94
+ // dhResp: '2022-06-21T10:48:14-03:00',
95
+ // ultNSU: '000000000000050',
96
+ // maxNSU: '000000000000212',
97
+ // docZip: [
98
+ // {
99
+ // xml: '<resNFe xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </resNFe>',
100
+ // json: { resNFe: { ... } },
101
+ // nsu: '000000000000049',
102
+ // schema: 'resNFe_v1.01.xsd',
103
+ // },
104
+ // {
105
+ // xml: '<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> ... </nfeProc>',
106
+ // json: { nfeProc: { ... } },
107
+ // nsu: '000000000000050',
108
+ // schema: 'procNFe_v4.00.xsd',
109
+ // },
110
+ // ],
111
+ // },
112
+ // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
113
+ // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
114
+ // status: 200,
115
+ // }
116
+ ```
117
+
118
+ ### Consulta por chNFe
119
+
120
+ | Campo | Tipo | Tamanho | Descrição |
121
+ | :------ | :------: | :-----: | :-------------------------- |
122
+ | `chNFe` | _string_ | 44 | Chave de acesso específica. |
123
+
124
+ #### Exemplo
125
+
126
+ ```js
127
+ const { DistribuicaoDFe } = require('@bitize/bitmde')
128
+ const fs = require('fs')
129
+
130
+ const distribuicao = new DistribuicaoDFe({
131
+ pfx: fs.readFileSync('./certificado.pfx'),
132
+ passphrase: 'senha',
133
+ cnpj: '12345678901234',
134
+ cUFAutor: '41',
135
+ tpAmb: '2',
136
+ })
137
+
138
+ const consulta = await distribuicao.consultaChNFe(
139
+ '41000000000000000000000000000000000000000039'
140
+ )
141
+
142
+ if (consulta.error) {
143
+ throw new Error(consulta.error)
144
+ }
145
+
146
+ console.log(consulta)
147
+ // {
148
+ // data: {
149
+ // tpAmb: '2',
150
+ // verAplic: '1.5.11',
151
+ // cStat: '138',
152
+ // xMotivo: 'Documento localizado',
153
+ // dhResp: '2022-06-21T10:49:21-03:00',
154
+ // ultNSU: '',
155
+ // maxNSU: '',
156
+ // docZip: [
157
+ // {
158
+ // xml: '<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> ... </nfeProc>',
159
+ // json: { nfeProc: { ... } },
160
+ // nsu: '000000000000050',
161
+ // schema: 'procNFe_v4.00.xsd',
162
+ // },
163
+ // ],
164
+ // },
165
+ // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
166
+ // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
167
+ // status: 200,
168
+ // }
169
+ ```
170
+
171
+ ### Consulta por NSU
172
+
173
+ | Campo | Tipo | Tamanho | Descrição |
174
+ | :---- | :------: | :-----: | :---------------------------------- |
175
+ | `NSU` | _string_ | 1-15 | Número Sequencial Único específico. |
176
+
177
+ #### Exemplo
178
+
179
+ ```js
180
+ const { DistribuicaoDFe } = require('@bitize/bitmde')
181
+ const fs = require('fs')
182
+
183
+ const distribuicao = new DistribuicaoDFe({
184
+ pfx: fs.readFileSync('./certificado.pfx'),
185
+ passphrase: 'senha',
186
+ cnpj: '12345678901234',
187
+ cUFAutor: '41',
188
+ tpAmb: '2',
189
+ })
190
+
191
+ const consulta = await distribuicao.consultaNSU('000000000000049')
192
+
193
+ if (consulta.error) {
194
+ throw new Error(consulta.error)
195
+ }
196
+
197
+ console.log(consulta)
198
+ // {
199
+ // data: {
200
+ // tpAmb: '2',
201
+ // verAplic: '1.5.11',
202
+ // cStat: '138',
203
+ // xMotivo: 'Documento localizado',
204
+ // dhResp: '2022-06-21T10:50:46-03:00',
205
+ // ultNSU: '000000000000049',
206
+ // maxNSU: '000000000000212',
207
+ // docZip: [
208
+ // {
209
+ // xml: '<resNFe xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </resNFe>',
210
+ // json: { resNFe: { ... } },
211
+ // nsu: '000000000000049',
212
+ // schema: 'resNFe_v1.01.xsd',
213
+ // },
214
+ // ],
215
+ // },
216
+ // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
217
+ // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
218
+ // status: 200,
219
+ // }
220
+ ```
221
+
222
+ ## Manifestação do Destinatário
223
+
224
+ ### Construtor
225
+
226
+ ```js
227
+ new RecepcaoEvento(config)
228
+ ```
229
+
230
+ - `config` `<Object>`
231
+ - `pfx` `<Buffer>` - [OPCIONAL] - Arquivo **.pfx**. Se o `pfx` não for informado, as propriedades `cert` e `key` passam a ser obrigatórias.
232
+ - `passphrase` `<String>` - [OPCIONAL] - Senha do arquivo **.pfx**.
233
+ - `cert` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _cert.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
234
+ - `key` `<Buffer | String>` - [OPCIONAL] - Conteúdo do _key.pem_. Essa propriedade fica obrigatória se o `pfx` não for informado.
235
+ - `cnpj` `<String>` - [OPCIONAL] - CNPJ do interessado no DF-e. Se não informado um CNPJ, será obrigatório informar um CPF.
236
+ - `cpf` `<String>` - [OPCIONAL] - CPF do interessado no DF-e. Se não informado um CPF, será obrigatório informar um CNPJ.
237
+ - `tpAmb` `<String>` - [OBRIGATÓRIO] - Identificação de Ambiente. Informar `'1'` para **Produção** ou `'2'` para **Homologação**.
238
+ - `timezone` `<String>` - [OPCIONAL] - Fuso horário do autor. É utilizado `'America/Sao_Paulo'` como valor padrão. Consulte a tabela [lista de timezones](#lista-de-timezones) válidos para o Brasil.
239
+ - `options` `<Object>` - [OPCIONAL]
240
+ - `requestOptions` `<AxiosRequestConfig>` - [OPCIONAL]
241
+ - `httpsOptions` `<AgentOptions>` - [OPCIONAL]
242
+
243
+ ### Enviar Lote de Eventos
244
+
245
+ | Campo | Tipo | Tamanho | Descrição |
246
+ | :------------------- | :------: | :-----: | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
247
+ | `idLote` | _string_ | 1-15 | Identificador de controle do Lote de envio do Evento. |
248
+ | `lote` | _array_ | 1-20 | Lista de eventos para manifestação. |
249
+ | `lote.chNFe` | _string_ | 44 | Chave de Acesso da NF-e vinculada ao Evento. |
250
+ | `lote.tpEvento` | _number_ | 6 | Código do evento: 210200 - Confirmacao da Operacao; 210210 - Ciencia da Operacao; 210220 - Desconhecimento da Operacao; 210240 - Operacao nao Realizada. |
251
+ | `lote.justificativa` | _string_ | 15-255 | Informar a justificativa do porque a operação não foi realizada, este campo deve ser informado somente no evento de Operação não Realizada. |
252
+
253
+ #### Exemplo
254
+
255
+ ```js
256
+ const { RecepcaoEvento } = require('@bitize/bitmde')
257
+ const fs = require('fs')
258
+
259
+ const recepcao = new RecepcaoEvento({
260
+ pfx: fs.readFileSync('./certificado.pfx'),
261
+ passphrase: 'senha',
262
+ cnpj: '12345678901234',
263
+ tpAmb: '2',
264
+ })
265
+
266
+ const lote = [
267
+ {
268
+ chNFe: '41000000000000000000000000000000000000000040',
269
+ tipoEvento: 210210,
270
+ },
271
+ {
272
+ chNFe: '41000000000000000000000000000000000000000041',
273
+ tipoEvento: 210240,
274
+ justificativa: 'Não foi realizado a entrega correta dos itens da nota.',
275
+ },
276
+ ]
277
+
278
+ const manifestacao = await recepcao.enviarEvento({
279
+ idLote: '1337',
280
+ lote: lote,
281
+ })
282
+
283
+ if (manifestacao.error) {
284
+ throw new Error(manifestacao.error)
285
+ }
286
+
287
+ console.log(manifestacao)
288
+ // {
289
+ // data: {
290
+ // idLote: '1337',
291
+ // tpAmb: '2',
292
+ // verAplic: 'AN_1.4.3',
293
+ // cOrgao: '91',
294
+ // cStat: '128',
295
+ // xMotivo: 'Lote de evento processado',
296
+ // infEvento: [
297
+ // {
298
+ // tpAmb: '2',
299
+ // verAplic: 'AN_1.4.3',
300
+ // cOrgao: '91',
301
+ // cStat: '596',
302
+ // xMotivo: 'Rejeicao: Evento apresentado apos o prazo permitido para o evento: [10 dias]',
303
+ // chNFe: '41000000000000000000000000000000000000000040',
304
+ // tpEvento: '210210',
305
+ // xEvento: 'Ciencia da Operacao',
306
+ // nSeqEvento: '1',
307
+ // CNPJDest: '',
308
+ // dhRegEvento: '2022-06-21T11:20:10-03:00',
309
+ // nProt: ''
310
+ // },
311
+ // {
312
+ // tpAmb: '2',
313
+ // verAplic: 'AN_1.4.3',
314
+ // cOrgao: '91',
315
+ // cStat: '135',
316
+ // xMotivo: 'Evento registrado e vinculado a NF-e',
317
+ // chNFe: '41000000000000000000000000000000000000000041',
318
+ // tpEvento: '210240',
319
+ // xEvento: 'Operacao nao Realizada',
320
+ // nSeqEvento: '1',
321
+ // CNPJDest: '12345678901234',
322
+ // dhRegEvento: '2022-06-21T11:20:10-03:00',
323
+ // nProt: '891220000003301'
324
+ // },
325
+ // ],
326
+ // },
327
+ // reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
328
+ // resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
329
+ // status: 200,
330
+ // }
331
+ ```
332
+
333
+ ## Sobre o BitERP
334
+
335
+ O `@bitize/bitmde` é mantido pela equipe do **[BitERP](https://www.biterp.ai)**, um ERP online que automatiza a rotina fiscal, financeira e comercial de empresas brasileiras.
336
+
337
+ Dentro do BitERP, esta biblioteca é o componente responsável por:
338
+
339
+ - monitorar os documentos fiscais destinados ao CNPJ/CPF do cliente (Distribuição de DF-e);
340
+ - registrar a manifestação do destinatário (Ciência, Confirmação, Desconhecimento ou Operação não Realizada);
341
+ - baixar e armazenar o XML das NF-e de entrada.
342
+
343
+ Se você precisa disso pronto — sem manter certificado, agendamento de consulta por NSU e conciliação de notas de entrada na mão — conheça o BitERP em **[www.biterp.ai](https://www.biterp.ai)**.
344
+
345
+ ## Tabelas
346
+
347
+ ### Códigos UF
348
+
349
+ | UF | cUF | Estado |
350
+ | :--: | :--: | :---------------------- |
351
+ | `RO` | _11_ | **Rondônia** |
352
+ | `AC` | _12_ | **Acre** |
353
+ | `AM` | _13_ | **Amazonas** |
354
+ | `RR` | _14_ | **Roraima** |
355
+ | `PA` | _15_ | **Pará** |
356
+ | `AP` | _16_ | **Amapá** |
357
+ | `TO` | _17_ | **Tocantins** |
358
+ | `MA` | _21_ | **Maranhão** |
359
+ | `PI` | _22_ | **Piauí** |
360
+ | `CE` | _23_ | **Ceará** |
361
+ | `RN` | _24_ | **Rio Grande do Norte** |
362
+ | `PB` | _25_ | **Paraíba** |
363
+ | `PE` | _26_ | **Pernambuco** |
364
+ | `AL` | _27_ | **Alagoas** |
365
+ | `SE` | _28_ | **Sergipe** |
366
+ | `BA` | _29_ | **Bahia** |
367
+ | `MG` | _31_ | **Minas Gerais** |
368
+ | `ES` | _32_ | **Espírito Santo** |
369
+ | `RJ` | _33_ | **Rio de Janeiro** |
370
+ | `SP` | _35_ | **São Paulo** |
371
+ | `PR` | _41_ | **Paraná** |
372
+ | `SC` | _42_ | **Santa Catarina** |
373
+ | `RS` | _43_ | **Rio Grande do Sul** |
374
+ | `MS` | _50_ | **Mato Grosso do Sul** |
375
+ | `MT` | _51_ | **Mato Grosso** |
376
+ | `GO` | _52_ | **Goiás** |
377
+ | `DF` | _53_ | **Distrito Federal** |
378
+
379
+ ### Lista de Timezones
380
+
381
+ | timezone | Estado | UTC |
382
+ | :--------------------: | :------------------------------------- | :------: |
383
+ | `America/Noronha` | **Fernando de Noronha** | _−02:00_ |
384
+ | `America/Araguaina` | **TO** | _−03:00_ |
385
+ | `America/Bahia` | **BA** | _−03:00_ |
386
+ | `America/Belem` | **AP, PA (leste)** | _−03:00_ |
387
+ | `America/Fortaleza` | **CE, MA, PB, PI, RN** | _−03:00_ |
388
+ | `America/Maceio` | **AL, SE** | _−03:00_ |
389
+ | `America/Recife` | **PE** | _−03:00_ |
390
+ | `America/Santarem` | **PA (oeste)** | _−03:00_ |
391
+ | `America/Sao_Paulo` | **DF, ES, GO, MG, PR, RJ, RS, SC, SP** | _−03:00_ |
392
+ | `America/Boa_Vista` | **RR** | _−04:00_ |
393
+ | `America/Campo_Grande` | **MS** | _−04:00_ |
394
+ | `America/Cuiaba` | **MT** | _−04:00_ |
395
+ | `America/Manaus` | **AM (leste)** | _−04:00_ |
396
+ | `America/Porto_Velho` | **RO** | _−04:00_ |
397
+ | `America/Eirunepe` | **AM (oeste)** | _−05:00_ |
398
+ | `America/Rio_Branco` | **AC** | _−05:00_ |
@@ -1,3 +1,3 @@
1
1
  module.exports = {
2
- VERSION: "0.17.0"
2
+ VERSION: "0.17.1"
3
3
  };
package/package.json CHANGED
@@ -1,82 +1,83 @@
1
- {
2
- "name": "@bitize/bitmde",
3
- "version": "0.17.0",
4
- "description": "Biblioteca para consultar notas destinadas e enviar evento de manifestação do destinatário",
5
- "main": "./lib/index.js",
6
- "types": "./dist/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "require": "./lib/index.js",
11
- "default": "./lib/index.js"
12
- },
13
- "./package.json": "./package.json"
14
- },
15
- "files": [
16
- "lib/",
17
- "dist/",
18
- "CHANGELOG.md"
19
- ],
20
- "scripts": {
21
- "build": "npm run script && npm run types",
22
- "script": "node ./scripts/index.js",
23
- "release": "git pull && npm run build && npm publish",
24
- "test": "mocha",
25
- "test:ci": "mocha --ignore test/sefaz.test.js",
26
- "format": "prettier --write .",
27
- "format:check": "prettier --check .",
28
- "certs:teste": "sh ./scripts/gerar-certificado-teste.sh",
29
- "types": "npx tsc"
30
- },
31
- "repository": {
32
- "type": "git",
33
- "url": "git+https://github.com/bitize/bitmde.git"
34
- },
35
- "publishConfig": {
36
- "access": "public"
37
- },
38
- "keywords": [
39
- "nfe",
40
- "sefaz",
41
- "nota",
42
- "fiscal",
43
- "evento",
44
- "manifestacao",
45
- "destinatario",
46
- "distribuicao",
47
- "dfe",
48
- "mde",
49
- "soap",
50
- "manifestacaonfe",
51
- "distribuicaodfe"
52
- ],
53
- "author": "Bitize",
54
- "contributors": [
55
- "Lucas Melo <lucashpmelo94@gmail.com> (autor original do node-mde)"
56
- ],
57
- "license": "MIT",
58
- "bugs": {
59
- "url": "https://github.com/bitize/bitmde/issues"
60
- },
61
- "homepage": "https://github.com/bitize/bitmde#readme",
62
- "dependencies": {
63
- "axios": "1.19.0",
64
- "fast-xml-parser": "5.11.0",
65
- "luxon": "^3.7.2",
66
- "node-forge": "1.4.0",
67
- "xml-crypto": "6.1.2"
68
- },
69
- "devDependencies": {
70
- "@types/luxon": "^3.7.4",
71
- "@types/node": "^26.2.0",
72
- "@types/node-forge": "^1.3.14",
73
- "mocha": "^11.8.0",
74
- "prettier": "3.9.6",
75
- "typescript": "^5.9.3",
76
- "uglify-js": "^3.19.3"
77
- },
78
- "overrides": {
79
- "diff": "^9.0.0",
80
- "serialize-javascript": "^7.1.0"
81
- }
82
- }
1
+ {
2
+ "name": "@bitize/bitmde",
3
+ "version": "0.17.1",
4
+ "description": "Biblioteca para consultar notas destinadas e enviar evento de manifestação do destinatário",
5
+ "main": "./lib/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./lib/index.js",
11
+ "default": "./lib/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "files": [
16
+ "lib/",
17
+ "dist/",
18
+ "CHANGELOG.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "npm run script && npm run types",
22
+ "script": "node ./scripts/index.js",
23
+ "release": "git pull && npm run build && npm publish",
24
+ "test": "mocha",
25
+ "test:ci": "mocha --ignore test/sefaz.test.js",
26
+ "format": "prettier --write .",
27
+ "format:check": "prettier --check .",
28
+ "certs:teste": "sh ./scripts/gerar-certificado-teste.sh",
29
+ "types": "npx tsc"
30
+ },
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/bitize/bitmde.git"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "keywords": [
39
+ "nfe",
40
+ "sefaz",
41
+ "nota",
42
+ "fiscal",
43
+ "evento",
44
+ "manifestacao",
45
+ "destinatario",
46
+ "distribuicao",
47
+ "dfe",
48
+ "mde",
49
+ "soap",
50
+ "manifestacaonfe",
51
+ "distribuicaodfe"
52
+ ],
53
+ "author": "Bitize",
54
+ "contributors": [
55
+ "Lucas Melo <lucashpmelo94@gmail.com> (autor original do node-mde)",
56
+ "Carlos Tirabassi Jr. <carlos@bitize.com.br>"
57
+ ],
58
+ "license": "MIT",
59
+ "bugs": {
60
+ "url": "https://github.com/bitize/bitmde/issues"
61
+ },
62
+ "homepage": "https://github.com/bitize/bitmde#readme",
63
+ "dependencies": {
64
+ "axios": "1.19.0",
65
+ "fast-xml-parser": "5.11.0",
66
+ "luxon": "^3.7.2",
67
+ "node-forge": "1.4.0",
68
+ "xml-crypto": "6.1.2"
69
+ },
70
+ "devDependencies": {
71
+ "@types/luxon": "^3.7.4",
72
+ "@types/node": "^26.2.0",
73
+ "@types/node-forge": "^1.3.14",
74
+ "mocha": "^11.8.0",
75
+ "prettier": "3.9.6",
76
+ "typescript": "^5.9.3",
77
+ "uglify-js": "^3.19.3"
78
+ },
79
+ "overrides": {
80
+ "diff": "^9.0.0",
81
+ "serialize-javascript": "^7.1.0"
82
+ }
83
+ }