json-joy
json-joy copied to clipboard
JSON CRDT Patch manipulations
Ability to compute manipulate patches:
- [x] Un-committed patch compaction
- [x] Compact operations within a single patch.
- [x] String inserts.
- [x] Combine non-commited patches.
- [x] Compact operations within a single patch.
- [ ] Patch exchange
- [ ] Method for converting clock vector to a serializable object
- [ ] Converting serializable vector clock back to a vector clock?
- [ ] Method for retrieving all patches from
Logwhich are logically more recent than the clock vector value.
- [ ] Cherry-picking
- [ ] Ability to extract operations from a
Patch. - [ ] Given a
Log, ability to find all causal ancestorPatches of a given set of operations.
- [ ] Ability to extract operations from a
- [ ] Reverse cherry-picking
- [ ] Find all future (forward)
Logpatches that depend on a givenPatch- This is potentially useful in undo/redo, to find frontier operations which already causally depend on the
Patchwhich is to be undone.
- This is potentially useful in undo/redo, to find frontier operations which already causally depend on the
- [ ] Find all future (forward)
- [ ] Compact deletions adjacent to inserts?
- Note: Cannot change insert IDs, due to possible future causal events.
Patch ..4082.234!4
├─ ins_str ..4082.234!1, obj = ..6089.213 { ..6089.216 ← " " }
├─ ins_str ..4082.235!1, obj = ..6089.213 { ..4082.234 ← "2" }
├─ ins_str ..4082.236!1, obj = ..6089.213 { ..4082.235 ← "\n" }
└─ del ..4082.237, obj = ..6089.213 { ..4082.236!1 }
- [ ] Compact adjacent string inserts right in the
Builderas thePatchis being built?