Commit graph

23 commits

Author SHA1 Message Date
49eafc2181
chore(ci): add manual workflow dispatch
All checks were successful
default / dotnet-default-workflow (push) Successful in 1m52s
2026-07-12 22:02:05 +02:00
f9de3a99de
feat(dispatcher): add registration-time pipeline behavior ordering via AddBehavior<T>(order:)
Pipeline behavior ordering previously depended on discovery/registration
order. Add an AddBehavior<T>(order:) API that captures the order at
registration time; the BehaviorTypeIndex now orders matching behaviors by
that explicit order (lower runs first), falling back to registration order
for ties. Removed the runtime Order property approach.
2026-07-12 21:58:49 +02:00
8099898f3d
fix(dispatcher): resolve handlers in registration order across closed and open generics
Handler/behavior resolution previously forced closed generics before open
generics regardless of registration order, which was surprising and fragile.
TypeIndex now tracks each registered type's index and orders matching
candidates by registration order, so closed/open ordering is deterministic
and follows registration.
2026-07-12 21:58:47 +02:00
a7d7e9fbaa
fix(dispatcher): throw on ambiguous handlers instead of silent .First()
Multiple handlers for the same request were previously resolved via .First(),
with ordering depending on Type.GetInterfaces() order (non-deterministic).
Now ScalarRequestInvoker/StreamRequestInvoker throw InvalidOperationException
listing the candidate handlers when more than one matches.
2026-07-12 21:58:25 +02:00
15bf9a8e56
fix(validation): make Severity meaningful in Validation.IsValid
Validation.IsValid previously counted every problem regardless of severity,
leaving Severity inert. Now IsValid only fails on Error problems, so Warning
and Info no longer invalidate the result, and IsValidFor(Severity) lets
callers set the failing-severity threshold.
2026-07-12 21:54:45 +02:00
581b0a1ced
fix(validation): return no problems for null reference instance in Rule.Validate
Rule<T,TProperty>.Validate cast a null instance to T and validated it, so a
reference T whose accessor dereferences the instance threw
NullReferenceException on a direct validator.Validate(context) with a null
instance. Guard the null-instance path and return no problems instead.
2026-07-12 21:53:26 +02:00
fd6ed64755
fix(validation): guard null comparison bounds in comparison builders
Passing a null bound to GreaterThan/LessThan/Between etc. called
value.CompareTo(null), throwing NullReferenceException for non-null
reference-type values. Short-circuit when the bound is null so the rule is
satisfied instead of crashing.
2026-07-12 21:53:26 +02:00
5b368602fe
docs(result): document that failure equality ignores error content
Result/Result<T> equality treats any two failures as equal regardless of their
Error, which was undocumented and surprising for failure-specific branching.
2026-07-12 21:53:26 +02:00
fbbe94bfa8
fix(result): Result<T> hash collision
A success result wrapping a value whose GetHashCode is 0 (e.g. Result<int>
with 0) collides with a failure result, both hashing to 0.
2026-07-12 21:25:21 +02:00
06a40184ee
fix(result): correct wrong namespace in Prelude doc comment
The doc comment referenced `Geekeey.Extensions.Result.Prelude` but the actual
namespace is `Geekeey.Request.Result`, so the suggested using directive would
not compile.
2026-07-12 18:33:32 +02:00
eff887b49f
feat: add json property path supports for object keys
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 2m4s
default / dotnet-default-workflow (push) Successful in 3m25s
2026-05-30 21:17:14 +02:00
29be774abc
chore: post release version changes
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 2m3s
default / dotnet-default-workflow (push) Successful in 2m50s
2026-05-30 19:56:57 +02:00
a0d69fde41
feat: release 2.0.0
All checks were successful
release / dotnet-release-workflow (push) Successful in 3m7s
2.0.0
2026-05-30 19:55:03 +02:00
c674de31f7
chore: rename internal types
Some checks failed
default / dotnet-default-workflow (pull_request) Successful in 2m5s
default / dotnet-default-workflow (push) Has been cancelled
Rename internal types in the validation to be more consistent with other
projects
2026-05-30 19:36:28 +02:00
36f1a9eb1b
feat: rename validation builder for parity
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 1m58s
default / dotnet-default-workflow (push) Successful in 1m56s
Rename extensions functions and `IValidatorBuilder` for parity with
dispatcher options and builder.
2026-05-29 23:13:06 +02:00
4d33d5ab4c
feat: hide pipelines internals from stack trace
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 2m4s
default / dotnet-default-workflow (push) Successful in 1m59s
2026-05-29 23:10:01 +02:00
bae9b2a5f1
chore: post release version changes
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 2m8s
default / dotnet-default-workflow (push) Successful in 2m7s
release / dotnet-release-workflow (push) Successful in 2m11s
2026-05-28 22:07:54 +02:00
cc2a643f63
feat: release 1.1.0
All checks were successful
release / dotnet-release-workflow (push) Successful in 2m8s
1.1.0
2026-05-28 22:07:54 +02:00
21b6f04f8c
fix: type cache reset when metadata updates occure
All checks were successful
default / dotnet-default-workflow (pull_request) Successful in 3m28s
default / dotnet-default-workflow (push) Successful in 2m10s
2026-05-28 20:39:51 +02:00
22142882b5
feat: add support for validator resolution from dependency injection 2026-05-28 20:12:00 +02:00
21ca8a3757
chore: post release version changes
All checks were successful
default / dotnet-default-workflow (push) Successful in 3m2s
2026-05-26 22:26:46 +02:00
85d69ef744
feat: release 1.0.0
All checks were successful
release / dotnet-release-workflow (push) Successful in 3m2s
1.0.0
2026-05-26 22:25:16 +02:00
d614788e06
feat: create request projects for basic CQRS 2026-05-26 22:24:40 +02:00