chadtmiller.com/pds.js
An atproto PDS in JavaScript, for Cloudflare Workers and Node
'@pdsjs/core': patch '@pdsjs/cloudflare': patch '@pdsjs/storage-sqlite': patch
A commit deletes the blocks it leaves unreachable: the tree nodes it replaced, the records it replaced or deleted that no other record shares, and the previous commit, as the reference PDS does. Until now every block was kept, so a deleted record stayed in storage, readable by its CID to anything with the account's storage, extensions included.
com.atproto.sync.getRepo then reads the block table a page at a time and
streams it, rather than walking the tree block by block and building the whole
CAR first. The first getRepo after upgrading sweeps the blocks stored before,
once, holding writes while it does. A rebuilt tree or an imported repo is swept
the same way.
com.atproto.sync.getRecord sends the path from the root to the record, not
every node of the tree.