feat: add middleware/hooks system for event processing (Vibe Kanban) #27
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds a middleware/hook system to the outbox event processor that allows intercepting event processing for:
Changes
New Middleware Interface
The middleware system supports two approaches:
1. Class-based middlewares (supports NestJS dependency injection):
2. Function-based hooks (simpler use cases):
Context Provided to Hooks
Hook Lifecycle
beforeProcess- Called before each listener processes the eventafterProcess- Called after processing (success or failure) with timing infoonError- Called only when an error occurs (beforeafterProcess)Implementation Details
ModuleRef.create()enabling full DI supportHooksMiddlewareAdapterclass internallymiddlewaresandhookscan be used together (middlewares run first)Files Changed
src/middleware/outbox-middleware.interface.ts- New middleware interfaces and typessrc/outbox.module-definition.ts- Addedmiddlewaresandhooksconfig optionssrc/outbox.module.ts- Added middleware instantiation and adaptersrc/processor/outbox-event.processor.ts- Added hook invocations with timingsrc/index.ts- Exported new middleware typessrc/test/unit/outbox-event-processor.spec.ts- Added 5 comprehensive testsThis PR was written using Vibe Kanban