fix: always return same object from client prop #18
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.
Stacked on #17
There was a bug where every time you access a client property e.g.
client.namespace
it would return a new Proxy object, which would leadto unexpected behaviour when accessing a client object, e.g.
client.namespace === client.namespace
would be false. It would alsocause a lot of garbage collection slowing things down (all those Proxy
objects need to be garbage collected).
This fix caches all the sub clients that are created when you access
properties. This could be seen as a memory leak because every time you
access a client property, the value is cached, but this is effectively
lazily building the API on the server side - as long as you don't call
huge numbers of non-existent properties on the client it won't take much
more memory than the server-side API.