Middleware Model¶
Middleware in Sayer adds before/after hooks around command execution.
Execution Order¶
flowchart TD
Start --> GlobalBefore[Global before hooks]
GlobalBefore --> NamedBefore[Named command hooks]
NamedBefore --> Command[Command function]
Command --> NamedAfter[Named command hooks]
NamedAfter --> GlobalAfter[Global after hooks]
GlobalAfter --> End
Behavior Notes¶
- Hooks can be sync or async.
- Named middleware is resolved at command decoration time.
- Global middleware runs for every command.
Design Guidance¶
- Use named middleware for domain concerns (audit, auth, telemetry).
- Keep hook signatures consistent (
(name, args)and(name, args, result)). - Avoid long-running blocking operations in hooks.