An AT Protocol Personal Data Server written in JavaScript pdsjs.dev
pds atproto

refactor(core): move preferences and the firehose into handler modules master

Two small route surfaces, each reaching three members of the instance. formatFirehoseEvent stays reachable as this._firehose.formatFirehoseEvent because the sync-event path and the relay notification both call it. The Firehose banner in pds.js had been titled Blobs until the blob handlers moved out, which is why subscribeRepos and the frame format sat under it. Coverage: the firehose 4.8% -> 100% of statements, preferences 13.3% -> 100%. The firehose tests read each frame back apart, so the header and body are asserted per event type rather than as an opaque buffer. A correction to how I read the coverage report earlier: a file missing from the text table is not necessarily complete. xrpc-preferences.js was absent and I took that for 100%, but it was at 13.3%; the glob threshold that grouped it with xrpc-blob.js is what showed otherwise. Read the json when it matters. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>