cosmemilton-acbr-node 0.1.0 → 0.1.2
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 +108 -106
- package/dist/cli.js +1511 -895
- package/dist/cli.js.map +4 -4
- package/dist/contract.json +1 -0
- package/dist/index.cjs +320 -46
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +317 -46
- package/dist/index.js.map +4 -4
- package/dist/runtime.cjs +254 -35
- package/dist/runtime.cjs.map +3 -3
- package/dist/runtime.js +251 -34
- package/dist/runtime.js.map +3 -3
- package/dist/types/generated/acbr/index.d.ts +15 -1
- package/dist/types/generated/acbr/models.d.ts +32 -0
- package/dist/types/src/cli.d.ts +4 -2
- package/dist/types/src/contract-help.d.ts +53 -0
- package/dist/types/src/diagnostics.d.ts +8 -0
- package/dist/types/src/generator.d.ts +3 -0
- package/dist/types/src/index.d.ts +13 -0
- package/dist/types/src/runtime.d.ts +1 -0
- package/dist/types/src/types.d.ts +34 -1
- package/docs/API.md +58 -0
- package/docs/CI.md +6 -0
- package/docs/CLI.md +52 -32
- package/docs/VALIDACAO.md +3 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -1,106 +1,108 @@
|
|
|
1
|
-
# cosmemilton-acbr-node
|
|
2
|
-
|
|
3
|
-
NF-e (55) e NFC-e (65) no Node.js, com modelos TypeScript gerados dos fontes públicos do ACBr e motor compilado com Free Pascal/Lazarus. Projeto independente; não é um produto oficial do ACBr. Não depende de Delphi nem dos binários ACBr Pro.
|
|
4
|
-
|
|
5
|
-
Documentação e exemplos: **[miltonjunior.dev.br/acbr-node](https://miltonjunior.dev.br/acbr-node/)**. Código e problemas: [GitHub](https://github.com/cosmemilton/acbr-node).
|
|
6
|
-
|
|
7
|
-
Requisitos de execução: Node.js 22.12 ou superior e Linux x64 Ubuntu 24.04/glibc ou Windows x64. A primeira versão usa certificado A1. Compiladores são necessários apenas para reconstruir o motor ou acompanhar uma revisão própria do ACBr.
|
|
8
|
-
|
|
9
|
-
## Instalação e uso
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm install cosmemilton-acbr-node
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
O npm instala o runtime opcional da sua plataforma. Não use `--omit=optional` na instalação final. Também é possível informar `runtimeDirectory` para um motor próprio.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
import {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
await
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
await emissor.
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
npx acbr-node
|
|
72
|
-
npx acbr-node
|
|
73
|
-
npx acbr-node
|
|
74
|
-
npx acbr-node
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
npm
|
|
87
|
-
npm run acbr --
|
|
88
|
-
npm run
|
|
89
|
-
npm
|
|
90
|
-
|
|
91
|
-
npm
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
1
|
+
# cosmemilton-acbr-node
|
|
2
|
+
|
|
3
|
+
NF-e (55) e NFC-e (65) no Node.js, com modelos TypeScript gerados dos fontes públicos do ACBr e motor compilado com Free Pascal/Lazarus. Projeto independente; não é um produto oficial do ACBr. Não depende de Delphi nem dos binários ACBr Pro.
|
|
4
|
+
|
|
5
|
+
Documentação e exemplos: **[miltonjunior.dev.br/acbr-node](https://miltonjunior.dev.br/acbr-node/)**. Código e problemas: [GitHub](https://github.com/cosmemilton/acbr-node).
|
|
6
|
+
|
|
7
|
+
Requisitos de execução: Node.js 22.12 ou superior e Linux x64 Ubuntu 24.04/glibc ou Windows x64. A primeira versão usa certificado A1. Compiladores são necessários apenas para reconstruir o motor ou acompanhar uma revisão própria do ACBr.
|
|
8
|
+
|
|
9
|
+
## Instalação e uso
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install cosmemilton-acbr-node
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
O npm instala o runtime opcional da sua plataforma. Não use `--omit=optional` na instalação final. Também é possível informar `runtimeDirectory` para um motor próprio.
|
|
16
|
+
|
|
17
|
+
O help TAG faz parte da release 0.1.2. A documentação pública só anuncia disponibilidade após a confirmação dessa versão no registry npm.
|
|
18
|
+
|
|
19
|
+
Para instalar tarballs revisados em um projeto separado, informe o SDK e o runtime da plataforma:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install --offline --ignore-scripts --no-audit --no-fund \
|
|
23
|
+
/caminho/cosmemilton-acbr-node-0.1.2.tgz \
|
|
24
|
+
/caminho/cosmemilton-acbr-node-linux-x64-0.1.2.tgz
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
No Windows, selecione `cosmemilton-acbr-node-win32-x64-0.1.2.tgz`.
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
31
|
+
import { criarEmissor, TNFe, type TNFeInput } from 'cosmemilton-acbr-node';
|
|
32
|
+
import { nota } from './nota.js'; // nota: TNFeInput, com dados fiscais completos
|
|
33
|
+
|
|
34
|
+
const senha = process.env.NFE_A1_SENHA;
|
|
35
|
+
if (senha === undefined) throw new Error('Configure NFE_A1_SENHA');
|
|
36
|
+
|
|
37
|
+
const emissor = criarEmissor({
|
|
38
|
+
cnpj: '11222333000181',
|
|
39
|
+
uf: 'CE',
|
|
40
|
+
modelo: 55,
|
|
41
|
+
ambiente: 2,
|
|
42
|
+
certificado: { pfx: await readFile('./certificado.pfx'), senha },
|
|
43
|
+
// Para NFC-e: modelo: 65, csc: { id: '000001', valor: 'seu CSC' }
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
const gerado = await emissor.gerarXml(new TNFe(nota satisfies TNFeInput));
|
|
48
|
+
if (!gerado.sucesso || !gerado.xmlBase64) throw new Error(gerado.codigo);
|
|
49
|
+
const xml = Buffer.from(gerado.xmlBase64, 'base64').toString('utf8');
|
|
50
|
+
const assinado = await emissor.assinar(xml);
|
|
51
|
+
if (!assinado.sucesso || !assinado.xmlBase64) throw new Error(assinado.codigo);
|
|
52
|
+
const xmlAssinado = Buffer.from(assinado.xmlBase64, 'base64').toString('utf8');
|
|
53
|
+
const validado = await emissor.validar(xmlAssinado);
|
|
54
|
+
if (!validado.sucesso) throw new Error(validado.codigo);
|
|
55
|
+
await writeFile('./nota-assinada.xml', Buffer.from(assinado.xmlBase64, 'base64'));
|
|
56
|
+
// Transmissão explícita: await emissor.transmitir(xmlAssinado).
|
|
57
|
+
} finally {
|
|
58
|
+
await emissor.fechar();
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
A biblioteca também aceita XML pronto em `assinar`, `validar` e `transmitir`. As operações fiscais são `consultar`, `cancelar`, `cartaCorrecao` (somente modelo 55) e `inutilizar`. [API e protocolo](docs/API.md).
|
|
63
|
+
|
|
64
|
+
## Modelos e atualizações explícitas
|
|
65
|
+
|
|
66
|
+
Nomes, grupos e enums espelham o ACBr. Construtores recebem objetos; coleções são arrays tipados e oferecem `New()`. Valores decimais são strings, preservando escala e evitando conversão binária pelo JavaScript. Datas são strings ISO civis, por exemplo `2026-10-08T12:30:00`; o ACBr aplica o fuso da UF na escrita do XML. Campos omitidos preservam os padrões do componente. Assinatura, protocolo e informações suplementares produzidas pelo motor não são entradas editáveis.
|
|
67
|
+
|
|
68
|
+
A versão 0.1.2 acompanha a revisão SVN **48590**, com **204 tipos gerados** e contrato `e5a497cefe8e0e350a30da5cc04e88b35c38a98535893d52f878890260d1346d`. Revisão, inventário e hashes estão em `acbr.lock.json`; cliente e motor recusam contratos diferentes. Não há atualização automática dos fontes ao instalar.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx acbr-node init --revision 48590
|
|
72
|
+
npx acbr-node source update --revision 48590
|
|
73
|
+
npx acbr-node generate
|
|
74
|
+
npx acbr-node build
|
|
75
|
+
npx acbr-node check
|
|
76
|
+
npx acbr-node doctor
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Use `npx cosmemilton-acbr-node init` sem instalação prévia. O comando `generate` produz `generated/acbr/models.ts` e `generated/acbr/index.ts`, além do carregador Pascal. Em uma aplicação com revisão própria, importe `criarEmissor` de `./generated/acbr/index.js` e indique o diretório do runtime compilado.
|
|
80
|
+
|
|
81
|
+
O relatório `.acbr/generated/changes.json` registra adições, remoções e alterações de tipos. Tipos desconhecidos interrompem a geração. Breaking changes do ACBr exigem acompanhamento, testes e versionamento do adaptador. TortoiseSVN é opcional; a CLI usa SVN. [Fluxo completo da CLI](docs/CLI.md).
|
|
82
|
+
|
|
83
|
+
## Reconstrução e validação
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm install
|
|
87
|
+
npm run acbr -- source update --revision 48590
|
|
88
|
+
npm run acbr -- generate
|
|
89
|
+
npm run acbr -- build
|
|
90
|
+
npm run build
|
|
91
|
+
npm test
|
|
92
|
+
ACBR_NATIVE_TEST=1 npm run test:native
|
|
93
|
+
npm run pack:runtimes -- --all
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Consulte [arquitetura](docs/ARQUITETURA.md), [dependências nativas](docs/DEPENDENCIAS-NATIVAS.md) e [estado da validação](docs/VALIDACAO.md). Os runtimes incluem schemas, serviços, licenças, fontes correspondentes do ACBr e receita de reconstrução. O consumo dos tarballs com runtime não executa Free Pascal, Lazarus ou geração de código.
|
|
97
|
+
|
|
98
|
+
Linux e Windows passaram **52 testes do motor/TLS/SOAP local em cada plataforma**. TypeScript e build passaram; a suíte Node/CLI/gerador/auditoria passou 32 testes, com quatro suítes nativas opt-in ignoradas nessa execução e verificadas separadamente.
|
|
99
|
+
|
|
100
|
+
A instalação externa passou em ESM e CommonJS com Node 24.15.0 e 22.12.0 no Linux, e Node 22.12.0 no Windows, dois emitentes sintéticos e modelos 55/65, com compiladores fora do `PATH` e bibliotecas do runtime auditadas. Um consumidor externo completou o fluxo de fontes/geração/build em revisão própria 48589. A geração também foi executada nativamente no Windows, produzindo contrato e arquivos idênticos ao Linux.
|
|
101
|
+
|
|
102
|
+
Docker e CI remota de reconstrução dos motores não foram executados. A automação de publicação audita os tarballs já validados. Os detalhes e limites estão em [Validação](docs/VALIDACAO.md).
|
|
103
|
+
|
|
104
|
+
DANFE, impressão, A3, outros documentos e cálculos comerciais ficam para etapas posteriores. O preenchimento tributário continua sendo responsabilidade da aplicação. A homologação fiscal real é separada dos testes de implementação; os testes deste projeto usam dados sintéticos e serviços locais e não transmitem à SEFAZ.
|
|
105
|
+
|
|
106
|
+
## Licença e fontes
|
|
107
|
+
|
|
108
|
+
LGPL-2.1-or-later. Veja [LICENSE](LICENSE), [NOTICE](NOTICE) e as licenças incluídas nos runtimes. Fontes de referência: [ACBr público](https://projetoacbr.com.br/fontes/), [SVN oficial](https://svn.code.sf.net/p/acbr/code/trunk2/) e [FCL-passrc](https://www.freepascal.org/daily/packages/fcl-passrc/index.html).
|