SDKs Oficiales de Caerus
TypeScript, Java & GoClientes oficiales para integrar Caerus en tus microservicios backend. Soporte para Node.js / TypeScript, Java 17+ y Go 1.26+, con tipado estricto, comunicación gRPC de alto rendimiento y selección unificada de lenguaje.
const caerus = new CaerusClient(options: CaerusClientOptions);Instalación
Selecciona tu lenguaje preferido. Los SDKs oficiales se distribuyen a través de sus registros estándar (npm para Node.js/TypeScript, Maven Central para Java y módulos de Go):
npm install @caerus-dev/sdk# O con tu gestor preferido:# pnpm add @caerus-dev/sdk# yarn add @caerus-dev/sdk# bun add @caerus-dev/sdkRequiere Node.js 20 o superior. Incluye tipos completos de TypeScript y empaquetado dual ESM y CommonJS.
Compatible con Java 17 o superior. Empaqueta gRPC (Netty) y Protobuf sin exponer dependencias conflictivas.
Compatible con Go moderno. Diseñado con contextos bloqueantes, soporte nativo de cancelaciones y sin exponer gRPC en la API pública.
Inicialización del Cliente
La API Key identifica a tu organización y entorno (e.g. Producción, Staging). El cliente gestiona un canal multiplexado gRPC thread-safe y reutilizable:
import { CaerusClient } from '@caerus-dev/sdk'; export const caerus = new CaerusClient({ apiKey: process.env.CAERUS_API_KEY!,});Conexión a un Caerus Local (Docker)
A futuro / En RoadmapActualmente Caerus opera como servicio centralizado en la nube. A futuro, estará disponible una distribución e imagen oficial de Docker para levantar un servidor de Caerus en tu propia máquina (puerto 9090) para pruebas unitarias, integración continua o desarrollo offline:
const caerus = new CaerusClient({ endpoint: 'localhost:9090', apiKey: process.env.CAERUS_API_KEY!, tls: false, // Un motor local corre sin certificado TLS});Al apuntar a un host personalizado o motor local, el endpoint debe ser únicamente host:puerto (por ejemplo localhost:9090, sin prefijo http:// ni https://) y acompañarse de tls: false para comunicación en texto plano.
Tabla de Opciones
| Opción | Por Defecto | Descripción |
|---|---|---|
| apiKey | — | Requerido. Clave de API obtenida de la consola web de Caerus. |
| endpoint | Cloud Caerus | Dirección host:port del cluster gRPC de Caerus. |
| tls | true | Habilita encriptación TLS. Desactivar solo con false explícito en conexiones locales (roadmap). |
| timeoutMs | 10000 | Tiempo máximo de espera (deadline gRPC) en milisegundos. |
Uso con SRE (Inventario & Recursos Compartidos)
Flujo de reserva transaccional en dos fases: adquirir una reserva temporal (take) sujeta a TTL y luego confirmarla (confirm) o liberarla (release):
// 1. Adquirir reserva temporal con TTL e idempotenciaconst holder = await caerus.unitary('seat-A12').take({ ttlSeconds: 60, idempotencyKey: 'checkout-session-123',}); // 2. Procesar cobro en tu pasarela...// 3. Confirmar la reserva de inventarioawait caerus.confirm(holder.id);Uso con DLS (Locks Distribuidos)
Sincronización y exclusión mutua distribuida entre workers concurrentes mediante transacciones y Fencing Tokens:
import { Dls } from '@caerus-dev/sdk'; const dls = new Dls.DlsClient({ apiKey: process.env.CAERUS_API_KEY! }); // withTransaction orquesta la transacción, heartbeat automático y liberación en finallyawait dls.withTransaction(async (tx) => { const lock = await tx.acquireLock( 'billing-jobs', 'monthly-billing', 'EXCLUSIVE', { timeoutMs: 10000 } ); console.log('Fencing Token:', lock.fencingToken); // Ejecutar tarea crítica...}, { timeoutMs: 15000 });Mocks y Testing
Para pruebas unitarias rápidas sin depender de conexión a internet o red:
import { CaerusClient } from '@caerus-dev/sdk'; // Puedes inyectar un cliente de prueba o mockear con Jest / Vitest:const testClient = new CaerusClient({ apiKey: 'test-key',});Repositorios Oficiales en GitHub
Repositorio de Node.js / TypeScript. Código fuente, tipados y ejemplos para Next.js y Express.
Ver en GitHubRepositorio oficial de Java 17+. Artefactos Maven, tests de integración y mocks en memoria.
Ver en GitHubRepositorio oficial de Go 1.26+. Concurrencia idiomática, soporte de contextos y testing en memoria.
Ver en GitHub