{"id":13629652,"url":"https://github.com/DumplingsDevs/Pipelines","last_synced_at":"2025-04-17T09:35:38.870Z","repository":{"id":192685096,"uuid":"649867309","full_name":"DumplingsDevs/Pipelines","owner":"DumplingsDevs","description":"The most flexible mediation implementation in the .NET ecosystem with your own types","archived":false,"fork":false,"pushed_at":"2023-10-20T20:42:27.000Z","size":1538,"stargazers_count":44,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-05-22T04:34:03.428Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DumplingsDevs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-06-05T20:16:11.000Z","updated_at":"2024-03-04T20:13:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"6f3c2967-72b3-40b4-8525-868fb4dd4441","html_url":"https://github.com/DumplingsDevs/Pipelines","commit_stats":null,"previous_names":["dumplingsdevs/pipelines"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumplingsDevs%2FPipelines","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumplingsDevs%2FPipelines/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumplingsDevs%2FPipelines/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumplingsDevs%2FPipelines/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DumplingsDevs","download_url":"https://codeload.github.com/DumplingsDevs/Pipelines/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222974230,"owners_count":17066709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T22:01:15.734Z","updated_at":"2024-11-08T20:31:38.618Z","avatar_url":"https://github.com/DumplingsDevs.png","language":"C#","readme":"[![CI-main](https://github.com/DumplingsDevs/Pipelines/actions/workflows/build-and-test.yml/badge.svg?branch=main)](https://github.com/DumplingsDevs/Pipelines/actions/workflows/build-and-test.yml)\n[![NuGet](https://img.shields.io/nuget/v/DumplingsDevs.Pipelines.svg)](https://www.nuget.org/packages/DumplingsDevs.Pipelines/)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/pipelines_purple.svg#gh-light-mode-only\" alt=\"Pipelines\"/\u003e\n  \u003cimg src=\"docs/assets/pipelines_white.svg#gh-dark-mode-only\" alt=\"Pipelines\"/\u003e\n\u003c/p\u003e\n\n\n# 📢 What is Pipelines?\n\nWe believe that a good library should adapt to the application, not the other way. That is why Pipelines grants you the\nfreedom to create any number of mediators within your application. Each of them can be tailored to specific use cases,\nensuring maximum flexibility in programming. This is possible because:\n\n- Pipelines does not expose its types - it does not require implementing an interface or inheriting from a class. You\n  have absolute control over input data and operation results.\n- Each mediator built with Pipelines is independent and decoupled from the others.\n- To maintain the best performance, we utilized the Source Generator mechanism, which minimizes the use of reflection.\n- Decorator support allows you to add additional effects like validation, logging, or even using the Unit of Work\n  pattern. Additionally, it enables the construction of the Chain of Responsibility pattern.\n\n-----\n\n# 📦 Installation\n```\ndotnet add package DumplingsDevs.Pipelines\ndotnet add package DumplingsDevs.Pipelines.WrapperDispatcherGenerator\n```\n\n----\n\n# 📚 Documentation\n\nThe [Quick Start](docs/quick_start.md) section will allow you to quickly create your first Pipeline.\n\nIf you prefer learning through real examples, please check out the examples below:\n- [Multistep process](docs/process_pipeline.md)\n- [Commands, Queries and Domain Events Dispatching](docs/command_queries_events_example.md)\n\nIf you want to learn more, please read the articles below.\n\n- [Main Concepts](docs/main_concepts.md)\n- [Configuration](docs/configuration.md)\n- [Pipeline Cookbook](docs/pipeline_cookbook.md)\n- [Troubleshooting](docs/troubleshooting.md)\n- [Proxy vs Generated Dispatcher](docs/dispatcher_source_generator.md)\n- [Benchmarks](docs/benchmarks.md)\n- [ADR](docs/adr.md)\n- [Articles](docs/articles.md)\n\n---- \n\n# ⚠️ Limitations\n- Pipelines in which multiple handlers will be handled for one input must have a `Task` or `void` return type.\n- Cannot create a Pipeline that returns both generic and non-generic types.\n\n-----\n\n# 🛤 Roadmap\n- [ ] **ADR Documentation**: Record key architectural decisions made during implementation using ADRs.\n- [ ] **Code Cleanup**: Refine and tidy up the codebase post-MVP, paving the way for new feature development.\n- [ ] **Support for Nullable Results**: Add functionality to handle nullable result types.\n- [ ] **Multiple Inputs in Dispatcher**: Enhance the dispatcher handle method to accept a list of inputs instead of just one.\n- [ ] **Parallel Pipeline**: Introduce a pipeline to facilitate parallel execution of multiple handlers.\n- [ ] **Stream Pipeline**: Implement support for streaming pipelines.\n- [ ] **Decorator Performance Optimization**: Improve performance, especially concerning the use of `ActivatorUtilities.CreateInstance()`.\n\n-----\n\n# 🥟💡 The Dumplings Behind the Magic\nHey there! We're Dumplings Devs, made up of \u003ca href=\"https://pl.linkedin.com/in/matwroblewski\"\u003eMateusz Wróblewski\u003c/a\u003e and \u003ca href=\"https://pl.linkedin.com/in/kamil-bytner\"\u003eKamil Bytner\u003c/a\u003e. We're passionate about software and always up for a coding challenge. \n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/dumplings_purple.svg#gh-light-mode-only\" alt=\"DumplingsDevs\"/\u003e\n  \u003cimg src=\"docs/assets/dumplings_white.svg#gh-dark-mode-only\" alt=\"DumplingsDevs\"/\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":["Do not want to test 113 ( old ISourceGenerator )","Source Generators"],"sub_categories":["1. [ThisAssembly](https://ignatandrei.github.io/RSCG_Examples/v2/docs/ThisAssembly) , in the [EnhancementProject](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#enhancementproject) category","Patterns"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDumplingsDevs%2FPipelines","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDumplingsDevs%2FPipelines","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDumplingsDevs%2FPipelines/lists"}