urql-graphql / urql

The highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow.
https://urql.dev/goto/docs
MIT License
8.6k stars 448 forks source link

fix(graphcache): Improve Graphcache resolver consistency #3336

Closed kitten closed 1 year ago

kitten commented 1 year ago

Summary

While looking at a code snippet, I found that we didn't come back to providing parent[info.fieldName] for scalar resolvers. This is an easy way of making this work. It does add a bit of overhead, but I think it's the only way to add this without a breaking change (and without doing a weird set/delete dance, which is likely to be slower)

The other issue is that info.parentFieldKey isn't consistently populated with the fieldKey (as is implied and documented) but with info.parentKey joined with the fieldKey, i.e. a full key.

This means that cache.resolve(parent, info.parentFieldKey) wouldn't work in resolvers, but would work in updaters.

Set of changes