Preparation for adding a service manager to puter.js #810
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.
The service pattern has proven incredibly useful. This implements a new services registry for later use in puter.js, putting a lot of common functionality into
putility
where it can also be used in backend. Also in this PR is an implementation of a generic way to provide listenable events on a class (called "topics"), that lack of which has been a pain point up until now.These additions in
putility
also further established how traits are used. Using traits instead of imaginary interfaces will improve readability (specifically the ability to find what files/classes are involved in a particular behavior) as well as make name collisions with methods impossible..mixin()
is also now provided by TraitsFeature, which is effectively an implementation of mixins without the drawback of name collisions because it's working on top of traits.