chadtmiller.com/pds.js
An atproto PDS in JavaScript, for Cloudflare Workers and Node
'@pdsjs/core': patch
A commit's blocks are enough to check it. Sync 1.1 consumers (relays, tap,
jetstream, hydrant) undo a commit's ops on the new tree with only the blocks
it carries, and compare the root they reach with prevData. Putting back a
key that a delete removed splits the tree where the key goes, which reads
unchanged nodes beside it, and a commit carried only the nodes it created.
About one delete in five failed that check, and each consumer that failed it
fetched the whole repo with getRepo, all at once. On a Durable Object that
held the account for a minute or more, refusing every other request with
"Durable Object is overloaded".
createCommit now undoes its own ops (mstInvert, new in @pdsjs/core/mst)
and carries every existing node that reads, as well as the existing nodes
the ops read on the way. It warns when undoing does not reach prevData.