fix(Subject): Limit Subject interface public accessibility #2233
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
This PR updates interface of
Subject
. I came to notice current Subject interface expose its properties too wide to public scope, any instance of Subject exposes state variables likeobservers
,isStopped
can be mutated. This PR limits those variables to inherited scope only, and expose it as readonly property.It is certainly breaking change since anyone have used those property to change Subject's state now it won't work - but not sure how popular usecase it'll be. (and is it recommended pattern?) For now, I've targeted this into master until gets reviewed and approved.
BREAKING CHANGE: if there's code change state of Subject via publicly exposed properties, it won't work anymore
Related issue (if exists):
Related note, is it worth #2232 to add
Subject:hasObservers()
interface or should recommend to useSubject::observers.length
and update migration guide?