feat(core/graphcache): Add support for client-side-only directive processing #3317
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.
Summary
When applied, this change alters
formatDocument
to return aFormattedNode
type mapping. This maps GraphQL AST nodes and specifically:_generated: true
flag on added__typename
fields so Graphcache can identify them as relevant only to introspection_directives: {...}
dictionary to selection nodes that contains a mapping of directive names to directive nodes for client-side directives"_"
underscoresThis will allow us to implement client-side directives in Graphcache as well as stabilise
formatDocument
to do more advanced processing of GraphQL ASTs.Set of changes
@urql/core
formatDocument
tocore/src/utils/formatDocument.ts
collectTypesFromResponse
tocollectTypenames
and move it tocore/src/utils/collectTypenames.ts
FormattedNode
type mapping forformatDocument
formatDocument
_generated: true
annotation to__typename
fields thatformatDocument
addshasChanged
checks informatDocument
@urql/exchange-graphcache
_generated: true
in cache reads_directives
map instead ofdirectives
list for@include
,@skip
and@defer
FormattedNode
AST nodes throughout the codebase