Об этом проекте
Пакет @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) по мере необходимости.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.