-
-**CSharpLibTemplateRepo** uses a more complicated branching model, but it gives you more control of the SDLC (Software Development Life Cycle). This branching model allows a clear purpose for adding features, bug fixes, preview releases, QA releases and standard releases.
-
-As a standard contributor, all you have to worry about is creating feature branches and creating pull requests to merge those branches into the develop branch. The rest is taken care of by a solid CI/CD system as well as the maintainers of the project. Only the organization owner and designated team members will manage the release process. So, contributing is very easy!!🥳
-
-**_NOTE_:** As you know, everything in software is subject to change, including the branching model. If too many issues or complications occur with the current branching model and/or release process, it will be changed accordingly.
-
----
-
-
Branches Used
-
-
-
Master Branch
-
-Long living branch that represents stable production versions of **CSharpLibTemplateRepo**:
-- **Branch Syntax:** master
-- **Branches That Can Merge Into Master:**
- - Release branches via pull request
-- **Created From:** none
-- **Merges Into:** none
-- **Environment:** Production
-- **CI/CD:**
- - Upon pull request completion, the release branches are merged into the master branch and are automatically built, tested, and released to production as a nuget package.
- - The testing application is attached as an artifact to the release branch for the purpose of testing.
-
-
-
Develop Branch
-
-Long living branch that represents the most current development in progress:
-- **Branch Syntax:** develop
-- **Branches That Can Merge Into Develop Branch:**
- - Feature branches via pull requests
-- **Created From:** none
-- **Merges Into:** none
-- **Environment:** QA
-- **CI/CD:**
- - Automatically built, tested, and deployed as a QA release upon pull request completion.
- - The testing application is attached as an artifact to the QA release for the purpose of testing.
-
-
-
Feature Branches
-
-Short living branch where a developer's work will be performed and merged back into the develop branch via a pull request:
-- **Branch Syntax:** feature/\-\
- - Example: feature/123-my-branch
-- **Branches That Can Merge Into Feature Branches:** None
-- **Created From:** develop
-- **Merges Into:** develop
-- **Environment:** none
-- **CI/CD:**
- - Build and unit test status checks are automatically run for each change to the pull request.
- - All status checks must pass for a pull request to be completed.
-
-
-
Hotfix Branches
-
-Short lived branch where urgent bug fixes or changes will be performed:
-
-**_NOTE_:** Hotfix branches should be carefully reviewed and only performed when the software is considered **broken** and/or **unusable**. Changes to this branch should be absolutely minimal and merged directly into the master branch via a pull request.
-- **Branch Syntax:** hotfix/\-\
- - Example: hotfix/123-my-hotfix
-- **Branches That Can Merge Into Hotfix Branches:** none
-- **Created From:** master
-- **Merges Into:** master
-- **Environment:** none
-- **CI/CD:**
- - Build and unit test status checks are automatically run for each change to the pull request.
- - All status checks must pass for a pull request to be completed.
-
-
-
Release Branches
-
-Represents features and/or bug fixes to be released as a production or preview release:
-- **Branch Syntax:** release/v\.\.\
- - Example: release/v1.2.3
-- **Branches That Can Merge Into Release Branches:**
- - Preview branches via pull request
-- **Created From:** develop branch
-- **Merged Into:** develop and master branches
-- **Environment:** none
-- **CI/CD:**
- - Can be a major, minor, or patch release.
- - Can be used for preview releases.
- - Preview releases are only done manually.
- - Build, unit test, and version validation status checks are automatically run for each change to the pull request.
- - All status checks must pass for a pull request to be completed.
- - When a release is performed, 2 pull requests are created. One for a merge into the develop branch and one for a merge into the master branch.
- - Upon merging into the develop (QA) branch, a QA release will be automatically performed.
- - Upon merging into the master (Production) branch, a production release will be automatically performed.
-
-
-
Preview Branches
-
-Holds minimal changes for the purpose of upcoming production release stability.
-
-**_NOTE_:** Used for refactoring, bug fixes, and changes related to making an upcoming release more stable and to give users the chance to utilize the software and provide feedback before a major release. Introducing major features outside of the changes in the upcoming release are not allowed. These kinds of changes are performed on the preview branch by using preview feature branches.
-- **Branch Syntax:** preview/v\.\.\-preview.\
- - Example: preview/v1.2.3-preview.4
-- **Branches That Can Merge Into Preview Branches:** preview feature branches
-- **Created From:** release branches
-- **Merged Into:** release branches
-- **Environment:** none
-- **CI/CD:**
- - The major, minor, and patch numbers of the preview branch and the release branch it was created from, must match.
- - Build, unit test, and version validation status checks are automatically run for each change to the pull request.
- - All status checks must pass for a pull request to be completed.
-
-
-
Preview Feature Branches
-
-Where a developer's work will be performed when implementing features/changes for a preview branch via a pull request.
-- **Branch Syntax:** preview/feature/\-\
- - Example: preview/feature/123-my-branch
-- **Branches That Can Merge Into Preview Feature Branches:** none
-- **Created From:** preview branches
-- **Merged Into:** preview branches
-- **Environment:** none
-- **CI/CD:**
- - Build and unit test status checks are automatically run for each change to the pull request.
- - All status checks must pass for a pull request to be completed.
-
----
-
-
+
+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. [#1](https://github.com/KinsonDigital/Carbonate/issues/1) - This is the initial implementation and release of this library.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.10.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.10.md
new file mode 100644
index 0000000..6062334
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.10.md
@@ -0,0 +1,20 @@
+
+
+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](https://github.com/KinsonDigital/Carbonate/issues/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`
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.11.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.11.md
new file mode 100644
index 0000000..c667fd9
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.11.md
@@ -0,0 +1,23 @@
+
+
+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](https://github.com/KinsonDigital/Carbonate/issues/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](https://github.com/KinsonDigital/Carbonate/issues/55) - Added a small performance improvement to the `PullReactable.Pull()` methods.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.12.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.12.md
new file mode 100644
index 0000000..c67bfc9
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.12.md
@@ -0,0 +1,36 @@
+
+
+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](https://github.com/KinsonDigital/Carbonate/issues/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.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.13.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.13.md
new file mode 100644
index 0000000..6ebfa50
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.13.md
@@ -0,0 +1,36 @@
+
+
+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](https://github.com/KinsonDigital/Carbonate/issues/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](https://github.com/KinsonDigital/Carbonate/issues/71) - Changed all of the return types for the following interfaces and classes to nullable.
+ - `PullReactable`
+ - `IPullable`
+ - `RespondReactor`
+ - `IPullable`
+ - `PullReactable`
+
+---
+
+
Other 🪧
+
(Includes anything that does not fit into the categories above)
+
+1. [#67](https://github.com/KinsonDigital/Carbonate/issues/67) - Added XML code documentation to the NuGet package.
+ >💡This will provide documentation in the IDE during development.
+2. [#66](https://github.com/KinsonDigital/Carbonate/issues/66) - Updated badges in the project's README file.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.14.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.14.md
new file mode 100644
index 0000000..d06cb03
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.14.md
@@ -0,0 +1,27 @@
+
+
+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](https://github.com/KinsonDigital/Carbonate/issues/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()`
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md
new file mode 100644
index 0000000..e28a439
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.2.md
@@ -0,0 +1,33 @@
+
+
+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. [#9](https://github.com/KinsonDigital/Carbonate/issues/9) - Added a parameterless constructor to the `Reactable` class.
+ >💡This was added to use the default internal `ISerializer` implementation for passing messages.
+
+---
+
+
Internal Changes ⚙️
+
(Changes that do not affect users. Not breaking changes, new features, or bug fixes.)
+
+1. [#10](https://github.com/KinsonDigital/Carbonate/issues/10) - Updated the [CICD](https://github.com/KinsonDigital/CICD) build system from version _**v1.0.0-preview.14**_ to _**v1.0.0-preview.16**_
+
+---
+
+
Other 🪧
+
(Includes anything that does not fit into the categories above)
+
+1. [#7](https://github.com/KinsonDigital/Carbonate/issues/7) - Fixed various grammar issues throughout the code base's code documentation.
+2. [#7](https://github.com/KinsonDigital/Carbonate/issues/7) - Changed release builds to use non-indented JSON serialization for a small performance improvement.
+3. [#6](https://github.com/KinsonDigital/Carbonate/issues/6) - Changed the project logo icon in the README file for the NuGet package to use the light mode version for better visibility.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md
new file mode 100644
index 0000000..a7c71f2
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.3.md
@@ -0,0 +1,16 @@
+
+
+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. [#16](https://github.com/KinsonDigital/Carbonate/issues/16) - Fixed a bug where the `IMessage.GetData()` would always return `null`.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md
new file mode 100644
index 0000000..78a50e5
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.4.md
@@ -0,0 +1,16 @@
+
+
+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. [#20](https://github.com/KinsonDigital/Carbonate/issues/20) - Fixed a bug where only half of the total unsubscriptions were being unsubscribed.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md
new file mode 100644
index 0000000..01447d8
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.5.md
@@ -0,0 +1,17 @@
+
+
+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. [#24](https://github.com/KinsonDigital/Carbonate/issues/24) - Changed the name of the `Reactable.Push()` method overloads. This was done to improve overloaded method resolution.
+ >💡These methods are not overloaded anymore. One of them has bee named to `PushData()` and the other to `PushMessage()`.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.6.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.6.md
new file mode 100644
index 0000000..936711e
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.6.md
@@ -0,0 +1,26 @@
+
+
+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. [#29](https://github.com/KinsonDigital/Carbonate/issues/29) - Added a new method with the name `Push()` to the `IReactable` interface and `Reactable` class.
+ >💡This new method is for pushing a notification without any data.
+2. [#29](https://github.com/KinsonDigital/Carbonate/issues/29) - Added a new parameter to the `Reactor` class constructor.
+ >💡This is the implementation to invoke when the new `IReactable.Push()` method is invoked.
+
+---
+
+
Internal Changes ⚙️
+
(Changes that do not affect users. Not breaking changes, new features, or bug fixes.)
+
+1. [#29](https://github.com/KinsonDigital/Carbonate/issues/29) - Added integration and unit tests
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.7.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.7.md
new file mode 100644
index 0000000..ea868e2
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.7.md
@@ -0,0 +1,16 @@
+
+
+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. [#33](https://github.com/KinsonDigital/Carbonate/issues/33) - Fixed a bug where the `Reactable.UnsubscribeAll()` method was not unsubscribing all of the `IReactor` subscriptions.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.8.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.8.md
new file mode 100644
index 0000000..18bd19d
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.8.md
@@ -0,0 +1,55 @@
+
+
+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. [#43](https://github.com/KinsonDigital/Carbonate/issues/43) - Added an exception to the `Reactable` class when invoking the methods below after disposal.
+ >💡This gives the benefit of letting the user know what is expected after using the object after invoking `Reactable.Dispose()`.
+ - `Reactable.Subscribe()`
+ - `Reactable.Push()`
+ - `Reactable.PushData()`
+ - `Reactable.PushMessage()`
+ - `Reactable.Unsubscribe()`
+ - `Reactable.UnsubscribeAll()`
+2. [#39](https://github.com/KinsonDigital/Carbonate/issues/39) - Added a new property named `Name` to the `IReactable` interface and `Reactable` class.
+ >💡This is used to help with debugging and personal identification.
+
+ >⚠️This is not used in anyway to identify unique `Reactors` subscribed to the `Reactable`. That is the purpose of the `EventId` property.
+3. [#39](https://github.com/KinsonDigital/Carbonate/issues/39) - Added a default implementation of the `Reactor.ToString()` method that shows the name of the `Reactor` combined with the `EventId`
+ >💡If a name is used, the format will be _**'\ - \'**_ and _**'\'**_ if no name is used.
+
+---
+
+
Bug Fixes 🐛
+
+1. [#41](https://github.com/KinsonDigital/Carbonate/issues/41) - Fixed the following bugs:
+ - Fixed a bug where the `Reactable.Unsubscribe()` method was not removing the subscription from the internal subscription list.
+ - Fixed a bug where a premature unsubscription in `OnNext()` implementation was throwing an exception when invoking the `Reactable.Push()` method.
+ - Fixed a bug where a premature unsubscription in `OnNext()` implementation was throwing an exception when invoking the `Reactable.PushData()` method.
+ - Fixed a bug where a premature unsubscription in `OnNext()` implementation was throwing an exception when invoking the `Reactable.PushMessage()` method.
+ - Fixed a bug where a premature unsubscription in `OnComplete()` implementation was throwing an exception when invoking the `Reactable.Unsubscribe()` method.
+ - Fixed a bug where a premature unsubscription in `OnComplete()` implementation was throwing an exception when invoking the `Reactable.UnsubscribeAll()` method.
+2. [#40](https://github.com/KinsonDigital/Carbonate/issues/40) - Fixed a bug where invoking the `Reactable.Dispose()` method was throwing an exception.
+
+---
+
+
Breaking Changes 🧨
+
+1. [#41](https://github.com/KinsonDigital/Carbonate/issues/41) - Renamed the `ISerialize` interface to `ISerializeService`.
+
+---
+
+
Internal Changes ⚙️
+
(Changes that do not affect users. Not breaking changes, new features, or bug fixes.)
+
+1. [#37](https://github.com/KinsonDigital/Carbonate/issues/37) - Updated the [checkout](https://github.com/marketplace/actions/checkout) GitHub actions in all of the workflows from _**v2**_ to _**v3**_.
diff --git a/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.9.md b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.9.md
new file mode 100644
index 0000000..910276b
--- /dev/null
+++ b/Documentation/ReleaseNotes/PreviewReleases/Release-Notes-v1.0.0-preview.9.md
@@ -0,0 +1,77 @@
+
+
+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](https://github.com/KinsonDigital/Carbonate/issues/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](https://github.com/KinsonDigital/Carbonate/issues/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()`
+ - `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](https://github.com/KinsonDigital/Carbonate/issues/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](https://github.com/KinsonDigital/Carbonate/issues/47) - Added a new word to the dictionary for _**JetBrains Rider**_ users.
diff --git a/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md b/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md
index 8c4c64d..ab34316 100644
--- a/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md
+++ b/Documentation/ReleaseNotes/Production-Release-Notes-TEMPLATE.md
@@ -1,5 +1,5 @@
- [TODO: Add project name here] Production Release Notes - [add-prod-release-here]
+ Carbonate Production Release Notes - [add-prod-release-here]
New Features✨
diff --git a/LICENSE b/LICENSE.md
similarity index 96%
rename from LICENSE
rename to LICENSE.md
index 51b6230..3120b4a 100644
--- a/LICENSE
+++ b/LICENSE.md
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2022 Calvin Wilkinson
+Copyright (c) 2023 Calvin Wilkinson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index c1d7181..a203448 100644
--- a/README.md
+++ b/README.md
@@ -1,61 +1,51 @@
-
-
+[![Prod Release PR Status Check](https://img.shields.io/github/actions/workflow/status/KinsonDigital/Carbonate/prod-release-pr-status-check.yml?color=2F8840&label=Prod%20CI%20Build&logo=GitHub)](https://github.com/KinsonDigital/Carbonate/actions/workflows/prod-release-pr-status-check.yml)
+[![Prev Release PR Status Check](https://img.shields.io/github/actions/workflow/status/KinsonDigital/Carbonate/prev-release-pr-status-check.yml?color=2F8840&label=Preview%20CI%20Build&logo=GitHub)](https://github.com/KinsonDigital/Carbonate/actions/workflows/prev-release-pr-status-check.yml)
+[![Code Coverage](https://img.shields.io/codecov/c/github/KinsonDigital/Carbonate/preview?label=Code%20Coverage&logo=CodeCov&style=flat)](https://app.codecov.io/gh/KinsonDigital/Carbonate)
-
+[![Latest NuGet Release](https://img.shields.io/nuget/vpre/kinsondigital.Carbonate?label=Latest%20Release&logo=nuget)](https://www.nuget.org/packages/KinsonDigital.Carbonate)
+[![Nuget Downloads](https://img.shields.io/nuget/dt/KinsonDigital.Carbonate?color=0094FF&label=nuget%20downloads&logo=nuget)](https://www.nuget.org/stats/packages/KinsonDigital.Carbonate?groupby=Version)
+[![Good First Issues](https://img.shields.io/github/issues/kinsondigital/Carbonate/good%20first%20issue?color=7057ff&label=Good%20First%20Issues)](https://github.com/KinsonDigital/Carbonate/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
+[![Discord](https://img.shields.io/discord/481597721199902720?color=%23575CCB&label=chat%20on%20discord&logo=discord&logoColor=white)](https://discord.gg/qewu6fNgv7)
+
!! NOTICE !!
-We encourage you to use it and report back any issues and improvements you may have. That is what open source is all about. 🥳
+This library is still under development and is not at v1.0.0 yet!! However, all of the major features are available, so we encourage you to use the library and provide feedback. That is what open source is all about. 🥳
-
📖 About [TODO: add project name here]
+
📖 About Carbonate 📖
-
+**Carbonate** is a messaging library for various applications, using the observable pattern. It adds the ability to easily and reliably send messages to different parts and/or systems of an application.
-
🔧Maintainers
+
🙏🏼 Contributing 🙏🏼
-We currently have the following maintainers:
-- [Calvin Wilkinson](https://twitter.com/KDCoder) [](https://twitter.com/KDCoder) (GitHub Organization / Owner)
-- [Kristen Wilkinson](https://twitter.com/kswilky) [](https://twitter.com/KDCoder) (GitHub Organization / Documentation Maintainer / Tester)
+Interested in contributing? If so, click [here](https://github.com/KinsonDigital/.github/blob/master/docs/CONTRIBUTING.md) to learn how to contribute your time or [here](https://github.com/sponsors/KinsonDigital) if you are interested in contributing your funds via a one-time or recurring donation.
-
🙏🏼Contributing
+
🔧 Maintainers 🔧
-**[TODO: add project name here]** encourages and uses [Early Pull Requests](https://medium.com/practical-blend/pull-request-first-f6bb667a9b6). Please don't wait until you're finished with your work before creating a PR.
+[![twitter-logo](https://raw.githubusercontent.com/KinsonDigital/.github/master/Images/twitter-logo-16x16.svg)Calvin Wilkinson](https://twitter.com/KDCoder) (KinsonDigital GitHub Organization - Owner)
-1. Fork the repository.
-2. Create a feature branch following the feature branch section in the documentation [here](./Documentation/Branching.md).
-3. Add an empty commit to the new feature branch to start your work off.
- * Use this git command: `git commit --allow-empty -m "start work for issue #"`.
- * Example: `git commit --allow-empty -m "start work for issue #123"`.
-4. Once you've pushed a commit, open a [**draft pull request**](https://github.blog/2019-02-14-introducing-draft-pull-requests/). Do this **before** you actually start working.
-5. Make your commits in small, incremental steps with clear descriptions.
-6. All unit tests must pass before a PR will be completed.
-7. Make sure that the code follows the the coding standards.
- * Pay attention to the warnings in **Visual Studio**!!
- * Refer to the *.editorconfig* files in the code base for rules.
-8. Tag a maintainer when you're done and ask for a review!
+[![twitter-logo](https://raw.githubusercontent.com/KinsonDigital/.github/master/Images/twitter-logo-16x16.svg)Kristen Wilkinson](https://twitter.com/kswilky) (KinsonDigital GitHub Organization - Documentation Maintainer & Tester)
-If you have any questions, please reach out to a project maintainer.
-
Practices
+
🚔 Licensing and Governance 🚔
-- The code base is highly tested by using unit tests while maintaining a high level of code coverage. Manual testing is performed using the included testing application built specifically for manually testing the library. When contributing, make sure to add or adjust the unit tests appropriately regarding your changes and perform manual testing.
-- We use a combination of [StyleCop](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) and [Microsoft.CodeAnalysis.NetAnalyzers](https://github.com/dotnet/roslyn-analyzers) libraries for maintaining coding standards.
- - We understand that there are some exceptions to the rule and not all coding standards fit every situation. In these scenarios, contact a maintainer and lets discuss it!! Warnings can always be suppressed if need be.
-- We use [semantic versioning 2.0](https://semver.org/) for versioning.
-- Branching model below.
- - [Branching Diagram (GitHub Dark Mode)](./Documentation/Images/BranchingDiagram-DarkMode-v1.1.png)
- - [Branching Diagram (GitHub Light Mode)](./Documentation/Images/BranchingDiagram-LightMode-v1.1.png)
+