
O score de crédito para pacotes npm. Analise a reputação do pacote, manutenção, segurança, confiança do publicador e saúde do ecossistema antes de instalar qualquer pacote.
O score de crédito para pacotes npm.
O revera ajuda você a decidir se vale a pena instalar um pacote antes de executar npm install. Ele analisa qualidade do pacote, manutenção, segurança, saúde do ecossistema e confiança do publicador — e agora propaga risco transitivamente por todo o seu grafo de dependências — e então produz um relatório de reputação bayesiano e explicável.
Assista ao revera verificando e explicando pacotes em tempo real.
Execute o revera instantaneamente sem instalação:
npx revera check react
Verificar um pacote como request (que foi descontinuado em 2020) alerta você imediatamente com motivos específicos:
$ revera why request
▲ revera EXPLAIN
──────────────────────────────────────────────────
Package: [email protected]
Overall: 38/100 Not Recommended
Score Breakdown
Maintenance 15/100 ███░░░░░░░░░░░░░░░░░
Release cadence, commit activity, issue responsiveness, maintainer count
Stability 90/100 ██████████████████░░
SemVer compliance, major version history, API volatility over time
Security 100/100 ████████████████████
Known CVEs, install scripts, repository transparency
Package Quality 40/100 ████████░░░░░░░░░░░░
README completeness, license, test coverage indicators, exports
Ecosystem 100/100 ████████████████████
Weekly download volume, GitHub stars, community forks
Documentation 90/100 ██████████████████░░
README length, code examples, API references, external docs presence
Developer Experience 40/100 ████████░░░░░░░░░░░░
TypeScript support, ESM compatibility, CLI tooling
Publisher Trust 100/100 ████████████████████
Known malicious releases, protestware history, supply-chain incidents
Why it scores well
+ Stable API (v1.0.0+)
+ Low API volatility
+ Zero known vulnerabilities
+ Permissive open-source license
+ Code examples in README
+ Structured API documentation
+ No known publisher trust incidents
Minor deductions
- Last release was 59 months ago
- Single maintainer (bus factor of 1)
- Missing native type definitions
- Legacy CommonJS only
- No native typings (bad TypeScript DX)
Warnings
! Last release: 59 months ago. No recent updates detected. This may be normal for mature, stable libraries.
! Package has been officially marked as deprecated by the maintainer.
Verdict
Request has low confidence. revera recommends looking for alternatives due to security, activity, or stability concerns.
Instale globalmente para acessar o executável de qualquer diretório:
npm install -g @aaravmaloo/revera
Analise um pacote e obtenha um relatório resumido de alto nível:
revera check lodash
Execute em modo offline usando arquivos em cache:
revera check express --offline
Obtenha um detalhamento aprofundado da pontuação, sinais positivos e deduções:
revera why node-ipc
Avalia pacotes antes da instalação e alerta quando a reputação cai abaixo do limite configurado:
revera add express
Você pode passar flags diretamente para o seu gerenciador de pacotes:
revera add typescript --save-dev
Audite todos os pacotes do projeto atual (inclui dependências transitivas) e calcule uma pontuação geral de saúde do projeto:
revera audit
Audite apenas dependências de produção:
revera audit --prod
Audite apenas dependências diretas, ignorando as transitivas:
revera audit --direct
Autentique-se no GitHub para aumentar os limites de taxa da API (60/hora anônimo vs 5.000/hora autenticado). Você pode escolher entre OAuth2 baseado em navegador ou inserir manualmente um Personal Access Token. Uma vez autorizado, o revera criptografa e armazena o token com segurança no chaveiro do seu sistema operacional (DPAPI no Windows, Keychain no macOS ou Secret Service no Linux):
revera login
Gerencie as configurações locais salvas em ~/.revera/config.json:
revera config
revera config set minScoreThreshold 75
revera config get minScoreThreshold
Verifique as configurações do ambiente, o status da API e as latências de conexão de rede:
revera doctor
Inspecione ou limpe o cache local de metadados:
revera cache
revera cache clear
Verifique se você está executando a versão mais recente do mecanismo do revera:
revera update
O revera v2 substituiu o antigo modelo de soma ponderada plana por um pipeline bayesiano em DAG de quatro estágios.
Todas as dependências do projeto são resolvidas em um grafo acíclico direcionado. Cada nó rastreia todo o seu conjunto de dependentes transitivos para que os estágios posteriores possam calcular raios de impacto precisos.
lodash ──► your-app
express ──► your-app
axios ──► some-lib ──► your-app ← transitive
Cada uma das 8 categorias de pontuação parte de um prior específico de arquétipo (framework, cli, types-only, utility) em vez de uma linha de base plana e sem informação. Sinais observados atualizam um posterior de distribuição Beta — ou seja, um timeout ou dados ausentes ampliam o intervalo de credibilidade em vez de assumir silenciosamente "limpo".
A pontuação final por pacote é um agregado ponderado por confiança dos posteriores das categorias (ponderação por variância inversa), produzindo tanto uma estimativa pontual quanto um intervalo de credibilidade de 95%.
Três overrides rígidos ignoram completamente a pontuação bayesiana e reprovam imediatamente um pacote:
Depois que as pontuações por pacote são calculadas, o risco é propagado de baixo para cima através do DAG (ordem topológica, folhas primeiro):
effectiveRisk de uma dependência exceder um limite, o risco do pai tem piso em 0.8 (marcado como contaminado).effectiveRisk × transitive_dependent_count.O relatório final de auditoria mescla pontuações intrínsecas, contaminação herdada, intervalos de credibilidade e raios de impacto em uma única saída classificada. A pontuação geral do workspace é uma média ponderada pelo raio de impacto.
O revera consulta três bancos de dados de vulnerabilidades independentes em paralelo em cada verificação. Os resultados são mesclados e deduplicados por alias de CVE/GHSA antes de serem usados na pontuação.
Se uma fonte expirar ou apresentar erro, as outras continuam de forma independente. O VulnResult expõe quais fontes responderam (sources) e quais falharam (failedSources) para que o pontuador bayesiano possa ampliar o intervalo de incerteza adequadamente em vez de presumir limpeza.
.github/ # CI configurations
docs/ # Architecture specs and algorithm diagrams
src/
├── commands/ # CLI command handlers (check, why, add, audit, config, cache, update)
├── engine/
│ ├── dag.ts # DAG construction + topological sort + blast-radius computation
│ ├── propagation.ts # Bottom-up transitive risk propagation
│ ├── scoring.ts # Bayesian Beta posteriors, archetype priors, veto checks
│ ├── vuln.ts # Multi-source vuln aggregator (OSV + GitHub + npm)
│ ├── trust.ts # Publisher trust incident database
│ ├── typosquat.ts # Edit-distance typosquat detection
│ ├── npm.ts # npm registry + download stats fetcher
│ └── github.ts # GitHub repo stats + README fetcher
├── ui/ # Console view templates (reporter formatters, theme styles)
└── utils/ # Filesystem helpers (caching, configuration, package managers)
tests/ # Unit test suites
benchmarker/ # Large-scale benchmark suite (100k+ packages)
O revera acompanha uma suíte de benchmarks de grande escala integrada em benchmarker/ que testa mais de 100 mil pacotes npm em paralelo e produz um único relatório legível no GitHub.
cd benchmarker
npm install
npm run fetch-dataset # one-time: pulls ~100k packages into datasets/npm.jsonl
./benchmark.sh --workers 16 # runs the full suite
Cada execução produz um diretório de saída autocontido com:
O benchmark v1 foi executado antes da implantação das verificações de veto da v2. Os números por rótulo de malicious/typosquat refletem o algoritmo legado. Uma nova execução completa da v2 será publicada no próximo lançamento.
BENCHMARK.md)Sem um token, consultas anônimas são limitadas a 60 solicitações por hora. Você pode definir um Personal Access Token na sua configuração:
revera config set githubToken ghp_YOUR_TOKEN
O revera usa arquivos de cache como fallback. Você pode executar comandos explicitamente em modo offline com a flag --offline. Se uma fonte de vulnerabilidade estiver indisponível, o pontuador bayesiano amplia o intervalo de credibilidade para aquele pacote em vez de presumir que está limpo.
O revera atua como um wrapper de shell. Ele executa o instalador real do pacote após a triagem.
Um pacote é marcado como contaminado quando uma de suas dependências transitivas acionou um veto ou obteve pontuação criticamente baixa. A saída da auditoria mostra o pior subcaminho para que você possa rastrear a cadeia exata de dependências que causou a sinalização.
Cada vulnerabilidade é identificada pelo seu CVE ID, GHSA ID ou npm advisory ID. Quando a mesma vulnerabilidade aparece em múltiplas fontes, ela é mesclada em uma única entrada canônica. Os dados do OSV têm prioridade para campos textuais (resumo, detalhes); a classificação de severidade mais alta e o intervalo de versões corrigidas mais completo entre todas as fontes são preservados.
Revise o Guia de Contribuição para começar com a configuração, regras de estilo e diretrizes de PR.
O revera fornece uma pontuação de reputação baseada em sinais observáveis do projeto e dados históricos. Ele se destina a auxiliar decisões de engenharia e não deve ser tratado como uma auditoria de segurança definitiva.
O revera é distribuído sob a Licença MIT.
| Recurso | npm audit | osv-scanner | Socket | revera |
|---|
| Vulnerabilidades CVE | ✔ | ✔ | ✔ | ✔ |
| Múltiplos Bancos de Vulnerabilidades | ✖ | Parcial | ✔ | ✔ |
| Reputação do Ecossistema | ✖ | ✖ | Parcial | ✔ |
| Pontuação Explicável | ✖ | ✖ | Parcial | ✔ |
| Verificação de Confiança do Publicador | ✖ | ✖ | Parcial | ✔ |
| Detecção de Typosquat | ✖ | ✖ | Parcial | ✔ |
| Propagação de Risco Transitivo | ✖ | ✖ | ✖ | ✔ |
| Intervalos de Confiança Bayesianos | ✖ | ✖ | ✖ | ✔ |
| Categoria | Peso | Áreas de Foco |
|---|
| Segurança | 20% | CVEs ativos (3 bancos de dados), scripts de instalação, transparência do repositório |
| Confiança do Publicador | 15% | Histórico de protestware, sabotagem deliberada, incidentes de sequestro de conta |
| Manutenção | 13% | Cadência de publicações, commits recentes, taxa de resposta a issues abertas |
| Estabilidade | 12% | Conformidade com SemVer, frequência de versões principais, maturidade pré-1.0 |
| Qualidade do Pacote | 13% | Tamanhos de arquivos-fonte, licença, configuração de exports |
| Ecossistema | 13% | Downloads semanais (escala log), estrelas no GitHub, número de contribuidores |
| Documentação | 9% | Completude do README, exemplos de código, cobertura da referência da API |
| Experiência do Desenvolvedor | 5% | Tipagens TS nativas, exports ESM, suporte a tree-shaking |
| Veto | Gatilho |
|---|
| Incidente Crítico de Confiança | O publicador tem um ataque confirmado à cadeia de suprimentos ou um lançamento de protestware |
| Typosquat | Distância de edição ≤ 1 de um pacote top-N (ex.: lodahs, expres) |
| CVE Crítico sem Correção | Uma vulnerabilidade de severidade CRITICAL sem versão corrigida disponível |
| Banco de Dados | Fonte | Autenticação Necessária | Notas |
|---|
| OSV (osv.dev) | Google Open Source Security | ✖ | Agrega NVD, GitHub Advisory, RUSTSEC e mais |
| GitHub Advisory DB | GitHub Security | ✖ | Pontuações CVSS ricas + intervalos de versões corrigidas |
| npm Advisory | registry.npmjs.org | ✖ | Mesmos dados do npm audit; às vezes publica antes do OSV |
| Arquivo | Descrição |
|---|
BENCHMARK.md | Relatório único legível no GitHub (precisão, detecção por rótulo, distribuição de pontuação, latência) |
report.html | Relatório interativo no navegador com gráficos |
summary.json | Estatísticas agregadas legíveis por máquina |
results.jsonl | Resultados por pacote para todos os pacotes testados |
comparison.json | Delta em relação à execução anterior (regressões + melhorias) |
| Rótulo | Pacotes | Precisão |
|---|
trusted | 7,051 | 96.6% |
malicious | 9 | 22.2% (linha de base v1 — as verificações de veto da v2 corrigem isso) |
typosquat | 20 | 35.0% (linha de base v1 — o veto por distância de edição da v2 corrige isso) |
| Geral (rotulado) | 7,085 | 96.5% |