mirror of
https://github.com/Start9Labs/patch-db.git
synced 2026-03-26 18:31:53 +00:00
Soundness and performance audit (17 fixes): - See AUDIT.md for full details and @claude comments in code Repo restructure: - Inline json-ptr and json-patch submodules as regular directories - Remove cbor submodule, replace serde_cbor with ciborium - Rename patch-db/ -> core/, patch-db-macro/ -> macro/, patch-db-macro-internals/ -> macro-internals/, patch-db-util/ -> util/ - Purge upstream CI/CD, bench, and release cruft from json-patch - Remove .gitmodules Test fixes: - Fix proptest doesnt_crash (unique file paths, proper close/cleanup) - Add PatchDb::close() for clean teardown Documentation: - Add README.md, ARCHITECTURE.md, CONTRIBUTING.md, CLAUDE.md, AUDIT.md - Add TSDocs to TypeScript client exports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
287 lines
4.7 KiB
JSON
287 lines
4.7 KiB
JSON
[
|
|
{
|
|
"comment": "Can revert add (replace key)",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": {
|
|
"baz": true
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "add",
|
|
"path": "/foo",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert add (insert into array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3]
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "add",
|
|
"path": "/foo/1",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert add (insert last element into array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3]
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "add",
|
|
"path": "/foo/-",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert remove (object)",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": {
|
|
"baz": true
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo"
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert remove (array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3]
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/1"
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert replace (replace key)",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": {
|
|
"baz": true
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "replace",
|
|
"path": "/foo",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert replace (replace array element)",
|
|
"doc": {
|
|
"foo": [1, 2, 3]
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "replace",
|
|
"path": "/foo/1",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert move (move into key)",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": {
|
|
"baz": true
|
|
}
|
|
},
|
|
"abc": {
|
|
"def": {
|
|
"ghi": false
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "move",
|
|
"from": "/abc",
|
|
"path": "/foo",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert move (move into array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3],
|
|
"abc": {
|
|
"def": {
|
|
"ghi": false
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "move",
|
|
"path": "/foo/1",
|
|
"from": "/abc"
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert move (move into last element of an array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3],
|
|
"abc": {
|
|
"def": {
|
|
"ghi": false
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "move",
|
|
"path": "/foo/-",
|
|
"from": "/abc"
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert copy (copy into key)",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": {
|
|
"baz": true
|
|
}
|
|
},
|
|
"abc": {
|
|
"def": {
|
|
"ghi": false
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "copy",
|
|
"from": "/abc",
|
|
"path": "/foo",
|
|
"value": false
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert copy (copy into array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3],
|
|
"abc": {
|
|
"def": {
|
|
"ghi": false
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "copy",
|
|
"path": "/foo/1",
|
|
"from": "/abc"
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
},
|
|
{
|
|
"comment": "Can revert copy (copy into last element of an array)",
|
|
"doc": {
|
|
"foo": [1, 2, 3],
|
|
"abc": {
|
|
"def": {
|
|
"ghi": false
|
|
}
|
|
}
|
|
},
|
|
"patch": [
|
|
{
|
|
"op": "copy",
|
|
"path": "/foo/-",
|
|
"from": "/abc"
|
|
},
|
|
{
|
|
"op": "remove",
|
|
"path": "/foo/bar"
|
|
}
|
|
],
|
|
"error": "invalid pointer"
|
|
}
|
|
]
|