chadtmiller.com/pds.js
An atproto PDS in JavaScript, for Cloudflare Workers and Node
0
0
/**
* Record types the reference PDS validates strictly, from its knownSchemas map
* in packages/pds/src/repo/prepare.ts. pds.js enforces them the same way — a
* record that fails validation against one of these is rejected, so pds.js
* refuses exactly what every other PDS refuses.
*
* published.js holds the lexicons for this list, so a write validates without
* touching the network. That copy is a cache with a TTL, not the authority:
* the resolver replaces each entry with the published document as it ages.
* Regenerate it with scripts/gen-bundled-lexicons.mjs.
*
* Anything outside this list is only advisory when resolved from the network:
* publishers' lexicons routinely lag the clients writing the records, and no
* other PDS rejects a write over a doc it had to go fetch. Operators can pass
* their own list as `enforce`, and schemas handed to the resolver up front are
* always enforced.
*
* @type {string[]}
*/
export const knownRecords = [
'app.bsky.actor.profile',
'app.bsky.actor.status',
'app.bsky.feed.generator',
'app.bsky.feed.like',
'app.bsky.feed.post',
'app.bsky.feed.postgate',
'app.bsky.feed.repost',
'app.bsky.feed.threadgate',
'app.bsky.graph.block',
'app.bsky.graph.follow',
'app.bsky.graph.list',
'app.bsky.graph.listblock',
'app.bsky.graph.listitem',
'app.bsky.graph.starterpack',
'app.bsky.graph.verification',
'app.bsky.labeler.service',
'app.bsky.notification.declaration',
'chat.bsky.actor.declaration',
'com.atproto.lexicon.schema',
'com.germnetwork.declaration',
];