feat: Expand tracking unused fields support to more cases #235
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.
Resolves #229
Resolves #224
Summary
Previously, the crawler tracking unused fields wasn't using the type checker to assist with its search of GraphQL data variables. This meant that we were carefully limiting the amount of cases we'd support.
However, as it's hard for us to account for every GraphQL client (that supports
TypedDocumentNode
) with every possible API (not just hooks, for example, or nested functions inside hooks), we now attempt to find a more general solution.This PR, when merged, adds a new primary method of discovering where a GraphQL document is used. This new method finds variables in-scope at the point the document is referenced and then matches the type of these variables against the type of the document.
When a match is found, we then know to start tracking field usage for the given variable.
Set of changes
result
and[result]
structures (as commonly returned by hooks)crawlScope
wasn't unwrapping destructuring patterns