~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/pds.js

An atproto PDS in JavaScript, for Cloudflare Workers and Node

0
0
main
41 lines · 1.5 KB Raw History
/**
 * 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',
];