Sobre el proyecto

El paquete @rapidrest/core es una colección de utilidades comunes y funcionalidad principal para construir aplicaciones RESTful en el ecosistema RapidREST. Proporciona los bloques fundamentales consumidos por otras librerías y servicios de RapidREST, incluyendo inyección de dependencias, almacenamiento en caché, autenticación, mensajería, observabilidad y ayudantes de propósito general. **Ciclo de Vida de Objetos e Inyección de Dependencias** La librería incluye un ClassLoader que descubre clases dinámicamente en tiempo de ejecución utilizando convenciones de espacio de nombres basadas en carpetas, y un ObjectFactory como contenedor de DI ligero. Las dependencias pueden inyectarse a través de decoradores (@Inject, @Config, @Logger), y el ciclo de vida del objeto se gestiona mediante @Init y @Destroy. **Almacenamiento en Caché y de Sesión** Una interfaz común SimpleStore soporta el almacenamiento de registros basado en TTL con dos implementaciones: MemoryStore para almacenamiento en el proceso y RedisStore respaldado por Redis para compartir el estado entre múltiples instancias de la aplicación. Están disponibles operaciones masivas como loadMany, saveMany, loadSet y saveSet. **Autenticación y Validación** JWTUtils proporciona la creación, firma, verificación y decodificación de JSON Web Tokens, con cifrado y compresión de carga útil opcionales basados en contraseña o clave. UserUtils ofrece comprobaciones de rol, alcance y membresía de organización. ValidationUtils suministra una librería de validadores para correo electrónico, URL, teléfono, UUID, versión semántica, IP, fecha, JSON y más, utilizables con el decorador @Validator. **Mensajería y Alertas** MessagingUtils envía mensajes basados en plantillas (Handlebars) a través de correo electrónico, SMS o Slack desde un almacén de plantillas compartido. AlertUtils despacha alertas de incidentes basadas en prioridad (P1–P5) con archivos adjuntos a servicios de alerta externos. NotificationUtils publica notificaciones push en tiempo real sobre Redis pub/sub a canales de usuarios individuales o mediante difusión a todos los suscriptores. **Observabilidad** Un Logger de Winston preconfigurado etiqueta automáticamente las líneas de registro con el nombre de la clase y el método que realiza la llamada. TelemetryUtils registra eventos de telemetría de la aplicación y los reenvía a un servicio de recolección configurado. **Utilidades Generales** Se incluyen StringUtils, ObjectUtils, FileUtils, OASUtils (para cargar, almacenar en caché y consultar especificaciones de OpenAPI), CacheUtils (cachés de desalojo limitado) y una clase ApiError (compatible con HTTP con código de estado y mensajes basados en plantillas). **Concurrencia** Un ThreadPool gestiona un grupo de hilos de trabajo de Node.js, dimensionado automáticamente según el recuento de CPU, con paso de mensajes tipados y reinicio automático en caso de fallos del trabajador. El paquete es solo ESM y está dirigido a Node.js >=24.0.0. Las dependencias pares requeridas son axios, redis (para RedisStore), reflect-metadata, winston y winston-transport. Los canales de mensajería cargan dinámicamente paquetes opcionales (nodemailer, twilio, @slack/bolt) según sea necesario.