Closed jerelmiller closed 1 month ago
Latest commit: 990b6554a068c4f04adb01e115ebbb028001c1df
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
Click here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR
While working on data masking for nested fragments, I stumbled on a potential pitfall with the existing solution; the data masking algorithm only retains exactly whats defined in the selection set. This means that unless
__typename
is defined in the fragment, this property was removed from the returned object. This is mostly ok if you're just working with the query and one level of fragments, but as you introduce nested fragments with data masking, this made it difficult to work with. If you forget to include__typename
with data masking enabled, this means thefrom
option passed touseFragment
/watchFragment
was invalid, so the value returned was empty. This could be solved in user-space by adding a__typename
selection in the fragment, but we don't ask our users to do that with queries, nor does usingwatchFragment
without masking behave this way today.This PR retains
__typename
when present regardless of whether its present in the original document or not.