Repository navigation
Dispatcher fluente e agnóstico
A v1.4.0 adiciona templates testados para publicar eventos pela mesma API, com o publisher escolhido pelo container:
await dispatch(publisher)
.event('order.created')
.with({ orderId, total })
.keyedBy(orderId)
.publish();
await events.event(new OrderCreatedEvent(/* dados */)).publish();
await events.from(order).publish();- Payload tipado por nome ou instância original preservada.
- Builders imutáveis, chave opcional e identidade/data estáveis.
publish()com Promise epublish$()com Observable frio; publishers síncronos, Promise ou Observable, sem retry automático.- Fila sequencial: remove cada evento somente após sucesso e mantém pendentes em falha/cancelamento. Proteção contra publicação concorrente permite composição RxJS após conclusão.
- Adapters/referências EventBus, compatibilidade EventPublisher, memória e confirmação de broker, sem SDKs no domínio ou na porta.
- Exemplo Order, skills, agentes, diagnóstico, checker e rulebook migrados.
Migração
As entidades e eventos passam a usar TypeScript puro. Copie os novos templates de shared/base-classes/, shared/events/ e os adapters necessários; instale RxJS 7 na aplicação. Configure EVENT_PUBLISHER_TOKEN e EVENT_DISPATCHER_TOKEN no container. Substitua mergeObjectContext()/commit() nos handlers por await events.from(entity).publish() depois do commit real da transação.
Atualizar o plugin não modifica arquivos já copiados na aplicação. A referência skills/application/references/event-dispatcher.md descreve migração e configuração. O checker reconhece handlers legados; o novo rulebook exige domínio sem imports NestJS.
EventBus confirma entrega ao bus, sem aguardar todos os listeners. Confirmação de broker não confirma processamento dos consumidores. Falhas ou cancelamento podem deixar entrega incerta: consumidores devem tolerar duplicatas. Outbox, retries persistentes, descoberta automática de listeners e exactly-once não fazem parte desta versão. Não há promessa de ganho de desempenho por usar RxJS.
As perguntas semânticas foram preservadas; a calibração histórica permanece identificada pela versão original e não é reutilizada como resultado da v1.4.0. O job de calibração gera resultados novos quando a chave está configurada.
Validação
362 testes passaram, além de typecheck, validação de frontmatter/links e checker dos exemplos (0 FAIL). Os testes executam templates realmente copiados, validam a integração NestJS/container e executam os testes Vitest do exemplo Order. Testado com TypeScript 5.9.3, RxJS 7.8.2 e NestJS CQRS 11.0.3.
O backlog complementar de repositórios/ORMs/RxJS (#19–#25 e #1) permanece separado.