Sobre o projeto
O pacote @rapidrest/core é uma coleção de utilitários comuns e funcionalidades principais para a construção de aplicações RESTful no ecossistema RapidREST. Ele fornece blocos de construção fundamentais consumidos por outras bibliotecas e serviços RapidREST, incluindo injeção de dependência, cache, autenticação, mensageria, observabilidade e helpers de propósito geral.
**Ciclo de Vida de Objetos & Injeção de Dependência**
A biblioteca inclui um ClassLoader que descobre classes dinamicamente em tempo de execução usando convenções de namespace baseadas em pastas, e um ObjectFactory, que é um container de DI leve. As dependências podem ser injetadas via decorators (@Inject, @Config, @Logger), e o ciclo de vida do objeto é gerenciado através de @Init e @Destroy.
**Cache & Armazenamento de Sessão**
Uma interface SimpleStore comum suporta o armazenamento de registros baseado em TTL com duas implementações: MemoryStore para armazenamento em processo e RedisStore, apoiado por Redis, para compartilhar estado entre múltiplas instâncias da aplicação. Operações em lote como loadMany, saveMany, loadSet e saveSet estão disponíveis.
**Autenticação & Validação**
O JWTUtils fornece a criação, assinatura, verificação e decodificação de JSON Web Tokens, com criptografia de payload e compressão opcionais baseadas em senha ou chave. O UserUtils oferece verificações de função, escopo e associação a organizações. O ValidationUtils fornece uma biblioteca de validadores para e-mail, URL, telefone, UUID, versão semântica, IP, data, JSON e mais, utilizáveis com o decorator @Validator.
**Mensageria & Alertas**
O MessagingUtils envia mensagens com templates (Handlebars) via e-mail, SMS ou Slack a partir de um armazenamento de templates compartilhado. O AlertUtils despacha alertas de incidentes baseados em prioridade (P1–P5) com anexos de arquivos para serviços de alerta externos. O NotificationUtils publica notificações push em tempo real via Redis pub/sub para canais de usuários individuais ou transmissão para todos os assinantes.
**Observabilidade**
Um Logger Winston pré-configurado marca automaticamente as linhas de log com o nome da classe e do método chamadores. O TelemetryUtils registra eventos de telemetria da aplicação e os encaminha para um serviço de coleta configurado.
**Utilitários Gerais**
Estão incluídos StringUtils, ObjectUtils, FileUtils, OASUtils (para carregar, cachear e consultar especificações OpenAPI), CacheUtils (caches de expulsão limitada) e uma classe ApiError (consciente de HTTP com código de status e mensagens com template).
**Concorrência**
Um ThreadPool gerencia um pool de worker threads do Node.js, dimensionado automaticamente conforme a contagem de CPU, com passagem de mensagens tipadas e reinicialização automática em caso de falhas do worker.
O pacote é apenas ESM e visa Node.js >=24.0.0. As peer dependencies necessárias são axios, redis (para RedisStore), reflect-metadata, winston e winston-transport. Os canais de mensageria carregam dinamicamente pacotes opcionais (nodemailer, twilio, @slack/bolt) conforme a necessidade.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.