¿Por qué usar el SDK de Midaz para TypeScript?
- Seguridad de tipos por diseño: Construido con soporte completo de TypeScript y definiciones de tipos precisas.
- Patrón de constructor: Interfaces fluidas y legibles para ayudarte a construir objetos complejos con facilidad.
- Manejo robusto de errores: Estrategias inteligentes de recuperación y señales de error claras, para que mantengas el control.
- Observabilidad incluida: Rastreo, métricas y registros, listos desde el primer momento.
- Arquitectura en capas: Separación limpia entre cliente, entidades, API y modelos. Organizado, predecible, escalable.
- Reintentos automáticos: Maneja contratiempos transitorios con políticas de reintento configurables.
- Controles de concurrencia: Herramientas integradas para ejecutar tareas en paralelo, sin perder el control del rendimiento.
- Rápido con caché: Caché en memoria para aumentar el rendimiento donde cuenta.
- Validación estricta: Detecta entrada inválida temprano con mensajes de error claros y accionables.
Comenzando
Prerrequisito
- El SDK de Midaz para TypeScript requiere TypeScript v5.8 o posterior.
Instalación del SDK
Para comenzar a usar el SDK de Midaz para TypeScript, debes instalar las dependencias usando el siguiente comando:Autenticación
El SDK de Midaz para TypeScript se autentica a través del Access Manager de Lerian (OAuth). Para un stack local que corre con la autenticación deshabilitada, puedes construir un cliente sin él. Nunca llamas a una función
createClient — construye una configuración con createClientConfigWithAccessManager() (o createClientConfigBuilder() para un stack local sin autenticación) y pásala a new MidazClient(config).
Autenticación con Access Manager
Para integración con proveedores de identidad externos usando OAuth:Desarrollo local (sin autenticación)
Para un stack local de Midaz que corre con la autenticación deshabilitada, construye un cliente sin Access Manager:Guía de inicio rápido
En las siguientes secciones, encontrarás ejemplos de código prácticos para ayudarte a entender cómo usar el SDK de Midaz para TypeScript.
Crear un cliente
Este es el primer, y posiblemente más importante, paso. El cliente es tu punto de entrada principal al SDK. Maneja la autenticación y te da acceso a todos los servicios de entidades. Ejemplo:Crear un Activo
La mejor manera de crear activos es con el Patrón de Constructor usandocreateAssetBuilder.
Ejemplo:
name y assetCode al constructor const assetInput = createAssetBuilder('US Dollar', 'USD'), luego agregarás cualquier propiedad adicional con los métodos with*.
Crear una Cuenta
La forma más fácil de crear cuentas es con el Patrón de Constructor usandocreateAccountBuilder.
Ejemplo:
name y assetCode al constructor const accountInput = createAccountBuilder('Savings Account', 'USD'), luego agregarás cualquier propiedad adicional con los métodos with*.
Crear una Transacción
La forma más fácil de crear cuentas es con el Patrón de Constructor usandocreateTransactionBuilder.
Ejemplo:
with*.
Recuperación de errores
Usa recuperación de errores mejorada para operaciones críticasLimpiar recursos
Usar Access Manager para autenticación
Arquitectura del SDK
El SDK de Midaz usa una arquitectura de servicios de múltiples capas para proporcionar una experiencia de desarrollador limpia, modular y escalable. Está organizado en tres capas clave, como se muestra en la Figura 1, cada una sirviendo un propósito distinto.
- Interfaz del cliente: Este es el punto de entrada principal para los usuarios del SDK. Gestiona configuraciones como claves API y entornos, inicializa servicios de manera perezosa y expone toda la funcionalidad disponible de manera unificada y descubrible.
- Capa de servicios de entidades: Esta capa contiene servicios específicos de dominio (por ejemplo, Cuentas, Activos y Transacciones) y ofrece métodos consistentes para operaciones como crear, obtener, actualizar, eliminar y listar. Además, se incluyen operaciones especializadas basadas en las necesidades específicas de cada entidad.
- Capa de servicios centrales: Estas utilidades fundamentales son utilizadas por todos los servicios de entidades. Manejan solicitudes HTTP, validación de entrada, procesamiento de errores, observabilidad, configuración y almacenamiento en caché.
- Consistencia a través de patrones compartidos en todos los servicios.
- Escalabilidad mediante inyección de dependencias y fábricas de servicios.
- Confiabilidad a través de manejo mejorado de errores y respuestas tipadas.
- Facilidad de prueba con soporte para pruebas de simulación, integración y contrato.
Patrón de constructor
El SDK de Midaz para TypeScript emplea un patrón de diseño de constructor para ayudarte a ensamblar objetos avanzados de manera directa, segura y adaptable. En lugar de predefinir un conjunto de entradas, proporciona una interfaz fluida, paso a paso y encadenable que te guía a través de todo el proceso. Funciones de constructor en el SDK:
- Te asisten informándote de los parámetros por adelantado.
- Te permiten modificar campos opcionales usando métodos
.with*()y encadenarlos. - Ayudan a evitar estados inválidos a través de una estructura guiada.
- Ocultan la complejidad interna, lo que conduce a una mejor legibilidad.
Ejemplo
Aquí hay un ejemplo rápido:assetInput al método de creación correspondiente en el SDK.
Trabajando con entidades
Cada servicio de entidad se concentra en aspectos distintos del dominio financiero, como cuentas, activos o transacciones. Estos servicios proporcionan un método confiable para crear, recuperar, actualizar y eliminar datos mientras permiten interacciones significativas con cada tipo de entidad. Además, ofrecen características especializadas diseñadas para tu caso de uso particular, permitiéndote manejar datos financieros con mayor confianza y eficiencia.
| Entidad | Descripción |
|---|---|
| Organizaciones | Gestionar unidades de negocio y datos organizacionales. |
| Ledgers | Estructurar y gestionar registros financieros. |
| Activos | Trabajar con activos como monedas, commodities y otras unidades de valor. |
| Cuentas | Crear, recuperar, actualizar y eliminar cuentas dentro de un Libro Contable. |
| Segmentos | Organizar portafolios para análisis e informes. |
| Portafolios | Agrupar cuentas y activos en colecciones financieras significativas. |
| Saldos | Recuperar y calcular saldos de activos para cuentas. |
| Tasas de Activos | Manejar tasas de cambio entre diferentes tipos de activos. |
| Transacciones | Crear y gestionar transacciones que mueven activos entre cuentas. |
| Operaciones | Gestionar débitos y créditos atómicos que conforman una transacción. |
Uso de utilidades
El SDK proporciona un conjunto de módulos de utilidad para optimizar operaciones comunes, ya sea que estés optimizando el rendimiento, manejando errores, gestionando configuraciones o mejorando la observabilidad. Estas herramientas están diseñadas para trabajar sin problemas con el resto del SDK y te ayudan a construir aplicaciones financieras robustas con menos esfuerzo.
| Utilidad | Descripción |
|---|---|
| Ayudantes de Cuenta | Simplifica la lógica y transformaciones comunes relacionadas con cuentas. |
| Caché | Habilita almacenamiento en caché ligero para un mejor rendimiento en tiempo de ejecución. |
| Concurrencia | Ayuda a coordinar y limitar tareas concurrentes de manera segura y eficiente. |
| Configuración | Configuración y acceso centralizados. |
| Datos | Asiste con formateo de datos y tareas de paginación. |
| Manejo de Errores | Ofrece estrategias de recuperación y mecanismos de procesamiento de errores. |
| Cliente HTTP | Proporciona una interfaz HTTP de bajo nivel para llamadas API directas. |
| Red | Agrega características de red de alto nivel como reintentos y retroceso. |
| Observabilidad | Captura trazas, métricas y registros para soportar monitoreo y depuración. |
| Paginación | Maneja respuestas paginadas con ayudantes predecibles y consistentes. |
| Validación | Valida datos de entrada y salida para ayudar a mantener la integridad de datos. |
Manejo de errores
El SDK de Midaz para TypeScript te ayuda a manejar errores de manera clara y consistente. Cuando ocurre un error durante una operación del SDK, se lanza un error estructurado. Este error incluye campos clave para ayudarte a entender y resolver el problema:
code: Un identificador corto y consistente para el tipo de error.message: Una descripción legible por humanos.details: (Opcional) Contexto adicional o metadatos.status: El código de estado HTTP, cuando esté disponible.
Códigos de error comunes
| Código | Descripción | Estado HTTP |
|---|---|---|
invalid_input | Tu solicitud falta datos requeridos o tiene valores inválidos. | 400 |
unauthorized | La autenticación falló o faltan credenciales. | 401 |
forbidden | No tienes permiso para realizar esta acción. | 403 |
not_found | El recurso al que intentas acceder no existe. | 404 |
conflict | La operación entra en conflicto con un recurso existente. | 409 |
internal_error | Algo salió mal de nuestro lado. | 500 |
service_unavailable | Interrupción temporal—intenta de nuevo más tarde. | 503 |
Mejores prácticas
- Valida la entrada antes de llamar a los métodos del SDK para evitar
invalid_input. - Verifica dos veces la autenticación cuando enfrentes
unauthorizedoforbidden. - Reintenta en problemas transitorios como
internal_erroroservice_unavailable. - Usa
detailspara mostrar información de depuración útil en registros de desarrollo.
Pipeline de CI/CD
Usamos GitHub Actions para mantener las cosas fluidas, automatizadas y listas para producción:
- Ejecuta pruebas en múltiples versiones de Node.js.
- Hace cumplir la calidad del código con ESLint y Prettier.
- Mantiene las dependencias actualizadas con Dependabot.
- Maneja versiones automáticamente usando versionado semántico.
- Genera registros de cambios para total transparencia.
¿Quieres contribuir?
Si estás pensando en contribuir al SDK de Midaz para TypeScript, comienza con nuestra guía de contribución en GitHub. Cubre todo lo que necesitas saber para comenzar.
Licencia
Este proyecto está licenciado bajo Elastic License 2.0. Para más detalles, consulta la página de Licencia.

