{"_id":"@americofreitasjr/statement-parser","_rev":"7-ba84dfd947ae9988130474d730cd6edf","name":"@americofreitasjr/statement-parser","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.0":{"name":"@americofreitasjr/statement-parser","version":"0.1.0","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","_id":"@americofreitasjr/statement-parser@0.1.0","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"homepage":"https://github.com/americofreitasjr/statement-parser#readme","bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"dist":{"shasum":"0e882d8f3c41fb70b3863a10f7ba1cc6a53a4ff9","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.0.tgz","fileCount":45,"integrity":"sha512-5G3UF4Oavn/9FPSG7ORgScNW9tAhtlZ7K3uBKhgKMWAs48swkXgMh3epdaw+LFstxnedLKPN9TO3Iolp4ab+QQ==","signatures":[{"sig":"MEUCIQDYXrBwUbJg3flJKyPcDD56igaSS2x0fgotSk/m92RtTAIgPIUvn2CRFprs6P+UZaT8aXaGVh4qFJMy3pdjhh0mo6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57772},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3ef0057f0adf5219b07da7164843b654011d972f","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"repository":{"url":"git+https://github.com/americofreitasjr/statement-parser.git","type":"git"},"_npmVersion":"11.4.1","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","directories":{},"_nodeVersion":"22.16.0","dependencies":{"pdf-parse":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/statement-parser_0.1.0_1763169503305_0.9055118047997908","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@americofreitasjr/statement-parser","version":"0.1.1","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","_id":"@americofreitasjr/statement-parser@0.1.1","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"homepage":"https://github.com/americofreitasjr/statement-parser#readme","bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"dist":{"shasum":"e5d482ace1cf0a9473ada71732ef15cb92940cb0","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.1.tgz","fileCount":45,"integrity":"sha512-bIL5lPB/rI7oV8+8ifr5mIYu9P+yzmEJS2g3LXpjqGrIGmWqpgER7WRyHpy81vw7xPdoQ76lk3UBfY2eqNsSwQ==","signatures":[{"sig":"MEYCIQDKepGVYbmQjToQNfGLmRQwIQWXDgit/TKY8uSDRZKdcAIhAId98DenTAmBL+vRkdlZu2VE6gMw3d2Oq4uNa5Ti++aT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58708},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"14325b2afa2876fa717de532bd13dcbff70b1725","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"repository":{"url":"git+https://github.com/americofreitasjr/statement-parser.git","type":"git"},"_npmVersion":"10.8.2","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pdf-parse":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/statement-parser_0.1.1_1763170360949_0.8914688663052304","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@americofreitasjr/statement-parser","version":"0.1.3","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","_id":"@americofreitasjr/statement-parser@0.1.3","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"homepage":"https://github.com/americofreitasjr/statement-parser#readme","bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"dist":{"shasum":"5558e41a5eda8aa777ef975f99f66d914169a0c9","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.3.tgz","fileCount":45,"integrity":"sha512-09gT7E2XrfhzJbCnFfe2rhROywuE26XxiIeBJybXvGiDI/x7y4gdKF9rnjQ7yPzi2RZULHOI431+8E0/wlpmPw==","signatures":[{"sig":"MEUCICDKzF2HIYfNfZ1y+ZAJzsM1sXHrNfwKxJy5lmtW4T3NAiEAgJ0FF867sJy6ss+WaIAV/72o9AuB846LpTG8Blauxpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58767},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"18b3318a2c057db51563f0b2f996d5e5e5fb3398","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"repository":{"url":"git+https://github.com/americofreitasjr/statement-parser.git","type":"git"},"_npmVersion":"10.8.2","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pdf-parse":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/statement-parser_0.1.3_1763170625004_0.7285586309976713","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@americofreitasjr/statement-parser","version":"0.1.8","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","_id":"@americofreitasjr/statement-parser@0.1.8","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"homepage":"https://github.com/americofreitasjr/statement-parser#readme","bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"dist":{"shasum":"56cd982423d1ea68d89281f3de70344283439643","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.8.tgz","fileCount":57,"integrity":"sha512-+x8TpAvuk1lhHWl6JLVY/AZFTtrtncPpo4loak3y1Xq7xvN3OzwGzsAmRIhEvvdvD0I3wzDzHdOLY18pxf46tA==","signatures":[{"sig":"MEUCIQCF6z69GQFZgMNtZLtToGPt0bU2x37z26N9vtkRXY3eDgIgGjgld3Qd3bT3r/TzjK7L/9n3qZQQeomyDwGHAa6oess=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110538},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"14d1276055fcc6562d5caffdc2315d0094f2d6c2","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"repository":{"url":"git+https://github.com/americofreitasjr/statement-parser.git","type":"git"},"_npmVersion":"10.8.2","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pdf-parse":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/statement-parser_0.1.8_1763941128649_0.9829936899399061","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@americofreitasjr/statement-parser","version":"0.1.9","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","_id":"@americofreitasjr/statement-parser@0.1.9","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"homepage":"https://github.com/americofreitasjr/statement-parser#readme","bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"dist":{"shasum":"2aca1268c03616d3ccfc9456e71eef6278fd64a7","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.9.tgz","fileCount":57,"integrity":"sha512-uY2+n1MJukrw1mp+8ZJCh/Xeo4TOxIFEkP6enMseboBD6GX9vHgePjOGxaHt/ulUvgV02ngjyHDH/5FETF3G9A==","signatures":[{"sig":"MEUCIQDODeWzX+31UqCf+u1c6KA16TnMlhhkB/XVdGvcMIlJhQIgcIvruUF1ncw0dHc3pZWJ5pGn0gyM3BCGZqHYT4l8q88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112418},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"88a00249fcd0ad4c3a7ff2d231987c19211f1c31","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"repository":{"url":"git+https://github.com/americofreitasjr/statement-parser.git","type":"git"},"_npmVersion":"10.8.2","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pdf-parse":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/statement-parser_0.1.9_1763943385509_0.47765046292688185","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@americofreitasjr/statement-parser","version":"0.1.10","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","_id":"@americofreitasjr/statement-parser@0.1.10","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"homepage":"https://github.com/americofreitasjr/statement-parser#readme","bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"dist":{"shasum":"ed20ee5ac7a882be588dd092d903089598925d2f","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.10.tgz","fileCount":68,"integrity":"sha512-vULKycFBskgvKftJHOlMSGxhAJQo0yaLkbeU9Q47mXuxZ/tzDIgs1VmKdVYsrYi87vktS2vO9dxdsOPROjsa6Q==","signatures":[{"sig":"MEQCIEG/n2k/i+1mGfLdBTo/erGsWKG8LzhqyRNDHjKFAUnQAiAyaT1yUQcSN+yrXexu2ar6vQVoqrP3qwuiXjB1Qt0S3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156495},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"05ae322d1f1444bdd3e07f45a4b83e46a2c789fd","scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"repository":{"url":"git+https://github.com/americofreitasjr/statement-parser.git","type":"git"},"_npmVersion":"10.8.2","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pdf-parse":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/statement-parser_0.1.10_1763989442394_0.4342434354032374","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@americofreitasjr/statement-parser","version":"0.1.11","description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","format":"prettier --write \"src/**/*.ts\"","prepublishOnly":"npm run build"},"keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/americofreitasjr/statement-parser.git"},"bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"homepage":"https://github.com/americofreitasjr/statement-parser#readme","devDependencies":{"@types/jest":"^29.5.11","@types/node":"^20.10.6","@typescript-eslint/eslint-plugin":"^6.17.0","@typescript-eslint/parser":"^6.17.0","eslint":"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","jest":"^29.7.0","prettier":"^3.1.1","ts-jest":"^29.1.1","typescript":"^5.3.3"},"dependencies":{"pdf-parse":"^1.1.1"},"engines":{"node":">=18.0.0"},"_id":"@americofreitasjr/statement-parser@0.1.11","gitHead":"610dba5191ff3669c19fee6ca92cf8945597edda","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-KHV3a447Akkv/D7M7fyPU+p706GhXdpKVATM2C7emx4hp6+zCe5ek8dQn7p4aEjxgQp1gk0HcNdDh1KJz9r7mA==","shasum":"6427a99220f842c7ecf61a91dac814c92af30670","tarball":"https://registry.npmjs.org/@americofreitasjr/statement-parser/-/statement-parser-0.1.11.tgz","fileCount":77,"unpackedSize":215031,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGA6oEB3iyH3eebKXFVQoT95KbQpbC/Ptb6SIfW6llvuAiEAvZjrMGzYLF89idegkL6/GqHEa03vpNpc2GNzyYr56Vg="}]},"_npmUser":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"directories":{},"maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/statement-parser_0.1.11_1763995336778_0.30104406596057376"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-15T01:18:23.212Z","modified":"2025-11-24T14:42:17.126Z","0.1.0":"2025-11-15T01:18:23.506Z","0.1.1":"2025-11-15T01:32:41.174Z","0.1.3":"2025-11-15T01:37:05.204Z","0.1.8":"2025-11-23T23:38:48.859Z","0.1.9":"2025-11-24T00:16:25.719Z","0.1.10":"2025-11-24T13:04:02.576Z","0.1.11":"2025-11-24T14:42:16.953Z"},"bugs":{"url":"https://github.com/americofreitasjr/statement-parser/issues"},"author":{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"},"license":"MIT","homepage":"https://github.com/americofreitasjr/statement-parser#readme","keywords":["statement","parser","banking","ofx","pdf","extrato","bancario","brasil","typescript"],"repository":{"type":"git","url":"git+https://github.com/americofreitasjr/statement-parser.git"},"description":"Biblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados","maintainers":[{"name":"americofreitasjr","email":"americofreitasjr@gmail.com"}],"readme":"# Statement Parser\nBiblioteca Node.js/TypeScript para transformar extratos bancários brasileiros em dados estruturados e confiáveis, prontos para ERPs, CRMs, ferramentas de conciliação e dashboards.\n\n## Manifesto\n\n### Visão\nDar aos devs brasileiros uma base sólida para interpretar qualquer extrato nacional e integrá-lo a produtos digitais sem gambiarras nem planilhas manuais.\n\n### Propósito\nRemover o trabalho repetitivo de “parsear extrato na unha”, oferecendo uma API única que lê PDF e OFX, normaliza e devolve transações consistentes.\n\n### Por que existimos\nTodo time que precisa ler extratos enfrenta o mesmo inferno: formatos proprietários, colunas que mudam por agência, datas localizadas, zero libs mantidas em Node/TypeScript. Statement Parser nasce para extinguir esse ciclo de scripts descartáveis.\n\n### Problema que resolvemos\n- PDFs proprietários com layouts imprevisíveis.\n- Falta de padrão entre bancos e inexistência de uma lib que trate PDF + OFX em TypeScript.\n- Normalização manual de datas, valores, saldos e tipos de operação a cada projeto.\n\n### Princípios\n- **Developer-first**: API clara, tipada e com exemplos reais.\n- **Simplicidade**: um entrypoint para enviar arquivo + metadados e receber transações normalizadas.\n- **Extensibilidade**: adaptadores por banco/format conectados via contratos explícitos.\n- **Modularidade**: OFX, PDF e normalização evoluem em módulos independentes.\n- **Precisão testável**: fixtures reais e suites dedicadas por banco.\n\n### Estado atual do mercado\nHoje só existem scripts isolados dentro de squads, abandonados a cada reformulação de extrato. Não há pacote mantido, testado e aberto em TypeScript que resolva o problema ponta a ponta. Statement Parser alinha esforços e cria padrões.\n\n### Chamado à comunidade\nPrecisamos de PRs, issues, fixtures, exemplos, novos bancos e novos formatos. Contribua com adaptadores, documentação e cenários reais para manter o ecossistema vivo para todo dev que já precisou “parsear extrato” em produção.\n\n## Get Started\n\n### Instalação\n\n```bash\nnpm install @americofreitasjr/statement-parser\n# ou\nyarn add @americofreitasjr/statement-parser\n```\n\n### Exemplo\n\n```typescript\nimport {\n  StatementParser,\n  StatementFormat,\n  BankCode,\n  AccountProduct,\n} from '@americofreitasjr/statement-parser';\nimport * as fs from 'node:fs';\n\nasync function main() {\n  const buffer = fs.readFileSync('./input/carrefour-202409.pdf');\n  const parser = new StatementParser();\n\n  const result = await parser.parse(buffer, {\n    format: StatementFormat.PDF,\n    bankCode: BankCode.CARREFOUR,\n    productType: AccountProduct.CREDIT_CARD,\n    fileName: 'carrefour-202409.pdf',\n  });\n\n  console.log(result.account);\n  console.log(result.transactions[0]);\n}\n\nmain();\n/*\n{\n  bankCode: '368',\n  bankName: 'Carrefour',\n  productType: 'credit_card'\n}\n{\n  date: 2024-09-01T00:00:00.000Z,\n  description: 'CRF 2 RJB RIO BARRA - 9/20',\n  amount: -190,\n  type: 'debit',\n  currency: 'BRL',\n  metadata: {\n    cardLastFour: '6745',\n    invoiceDueDate: 2024-10-11T00:00:00.000Z,\n    originalPurchaseDate: 2024-01-27T00:00:00.000Z,\n    currentInstallment: 9,\n    totalInstallments: 20\n  }\n}\n*/\n```\n\n> 💡 `format`, `bankCode`, `productType` e `fileName` ajudam o parser a selecionar o adapter correto e a inferir datas/parcelas com mais precisão. Para outros produtos/bancos basta informar o enum correspondente.\n> ⚠️ `StatementParser.parse` sempre exige `format`, `bankCode` e `productType` preenchidos; o parser lança `ParseError` se qualquer um estiver ausente ou como `UNKNOWN`.\n\n### Usando buffers de outras fontes (ex.: S3)\n\n`StatementParser.parse` aceita tanto `Buffer` quanto `string`. Se o PDF estiver no S3 (ou qualquer storage), basta encaminhar o `Buffer` que você já possui:\n\n```typescript\nimport {\n  StatementParser,\n  StatementFormat,\n  BankCode,\n  AccountProduct,\n} from '@americofreitasjr/statement-parser';\nimport { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';\n\nconst parser = new StatementParser();\nconst s3 = new S3Client({ region: 'sa-east-1' });\n\nconst { Body } = await s3.send(\n  new GetObjectCommand({ Bucket: 'extratos', Key: 'carrefour-202409.pdf' })\n);\nconst byteArray = await Body?.transformToByteArray();\n\nif (!byteArray) throw new Error('PDF não encontrado');\n\nconst result = await parser.parse(Buffer.from(byteArray), {\n  format: StatementFormat.PDF,\n  bankCode: BankCode.CARREFOUR,\n  productType: AccountProduct.CREDIT_CARD,\n  fileName: 'carrefour-202409.pdf',\n});\n```\n\n### Suporte atual\n\n| Banco (`BankCode`) | Produto (`AccountProduct`) | PDF | OFX | CSV | Detalhes |\n| --- | --- | --- | --- | --- | --- |\n| `BankCode.CARREFOUR` | `AccountProduct.CREDIT_CARD` | ✅ |  |  | Driver lê “LANÇAMENTOS NO BRASIL”, normaliza parcelas para o dia 01, expõe `invoiceDueDate`, `originalPurchaseDate`, `currentInstallment`, `totalInstallments` e `cardLastFour`. |\n| `BankCode.SANTANDER` | `AccountProduct.CHECKING` | ✅ |  |  | Driver interpreta o bloco “Conta Corrente / Movimentação”, trata doc number + valor na mesma linha e normaliza PIX/REMUNERAÇÃO/aplicações para transações básicas. |\n| `BankCode.BRADESCO` | `AccountProduct.CHECKING` |  | ✅ |  | Fixtures anonimizadas em `fixtures/ofx/bradesco-conta-corrente.*`; OFXParser extrai `BANKID 0237`, branch, número da conta e normaliza transações. |\n| `BankCode.ITAU` | `AccountProduct.CHECKING` |  | ✅ |  | Fixtures em `fixtures/ofx/itau-conta-corrente.*`; cobertura de Pix e transferências com `BANKID 0341`. |\n| `BankCode.NUBANK` | `AccountProduct.CREDIT_CARD` |  | ✅ |  | Fixtures em `fixtures/ofx/nubank-cartao-credito.*`; parser usa `<FID>260</FID>` como fallback e normaliza compras/faturas. |\n| `BankCode.NUBANK` | `AccountProduct.CHECKING` |  | ✅ |  | Fixtures em `fixtures/ofx/nubank-conta-corrente.*`; extrai branch/account e saldos do OFX padrão. |\n\n- Novos bancos e produtos entram por meio de novos adapters (abra uma issue/PR com seus PDFs/OFX).\n- Mantenha seus arquivos reais em `input/` (gitignored) e gere fixtures + expected antes de enviar PRs.\n- OFX genérico: o parser aguenta outros bancos além dos listados (aproveitando `<BANKID>` ou `<FID>`), porém só os da tabela acima foram validados com fixtures oficiais.\n\n## Como contribuir\nAbra issues com amostras de extratos, descreva desafios específicos e envie PRs com parsers, fixtures e testes. Precisamos de ajuda para cobrir novos bancos, revisar normalizações e evoluir o roadmap de forma transparente—participe, proponha ideias e mantenha o Statement Parser pulsando.\n","readmeFilename":"README.md"}