cosmemilton-acbr-node 0.1.0 → 0.1.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/runtime.ts", "../src/types.ts"],
4
- "sourcesContent": ["import { spawn, type ChildProcessWithoutNullStreams, type SpawnOptionsWithoutStdio } from 'node:child_process';\nimport { readFile, stat } from 'node:fs/promises';\nimport path from 'node:path';\nimport { createRequire } from 'node:module';\nimport { createHash, randomUUID } from 'node:crypto';\nimport { TextDecoder } from 'node:util';\nimport { ErroAcbrNode, type ConfiguracaoEmissor, type Contrato, type ConfiguracaoMotor, type RequisicaoMotor, type ResultadoFiscal, type RuntimeManifest, type OpcoesOperacao, type Consulta, type Cancelamento, type CartaCorrecao, type Inutilizacao } from './types.js';\nexport * from './types.js';\ntype Launch = (exe: string, args: string[], config: SpawnOptionsWithoutStdio) => ChildProcessWithoutNullStreams;\nexport interface OpcoesEmissor extends ConfiguracaoEmissor {\n contrato: Contrato; runtimeDirectory?: string; timeoutMs?: number; limiteFila?: number; limiteBytes?: number;\n validaDocumento?: (documento: unknown) => void;\n /** Inje\u00E7\u00E3o para testes offline. O padr\u00E3o sempre inicia o motor distribu\u00EDdo. */\n criaProcesso?: Launch;\n}\nconst STATES = new Set(['DENEGADO','XML_GERADO','VALIDADO','ASSINADO','AUTORIZADO','REJEITADO','PENDENTE','INDETERMINADO','CONSULTADO','CANCELADO','EVENTO_REGISTRADO','INUTILIZADO','ERRO']);\nconst UFS = new Set('AC AL AP AM BA CE DF ES GO MA MT MS MG PA PB PR PE PI RJ RN RS RO RR SC SP SE TO'.split(' '));\nconst MAX_BYTES = 8 * 1024 * 1024;\nconst plain = (v: unknown): v is Record<string,unknown> => v !== null && typeof v === 'object' && !Array.isArray(v);\nconst validContract = (v: unknown): v is Contrato => plain(v) && Number.isInteger(v.sourceRevision) && Number(v.sourceRevision)>0 && typeof v.contractHash==='string' && /^[a-f0-9]{64}$/.test(v.contractHash);\nconst fail = (code: string, message: string, req?: RequisicaoMotor, unknown=false) => new ErroAcbrNode(code,message,unknown,req?.comando==='transmitir'?req.xmlBase64:undefined);\nfunction confined(root: string, relative: string): string {\n const file=path.resolve(root,relative), part=path.relative(root,file);\n if(!relative || path.isAbsolute(relative) || part==='..' || part.startsWith('..'+path.sep)) throw fail('RUNTIME_INVALIDO','Caminho inv\u00E1lido no runtime.');\n return file;\n}\nasync function resolveRuntime(directory: string | undefined, contract: Contrato): Promise<{directory:string;executable:string}> {\n if(!validContract(contract)) throw fail('CONTRATO_INVALIDO','Contrato gerado inv\u00E1lido.');\n let root=directory;\n if(!root) {\n if(!['linux','win32'].includes(process.platform) || process.arch!=='x64') throw fail('PLATAFORMA_NAO_SUPORTADA','Esta vers\u00E3o exige Linux ou Windows x64.');\n try { const require=createRequire(typeof __filename!=='undefined'?__filename:import.meta.url); root=path.join(path.dirname(require.resolve('cosmemilton-acbr-node-'+process.platform+'-x64/package.json')),'runtime'); }\n catch { throw fail('RUNTIME_AUSENTE','Instale o pacote de runtime da plataforma ou informe runtimeDirectory.'); }\n }\n root=path.resolve(root);\n let m: RuntimeManifest;\n try { m=JSON.parse(await readFile(path.join(root,'manifest.json'),'utf8')); } catch { throw fail('RUNTIME_AUSENTE','Manifesto do runtime n\u00E3o encontrado.'); }\n if(!validContract(m) || m.formatVersion!==1 || !plain(m.files) || typeof m.executable!=='string' || m.platform!==process.platform || m.arch!==process.arch) throw fail('RUNTIME_INVALIDO','Manifesto ou plataforma do runtime inv\u00E1lidos.');\n if(m.sourceRevision!==contract.sourceRevision || m.contractHash!==contract.contractHash) throw fail('CONTRATO_DIVERGENTE','Cliente e motor foram gerados de contratos diferentes; regenere e recompile.');\n for(const [name,hash] of Object.entries(m.files)) {\n if(typeof hash!=='string'||!/^[a-f0-9]{64}$/.test(hash)) throw fail('RUNTIME_INVALIDO','Hash inv\u00E1lido no runtime.');\n const file=confined(root,name); let data:Buffer;\n try { if(!(await stat(file)).isFile()) throw Error(); data=await readFile(file); } catch { throw fail('RUNTIME_INCOMPLETO','Arquivo do runtime ausente.'); }\n if(createHash('sha256').update(data).digest('hex')!==hash) throw fail('RUNTIME_ALTERADO','O runtime n\u00E3o corresponde ao manifesto distribu\u00EDdo.');\n }\n if(!m.files[m.executable]) throw fail('RUNTIME_INVALIDO','O execut\u00E1vel n\u00E3o consta no invent\u00E1rio.');\n return {directory:root,executable:confined(root,m.executable)};\n}\ninterface Pending { req:RequisicaoMotor; bytes:Buffer; signal?:AbortSignal; resolve:(v:ResultadoFiscal)=>void; reject:(e:unknown)=>void; abort?:()=>void }\nexport function criarEmissor(options: OpcoesEmissor) {\n if(!/^\\d{14}$/.test(options.cnpj)||!UFS.has(options.uf)||![55,65].includes(options.modelo)||![1,2].includes(options.ambiente)) throw fail('CONFIGURACAO_INVALIDA','Informe CNPJ, UF, modelo e ambiente v\u00E1lidos.');\n if(!validContract(options.contrato)) throw fail('CONTRATO_INVALIDO','Contrato gerado inv\u00E1lido.');\n const cert=options.certificado;\n if(cert && (typeof cert.senha!=='string' || !!cert.pfx===!!cert.arquivo || cert.pfx && !(cert.pfx instanceof Uint8Array))) throw fail('CERTIFICADO_INVALIDO','Informe A1 em pfx ou arquivo e sua senha.');\n if(options.csc && (!/^\\d{1,6}$/.test(options.csc.id) || typeof options.csc.valor!=='string' || !options.csc.valor || options.csc.valor.length>256)) throw fail('CSC_INVALIDO','CSC inv\u00E1lido.');\n const cfg:Omit<ConfiguracaoEmissor, 'certificado'>={cnpj:options.cnpj,uf:options.uf,modelo:options.modelo,ambiente:options.ambiente,csc:options.csc?{...options.csc}:undefined};\n const certificate=cert?{...cert,pfx:cert.pfx?Buffer.from(cert.pfx):undefined}:undefined;\n const contract={...options.contrato};\n const timeout=options.timeoutMs??120_000, capacity=options.limiteFila??32, bytesLimit=options.limiteBytes??MAX_BYTES;\n if(!Number.isInteger(timeout)||timeout<1||timeout>120000||!Number.isInteger(capacity)||capacity<0||capacity>1000||!Number.isInteger(bytesLimit)||bytesLimit<256||bytesLimit>MAX_BYTES) throw fail('CONFIGURACAO_INVALIDA','Limites de execu\u00E7\u00E3o inv\u00E1lidos.');\n const launch:Launch=options.criaProcesso??((exe,args,config)=>spawn(exe,args,{...config,stdio:['pipe','pipe','pipe']}));\n let runtimePromise:ReturnType<typeof resolveRuntime>|undefined, closed=false, current:{stop:()=>void;done:Promise<void>}|undefined;\n const queue:Pending[]=[];\n async function execute(item:Pending) {\n if(closed||item.signal?.aborted) throw fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.');\n const runtime=await (runtimePromise??=resolveRuntime(options.runtimeDirectory,contract));\n if(closed||item.signal?.aborted) throw fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.');\n await new Promise<void>((done)=>{\n let stopError:unknown; let child:ChildProcessWithoutNullStreams|undefined, finished=false, started=false, sending=false, total=0, rest=Buffer.alloc(0), result:ResultadoFiscal|undefined;\n let finishCurrent!:()=>void; const doneCurrent=new Promise<void>(r=>{finishCurrent=r;});\n const uncertain=()=>['transmitir','cancelar','cartaCorrecao','inutilizar'].includes(item.req.comando)&&started || sending;\n const finish=(error?:unknown)=>{\n if(finished)return; finished=true;clearTimeout(timer);item.signal?.removeEventListener('abort',abort);\n item.bytes.fill(0);if(current?.done===doneCurrent)current=undefined;finishCurrent();error?item.reject(error):item.resolve(result!);done();\n };\n const stop=(code:string,message:string)=>{ if(finished||stopError)return; stopError=fail(code,message,item.req,uncertain()); if(child?.pid)child.kill('SIGKILL');else finish(stopError); };\n const abort=()=>stop('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada; confira a situa\u00E7\u00E3o fiscal quando o envio foi iniciado.');\n const timer=setTimeout(()=>stop('TIMEOUT_MOTOR','O motor excedeu o prazo; consulte a situa\u00E7\u00E3o antes de transmitir novamente.'),timeout);\n current={stop:()=>stop('EMISSOR_FECHADO','Emissor encerrado.'),done:doneCurrent};\n const env:NodeJS.ProcessEnv={};\n for(const key of ['PATH','Path','SystemRoot','WINDIR','TEMP','TMP','HOME','LANG','LC_ALL']) if(process.env[key]!==undefined)env[key]=process.env[key];\n if(process.platform==='linux')env.LD_LIBRARY_PATH=path.join(runtime.directory,'lib');\n if(process.platform==='win32'){const inheritedPath=env.Path??env.PATH??'';delete env.Path;env.PATH=path.join(runtime.directory,'lib')+';'+runtime.directory+';'+inheritedPath;}\n const modules=path.join(runtime.directory,'ossl-modules'); env.OPENSSL_MODULES=modules; env.OPENSSL_CONF=path.join(runtime.directory,'openssl.cnf');\n try { child=launch(runtime.executable,['--parent-pid',String(process.pid)],{cwd:runtime.directory,env,windowsHide:true,shell:false,stdio:['pipe','pipe','pipe']}); started=typeof child.pid==='number'; }\n catch { finish(fail('FALHA_INICIAR_MOTOR','N\u00E3o foi poss\u00EDvel iniciar o motor.',item.req)); return; }\n item.signal?.addEventListener('abort',abort,{once:true});\n child.on('spawn',()=>{started=true;});\n child.on('error',()=>finish(fail('FALHA_INICIAR_MOTOR','N\u00E3o foi poss\u00EDvel iniciar o motor.',item.req,uncertain())));\n child.stdin.on('error',()=>stop('FALHA_PIPE','N\u00E3o foi poss\u00EDvel comunicar com o motor.'));\n child.stderr.on('data',()=>{}); // stderr bruto nunca \u00E9 exposto: pode conter mensagens de depend\u00EAncias.\n child.stdout.on('data',(chunk:Buffer)=>{\n if(finished||stopError)return;total+=chunk.length;if(total>bytesLimit){stop('RESPOSTA_EXCESSIVA','Resposta do motor excede o limite.');return;}\n rest=Buffer.concat([rest,chunk]);let end:number;\n while((end=rest.indexOf(10))>=0) {\n const line=rest.subarray(0,end);rest=rest.subarray(end+1);if(!line.length)continue;\n try {\n const frame=JSON.parse(new TextDecoder('utf-8',{fatal:true}).decode(line));\n if(!plain(frame)||frame.id!==item.req.id)throw Error();\n if(frame.tipo==='envioIniciado'){sending=true;continue;}\n if(result||frame.versao!==1||frame.sourceRevision!==contract.sourceRevision||frame.contractHash!==contract.contractHash||typeof frame.sucesso!=='boolean'||!STATES.has(String(frame.estado)))throw Error();\n if(frame.xmlBase64!==undefined&&(typeof frame.xmlBase64!=='string'||!frame.xmlBase64.length||Buffer.from(frame.xmlBase64,'base64').toString('base64')!==frame.xmlBase64))throw Error();\n if(frame.cStat!==undefined&&(!Number.isInteger(frame.cStat)||Number(frame.cStat)<1||Number(frame.cStat)>9999))throw Error();\n result=frame as unknown as ResultadoFiscal;\n }catch{stop('RESPOSTA_INVALIDA','O motor retornou uma resposta inv\u00E1lida.');return;}\n }\n });\n child.on('close',(code)=>{\n if(finished)return;\n if(stopError){finish(stopError);return;}\n if(code!==0||rest.length||!result){finish(fail('FALHA_MOTOR','O motor encerrou sem resposta fiscal v\u00E1lida.',item.req,uncertain()));return;}\n finish();\n });\n child.stdin.end(item.bytes);\n if(item.signal?.aborted)abort();\n });\n }\n let busy=false;\n async function next(){if(busy)return;const item=queue.shift();if(!item)return;busy=true;item.signal?.removeEventListener('abort',item.abort!);try{await execute(item);}catch(e){item.bytes.fill(0);item.reject(e);}finally{busy=false;void next();}}\n async function request(command:RequisicaoMotor['comando'],data:Partial<RequisicaoMotor>,operation:OpcoesOperacao={}):Promise<ResultadoFiscal> {\n if(closed)throw fail('EMISSOR_FECHADO','Emissor encerrado.');\n if(operation.signal?.aborted)throw fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.');\n if(['assinar','transmitir','consultar','cancelar','cartaCorrecao','inutilizar'].includes(command)&&!certificate)throw fail('CERTIFICADO_AUSENTE','A opera\u00E7\u00E3o exige um certificado A1.');\n if(command==='gerarXml')options.validaDocumento?.(data.documento);\n const config:ConfiguracaoMotor={...cfg};\n if(certificate){let pfx:Buffer;try{pfx=certificate.pfx??await readFile(certificate.arquivo!);}catch{throw fail('CERTIFICADO_AUSENTE','N\u00E3o foi poss\u00EDvel ler o A1 configurado.');}if(pfx.length>2*1024*1024)throw fail('CERTIFICADO_EXCESSIVO','Certificado excede o limite.');config.certificado={pfxBase64:pfx.toString('base64'),senha:certificate.senha};}\n let bytes:Buffer, req:RequisicaoMotor;\n try{bytes=Buffer.from(JSON.stringify({versao:1,id:randomUUID(),...contract,comando:command,config,...data})+'\\n','utf8');if(bytes.length>bytesLimit)throw Error();req=JSON.parse(bytes.toString('utf8'));}catch{throw fail('REQUISICAO_INVALIDA','Dados da opera\u00E7\u00E3o inv\u00E1lidos ou acima do limite.');}\n return new Promise((resolve,reject)=>{\n if(closed){bytes.fill(0);reject(fail('EMISSOR_FECHADO','Emissor encerrado.'));return;}\n if(busy&&queue.length>=capacity){bytes.fill(0);reject(fail('FILA_CHEIA','A fila fiscal est\u00E1 cheia.'));return;}\n const item:Pending={req,bytes,signal:operation.signal,resolve,reject};\n item.abort=()=>{const i=queue.indexOf(item);if(i>=0){queue.splice(i,1);bytes.fill(0);operation.signal?.removeEventListener('abort',item.abort!);reject(fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.'));}};\n operation.signal?.addEventListener('abort',item.abort,{once:true});queue.push(item);if(operation.signal?.aborted)item.abort();void next();\n });\n }\n const xmlData=(xml:string)=>{if(typeof xml!=='string'||!xml.trim()||Buffer.byteLength(xml,'utf8')>2*1024*1024)throw fail('XML_INVALIDO','XML vazio ou acima do limite.');return {xmlBase64:Buffer.from(xml,'utf8').toString('base64')};};\n const checkKey=(key:string)=>{if(!/^\\d{44}$/.test(key))throw fail('CHAVE_INVALIDA','Chave fiscal inv\u00E1lida.');};\n const reason=(value:string)=>{if(typeof value!=='string'||value.length<15||value.length>255)throw fail('JUSTIFICATIVA_INVALIDA','Justificativa deve ter de 15 a 255 caracteres.');};\n return {\n gerarXml:(documento:object,op?:OpcoesOperacao)=>request('gerarXml',{documento},op),\n validar:(xml:string,op?:OpcoesOperacao)=>request('validar',xmlData(xml),op),\n assinar:(xml:string,op?:OpcoesOperacao)=>request('assinar',xmlData(xml),op),\n transmitir:(xml:string,op?:OpcoesOperacao)=>request('transmitir',xmlData(xml),op),\n consultar:(consulta:Consulta,op?:OpcoesOperacao)=>{checkKey(consulta.chave);if(consulta.recibo&&!/^\\d{15}$/.test(consulta.recibo))throw fail('RECIBO_INVALIDO','Recibo inv\u00E1lido.');return request('consultar',consulta,op);},\n cancelar:(data:Cancelamento,op?:OpcoesOperacao)=>{checkKey(data.chave);reason(data.justificativa);if(!/^\\d{15}$/.test(data.protocolo))throw fail('PROTOCOLO_INVALIDO','Protocolo inv\u00E1lido.');return request('cancelar',data,op);},\n cartaCorrecao:(data:CartaCorrecao,op?:OpcoesOperacao)=>{if(cfg.modelo!==55)throw fail('OPERACAO_NAO_SUPORTADA','Carta de corre\u00E7\u00E3o exige NF-e modelo 55.');checkKey(data.chave);if(typeof data.correcao!=='string'||data.correcao.length<15||data.correcao.length>1000||!Number.isInteger(data.sequenciaEvento??1)||(data.sequenciaEvento??1)<1||(data.sequenciaEvento??1)>20)throw fail('CORRECAO_INVALIDA','Dados da carta de corre\u00E7\u00E3o inv\u00E1lidos.');return request('cartaCorrecao',{...data,sequenciaEvento:data.sequenciaEvento??1},op);},\n inutilizar:(data:Inutilizacao,op?:OpcoesOperacao)=>{reason(data.justificativa);if(!Number.isInteger(data.ano)||data.ano<0||data.ano>99||!Number.isInteger(data.serie)||data.serie<0||data.serie>999||!Number.isInteger(data.numeroInicial)||data.numeroInicial<1||!Number.isInteger(data.numeroFinal)||data.numeroFinal<data.numeroInicial||data.numeroFinal>999999999)throw fail('INUTILIZACAO_INVALIDA','Faixa de inutiliza\u00E7\u00E3o inv\u00E1lida.');return request('inutilizar',{inutilizacao:{ano:data.ano,serie:data.serie,numeroInicial:data.numeroInicial,numeroFinal:data.numeroFinal},justificativa:data.justificativa},op);},\n async fechar(){if(closed)return;closed=true;for(const item of queue.splice(0)){item.signal?.removeEventListener('abort',item.abort!);item.bytes.fill(0);item.reject(fail('EMISSOR_FECHADO','Emissor encerrado.'));}const running=current;running?.stop();if(running)await running.done;certificate?.pfx?.fill(0);}\n };\n}\nexport type Emissor = ReturnType<typeof criarEmissor>;\n", "export const PROTOCOL_VERSION = 1 as const;\nexport type Modelo = 55 | 65;\nexport type Ambiente = 1 | 2;\nexport type Comando = 'gerarXml' | 'validar' | 'assinar' | 'transmitir' | 'consultar' | 'cancelar' | 'cartaCorrecao' | 'inutilizar';\nexport interface Contrato { sourceRevision: number; contractHash: string }\nexport interface CertificadoA1 { pfx?: Uint8Array; arquivo?: string; senha: string }\nexport interface ConfiguracaoEmissor { cnpj: string; uf: string; modelo: Modelo; ambiente: Ambiente; certificado?: CertificadoA1; csc?: { id: string; valor: string } }\nexport interface ConfiguracaoMotor extends Omit<ConfiguracaoEmissor, 'certificado'> { certificado?: { pfxBase64: string; senha: string } }\nexport interface RequisicaoMotor extends Contrato {\n versao: 1; id: string; comando: Comando; config: ConfiguracaoMotor;\n documento?: object; xmlBase64?: string; chave?: string; recibo?: string;\n protocolo?: string; justificativa?: string; correcao?: string; sequenciaEvento?: number;\n inutilizacao?: { ano: number; serie: number; numeroInicial: number; numeroFinal: number };\n}\nexport type Estado = 'DENEGADO' | 'XML_GERADO' | 'VALIDADO' | 'ASSINADO' | 'AUTORIZADO' | 'REJEITADO' | 'PENDENTE' | 'INDETERMINADO' | 'CONSULTADO' | 'CANCELADO' | 'EVENTO_REGISTRADO' | 'INUTILIZADO' | 'ERRO';\nexport interface ResultadoFiscal extends Contrato {\n versao: 1; id: string; sucesso: boolean; estado: Estado; codigo?: string;\n cStat?: number; xMotivo?: string; chave?: string; protocolo?: string; recibo?: string;\n xmlBase64?: string; envioIniciado?: boolean;\n}\nexport interface RuntimeManifest extends Contrato {\n formatVersion: 1; platform: string; arch: string; executable: string; files: Record<string, string>;\n}\nexport interface OpcoesOperacao { signal?: AbortSignal }\nexport interface Consulta { chave: string; recibo?: string }\nexport interface Cancelamento { chave: string; protocolo: string; justificativa: string }\nexport interface CartaCorrecao { chave: string; correcao: string; sequenciaEvento?: number }\nexport interface Inutilizacao { ano: number; serie: number; numeroInicial: number; numeroFinal: number; justificativa: string }\nexport class ErroAcbrNode extends Error {\n readonly name = 'ErroAcbrNode';\n constructor(readonly codigo: string, mensagem: string, readonly resultadoDesconhecido = false, readonly xmlBase64?: string) { super(mensagem); }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/runtime.ts", "../src/diagnostics.ts", "../src/types.ts"],
4
+ "sourcesContent": ["import { spawn, type ChildProcessWithoutNullStreams, type SpawnOptionsWithoutStdio } from 'node:child_process';\r\nimport { readFile, stat } from 'node:fs/promises';\r\nimport path from 'node:path';\r\nimport { createRequire } from 'node:module';\r\nimport { createHash, randomUUID } from 'node:crypto';\r\nimport { TextDecoder } from 'node:util';\r\nimport { ErroAcbrNode, type DetalhesErroAcbr, type ConfiguracaoEmissor, type Contrato, type ConfiguracaoMotor, type RequisicaoMotor, type ResultadoFiscal, type RuntimeManifest, type OpcoesOperacao, type Consulta, type Cancelamento, type CartaCorrecao, type Inutilizacao } from './types.js';\r\nimport { diagnosticarResultado, etapaDaOperacao } from './diagnostics.js';\r\nexport * from './types.js';\r\nexport { diagnosticarErro, diagnosticarResultado } from './diagnostics.js';\r\ntype Launch = (exe: string, args: string[], config: SpawnOptionsWithoutStdio) => ChildProcessWithoutNullStreams;\r\nexport interface OpcoesEmissor extends ConfiguracaoEmissor {\r\n contrato: Contrato; runtimeDirectory?: string; timeoutMs?: number; limiteFila?: number; limiteBytes?: number;\r\n validaDocumento?: (documento: unknown) => void;\r\n /** Inje\u00E7\u00E3o para testes offline. O padr\u00E3o sempre inicia o motor distribu\u00EDdo. */\r\n criaProcesso?: Launch;\r\n}\r\nconst STATES = new Set(['DENEGADO','XML_GERADO','VALIDADO','ASSINADO','AUTORIZADO','REJEITADO','PENDENTE','INDETERMINADO','CONSULTADO','CANCELADO','EVENTO_REGISTRADO','INUTILIZADO','ERRO']);\r\nconst UFS = new Set('AC AL AP AM BA CE DF ES GO MA MT MS MG PA PB PR PE PI RJ RN RS RO RR SC SP SE TO'.split(' '));\r\nconst MAX_BYTES = 8 * 1024 * 1024;\r\nconst MAX_TEARDOWN_MS = 1000;\r\nconst plain = (v: unknown): v is Record<string,unknown> => v !== null && typeof v === 'object' && !Array.isArray(v);\r\nconst validContract = (v: unknown): v is Contrato => plain(v) && Number.isInteger(v.sourceRevision) && Number(v.sourceRevision)>0 && typeof v.contractHash==='string' && /^[a-f0-9]{64}$/.test(v.contractHash);\r\nconst fail = (code: string, message: string, req?: RequisicaoMotor, unknown=false, detalhes?:DetalhesErroAcbr) => new ErroAcbrNode(code,message,unknown,req?.comando==='transmitir'?req.xmlBase64:undefined,{...(req?{etapa:etapaDaOperacao(req.comando)}:{}),...detalhes});\r\nfunction confined(root: string, relative: string): string {\r\n const file=path.resolve(root,relative), part=path.relative(root,file);\r\n if(!relative || path.isAbsolute(relative) || part==='..' || part.startsWith('..'+path.sep)) throw fail('RUNTIME_INVALIDO','Caminho inv\u00E1lido no runtime.');\r\n return file;\r\n}\r\nasync function resolveRuntime(directory: string | undefined, contract: Contrato): Promise<{directory:string;executable:string}> {\r\n if(!validContract(contract)) throw fail('CONTRATO_INVALIDO','Contrato gerado inv\u00E1lido.');\r\n let root=directory;\r\n if(!root) {\r\n if(!['linux','win32'].includes(process.platform) || process.arch!=='x64') throw fail('PLATAFORMA_NAO_SUPORTADA','Esta vers\u00E3o exige Linux ou Windows x64.');\r\n try { const require=createRequire(typeof __filename!=='undefined'?__filename:import.meta.url); root=path.join(path.dirname(require.resolve('cosmemilton-acbr-node-'+process.platform+'-x64/package.json')),'runtime'); }\r\n catch { throw fail('RUNTIME_AUSENTE','Instale o pacote de runtime da plataforma ou informe runtimeDirectory.'); }\r\n }\r\n root=path.resolve(root);\r\n let m: RuntimeManifest;\r\n try { m=JSON.parse(await readFile(path.join(root,'manifest.json'),'utf8')); } catch { throw fail('RUNTIME_AUSENTE','Manifesto do runtime n\u00E3o encontrado.'); }\r\n if(!validContract(m) || m.formatVersion!==1 || !plain(m.files) || typeof m.executable!=='string' || m.platform!==process.platform || m.arch!==process.arch) throw fail('RUNTIME_INVALIDO','Manifesto ou plataforma do runtime inv\u00E1lidos.');\r\n if(m.sourceRevision!==contract.sourceRevision || m.contractHash!==contract.contractHash) throw fail('CONTRATO_DIVERGENTE','Cliente e motor foram gerados de contratos diferentes; regenere e recompile.');\r\n for(const [name,hash] of Object.entries(m.files)) {\r\n if(typeof hash!=='string'||!/^[a-f0-9]{64}$/.test(hash)) throw fail('RUNTIME_INVALIDO','Hash inv\u00E1lido no runtime.');\r\n const file=confined(root,name); let data:Buffer;\r\n try { if(!(await stat(file)).isFile()) throw Error(); data=await readFile(file); } catch { throw fail('RUNTIME_INCOMPLETO','Arquivo do runtime ausente.'); }\r\n if(createHash('sha256').update(data).digest('hex')!==hash) throw fail('RUNTIME_ALTERADO','O runtime n\u00E3o corresponde ao manifesto distribu\u00EDdo.');\r\n }\r\n if(!m.files[m.executable]) throw fail('RUNTIME_INVALIDO','O execut\u00E1vel n\u00E3o consta no invent\u00E1rio.');\r\n return {directory:root,executable:confined(root,m.executable)};\r\n}\r\ninterface Pending { req:RequisicaoMotor; bytes:Buffer; signal?:AbortSignal; resolve:(v:ResultadoFiscal)=>void; reject:(e:unknown)=>void; abort?:()=>void }\r\nexport function criarEmissor(options: OpcoesEmissor) {\r\n const configFail=(campo?:string)=>fail('CONFIGURACAO_INVALIDA','Informe campos e tipos v\u00E1lidos na configura\u00E7\u00E3o.',undefined,false,{etapa:'configuracao',campo});\r\n if(!plain(options))throw configFail();\r\n if(typeof options.cnpj!=='string'||!/^\\d{14}$/.test(options.cnpj))throw configFail('cnpj');\r\n if(typeof options.uf!=='string'||!UFS.has(options.uf))throw configFail('uf');\r\n if(![55,65].includes(options.modelo))throw configFail('modelo');\r\n if(![1,2].includes(options.ambiente))throw configFail('ambiente');\r\n if(!validContract(options.contrato)) throw fail('CONTRATO_INVALIDO','Contrato gerado inv\u00E1lido.');\r\n const cert=options.certificado;\r\n if(cert!==undefined && (!plain(cert)||typeof cert.senha!=='string'||!!cert.pfx===!!cert.arquivo||cert.pfx!==undefined&&!(cert.pfx instanceof Uint8Array)||cert.arquivo!==undefined&&(typeof cert.arquivo!=='string'||!cert.arquivo))) throw fail('CERTIFICADO_INVALIDO','Informe A1 em pfx ou arquivo e sua senha.',undefined,false,{campo:'certificado'});\r\n if(options.csc!==undefined && (!plain(options.csc)||typeof options.csc.id!=='string'||!/^\\d{1,6}$/.test(options.csc.id)||typeof options.csc.valor!=='string'||!options.csc.valor||options.csc.valor.length>256)) throw fail('CSC_INVALIDO','CSC inv\u00E1lido.',undefined,false,{campo:'csc'});\r\n if(options.runtimeDirectory!==undefined&&(typeof options.runtimeDirectory!=='string'||!options.runtimeDirectory))throw configFail('runtimeDirectory');\r\n if(options.validaDocumento!==undefined&&typeof options.validaDocumento!=='function'||options.criaProcesso!==undefined&&typeof options.criaProcesso!=='function')throw configFail();\r\n const cfg:Omit<ConfiguracaoEmissor, 'certificado'>={cnpj:options.cnpj,uf:options.uf,modelo:options.modelo,ambiente:options.ambiente,csc:options.csc?{...options.csc}:undefined};\r\n const certificate=cert?{...cert,pfx:cert.pfx?Buffer.from(cert.pfx):undefined}:undefined;\r\n const contract={...options.contrato};\r\n const timeout=options.timeoutMs??120_000, capacity=options.limiteFila??32, bytesLimit=options.limiteBytes??MAX_BYTES;\r\n if(!Number.isInteger(timeout)||timeout<1||timeout>120000)throw configFail('timeoutMs');\r\n if(!Number.isInteger(capacity)||capacity<0||capacity>1000)throw configFail('limiteFila');\r\n if(!Number.isInteger(bytesLimit)||bytesLimit<256||bytesLimit>MAX_BYTES)throw configFail('limiteBytes');\r\n const launch:Launch=options.criaProcesso??((exe,args,config)=>spawn(exe,args,{...config,stdio:['pipe','pipe','pipe']}));\r\n let runtimePromise:ReturnType<typeof resolveRuntime>|undefined, closed=false, teardownFailed=false, current:{stop:()=>void;done:Promise<void>}|undefined;\r\n const queue:Pending[]=[];\r\n const closedError=()=>{const error=fail('EMISSOR_FECHADO','Emissor encerrado.');if(teardownFailed)error.anotarFalhaLimpeza();return error;};\r\n const rejectQueue=()=>{for(const item of queue.splice(0)){item.signal?.removeEventListener('abort',item.abort!);item.bytes.fill(0);item.reject(closedError());}};\r\n async function execute(item:Pending):Promise<ResultadoFiscal> {\r\n if(closed||item.signal?.aborted) throw fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.');\r\n const runtime=await (runtimePromise??=resolveRuntime(options.runtimeDirectory,contract));\r\n if(closed||item.signal?.aborted) throw fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.');\r\n return await new Promise<ResultadoFiscal>((done,rejectExecution)=>{\r\n let stopError:ErroAcbrNode|undefined; let child:ChildProcessWithoutNullStreams|undefined, finished=false, started=false, sending=false, total=0, rest=Buffer.alloc(0), result:ResultadoFiscal|undefined;\r\n let teardownTimer:ReturnType<typeof setTimeout>|undefined;\r\n let finishCurrent!:()=>void; const doneCurrent=new Promise<void>(r=>{finishCurrent=r;});\r\n const uncertain=()=>['transmitir','cancelar','cartaCorrecao','inutilizar'].includes(item.req.comando)&&started || sending;\r\n const finish=(error?:unknown)=>{\r\n if(finished)return; finished=true;clearTimeout(timer);clearTimeout(teardownTimer);item.signal?.removeEventListener('abort',abort);\r\n item.bytes.fill(0);if(current?.done===doneCurrent)current=undefined;finishCurrent();error?rejectExecution(error):done(result!);\r\n };\r\n const detachOwnedChild=()=>{\r\n // Somente os handles retornados por este launch; nunca enumera ou encerra processos alheios.\r\n for(const pipe of [child?.stdin,child?.stdout,child?.stderr]){\r\n try{pipe?.destroy();}catch{}\r\n try{(pipe as {unref?:()=>void}|undefined)?.unref?.();}catch{}\r\n }\r\n try{child?.unref();}catch{}\r\n };\r\n const teardownFallback=()=>{\r\n if(finished)return;\r\n stopError??=fail('FALHA_MOTOR','O motor n\u00E3o foi encerrado.',item.req,uncertain());\r\n stopError.anotarFalhaLimpeza();teardownFailed=true;closed=true;\r\n rejectQueue();certificate?.pfx?.fill(0);\r\n // Finaliza antes de destroy/unref: esses m\u00E9todos podem disparar eventos s\u00EDncronos.\r\n finish(stopError);detachOwnedChild();\r\n };\r\n const stop=(code:string,message:string)=>{\r\n if(finished||stopError)return;\r\n stopError=fail(code,message,item.req,uncertain());\r\n if(!child?.pid){finish(stopError);detachOwnedChild();return;}\r\n teardownTimer=setTimeout(teardownFallback,MAX_TEARDOWN_MS);\r\n try{if(child.kill('SIGKILL')!==true)teardownFallback();}catch{teardownFallback();}\r\n };\r\n const abort=()=>stop('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada; confira a situa\u00E7\u00E3o fiscal quando o envio foi iniciado.');\r\n const timer=setTimeout(()=>stop('TIMEOUT_MOTOR','O motor excedeu o prazo; consulte a situa\u00E7\u00E3o antes de transmitir novamente.'),timeout);\r\n current={stop:()=>stop('EMISSOR_FECHADO','Emissor encerrado.'),done:doneCurrent};\r\n const env:NodeJS.ProcessEnv={};\r\n for(const key of ['PATH','Path','SystemRoot','WINDIR','TEMP','TMP','HOME','LANG','LC_ALL']) if(process.env[key]!==undefined)env[key]=process.env[key];\r\n if(process.platform==='linux')env.LD_LIBRARY_PATH=path.join(runtime.directory,'lib');\r\n if(process.platform==='win32'){const inheritedPath=env.Path??env.PATH??'';delete env.Path;env.PATH=path.join(runtime.directory,'lib')+';'+runtime.directory+';'+inheritedPath;}\r\n const modules=path.join(runtime.directory,'ossl-modules'); env.OPENSSL_MODULES=modules; env.OPENSSL_CONF=path.join(runtime.directory,'openssl.cnf');\r\n try { child=launch(runtime.executable,['--parent-pid',String(process.pid)],{cwd:runtime.directory,env,windowsHide:true,shell:false,stdio:['pipe','pipe','pipe']}); started=typeof child.pid==='number'; }\r\n catch { finish(fail('FALHA_INICIAR_MOTOR','N\u00E3o foi poss\u00EDvel iniciar o motor.',item.req)); return; }\r\n item.signal?.addEventListener('abort',abort,{once:true});\r\n child.on('spawn',()=>{started=true;});\r\n child.on('error',()=>{if(finished)return;if(stopError){teardownFallback();return;}stop('FALHA_INICIAR_MOTOR','N\u00E3o foi poss\u00EDvel iniciar o motor.');});\r\n child.stdin.on('error',()=>stop('FALHA_PIPE','N\u00E3o foi poss\u00EDvel comunicar com o motor.'));\r\n child.stdout.on('error',()=>stop('FALHA_PIPE','N\u00E3o foi poss\u00EDvel comunicar com o motor.'));\r\n child.stderr.on('error',()=>stop('FALHA_PIPE','N\u00E3o foi poss\u00EDvel comunicar com o motor.'));\r\n child.stderr.on('data',()=>{}); // stderr bruto nunca \u00E9 exposto: pode conter mensagens de depend\u00EAncias.\r\n child.stdout.on('data',(chunk:Buffer)=>{\r\n if(finished||stopError)return;total+=chunk.length;if(total>bytesLimit){stop('RESPOSTA_EXCESSIVA','Resposta do motor excede o limite.');return;}\r\n rest=Buffer.concat([rest,chunk]);let end:number;\r\n while((end=rest.indexOf(10))>=0) {\r\n const line=rest.subarray(0,end);rest=rest.subarray(end+1);if(!line.length)continue;\r\n try {\r\n const frame=JSON.parse(new TextDecoder('utf-8',{fatal:true}).decode(line));\r\n if(!plain(frame)||frame.id!==item.req.id)throw Error();\r\n if(frame.tipo==='envioIniciado'){sending=true;continue;}\r\n if(result||frame.versao!==1||frame.sourceRevision!==contract.sourceRevision||frame.contractHash!==contract.contractHash||typeof frame.sucesso!=='boolean'||!STATES.has(String(frame.estado)))throw Error();\r\n if(frame.xmlBase64!==undefined&&(typeof frame.xmlBase64!=='string'||!frame.xmlBase64.length||Buffer.from(frame.xmlBase64,'base64').toString('base64')!==frame.xmlBase64))throw Error();\r\n if(frame.cStat!==undefined&&(!Number.isInteger(frame.cStat)||Number(frame.cStat)<1||Number(frame.cStat)>9999))throw Error();\r\n if(frame.envioIniciado!==undefined&&typeof frame.envioIniciado!=='boolean'||sending&&frame.envioIniciado===false)throw Error();\r\n const fiscal=frame as unknown as ResultadoFiscal;\r\n result={...fiscal,diagnostico:diagnosticarResultado(sending?{...fiscal,envioIniciado:true}:fiscal,item.req.comando)};\r\n }catch{stop('RESPOSTA_INVALIDA','O motor retornou uma resposta inv\u00E1lida.');return;}\r\n }\r\n });\r\n child.on('close',(code)=>{\r\n if(finished)return;\r\n if(stopError){finish(stopError);return;}\r\n if(code!==0||rest.length||!result){finish(fail('FALHA_MOTOR','O motor encerrou sem resposta fiscal v\u00E1lida.',item.req,uncertain()));return;}\r\n finish();\r\n });\r\n child.stdin.end(item.bytes);\r\n if(item.signal?.aborted)abort();\r\n });\r\n }\r\n let busy=false;\r\n async function next(){if(busy)return;const item=queue.shift();if(!item)return;busy=true;item.signal?.removeEventListener('abort',item.abort!);try{const result=await execute(item);item.resolve(result);}catch(e){item.bytes.fill(0);item.reject(e);}finally{busy=false;void next();}}\r\n async function request(command:RequisicaoMotor['comando'],data:Partial<RequisicaoMotor>,operation:OpcoesOperacao={}):Promise<ResultadoFiscal> {\r\n const rawOperation:unknown=operation;\r\n if(!plain(rawOperation))throw fail('OPERACAO_INVALIDA','Informe op\u00E7\u00F5es v\u00E1lidas para a opera\u00E7\u00E3o.',undefined,false,{etapa:etapaDaOperacao(command),campo:'operacao'});\r\n const signal:unknown=operation.signal;\r\n if(signal!==undefined&&(!plain(signal)||typeof signal.aborted!=='boolean'||typeof signal.addEventListener!=='function'||typeof signal.removeEventListener!=='function'))throw fail('OPERACAO_INVALIDA','Informe op\u00E7\u00F5es v\u00E1lidas para a opera\u00E7\u00E3o.',undefined,false,{etapa:etapaDaOperacao(command),campo:'signal'});\r\n if(closed)throw closedError();\r\n if(operation.signal?.aborted)throw fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.');\r\n if(['assinar','transmitir','consultar','cancelar','cartaCorrecao','inutilizar'].includes(command)&&!certificate)throw fail('CERTIFICADO_AUSENTE','A opera\u00E7\u00E3o exige um certificado A1.');\r\n if(command==='gerarXml')options.validaDocumento?.(data.documento);\r\n const config:ConfiguracaoMotor={...cfg};\r\n if(certificate){let pfx:Buffer;try{pfx=certificate.pfx??await readFile(certificate.arquivo!);}catch{throw fail('CERTIFICADO_AUSENTE','N\u00E3o foi poss\u00EDvel ler o A1 configurado.');}if(pfx.length>2*1024*1024)throw fail('CERTIFICADO_EXCESSIVO','Certificado excede o limite.');config.certificado={pfxBase64:pfx.toString('base64'),senha:certificate.senha};}\r\n let bytes:Buffer, req:RequisicaoMotor;\r\n try{bytes=Buffer.from(JSON.stringify({versao:1,id:randomUUID(),...contract,comando:command,config,...data})+'\\n','utf8');if(bytes.length>bytesLimit)throw Error();req=JSON.parse(bytes.toString('utf8'));}catch{throw fail('REQUISICAO_INVALIDA','Dados da opera\u00E7\u00E3o inv\u00E1lidos ou acima do limite.');}\r\n return new Promise((resolve,reject)=>{\r\n if(closed){bytes.fill(0);reject(closedError());return;}\r\n if(busy&&queue.length>=capacity){bytes.fill(0);reject(fail('FILA_CHEIA','A fila fiscal est\u00E1 cheia.'));return;}\r\n const item:Pending={req,bytes,signal:operation.signal,resolve,reject};\r\n item.abort=()=>{const i=queue.indexOf(item);if(i>=0){queue.splice(i,1);bytes.fill(0);operation.signal?.removeEventListener('abort',item.abort!);reject(fail('OPERACAO_CANCELADA','Opera\u00E7\u00E3o cancelada antes da execu\u00E7\u00E3o.'));}};\r\n operation.signal?.addEventListener('abort',item.abort,{once:true});queue.push(item);if(operation.signal?.aborted)item.abort();void next();\r\n });\r\n }\r\n const xmlData=(xml:string)=>{if(typeof xml!=='string'||!xml.trim()||Buffer.byteLength(xml,'utf8')>2*1024*1024)throw fail('XML_INVALIDO','XML vazio ou acima do limite.',undefined,false,{campo:'xml'});return {xmlBase64:Buffer.from(xml,'utf8').toString('base64')};};\r\n const checkKey=(key:string)=>{if(typeof key!=='string'||!/^\\d{44}$/.test(key))throw fail('CHAVE_INVALIDA','Chave fiscal inv\u00E1lida.',undefined,false,{campo:'chave'});};\r\n const reason=(value:string)=>{if(typeof value!=='string'||value.length<15||value.length>255)throw fail('JUSTIFICATIVA_INVALIDA','Justificativa deve ter de 15 a 255 caracteres.',undefined,false,{campo:'justificativa'});};\r\n const checkObject=(data:unknown,campo:string)=>{if(!plain(data))throw fail('OPERACAO_INVALIDA','Informe os par\u00E2metros da opera\u00E7\u00E3o como objeto.',undefined,false,{campo});};\r\n return {\r\n gerarXml:(documento:object,op?:OpcoesOperacao)=>request('gerarXml',{documento},op),\r\n validar:(xml:string,op?:OpcoesOperacao)=>request('validar',xmlData(xml),op),\r\n assinar:(xml:string,op?:OpcoesOperacao)=>request('assinar',xmlData(xml),op),\r\n transmitir:(xml:string,op?:OpcoesOperacao)=>request('transmitir',xmlData(xml),op),\r\n consultar:(consulta:Consulta,op?:OpcoesOperacao)=>{checkObject(consulta,'consulta');checkKey(consulta.chave);if(consulta.recibo!==undefined&&(typeof consulta.recibo!=='string'||!/^\\d{15}$/.test(consulta.recibo)))throw fail('RECIBO_INVALIDO','Recibo inv\u00E1lido.',undefined,false,{campo:'recibo'});return request('consultar',consulta,op);},\r\n cancelar:(data:Cancelamento,op?:OpcoesOperacao)=>{checkObject(data,'cancelamento');checkKey(data.chave);reason(data.justificativa);if(typeof data.protocolo!=='string'||!/^\\d{15}$/.test(data.protocolo))throw fail('PROTOCOLO_INVALIDO','Protocolo inv\u00E1lido.',undefined,false,{campo:'protocolo'});return request('cancelar',data,op);},\r\n cartaCorrecao:(data:CartaCorrecao,op?:OpcoesOperacao)=>{checkObject(data,'cartaCorrecao');if(cfg.modelo!==55)throw fail('OPERACAO_NAO_SUPORTADA','Carta de corre\u00E7\u00E3o exige NF-e modelo 55.');checkKey(data.chave);if(typeof data.correcao!=='string'||data.correcao.length<15||data.correcao.length>1000||!Number.isInteger(data.sequenciaEvento??1)||(data.sequenciaEvento??1)<1||(data.sequenciaEvento??1)>20)throw fail('CORRECAO_INVALIDA','Dados da carta de corre\u00E7\u00E3o inv\u00E1lidos.',undefined,false,{campo:'cartaCorrecao'});return request('cartaCorrecao',{...data,sequenciaEvento:data.sequenciaEvento??1},op);},\r\n inutilizar:(data:Inutilizacao,op?:OpcoesOperacao)=>{checkObject(data,'inutilizacao');reason(data.justificativa);if(!Number.isInteger(data.ano)||data.ano<0||data.ano>99||!Number.isInteger(data.serie)||data.serie<0||data.serie>999||!Number.isInteger(data.numeroInicial)||data.numeroInicial<1||!Number.isInteger(data.numeroFinal)||data.numeroFinal<data.numeroInicial||data.numeroFinal>999999999)throw fail('INUTILIZACAO_INVALIDA','Faixa de inutiliza\u00E7\u00E3o inv\u00E1lida.',undefined,false,{campo:'inutilizacao'});return request('inutilizar',{inutilizacao:{ano:data.ano,serie:data.serie,numeroInicial:data.numeroInicial,numeroFinal:data.numeroFinal},justificativa:data.justificativa},op);},\r\n async fechar(){if(!closed){closed=true;rejectQueue();}const running=current;try{running?.stop();if(running)await running.done;}finally{certificate?.pfx?.fill(0);}}\r\n };\r\n}\r\nexport type Emissor = ReturnType<typeof criarEmissor>;\r\n", "import { ErroAcbrNode, type Comando, type DetalhesErroAcbr, type DiagnosticoAcbr, type EtapaAcbr, type ResultadoFiscal, type StatusEnvio } from './types.js';\r\n\r\nconst ETAPAS = new Set<EtapaAcbr>(['configuracao','documento','runtime','geracao','validacao','assinatura','transmissao','consulta','cancelamento','carta_correcao','inutilizacao','operacao','limpeza']);\r\nconst CAMPOS = new Set(['cnpj','uf','modelo','ambiente','contrato','certificado','certificado.senha','certificado.pfx','certificado.arquivo','csc','csc.id','csc.valor','timeoutMs','limiteFila','limiteBytes','runtimeDirectory','documento','xml','consulta','chave','recibo','cancelamento','protocolo','justificativa','cartaCorrecao','correcao','sequenciaEvento','inutilizacao','ano','serie','numeroInicial','numeroFinal','operacao','signal']);\r\nconst CATALOGO: Record<string, [EtapaAcbr, string, string]> = {\r\n CONFIGURACAO_INVALIDA: ['configuracao','A configura\u00E7\u00E3o cont\u00E9m um campo inv\u00E1lido.','Confira o campo indicado e seu tipo antes de continuar.'],\r\n CONTRATO_INVALIDO: ['configuracao','O contrato do cliente \u00E9 inv\u00E1lido.','Use o contrato gerado junto com o cliente.'],\r\n CERTIFICADO_INVALIDO: ['configuracao','O certificado A1 ou sua configura\u00E7\u00E3o \u00E9 inv\u00E1lido.','Confira formato e validade do A1, pfx ou arquivo e a senha digitada, sem registrar esses dados.'],\r\n CERTIFICADO_DIVERGENTE: ['assinatura','O certificado n\u00E3o corresponde \u00E0 raiz CNPJ do emitente.','Confira o CNPJ configurado e selecione o A1 correspondente ao emitente.'],\r\n DEPENDENCIA_AUSENTE: ['runtime','Uma depend\u00EAncia do motor fiscal n\u00E3o est\u00E1 dispon\u00EDvel.','Reinstale o runtime completo da plataforma; confira a disponibilidade do OpenSSL distribu\u00EDdo.'],\r\n SCHEMAS_AUSENTES: ['runtime','Os schemas fiscais n\u00E3o est\u00E3o dispon\u00EDveis.','Reinstale o runtime completo da plataforma.'],\r\n SERVICOS_AUSENTES: ['runtime','A configura\u00E7\u00E3o dos servi\u00E7os fiscais n\u00E3o est\u00E1 dispon\u00EDvel.','Reinstale o runtime completo da plataforma.'],\r\n CSC_AUSENTE: ['configuracao','A opera\u00E7\u00E3o de NFC-e exige CSC.','Informe id e valor do CSC na configura\u00E7\u00E3o sem registrar seu conte\u00FAdo.'],\r\n IDENTIDADE_DIVERGENTE: ['documento','A identidade fiscal n\u00E3o corresponde \u00E0 configura\u00E7\u00E3o ou ao retorno.','Confira emitente, UF, modelo, ambiente e chave do documento antes de continuar.'],\r\n XML_SCHEMA_INVALIDO: ['validacao','O XML n\u00E3o atende aos schemas fiscais.','Confira os campos obrigat\u00F3rios e os tributos; a valida\u00E7\u00E3o de XML assinado deve ocorrer ap\u00F3s a assinatura.'],\r\n ASSINATURA_INVALIDA: ['assinatura','A assinatura do XML n\u00E3o foi validada.','Confira o A1 correspondente e use o XML assinado sem altera\u00E7\u00F5es.'],\r\n XML_NAO_ASSINADO: ['assinatura','A opera\u00E7\u00E3o exige XML previamente assinado.','Conclua a assinatura e a valida\u00E7\u00E3o antes de transmitir.'],\r\n XML_ALTERADO: ['assinatura','O XML assinado foi alterado.','Use exatamente o XML assinado e persistido; n\u00E3o edite seu conte\u00FAdo.'],\r\n RETORNO_INVALIDO: ['transmissao','A identidade ou o protocolo do retorno fiscal \u00E9 inv\u00E1lido.','Consulte a situa\u00E7\u00E3o fiscal antes de decidir repetir a opera\u00E7\u00E3o.'],\r\n OPERACAO_FISCAL_FALHOU: ['operacao','O motor n\u00E3o conseguiu concluir a etapa fiscal.','Confira a configura\u00E7\u00E3o da etapa, os dados do XML e as depend\u00EAncias do runtime.'],\r\n TLS_SERVIDOR_INVALIDO: ['transmissao','A verifica\u00E7\u00E3o TLS do servi\u00E7o fiscal falhou.','Confira o servi\u00E7o e a cadeia de confian\u00E7a; mantenha a verifica\u00E7\u00E3o TLS habilitada.'],\r\n CSC_INVALIDO: ['configuracao','A configura\u00E7\u00E3o do CSC \u00E9 inv\u00E1lida.','Confira id e valor do CSC sem registrar seu conte\u00FAdo.'],\r\n PLATAFORMA_NAO_SUPORTADA: ['runtime','A plataforma n\u00E3o \u00E9 suportada.','Execute em Windows ou Linux x64 com Node.js 22.12 ou superior.'],\r\n RUNTIME_AUSENTE: ['runtime','O motor fiscal n\u00E3o foi encontrado.','Instale o runtime da plataforma incluindo depend\u00EAncias opcionais.'],\r\n RUNTIME_INVALIDO: ['runtime','O runtime fiscal \u00E9 inv\u00E1lido.','Use um runtime distribu\u00EDdo e compat\u00EDvel com a plataforma.'],\r\n RUNTIME_INCOMPLETO: ['runtime','Falta um arquivo do runtime fiscal.','Reinstale o runtime da plataforma.'],\r\n RUNTIME_ALTERADO: ['runtime','A integridade do runtime fiscal n\u00E3o foi confirmada.','Reinstale o runtime; n\u00E3o desative a verifica\u00E7\u00E3o dos hashes.'],\r\n CONTRATO_DIVERGENTE: ['runtime','Cliente e motor usam contratos diferentes.','Use vers\u00F5es compat\u00EDveis ou regenere e recompile ambos.'],\r\n DOCUMENTO_INVALIDO: ['documento','O documento cont\u00E9m dados incompat\u00EDveis com o modelo.','Valide os campos e tipos do documento antes de gerar o XML.'],\r\n OPERACAO_INVALIDA: ['operacao','Os par\u00E2metros da opera\u00E7\u00E3o s\u00E3o inv\u00E1lidos.','Informe um objeto com os campos exigidos pela opera\u00E7\u00E3o.'],\r\n OPERACAO_CANCELADA: ['operacao','A opera\u00E7\u00E3o foi cancelada.','Confira o estado do envio antes de decidir continuar.'],\r\n TIMEOUT_MOTOR: ['runtime','O motor excedeu o tempo de espera.','Confira o estado do envio antes de repetir a opera\u00E7\u00E3o.'],\r\n EMISSOR_FECHADO: ['operacao','O emissor foi encerrado.','Crie um novo emissor para continuar.'],\r\n FALHA_INICIAR_MOTOR: ['runtime','N\u00E3o foi poss\u00EDvel iniciar o motor fiscal.','Confira a instala\u00E7\u00E3o e as permiss\u00F5es de execu\u00E7\u00E3o do runtime.'],\r\n FALHA_PIPE: ['runtime','A comunica\u00E7\u00E3o com o motor foi interrompida.','Confira a instala\u00E7\u00E3o e o estado do envio antes de continuar.'],\r\n RESPOSTA_EXCESSIVA: ['runtime','A resposta do motor excedeu o limite.','Confira o tamanho da opera\u00E7\u00E3o e a vers\u00E3o do runtime.'],\r\n RESPOSTA_INVALIDA: ['runtime','O motor devolveu uma resposta inv\u00E1lida.','Confira a compatibilidade do runtime e o estado do envio.'],\r\n FALHA_MOTOR: ['runtime','O motor encerrou sem uma resposta fiscal v\u00E1lida.','Confira a instala\u00E7\u00E3o e o estado do envio antes de continuar.'],\r\n CERTIFICADO_AUSENTE: ['configuracao','O certificado A1 n\u00E3o est\u00E1 dispon\u00EDvel para esta opera\u00E7\u00E3o.','Configure um A1 acess\u00EDvel e sua senha sem registrar esses dados.'],\r\n CERTIFICADO_EXCESSIVO: ['configuracao','O certificado excede o limite de tamanho.','Use um arquivo A1 de at\u00E9 2 MiB.'],\r\n REQUISICAO_INVALIDA: ['operacao','Os dados n\u00E3o puderam ser serializados ou excedem o limite.','Use dados JSON e reduza o tamanho da opera\u00E7\u00E3o.'],\r\n FILA_CHEIA: ['operacao','A fila fiscal est\u00E1 cheia.','Aguarde a opera\u00E7\u00E3o atual terminar antes de iniciar outra.'],\r\n XML_INVALIDO: ['documento','O XML est\u00E1 vazio, tem tipo inv\u00E1lido ou excede o limite.','Informe o XML como texto UTF-8 de at\u00E9 2 MiB.'],\r\n CHAVE_INVALIDA: ['documento','A chave fiscal tem formato inv\u00E1lido.','Informe a chave como texto com 44 d\u00EDgitos.'],\r\n RECIBO_INVALIDO: ['documento','O recibo tem formato inv\u00E1lido.','Informe o recibo como texto com 15 d\u00EDgitos.'],\r\n JUSTIFICATIVA_INVALIDA: ['documento','A justificativa tem tamanho inv\u00E1lido.','Informe uma justificativa com 15 a 255 caracteres.'],\r\n PROTOCOLO_INVALIDO: ['documento','O protocolo tem formato inv\u00E1lido.','Informe o protocolo como texto com 15 d\u00EDgitos.'],\r\n OPERACAO_NAO_SUPORTADA: ['operacao','A opera\u00E7\u00E3o n\u00E3o \u00E9 suportada para este modelo.','Carta de corre\u00E7\u00E3o exige NF-e modelo 55.'],\r\n CORRECAO_INVALIDA: ['documento','Os dados da carta de corre\u00E7\u00E3o s\u00E3o inv\u00E1lidos.','Confira a corre\u00E7\u00E3o de 15 a 1000 caracteres e a sequ\u00EAncia de 1 a 20.'],\r\n INUTILIZACAO_INVALIDA: ['documento','A faixa de inutiliza\u00E7\u00E3o \u00E9 inv\u00E1lida.','Confira ano, s\u00E9rie e n\u00FAmeros inicial e final.'],\r\n FALHA_LOCAL: ['operacao','N\u00E3o foi poss\u00EDvel concluir a opera\u00E7\u00E3o local.','Confira a etapa e os tipos dos dados; n\u00E3o registre o erro bruto.']\r\n};\r\n\r\nexport function etapaDaOperacao(comando: Comando): EtapaAcbr {\r\n return ({gerarXml:'geracao',validar:'validacao',assinar:'assinatura',transmitir:'transmissao',consultar:'consulta',cancelar:'cancelamento',cartaCorrecao:'carta_correcao',inutilizar:'inutilizacao'} as const)[comando]??'operacao';\r\n}\r\n\r\n/** Apenas cat\u00E1logo e metadados conhecidos; nunca copia message, stack, stderr ou causa bruta. */\r\nexport function criarDiagnosticoErro(codigo: string, desconhecido = false, detalhes: DetalhesErroAcbr = {}): DiagnosticoAcbr {\r\n const safeCode = Object.hasOwn(CATALOGO, codigo) ? codigo : 'FALHA_LOCAL';\r\n const [defaultStage, mensagem, defaultAction] = CATALOGO[safeCode];\r\n const etapa = detalhes.etapa && ETAPAS.has(detalhes.etapa) ? detalhes.etapa : defaultStage;\r\n const campo = detalhes.campo && CAMPOS.has(detalhes.campo) ? detalhes.campo : undefined;\r\n const acoesConfig:Record<string,string>={cnpj:'Informe o CNPJ como texto com 14 d\u00EDgitos.',uf:'Informe a sigla da UF em letras mai\u00FAsculas, por exemplo PE.',modelo:'Informe o n\u00FAmero 55 para NF-e ou 65 para NFC-e, sem aspas.',ambiente:'Informe o n\u00FAmero 2 para homologa\u00E7\u00E3o ou 1 para produ\u00E7\u00E3o, sem aspas.',timeoutMs:'Informe um n\u00FAmero inteiro de 1 a 120000 milissegundos.',limiteFila:'Informe um n\u00FAmero inteiro de 0 a 1000.',limiteBytes:'Informe um n\u00FAmero inteiro de 256 a 8388608 bytes.',runtimeDirectory:'Informe o diret\u00F3rio do runtime como texto n\u00E3o vazio.'};\r\n const acao=safeCode==='CONFIGURACAO_INVALIDA'&&campo&&Object.hasOwn(acoesConfig,campo)?acoesConfig[campo]:defaultAction;\r\n const causa = Object.freeze({codigo:safeCode,etapa,...(campo ? {campo} : {})});\r\n return Object.freeze({codigo:safeCode,etapa,...(campo ? {campo} : {}),mensagem,\r\n acao:desconhecido ? 'Consulte a situa\u00E7\u00E3o fiscal antes de repetir. O envio pode ter ocorrido; n\u00E3o retransmita automaticamente.' : acao,\r\n statusEnvio:desconhecido ? 'resultado_incerto' : 'nao_enviado',causa});\r\n}\r\n\r\nexport function diagnosticarErro(erro: unknown): DiagnosticoAcbr {\r\n return erro instanceof ErroAcbrNode ? erro.diagnostico : criarDiagnosticoErro('FALHA_LOCAL',true);\r\n}\r\n\r\nexport function adicionarDiagnosticoLimpeza(diagnostico: DiagnosticoAcbr): DiagnosticoAcbr {\r\n const acao=diagnostico.statusEnvio==='resultado_incerto'\r\n ? 'Encerre esta aplica\u00E7\u00E3o antes de iniciar outro motor e consulte a situa\u00E7\u00E3o fiscal antes de repetir qualquer envio.'\r\n : 'Encerre esta aplica\u00E7\u00E3o antes de iniciar outro motor. As pr\u00F3ximas opera\u00E7\u00F5es deste emissor foram bloqueadas.';\r\n const limpeza=Object.freeze({codigo:'ENCERRAMENTO_MOTOR_NAO_CONFIRMADO' as const,etapa:'limpeza' as const,mensagem:'N\u00E3o foi poss\u00EDvel confirmar o encerramento do motor fiscal.',acao});\r\n return Object.freeze({...diagnostico,acao,limpeza});\r\n}\r\n\r\n/** Status refere-se \u00E0 opera\u00E7\u00E3o atual; uma etapa local n\u00E3o prova aus\u00EAncia de envios anteriores. */\r\nexport function diagnosticarResultado(resultado: ResultadoFiscal, comando: Comando): DiagnosticoAcbr {\r\n const etapa = etapaDaOperacao(comando);\r\n if(!resultado||typeof resultado!=='object')return criarDiagnosticoErro('FALHA_LOCAL',true,{etapa});\r\n if(resultado.envioIniciado!==undefined&&typeof resultado.envioIniciado!=='boolean')return criarDiagnosticoErro('RESPOSTA_INVALIDA',true,{etapa});\r\n let statusEnvio: StatusEnvio = 'resultado_incerto', codigo = 'RESULTADO_INCERTO';\r\n let mensagem = 'A situa\u00E7\u00E3o fiscal ainda n\u00E3o foi confirmada.';\r\n let acao = 'Consulte a situa\u00E7\u00E3o fiscal antes de repetir. N\u00E3o retransmita automaticamente.';\r\n const local=(comando==='gerarXml'&&resultado.estado==='XML_GERADO')||(comando==='validar'&&resultado.estado==='VALIDADO')||(comando==='assinar'&&resultado.estado==='ASSINADO');\r\n const semEvento=resultado.envioIniciado===false||resultado.envioIniciado===undefined;\r\n const protocolo=typeof resultado.protocolo==='string'&&/^\\d{15}$/.test(resultado.protocolo);\r\n const chave=typeof resultado.chave==='string'&&/^\\d{44}$/.test(resultado.chave);\r\n const autorizacao=(comando==='transmitir'||comando==='consultar')&&resultado.estado==='AUTORIZADO'&&[100,150].includes(resultado.cStat!)&&protocolo&&chave&&(comando==='consultar'||resultado.envioIniciado!==false);\r\n const evento=(comando==='cancelar'&&resultado.estado==='CANCELADO'&&[135,136].includes(resultado.cStat!)&&chave)||(comando==='cartaCorrecao'&&resultado.estado==='EVENTO_REGISTRADO'&&resultado.cStat===135&&chave)||(comando==='inutilizar'&&resultado.estado==='INUTILIZADO'&&resultado.cStat===102);\r\n if (local && resultado.sucesso===true && semEvento) {\r\n statusEnvio='nao_enviado';codigo='ETAPA_LOCAL_CONCLUIDA';mensagem='A etapa local foi conclu\u00EDda; esta opera\u00E7\u00E3o n\u00E3o transmitiu a nota.';acao='Confira o resultado antes de seguir para a pr\u00F3xima etapa.';\r\n } else if (resultado.sucesso===true && (autorizacao||evento&&protocolo&&resultado.envioIniciado!==false)) {\r\n statusEnvio='autorizado';codigo='OPERACAO_CONFIRMADA';\r\n mensagem=({AUTORIZADO:'A nota foi autorizada.',CANCELADO:'O cancelamento foi confirmado.',EVENTO_REGISTRADO:'O evento foi registrado.',INUTILIZADO:'A faixa foi inutilizada.'} as Record<string,string>)[resultado.estado];\r\n acao='Guarde o resultado fiscal. N\u00E3o repita esta opera\u00E7\u00E3o.';\r\n } else if (resultado.sucesso===false && (comando==='consultar'||resultado.envioIniciado!==false) && ['transmitir','consultar','cancelar','cartaCorrecao','inutilizar'].includes(comando) && Number.isInteger(resultado.cStat) && Number(resultado.cStat)>0 && Number(resultado.cStat)<=9999 && (resultado.estado==='DENEGADO'&&[110,301,302].includes(resultado.cStat!)||resultado.estado==='REJEITADO'&&![100,150,110,301,302,101,151,155,103,104,105,108,109,204,539,573,135,136,102,217].includes(resultado.cStat!))) {\r\n statusEnvio='rejeitado';codigo=resultado.estado==='DENEGADO'?'NOTA_DENEGADA':'OPERACAO_REJEITADA';\r\n mensagem=resultado.estado==='DENEGADO'?'A nota foi denegada.':'A opera\u00E7\u00E3o foi rejeitada.';\r\n acao=resultado.estado==='DENEGADO'?'Consulte a situa\u00E7\u00E3o fiscal e a orienta\u00E7\u00E3o respons\u00E1vel antes de usar a numera\u00E7\u00E3o.':'Confira o cStat e revise os dados antes de decidir uma nova tentativa.';\r\n } else if (resultado.estado==='ERRO' && resultado.envioIniciado===false) {\r\n if(typeof resultado.codigo==='string'&&Object.hasOwn(CATALOGO,resultado.codigo))return criarDiagnosticoErro(resultado.codigo,false,{etapa});\r\n statusEnvio='nao_enviado';codigo='FALHA_ANTES_ENVIO';mensagem='O motor informou falha antes de iniciar o envio desta opera\u00E7\u00E3o.';acao='Revise a configura\u00E7\u00E3o e os dados antes de continuar.';\r\n }\r\n const cStat=Number.isInteger(resultado.cStat)&&Number(resultado.cStat)>0&&Number(resultado.cStat)<=9999 ? resultado.cStat : undefined;\r\n return Object.freeze({codigo,etapa,mensagem,acao,statusEnvio,...(cStat!==undefined?{cStat}:{})});\r\n}\r\n", "export const PROTOCOL_VERSION = 1 as const;\r\nexport type Modelo = 55 | 65;\r\nexport type Ambiente = 1 | 2;\r\nexport type Comando = 'gerarXml' | 'validar' | 'assinar' | 'transmitir' | 'consultar' | 'cancelar' | 'cartaCorrecao' | 'inutilizar';\r\nexport interface Contrato { sourceRevision: number; contractHash: string }\r\nexport interface CertificadoA1 { pfx?: Uint8Array; arquivo?: string; senha: string }\r\nexport interface ConfiguracaoEmissor { cnpj: string; uf: string; modelo: Modelo; ambiente: Ambiente; certificado?: CertificadoA1; csc?: { id: string; valor: string } }\r\nexport interface ConfiguracaoMotor extends Omit<ConfiguracaoEmissor, 'certificado'> { certificado?: { pfxBase64: string; senha: string } }\r\nexport interface RequisicaoMotor extends Contrato {\r\n versao: 1; id: string; comando: Comando; config: ConfiguracaoMotor;\r\n documento?: object; xmlBase64?: string; chave?: string; recibo?: string;\r\n protocolo?: string; justificativa?: string; correcao?: string; sequenciaEvento?: number;\r\n inutilizacao?: { ano: number; serie: number; numeroInicial: number; numeroFinal: number };\r\n}\r\nexport type Estado = 'DENEGADO' | 'XML_GERADO' | 'VALIDADO' | 'ASSINADO' | 'AUTORIZADO' | 'REJEITADO' | 'PENDENTE' | 'INDETERMINADO' | 'CONSULTADO' | 'CANCELADO' | 'EVENTO_REGISTRADO' | 'INUTILIZADO' | 'ERRO';\r\nexport interface ResultadoFiscal extends Contrato {\r\n versao: 1; id: string; sucesso: boolean; estado: Estado; codigo?: string;\r\n cStat?: number; xMotivo?: string; chave?: string; protocolo?: string; recibo?: string;\r\n xmlBase64?: string; envioIniciado?: boolean;\r\n /** Resumo seguro para interfaces e logs; n\u00E3o cont\u00E9m XML, identidade fiscal ou xMotivo bruto. */\r\n diagnostico?: DiagnosticoAcbr;\r\n}\r\nexport interface RuntimeManifest extends Contrato {\r\n formatVersion: 1; platform: string; arch: string; executable: string; files: Record<string, string>;\r\n}\r\nexport interface OpcoesOperacao { signal?: AbortSignal }\r\nexport interface Consulta { chave: string; recibo?: string }\r\nexport interface Cancelamento { chave: string; protocolo: string; justificativa: string }\r\nexport interface CartaCorrecao { chave: string; correcao: string; sequenciaEvento?: number }\r\nexport interface Inutilizacao { ano: number; serie: number; numeroInicial: number; numeroFinal: number; justificativa: string }\r\nexport type StatusEnvio = 'nao_enviado' | 'rejeitado' | 'autorizado' | 'resultado_incerto';\r\nexport type EtapaAcbr = 'configuracao' | 'documento' | 'runtime' | 'geracao' | 'validacao' | 'assinatura' | 'transmissao' | 'consulta' | 'cancelamento' | 'carta_correcao' | 'inutilizacao' | 'operacao' | 'limpeza';\r\nexport interface DiagnosticoAcbr {\r\n readonly codigo: string; readonly etapa: EtapaAcbr; readonly campo?: string;\r\n readonly mensagem: string; readonly acao: string; readonly statusEnvio: StatusEnvio;\r\n readonly cStat?: number;\r\n readonly causa?: Readonly<{ codigo: string; etapa: EtapaAcbr; campo?: string }>;\r\n readonly limpeza?: Readonly<{codigo:'ENCERRAMENTO_MOTOR_NAO_CONFIRMADO';etapa:'limpeza';mensagem:string;acao:string}>;\r\n}\r\nexport interface DetalhesErroAcbr { etapa?: EtapaAcbr; campo?: string }\r\nexport class ErroAcbrNode extends Error {\r\n readonly name = 'ErroAcbrNode';\r\n #diagnostico: DiagnosticoAcbr;\r\n get diagnostico(): DiagnosticoAcbr { return this.#diagnostico; }\r\n constructor(readonly codigo: string, mensagem: string, readonly resultadoDesconhecido = false, readonly xmlBase64?: string, detalhes?: DetalhesErroAcbr) {\r\n super(mensagem);\r\n this.#diagnostico = criarDiagnosticoErro(codigo, resultadoDesconhecido, detalhes);\r\n // Recupera\u00E7\u00E3o permanece dispon\u00EDvel por acesso expl\u00EDcito, sem vazar XML em console/JSON.\r\n Object.defineProperty(this, 'xmlBase64', { value: xmlBase64, enumerable: false });\r\n Object.defineProperty(this, 'cause', { value: this.diagnostico.causa, enumerable: false });\r\n }\r\n /** Acrescenta apenas o aviso est\u00E1tico de limpeza, preservando o erro da opera\u00E7\u00E3o. */\r\n anotarFalhaLimpeza(): void { this.#diagnostico = adicionarDiagnosticoLimpeza(this.#diagnostico); }\r\n toJSON(): DiagnosticoAcbr { return this.diagnostico; }\r\n}\r\nimport { criarDiagnosticoErro, adicionarDiagnosticoLimpeza } from './diagnostics.js';\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["path", "require"]
7
7
  }