Об этом проекте

Redacted — это библиотека Scala и плагин компилятора, предназначенные для предотвращения непреднамеренной утечки конфиденциальных полей (таких как учётные данные, персональные данные и другая конфиденциальная информация), определённых внутри `case classes`. Они работают путём переписывания стандартного метода `toString` на этапе компиляции, заменяя аннотированные поля заполнителем (например, `***`), при этом прямой доступ к полям не затрагивается. **Ключевые особенности:** - **На основе аннотаций**: просто пометьте конфиденциальные поля аннотацией `@redacted`, чтобы исключить их из вывода `toString`. - **Преобразование на этапе компиляции**: плагин компилятора переписывает `toString` во время компиляции, обеспечивая отсутствие накладных расходов во время выполнения и отсутствие зависимости от плагина в итоговом бинарном файле. - **Кроссплатформенность**: поддерживаются JVM, Scala.js и Scala Native. - **Простая интеграция**: предоставляется плагин sbt (`sbt-redacted`) для удобной настройки. **Пример использования:** ```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) ``` После настройки дамп объекта или вызов `toString` выведет `***` для аннотированных полей, в то время как прямой доступ (например, `headers.apiKey`) по-прежнему возвращает реальное значение. **Поддерживаемые версии Scala:** - Scala 3 (от 3.1.3 до 3.9.0, включая LTS-версии) - Scala 2.13 и 2.12 **Платформы:** - JVM - Scala.js (1.x) - Scala Native (0.5) **Как это работает:** Плагин компилятора проверяет каждое определение типа, определяет, является ли оно `case class` хотя бы с одним полем, помеченным аннотацией `@redacted`, а затем переписывает стандартную реализацию `toString` для выборочного вывода `***` для этих полей. **Требования:** - Java 17+ (все компоненты скомпилированы на Java 17) **Дополнительные ресурсы:** - Веб-сайт проекта: https://polentino.github.io/redacted/ - Репозиторий плагина sbt: https://github.com/polentino/sbt-redacted **Пользователи:** - InvestSuite (B2B, масштабируемая WealthTech-платформа на базе ИИ) Redacted идеально подходит для разработчиков, работающих со Scala, которым необходимо гарантировать, что конфиденциальные данные не будут случайно раскрыты в логах или выводе в консоль, особенно в приложениях, работающих с учётными данными пользователей, ключами API или данными, связанными с PII/GDPR.