Skip to main content

O que é o @abacatepay/eslint-plugin?

O @abacatepay/eslint-plugin é um plugin de segurança para ESLint que evita o vazamento acidental de API keys da AbacatePay diretamente no código-fonte. Ele detecta chaves secretas hardcoded em qualquer contexto (strings, headers, JSX, templates, configs, etc.) e incentiva o uso correto de variáveis de ambiente, antes que o problema chegue ao repositório ou à produção.

Por que isso importa?

  • Vazamento de API keys é um dos erros mais comuns em projetos
  • Linters pegam o problema antes do commit
  • Segurança como padrão, sem depender de code review

Instalação

Use o package manager da sua preferência:
bun add -d @abacatepay/eslint-plugin
# ou
pnpm add -d @abacatepay/eslint-plugin
# ou
npm install -d @abacatepay/eslint-plugin

Configuração

ESLint v9+ (Flat Config) O plugin foi projetado exclusivamente para ESLint v9+, utilizando o novo formato de flat config.
import abacatepay from '@abacatepay/eslint-plugin';

export default [
    {
        plugins: {
            abacatepay,
        },
        rules: {
            'abacatepay/no-secret-key': 'error',
        },
    },
];

Regras Disponíveis

abacatepay/no-secret-key Impede o uso de chaves secretas da AbacatePay diretamente no código, independentemente do contexto:
  • Strings literais
  • Headers HTTP
  • JSX / props
  • Templates
  • Configurações de clientes

Comportamento da regra

A regra não aplica autofix destrutivo. Sempre que possível, ela oferece sugestões seguras para substituição.

Sugestões Automáticas

Quando detecta uma chave hardcoded, a regra sugere automaticamente o uso de variáveis de ambiente:
- "abc_prod_xxxxxxxxxxxxxxxxxxxxxxx"
+ process.env.ABACATEPAY_API_KEY

Exemplos de Uso Incorreto

import { AbacatePay } from '@abacatepay/sdk';

const abacate = AbacatePay({
    secret: 'abc_dev_xxxxxxxxxxxxxxxxxxxxxxx',
});
import { REST } from '@abacatepay/rest';

const client = new REST({
    secret: 'abc_prod_xxxxxxxxxxxxxxxxxxxxxxx',
});
<Component secret="abc_dev_xxxxxxxxxxxxxxxxxxxxxxx" />

Segurança por Design

Preventivo

O erro é detectado antes do commit ou deploy.

Baixo ruído

Apenas casos reais de risco são reportados.

Recursos Relacionados

Open source, de verdade

O @abacatepay/eslint-plugin é open source e mantido pela equipe AbacatePay. Contribuições e sugestões são bem-vindas.