Make Go event APIs typed by default#24
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
EventBus.On,Emit,Find, andFilterthe typed/default APIs*EventNamevariants for raw string and wildcard event-name flowsValidation
go test -count=1 ./...fromabxbus-gogit diff --checkpnpm dlx mintlify@latest broken-links, but Mintlify refused to run on Node 25.9.0 because it requires an LTS Node versionSummary by cubic
Makes the Go event APIs typed by default for safer handlers and clearer ergonomics.
EventBus.On,Find, andFilternow prefer typed payloads and predicates; string and wildcard flows use explicit*EventNamemethods. Adds runtime schema validation for typed payloads and results.Onfor typed handlers:func(TPayload),func(TPayload) (TResult, error), and context variants also work.Oncan infer the event name from the handler’s first param type viabus.On(handler).Onpanics if given""or"*".OnEventNamefor raw string names or"*"wildcard handlers that receive*BaseEvent.Find/Filterin typed form: pass a typed event (zero value or instance) and optionalwhere func(TPayload) bool. For string/wildcard, useFindEventName/FilterEventName.bus.Emit(MyEvent{...}); for raw names useEmitEventName/EmitEventNameWithContext. From inside handlers, preferevent.Emit(MyChildEvent{...})orevent.EmitEventName(...)for raw names.OnTyped[...],NewBaseEventWithResult[...], and similar are superseded byNewEvent[T](name, payload, ResultType[R]()),MustNewEvent, andEvent(payload).EventHandlerPayloadSchemaError/EventHandlerResultSchemaError.bridge.OnEventNamefor string/wildcard;bridge.Onsupports typed handlers.Written for commit 5bcd08a. Summary will update on new commits.