Skip to content

Releases: KinsonDigital/Carbonate

🚀Preview Release - v1.0.0-preview.18

04 Apr 06:41
42a22ac
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.18

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼

Bug Fixes 🐛

  1. #202 - Fixed a bug with null ref exceptions when using ReactableBase.UnsubscribeAll().

Dependency Updates 📦

  1. #201 - Updated dependency coverlet.msbuild to v6.0.2
  2. #200 - Updated dependency coverlet.collector to v6.0.2
  3. #199 - Updated dependency xunit to v2.7.0
  4. #199 - Updated dependency xunit.runner.visualstudio to v2.5.7
  5. #198 - Updated dependency nsubstitute.analyzers.csharp to v1.0.17
  6. #197 - Updated dependency microsoft.net.test.sdk to v17.9.0

🚀Preview Release - v1.0.0-preview.17

23 Jan 17:25
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.17

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼

New Features ✨

  1. #188 - Added a property which is a list of all the subscription names for all of the reactables.
    • The name of the property that was added is SubscriptionNames.
  2. #181 - Added ability to prevent unsubscription in all of the following notification delegates:
    • onOnReceive
    • onOnRespond
    • onOnReceiveRespond
  3. #159 - Created extension methods for all reactable types to easily create subscriptions.

Bug Fixes 🐛

  1. #187 - Fixed the following bugs:
    • Fixed a processing error in the TwoWay.PushPullReactable class.
    • Fixed a processing error in the OneWay.PullReactable class.
    • Fixed an issue where it was allowed to pull data while the OneWay.PullReactable was disposed.
    • Fixed an issue where it was allowed to push and pull data while the TwoWay.PushPullReactable was disposed.

Breaking Changes 🧨

  1. #188 - Introduced the following breaking changes:
    • Changed the IReactable<TSubscription>.SubscriptionIds property type from ReadOnlyCollection<Guid> to ImmutableArray<Guid>.
    • Changed the ReactableBase<TSubscription>.SubscriptionIds property type from ReadOnlyCollection<Guid> to ImmutableArray<Guid>.
  2. #187 - Introduced the following breaking changes:
    • Renamed the method parameter of type Guid for the following methods to the name id:
      • NonDirectional.IPushable.Push()
      • NonDirectional.PushReactable.Push()
      • OneWay.IPushable.Push()
      • OneWay.IPullable.Pull()
      • OneWay.PushReactable.Push()
      • OneWay.PullReactable.Pull()
      • TwoWay.IPushablePullable.PushPull()
      • TwoWay.PushPullReactable.PushPull()
    • Changed the type of the ReactableBase.Subscriptions property from ReadOnlyCollection<TSubscription> to ImmutableArray<TSubscription>.
    • Swapped the position of the parameters for the Push() method for the interface IPushable<TIn>.
    • Swapped the position of the parameters for the Push() method for the class PushReactable<TIn>.
    • Swapped the position of the parameters for the PushPull() method for the interface PushablePullable<TIn, TOut>.
    • Swapped the position of the parameters for the PushPull() method for the class PushPullReactable<TIn, TOut>.
  3. #159 - Introduced the following breaking changes:
    • Refactored the name of the BuildNonReceive() method to BuildNonReceiveOrRespond() in the interface ISubscriptionBuilder.
    • Refactored the name of the BuildNonReceive() method to BuildNonReceiveOrRespond() in the class SubscriptionBuilder.
    • Refactored the name of the BuildTwoWayRespond() method to BuildTwoWay() in the interface ISubscriptionBuilder.
    • Refactored the name of the BuildTwoWayRespond() method to BuildTwoWay() in the class SubscriptionBuilder.
    • Refactored the name of the IRespondSubscription interface to IReceiveRespondSubscription.
    • Refactored the name of the RespondSubscription class to ReceiveRespondSubscription.

Dependency Updates 📦

  1. #185 - Updated dotnet to v8
  2. #195 - Updated xunit to v2.6.6
  3. #178 - Updated xunit-runner.visualstudio to v2.5.6
  4. #193 - Updated actions/checkout action to v4
  5. #171 - Updated actions/setup-dotnet action to v4
  6. #177 - Updated kinsondigital/infrastructure action to v13.6.3
  7. #180 - Updated benchmarkdotnet to v0.12.13
  8. #167 - Updated microsoft.codeanalysis.netanalyzers to v8
  9. #166 - Updated microsoft.net.test.sdk to v17.8.0

Other 🪧

  1. #184 - Improved and updated the sonar scan status check.
  2. #161 - Updated the sync workflow.
  3. #127 - Improved the social preview & images.
  4. #187 - Added a small performance improvement when unsubscribing all of the reactables subscriptions when using the IReactable.Unsubscribe() implementation.

🚀Preview Release - v1.0.0-preview.16

14 Sep 09:12
d5ca1ca
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.16

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼

New Features ✨

  1. #150 - Add fluent API to help improve the readability and setup of reactable and subscription setup.
    • The fluent API types are located in a new namespace named Carbonate.Fluent. Use the types ReactableBuilder and SubscriptionBuilder.

Breaking Changes 🧨

  1. #150 - Introduced many public API improvements related to parameter order, class, interface, and param names. This was done to help improve the understanding and usage of the API. Updating your code base is pretty straightforward.
    • Renamed the TDataIn generic params in the entire codebase to TIn.
    • Renamed the TDataOut generic params in the entire codebase to TOut.
    • Renamed the Carbonate.UniDirectional namespace to Carbonate.OneWay.
    • Renamed the Carbonate.BiDirectional namespace to Carbonate.TwoWay.
    • Renamed the Carbonate.Core.UniDirectional namespace to Carbonate.Core.OneWay.
    • Renamed the Carbonate.Core.BiDirectional namespace to Carbonate.Core.TwoWay.
    • Renamed the Carbonate.BiDirectional.IPullReactable interface to Carbonate.TwoWay.IPushPullReactable.
    • Renamed the Carbonate.BiDirectional.PullReactable class to Carbonate.TwoWay.PushPullReactable.
    • Renamed the Carbonate.BiDirectional.IPullable interface to Carbonate.TwoWay.IPushablePullable.
    • Renamed the ReceiveReactor constructor param named onReceiveData to onReceive.
    • Renamed the non-directional RespondReactor constructor param named onRespondData to onRespond.
    • Renamed the one-way RespondReactor<TDataIn> constructor param named onRespondData to onReceiveRespond.
    • Renamed the two-way RespondReactor<TDataOut, TDataIn> constructor param named onRespondData to onReceiveRespond.
    • Renamed the non-directional IReceiveReactor interface to IReceiveSubscription.
    • Renamed the non-directional ReceiveReactor class to ReceiveSubscription.
    • Renamed the one-way IReceiveReactor<TDataIn> interface to IReceiveSubscription<TIn>.
    • Renamed the one-way ReceiveReactor<TDataIn> class to ReceiveSubscription<TIn>.
    • Renamed the one-way IRespondReactor<TDataIn> interface to IRespondSubscription<TIn>.
    • Renamed the one-way RespondReactor<TDataIn> class to RespondSubscription<TIn>.
    • Renamed the one-way IRespondReactor<TDataIn, TDataOut> interface to IRespondSubscription<TIn, TOut>.
    • Renamed the one-way RespondReactor<TDataIn, TDataOut> class to RespondSubscription<TIn, TOut>.
    • Renamed the IReactor interface to ISubscription.
    • Renamed the IReactable.Reactors property to IReactable.Subscriptions.
    • Renamed the IReactable.Subscribe() method parameter named reactor to subscription.
    • Renamed the ReactableBase.Reactors property to ReactableBase.Subscriptions
    • Renamed the ReactableBase.Subscribe() method parameter named reactor to subscription.
    • Renamed ReactableBase class generic parameter from T to TSubscription.
    • Renamed the non-directional ReceiveSubscription constructor parameter eventId to id.
    • Renamed the one-way RespondSubscription<TOut> constructor parameter responded to id.
    • Renamed the two-way RespondSubscription<TIn, TOut> constructor parameter responded to id.
    • Renamed the SubscriptionBase constructor parameter eventId to id.
    • Swapped the parameter positions for parameters name and onReceive for the non-directional ReceiveSubscription constructor.
      • Used to be the ReceiveReactor class
    • Swapped the parameter positions for parameters name and onReceive for the one-way ReceiveSubscription<TIn> constructor.
      • Used to be the ReceiveReactor<TDataIn> class
    • Swapped the parameter positions for parameters name and onReceive for the one-way ReceiveSubscription<TIn> constructor.
      • Used to be the ReceiveReactor<TDataIn> class
    • Swapped the parameter positions for parameters name and onRespond for the one-way RespondSubscription<TOut> constructor.
      • Used to be the RespondReactor<TDataOut> class
    • Swapped the parameter positions for parameters name and onReceiveRespond for the two-way RespondSubscription<TIn, TOut> constructor.
      • Used to be the RespondReactor<TDataIn, TDataOut> class
    • Set the non-directional ReceiveSubscription class constructor parameter named onReceive to be non-nullable.
      • Used to be the ReceiveReactor class
    • Set the one-way ReceiveSubscription<TIn> class constructor parameter named onReceive to be non-nullable.
      • Used to be the ReceiveReactor<TDataIn> class
    • Set the one-way RespondSubscription<TOut> class constructor parameter named onRespond to be non-nullable.
      • Used to be the RespondReactor<TDataOut> class
    • Set the two-way RespondSubscription<TIn, TOut> class constructor parameter named onReceiveRespond to be non-nullable.
      • Used to be the RespondReactor<TDataIn, TDataOut> class

Dependency Updates 📦

  1. #149 - Updated dependency benchmarkdotnet to v0.13.8
  2. #147 - Updated actions/checkout action to v4
  3. #146 - Updated kinsondigital/infrastructure action to v13
  4. #145 - Updated dependency microsoft.net.test.sdk to v17.7.2
  5. #143 - Updated dependency microsoft.codeanalysis.netanalyzers to v7.0.4
  6. #141 - Updated dependency fluentassertions to v6.12.0
  7. #139 - Updated dependency microsoft.net.test.sdk to v17.7.1
  8. #138 - Updated kinsondigital/infrastructure action to v12
  9. #137 - Locked version of MOQ.
  10. #135 - Updated kinsondigital/infrastructure action to v11
  11. #133 - Updated dependency microsoft.net.test.sdk to v17.7.0
  12. #132 - Updated dependency benchmarkdotnet to v0.13.7

Other 🪧

  1. #151 - Fixed an issue with the sync status check bot.
  2. #142 - Adjusted workflow triggers.
  3. #130 - Adjusted release workflow input.
  4. #126 - Improved readme.

🚀Preview Release - v1.0.0-preview.15

31 Jul 17:54
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.15

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼

Dependency Updates 📦

  1. #123 - chore(deps): updated dependency coverlet.msbuild to v6
  2. #122 - chore(deps): updated dependency coverlet.collector to v6
  3. #121 - chore(deps): updated dependency xunit.runner.visualstudio to v2.5.0
  4. #120 - chore(deps): updated dependency xunit to v2.5.0
  5. #119 - chore(deps): updated dependency microsoft.net.test.sdk to v17.6.3
  6. #118 - chore(deps): updated dependency fluentassertions to v6.11.0
  7. #116 - chore(deps): updated kinsondigital/infrastructure action to v10.1.0
  8. #114 - chore(deps): updated dependency microsoft.codeanalysis.netanalyzers to v7.0.3
  9. #113 - chore(deps): updated dependency benchmarkdotnet to v0.13.6

Other 🪧

  1. #111 - Project and ci improvements
  2. #109 - Added workflows
  3. #107 - Setup renovate to use org level preset
  4. #103 - Created sonar scan status check workflow
  5. #101 - Removed solution items
  6. #99 - Updated deprecated step outputs
  7. #96 - Removed the contributing document
  8. #93 - Updated contributor covenant badge
  9. #92 - Added samples to readme
  10. #90 - Updated Readme
  11. #89 - Updated CICD to the latest version
  12. #87 - Fixed workflow step name
  13. #83 - Updated twitter link
  14. #81 - Removed repo related docs

🚀Preview Release - v1.0.0-preview.14

25 Jan 16:05
89322f1
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.14

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼


New Features ✨

  1. #77 - Changed the following classes:

    💡These changes were done to give users more control.

    • Removed the sealed keyword from the following classes:
      • NonDirectional.ReceiveReactor
      • UniDirectional.ReceiveReactor
      • UniDirectional.RespondReactor
      • BiDirectional.RespondReactor
    • Changed the following methods to virtual:
      • NonDirectional.ReceiveReactor.OnReceive()
      • UniDirectional.ReceiveReactor.OnReceive()
      • UniDirectional.RespondReactor.OnRespond()
      • BiDirectional.RespondReactor.OnRespond()

🚀Preview Release - v1.0.0-preview.13

18 Jan 05:06
80eb538
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.13

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼


Breaking Changes 🧨

  1. #71 - Removed the following types from the library:

    💡This was removed due to the types not being required anymore. Changes to the library have made these types not unnecessary.

    • IMessage
    • IResult
    • MessageFactory
    • ResultFactory
  2. #71 - Changed all of the return types for the following interfaces and classes to nullable.
    • PullReactable<TDataIn, TDataOut>
    • IPullable
    • RespondReactor
    • IPullable
    • PullReactable<TDataOut>

Other 🪧

(Includes anything that does not fit into the categories above)
  1. #67 - Added XML code documentation to the NuGet package.

    💡This will provide documentation in the IDE during development.

  2. #66 - Updated badges in the project's README file.

🚀Preview Release - v1.0.0-preview.12

10 Jan 08:57
3ba1eb4
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.12

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼

⚠️WARNING!!⚠️

This release contains MANY breaking changes and the list below is not exhaustive. The purpose of these changes was to enable better usability, flexibility, testability, and type safety.


Breaking Changes 🧨

  1. #59 - The following breaking changes were introduced:

    💡This list is not exhaustive

    • Created the following 6 namespaces for better organization and to help increase understanding of the data flow of the various classes and interfaces. The majority of the classes and interfaces in the library have been moved to these namespaces. Each class and interfaces was moved into the correct namespace that matches the direction that data may or may not flow.
      • Carbonate.Core.NonDirectional
      • Carbonate.Core.UniDirectional
      • Carbonate.Core.BiDirectional
      • Carbonate.NonDirectional
      • Carbonate.UniDirectional
      • Carbonate.BiDirectional
    • Moved the majority of the interfaces and classes in the library to one of the new interfaces mentioned above.
    • Added generic parameters to various interfaces and the associated class implementations.

🚀Preview Release - v1.0.0-preview.11

05 Jan 17:38
cca8d2c
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.11

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼


Bug Fixes 🐛

  1. #55 - Fixed a bug where all subscriptions with any response ID were being invoked for pull reactables.

Other 🪧

(Includes anything that does not fit into the categories above)
  1. #55 - Added a small performance improvement to the PullReactable.Pull() methods.

🚀Preview Release - v1.0.0-preview.10

05 Jan 07:43
7b7251a
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.10

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼


New Features ✨

  1. #51 - Added the 2 interfaces below:

    💡The classes PushReactable and PullReactable now inherit these interfaces respectively which
    give the ability to use the interface types instead of the class types and still get access to the push and pull methods. This also increases testability and mocking.

    • IPushReactable
    • IPullReactable

🚀Preview Release - v1.0.0-preview.9

04 Jan 18:43
30867b9
Compare
Choose a tag to compare
Pre-release

Carbonate Preview Release Notes - v1.0.0-preview.9

Quick Reminder

As with all software, there is always a chance for issues and bugs, especially for preview releases, which is why your input is greatly appreciated. 🙏🏼


New Features ✨

  1. #47 - Added the ability to Pull a message from a source. This is the opposite of the old functionality of doing Push. Think of this as requesting data from a source. The following new types have been added to the library to not only add this functionality but improve upon the original functionality.
    • IReceiver
    • IReceiveReactor
    • IResponder
    • IRespondReactor
    • IResult
    • IPullable
    • IPushable
    • PullReactable
    • PushReactable
    • ReactableBase
    • RespondReactor
    • ResultFactory

Breaking Changes 🧨

  1. #47 - Made various breaking changes throughout the library.
    • Renamed the following Reactor class constructor parameters:
      • Renamed the parameter onNext to onReceive.
      • Renamed the parameter onNextMsg to onReceiveMsg.
      • Renamed the parameter onCompleted to onUnsubscribe.
    • Renamed the interface IReactor.OnComplete() method (now the IReceiveReactor class), to OnUnsubscribe().
    • Renamed the class Reactor.OnComplete() method (now the ReceiveReactor class), to OnUnsubscribe().
    • Renamed the class Reactor to ReceiveReactor.
    • Renamed the class IReactor to IReceiveReactor.
    • Added a class-level generic to the IReactable interface.

      💡This new generic is constrained to the interface IReactor.

    • Moved the following methods in the IReactable interface to the new IPushable interface:
      • Push()
      • PushData<T>()
      • PushMessage()
    • Renamed the IReactable.EventIds property to SubscriptionIds.
    • The interface IReactor methods OnNext() and OnComplete() have been removed.
    • The interface IReactable
    • Renamed the Reactable class to PushReactable.
    • Moved the following types to the namespace Carbonate.Core:
      • IReactable
      • Reactable

        💡Now named PushReactable

      • IReactor
      • Reactor

        💡Now named ReceiveReactor

      • IMessage

Nuget/Library Updates 📦

  1. #47 - Updated, replaced, and removed various NuGet packages.
    • Replaced the NuGet package NSubstitute with Moq version 4.18.4

      💡Also updated all of the mocking code in the unit tests project to use Moq.

    • Updated the NuGet package Microsoft.NET.Test.Sdk from version v17.3.2 to v17.4.1 for the integration tests project.
    • Updated the NuGet package Microsoft.NET.Test.Sdk from version v17.4.0 to v17.4.1 for the unit tests project.

Other 🪧

(Includes anything that does not fit into the categories above)
  1. #47 - Added a new word to the dictionary for JetBrains Rider users.