Closed krisnye closed 12 years ago
My understanding of a PATCH is to apply a deterministic augmentation to some document/object. Negative indexes are relative to the current size of the array, that is to say the known length of the array. As an example, if Client A and Client B attempts to apply a patch at the same time with a different sized array locally.. a patch with a relative index would certainly work, but neither client would have a consistent representation of the document.
Clients should calculate patch documents from their current state of the document and the last known state of the document. If the patch fails to be applied (e.g. on the server), the client's job is to get the latest representation of resource and attempt to create a new patch (also known as optimistic concurrency).
To answer your request, I am not inclined to implement this feature simply because patch documents would more likely to be incompatible between other JSON-Patch implementations.
I know this isn't in the JSON-PATCH spec, but it should be.
If you add to an array with a negative index that should be relative to the end of the array, just like in the standard Array splice method. Your current code would handle this already if you simply removed the if (acc < 0) expression in add.
How else do you inform a patch to just add to the end of an existing array?