@atproto/pds 0.5.34 → 0.5.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/account-manager/account-manager.d.ts +58 -7
  3. package/dist/account-manager/account-manager.d.ts.map +1 -1
  4. package/dist/account-manager/account-manager.js +152 -19
  5. package/dist/account-manager/account-manager.js.map +1 -1
  6. package/dist/account-manager/db/migrations/008-account-email-auth-factor.d.ts +9 -0
  7. package/dist/account-manager/db/migrations/008-account-email-auth-factor.d.ts.map +1 -0
  8. package/dist/account-manager/db/migrations/008-account-email-auth-factor.js +16 -0
  9. package/dist/account-manager/db/migrations/008-account-email-auth-factor.js.map +1 -0
  10. package/dist/account-manager/db/migrations/index.d.ts +2 -0
  11. package/dist/account-manager/db/migrations/index.d.ts.map +1 -1
  12. package/dist/account-manager/db/migrations/index.js +2 -0
  13. package/dist/account-manager/db/migrations/index.js.map +1 -1
  14. package/dist/account-manager/db/schema/account-email-auth-factor.d.ts +20 -0
  15. package/dist/account-manager/db/schema/account-email-auth-factor.d.ts.map +1 -0
  16. package/dist/account-manager/db/schema/account-email-auth-factor.js +2 -0
  17. package/dist/account-manager/db/schema/account-email-auth-factor.js.map +1 -0
  18. package/dist/account-manager/db/schema/email-token.d.ts +1 -1
  19. package/dist/account-manager/db/schema/email-token.d.ts.map +1 -1
  20. package/dist/account-manager/db/schema/email-token.js.map +1 -1
  21. package/dist/account-manager/db/schema/index.d.ts +2 -1
  22. package/dist/account-manager/db/schema/index.d.ts.map +1 -1
  23. package/dist/account-manager/db/schema/index.js.map +1 -1
  24. package/dist/account-manager/helpers/account-device.d.ts +4 -2
  25. package/dist/account-manager/helpers/account-device.d.ts.map +1 -1
  26. package/dist/account-manager/helpers/account.d.ts +4 -1
  27. package/dist/account-manager/helpers/account.d.ts.map +1 -1
  28. package/dist/account-manager/helpers/account.js +4 -1
  29. package/dist/account-manager/helpers/account.js.map +1 -1
  30. package/dist/account-manager/helpers/email-auth-factor.d.ts +46 -0
  31. package/dist/account-manager/helpers/email-auth-factor.d.ts.map +1 -0
  32. package/dist/account-manager/helpers/email-auth-factor.js +77 -0
  33. package/dist/account-manager/helpers/email-auth-factor.js.map +1 -0
  34. package/dist/account-manager/helpers/invite.d.ts +1 -0
  35. package/dist/account-manager/helpers/invite.d.ts.map +1 -1
  36. package/dist/account-manager/helpers/token.d.ts +4 -2
  37. package/dist/account-manager/helpers/token.d.ts.map +1 -1
  38. package/dist/account-manager/oauth-store.d.ts +4 -2
  39. package/dist/account-manager/oauth-store.d.ts.map +1 -1
  40. package/dist/account-manager/oauth-store.js +48 -14
  41. package/dist/account-manager/oauth-store.js.map +1 -1
  42. package/dist/actor-store/actor-store-reader.d.ts +3 -2
  43. package/dist/actor-store/actor-store-reader.d.ts.map +1 -1
  44. package/dist/actor-store/actor-store-reader.js +2 -2
  45. package/dist/actor-store/actor-store-reader.js.map +1 -1
  46. package/dist/actor-store/actor-store-transactor.d.ts +3 -2
  47. package/dist/actor-store/actor-store-transactor.d.ts.map +1 -1
  48. package/dist/actor-store/actor-store-transactor.js +1 -1
  49. package/dist/actor-store/actor-store-transactor.js.map +1 -1
  50. package/dist/actor-store/actor-store.d.ts +5 -4
  51. package/dist/actor-store/actor-store.d.ts.map +1 -1
  52. package/dist/actor-store/actor-store.js.map +1 -1
  53. package/dist/actor-store/record/reader.d.ts +5 -3
  54. package/dist/actor-store/record/reader.d.ts.map +1 -1
  55. package/dist/actor-store/record/reader.js +19 -8
  56. package/dist/actor-store/record/reader.js.map +1 -1
  57. package/dist/actor-store/record/transactor.d.ts +3 -1
  58. package/dist/actor-store/record/transactor.d.ts.map +1 -1
  59. package/dist/actor-store/record/transactor.js +3 -2
  60. package/dist/actor-store/record/transactor.js.map +1 -1
  61. package/dist/actor-store/repo/reader.d.ts +3 -1
  62. package/dist/actor-store/repo/reader.d.ts.map +1 -1
  63. package/dist/actor-store/repo/reader.js +3 -2
  64. package/dist/actor-store/repo/reader.js.map +1 -1
  65. package/dist/actor-store/repo/transactor.d.ts +3 -2
  66. package/dist/actor-store/repo/transactor.d.ts.map +1 -1
  67. package/dist/actor-store/repo/transactor.js +2 -2
  68. package/dist/actor-store/repo/transactor.js.map +1 -1
  69. package/dist/api/com/atproto/admin/getSubjectStatus.js +1 -1
  70. package/dist/api/com/atproto/admin/getSubjectStatus.js.map +1 -1
  71. package/dist/api/com/atproto/admin/updateAccountEmail.d.ts.map +1 -1
  72. package/dist/api/com/atproto/admin/updateAccountEmail.js +1 -4
  73. package/dist/api/com/atproto/admin/updateAccountEmail.js.map +1 -1
  74. package/dist/api/com/atproto/admin/updateSubjectStatus.js +1 -1
  75. package/dist/api/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  76. package/dist/api/com/atproto/server/activateAccount.d.ts.map +1 -1
  77. package/dist/api/com/atproto/server/activateAccount.js +3 -1
  78. package/dist/api/com/atproto/server/activateAccount.js.map +1 -1
  79. package/dist/api/com/atproto/server/createAccount.js +7 -2
  80. package/dist/api/com/atproto/server/createAccount.js.map +1 -1
  81. package/dist/api/com/atproto/server/createSession.d.ts.map +1 -1
  82. package/dist/api/com/atproto/server/createSession.js +8 -1
  83. package/dist/api/com/atproto/server/createSession.js.map +1 -1
  84. package/dist/api/com/atproto/server/deactivateAccount.d.ts +1 -1
  85. package/dist/api/com/atproto/server/deactivateAccount.d.ts.map +1 -1
  86. package/dist/api/com/atproto/server/deactivateAccount.js +11 -5
  87. package/dist/api/com/atproto/server/deactivateAccount.js.map +1 -1
  88. package/dist/api/com/atproto/server/getSession.d.ts.map +1 -1
  89. package/dist/api/com/atproto/server/getSession.js +1 -0
  90. package/dist/api/com/atproto/server/getSession.js.map +1 -1
  91. package/dist/api/com/atproto/server/refreshSession.d.ts.map +1 -1
  92. package/dist/api/com/atproto/server/refreshSession.js +1 -0
  93. package/dist/api/com/atproto/server/refreshSession.js.map +1 -1
  94. package/dist/api/com/atproto/server/updateEmail.d.ts.map +1 -1
  95. package/dist/api/com/atproto/server/updateEmail.js +45 -1
  96. package/dist/api/com/atproto/server/updateEmail.js.map +1 -1
  97. package/dist/auth-verifier.d.ts +1 -0
  98. package/dist/auth-verifier.d.ts.map +1 -1
  99. package/dist/auth-verifier.js +1 -0
  100. package/dist/auth-verifier.js.map +1 -1
  101. package/dist/config/secrets.d.ts +2 -1
  102. package/dist/config/secrets.d.ts.map +1 -1
  103. package/dist/config/secrets.js +25 -18
  104. package/dist/config/secrets.js.map +1 -1
  105. package/dist/context.d.ts +1 -1
  106. package/dist/context.d.ts.map +1 -1
  107. package/dist/context.js +82 -32
  108. package/dist/context.js.map +1 -1
  109. package/dist/index.d.ts +3 -3
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +2 -2
  112. package/dist/index.js.map +1 -1
  113. package/dist/lexicons/app/bsky/authFullApp.defs.d.ts.map +1 -1
  114. package/dist/lexicons/app/bsky/authFullApp.defs.js +10 -0
  115. package/dist/lexicons/app/bsky/authFullApp.defs.js.map +1 -1
  116. package/dist/lexicons/app/bsky/feed/defs.defs.d.ts +8 -0
  117. package/dist/lexicons/app/bsky/feed/defs.defs.d.ts.map +1 -1
  118. package/dist/lexicons/app/bsky/feed/defs.defs.js +2 -0
  119. package/dist/lexicons/app/bsky/feed/defs.defs.js.map +1 -1
  120. package/dist/lexicons/app/bsky/feed/getQuotes.defs.d.ts +6 -0
  121. package/dist/lexicons/app/bsky/feed/getQuotes.defs.d.ts.map +1 -1
  122. package/dist/lexicons/app/bsky/feed/getQuotes.defs.js +2 -0
  123. package/dist/lexicons/app/bsky/feed/getQuotes.defs.js.map +1 -1
  124. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.d.ts +3 -0
  125. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.d.ts.map +1 -0
  126. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.d.ts +65 -0
  127. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.d.ts.map +1 -0
  128. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.js +49 -0
  129. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.js.map +1 -0
  130. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.js +6 -0
  131. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.js.map +1 -0
  132. package/dist/lexicons/tools/ozone/inbox/defs.d.ts +2 -0
  133. package/dist/lexicons/tools/ozone/inbox/defs.d.ts.map +1 -0
  134. package/dist/lexicons/tools/ozone/inbox/defs.defs.d.ts +89 -0
  135. package/dist/lexicons/tools/ozone/inbox/defs.defs.d.ts.map +1 -0
  136. package/dist/lexicons/tools/ozone/inbox/defs.defs.js +73 -0
  137. package/dist/lexicons/tools/ozone/inbox/defs.defs.js.map +1 -0
  138. package/dist/lexicons/tools/ozone/inbox/defs.js +5 -0
  139. package/dist/lexicons/tools/ozone/inbox/defs.js.map +1 -0
  140. package/dist/lexicons/tools/ozone/inbox.d.ts +3 -0
  141. package/dist/lexicons/tools/ozone/inbox.d.ts.map +1 -0
  142. package/dist/lexicons/tools/ozone/inbox.js +6 -0
  143. package/dist/lexicons/tools/ozone/inbox.js.map +1 -0
  144. package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts +2 -0
  145. package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts.map +1 -1
  146. package/dist/lexicons/tools/ozone/queue/createQueue.defs.js +2 -0
  147. package/dist/lexicons/tools/ozone/queue/createQueue.defs.js.map +1 -1
  148. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts +4 -0
  149. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts.map +1 -1
  150. package/dist/lexicons/tools/ozone/queue/defs.defs.js +2 -0
  151. package/dist/lexicons/tools/ozone/queue/defs.defs.js.map +1 -1
  152. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts +3 -1
  153. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts.map +1 -1
  154. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js +3 -0
  155. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js.map +1 -1
  156. package/dist/lexicons/tools/ozone/report/defs.defs.d.ts +89 -9
  157. package/dist/lexicons/tools/ozone/report/defs.defs.d.ts.map +1 -1
  158. package/dist/lexicons/tools/ozone/report/defs.defs.js +20 -0
  159. package/dist/lexicons/tools/ozone/report/defs.defs.js.map +1 -1
  160. package/dist/lexicons/tools/ozone/report/getLiveStats.defs.d.ts +1 -1
  161. package/dist/lexicons/tools/ozone/report/getLiveStats.defs.d.ts.map +1 -1
  162. package/dist/lexicons/tools/ozone/report/getLiveStats.defs.js +1 -1
  163. package/dist/lexicons/tools/ozone/report/getLiveStats.defs.js.map +1 -1
  164. package/dist/lexicons/tools/ozone/report/refreshStats.defs.d.ts +1 -1
  165. package/dist/lexicons/tools/ozone/report/refreshStats.defs.d.ts.map +1 -1
  166. package/dist/lexicons/tools/ozone/report/refreshStats.defs.js +1 -1
  167. package/dist/lexicons/tools/ozone/report/refreshStats.defs.js.map +1 -1
  168. package/dist/lexicons/tools/ozone.d.ts +1 -0
  169. package/dist/lexicons/tools/ozone.d.ts.map +1 -1
  170. package/dist/lexicons/tools/ozone.js +1 -0
  171. package/dist/lexicons/tools/ozone.js.map +1 -1
  172. package/dist/mailer/index.d.ts +7 -1
  173. package/dist/mailer/index.d.ts.map +1 -1
  174. package/dist/mailer/index.js +12 -1
  175. package/dist/mailer/index.js.map +1 -1
  176. package/dist/mailer/templates/sign-in-auth-factor.js +43 -0
  177. package/dist/mailer/templates/sign-in-auth-factor.js.map +1 -0
  178. package/dist/mailer/templates.d.ts +2 -0
  179. package/dist/mailer/templates.d.ts.map +1 -1
  180. package/dist/mailer/templates.js +1 -0
  181. package/dist/mailer/templates.js.map +1 -1
  182. package/dist/pipethrough.d.ts.map +1 -1
  183. package/dist/pipethrough.js +9 -2
  184. package/dist/pipethrough.js.map +1 -1
  185. package/dist/read-after-write/util.d.ts.map +1 -1
  186. package/dist/read-after-write/util.js.map +1 -1
  187. package/package.json +19 -20
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport * as plc from '@did-plc/lib'\nimport type express from 'express'\nimport type { Redis } from 'ioredis'\nimport * as nodemailer from 'nodemailer'\nimport * as ui8 from 'uint8arrays'\nimport type * as undici from 'undici'\nimport { KmsKeypair, S3BlobStore } from '@atproto/aws'\nimport * as crypto from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { Client } from '@atproto/lex'\nimport {\n AccessTokenMode,\n JoseKey,\n LexResolver,\n OAuthProvider,\n} from '@atproto/oauth-provider/provider'\nimport { OAuthVerifier } from '@atproto/oauth-provider/verifier'\nimport type { BlobStore } from '@atproto/repo'\nimport {\n createServiceAuthHeaders,\n createServiceJwt,\n} from '@atproto/xrpc-server'\nimport { type Fetch, safeFetchWrap } from '@atproto-labs/fetch-node'\nimport { AccountManager } from './account-manager/account-manager.js'\nimport { OAuthStore } from './account-manager/oauth-store.js'\nimport { ScopeReferenceGetter } from './account-manager/scope-reference-getter.js'\nimport { ActorStore } from './actor-store/actor-store.js'\nimport { authPassthru, forwardedFor } from './api/proxy.js'\nimport {\n AuthVerifier,\n createPublicKeyObject,\n createSecretKeyObject,\n} from './auth-verifier.js'\nimport { BackgroundQueue } from './background.js'\nimport { BskyAppView } from './bsky-app-view.js'\nimport {\n type ServerConfig,\n type ServerEnvironment,\n type ServerSecrets,\n envToCfg,\n envToSecrets,\n readEnv,\n} from './config/index.js'\nimport { Crawlers } from './crawlers.js'\nimport { DidSqliteCache } from './did-cache/index.js'\nimport { DiskBlobStore } from './disk-blobstore.js'\nimport { events } from './events.js'\nimport { ImageUrlBuilder } from './image/image-url-builder.js'\nimport { fetchLogger, lexiconResolverLogger, oauthLogger } from './logger.js'\nimport { ServerMailer } from './mailer/index.js'\nimport { ModerationMailer } from './mailer/moderation.js'\nimport { buildProxyAgent } from './pipethrough.js'\nimport {\n LocalViewer,\n type LocalViewerCreator,\n} from './read-after-write/viewer.js'\nimport { getRedisClient } from './redis.js'\nimport { Sequencer } from './sequencer/index.js'\n\nexport type AppContextOptions = {\n actorStore: ActorStore\n blobstore: (did: string) => BlobStore\n localViewer: LocalViewerCreator\n mailer: ServerMailer\n moderationMailer: ModerationMailer\n didCache: DidSqliteCache\n idResolver: IdResolver\n plcClient: plc.Client\n accountManager: AccountManager\n sequencer: Sequencer\n backgroundQueue: BackgroundQueue\n redisScratch?: Redis\n crawlers: Crawlers\n bskyAppView?: BskyAppView\n moderationClient?: Client\n reportingClient?: Client\n entrywayClient?: Client\n entrywayAdminClient?: Client\n proxyAgent: undici.Dispatcher\n safeFetch: Fetch\n oauthProvider?: OAuthProvider\n authVerifier: AuthVerifier\n plcRotationKey: crypto.Keypair\n cfg: ServerConfig\n}\n\nexport class AppContext implements AsyncDisposable {\n public actorStore: ActorStore\n public blobstore: (did: string) => BlobStore\n public localViewer: LocalViewerCreator\n public mailer: ServerMailer\n public moderationMailer: ModerationMailer\n public didCache: DidSqliteCache\n public idResolver: IdResolver\n public plcClient: plc.Client\n public accountManager: AccountManager\n public sequencer: Sequencer\n public backgroundQueue: BackgroundQueue\n public redisScratch?: Redis\n public crawlers: Crawlers\n public bskyAppView?: BskyAppView\n public moderationClient: Client | undefined\n public reportingClient: Client | undefined\n public entrywayClient: Client | undefined\n public entrywayAdminClient: Client | undefined\n public proxyAgent: undici.Dispatcher\n public safeFetch: Fetch\n public authVerifier: AuthVerifier\n public oauthProvider?: OAuthProvider\n public plcRotationKey: crypto.Keypair\n public cfg: ServerConfig\n\n constructor(opts: AppContextOptions) {\n this.actorStore = opts.actorStore\n this.blobstore = opts.blobstore\n this.localViewer = opts.localViewer\n this.mailer = opts.mailer\n this.moderationMailer = opts.moderationMailer\n this.didCache = opts.didCache\n this.idResolver = opts.idResolver\n this.plcClient = opts.plcClient\n this.accountManager = opts.accountManager\n this.sequencer = opts.sequencer\n this.backgroundQueue = opts.backgroundQueue\n this.redisScratch = opts.redisScratch\n this.crawlers = opts.crawlers\n this.bskyAppView = opts.bskyAppView\n this.moderationClient = opts.moderationClient\n this.reportingClient = opts.reportingClient\n this.entrywayClient = opts.entrywayClient\n this.entrywayAdminClient = opts.entrywayAdminClient\n this.proxyAgent = opts.proxyAgent\n this.safeFetch = opts.safeFetch\n this.authVerifier = opts.authVerifier\n this.oauthProvider = opts.oauthProvider\n this.plcRotationKey = opts.plcRotationKey\n this.cfg = opts.cfg\n }\n\n static async fromEnv(\n env: ServerEnvironment = readEnv(),\n ): Promise<AppContext> {\n const cfg = envToCfg(env)\n const secrets = envToSecrets(env)\n return AppContext.fromConfig(cfg, secrets)\n }\n\n static async fromConfig(\n cfg: ServerConfig,\n secrets: ServerSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<AppContext> {\n // @TODO Implement using an AsyncDisposableStack\n\n const blobstore =\n cfg.blobstore.provider === 's3'\n ? S3BlobStore.creator({\n bucket: cfg.blobstore.bucket,\n region: cfg.blobstore.region,\n endpoint: cfg.blobstore.endpoint,\n forcePathStyle: cfg.blobstore.forcePathStyle,\n credentials: cfg.blobstore.credentials,\n uploadTimeoutMs: cfg.blobstore.uploadTimeoutMs,\n requestTimeoutMs: cfg.blobstore.requestTimeoutMs,\n })\n : DiskBlobStore.creator(\n cfg.blobstore.location,\n cfg.blobstore.tempLocation,\n )\n\n const mailTransport =\n cfg.email !== null\n ? nodemailer.createTransport(cfg.email.smtpUrl)\n : nodemailer.createTransport({ jsonTransport: true })\n\n const mailer = new ServerMailer(mailTransport, cfg.email, cfg.branding)\n\n const modMailTransport =\n cfg.moderationEmail !== null\n ? nodemailer.createTransport(cfg.moderationEmail.smtpUrl)\n : nodemailer.createTransport({ jsonTransport: true })\n\n const moderationMailer = new ModerationMailer(modMailTransport, cfg)\n\n /**\n * A fetch() function that protects against SSRF attacks, large responses &\n * known bad domains. This function can safely be used to fetch user\n * provided URLs (unless \"disableSsrfProtection\" is true, of course).\n *\n * @note **DO NOT** wrap `safeFetch` with any logging or other transforms as\n * this might prevent the use of explicit `redirect: \"follow\"` init from\n * working. See {@link safeFetchWrap}.\n */\n const safeFetch = safeFetchWrap({\n allowIpHost: false,\n allowImplicitRedirect: false,\n responseMaxSize: cfg.fetch.maxResponseSize,\n ssrfProtection: !cfg.fetch.disableSsrfProtection,\n\n fetch: function (input, init) {\n const method =\n init?.method ?? (input instanceof Request ? input.method : 'GET')\n const uri = input instanceof Request ? input.url : String(input)\n\n fetchLogger.info({ method, uri }, 'fetch')\n\n return globalThis.fetch.call(this, input, init)\n },\n })\n\n const didCache = new DidSqliteCache(\n cfg.db.didCacheDbLoc,\n cfg.identity.cacheStaleTTL,\n cfg.identity.cacheMaxTTL,\n cfg.db.disableWalAutoCheckpoint,\n )\n await didCache.migrateOrThrow()\n\n const idResolver = new IdResolver({\n plcUrl: cfg.identity.plcUrl,\n didCache,\n timeout: cfg.identity.resolverTimeout,\n backupNameservers: cfg.identity.handleBackupNameservers,\n fetch: safeFetch,\n })\n const plcClient = new plc.Client(cfg.identity.plcUrl)\n\n const backgroundQueue = new BackgroundQueue(undefined, { concurrency: 5 })\n const crawlers = new Crawlers(\n backgroundQueue,\n cfg.service.hostname,\n cfg.crawlers,\n )\n const sequencer = new Sequencer(\n cfg.db.sequencerDbLoc,\n crawlers,\n undefined,\n cfg.db.disableWalAutoCheckpoint,\n )\n const redisScratch = cfg.redis\n ? getRedisClient(cfg.redis.address, cfg.redis.password)\n : undefined\n\n const bskyAppView = cfg.bskyAppView\n ? new BskyAppView({\n ...cfg.bskyAppView,\n validateResponse: cfg.service.devMode,\n })\n : undefined\n\n const moderationClient = cfg.modService\n ? new Client(\n { service: cfg.modService.url },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n const reportingClient = cfg.reportService\n ? new Client(\n { service: cfg.reportService.url },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n const entrywayClient = cfg.entryway\n ? new Client(\n { service: cfg.entryway.url },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n const entrywayAdminClient =\n cfg.entryway && secrets.entrywayAdminToken\n ? new Client(\n {\n service: cfg.entryway.url,\n headers: {\n authorization: basicAuthHeader(\n 'admin',\n secrets.entrywayAdminToken,\n ),\n },\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n\n const jwtSecretKey = createSecretKeyObject(secrets.jwtSecret)\n const jwtPublicKey = cfg.entryway\n ? createPublicKeyObject(cfg.entryway.jwtPublicKeyHex)\n : null\n\n const imageUrlBuilder = new ImageUrlBuilder(\n cfg.service.hostname,\n bskyAppView,\n )\n\n const actorStore = new ActorStore(cfg.actorStore, {\n blobstore,\n backgroundQueue,\n })\n\n const plcRotationKey =\n secrets.plcRotationKey.provider === 'kms'\n ? await KmsKeypair.load({\n keyId: secrets.plcRotationKey.keyId,\n })\n : await crypto.Secp256k1Keypair.import(\n secrets.plcRotationKey.privateKeyHex,\n )\n\n const accountManager = new AccountManager(\n cfg,\n actorStore,\n idResolver,\n jwtSecretKey,\n mailer,\n sequencer,\n plcClient,\n plcRotationKey,\n )\n await accountManager.migrateOrThrow()\n\n const localViewer = LocalViewer.creator(\n accountManager,\n imageUrlBuilder,\n bskyAppView,\n )\n\n // An agent for performing HTTP requests based on user provided URLs.\n const proxyAgent = buildProxyAgent(cfg.proxy)\n\n const oauthProvider = cfg.oauth.provider\n ? new OAuthProvider({\n issuer: cfg.oauth.issuer,\n keyset: [await JoseKey.fromKeyLike(jwtSecretKey, undefined, 'HS256')],\n store: new OAuthStore(\n accountManager,\n actorStore,\n imageUrlBuilder,\n backgroundQueue,\n mailer,\n sequencer,\n plcClient,\n plcRotationKey,\n cfg.service.publicUrl,\n cfg.identity.recoveryDidKey,\n ),\n redis: redisScratch,\n dpopSecret: secrets.dpopSecret,\n inviteCodeRequired: cfg.invites.required,\n availableUserDomains: cfg.identity.serviceHandleDomains,\n hcaptcha: cfg.oauth.provider.hcaptcha,\n branding: cfg.oauth.provider.branding,\n safeFetch,\n lexResolver: new LexResolver({\n fetch: safeFetch,\n plcDirectoryUrl: cfg.identity.plcUrl,\n hooks: {\n onResolveAuthority: ({ nsid }) => {\n lexiconResolverLogger.debug(\n { nsid: nsid.toString() },\n 'Resolving lexicon DID authority',\n )\n // Override the lexicon did resolution to point to a custom PDS\n return cfg.lexicon.didAuthority\n },\n onResolveAuthorityResult({ nsid, did }) {\n lexiconResolverLogger.info(\n { nsid: nsid.toString(), did },\n 'Resolved lexicon DID',\n )\n },\n onResolveAuthorityError({ nsid, err }) {\n lexiconResolverLogger.error(\n { nsid: nsid.toString(), err },\n 'Lexicon DID resolution error',\n )\n },\n onFetchResult({ uri, cid }) {\n lexiconResolverLogger.info(\n { uri: uri.toString(), cid: cid.toString() },\n 'Fetched lexicon',\n )\n },\n onFetchError({ err, uri }) {\n lexiconResolverLogger.error(\n { uri: uri.toString(), err },\n 'Lexicon fetch error',\n )\n },\n },\n }),\n metadata: {\n protected_resources: [new URL(cfg.oauth.issuer).origin],\n },\n // If the PDS is both an authorization server & resource server (no\n // entryway), we can afford to check the token validity on every\n // request. This allows revoked tokens to be rejected immediately.\n // This also allows JWT to be shorter since some claims (notably the\n // \"scope\" claim) do not need to be included in the token.\n accessTokenMode: AccessTokenMode.stateful,\n\n getClientInfo(clientId) {\n return {\n isTrusted: cfg.oauth.provider?.trustedClients?.includes(clientId),\n }\n },\n onSignedUp({ account, data, clientId }) {\n events.accountCreated({\n source: 'oauth',\n did: account.did,\n clientId,\n invited: data.inviteCode != null,\n deactivated: false,\n })\n },\n onSignedIn({ account, clientId }) {\n events.signedIn({\n did: account.did,\n clientId,\n })\n },\n onAuthorized({ account, client }) {\n events.oauthAuthorized({\n did: account.did,\n clientId: client.id,\n clientFirstParty: client.isFirstParty,\n clientTrusted: client.isTrusted,\n clientConfidential: client.isConfidential,\n })\n },\n onTokenCreated({ account, client }) {\n events.sessionCreated({\n source: 'oauth',\n did: account.did,\n clientId: client.id,\n })\n },\n onTokenRefreshed({ account, client }) {\n events.sessionRefreshed({\n source: 'oauth',\n did: account.did,\n clientId: client.id,\n })\n },\n })\n : undefined\n\n const scopeRefGetter = entrywayClient\n ? new ScopeReferenceGetter(entrywayClient, redisScratch)\n : undefined\n\n const oauthVerifier: OAuthVerifier =\n oauthProvider ?? // OAuthProvider extends OAuthVerifier\n new OAuthVerifier({\n issuer: cfg.oauth.issuer,\n keyset: [await JoseKey.fromKeyLike(jwtPublicKey!, undefined, 'ES256K')],\n dpopSecret: secrets.dpopSecret,\n redis: redisScratch,\n onDecodeToken: async ({ payload, dpopProof }) => {\n // @TODO drop this once oauth provider no longer accepts DPoP proof with\n // query or fragment in \"htu\" claim.\n if (dpopProof?.htu.match(/[?#]/)) {\n oauthLogger.info(\n { htu: dpopProof.htu, client_id: payload.client_id },\n 'DPoP proof \"htu\" contains query or fragment',\n )\n }\n\n if (scopeRefGetter) {\n payload.scope = await scopeRefGetter.dereference(payload.scope)\n }\n\n return payload\n },\n })\n\n const authVerifier = new AuthVerifier(\n accountManager,\n idResolver,\n oauthVerifier,\n {\n publicUrl: cfg.service.publicUrl,\n jwtKey: jwtPublicKey ?? jwtSecretKey,\n adminPass: secrets.adminPassword,\n dids: {\n pds: cfg.service.did,\n entryway: cfg.entryway?.did,\n modService: cfg.modService?.did,\n },\n },\n )\n\n return new AppContext({\n actorStore,\n blobstore,\n localViewer,\n mailer,\n moderationMailer,\n didCache,\n idResolver,\n plcClient,\n accountManager,\n sequencer,\n backgroundQueue,\n redisScratch,\n crawlers,\n bskyAppView,\n moderationClient,\n reportingClient,\n entrywayClient,\n entrywayAdminClient,\n proxyAgent,\n safeFetch,\n authVerifier,\n oauthProvider,\n plcRotationKey,\n cfg,\n ...(overrides ?? {}),\n })\n }\n\n async appviewAuthHeaders(did: string, lxm: string) {\n assert(this.bskyAppView)\n return this.serviceAuthHeaders(did, this.bskyAppView.did, lxm)\n }\n\n async entrywayAuthHeaders(req: express.Request, did: string, lxm: string) {\n assert(this.cfg.entryway)\n const headers = await this.serviceAuthHeaders(\n did,\n this.cfg.entryway.did,\n lxm,\n )\n return forwardedFor(req, headers)\n }\n\n entrywayPassthruHeaders(req: express.Request) {\n return forwardedFor(req, authPassthru(req))\n }\n\n /**\n * A {@link Client} for a service URL that was resolved from a DID document,\n * i.e. a URL the PDS does not control. Routes the request through\n * {@link safeFetch}, which restricts it to https origins that resolve to\n * unicast addresses, and caps the response size. Lexicon validation follows\n * the service's dev mode, as it does for the AppView client.\n *\n * Any call built from a DID document's service endpoint must use this.\n */\n safeClient(service: string | URL): Client {\n return new Client(\n { service, fetch: this.safeFetch },\n {\n validateRequest: this.cfg.service.devMode,\n validateResponse: this.cfg.service.devMode,\n strictResponseProcessing: this.cfg.service.devMode,\n },\n )\n }\n\n async serviceAuthHeaders(did: string, aud: string, lxm: string) {\n const keypair = await this.actorStore.keypair(did)\n return createServiceAuthHeaders({\n iss: did,\n aud,\n lxm,\n keypair,\n })\n }\n\n async serviceAuthJwt(did: string, aud: string, lxm: string) {\n const keypair = await this.actorStore.keypair(did)\n return createServiceJwt({\n iss: did,\n aud,\n lxm,\n keypair,\n })\n }\n\n async destroy(): Promise<void> {\n try {\n await this.backgroundQueue.destroy()\n } finally {\n try {\n await this.sequencer.destroy()\n } finally {\n try {\n await this.accountManager.close()\n } finally {\n try {\n await this.redisScratch?.quit()\n } finally {\n await this.proxyAgent.destroy()\n }\n }\n }\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nconst basicAuthHeader = (username: string, password: string) => {\n const encoded = ui8.toString(\n ui8.fromString(`${username}:${password}`, 'utf8'),\n 'base64pad',\n )\n return `Basic ${encoded}`\n}\n\nexport default AppContext\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport * as plc from '@did-plc/lib'\nimport type express from 'express'\nimport type { Redis } from 'ioredis'\nimport * as nodemailer from 'nodemailer'\nimport * as ui8 from 'uint8arrays'\nimport type * as undici from 'undici'\nimport { KmsKeypair, S3BlobStore } from '@atproto/aws'\nimport * as crypto from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { Client } from '@atproto/lex'\nimport { parseCid } from '@atproto/lex-data'\nimport {\n AccessTokenMode,\n JoseKey,\n LexResolver,\n LexResolverError,\n OAuthProvider,\n} from '@atproto/oauth-provider/provider'\nimport { OAuthVerifier } from '@atproto/oauth-provider/verifier'\nimport type { BlobStore } from '@atproto/repo'\nimport {\n createServiceAuthHeaders,\n createServiceJwt,\n} from '@atproto/xrpc-server'\nimport { type Fetch, safeFetchWrap } from '@atproto-labs/fetch-node'\nimport { AccountManager } from './account-manager/account-manager.js'\nimport { OAuthStore } from './account-manager/oauth-store.js'\nimport { ScopeReferenceGetter } from './account-manager/scope-reference-getter.js'\nimport { ActorStore } from './actor-store/actor-store.js'\nimport { authPassthru, forwardedFor } from './api/proxy.js'\nimport {\n AuthVerifier,\n createPublicKeyObject,\n createSecretKeyObject,\n} from './auth-verifier.js'\nimport { BackgroundQueue } from './background.js'\nimport { BskyAppView } from './bsky-app-view.js'\nimport {\n type ServerConfig,\n type ServerEnvironment,\n type ServerSecrets,\n envToCfg,\n envToSecrets,\n readEnv,\n} from './config/index.js'\nimport { Crawlers } from './crawlers.js'\nimport { DidSqliteCache } from './did-cache/index.js'\nimport { DiskBlobStore } from './disk-blobstore.js'\nimport { events } from './events.js'\nimport { ImageUrlBuilder } from './image/image-url-builder.js'\nimport { fetchLogger, lexiconResolverLogger, oauthLogger } from './logger.js'\nimport { ServerMailer } from './mailer/index.js'\nimport { ModerationMailer } from './mailer/moderation.js'\nimport { buildProxyAgent } from './pipethrough.js'\nimport {\n LocalViewer,\n type LocalViewerCreator,\n} from './read-after-write/viewer.js'\nimport { getRedisClient } from './redis.js'\nimport { Sequencer } from './sequencer/index.js'\n\nexport type AppContextOptions = {\n actorStore: ActorStore\n blobstore: (did: string) => BlobStore\n localViewer: LocalViewerCreator\n mailer: ServerMailer\n moderationMailer: ModerationMailer\n didCache: DidSqliteCache\n idResolver: IdResolver\n plcClient: plc.Client\n accountManager: AccountManager\n sequencer: Sequencer\n backgroundQueue: BackgroundQueue\n redisScratch?: Redis\n crawlers: Crawlers\n bskyAppView?: BskyAppView\n moderationClient?: Client\n reportingClient?: Client\n entrywayClient?: Client\n entrywayAdminClient?: Client\n proxyAgent: undici.Dispatcher\n safeFetch: Fetch\n oauthProvider?: OAuthProvider\n authVerifier: AuthVerifier\n plcRotationKey: crypto.Keypair\n cfg: ServerConfig\n}\n\nexport class AppContext implements AsyncDisposable {\n public actorStore: ActorStore\n public blobstore: (did: string) => BlobStore\n public localViewer: LocalViewerCreator\n public mailer: ServerMailer\n public moderationMailer: ModerationMailer\n public didCache: DidSqliteCache\n public idResolver: IdResolver\n public plcClient: plc.Client\n public accountManager: AccountManager\n public sequencer: Sequencer\n public backgroundQueue: BackgroundQueue\n public redisScratch?: Redis\n public crawlers: Crawlers\n public bskyAppView?: BskyAppView\n public moderationClient: Client | undefined\n public reportingClient: Client | undefined\n public entrywayClient: Client | undefined\n public entrywayAdminClient: Client | undefined\n public proxyAgent: undici.Dispatcher\n public safeFetch: Fetch\n public authVerifier: AuthVerifier\n public oauthProvider?: OAuthProvider\n public plcRotationKey: crypto.Keypair\n public cfg: ServerConfig\n\n constructor(opts: AppContextOptions) {\n this.actorStore = opts.actorStore\n this.blobstore = opts.blobstore\n this.localViewer = opts.localViewer\n this.mailer = opts.mailer\n this.moderationMailer = opts.moderationMailer\n this.didCache = opts.didCache\n this.idResolver = opts.idResolver\n this.plcClient = opts.plcClient\n this.accountManager = opts.accountManager\n this.sequencer = opts.sequencer\n this.backgroundQueue = opts.backgroundQueue\n this.redisScratch = opts.redisScratch\n this.crawlers = opts.crawlers\n this.bskyAppView = opts.bskyAppView\n this.moderationClient = opts.moderationClient\n this.reportingClient = opts.reportingClient\n this.entrywayClient = opts.entrywayClient\n this.entrywayAdminClient = opts.entrywayAdminClient\n this.proxyAgent = opts.proxyAgent\n this.safeFetch = opts.safeFetch\n this.authVerifier = opts.authVerifier\n this.oauthProvider = opts.oauthProvider\n this.plcRotationKey = opts.plcRotationKey\n this.cfg = opts.cfg\n }\n\n static async fromEnv(\n env: ServerEnvironment = readEnv(),\n overrides?: Partial<AppContextOptions>,\n ): Promise<AppContext> {\n const cfg = envToCfg(env)\n const secrets = envToSecrets(env)\n return AppContext.fromConfig(cfg, secrets, overrides)\n }\n\n static async fromConfig(\n cfg: ServerConfig,\n secrets: ServerSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<AppContext> {\n // @TODO Implement using an AsyncDisposableStack\n\n const blobstore =\n cfg.blobstore.provider === 's3'\n ? S3BlobStore.creator({\n bucket: cfg.blobstore.bucket,\n region: cfg.blobstore.region,\n endpoint: cfg.blobstore.endpoint,\n forcePathStyle: cfg.blobstore.forcePathStyle,\n credentials: cfg.blobstore.credentials,\n uploadTimeoutMs: cfg.blobstore.uploadTimeoutMs,\n requestTimeoutMs: cfg.blobstore.requestTimeoutMs,\n })\n : DiskBlobStore.creator(\n cfg.blobstore.location,\n cfg.blobstore.tempLocation,\n )\n\n const mailTransport =\n cfg.email !== null\n ? nodemailer.createTransport(cfg.email.smtpUrl)\n : nodemailer.createTransport({ jsonTransport: true })\n\n const mailer = new ServerMailer(\n mailTransport,\n cfg.email,\n cfg.branding,\n cfg.oauth.issuer,\n )\n\n const modMailTransport =\n cfg.moderationEmail !== null\n ? nodemailer.createTransport(cfg.moderationEmail.smtpUrl)\n : nodemailer.createTransport({ jsonTransport: true })\n\n const moderationMailer = new ModerationMailer(modMailTransport, cfg)\n\n /**\n * A fetch() function that protects against SSRF attacks, large responses &\n * known bad domains. This function can safely be used to fetch user\n * provided URLs (unless \"disableSsrfProtection\" is true, of course).\n *\n * @note **DO NOT** wrap `safeFetch` with any logging or other transforms as\n * this might prevent the use of explicit `redirect: \"follow\"` init from\n * working. See {@link safeFetchWrap}.\n */\n const safeFetch = safeFetchWrap({\n allowIpHost: false,\n allowImplicitRedirect: false,\n responseMaxSize: cfg.fetch.maxResponseSize,\n ssrfProtection: !cfg.fetch.disableSsrfProtection,\n\n fetch: function (input, init) {\n const method =\n init?.method ?? (input instanceof Request ? input.method : 'GET')\n const uri = input instanceof Request ? input.url : String(input)\n\n fetchLogger.info({ method, uri }, 'fetch')\n\n return globalThis.fetch.call(this, input, init)\n },\n })\n\n const didCache = new DidSqliteCache(\n cfg.db.didCacheDbLoc,\n cfg.identity.cacheStaleTTL,\n cfg.identity.cacheMaxTTL,\n cfg.db.disableWalAutoCheckpoint,\n )\n await didCache.migrateOrThrow()\n\n const idResolver = new IdResolver({\n plcUrl: cfg.identity.plcUrl,\n didCache,\n timeout: cfg.identity.resolverTimeout,\n backupNameservers: cfg.identity.handleBackupNameservers,\n fetch: safeFetch,\n })\n const plcClient = new plc.Client(cfg.identity.plcUrl)\n\n const backgroundQueue = new BackgroundQueue(undefined, { concurrency: 5 })\n const crawlers = new Crawlers(\n backgroundQueue,\n cfg.service.hostname,\n cfg.crawlers,\n )\n const sequencer = new Sequencer(\n cfg.db.sequencerDbLoc,\n crawlers,\n undefined,\n cfg.db.disableWalAutoCheckpoint,\n )\n const redisScratch = cfg.redis\n ? getRedisClient(cfg.redis.address, cfg.redis.password)\n : undefined\n\n const bskyAppView = cfg.bskyAppView\n ? new BskyAppView({\n ...cfg.bskyAppView,\n validateResponse: cfg.service.devMode,\n })\n : undefined\n\n const moderationClient = cfg.modService\n ? new Client(\n { service: cfg.modService.url },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n const reportingClient = cfg.reportService\n ? new Client(\n { service: cfg.reportService.url },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n const entrywayClient = cfg.entryway\n ? new Client(\n { service: cfg.entryway.url },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n const entrywayAdminClient =\n cfg.entryway && secrets.entrywayAdminToken\n ? new Client(\n {\n service: cfg.entryway.url,\n headers: {\n authorization: basicAuthHeader(\n 'admin',\n secrets.entrywayAdminToken,\n ),\n },\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: cfg.service.devMode,\n },\n )\n : undefined\n\n const jwtSecretKey = createSecretKeyObject(secrets.jwtSecret)\n const jwtPublicKey = cfg.entryway\n ? createPublicKeyObject(cfg.entryway.jwtPublicKeyHex)\n : null\n\n const imageUrlBuilder = new ImageUrlBuilder(\n cfg.service.hostname,\n bskyAppView,\n )\n\n const actorStore = new ActorStore(cfg.actorStore, {\n blobstore,\n backgroundQueue,\n })\n\n const plcRotationKey =\n overrides?.plcRotationKey ??\n (secrets.plcRotationKey?.provider === 'kms'\n ? await KmsKeypair.load({\n keyId: secrets.plcRotationKey.keyId,\n })\n : secrets.plcRotationKey?.provider === 'memory'\n ? await crypto.Secp256k1Keypair.import(\n secrets.plcRotationKey.privateKeyHex,\n )\n : undefined)\n\n if (!plcRotationKey) {\n throw new Error('Must configure plc rotation key')\n }\n\n const accountManager = new AccountManager(\n cfg,\n actorStore,\n idResolver,\n jwtSecretKey,\n mailer,\n sequencer,\n plcClient,\n plcRotationKey,\n )\n await accountManager.migrateOrThrow()\n\n // @TODO Use this lexResolver instance to implement validation of records\n // created with the \"validate\" option. Before doing so, ensure that 1) a\n // didCache is provided, and 2) that nsid->lexicon are cached.\n const lexResolver = new LexResolver({\n fetch: safeFetch,\n didCache: undefined, // @TODO provide a dedicated cache\n plcDirectoryUrl: cfg.identity.plcUrl,\n hooks: {\n // @NOTE Lexicons hosted by this PDS are read straight from the\n // actor store. Fetching them over the network would require this\n // server to reach its own public endpoint, which is not\n // guaranteed to work (SSRF protection, missing NAT hairpin,\n // internal reverse proxies, ...).\n onFetch: async ({ uri, did, nsid, signal }) => {\n const account = await accountManager.getAccount(did, {\n includeDeactivated: true,\n includeTakenDown: true,\n })\n\n signal?.throwIfAborted()\n\n // Mirror what com.atproto.sync.getRecord would answer to an\n // unauthenticated requester\n if (account?.takedownRef) {\n throw new LexResolverError(nsid, `Repo is not available: ${did}`)\n }\n\n // Not hosted here: fall back to the network resolution\n if (!account || account.deactivatedAt) return undefined\n\n const record = await actorStore.read(account.did, (store) => {\n return store.record.getRecord(uri, null)\n })\n\n if (!record || record.takedownRef != null) {\n throw new LexResolverError(\n nsid,\n `Lexicon record not found at ${uri}`,\n )\n }\n\n return {\n cid: parseCid(record.cid),\n record: record.value,\n }\n },\n onFetchResult({ uri, cid, source }) {\n lexiconResolverLogger.info(\n { uri: uri.toString(), cid: cid.toString(), source },\n 'Fetched lexicon',\n )\n },\n onFetchError({ err, uri }) {\n lexiconResolverLogger.error(\n { uri: uri.toString(), err },\n 'Lexicon fetch error',\n )\n },\n onResolveAuthority: ({ nsid }) => {\n lexiconResolverLogger.debug(\n { nsid: nsid.toString() },\n 'Resolving lexicon DID authority',\n )\n // Override the lexicon did resolution to point to a custom PDS\n return cfg.lexicon.didAuthority\n },\n onResolveAuthorityResult({ nsid, did, source }) {\n lexiconResolverLogger.info(\n { nsid: nsid.toString(), did, source },\n 'Resolved lexicon DID',\n )\n },\n onResolveAuthorityError({ nsid, err }) {\n lexiconResolverLogger.error(\n { nsid: nsid.toString(), err },\n 'Lexicon DID resolution error',\n )\n },\n },\n })\n\n const localViewer = LocalViewer.creator(\n accountManager,\n imageUrlBuilder,\n bskyAppView,\n )\n\n // An agent for performing HTTP requests based on user provided URLs.\n const proxyAgent = buildProxyAgent(cfg.proxy)\n\n const oauthProvider = cfg.oauth.provider\n ? new OAuthProvider({\n issuer: cfg.oauth.issuer,\n keyset: [await JoseKey.fromKeyLike(jwtSecretKey, undefined, 'HS256')],\n store: new OAuthStore(\n accountManager,\n actorStore,\n imageUrlBuilder,\n backgroundQueue,\n mailer,\n sequencer,\n plcClient,\n plcRotationKey,\n cfg.service.publicUrl,\n cfg.identity.recoveryDidKey,\n ),\n redis: redisScratch,\n dpopSecret: secrets.dpopSecret,\n inviteCodeRequired: cfg.invites.required,\n availableUserDomains: cfg.identity.serviceHandleDomains,\n hcaptcha: cfg.oauth.provider.hcaptcha,\n branding: cfg.oauth.provider.branding,\n // @NOTE Not operator-configurable on purpose: changing the email\n // address unconditionally clears `emailAuthFactorAt` (see\n // `account-manager/helpers/account.ts`), so the warning describes\n // what this implementation always does rather than a preference. This\n // is because updating email writes an unconfirmed email to the email\n // column, which means leaving email based 2FA enabled can result in\n // account lock-out.\n show2FaWarningOnEmailUpdate: true,\n safeFetch,\n lexResolver,\n metadata: {\n protected_resources: [new URL(cfg.oauth.issuer).origin],\n },\n // If the PDS is both an authorization server & resource server (no\n // entryway), we can afford to check the token validity on every\n // request. This allows revoked tokens to be rejected immediately.\n // This also allows JWT to be shorter since some claims (notably the\n // \"scope\" claim) do not need to be included in the token.\n accessTokenMode: AccessTokenMode.stateful,\n\n getClientInfo(clientId) {\n return {\n isTrusted: cfg.oauth.provider?.trustedClients?.includes(clientId),\n }\n },\n onSignedUp({ account, data, clientId }) {\n events.accountCreated({\n source: 'oauth',\n did: account.did,\n clientId,\n invited: data.inviteCode != null,\n deactivated: false,\n })\n },\n onSignedIn({ account, clientId }) {\n events.signedIn({\n did: account.did,\n clientId,\n })\n },\n onAuthorized({ account, client }) {\n events.oauthAuthorized({\n did: account.did,\n clientId: client.id,\n clientFirstParty: client.isFirstParty,\n clientTrusted: client.isTrusted,\n clientConfidential: client.isConfidential,\n })\n },\n onTokenCreated({ account, client }) {\n events.sessionCreated({\n source: 'oauth',\n did: account.did,\n clientId: client.id,\n })\n },\n onTokenRefreshed({ account, client }) {\n events.sessionRefreshed({\n source: 'oauth',\n did: account.did,\n clientId: client.id,\n })\n },\n })\n : undefined\n\n const scopeRefGetter = entrywayClient\n ? new ScopeReferenceGetter(entrywayClient, redisScratch)\n : undefined\n\n const oauthVerifier: OAuthVerifier =\n oauthProvider ?? // OAuthProvider extends OAuthVerifier\n new OAuthVerifier({\n issuer: cfg.oauth.issuer,\n keyset: [await JoseKey.fromKeyLike(jwtPublicKey!, undefined, 'ES256K')],\n dpopSecret: secrets.dpopSecret,\n redis: redisScratch,\n onDecodeToken: async ({ payload, dpopProof }) => {\n // @TODO drop this once oauth provider no longer accepts DPoP proof with\n // query or fragment in \"htu\" claim.\n if (dpopProof?.htu.match(/[?#]/)) {\n oauthLogger.info(\n { htu: dpopProof.htu, client_id: payload.client_id },\n 'DPoP proof \"htu\" contains query or fragment',\n )\n }\n\n if (scopeRefGetter) {\n payload.scope = await scopeRefGetter.dereference(payload.scope)\n }\n\n return payload\n },\n })\n\n const authVerifier = new AuthVerifier(\n accountManager,\n idResolver,\n oauthVerifier,\n {\n publicUrl: cfg.service.publicUrl,\n jwtKey: jwtPublicKey ?? jwtSecretKey,\n adminPass: secrets.adminPassword,\n dids: {\n pds: cfg.service.did,\n entryway: cfg.entryway?.did,\n modService: cfg.modService?.did,\n },\n },\n )\n\n return new AppContext({\n actorStore,\n blobstore,\n localViewer,\n mailer,\n moderationMailer,\n didCache,\n idResolver,\n plcClient,\n accountManager,\n sequencer,\n backgroundQueue,\n redisScratch,\n crawlers,\n bskyAppView,\n moderationClient,\n reportingClient,\n entrywayClient,\n entrywayAdminClient,\n proxyAgent,\n safeFetch,\n authVerifier,\n oauthProvider,\n plcRotationKey,\n cfg,\n ...(overrides ?? {}),\n })\n }\n\n async appviewAuthHeaders(did: string, lxm: string) {\n assert(this.bskyAppView)\n return this.serviceAuthHeaders(did, this.bskyAppView.did, lxm)\n }\n\n async entrywayAuthHeaders(req: express.Request, did: string, lxm: string) {\n assert(this.cfg.entryway)\n const headers = await this.serviceAuthHeaders(\n did,\n this.cfg.entryway.did,\n lxm,\n )\n return forwardedFor(req, headers)\n }\n\n entrywayPassthruHeaders(req: express.Request) {\n return forwardedFor(req, authPassthru(req))\n }\n\n /**\n * A {@link Client} for a service URL that was resolved from a DID document,\n * i.e. a URL the PDS does not control. Routes the request through\n * {@link safeFetch}, which restricts it to https origins that resolve to\n * unicast addresses, and caps the response size. Lexicon validation follows\n * the service's dev mode, as it does for the AppView client.\n *\n * Any call built from a DID document's service endpoint must use this.\n */\n safeClient(service: string | URL): Client {\n return new Client(\n { service, fetch: this.safeFetch },\n {\n validateRequest: this.cfg.service.devMode,\n validateResponse: this.cfg.service.devMode,\n strictResponseProcessing: this.cfg.service.devMode,\n },\n )\n }\n\n async serviceAuthHeaders(did: string, aud: string, lxm: string) {\n const keypair = await this.actorStore.keypair(did)\n return createServiceAuthHeaders({\n iss: did,\n aud,\n lxm,\n keypair,\n })\n }\n\n async serviceAuthJwt(did: string, aud: string, lxm: string) {\n const keypair = await this.actorStore.keypair(did)\n return createServiceJwt({\n iss: did,\n aud,\n lxm,\n keypair,\n })\n }\n\n async destroy(): Promise<void> {\n try {\n await this.backgroundQueue.destroy()\n } finally {\n try {\n await this.sequencer.destroy()\n } finally {\n try {\n await this.accountManager.close()\n } finally {\n try {\n await this.redisScratch?.quit()\n } finally {\n await this.proxyAgent.destroy()\n }\n }\n }\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nconst basicAuthHeader = (username: string, password: string) => {\n const encoded = ui8.toString(\n ui8.fromString(`${username}:${password}`, 'utf8'),\n 'base64pad',\n )\n return `Basic ${encoded}`\n}\n\nexport default AppContext\n"]}
package/dist/index.d.ts CHANGED
@@ -5,9 +5,9 @@ import { type MethodHandler } from '@atproto/xrpc-server';
5
5
  import { type ServerConfig, type ServerEnvironment, type ServerSecrets } from './config/index.js';
6
6
  import { AppContext, type AppContextOptions } from './context.js';
7
7
  import type { app } from './lexicons.js';
8
- export { bearerTokenFromReq, createPublicKeyObject, createSecretKeyObject, } from './auth-verifier.js';
8
+ export { type KeyObject, bearerTokenFromReq, createPublicKeyObject, createSecretKeyObject, } from './auth-verifier.js';
9
9
  export * from './config/index.js';
10
- export { AppContext } from './context.js';
10
+ export { AppContext, type AppContextOptions } from './context.js';
11
11
  export { Database } from './db/index.js';
12
12
  export { DiskBlobStore } from './disk-blobstore.js';
13
13
  export * from './lexicons.js';
@@ -29,7 +29,7 @@ export declare class PDS implements AsyncDisposable {
29
29
  ctx: AppContext;
30
30
  app: express.Application;
31
31
  });
32
- static fromEnv(env?: ServerEnvironment): Promise<PDS>;
32
+ static fromEnv(env?: ServerEnvironment, overrides?: Partial<AppContextOptions>): Promise<PDS>;
33
33
  /**
34
34
  * Creates and starts a PDS instance, and waits for a termination signal to
35
35
  * stop it.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,sBAAsB,CAAA;AAG7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAGjC,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,sBAAsB,CAAA;AAI7B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAInB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAOxC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAEjD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,CACzC,IAAI,EACJ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EACrC,IAAI,EACJ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CACtC,CAAA;AAED,qBAAa,GAAI,YAAW,eAAe;IAClC,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;IAEnC,YAAY,IAAI,EAAE;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;KAAE,EAG9D;IAED,OAAa,OAAO,CAAC,GAAG,GAAE,iBAA6B,GAAG,OAAO,CAAC,GAAG,CAAC,CAIrE;IAED;;;OAGG;IACH,OAAa,GAAG,CAAC,EACf,GAAe,EACf,MAAM,EAAE,WAAW,EACnB,OAA+B,EAC/B,SAAqB,EACrB,SAAqB,GACtB,GAAE;QACD,GAAG,CAAC,EAAE,iBAAiB,CAAA;QACvB,MAAM,CAAC,EAAE,WAAW,CAAA;QACpB,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,CAAA;QACnC;;;WAGG;QACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9C,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAC1C,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CrB;IAED,OAAa,MAAM,CACjB,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,aAAa,EACtB,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,OAAO,CAAC,GAAG,CAAC,CA8Dd;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAQlC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAM7B;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAE1B;CACF;eAEc,GAAG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -89,10 +89,10 @@ export class PDS {
89
89
  this.ctx = opts.ctx;
90
90
  this.app = opts.app;
91
91
  }
92
- static async fromEnv(env = readEnv()) {
92
+ static async fromEnv(env = readEnv(), overrides) {
93
93
  const cfg = envToCfg(env);
94
94
  const secrets = envToSecrets(env);
95
- return PDS.create(cfg, secrets);
95
+ return PDS.create(cfg, secrets, overrides);
96
96
  }
97
97
  /**
98
98
  * Creates and starts a PDS instance, and waits for a termination signal to
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// catch errors that get thrown in async route handlers\n// this is a relatively non-invasive change to express\n// they get handled in the error.handler middleware\n// leave at top of file before importing Routes\nimport 'express-async-errors'\n\nimport events, { once } from 'node:events'\nimport type http from 'node:http'\nimport { PlcClientError } from '@did-plc/lib'\nimport cors from 'cors'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport {\n type MethodHandler,\n ResponseType,\n XRPCError,\n createServer,\n} from '@atproto/xrpc-server'\nimport apiRoutes from './api/index.js'\nimport * as authRoutes from './auth-routes.js'\nimport * as basicRoutes from './basic-routes.js'\nimport {\n type ServerConfig,\n type ServerEnvironment,\n type ServerSecrets,\n envToCfg,\n envToSecrets,\n readEnv,\n} from './config/index.js'\nimport { AppContext, type AppContextOptions } from './context.js'\nimport * as error from './error.js'\nimport type { app } from './lexicons.js'\nimport { loggerMiddleware, pdsLogger } from './logger.js'\nimport { proxyHandler } from './pipethrough.js'\nimport { buildRateLimitsConfig } from './rate-limits.js'\nimport compression from './util/compression.js'\nimport * as wellKnown from './well-known.js'\n\nexport {\n bearerTokenFromReq,\n createPublicKeyObject,\n createSecretKeyObject,\n} from './auth-verifier.js'\nexport * from './config/index.js'\nexport { AppContext } from './context.js'\nexport { Database } from './db/index.js'\nexport { DiskBlobStore } from './disk-blobstore.js'\nexport * from './lexicons.js'\nexport { httpLogger } from './logger.js'\nexport { type CommitDataWithOps, type PreparedWrite } from './repo/index.js'\nexport * as repoPrepare from './repo/prepare.js'\nexport { scripts } from './scripts/index.js'\nexport * as sequencer from './sequencer/index.js'\n\n/**\n * @deprecated Legacy export for backwards compatibility\n */\nexport type SkeletonHandler = MethodHandler<\n void,\n app.bsky.feed.getFeedSkeleton.$Params,\n void,\n app.bsky.feed.getFeedSkeleton.$Output\n>\n\nexport class PDS implements AsyncDisposable {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n\n constructor(opts: { ctx: AppContext; app: express.Application }) {\n this.ctx = opts.ctx\n this.app = opts.app\n }\n\n static async fromEnv(env: ServerEnvironment = readEnv()): Promise<PDS> {\n const cfg = envToCfg(env)\n const secrets = envToSecrets(env)\n return PDS.create(cfg, secrets)\n }\n\n /**\n * Creates and starts a PDS instance, and waits for a termination signal to\n * stop it.\n */\n static async run({\n env = undefined,\n signal: inputSignal,\n signals = ['SIGINT', 'SIGTERM'],\n onCreated = undefined,\n onStarted = undefined,\n }: {\n env?: ServerEnvironment\n signal?: AbortSignal\n signals?: readonly NodeJS.Signals[]\n /**\n * Hook that allows attaching additional logic (like adding custom HTTP\n * routes) before the PDS is started.\n */\n onCreated?: (pds: PDS) => void | Promise<void>\n onStarted?: (pds: PDS) => void | Promise<void>\n } = {}): Promise<void> {\n const ac = new AbortController()\n const { signal } = ac\n const abort = () => ac.abort()\n\n // Always abort the internal signal, ensuring proper resource cleanup\n using _ = { [Symbol.dispose]: abort }\n\n // Bind the internal signal to the input signal (will automatically remove\n // the listener when the internal signal is aborted)\n inputSignal?.throwIfAborted()\n inputSignal?.addEventListener('abort', abort, { signal })\n\n // Bind the internal signal to the process signals (will automatically\n // remove the listener when the internal signal is aborted)\n for (const sig of signals) {\n process.on(sig, abort)\n signal.addEventListener('abort', () => process.off(sig, abort))\n }\n\n await using pds = await PDS.fromEnv(env)\n\n if (signal.aborted) return\n\n await onCreated?.(pds)\n\n if (signal.aborted) return\n\n pdsLogger.info('starting')\n\n await pds.start()\n\n if (signal.aborted) return\n\n await onStarted?.(pds)\n\n if (signal.aborted) return\n\n pdsLogger.info('started')\n\n await once(signal, 'abort')\n\n pdsLogger.info('stopping')\n }\n\n static async create(\n cfg: ServerConfig,\n secrets: ServerSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<PDS> {\n const ctx = await AppContext.fromConfig(cfg, secrets, overrides)\n\n const { rateLimits } = ctx.cfg\n\n const server = createServer([], {\n validateResponse: cfg.service.devMode,\n payload: {\n jsonLimit: 150 * 1024, // 150kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: cfg.service.blobUploadLimit,\n },\n catchall: proxyHandler(ctx),\n errorParser: (err) => {\n if (err instanceof PlcClientError) {\n const payloadMessage =\n typeof err.data === 'object' &&\n err.data != null &&\n 'message' in err.data &&\n typeof err.data.message === 'string' &&\n err.data.message\n\n const type =\n err.status >= 500\n ? ResponseType.UpstreamFailure\n : ResponseType.InvalidRequest\n\n return new XRPCError(\n type,\n payloadMessage || 'Unable to perform PLC operation',\n )\n }\n\n return XRPCError.fromError(err)\n },\n rateLimits: buildRateLimitsConfig(rateLimits, ctx.redisScratch),\n })\n\n apiRoutes(server, ctx)\n\n const app = express()\n app.set('trust proxy', [\n // e.g. load balancer\n 'loopback',\n 'linklocal',\n 'uniquelocal',\n // e.g. trust x-forwarded-for via entryway ip\n ...getTrustedIps(cfg),\n ])\n app.use(loggerMiddleware)\n app.use(compression())\n app.use(authRoutes.createRouter(ctx)) // Before CORS\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(basicRoutes.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(server.router)\n app.use(error.handler)\n\n return new PDS({\n ctx,\n app,\n })\n }\n\n async start(): Promise<http.Server> {\n await this.ctx.sequencer.start()\n const server = this.app.listen(this.ctx.cfg.service.port)\n this.server = server\n this.server.keepAliveTimeout = 90_000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n return server\n }\n\n async destroy(): Promise<void> {\n try {\n await this.terminator?.terminate()\n } finally {\n await this.ctx.destroy()\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nexport default PDS\n\nconst getTrustedIps = (cfg: ServerConfig) => {\n if (!cfg.rateLimits.enabled) return []\n return cfg.rateLimits.bypassIps ?? []\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// catch errors that get thrown in async route handlers\n// this is a relatively non-invasive change to express\n// they get handled in the error.handler middleware\n// leave at top of file before importing Routes\nimport 'express-async-errors'\n\nimport events, { once } from 'node:events'\nimport type http from 'node:http'\nimport { PlcClientError } from '@did-plc/lib'\nimport cors from 'cors'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport {\n type MethodHandler,\n ResponseType,\n XRPCError,\n createServer,\n} from '@atproto/xrpc-server'\nimport apiRoutes from './api/index.js'\nimport * as authRoutes from './auth-routes.js'\nimport * as basicRoutes from './basic-routes.js'\nimport {\n type ServerConfig,\n type ServerEnvironment,\n type ServerSecrets,\n envToCfg,\n envToSecrets,\n readEnv,\n} from './config/index.js'\nimport { AppContext, type AppContextOptions } from './context.js'\nimport * as error from './error.js'\nimport type { app } from './lexicons.js'\nimport { loggerMiddleware, pdsLogger } from './logger.js'\nimport { proxyHandler } from './pipethrough.js'\nimport { buildRateLimitsConfig } from './rate-limits.js'\nimport compression from './util/compression.js'\nimport * as wellKnown from './well-known.js'\n\nexport {\n type KeyObject,\n bearerTokenFromReq,\n createPublicKeyObject,\n createSecretKeyObject,\n} from './auth-verifier.js'\nexport * from './config/index.js'\nexport { AppContext, type AppContextOptions } from './context.js'\nexport { Database } from './db/index.js'\nexport { DiskBlobStore } from './disk-blobstore.js'\nexport * from './lexicons.js'\nexport { httpLogger } from './logger.js'\nexport { type CommitDataWithOps, type PreparedWrite } from './repo/index.js'\nexport * as repoPrepare from './repo/prepare.js'\nexport { scripts } from './scripts/index.js'\nexport * as sequencer from './sequencer/index.js'\n\n/**\n * @deprecated Legacy export for backwards compatibility\n */\nexport type SkeletonHandler = MethodHandler<\n void,\n app.bsky.feed.getFeedSkeleton.$Params,\n void,\n app.bsky.feed.getFeedSkeleton.$Output\n>\n\nexport class PDS implements AsyncDisposable {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n\n constructor(opts: { ctx: AppContext; app: express.Application }) {\n this.ctx = opts.ctx\n this.app = opts.app\n }\n\n static async fromEnv(\n env: ServerEnvironment = readEnv(),\n overrides?: Partial<AppContextOptions>,\n ): Promise<PDS> {\n const cfg = envToCfg(env)\n const secrets = envToSecrets(env)\n return PDS.create(cfg, secrets, overrides)\n }\n\n /**\n * Creates and starts a PDS instance, and waits for a termination signal to\n * stop it.\n */\n static async run({\n env = undefined,\n signal: inputSignal,\n signals = ['SIGINT', 'SIGTERM'],\n onCreated = undefined,\n onStarted = undefined,\n }: {\n env?: ServerEnvironment\n signal?: AbortSignal\n signals?: readonly NodeJS.Signals[]\n /**\n * Hook that allows attaching additional logic (like adding custom HTTP\n * routes) before the PDS is started.\n */\n onCreated?: (pds: PDS) => void | Promise<void>\n onStarted?: (pds: PDS) => void | Promise<void>\n } = {}): Promise<void> {\n const ac = new AbortController()\n const { signal } = ac\n const abort = () => ac.abort()\n\n // Always abort the internal signal, ensuring proper resource cleanup\n using _ = { [Symbol.dispose]: abort }\n\n // Bind the internal signal to the input signal (will automatically remove\n // the listener when the internal signal is aborted)\n inputSignal?.throwIfAborted()\n inputSignal?.addEventListener('abort', abort, { signal })\n\n // Bind the internal signal to the process signals (will automatically\n // remove the listener when the internal signal is aborted)\n for (const sig of signals) {\n process.on(sig, abort)\n signal.addEventListener('abort', () => process.off(sig, abort))\n }\n\n await using pds = await PDS.fromEnv(env)\n\n if (signal.aborted) return\n\n await onCreated?.(pds)\n\n if (signal.aborted) return\n\n pdsLogger.info('starting')\n\n await pds.start()\n\n if (signal.aborted) return\n\n await onStarted?.(pds)\n\n if (signal.aborted) return\n\n pdsLogger.info('started')\n\n await once(signal, 'abort')\n\n pdsLogger.info('stopping')\n }\n\n static async create(\n cfg: ServerConfig,\n secrets: ServerSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<PDS> {\n const ctx = await AppContext.fromConfig(cfg, secrets, overrides)\n\n const { rateLimits } = ctx.cfg\n\n const server = createServer([], {\n validateResponse: cfg.service.devMode,\n payload: {\n jsonLimit: 150 * 1024, // 150kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: cfg.service.blobUploadLimit,\n },\n catchall: proxyHandler(ctx),\n errorParser: (err) => {\n if (err instanceof PlcClientError) {\n const payloadMessage =\n typeof err.data === 'object' &&\n err.data != null &&\n 'message' in err.data &&\n typeof err.data.message === 'string' &&\n err.data.message\n\n const type =\n err.status >= 500\n ? ResponseType.UpstreamFailure\n : ResponseType.InvalidRequest\n\n return new XRPCError(\n type,\n payloadMessage || 'Unable to perform PLC operation',\n )\n }\n\n return XRPCError.fromError(err)\n },\n rateLimits: buildRateLimitsConfig(rateLimits, ctx.redisScratch),\n })\n\n apiRoutes(server, ctx)\n\n const app = express()\n app.set('trust proxy', [\n // e.g. load balancer\n 'loopback',\n 'linklocal',\n 'uniquelocal',\n // e.g. trust x-forwarded-for via entryway ip\n ...getTrustedIps(cfg),\n ])\n app.use(loggerMiddleware)\n app.use(compression())\n app.use(authRoutes.createRouter(ctx)) // Before CORS\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(basicRoutes.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(server.router)\n app.use(error.handler)\n\n return new PDS({\n ctx,\n app,\n })\n }\n\n async start(): Promise<http.Server> {\n await this.ctx.sequencer.start()\n const server = this.app.listen(this.ctx.cfg.service.port)\n this.server = server\n this.server.keepAliveTimeout = 90_000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n return server\n }\n\n async destroy(): Promise<void> {\n try {\n await this.terminator?.terminate()\n } finally {\n await this.ctx.destroy()\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nexport default PDS\n\nconst getTrustedIps = (cfg: ServerConfig) => {\n if (!cfg.rateLimits.enabled) return []\n return cfg.rateLimits.bypassIps ?? []\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"authFullApp.defs.d.ts","sourceRoot":"","sources":["../../../../src/lexicons/app/bsky/authFullApp.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAEhC,QAAA,MAAM,KAAK,yBAAyB,CAAA;AAEpC,KAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,QAAA,MAAM,IAAI,mHAwIT,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"authFullApp.defs.d.ts","sourceRoot":"","sources":["../../../../src/lexicons/app/bsky/authFullApp.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAEhC,QAAA,MAAM,KAAK,yBAAyB,CAAA;AAEpC,KAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,QAAA,MAAM,IAAI,mHAkJT,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -25,6 +25,10 @@ const main = /*#__PURE__*/ l.permissionSet($nsid, [
25
25
  'app.bsky.contact.removeData',
26
26
  'app.bsky.contact.startPhoneVerification',
27
27
  'app.bsky.contact.verifyPhone',
28
+ 'app.bsky.draft.createDraft',
29
+ 'app.bsky.draft.deleteDraft',
30
+ 'app.bsky.draft.getDrafts',
31
+ 'app.bsky.draft.updateDraft',
28
32
  'app.bsky.feed.describeFeedGenerator',
29
33
  'app.bsky.feed.getActorFeeds',
30
34
  'app.bsky.feed.getActorLikes',
@@ -87,9 +91,13 @@ const main = /*#__PURE__*/ l.permissionSet($nsid, [
87
91
  'app.bsky.unspecced.getPostThreadV2',
88
92
  'app.bsky.unspecced.getSuggestedFeeds',
89
93
  'app.bsky.unspecced.getSuggestedFeedsSkeleton',
94
+ 'app.bsky.unspecced.getSuggestedOnboardingUsers',
90
95
  'app.bsky.unspecced.getSuggestedStarterPacks',
91
96
  'app.bsky.unspecced.getSuggestedStarterPacksSkeleton',
92
97
  'app.bsky.unspecced.getSuggestedUsers',
98
+ 'app.bsky.unspecced.getSuggestedUsersForDiscover',
99
+ 'app.bsky.unspecced.getSuggestedUsersForExplore',
100
+ 'app.bsky.unspecced.getSuggestedUsersForSeeMore',
93
101
  'app.bsky.unspecced.getSuggestedUsersSkeleton',
94
102
  'app.bsky.unspecced.getSuggestionsSkeleton',
95
103
  'app.bsky.unspecced.getTaggedSuggestions',
@@ -113,6 +121,7 @@ const main = /*#__PURE__*/ l.permissionSet($nsid, [
113
121
  /*#__PURE__*/ l.permission('repo', {
114
122
  action: ['create', 'update', 'delete'],
115
123
  collection: [
124
+ 'app.bsky.actor.contentVisibilityDeclaration',
116
125
  'app.bsky.actor.profile',
117
126
  'app.bsky.actor.status',
118
127
  'app.bsky.feed.like',
@@ -127,6 +136,7 @@ const main = /*#__PURE__*/ l.permissionSet($nsid, [
127
136
  'app.bsky.graph.listitem',
128
137
  'app.bsky.graph.referencelistoptout',
129
138
  'app.bsky.graph.starterpack',
139
+ 'app.bsky.graph.verification',
130
140
  'app.bsky.notification.declaration',
131
141
  ],
132
142
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"authFullApp.defs.js","sourceRoot":"","sources":["../../../../src/lexicons/app/bsky/authFullApp.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\n\nconst $nsid = 'app.bsky.authFullApp'\n\ntype $nsid = typeof $nsid\n\nexport { $nsid }\n\nconst main = /*#__PURE__*/ l.permissionSet(\n $nsid,\n [\n /*#__PURE__*/ l.permission('rpc', {\n inheritAud: true,\n lxm: [\n 'app.bsky.actor.getPreferences',\n 'app.bsky.actor.getProfile',\n 'app.bsky.actor.getProfiles',\n 'app.bsky.actor.getSuggestions',\n 'app.bsky.actor.putPreferences',\n 'app.bsky.actor.searchActors',\n 'app.bsky.actor.searchActorsTypeahead',\n 'app.bsky.bookmark.createBookmark',\n 'app.bsky.bookmark.deleteBookmark',\n 'app.bsky.bookmark.getBookmarks',\n 'app.bsky.contact.dismissMatch',\n 'app.bsky.contact.getMatches',\n 'app.bsky.contact.getSyncStatus',\n 'app.bsky.contact.importContacts',\n 'app.bsky.contact.removeData',\n 'app.bsky.contact.startPhoneVerification',\n 'app.bsky.contact.verifyPhone',\n 'app.bsky.feed.describeFeedGenerator',\n 'app.bsky.feed.getActorFeeds',\n 'app.bsky.feed.getActorLikes',\n 'app.bsky.feed.getAuthorFeed',\n 'app.bsky.feed.getFeed',\n 'app.bsky.feed.getFeedGenerator',\n 'app.bsky.feed.getFeedGenerators',\n 'app.bsky.feed.getFeedSkeleton',\n 'app.bsky.feed.getLikes',\n 'app.bsky.feed.getListFeed',\n 'app.bsky.feed.getPostThread',\n 'app.bsky.feed.getPosts',\n 'app.bsky.feed.getQuotes',\n 'app.bsky.feed.getRepostedBy',\n 'app.bsky.feed.getSuggestedFeeds',\n 'app.bsky.feed.getTimeline',\n 'app.bsky.feed.searchPosts',\n 'app.bsky.feed.searchPostsV2',\n 'app.bsky.feed.sendInteractions',\n 'app.bsky.graph.getActorStarterPacks',\n 'app.bsky.graph.getBlocks',\n 'app.bsky.graph.getFollowers',\n 'app.bsky.graph.getFollows',\n 'app.bsky.graph.getKnownFollowers',\n 'app.bsky.graph.getList',\n 'app.bsky.graph.getListBlocks',\n 'app.bsky.graph.getListMutes',\n 'app.bsky.graph.getLists',\n 'app.bsky.graph.getListsWithMembership',\n 'app.bsky.graph.getMutes',\n 'app.bsky.graph.getRelationships',\n 'app.bsky.graph.getStarterPack',\n 'app.bsky.graph.getStarterPacks',\n 'app.bsky.graph.getStarterPacksWithMembership',\n 'app.bsky.graph.getSuggestedFollowsByActor',\n 'app.bsky.graph.muteActor',\n 'app.bsky.graph.muteActorList',\n 'app.bsky.graph.muteThread',\n 'app.bsky.graph.searchStarterPacks',\n 'app.bsky.graph.searchStarterPacksV2',\n 'app.bsky.graph.unmuteActor',\n 'app.bsky.graph.unmuteActorList',\n 'app.bsky.graph.unmuteThread',\n 'app.bsky.labeler.getServices',\n 'app.bsky.notification.getPreferences',\n 'app.bsky.notification.getUnreadCount',\n 'app.bsky.notification.listActivitySubscriptions',\n 'app.bsky.notification.listNotifications',\n 'app.bsky.notification.putActivitySubscription',\n 'app.bsky.notification.putPreferences',\n 'app.bsky.notification.putPreferencesV2',\n 'app.bsky.notification.registerPush',\n 'app.bsky.notification.unregisterPush',\n 'app.bsky.notification.updateSeen',\n 'app.bsky.unspecced.getAgeAssuranceState',\n 'app.bsky.unspecced.getConfig',\n 'app.bsky.unspecced.getOnboardingSuggestedStarterPacks',\n 'app.bsky.unspecced.getPopularFeedGenerators',\n 'app.bsky.unspecced.getPostThreadOtherV2',\n 'app.bsky.unspecced.getPostThreadV2',\n 'app.bsky.unspecced.getSuggestedFeeds',\n 'app.bsky.unspecced.getSuggestedFeedsSkeleton',\n 'app.bsky.unspecced.getSuggestedStarterPacks',\n 'app.bsky.unspecced.getSuggestedStarterPacksSkeleton',\n 'app.bsky.unspecced.getSuggestedUsers',\n 'app.bsky.unspecced.getSuggestedUsersSkeleton',\n 'app.bsky.unspecced.getSuggestionsSkeleton',\n 'app.bsky.unspecced.getTaggedSuggestions',\n 'app.bsky.unspecced.getTrendingTopics',\n 'app.bsky.unspecced.getTrends',\n 'app.bsky.unspecced.getTrendsSkeleton',\n 'app.bsky.unspecced.initAgeAssurance',\n 'app.bsky.unspecced.searchActorsSkeleton',\n 'app.bsky.unspecced.searchPostsSkeleton',\n 'app.bsky.unspecced.searchStarterPacksSkeleton',\n 'app.bsky.video.getJobStatus',\n 'app.bsky.video.getUploadLimits',\n 'app.bsky.video.uploadVideo',\n 'app.bsky.video.startUpload',\n 'app.bsky.video.uploadPart',\n 'app.bsky.video.finishUpload',\n 'app.bsky.video.abortUpload',\n 'app.bsky.video.getUploadStatus',\n ],\n }),\n /*#__PURE__*/ l.permission('repo', {\n action: ['create', 'update', 'delete'],\n collection: [\n 'app.bsky.actor.profile',\n 'app.bsky.actor.status',\n 'app.bsky.feed.like',\n 'app.bsky.feed.post',\n 'app.bsky.feed.postgate',\n 'app.bsky.feed.repost',\n 'app.bsky.feed.threadgate',\n 'app.bsky.graph.block',\n 'app.bsky.graph.follow',\n 'app.bsky.graph.list',\n 'app.bsky.graph.listblock',\n 'app.bsky.graph.listitem',\n 'app.bsky.graph.referencelistoptout',\n 'app.bsky.graph.starterpack',\n 'app.bsky.notification.declaration',\n ],\n }),\n ],\n {\n title: 'Full Bluesky Social App Permissions',\n 'title:lang': {},\n detail:\n 'Manage all public content and interactions, private preferences and subscriptions, and other Bluesky-specific app features and data.',\n 'detail:lang': {},\n },\n)\n\nexport { main }\n"]}
1
+ {"version":3,"file":"authFullApp.defs.js","sourceRoot":"","sources":["../../../../src/lexicons/app/bsky/authFullApp.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\n\nconst $nsid = 'app.bsky.authFullApp'\n\ntype $nsid = typeof $nsid\n\nexport { $nsid }\n\nconst main = /*#__PURE__*/ l.permissionSet(\n $nsid,\n [\n /*#__PURE__*/ l.permission('rpc', {\n inheritAud: true,\n lxm: [\n 'app.bsky.actor.getPreferences',\n 'app.bsky.actor.getProfile',\n 'app.bsky.actor.getProfiles',\n 'app.bsky.actor.getSuggestions',\n 'app.bsky.actor.putPreferences',\n 'app.bsky.actor.searchActors',\n 'app.bsky.actor.searchActorsTypeahead',\n 'app.bsky.bookmark.createBookmark',\n 'app.bsky.bookmark.deleteBookmark',\n 'app.bsky.bookmark.getBookmarks',\n 'app.bsky.contact.dismissMatch',\n 'app.bsky.contact.getMatches',\n 'app.bsky.contact.getSyncStatus',\n 'app.bsky.contact.importContacts',\n 'app.bsky.contact.removeData',\n 'app.bsky.contact.startPhoneVerification',\n 'app.bsky.contact.verifyPhone',\n 'app.bsky.draft.createDraft',\n 'app.bsky.draft.deleteDraft',\n 'app.bsky.draft.getDrafts',\n 'app.bsky.draft.updateDraft',\n 'app.bsky.feed.describeFeedGenerator',\n 'app.bsky.feed.getActorFeeds',\n 'app.bsky.feed.getActorLikes',\n 'app.bsky.feed.getAuthorFeed',\n 'app.bsky.feed.getFeed',\n 'app.bsky.feed.getFeedGenerator',\n 'app.bsky.feed.getFeedGenerators',\n 'app.bsky.feed.getFeedSkeleton',\n 'app.bsky.feed.getLikes',\n 'app.bsky.feed.getListFeed',\n 'app.bsky.feed.getPostThread',\n 'app.bsky.feed.getPosts',\n 'app.bsky.feed.getQuotes',\n 'app.bsky.feed.getRepostedBy',\n 'app.bsky.feed.getSuggestedFeeds',\n 'app.bsky.feed.getTimeline',\n 'app.bsky.feed.searchPosts',\n 'app.bsky.feed.searchPostsV2',\n 'app.bsky.feed.sendInteractions',\n 'app.bsky.graph.getActorStarterPacks',\n 'app.bsky.graph.getBlocks',\n 'app.bsky.graph.getFollowers',\n 'app.bsky.graph.getFollows',\n 'app.bsky.graph.getKnownFollowers',\n 'app.bsky.graph.getList',\n 'app.bsky.graph.getListBlocks',\n 'app.bsky.graph.getListMutes',\n 'app.bsky.graph.getLists',\n 'app.bsky.graph.getListsWithMembership',\n 'app.bsky.graph.getMutes',\n 'app.bsky.graph.getRelationships',\n 'app.bsky.graph.getStarterPack',\n 'app.bsky.graph.getStarterPacks',\n 'app.bsky.graph.getStarterPacksWithMembership',\n 'app.bsky.graph.getSuggestedFollowsByActor',\n 'app.bsky.graph.muteActor',\n 'app.bsky.graph.muteActorList',\n 'app.bsky.graph.muteThread',\n 'app.bsky.graph.searchStarterPacks',\n 'app.bsky.graph.searchStarterPacksV2',\n 'app.bsky.graph.unmuteActor',\n 'app.bsky.graph.unmuteActorList',\n 'app.bsky.graph.unmuteThread',\n 'app.bsky.labeler.getServices',\n 'app.bsky.notification.getPreferences',\n 'app.bsky.notification.getUnreadCount',\n 'app.bsky.notification.listActivitySubscriptions',\n 'app.bsky.notification.listNotifications',\n 'app.bsky.notification.putActivitySubscription',\n 'app.bsky.notification.putPreferences',\n 'app.bsky.notification.putPreferencesV2',\n 'app.bsky.notification.registerPush',\n 'app.bsky.notification.unregisterPush',\n 'app.bsky.notification.updateSeen',\n 'app.bsky.unspecced.getAgeAssuranceState',\n 'app.bsky.unspecced.getConfig',\n 'app.bsky.unspecced.getOnboardingSuggestedStarterPacks',\n 'app.bsky.unspecced.getPopularFeedGenerators',\n 'app.bsky.unspecced.getPostThreadOtherV2',\n 'app.bsky.unspecced.getPostThreadV2',\n 'app.bsky.unspecced.getSuggestedFeeds',\n 'app.bsky.unspecced.getSuggestedFeedsSkeleton',\n 'app.bsky.unspecced.getSuggestedOnboardingUsers',\n 'app.bsky.unspecced.getSuggestedStarterPacks',\n 'app.bsky.unspecced.getSuggestedStarterPacksSkeleton',\n 'app.bsky.unspecced.getSuggestedUsers',\n 'app.bsky.unspecced.getSuggestedUsersForDiscover',\n 'app.bsky.unspecced.getSuggestedUsersForExplore',\n 'app.bsky.unspecced.getSuggestedUsersForSeeMore',\n 'app.bsky.unspecced.getSuggestedUsersSkeleton',\n 'app.bsky.unspecced.getSuggestionsSkeleton',\n 'app.bsky.unspecced.getTaggedSuggestions',\n 'app.bsky.unspecced.getTrendingTopics',\n 'app.bsky.unspecced.getTrends',\n 'app.bsky.unspecced.getTrendsSkeleton',\n 'app.bsky.unspecced.initAgeAssurance',\n 'app.bsky.unspecced.searchActorsSkeleton',\n 'app.bsky.unspecced.searchPostsSkeleton',\n 'app.bsky.unspecced.searchStarterPacksSkeleton',\n 'app.bsky.video.getJobStatus',\n 'app.bsky.video.getUploadLimits',\n 'app.bsky.video.uploadVideo',\n 'app.bsky.video.startUpload',\n 'app.bsky.video.uploadPart',\n 'app.bsky.video.finishUpload',\n 'app.bsky.video.abortUpload',\n 'app.bsky.video.getUploadStatus',\n ],\n }),\n /*#__PURE__*/ l.permission('repo', {\n action: ['create', 'update', 'delete'],\n collection: [\n 'app.bsky.actor.contentVisibilityDeclaration',\n 'app.bsky.actor.profile',\n 'app.bsky.actor.status',\n 'app.bsky.feed.like',\n 'app.bsky.feed.post',\n 'app.bsky.feed.postgate',\n 'app.bsky.feed.repost',\n 'app.bsky.feed.threadgate',\n 'app.bsky.graph.block',\n 'app.bsky.graph.follow',\n 'app.bsky.graph.list',\n 'app.bsky.graph.listblock',\n 'app.bsky.graph.listitem',\n 'app.bsky.graph.referencelistoptout',\n 'app.bsky.graph.starterpack',\n 'app.bsky.graph.verification',\n 'app.bsky.notification.declaration',\n ],\n }),\n ],\n {\n title: 'Full Bluesky Social App Permissions',\n 'title:lang': {},\n detail:\n 'Manage all public content and interactions, private preferences and subscriptions, and other Bluesky-specific app features and data.',\n 'detail:lang': {},\n },\n)\n\nexport { main }\n"]}
@@ -78,6 +78,14 @@ type FeedViewPost = {
78
78
  $type?: 'app.bsky.feed.defs#feedViewPost';
79
79
  post: PostView;
80
80
  reply?: ReplyRef;
81
+ /**
82
+ * The 1-indexed position of this post within the contiguous OP thread. Only present when this post is part of the OP thread.
83
+ */
84
+ opThreadPostIndex?: number;
85
+ /**
86
+ * The total number of posts in the contiguous OP thread that this post belongs to. Only present when this post is part of the OP thread.
87
+ */
88
+ opThreadPostCount?: number;
81
89
  reason?: l.$Typed<ReasonRepost> | l.$Typed<ReasonPin> | l.Unknown$TypedObject;
82
90
  /**
83
91
  * Context provided by feed generator that may be passed back alongside interactions.
@@ -1 +1 @@
1
- {"version":3,"file":"defs.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/app/bsky/feed/defs.defs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defs.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/app/bsky/feed/defs.defs.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,8 @@ const feedViewPost = /*#__PURE__*/ l.typedObject($nsid, 'feedViewPost',
81
81
  post: /*#__PURE__*/ l.ref((() => postView)),
82
82
  reply: /*#__PURE__*/ l.optional(
83
83
  /*#__PURE__*/ l.ref((() => replyRef))),
84
+ opThreadPostIndex: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),
85
+ opThreadPostCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),
84
86
  reason: /*#__PURE__*/ l.optional(
85
87
  /*#__PURE__*/ l.typedUnion([
86
88
  /*#__PURE__*/ l.typedRef((() => reasonRepost)),