Bump Foundatio.Mediator.Abstractions from 1.3.1 to 1.3.3#361
Merged
github-actions[bot] merged 1 commit intoJul 8, 2026
Merged
Conversation
--- updated-dependencies: - dependency-name: Foundatio.Mediator.Abstractions dependency-version: 1.3.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
ae41aff to
6d801fe
Compare
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.
Pinned Foundatio.Mediator.Abstractions at 1.3.3.
Release notes
Sourced from Foundatio.Mediator.Abstractions's releases.
1.3.3
Migration ergonomics driven by a large production migration from MassTransit's mediator (#271). All changes are additive and backward-compatible with 1.3.2.
Result ergonomics (#271, #279)
Result.InvalidandResult<T>.Invalidnow accept field-keyed error messages (IEnumerable<KeyValuePair<string, string[]>>) — the shape produced by ASP.NET Core model validation, MiniValidator, and FluentValidation'sToDictionary()— so validation output passes straight through without an app-side conversion helper.ResultStatus.RateLimitedwithResult.RateLimited()/Result.RateLimited(message)factories on both result types. Generated endpoints map it to a 429 problem response (message becomesdetail), and handler factory detection emits 429 in the endpoint OpenAPI metadata.Middleware message replacement (#271, #279)
Beforemiddleware can now returnHandlerResult.ContinueWith(message)to replace the dispatched message — subsequent middleware, the handler, andAfter/Finallyall receive the replacement. This is the missing piece for enriching immutable record messages (stamping tenant/user context fromHttpContext), whose init-only properties can't be mutated in place; mutable messages can keep being set directly inBefore.InvokeAsync); in endpoint scenarios anHttpContext?middleware parameter resolves from the call context and isnullelsewhere. The middleware guide documents the enrichment patterns: abstract base record (zero per-message code —withon the base type preserves the derived runtime type), interface with a one-line self-copy method, or a plain settable property.SetRequestedByFilterendpoint filter is replaced bySetRequestedByMiddlewareusingContinueWithwith fully immutable messages, and the endpoint-filter demo now shows an HTTP-shaped concern (X-Request-Duration-Msresponse-header filter).Invalidoverload.Fixed
Dependency updates
Full changelog: FoundatioFx/Foundatio.Mediator@v1.3.2...v1.3.3
1.3.2
Scope-per-invoke handler isolation, broader .NET 10 SDK compatibility, and Result factory ergonomics. All changes are additive and backward-compatible with 1.3.1.
Scope-per-invoke handler isolation (#268)
MediatorLifetime.ScopedPerInvoke— the mediator opens a fresh DI scope for each invocation, resolves the entire pipeline (middleware + handler + their dependencies) from it, and disposes the scope when the invocation — including cascading messages — completes. This matches the scope-per-message semantics of MassTransit's mediator and Wolverine, for handlers that assume isolated scoped dependencies per dispatch (e.g. a freshDbContextwith its own change tracker). Requested in #267.[Handler(Lifetime = MediatorLifetime.ScopedPerInvoke)], or assembly-wide with[assembly: MediatorConfiguration(HandlerLifetime = MediatorLifetime.ScopedPerInvoke)]with per-handler opt-out — the natural path when migrating a project off MassTransit mediator or Wolverine. Ambient dispatch (caller-owned scopes) remains the default; nothing changes for existing code.ScopedPerInvokehandler use its scope as their ambient scope, while targets that are themselvesScopedPerInvokealways open their own.FMED014(ScopedPerInvokeon middleware — handler-only, falls back toScoped),FMED015(handler returns a deferredIQueryable<T>/IAsyncEnumerable<T>that would be enumerated after the scope is disposed), andFMED016(FireAndForgetcascades are awaited forScopedPerInvokehandlers so background dispatches can't outlive the scope).Works on every .NET 10 SDK (#269)
CS9057and the generator silently didn't run (missing handler wrappers, missingMapMediatorEndpoints).Result factory type inference (#270)
Result.Created(order),Result.Ok(user), andResult.Success(user)— plus the message/location overloads — now infer the value type from the argument, so the verboseResult<OrderView>.Created(order)spelling is no longer required. Generated endpoint status-code detection (e.g..Produces<T>(201)) picks the new overloads up unchanged.Result<string>: a string argument still binds to the existing non-generic overloads — location forCreated, message forOk/Success. UseResult<string>.Created(value)when the string is the result value.Full changelog: FoundatioFx/Foundatio.Mediator@v1.3.1...v1.3.2
Commits viewable in compare view.