Autor: César Casas LinkedIn: César Casas Sitio Web: s42core.com
s42-core
es una biblioteca poderosa y flexible construida sobre Bun.js, diseñada para simplificar el desarrollo de aplicaciones, especialmente aquellas que utilizan arquitecturas de microservicios y basadas en células. Esta biblioteca admite la creación de componentes de software modulares y reutilizables, y agiliza la implementación de monorepos de alto rendimiento.
s42-core
permite la creación de aplicaciones escalables y modulares con microservicios o células independientes. Esta arquitectura garantiza la mantenibilidad y simplifica las actualizaciones.
Las aplicaciones construidas con s42-core
se benefician de un rendimiento excepcional, aprovechando la velocidad de Bun.js y patrones de diseño eficientes.
Admite Server-Sent Events (SSE) para actualizaciones en tiempo real, ideal para notificaciones, transmisiones de datos en vivo y aplicaciones colaborativas.
Facilita la gestión de procesos de trabajo, permitiendo una utilización eficiente de sistemas multicore, con soporte para desarrollo en modo “watch”.
Ofrece utilidades para gestionar conexiones y operaciones en Redis y MongoDB, agilizando la gestión de datos en aplicaciones modernas.
Documentación detallada de cada clase y módulo:
- CLUSTER.md
- CONTROLLER.md
- DEPENDENCIES.md
- EVENTSDOMAIN.md
- JSONPARSE.md
- MONGODB.md
- REDISDB.md
- ROUTECONTROLLERS.md
- SSE.md
- TEST.md
Instala s42-core
utilizando tu gestor de paquetes preferido:
npm install s42-core
La clase EventsDomain
permite una comunicación basada en eventos entre microservicios. Por ejemplo, puedes emitir un evento desde un servicio de registro de usuarios y escucharlo en un servicio de notificación por correo electrónico.
import { EventsDomain, RedisClient } from 's42-core';
const redisInstance = RedisClient.getInstance('redis://localhost:6379');
const eventsDomain = EventsDomain.getInstance(redisInstance, 'service-uuid');
// Emitir un evento
eventsDomain.emitEvent('user.registered', {
email: '[email protected]',
name: 'Juan Pérez',
});
// Escuchar un evento
eventsDomain.listenEvent('user.registered', (payload) => {
console.info('Usuario registrado:', payload);
});
Los controladores manejan solicitudes HTTP y middleware. Aquí tienes un ejemplo de cómo crear un controlador simple:
import { Controller } from 's42-core';
const userController = new Controller('POST', '/users', async (req, res) => {
const userData = req.body;
console.info('Datos de usuario recibidos:', userData);
res.json({ success: true, data: userData });
});
RouteControllers organiza y gestiona múltiples controladores de manera eficiente:
import { RouteControllers, Controller } from 's42-core';
const healthController = new Controller('GET', '/health', async (req, res) => {
res.text('OK');
});
const router = new RouteControllers([userController, healthController]);
// Usar el router en tu servidor
server.start({ RouteControllers: router });
Implementa fácilmente la comunicación en tiempo real con la clase SSE:
import { SSE, Controller } from 's42-core';
const sseController = new Controller('GET', '/events', async (req) => {
const sse = new SSE(req);
setInterval(() => {
sse.send({ eventName: 'time', eventPayload: { time: new Date().toISOString() } });
}, 1000);
return sse.getResponse();
});
La clase Cluster
simplifica la gestión de procesos de trabajo:
import { Cluster } from 's42-core';
const cluster = new Cluster({ name: 'example-cluster', maxCPU: 4, watch: true });
cluster.start('./worker.js', (error) => {
if (error) console.error('Cluster falló:', error);
});
cluster.onWorkerMessage((message) => {
console.info('Mensaje desde el worker:', message);
});
s42-core
está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Desarrollado por César Casas - LinkedIn.