{"_id":"@azumamagus/get-cnpj","name":"@azumamagus/get-cnpj","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@azumamagus/get-cnpj","version":"1.0.0","description":"Biblioteca TypeScript para consulta de CNPJ em APIs públicas brasileiras, com fallback e rate limiting.","keywords":["cnpj","brasil","typescript","receita-ws","brasil-api","cnpja","cnpj-ws"],"homepage":"https://github.com/azumamagus/GetCNPJ-js#readme","bugs":{"url":"https://github.com/azumamagus/GetCNPJ-js/issues"},"repository":{"type":"git","url":"git+https://github.com/azumamagus/GetCNPJ-js.git"},"license":"MIT","author":{"name":"Bruno da Cunha Felipe"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"sideEffects":false,"engines":{"node":">=18"},"scripts":{"build":"tsup","dev":"tsup --watch","lint":"eslint .","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","check":"eslint . && tsc --noEmit && vitest run && tsup","prepublishOnly":"eslint . && tsc --noEmit && vitest run && tsup"},"devDependencies":{"@eslint/js":"^9.33.0","eslint":"^9.33.0","tsup":"^8.5.0","typescript":"^5.9.2","typescript-eslint":"^8.40.0","vitest":"^3.2.4"},"publishConfig":{"access":"public"},"packageManager":"pnpm@11.19.0","_id":"@azumamagus/get-cnpj@1.0.0","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-CZrZ40w8rIth7lUHNd7+b19vI5sfDUM6r3JW5lFZ07ya8lHMOL8Ev2B6cYJMYbbnZmAwY6/0JijzzIwxvNISQQ==","shasum":"04be77839e32fae037267382303ff78fc2d50de9","tarball":"https://registry.npmjs.org/@azumamagus/get-cnpj/-/get-cnpj-1.0.0.tgz","fileCount":10,"unpackedSize":249383,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDjiBrws/QBzz5x1ezcv5iKlxnEW6tDNQPBYwSS9bXi/gIhAMXeCFM8i6jjxF8SQev75yDAs6ms6VhzEmxm/gbV8Ine"}]},"_npmUser":{"name":"azumamagus","email":"bruno.dc.felipe@gmail.com"},"directories":{},"maintainers":[{"name":"azumamagus","email":"bruno.dc.felipe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/get-cnpj_1.0.0_1787099756018_0.01484563703849795"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-19T00:35:55.870Z","1.0.0":"2026-08-19T00:35:56.198Z","modified":"2026-08-19T00:35:56.416Z"},"maintainers":[{"name":"azumamagus","email":"bruno.dc.felipe@gmail.com"}],"description":"Biblioteca TypeScript para consulta de CNPJ em APIs públicas brasileiras, com fallback e rate limiting.","homepage":"https://github.com/azumamagus/GetCNPJ-js#readme","keywords":["cnpj","brasil","typescript","receita-ws","brasil-api","cnpja","cnpj-ws"],"repository":{"type":"git","url":"git+https://github.com/azumamagus/GetCNPJ-js.git"},"author":{"name":"Bruno da Cunha Felipe"},"bugs":{"url":"https://github.com/azumamagus/GetCNPJ-js/issues"},"license":"MIT","readme":"<p align=\"center\">\n  <img src=\"logo.png\" alt=\"GetCNPJ\" width=\"280\">\n</p>\n\n# GetCNPJ para JavaScript e TypeScript\n\nCliente moderno e fortemente tipado para consultar dados públicos de empresas brasileiras. O pacote normaliza quatro APIs diferentes em um único contrato, aplica limite de requisições por provedor e tenta automaticamente a próxima fonte quando uma consulta falha.\n\n> Este projeto não é afiliado à Receita Federal. Consulte os termos de uso de cada provedor e a legislação aplicável ao tratar dados pessoais.\n\n## Recursos\n\n- CNPJ.WS, ReceitaWS, BrasilAPI e CNPJA.\n- Fallback automático na ordem acima.\n- Consulta por provedor específico.\n- Validação dos dígitos verificadores antes da chamada HTTP.\n- Resposta normalizada e integralmente tipada.\n- Rate limiting por janela deslizante, separado por provedor.\n- Timeout com cancelamento via `AbortController`.\n- `fetch`, provedores e rate limiter substituíveis para testes ou extensões.\n- Zero dependências em produção.\n- ESM e CommonJS, com declarações TypeScript e source maps.\n- Node.js 18 ou superior.\n\n## Instalação\n\nCom npm:\n\n```bash\nnpm install @azumamagus/get-cnpj\n```\n\nCom Yarn:\n\n```bash\nyarn add @azumamagus/get-cnpj\n```\n\n## Uso básico\n\n```ts\nimport { CnpjClient } from '@azumamagus/get-cnpj';\n\nconst client = new CnpjClient();\nconst result = await client.get('03.312.791/0001-83');\n\nif (result.success) {\n  console.log(result.data.razaoSocial);\n  console.log(result.data.endereco?.enderecoCompleto);\n  console.log(result.data.provedor);\n} else {\n  console.error(result.errorMessage);\n  console.table(result.errors);\n}\n```\n\n`CnpjResult` é uma união discriminada. Ao testar `result.success`, o TypeScript sabe automaticamente se `data` ou `errors` estão disponíveis.\n\n## Provedor específico\n\n```ts\nimport { CnpjClient, ProviderType } from '@azumamagus/get-cnpj';\n\nconst client = new CnpjClient();\nconst result = await client.getFromProvider(\n  '03312791000183',\n  ProviderType.BrasilApi,\n);\n```\n\nValores disponíveis: `ProviderType.CnpjWs`, `ProviderType.ReceitaWs`, `ProviderType.BrasilApi` e `ProviderType.Cnpja`.\n\n## Configuração\n\n```ts\nconst client = new CnpjClient({\n  timeout: 15_000, // milissegundos\n  maxRequestsPerMinute: 5,\n  enableCnpjWs: true,\n  enableReceitaWs: true,\n  enableBrasilApi: true,\n  enableCnpja: false,\n});\n```\n\nTodos os provedores vêm habilitados. Pelo menos um deles deve permanecer ativo. O limite padrão é de três chamadas por minuto para cada provedor e o timeout padrão é de 30 segundos.\n\n## Estrutura da resposta\n\nUma consulta bem-sucedida disponibiliza:\n\n```ts\ninterface CnpjData {\n  cnpj: string | null;\n  razaoSocial: string | null;\n  nomeFantasia: string | null;\n  dataAbertura: Date | null;\n  situacao: string | null;\n  dataSituacao: Date | null;\n  tipo: string | null;\n  porte: string | null;\n  naturezaJuridica: string | null;\n  capitalSocial: number | null;\n  endereco: Endereco | null;\n  atividadePrincipal: AtividadeEconomica | null;\n  atividadesSecundarias: AtividadeEconomica[];\n  quadroSocietario: Socio[];\n  telefones: string[];\n  email: string | null;\n  inscricoesEstaduais: InscricaoEstadual[];\n  simples: SimplesNacional | null;\n  ultimaAtualizacao: Date | null;\n  provedor: string | null;\n}\n```\n\nCampos ausentes no provedor são representados por `null` ou listas vazias. Datas válidas são convertidas para `Date`.\n\n## Tratamento de erros\n\nUm CNPJ inválido lança `InvalidCnpjError` imediatamente e não consome a cota dos provedores:\n\n```ts\nimport { CnpjClient, InvalidCnpjError } from '@azumamagus/get-cnpj';\n\ntry {\n  await new CnpjClient().get('11.111.111/1111-11');\n} catch (error) {\n  if (error instanceof InvalidCnpjError) {\n    console.error(error.cnpj);\n  }\n}\n```\n\nFalhas externas não lançam ao usar o cliente: elas são registradas em `result.errors` e acionam o fallback. Se todas as tentativas falharem, `success` será `false` e `failedProviders` mostrará as fontes consultadas.\n\n## Cliente HTTP customizado\n\nO contrato `HttpClient` é compatível com `fetch`. Isso permite instrumentação, mocks ou adaptação ao ambiente da aplicação:\n\n```ts\nconst client = new CnpjClient({\n  httpClient: async (input, init) => {\n    console.log('Consultando', input);\n    return fetch(input, init);\n  },\n});\n```\n\n## Provedores customizados\n\nImplemente `CnpjProvider` e substitua a lista padrão:\n\n```ts\nimport { CnpjClient, type CnpjProvider } from '@azumamagus/get-cnpj';\n\nconst meuProvider: CnpjProvider = {\n  name: 'Interno',\n  priority: 1,\n  async isAvailable() {\n    return true;\n  },\n  async getCnpjData(cnpj) {\n    // Retorne CnpjData ou null.\n    return null;\n  },\n};\n\nconst client = new CnpjClient({ providers: [meuProvider] });\n```\n\nAs classes dos quatro provedores e `CnpjProviderBase` também são exportadas para cenários avançados.\n\n## Desenvolvimento\n\n```bash\nnpm install\nnpm run check\n```\n\nO comando executa lint, verificação estrita de tipos, testes e build. Antes de publicar, confirme os arquivos do tarball:\n\n```bash\nnpm pack --dry-run\nnpm publish --access public\n```\n\n## Licença\n\n[MIT](LICENSE) © 2026 Bruno da Cunha Felipe.\n","readmeFilename":"README.md","_rev":"1-159daca4bc946023bd28fff2c1cbbbb7"}