- fix (#24): inputs whose db value is
nilare now omitted from the handler input map so destructuring defaults (:or {...}) are applied; nil inputs were previously passed as explicitnil, defeating the defaults
- [BREAKING] an event handler may only write the ids it declared in
:outputs; returning any other id fails the transaction with:domino.events/undeclared-outputs. An undeclared write was invisible to the graph — nothing downstream of that path was triggered and the value landed anyway — and was reachable by accident through a:postinterceptor, which is composed onto every event that reads the path it hangs on - an event now runs at most once per transaction for a given set of input values. The traversal queues an event once per changed path, so a transaction changing several of one event's inputs ran the handler once for each; a handler folding into its own output accumulated once per changed input
- interceptors are documented as being collected from an event's
:inputs
- [BREAKING] replaced async callback API (
:async? true+ 4-arg handler with callback) with derefable returns; async handlers now returndelay/future/promiseand the engine auto-derefs - on the JVM,
futureandpromiseblock until resolved; in ClojureScript,delayis supported for lazy computation — truly async operations should use effects - the
:async?flag is silently ignored for backward compatibility
-
- [BREAKING] namespaced
:change-historykey as:domino.core/change-history
- [BREAKING] namespaced
- added
domino.core/eventmacro helper for declaring events
- fix: trigger effect with nested model
trigger-eventsremoved,trigger-effectsshould be used instead- events will now be executed by the
initializefunction when initial state is provided
- async event support
trigger-effectsfn added todomino.coreallowing triggering of effects via ids
- [BREAKING] renamed
initialize!toinitializesince it's a pure function - [BREAKING] inputs and outputs for events are now maps containing the keys
specified in the
:inputsand:outputsvectors - [BREAKING] event handler functions now must return a map with keys
matching the keys specified in the
:outputs - updated the model parser to handle segments without an options map
- introduces
:preand:postconditions trigger-eventsfn added todomino.core, allowing triggering events via ids- add schema definition validation
- validate for duplicate ids in model