feat: add pipes and filters pattern support#277
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Pull request overview
Adds first-class Pipes and Filters support to PatternKit, including a runtime pipeline API, a source generator for typed builder factories, and an end-to-end fulfillment example wired into the examples catalog/DI surface with accompanying docs and tests.
Changes:
- Introduces
PipesAndFiltersPipeline<TContext>runtime with ordered async filters and execution metadata. - Adds
[GeneratePipesAndFiltersPipeline]attribute + incremental generator to emit pipeline builder factory methods. - Extends examples, catalogs, docs, and test coverage to include the new pattern (runtime, generator, DI import, and catalog coverage).
Reviewed changes
Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| test/PatternKit.Tests/Messaging/PipesAndFilters/PipesAndFiltersPipelineTests.cs | Adds TinyBDD runtime coverage for ordered execution and configuration validation. |
| test/PatternKit.Generators.Tests/PipesAndFiltersPipelineGeneratorTests.cs | Adds generator tests verifying emitted factory method and partial-host diagnostic. |
| test/PatternKit.Generators.Tests/AbstractionsAttributeCoverageTests.cs | Extends attribute coverage suite for the new generator attribute. |
| test/PatternKit.Examples.Tests/ProductionReadiness/PatternKitPatternCatalogTests.cs | Updates catalog expectations to include Pipes and Filters. |
| test/PatternKit.Examples.Tests/Messaging/FulfillmentPipesAndFiltersExampleTests.cs | Adds example + DI import tests for fluent and generated pipelines. |
| test/PatternKit.Examples.Tests/DependencyInjection/PatternKitExampleDependencyInjectionTests.cs | Verifies the new example is included in the aggregate DI registration. |
| src/PatternKit.Generators/Messaging/PipesAndFiltersPipelineGenerator.cs | Implements incremental generator emitting pipeline builder factory method. |
| src/PatternKit.Generators/AnalyzerReleases.Unshipped.md | Registers new diagnostic PKPF001. |
| src/PatternKit.Generators.Abstractions/Messaging/PipesAndFiltersAttributes.cs | Adds [GeneratePipesAndFiltersPipeline] attribute definition. |
| src/PatternKit.Examples/ProductionReadiness/PatternKitPatternCatalog.cs | Adds pattern catalog entry linking runtime/generator/docs/tests for Pipes and Filters. |
| src/PatternKit.Examples/ProductionReadiness/PatternKitExampleCatalog.cs | Adds example catalog descriptor for fulfillment Pipes and Filters example. |
| src/PatternKit.Examples/Messaging/FulfillmentPipesAndFiltersExample.cs | Adds fluent + generated example pipelines and DI registration helper. |
| src/PatternKit.Examples/DependencyInjection/PatternKitExampleServiceCollectionExtensions.cs | Registers the new Pipes and Filters example in AddPatternKitExamples(). |
| src/PatternKit.Core/Messaging/PipesAndFilters/PipesAndFiltersPipeline.cs | Adds runtime pipeline/filter/result types and async execution method. |
| docs/patterns/toc.yml | Adds Pipes and Filters to patterns TOC. |
| docs/patterns/messaging/pipes-and-filters.md | Documents the runtime API and behavior. |
| docs/guides/pattern-coverage.md | Updates coverage table to include Pipes and Filters + generator mapping. |
| docs/generators/toc.yml | Adds generator doc to generators TOC. |
| docs/generators/pipes-and-filters.md | Documents the generator attribute and diagnostic. |
| docs/generators/index.md | Adds a quick-start snippet for the new generator. |
| docs/examples/toc.yml | Adds fulfillment Pipes and Filters example to examples TOC. |
| docs/examples/fulfillment-pipes-and-filters.md | Documents the fulfillment example entrypoints and DI integration. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| foreach (var filter in _filters) | ||
| { | ||
| current = await filter.ApplyAsync(current, cancellationToken).ConfigureAwait(false); | ||
| executed.Add(new PipelineFilterResult(filter.Name, true)); | ||
| } |
Test Results 1 files 1 suites 2m 27s ⏱️ Results for commit c25d940. |
Code Coverage |
🔍 PR Validation ResultsVersion: `` ✅ Validation Steps
📊 ArtifactsDry-run artifacts have been uploaded and will be available for 7 days. This comment was automatically generated by the PR validation workflow. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #277 +/- ##
==========================================
+ Coverage 90.42% 95.96% +5.53%
==========================================
Files 368 372 +4
Lines 32666 32847 +181
Branches 4579 4597 +18
==========================================
+ Hits 29539 31520 +1981
+ Misses 1420 1327 -93
+ Partials 1707 0 -1707
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Summary
Closes #274
Validation
PipesAndFilters|FullyQualifiedNameAbstractionsAttributeCoverageTests /p:BuildProjectReferences=false /p:UseSharedCompilation=false