fix(mutator): match deep set/setIfMissing behavior #5048
Merged
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.
Description
There seems to be a few mismatches between
@sanity/mutator
and Content Lake:set
/setIfMissing
-patch targeting a deep key with missing parents will recursively create an object structure for it@sanity/mutator
, it will stop once it encounters a key that is not present in the document.This PR attempts to align the behavior with what Content Lake does. Please review carefully - my knowledge of the mutator is limited and there may be (edge) cases I have not considered.
Fixes SDX-772.
Edit: I see that arrays also gets overwritten in a similar vein as primitives, but I am not quite sure yet how to resolve it.
What to review
Notes for release