@m3r/sdk 0.5.0
ctx.events
O Core avisa depois do commit. O handler não aborta a operação.
Use evento para reagir. Use ctx.entryPoints para negar o save.
API
| Método | Efeito |
|---|---|
on(SdkEvent.*, handler) | Toda ocorrência. Devolve Disposable (unsubscribe / dispose). |
once(SdkEvent.*, handler) | Primeira ocorrência; o runtime remove o handler. |
removeAll() | O host chama depois do deactivate. Você não precisa. |
Handler: (payload, meta) => void | Promise<void>.
meta (EventExecutionContext): eventType, eventLogId?, correlationId?, occurredAt.
Se o handler lança, o runtime loga e segue. O pedido já está gravado.
Catálogo 0.5.0
Use SdkEvent.*. Literal fora da lista: SdkValidationError no on().
| Const | Nome no fio | Payload |
|---|---|---|
SalesOrderCreated | sales.order.created | salesOrderId, code, customerId, filialId, amount, status |
SalesOrderUpdated | sales.order.updated | + changedFields[] |
SalesOrderCancelled | sales.order.cancelled | + releasedSources |
SalesOrderApproved | sales.order.approved | salesOrderId, code, filialId, status |
SalesOrderFulfilled | sales.order.fulfilled | + exitDocumentCode? |
SalesQuoteConverted | sales.quote.converted | salesOrderId, code, filialId |
SalesOrderConvertedToQuote | sales.order.convertedToQuote | idem |
SalesPdvCompleted | sales.pdv.completed | pdvSaleId, salesOrderId?, filialId |
Declare os mesmos nomes em m3r.json → events[]. Validate recusa evento fora do catálogo e avisa evento declarado sem on().
Validação
- TypeScript — o payload é o daquele
SdkEvent. - Runtime —
ctx.events.on("sales.order.creatd", …)lançaSdkValidationError. m3r validate— cruzamento manifest × código.
Pode / não pode
Pode
- Chamar
ctx.m3rectx.ext.recordsno handler. - Registrar com
SdkEventou o string do catálogo.
Não pode
return { allow: false }— a API do evento não tem isso.- Assinar
financial.title.created(não está no catálogo 0.5.0). - Confiar em entrega instantânea: o transport atual é polling do EventLog (dev). Perda/atraso não desfaz o commit.
