Sobre o projeto

@node-ts/bus é uma biblioteca TypeScript concebida para simplificar o desenvolvimento de aplicações resilientes baseadas em mensagens. Abstrai os detalhes técnicos do transporte de barramento subjacente, permitindo aos programadores concentrarem-se na criação de sistemas fracamente acoplados com o mínimo de código repetitivo. A biblioteca permite aos programadores definir mensagens e manipuladores de mensagens, gerindo automaticamente o transporte de mensagens, as subscrições e as tentativas. Em caso de falha, as mensagens são devolvidas à fila para nova tentativa, promovendo a resiliência da aplicação. Também fornece fluxos de trabalho de mensagens (sagas) para coordenar múltiplas mensagens e manipuladores em processos de maior duração, tornando as aplicações mais robustas, autorregeneráveis e resistentes à perda ou corrupção de dados. Requer Node.js 24 ou posterior. ## Componentes O projeto é um monorepo com vários pacotes: - **@node-ts/bus-core**: biblioteca central do barramento para enviar e receber mensagens e gerir fluxos de trabalho - **@node-ts/bus-messages**: definições de tipos de mensagens para definir as suas próprias mensagens, eventos e comandos - **@node-ts/bus-class-serializer**: serializador JSON que converte para instâncias de classe - **@node-ts/bus-postgres**: adaptador de persistência Postgres - **@node-ts/bus-mongodb**: adaptador de persistência MongoDB - **@node-ts/bus-rabbitmq**: adaptador de transporte RabbitMQ - **@node-ts/bus-sqs**: adaptador de transporte Amazon SQS ## Desenvolvimento Para contribuidores, o repositório usa `pnpm` para suporte de monorepo e workspaces. Os scripts principais incluem: - `bootstrap`: instalar dependências em todos os pacotes e elevar para a raiz - `build`: compilar todos os pacotes - `build:watch`: compilar todos os pacotes e observar alterações com compilações incrementais - `clean`: remover todas as pastas dist e node_modules - `lint`: executar ESLint (typescript-eslint, com reconhecimento de tipos) sobre o repositório - `format`: formatar com prettier - `test`: executar testes unitários e de integração - `test:watch`: executar testes em modo de observação A documentação está disponível em [https://bus.node-ts.com](https://bus.node-ts.com), e as perguntas podem ser colocadas nas GitHub Discussions.