@octavio.cubillos/lisa-sdk
v1.4.0
Published
SDK oficial para interactuar con el ecosistema Lisa
Readme
Lisa SDK v1.3.3
Librería cliente oficial para interactuar con el ecosistema de Lisa Orchestrator. Proporciona una interfaz de alto nivel y amigable para el desarrollador, permitiendo gestionar bases de datos, invocar tareas sin servidor (serverless), manejar colas de mensajes y acceder a secretos de forma segura.
Características
- ** Base de Datos Híbrida (NoSQL + SQL)**: Alterna sin esfuerzo entre un modo documental y un modo estricto. Soporta evolución de esquemas dinámica y migración automática de datos.
- ** Tareas (Estilo Serverless)**: Invocación de funciones síncronas y asíncronas con orquestación automática de contenedores y gestión del ciclo de vida.
- ** Colas (Asíncronas)**: Procesamiento fiable de mensajes con soporte para monitorización de estado, reintentos y purgado.
- ** Bóveda de Secretos**: Acceso cifrado y seguro a claves de configuración sensibles utilizando AES-256-GCM.
- ️ Configuración Cero: Descubrimiento automático e inyección de credenciales mediante variables de entorno (
LISA_STACK,LISA_SECURE_KEY, etc.). - ️ Estabilidad Industrial: Soporte integrado para comprobaciones de estado (Healthchecks), versionado estricto y tipado completo y seguro mediante TypeScript.
Instalación
npm install @octavio.cubillos/lisa-sdkEjemplos de Uso
1. Operaciones de Base de Datos (Modo Híbrido)
El SDK soporta tanto un modo estricto como uno evolutivo a través de un único método model().
import { LisaClient, LisaBaseEntity } from '@octavio.cubillos/lisa-sdk';
const lisa = new LisaClient();
// A. MODO DOCUMENTAL (Desarrollo / NoSQL)
// Los datos se empaquetan en una columna JSON. Solo las PK/Índices son físicos.
const Sandbox = lisa.db.model('sandbox', {
options: { document: true }
});
await Sandbox.create({ name: 'Test', tags: ['dev'], nested: { score: 100 } });
// B. MODO ESQUEMA (Industrial / SQL)
interface User extends LisaBaseEntity {
name: string;
email: string;
}
const UserModel = lisa.db.model<User>('users', {
schema: {
attributes: [
{ name: 'name', type: 'S' },
{ name: 'email', type: 'S' }
],
options: {
timestamps: true,
strict: true // Previene la inserción de campos no declarados
}
}
});
// C. CONSULTAS AVANZADAS
const users = await UserModel.find({
email: { $like: '%@lisa.dev' }
});2. Gestión de Secretos (Bóveda)
Accede a secretos cifrados sin exponerlos en tu código fuente ni en los archivos de configuración.
// Recuperar una clave secreta de la bóveda del stack
const stripeKey = await lisa.secrets.get('STRIPE_API_KEY');
// Listar las claves secretas disponibles
const keys = await lisa.secrets.list();3. Invocación de Tareas
const result = await lisa.invoke({
target: 'pdf-generator',
payload: { month: 'Junio' }
});4. Gestión de Colas
const queue = lisa.queue('main-worker');
await queue.sendMessage({ payload: { action: 'sync' } });
const status = await queue.getStatus();️ Detalles Técnicos
- Lenguaje: Escrito en TypeScript con tipado completamente seguro (soporte de Genéricos).
- Compatibilidad: Soporta tanto CommonJS (CJS) como ES Modules (ESM).
- Seguridad: Se comunica con el Plano de Control a través de una API autenticada (JWT o Secure-Key).
Licencia
Licencia ISC.
