Por que usar o SDK do Midaz para TypeScript?
- Segurança de tipos por design: suporte completo a TypeScript com definições de tipo precisas.
- Padrão builder: interfaces fluentes e legíveis para construir objetos complexos.
- Tratamento de erros: estratégias de recuperação e sinais de erro claros.
- Observabilidade incluída: tracing, métricas e logs, prontos para uso.
- Arquitetura em camadas: separação clara entre client, entities, API e models.
- Novas tentativas automáticas: políticas de nova tentativa configuráveis para falhas transitórias.
- Controles de concorrência: ferramentas integradas para executar tarefas em paralelo com throughput controlado.
- Rápido com cache: cache em memória para melhor desempenho.
- Validação estrita: detecte entradas inválidas cedo, com mensagens de erro claras.
Primeiros passos
Pré-requisito
- O SDK do Midaz para TypeScript requer TypeScript v5.8 ou posterior.
Instalando o SDK
Instale o SDK do Midaz para TypeScript com um dos comandos a seguir:Autenticação
O SDK do Midaz para TypeScript se autentica pelo Access Manager da Lerian (OAuth). Para uma stack local com autenticação desabilitada, você pode criar um client sem ele. Você nunca chama uma factory
createClient. Construa uma configuração com createClientConfigWithAccessManager() (ou createClientConfigBuilder() para uma stack local sem autenticação) e passe-a para new MidazClient(config).
Autenticação com o Access Manager
Para integrar com provedores de identidade externos via OAuth:Desenvolvimento local (sem autenticação)
Para uma stack local do Midaz com autenticação desabilitada, crie um client sem o Access Manager:Guia de início rápido
As seções a seguir trazem exemplos práticos de código do SDK do Midaz para TypeScript.
Criar um client
O client é seu ponto de entrada principal para o SDK. Ele cuida da autenticação e dá acesso a todos os serviços de entidade. Exemplo:Criar um Ativo
Crie ativos com o padrão builder ecreateAssetBuilder.
Exemplo:
name e assetCode ao builder const assetInput = createAssetBuilder('US Dollar', 'USD'). Depois, adicione quaisquer outras propriedades com métodos with*.
Criar uma Conta
Crie contas com o padrão builder ecreateAccountBuilder.
Exemplo:
name e assetCode ao builder const accountInput = createAccountBuilder('Savings Account', 'USD'). Depois, adicione quaisquer outras propriedades com métodos with*.
Criar uma Transação
Crie transações com o padrão builder ecreateTransactionBuilder.
Exemplo:
with*.
Recuperação de erros
Use recuperação de erros aprimorada para operações críticas.Limpar recursos
Usando o Access Manager para autenticação
Arquitetura do SDK
O SDK do Midaz usa uma arquitetura de serviços em múltiplas camadas. Ela tem três camadas, mostradas na Figura 1. Cada camada tem um propósito distinto.
- Interface do client: este é o ponto de entrada principal para os usuários do SDK. Ela gerencia a configuração, como API keys e ambientes. Ela inicializa os serviços de forma lazy e expõe toda a funcionalidade do SDK.
- Camada de serviços de entidade: esta camada reúne serviços específicos de domínio, como Contas, Ativos e Transações. Cada serviço oferece métodos consistentes: criar, obter, atualizar, excluir e listar. Cada serviço também adiciona operações especializadas para sua entidade.
- Camada de serviços principais: todos os serviços de entidade usam esses utilitários fundamentais. Eles cuidam de requisições HTTP, validação de entrada, processamento de erros, observabilidade, configuração e cache.
Figura 1. A arquitetura em camadas do SDK do Midaz para TypeScript.
- Consistência por meio de padrões compartilhados entre os serviços.
- Escalabilidade via injeção de dependência e factories de serviço.
- Confiabilidade por meio de tratamento de erros aprimorado e respostas tipadas.
- Testabilidade com suporte para mocking, testes de integração e testes de contrato.
Padrão builder
O SDK do Midaz para TypeScript usa um padrão builder para ajudar você a montar objetos complexos de forma segura e adaptável. Em vez de um conjunto fixo de entradas, ele oferece uma interface passo a passo, fluente e encadeável. Funções builder no SDK:
- Informam os parâmetros com antecedência.
- Permitem definir campos opcionais com métodos
.with*()e encadeá-los. - Evitam estados inválidos por meio de uma estrutura guiada.
- Ocultam a complexidade interna para melhorar a legibilidade.
Exemplo
assetInput para o método create correspondente no SDK.
Trabalhando com entidades
Cada serviço de entidade cobre uma parte distinta do domínio financeiro, como contas, ativos ou transações. Esses serviços criam, recuperam, atualizam e excluem dados de cada tipo de entidade. Eles também oferecem funcionalidades especializadas para cada caso de uso.
Você acessa cada serviço pelo client do SDK. Eles seguem uma estrutura consistente, o que facilita construir e manter funcionalidades financeiras.
Usando utilitários
O SDK oferece módulos utilitários para operações comuns: desempenho, tratamento de erros, configuração e observabilidade.
Tratamento de erros
O SDK do Midaz para TypeScript ajuda você a tratar erros de forma clara e consistente. Quando ocorre um erro durante uma operação do SDK, o SDK lança um erro estruturado. O erro inclui campos importantes:
code: um identificador curto e consistente para o tipo de erro.message: uma descrição legível para humanos.statusCode: o código de status HTTP, quando disponível.
Códigos de erro comuns
Boas práticas
- Valide a entrada antes de chamar métodos do SDK, para evitar
invalid_input. - Verifique sua autenticação quando receber
unauthorizedouforbidden. - Tente novamente em problemas transitórios como
internal_errorouservice_unavailable. - Use
statusCodeemessagepara mostrar informações de depuração nos logs de desenvolvimento.
Pipeline de CI/CD
Usamos o GitHub Actions para builds automatizados e prontos para produção:
- Executa testes em várias versões do Node.js.
- Aplica qualidade de código com ESLint e Prettier.
- Mantém as dependências atualizadas com o Dependabot.
- Cuida dos releases automaticamente com versionamento semântico.
- Gera changelogs.
Quer contribuir?
Para contribuir com o SDK do Midaz para TypeScript, comece pelo nosso guia de contribuição no GitHub.
Licença
Este projeto está licenciado sob a Apache License 2.0. Para detalhes, veja a página Licença.

