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

Пакет @rapidrest/core представляет собой набор общих утилит и основного функционала для создания RESTful-приложений в экосистеме RapidREST. Он предоставляет базовые строительные блоки, используемые другими библиотеками и сервисами RapidREST, включая внедрение зависимостей, кэширование, аутентификацию, обмен сообщениями, наблюдаемость и вспомогательные инструменты общего назначения. **Жизненный цикл объектов и внедрение зависимостей** Библиотека включает ClassLoader, который динамически обнаруживает классы во время выполнения с использованием соглашений о пространствах имен на основе папок, и легковесный DI-контейнер ObjectFactory. Зависимости могут быть внедрены с помощью декораторов (@Inject, @Config, @Logger), а жизненный цикл объектов управляется через @Init и @Destroy. **Кэширование и хранилище сессий** Общий интерфейс SimpleStore поддерживает хранение записей на основе TTL с двумя реализациями: MemoryStore для хранения внутри процесса и RedisStore на базе Redis для совместного использования состояния между несколькими экземплярами приложения. Доступны массовые операции, такие как loadMany, saveMany, loadSet и saveSet. **Аутентификация и валидация** JWTUtils обеспечивает создание, подписание, проверку и декодирование JSON Web Tokens с опциональным шифрованием полезной нагрузки на основе пароля или ключа, а также сжатием. UserUtils предоставляет проверки ролей, областей доступа (scope) и членства в организации. ValidationUtils содержит библиотеку валидаторов для email, URL, телефонов, UUID, семантических версий, IP, дат, JSON и многого другого, которые можно использовать с декоратором @Validator. **Обмен сообщениями и оповещения** MessagingUtils отправляет сообщения по шаблонам (Handlebars) через email, SMS или Slack из общего хранилища шаблонов. AlertUtils рассылает инцидентные оповещения с приоритетами (P1–P5) с вложениями файлов во внешние сервисы оповещения. NotificationUtils публикует push-уведомления в реальном времени через Redis pub/sub в индивидуальные каналы пользователей или рассылает их всем подписчикам. **Наблюдаемость** Предварительно настроенный Winston Logger автоматически помечает строки логов именем вызывающего класса и метода. TelemetryUtils записывает события телеметрии приложения и пересылает их в настроенный сервис сбора данных. **Общие утилиты** В пакет включены StringUtils, ObjectUtils, FileUtils, OASUtils (для загрузки, кэширования и запросов к спецификациям OpenAPI), CacheUtils (кэши с ограниченным вытеснением) и класс ApiError (поддерживающий HTTP со статус-кодами и шаблонизированными сообщениями). **Параллелизм** ThreadPool управляет пулом рабочих потоков Node.js, размер которого автоматически подстраивается под количество ядер ЦП, с типизированной передачей сообщений и автоматическим перезапуском при сбоях рабочих потоков. Пакет поддерживает только ESM и ориентирован на Node.js >=24.0.0. Обязательными peer-зависимостями являются axios, redis (для RedisStore), reflect-metadata, winston и winston-transport. Каналы обмена сообщениями динамически загружают опциональные пакеты (nodemailer, twilio, @slack/bolt) по мере необходимости.