Skip to content

Granularize LeanPipe with Funnel package distribution and reorganize Publisher structure#75

Merged
Dragemil merged 11 commits intomainfrom
task/granularize-leanpipe-with-funnel-distribution
Dec 11, 2025
Merged

Granularize LeanPipe with Funnel package distribution and reorganize Publisher structure#75
Dragemil merged 11 commits intomainfrom
task/granularize-leanpipe-with-funnel-distribution

Conversation

@Dragemil
Copy link
Copy Markdown
Collaborator

The main package LeanCode.Pipe, which included Funnel relevant stuff is being split into:

  • LeanCode.Pipe (but without Funnel stuff)
  • LeanCode.Pipe.Funnel.Instance - for stuff to deploy a Funnel Proxy instance
  • LeanCode.Pipe.Funnel.Publishing - for stuff to set up LeanPipe in a system that publishes with LeanPipe through Funnel
  • LeanCode.Pipe.Funnel.Core - a transitive package for the two above, shouldn't be used directly tbh

There shouldn't be any breaking change for anyone using LeanPipe.Pipe without the Funnel, but there are namespace changes in the Funnel Publishing package. Since basically no one relevant uses Funnel, I don't consider this a breaking change.

This PR doesn't change any functionality, even though the diff isn't that small.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Dec 11, 2025

Publisher Unit Test Results

 5 files  +1   5 suites  +1   22s ⏱️ ±0s
55 tests ±0  55 ✅ ±0  0 💤 ±0  0 ❌ ±0 
69 runs  ±0  69 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit a4f3e18. ± Comparison against base commit 0db5643.

This pull request removes 12 and adds 12 tests. Note that renamed tests count towards both.
LeanCode.Pipe.Tests.Funnel.ClaimsPrincipalJsonConverterTests ‑ ClaimsPrincipal_serializes_and_deserializes_correctly
LeanCode.Pipe.Tests.Funnel.FunnelledService.FunnelledSubscribeContextTests ‑ FunnelledSubscribeContext_allows_retrieving_keys_after_adding_to_group
LeanCode.Pipe.Tests.Funnel.FunnelledService.FunnelledSubscribeContextTests ‑ FunnelledSubscribeContext_allows_retrieving_keys_after_removing_from_group
LeanCode.Pipe.Tests.Funnel.FunnelledService.RegistrationConfiguratorExtensionsTests ‑ Allows_overriding_checking_topic_existence_consumer_definition
LeanCode.Pipe.Tests.Funnel.FunnelledService.RegistrationConfiguratorExtensionsTests ‑ Allows_overriding_default_subscriber_consumer_definition
LeanCode.Pipe.Tests.Funnel.FunnelledService.RegistrationConfiguratorExtensionsTests ‑ Registers_consumer_for_checking_topic_existence
LeanCode.Pipe.Tests.Funnel.FunnelledService.RegistrationConfiguratorExtensionsTests ‑ Registers_consumers_with_default_definition_for_all_correct_specified_topics
LeanCode.Pipe.Tests.Funnel.FunnelledService.RegistrationConfiguratorExtensionsTests ‑ Skips_registering_consumers_with_default_definition_for_incorrect_specified_topics
LeanCode.Pipe.Tests.Funnel.FunnelledService.RegistrationConfiguratorExtensionsTests ‑ Throws_on_incorrect_override_of_FunnelledSubscriberDefinition
LeanCode.Pipe.Tests.Funnel.Instance.RegistrationConfiguratorExtensionsTests ‑ Registers_required_types_for_the_funnel
…
LeanCode.Pipe.Funnel.Tests.Instance.RegistrationConfiguratorExtensionsTests ‑ Registers_required_types_for_the_funnel
LeanCode.Pipe.Funnel.Tests.Publishing.FunnelledSubscribeContextTests ‑ FunnelledSubscribeContext_allows_retrieving_keys_after_adding_to_group
LeanCode.Pipe.Funnel.Tests.Publishing.FunnelledSubscribeContextTests ‑ FunnelledSubscribeContext_allows_retrieving_keys_after_removing_from_group
LeanCode.Pipe.Funnel.Tests.Publishing.RegistrationConfiguratorExtensionsTests ‑ Allows_overriding_checking_topic_existence_consumer_definition
LeanCode.Pipe.Funnel.Tests.Publishing.RegistrationConfiguratorExtensionsTests ‑ Allows_overriding_default_subscriber_consumer_definition
LeanCode.Pipe.Funnel.Tests.Publishing.RegistrationConfiguratorExtensionsTests ‑ Registers_consumer_for_checking_topic_existence
LeanCode.Pipe.Funnel.Tests.Publishing.RegistrationConfiguratorExtensionsTests ‑ Registers_consumers_with_default_definition_for_all_correct_specified_topics
LeanCode.Pipe.Funnel.Tests.Publishing.RegistrationConfiguratorExtensionsTests ‑ Skips_registering_consumers_with_default_definition_for_incorrect_specified_topics
LeanCode.Pipe.Funnel.Tests.Publishing.RegistrationConfiguratorExtensionsTests ‑ Throws_on_incorrect_override_of_FunnelledSubscriberDefinition
LeanCode.Pipe.Funnel.Tests.ServiceCollectionExtensionsTests ‑ Registers_required_basic_types_when_service_is_funnel
…

♻️ This comment has been updated with latest results.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR restructures the LeanCode.Pipe package by extracting Funnel-related functionality into separate packages: LeanCode.Pipe.Funnel.Core, LeanCode.Pipe.Funnel.Instance, and LeanCode.Pipe.Funnel.Publishing. The main package now contains only the core LeanPipe functionality without Funnel dependencies.

Key Changes:

  • Split Funnel functionality into three dedicated packages
  • Updated namespace from LeanCode.Pipe.Funnel.FunnelledService to LeanCode.Pipe.Funnel.Publishing
  • Reorganized test structure with dedicated Funnel.Tests directory
  • Updated CI/CD workflows to build and publish new packages

Reviewed changes

Copilot reviewed 50 out of 67 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
publisher/test/LeanCode.Pipe.Tests/LeanPipeServiceCollectionExtensionsTests.cs Removed Funnel-specific tests (moved to separate test project)
publisher/test/LeanCode.Pipe.Tests/LeanCode.Pipe.Tests.csproj Added references to new Funnel packages for testing
publisher/test/LeanCode.Pipe.Tests/ClaimsPrincipalJsonConverterTests.cs Updated namespace from LeanCode.Pipe.Tests.Funnel to LeanCode.Pipe.Tests
publisher/test/LeanCode.Pipe.IntegrationTests/TestApplicationFactory.cs Updated to use fully qualified App.Program references
publisher/test/LeanCode.Pipe.IntegrationTests/App/Program.cs Added explicit namespace and updated Funnel imports
publisher/test/LeanCode.Pipe.ClientIntegrationTestsApp/Program.cs Updated namespace from FunnelledService to Publishing
publisher/test/Funnel.Tests/** New scaling tests and test apps for Funnel functionality
publisher/src/LeanCode.Pipe/** Moved internal classes (TopicExtractor, SubscriptionExecutor, etc.) and keys to main package
publisher/src/Funnel/** New package structure (Core, Instance, Publishing)
.github/workflows/** Updated workflows to test and publish new Funnel packages
publisher/LeanCode.Pipe.sln Reorganized solution structure with nested folders

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/publisher_release.yml
Comment thread .github/workflows/publisher_release.yml
Comment thread .github/workflows/publisher_ci.yml
Copy link
Copy Markdown
Collaborator

@mishioo mishioo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to update the docs on using the funnel. Other than that :shipit:

@Dragemil
Copy link
Copy Markdown
Collaborator Author

It would be good to update the docs on using the funnel. Other than that :shipit:

Yeah, got it quite near in my backlog

@Dragemil Dragemil merged commit e7dddc2 into main Dec 11, 2025
5 checks passed
@Dragemil Dragemil deleted the task/granularize-leanpipe-with-funnel-distribution branch December 11, 2025 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants