Sobre o projeto
Redacted é uma biblioteca Scala e plugin de compilador projetado para evitar o vazamento inadvertido de campos sensíveis (como credenciais, dados pessoais e outras informações confidenciais) definidos dentro de `case classes`. Ele funciona reescrevendo o método `toString` padrão em tempo de compilação, substituindo campos anotados por um placeholder (por exemplo, `***`), sem afetar o acesso direto aos campos.
**Principais Recursos:**
- **Baseado em anotações**: basta anotar campos sensíveis com `@redacted` para excluí-los da saída de `toString`.
- **Transformação em tempo de compilação**: o plugin do compilador reescreve `toString` durante a compilação, garantindo nenhum overhead em tempo de execução e nenhuma dependência do plugin no binário final.
- **Multiplataforma**: suporta JVM, Scala.js e Scala Native.
- **Integração fácil**: fornece um plugin sbt (`sbt-redacted`) para configuração perfeita.
**Exemplo de Uso:**
```scala
import io.github.polentino.redacted.redacted
case class HttpHeaders(userId: UUID, @redacted apiKey: String, languages: Seq[Locale], correlationId: String)
case class User(id: UUID, nickname: String, @redacted email: String)
```
Após a configuração, imprimir o objeto ou chamar `toString` exibirá `***` para os campos anotados, enquanto o acesso direto (por exemplo, `headers.apiKey`) ainda retorna o valor real.
**Versões do Scala Suportadas:**
- Scala 3 (3.1.3 a 3.9.0, incluindo versões LTS)
- Scala 2.13 e 2.12
**Plataformas:**
- JVM
- Scala.js (1.x)
- Scala Native (0.5)
**Como Funciona:**
O plugin do compilador inspeciona cada definição de tipo, verifica se é uma `case class` com pelo menos um campo anotado com `@redacted` e, em seguida, reescreve a implementação padrão de `toString` para exibir seletivamente `***` para esses campos.
**Requisitos:**
- Java 17+ (todos os componentes são compilados no Java 17)
**Recursos Adicionais:**
- Site do projeto: https://polentino.github.io/redacted/
- Repositório do plugin sbt: https://github.com/polentino/sbt-redacted
**Adotantes:**
- InvestSuite (B2B, Scalable & AI-Driven WealthTech)
Redacted é ideal para desenvolvedores que trabalham com Scala e precisam garantir que dados sensíveis não sejam expostos acidentalmente em logs ou saída de console, particularmente em aplicações que lidam com credenciais de usuário, chaves de API ou dados relacionados a PII/GDPR.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.