-
Notifications
You must be signed in to change notification settings - Fork 2
Resolve QueryKeyManager type errors by allowing nested key trees #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
kr4chinin
wants to merge
1
commit into
techwithmanuel:master
from
kr4chinin:fix/create-and-types-issues
Closed
Resolve QueryKeyManager type errors by allowing nested key trees #3
kr4chinin
wants to merge
1
commit into
techwithmanuel:master
from
kr4chinin:fix/create-and-types-issues
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
...safety and support nested key maps
Thanks so much for raising this and opening the pull request, @kr4chinin! I had already resolved the issue by the time I saw it, and some new features have been added since
I really appreciate the effort you put in and would love to see more of your contributions in the future
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
I was hyped about this package but when I first installed it and copy-pasted example from the
README.mdI've got a lot of type errors, I was not able to find a workaround and decided to research the code.All issues were looking approximately like this:
Example issuesI was encountering them even when I've installed this initial repo.
So what I've decided to change and why with a small help of Cursor:
Allow nested maps
createexpected a flatRecord<string, QueryKeyBuilder>, so{ users: { list: ... } }made TS thinkusersmust be a function, causing "'list' does not exist in type 'QueryKeyBuilder<[]>'".createaccepts aQueryKeyTree(object tree). I added a recursive register that descends into objects and registers any functions it finds. This enables nested namespaces likeadmin.users.list.Unify stored builder type
StoredQueryKeyBuilderof type(...args: unknown[]) => QueryKey. This erases arg specifics for storage, keeping runtime behavior intact while avoiding type incompatibilities.Support any builder arity
QueryKeyBuilderdefaulted to[](no args), so single-arg builders failed with "Target signature provides too few arguments."QueryKeyBuilderdefaults tounknown[], so builders with any number/types of args are assignable without casts.We can now define flat or nested key maps with builders of any arity, and TS no longer complains about unknown properties or argument count mismatches.
Also I've change all
anytounknownfor more semantic typisation.