Add factorizing support for converting duplicate add to copy operations #3
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.
Added simple logic to and convert subsequent duplicate value'd add operations to copy operations along with test cases. Only non-empty array and object add values are considered since using copy operations for single or simple values would not the reduce patch operation count and would obfuscate patches that otherwise might be trivial.
There is only one wrinkle with this implementation: adds that are appending values to the end of a list cannot be used for subsequent copies. This is because the value does not have a concrete path from which to copy, (the from path cannot be computed easily based on the diff data currently available). This case should be generally rare and probably is not worth writing special case code or abandoning the append path in general to make work. The new test cases include an example of this limitation.