@atproto/pds 0.4.165 → 0.4.166

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 (282) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/account-manager/account-manager.js +2 -2
  3. package/dist/account-manager/account-manager.js.map +1 -1
  4. package/dist/account-manager/helpers/account-device.d.ts +4 -4
  5. package/dist/account-manager/helpers/account.d.ts +1 -1
  6. package/dist/account-manager/helpers/auth.d.ts +1 -1
  7. package/dist/account-manager/helpers/auth.d.ts.map +1 -1
  8. package/dist/account-manager/helpers/auth.js +8 -8
  9. package/dist/account-manager/helpers/auth.js.map +1 -1
  10. package/dist/account-manager/helpers/authorization-request.d.ts +1 -1
  11. package/dist/account-manager/helpers/authorization-request.d.ts.map +1 -1
  12. package/dist/account-manager/helpers/authorization-request.js +16 -8
  13. package/dist/account-manager/helpers/authorization-request.js.map +1 -1
  14. package/dist/account-manager/helpers/token.d.ts +65 -65
  15. package/dist/actor-store/preference/reader.d.ts +2 -2
  16. package/dist/actor-store/preference/reader.d.ts.map +1 -1
  17. package/dist/actor-store/preference/reader.js +2 -2
  18. package/dist/actor-store/preference/reader.js.map +1 -1
  19. package/dist/actor-store/preference/transactor.d.ts +2 -2
  20. package/dist/actor-store/preference/transactor.d.ts.map +1 -1
  21. package/dist/actor-store/preference/transactor.js +5 -5
  22. package/dist/actor-store/preference/transactor.js.map +1 -1
  23. package/dist/actor-store/preference/util.d.ts +4 -2
  24. package/dist/actor-store/preference/util.d.ts.map +1 -1
  25. package/dist/actor-store/preference/util.js +9 -8
  26. package/dist/actor-store/preference/util.js.map +1 -1
  27. package/dist/actor-store/record/reader.d.ts +2 -2
  28. package/dist/api/app/bsky/actor/getPreferences.d.ts.map +1 -1
  29. package/dist/api/app/bsky/actor/getPreferences.js +29 -7
  30. package/dist/api/app/bsky/actor/getPreferences.js.map +1 -1
  31. package/dist/api/app/bsky/actor/getProfile.d.ts.map +1 -1
  32. package/dist/api/app/bsky/actor/getProfile.js +9 -1
  33. package/dist/api/app/bsky/actor/getProfile.js.map +1 -1
  34. package/dist/api/app/bsky/actor/getProfiles.d.ts.map +1 -1
  35. package/dist/api/app/bsky/actor/getProfiles.js +9 -1
  36. package/dist/api/app/bsky/actor/getProfiles.js.map +1 -1
  37. package/dist/api/app/bsky/actor/putPreferences.d.ts.map +1 -1
  38. package/dist/api/app/bsky/actor/putPreferences.js +30 -8
  39. package/dist/api/app/bsky/actor/putPreferences.js.map +1 -1
  40. package/dist/api/app/bsky/feed/getActorLikes.d.ts.map +1 -1
  41. package/dist/api/app/bsky/feed/getActorLikes.js +9 -1
  42. package/dist/api/app/bsky/feed/getActorLikes.js.map +1 -1
  43. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  44. package/dist/api/app/bsky/feed/getAuthorFeed.js +9 -1
  45. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  46. package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
  47. package/dist/api/app/bsky/feed/getFeed.js +8 -1
  48. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  49. package/dist/api/app/bsky/feed/getPostThread.d.ts.map +1 -1
  50. package/dist/api/app/bsky/feed/getPostThread.js +8 -1
  51. package/dist/api/app/bsky/feed/getPostThread.js.map +1 -1
  52. package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
  53. package/dist/api/app/bsky/feed/getTimeline.js +9 -1
  54. package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
  55. package/dist/api/app/bsky/notification/registerPush.d.ts.map +1 -1
  56. package/dist/api/app/bsky/notification/registerPush.js +16 -4
  57. package/dist/api/app/bsky/notification/registerPush.js.map +1 -1
  58. package/dist/api/com/atproto/identity/getRecommendedDidCredentials.d.ts.map +1 -1
  59. package/dist/api/com/atproto/identity/getRecommendedDidCredentials.js +5 -1
  60. package/dist/api/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
  61. package/dist/api/com/atproto/identity/requestPlcOperationSignature.d.ts.map +1 -1
  62. package/dist/api/com/atproto/identity/requestPlcOperationSignature.js +9 -2
  63. package/dist/api/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
  64. package/dist/api/com/atproto/identity/signPlcOperation.d.ts.map +1 -1
  65. package/dist/api/com/atproto/identity/signPlcOperation.js +9 -1
  66. package/dist/api/com/atproto/identity/signPlcOperation.js.map +1 -1
  67. package/dist/api/com/atproto/identity/submitPlcOperation.d.ts.map +1 -1
  68. package/dist/api/com/atproto/identity/submitPlcOperation.js +5 -1
  69. package/dist/api/com/atproto/identity/submitPlcOperation.js.map +1 -1
  70. package/dist/api/com/atproto/identity/updateHandle.d.ts.map +1 -1
  71. package/dist/api/com/atproto/identity/updateHandle.js +6 -1
  72. package/dist/api/com/atproto/identity/updateHandle.js.map +1 -1
  73. package/dist/api/com/atproto/moderation/createReport.d.ts.map +1 -1
  74. package/dist/api/com/atproto/moderation/createReport.js +8 -3
  75. package/dist/api/com/atproto/moderation/createReport.js.map +1 -1
  76. package/dist/api/com/atproto/repo/applyWrites.d.ts.map +1 -1
  77. package/dist/api/com/atproto/repo/applyWrites.js +25 -19
  78. package/dist/api/com/atproto/repo/applyWrites.js.map +1 -1
  79. package/dist/api/com/atproto/repo/createRecord.d.ts.map +1 -1
  80. package/dist/api/com/atproto/repo/createRecord.js +10 -1
  81. package/dist/api/com/atproto/repo/createRecord.js.map +1 -1
  82. package/dist/api/com/atproto/repo/deleteRecord.d.ts.map +1 -1
  83. package/dist/api/com/atproto/repo/deleteRecord.js +12 -1
  84. package/dist/api/com/atproto/repo/deleteRecord.js.map +1 -1
  85. package/dist/api/com/atproto/repo/importRepo.d.ts.map +1 -1
  86. package/dist/api/com/atproto/repo/importRepo.js +7 -2
  87. package/dist/api/com/atproto/repo/importRepo.js.map +1 -1
  88. package/dist/api/com/atproto/repo/listMissingBlobs.d.ts.map +1 -1
  89. package/dist/api/com/atproto/repo/listMissingBlobs.js +6 -2
  90. package/dist/api/com/atproto/repo/listMissingBlobs.js.map +1 -1
  91. package/dist/api/com/atproto/repo/putRecord.d.ts.map +1 -1
  92. package/dist/api/com/atproto/repo/putRecord.js +17 -11
  93. package/dist/api/com/atproto/repo/putRecord.js.map +1 -1
  94. package/dist/api/com/atproto/repo/uploadBlob.d.ts.map +1 -1
  95. package/dist/api/com/atproto/repo/uploadBlob.js +5 -1
  96. package/dist/api/com/atproto/repo/uploadBlob.js.map +1 -1
  97. package/dist/api/com/atproto/server/activateAccount.d.ts.map +1 -1
  98. package/dist/api/com/atproto/server/activateAccount.js +7 -1
  99. package/dist/api/com/atproto/server/activateAccount.js.map +1 -1
  100. package/dist/api/com/atproto/server/checkAccountStatus.d.ts.map +1 -1
  101. package/dist/api/com/atproto/server/checkAccountStatus.js +5 -1
  102. package/dist/api/com/atproto/server/checkAccountStatus.js.map +1 -1
  103. package/dist/api/com/atproto/server/confirmEmail.d.ts.map +1 -1
  104. package/dist/api/com/atproto/server/confirmEmail.js +6 -1
  105. package/dist/api/com/atproto/server/confirmEmail.js.map +1 -1
  106. package/dist/api/com/atproto/server/createAppPassword.d.ts.map +1 -1
  107. package/dist/api/com/atproto/server/createAppPassword.js +7 -1
  108. package/dist/api/com/atproto/server/createAppPassword.js.map +1 -1
  109. package/dist/api/com/atproto/server/deactivateAccount.d.ts.map +1 -1
  110. package/dist/api/com/atproto/server/deactivateAccount.js +9 -2
  111. package/dist/api/com/atproto/server/deactivateAccount.js.map +1 -1
  112. package/dist/api/com/atproto/server/deleteSession.d.ts.map +1 -1
  113. package/dist/api/com/atproto/server/deleteSession.js +3 -1
  114. package/dist/api/com/atproto/server/deleteSession.js.map +1 -1
  115. package/dist/api/com/atproto/server/getAccountInviteCodes.d.ts.map +1 -1
  116. package/dist/api/com/atproto/server/getAccountInviteCodes.js +8 -1
  117. package/dist/api/com/atproto/server/getAccountInviteCodes.js.map +1 -1
  118. package/dist/api/com/atproto/server/getServiceAuth.d.ts.map +1 -1
  119. package/dist/api/com/atproto/server/getServiceAuth.js +24 -13
  120. package/dist/api/com/atproto/server/getServiceAuth.js.map +1 -1
  121. package/dist/api/com/atproto/server/getSession.d.ts.map +1 -1
  122. package/dist/api/com/atproto/server/getSession.js +12 -19
  123. package/dist/api/com/atproto/server/getSession.js.map +1 -1
  124. package/dist/api/com/atproto/server/listAppPasswords.d.ts.map +1 -1
  125. package/dist/api/com/atproto/server/listAppPasswords.js +6 -1
  126. package/dist/api/com/atproto/server/listAppPasswords.js.map +1 -1
  127. package/dist/api/com/atproto/server/refreshSession.js +1 -1
  128. package/dist/api/com/atproto/server/refreshSession.js.map +1 -1
  129. package/dist/api/com/atproto/server/requestAccountDelete.d.ts.map +1 -1
  130. package/dist/api/com/atproto/server/requestAccountDelete.js +8 -1
  131. package/dist/api/com/atproto/server/requestAccountDelete.js.map +1 -1
  132. package/dist/api/com/atproto/server/requestEmailConfirmation.d.ts.map +1 -1
  133. package/dist/api/com/atproto/server/requestEmailConfirmation.js +6 -1
  134. package/dist/api/com/atproto/server/requestEmailConfirmation.js.map +1 -1
  135. package/dist/api/com/atproto/server/requestEmailUpdate.d.ts.map +1 -1
  136. package/dist/api/com/atproto/server/requestEmailUpdate.js +6 -1
  137. package/dist/api/com/atproto/server/requestEmailUpdate.js.map +1 -1
  138. package/dist/api/com/atproto/server/revokeAppPassword.d.ts.map +1 -1
  139. package/dist/api/com/atproto/server/revokeAppPassword.js +6 -1
  140. package/dist/api/com/atproto/server/revokeAppPassword.js.map +1 -1
  141. package/dist/api/com/atproto/server/updateEmail.d.ts.map +1 -1
  142. package/dist/api/com/atproto/server/updateEmail.js +8 -1
  143. package/dist/api/com/atproto/server/updateEmail.js.map +1 -1
  144. package/dist/api/com/atproto/sync/deprecated/getCheckout.d.ts.map +1 -1
  145. package/dist/api/com/atproto/sync/deprecated/getCheckout.js +7 -2
  146. package/dist/api/com/atproto/sync/deprecated/getCheckout.js.map +1 -1
  147. package/dist/api/com/atproto/sync/deprecated/getHead.d.ts.map +1 -1
  148. package/dist/api/com/atproto/sync/deprecated/getHead.js +7 -2
  149. package/dist/api/com/atproto/sync/deprecated/getHead.js.map +1 -1
  150. package/dist/api/com/atproto/sync/getBlob.d.ts.map +1 -1
  151. package/dist/api/com/atproto/sync/getBlob.js +7 -3
  152. package/dist/api/com/atproto/sync/getBlob.js.map +1 -1
  153. package/dist/api/com/atproto/sync/getBlocks.d.ts.map +1 -1
  154. package/dist/api/com/atproto/sync/getBlocks.js +7 -2
  155. package/dist/api/com/atproto/sync/getBlocks.js.map +1 -1
  156. package/dist/api/com/atproto/sync/getLatestCommit.d.ts.map +1 -1
  157. package/dist/api/com/atproto/sync/getLatestCommit.js +7 -2
  158. package/dist/api/com/atproto/sync/getLatestCommit.js.map +1 -1
  159. package/dist/api/com/atproto/sync/getRecord.d.ts.map +1 -1
  160. package/dist/api/com/atproto/sync/getRecord.js +7 -2
  161. package/dist/api/com/atproto/sync/getRecord.js.map +1 -1
  162. package/dist/api/com/atproto/sync/getRepo.d.ts.map +1 -1
  163. package/dist/api/com/atproto/sync/getRepo.js +7 -3
  164. package/dist/api/com/atproto/sync/getRepo.js.map +1 -1
  165. package/dist/api/com/atproto/sync/listBlobs.d.ts.map +1 -1
  166. package/dist/api/com/atproto/sync/listBlobs.js +7 -3
  167. package/dist/api/com/atproto/sync/listBlobs.js.map +1 -1
  168. package/dist/api/com/atproto/temp/checkSignupQueue.d.ts.map +1 -1
  169. package/dist/api/com/atproto/temp/checkSignupQueue.js +7 -3
  170. package/dist/api/com/atproto/temp/checkSignupQueue.js.map +1 -1
  171. package/dist/auth-output.d.ts +45 -0
  172. package/dist/auth-output.d.ts.map +1 -0
  173. package/dist/auth-output.js +3 -0
  174. package/dist/auth-output.js.map +1 -0
  175. package/dist/auth-scope.d.ts +16 -0
  176. package/dist/auth-scope.d.ts.map +1 -0
  177. package/dist/auth-scope.js +40 -0
  178. package/dist/auth-scope.js.map +1 -0
  179. package/dist/auth-verifier.d.ts +50 -115
  180. package/dist/auth-verifier.d.ts.map +1 -1
  181. package/dist/auth-verifier.js +275 -366
  182. package/dist/auth-verifier.js.map +1 -1
  183. package/dist/config/config.d.ts +2 -1
  184. package/dist/config/config.d.ts.map +1 -1
  185. package/dist/config/config.js +2 -1
  186. package/dist/config/config.js.map +1 -1
  187. package/dist/config/env.d.ts +1 -0
  188. package/dist/config/env.d.ts.map +1 -1
  189. package/dist/config/env.js +3 -1
  190. package/dist/config/env.js.map +1 -1
  191. package/dist/context.d.ts.map +1 -1
  192. package/dist/context.js +5 -5
  193. package/dist/context.js.map +1 -1
  194. package/dist/lexicon/index.d.ts +230 -230
  195. package/dist/lexicon/index.d.ts.map +1 -1
  196. package/dist/lexicon/index.js +687 -687
  197. package/dist/lexicon/index.js.map +1 -1
  198. package/dist/lexicon/lexicons.d.ts +16650 -16650
  199. package/dist/lexicon/lexicons.js +9267 -9267
  200. package/dist/lexicon/lexicons.js.map +1 -1
  201. package/dist/pipethrough.d.ts +5 -3
  202. package/dist/pipethrough.d.ts.map +1 -1
  203. package/dist/pipethrough.js +42 -15
  204. package/dist/pipethrough.js.map +1 -1
  205. package/dist/sequencer/events.d.ts +13 -13
  206. package/dist/util/http.d.ts +7 -0
  207. package/dist/util/http.d.ts.map +1 -0
  208. package/dist/util/http.js +31 -0
  209. package/dist/util/http.js.map +1 -0
  210. package/dist/util/types.d.ts +5 -0
  211. package/dist/util/types.d.ts.map +1 -0
  212. package/dist/util/types.js +3 -0
  213. package/dist/util/types.js.map +1 -0
  214. package/package.json +4 -3
  215. package/src/account-manager/account-manager.ts +1 -1
  216. package/src/account-manager/helpers/auth.ts +1 -1
  217. package/src/account-manager/helpers/authorization-request.ts +8 -4
  218. package/src/actor-store/preference/reader.ts +3 -4
  219. package/src/actor-store/preference/transactor.ts +6 -7
  220. package/src/actor-store/preference/util.ts +15 -5
  221. package/src/api/app/bsky/actor/getPreferences.ts +33 -8
  222. package/src/api/app/bsky/actor/getProfile.ts +9 -1
  223. package/src/api/app/bsky/actor/getProfiles.ts +9 -1
  224. package/src/api/app/bsky/actor/putPreferences.ts +35 -12
  225. package/src/api/app/bsky/feed/getActorLikes.ts +9 -1
  226. package/src/api/app/bsky/feed/getAuthorFeed.ts +9 -1
  227. package/src/api/app/bsky/feed/getFeed.ts +9 -2
  228. package/src/api/app/bsky/feed/getPostThread.ts +8 -1
  229. package/src/api/app/bsky/feed/getTimeline.ts +9 -1
  230. package/src/api/app/bsky/notification/registerPush.ts +16 -5
  231. package/src/api/com/atproto/identity/getRecommendedDidCredentials.ts +5 -1
  232. package/src/api/com/atproto/identity/requestPlcOperationSignature.ts +9 -2
  233. package/src/api/com/atproto/identity/signPlcOperation.ts +9 -1
  234. package/src/api/com/atproto/identity/submitPlcOperation.ts +5 -1
  235. package/src/api/com/atproto/identity/updateHandle.ts +6 -1
  236. package/src/api/com/atproto/moderation/createReport.ts +8 -3
  237. package/src/api/com/atproto/repo/applyWrites.ts +28 -20
  238. package/src/api/com/atproto/repo/createRecord.ts +12 -1
  239. package/src/api/com/atproto/repo/deleteRecord.ts +14 -1
  240. package/src/api/com/atproto/repo/importRepo.ts +9 -2
  241. package/src/api/com/atproto/repo/listMissingBlobs.ts +7 -2
  242. package/src/api/com/atproto/repo/putRecord.ts +18 -10
  243. package/src/api/com/atproto/repo/uploadBlob.ts +6 -2
  244. package/src/api/com/atproto/server/activateAccount.ts +10 -2
  245. package/src/api/com/atproto/server/checkAccountStatus.ts +5 -1
  246. package/src/api/com/atproto/server/confirmEmail.ts +6 -1
  247. package/src/api/com/atproto/server/createAppPassword.ts +9 -1
  248. package/src/api/com/atproto/server/deactivateAccount.ts +11 -2
  249. package/src/api/com/atproto/server/deleteSession.ts +3 -1
  250. package/src/api/com/atproto/server/getAccountInviteCodes.ts +11 -2
  251. package/src/api/com/atproto/server/getServiceAuth.ts +37 -18
  252. package/src/api/com/atproto/server/getSession.ts +20 -27
  253. package/src/api/com/atproto/server/listAppPasswords.ts +8 -1
  254. package/src/api/com/atproto/server/refreshSession.ts +1 -1
  255. package/src/api/com/atproto/server/requestAccountDelete.ts +11 -2
  256. package/src/api/com/atproto/server/requestEmailConfirmation.ts +6 -1
  257. package/src/api/com/atproto/server/requestEmailUpdate.ts +6 -1
  258. package/src/api/com/atproto/server/revokeAppPassword.ts +8 -1
  259. package/src/api/com/atproto/server/updateEmail.ts +11 -2
  260. package/src/api/com/atproto/sync/deprecated/getCheckout.ts +7 -6
  261. package/src/api/com/atproto/sync/deprecated/getHead.ts +7 -6
  262. package/src/api/com/atproto/sync/getBlob.ts +7 -7
  263. package/src/api/com/atproto/sync/getBlocks.ts +7 -6
  264. package/src/api/com/atproto/sync/getLatestCommit.ts +7 -6
  265. package/src/api/com/atproto/sync/getRecord.ts +7 -6
  266. package/src/api/com/atproto/sync/getRepo.ts +7 -7
  267. package/src/api/com/atproto/sync/listBlobs.ts +7 -7
  268. package/src/api/com/atproto/temp/checkSignupQueue.ts +8 -2
  269. package/src/auth-output.ts +51 -0
  270. package/src/auth-scope.ts +40 -0
  271. package/src/auth-verifier.ts +404 -520
  272. package/src/config/config.ts +7 -7
  273. package/src/config/env.ts +5 -1
  274. package/src/context.ts +6 -5
  275. package/src/lexicon/index.ts +1235 -1235
  276. package/src/lexicon/lexicons.ts +9416 -9416
  277. package/src/pipethrough.ts +61 -18
  278. package/src/util/http.ts +31 -0
  279. package/src/util/types.ts +7 -0
  280. package/tests/oauth.test.ts +11 -37
  281. package/tests/preferences.test.ts +7 -3
  282. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,6 +1,6 @@
1
1
  import { IncomingHttpHeaders, ServerResponse } from 'node:http'
2
2
  import { PassThrough, Readable } from 'node:stream'
3
- import express from 'express'
3
+ import { Request } from 'express'
4
4
  import { Dispatcher } from 'undici'
5
5
  import {
6
6
  decodeStream,
@@ -8,6 +8,7 @@ import {
8
8
  omit,
9
9
  streamToNodeBuffer,
10
10
  } from '@atproto/common'
11
+ import { RpcScopeMatch } from '@atproto/oauth-scopes'
11
12
  import { ResponseType, XRPCError as XRPCClientError } from '@atproto/xrpc'
12
13
  import {
13
14
  CatchallHandler,
@@ -16,15 +17,20 @@ import {
16
17
  InternalServerError,
17
18
  InvalidRequestError,
18
19
  XRPCError as XRPCServerError,
20
+ excludeErrorResult,
19
21
  parseReqNsid,
20
22
  } from '@atproto/xrpc-server'
21
23
  import { buildProxiedContentEncoding } from '@atproto-labs/xrpc-utils'
24
+ import { isAccessPrivileged } from './auth-scope'
22
25
  import { AppContext } from './context'
23
26
  import { ids } from './lexicon/lexicons'
24
27
  import { httpLogger } from './logger'
25
28
 
26
29
  export const proxyHandler = (ctx: AppContext): CatchallHandler => {
27
- const accessStandard = ctx.authVerifier.accessStandard()
30
+ const performAuth = ctx.authVerifier.authorization<RpcScopeMatch>({
31
+ authorize: (permissions, { params }) => permissions.assertRpc(params),
32
+ })
33
+
28
34
  return async (req, res, next) => {
29
35
  // /!\ Hot path
30
36
  try {
@@ -50,13 +56,20 @@ export const proxyHandler = (ctx: AppContext): CatchallHandler => {
50
56
  throw new InvalidRequestError('Bad token method', 'InvalidToken')
51
57
  }
52
58
 
53
- const auth = await accessStandard({ req, res })
54
- if (!auth.credentials.isPrivileged && PRIVILEGED_METHODS.has(lxm)) {
59
+ const { url: origin, did: aud } = await parseProxyInfo(ctx, req, lxm)
60
+
61
+ const authResult = await performAuth({ req, res, params: { lxm, aud } })
62
+
63
+ const { credentials } = excludeErrorResult(authResult)
64
+
65
+ if (
66
+ credentials.type === 'access' &&
67
+ !isAccessPrivileged(credentials.scope) &&
68
+ PRIVILEGED_METHODS.has(lxm)
69
+ ) {
55
70
  throw new InvalidRequestError('Bad token method', 'InvalidToken')
56
71
  }
57
72
 
58
- const { url: origin, did: aud } = await parseProxyInfo(ctx, req, lxm)
59
-
60
73
  const headers: IncomingHttpHeaders = {
61
74
  'accept-encoding': req.headers['accept-encoding'] || 'identity',
62
75
  'accept-language': req.headers['accept-language'],
@@ -67,9 +80,7 @@ export const proxyHandler = (ctx: AppContext): CatchallHandler => {
67
80
  'content-encoding': body && req.headers['content-encoding'],
68
81
  'content-length': body && req.headers['content-length'],
69
82
 
70
- authorization: auth.credentials.did
71
- ? `Bearer ${await ctx.serviceAuthJwt(auth.credentials.did, aud, lxm)}`
72
- : undefined,
83
+ authorization: `Bearer ${await ctx.serviceAuthJwt(credentials.did, aud, lxm)}`,
73
84
  }
74
85
 
75
86
  const dispatchOptions: Dispatcher.RequestOptions = {
@@ -122,7 +133,7 @@ export type PipethroughOptions = {
122
133
 
123
134
  export async function pipethrough(
124
135
  ctx: AppContext,
125
- req: express.Request,
136
+ req: Request,
126
137
  options?: PipethroughOptions,
127
138
  ): Promise<
128
139
  HandlerPipeThroughStream & {
@@ -189,9 +200,25 @@ export async function pipethrough(
189
200
  // Request setup/formatting
190
201
  // -------------------
191
202
 
203
+ export function computeProxyTo(
204
+ ctx: AppContext,
205
+ req: Request,
206
+ lxm: string,
207
+ ): string {
208
+ const proxyToHeader = req.header('atproto-proxy')
209
+ if (proxyToHeader) return proxyToHeader
210
+
211
+ const service = defaultService(ctx, lxm)
212
+ if (service.serviceInfo) {
213
+ return `${service.serviceInfo.did}#${service.serviceId}`
214
+ }
215
+
216
+ throw new InvalidRequestError(`No service configured for ${lxm}`)
217
+ }
218
+
192
219
  export async function parseProxyInfo(
193
220
  ctx: AppContext,
194
- req: express.Request,
221
+ req: Request,
195
222
  lxm: string,
196
223
  ): Promise<{ url: string; did: string }> {
197
224
  // /!\ Hot path
@@ -199,8 +226,8 @@ export async function parseProxyInfo(
199
226
  const proxyToHeader = req.header('atproto-proxy')
200
227
  if (proxyToHeader) return parseProxyHeader(ctx, proxyToHeader)
201
228
 
202
- const defaultProxy = defaultService(ctx, lxm)
203
- if (defaultProxy) return defaultProxy
229
+ const { serviceInfo } = defaultService(ctx, lxm)
230
+ if (serviceInfo) return serviceInfo
204
231
 
205
232
  throw new InvalidRequestError(`No service configured for ${lxm}`)
206
233
  }
@@ -472,7 +499,7 @@ function* responseHeaders(
472
499
  // Utils
473
500
  // -------------------
474
501
 
475
- export const PRIVILEGED_METHODS = new Set<string>([
502
+ export const CHAT_BSKY_METHODS = new Set<string>([
476
503
  ids.ChatBskyActorDeleteAccount,
477
504
  ids.ChatBskyActorExportAccountData,
478
505
  ids.ChatBskyConvoDeleteMessageForSelf,
@@ -487,6 +514,10 @@ export const PRIVILEGED_METHODS = new Set<string>([
487
514
  ids.ChatBskyConvoSendMessageBatch,
488
515
  ids.ChatBskyConvoUnmuteConvo,
489
516
  ids.ChatBskyConvoUpdateRead,
517
+ ])
518
+
519
+ export const PRIVILEGED_METHODS = new Set<string>([
520
+ ...CHAT_BSKY_METHODS,
490
521
  ids.ComAtprotoServerCreateAccount,
491
522
  ])
492
523
 
@@ -515,7 +546,10 @@ export const PROTECTED_METHODS = new Set<string>([
515
546
  const defaultService = (
516
547
  ctx: AppContext,
517
548
  nsid: string,
518
- ): { url: string; did: string } | null => {
549
+ ): {
550
+ serviceId: string
551
+ serviceInfo: { url: string; did: string } | null
552
+ } => {
519
553
  switch (nsid) {
520
554
  case ids.ToolsOzoneTeamAddMember:
521
555
  case ids.ToolsOzoneTeamDeleteMember:
@@ -541,11 +575,20 @@ const defaultService = (
541
575
  case ids.ToolsOzoneSafelinkRemoveRule:
542
576
  case ids.ToolsOzoneSafelinkQueryEvents:
543
577
  case ids.ToolsOzoneSafelinkQueryRules:
544
- return ctx.cfg.modService
578
+ return {
579
+ serviceId: 'atproto_labeler',
580
+ serviceInfo: ctx.cfg.modService,
581
+ }
545
582
  case ids.ComAtprotoModerationCreateReport:
546
- return ctx.cfg.reportService
583
+ return {
584
+ serviceId: 'atproto_labeler',
585
+ serviceInfo: ctx.cfg.reportService,
586
+ }
547
587
  default:
548
- return ctx.cfg.bskyAppView
588
+ return {
589
+ serviceId: 'bsky_appview',
590
+ serviceInfo: ctx.cfg.bskyAppView,
591
+ }
549
592
  }
550
593
  }
551
594
 
@@ -0,0 +1,31 @@
1
+ import { ServerResponse } from 'node:http'
2
+
3
+ /**
4
+ * Set or appends a value to the `Vary` header in the response, only if the
5
+ * value is not already present.
6
+ */
7
+ export function appendVary(res: ServerResponse, value: string) {
8
+ if (!varyContains(res, value.toLowerCase())) {
9
+ res.appendHeader('Vary', value)
10
+ }
11
+ }
12
+
13
+ function varyContains(res: ServerResponse, searchValue: string) {
14
+ const headerValue = res.getHeader('Vary')
15
+ switch (typeof headerValue) {
16
+ case 'string':
17
+ return varyStringContains(headerValue, searchValue)
18
+ case 'object':
19
+ // headerValue is a string[] here
20
+ return headerValue.some((h) => varyStringContains(h, searchValue))
21
+ default:
22
+ return false
23
+ }
24
+ }
25
+
26
+ function varyStringContains(headerValue: string, searchValue: string): boolean {
27
+ return headerValue
28
+ .split(',')
29
+ .map((v) => v.trim().toLowerCase())
30
+ .some((v) => v === searchValue || v === `*`)
31
+ }
@@ -0,0 +1,7 @@
1
+ export type Simplify<T> = {
2
+ [K in keyof T]: T[K]
3
+ } & NonNullable<unknown>
4
+
5
+ export type WithRequired<T, K extends keyof T> = Simplify<
6
+ Omit<T, K> & Required<Pick<T, K>>
7
+ >
@@ -180,7 +180,11 @@ describe('oauth', () => {
180
180
  })
181
181
 
182
182
  it('allows resetting the password', async () => {
183
- const sendTemplateMock = await withMokedMailer(network)
183
+ const sendTemplateMock = jest
184
+ .spyOn(network.pds.ctx.mailer, 'sendResetPassword')
185
+ .mockImplementation(async () => {
186
+ // noop
187
+ })
184
188
 
185
189
  const page = await PageHelper.from(browser)
186
190
 
@@ -194,7 +198,7 @@ describe('oauth', () => {
194
198
  await input.press('Enter')
195
199
  })
196
200
 
197
- await page.checkTitle('Se connecter')
201
+ await page.checkTitle('Connexion')
198
202
 
199
203
  await page.clickOnButton('Oublié ?')
200
204
 
@@ -210,17 +214,13 @@ describe('oauth', () => {
210
214
 
211
215
  expect(sendTemplateMock).toHaveBeenCalledTimes(1)
212
216
 
213
- const [templateName, params] = sendTemplateMock.mock.calls[0]
214
-
215
- expect(templateName).toBe('resetPassword')
217
+ const [params] = sendTemplateMock.mock.lastCall
216
218
  expect(params).toEqual({
217
219
  handle: 'alice.test',
218
220
  token: expect.any(String),
219
221
  })
220
222
 
221
- const { token } = params as { token: string }
222
-
223
- await page.typeInInput('code', token)
223
+ await page.typeInInput('code', params.token)
224
224
 
225
225
  await page.typeInInput('password', 'alice-new-pass')
226
226
 
@@ -233,8 +233,7 @@ describe('oauth', () => {
233
233
  // TODO: Find out why we can't use "using" here
234
234
  await page[Symbol.asyncDispose]()
235
235
 
236
- // TODO: Find out why we can't use "using" here
237
- sendTemplateMock[Symbol.dispose]()
236
+ sendTemplateMock.mockRestore()
238
237
  })
239
238
 
240
239
  it('Allows to sign-in trough OAuth', async () => {
@@ -250,12 +249,12 @@ describe('oauth', () => {
250
249
  await input.press('Enter')
251
250
  })
252
251
 
253
- await page.checkTitle('Se connecter')
252
+ await page.checkTitle('Connexion')
254
253
 
255
254
  await page.typeIn('input[type="password"]', 'alice-new-pass')
256
255
 
257
256
  // Make sure the warning is visible
258
- await page.ensureTextVisibility('Avertissement')
257
+ await page.ensureTextVisibility('Avertissement', 'h3')
259
258
 
260
259
  await page.clickOn(
261
260
  'label::-p-text(Se souvenir de ce compte sur cet appareil)',
@@ -317,31 +316,6 @@ describe('oauth', () => {
317
316
  })
318
317
  })
319
318
 
320
- async function withMokedMailer(network: TestNetworkNoAppView) {
321
- // @ts-expect-error
322
- const sendTemplateOrig = network.pds.ctx.mailer.sendTemplate
323
- const sendTemplateMock = jest.fn(
324
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
325
- async (templateName: unknown, params: unknown, mailOpts: unknown) => {
326
- //
327
- },
328
- ) as jest.Mock<
329
- Promise<void>,
330
- [templateName: unknown, params: unknown, mailOpts: unknown]
331
- > &
332
- Disposable
333
-
334
- sendTemplateMock[Symbol.dispose] = () => {
335
- // @ts-expect-error
336
- network.pds.ctx.mailer.sendTemplate = sendTemplateOrig
337
- }
338
-
339
- // @ts-expect-error
340
- network.pds.ctx.mailer.sendTemplate = sendTemplateMock
341
-
342
- return sendTemplateMock
343
- }
344
-
345
319
  function clientHandler(
346
320
  req: IncomingMessage,
347
321
  res: ServerResponse,
@@ -1,6 +1,5 @@
1
1
  import { AtpAgent } from '@atproto/api'
2
2
  import { SeedClient, TestNetworkNoAppView } from '@atproto/dev-env'
3
- import { AuthScope } from '../dist/auth-verifier'
4
3
  import usersSeed from './seeds/users'
5
4
 
6
5
  describe('user preferences', () => {
@@ -58,7 +57,9 @@ describe('user preferences', () => {
58
57
  store.pref.putPreferences(
59
58
  [{ $type: 'com.atproto.server.defs#unknown' }],
60
59
  'com.atproto',
61
- AuthScope.Access,
60
+ {
61
+ hasAccessFull: true,
62
+ },
62
63
  ),
63
64
  )
64
65
  const { data } = await agent.api.app.bsky.actor.getPreferences(
@@ -109,7 +110,10 @@ describe('user preferences', () => {
109
110
  // Ensure other prefs were not clobbered
110
111
  const otherPrefs = await network.pds.ctx.actorStore.read(
111
112
  sc.dids.alice,
112
- (store) => store.pref.getPreferences('com.atproto', AuthScope.Access),
113
+ (store) =>
114
+ store.pref.getPreferences('com.atproto', {
115
+ hasAccessFull: true,
116
+ }),
113
117
  )
114
118
  expect(otherPrefs).toEqual([{ $type: 'com.atproto.server.defs#unknown' }])
115
119
  })
@@ -1 +1 @@
1
- {"root":["./src/app-view.ts","./src/auth-routes.ts","./src/auth-verifier.ts","./src/background.ts","./src/basic-routes.ts","./src/bsky-app-view.ts","./src/context.ts","./src/crawlers.ts","./src/disk-blobstore.ts","./src/error.ts","./src/index.ts","./src/logger.ts","./src/pipethrough.ts","./src/redis.ts","./src/well-known.ts","./src/account-manager/account-manager.ts","./src/account-manager/oauth-store.ts","./src/account-manager/db/index.ts","./src/account-manager/db/migrations/001-init.ts","./src/account-manager/db/migrations/002-account-deactivation.ts","./src/account-manager/db/migrations/003-privileged-app-passwords.ts","./src/account-manager/db/migrations/004-oauth.ts","./src/account-manager/db/migrations/005-oauth-account-management.ts","./src/account-manager/db/migrations/index.ts","./src/account-manager/db/schema/account-device.ts","./src/account-manager/db/schema/account.ts","./src/account-manager/db/schema/actor.ts","./src/account-manager/db/schema/app-password.ts","./src/account-manager/db/schema/authorization-request.ts","./src/account-manager/db/schema/authorized-client.ts","./src/account-manager/db/schema/device.ts","./src/account-manager/db/schema/email-token.ts","./src/account-manager/db/schema/index.ts","./src/account-manager/db/schema/invite-code.ts","./src/account-manager/db/schema/refresh-token.ts","./src/account-manager/db/schema/repo-root.ts","./src/account-manager/db/schema/token.ts","./src/account-manager/db/schema/used-refresh-token.ts","./src/account-manager/helpers/account-device.ts","./src/account-manager/helpers/account.ts","./src/account-manager/helpers/auth.ts","./src/account-manager/helpers/authorization-request.ts","./src/account-manager/helpers/authorized-client.ts","./src/account-manager/helpers/device.ts","./src/account-manager/helpers/email-token.ts","./src/account-manager/helpers/invite.ts","./src/account-manager/helpers/password.ts","./src/account-manager/helpers/repo.ts","./src/account-manager/helpers/scrypt.ts","./src/account-manager/helpers/token.ts","./src/account-manager/helpers/used-refresh-token.ts","./src/actor-store/actor-store-reader.ts","./src/actor-store/actor-store-resources.ts","./src/actor-store/actor-store-transactor.ts","./src/actor-store/actor-store-writer.ts","./src/actor-store/actor-store.ts","./src/actor-store/migrate.ts","./src/actor-store/blob/reader.ts","./src/actor-store/blob/transactor.ts","./src/actor-store/db/index.ts","./src/actor-store/db/migrations/001-init.ts","./src/actor-store/db/migrations/index.ts","./src/actor-store/db/schema/account-pref.ts","./src/actor-store/db/schema/backlink.ts","./src/actor-store/db/schema/blob.ts","./src/actor-store/db/schema/index.ts","./src/actor-store/db/schema/record-blob.ts","./src/actor-store/db/schema/record.ts","./src/actor-store/db/schema/repo-block.ts","./src/actor-store/db/schema/repo-root.ts","./src/actor-store/preference/reader.ts","./src/actor-store/preference/transactor.ts","./src/actor-store/preference/util.ts","./src/actor-store/record/reader.ts","./src/actor-store/record/transactor.ts","./src/actor-store/repo/reader.ts","./src/actor-store/repo/sql-repo-reader.ts","./src/actor-store/repo/sql-repo-transactor.ts","./src/actor-store/repo/transactor.ts","./src/api/index.ts","./src/api/proxy.ts","./src/api/app/bsky/index.ts","./src/api/app/bsky/actor/getPreferences.ts","./src/api/app/bsky/actor/getProfile.ts","./src/api/app/bsky/actor/getProfiles.ts","./src/api/app/bsky/actor/index.ts","./src/api/app/bsky/actor/putPreferences.ts","./src/api/app/bsky/feed/getActorLikes.ts","./src/api/app/bsky/feed/getAuthorFeed.ts","./src/api/app/bsky/feed/getFeed.ts","./src/api/app/bsky/feed/getPostThread.ts","./src/api/app/bsky/feed/getTimeline.ts","./src/api/app/bsky/feed/index.ts","./src/api/app/bsky/notification/index.ts","./src/api/app/bsky/notification/registerPush.ts","./src/api/app/bsky/util/resolver.ts","./src/api/com/atproto/index.ts","./src/api/com/atproto/admin/deleteAccount.ts","./src/api/com/atproto/admin/disableAccountInvites.ts","./src/api/com/atproto/admin/disableInviteCodes.ts","./src/api/com/atproto/admin/enableAccountInvites.ts","./src/api/com/atproto/admin/getAccountInfo.ts","./src/api/com/atproto/admin/getAccountInfos.ts","./src/api/com/atproto/admin/getInviteCodes.ts","./src/api/com/atproto/admin/getSubjectStatus.ts","./src/api/com/atproto/admin/index.ts","./src/api/com/atproto/admin/sendEmail.ts","./src/api/com/atproto/admin/updateAccountEmail.ts","./src/api/com/atproto/admin/updateAccountHandle.ts","./src/api/com/atproto/admin/updateAccountPassword.ts","./src/api/com/atproto/admin/updateSubjectStatus.ts","./src/api/com/atproto/admin/util.ts","./src/api/com/atproto/identity/getRecommendedDidCredentials.ts","./src/api/com/atproto/identity/index.ts","./src/api/com/atproto/identity/requestPlcOperationSignature.ts","./src/api/com/atproto/identity/resolveHandle.ts","./src/api/com/atproto/identity/signPlcOperation.ts","./src/api/com/atproto/identity/submitPlcOperation.ts","./src/api/com/atproto/identity/updateHandle.ts","./src/api/com/atproto/moderation/createReport.ts","./src/api/com/atproto/moderation/index.ts","./src/api/com/atproto/repo/applyWrites.ts","./src/api/com/atproto/repo/createRecord.ts","./src/api/com/atproto/repo/deleteRecord.ts","./src/api/com/atproto/repo/describeRepo.ts","./src/api/com/atproto/repo/getRecord.ts","./src/api/com/atproto/repo/importRepo.ts","./src/api/com/atproto/repo/index.ts","./src/api/com/atproto/repo/listMissingBlobs.ts","./src/api/com/atproto/repo/listRecords.ts","./src/api/com/atproto/repo/putRecord.ts","./src/api/com/atproto/repo/uploadBlob.ts","./src/api/com/atproto/server/activateAccount.ts","./src/api/com/atproto/server/checkAccountStatus.ts","./src/api/com/atproto/server/confirmEmail.ts","./src/api/com/atproto/server/createAccount.ts","./src/api/com/atproto/server/createAppPassword.ts","./src/api/com/atproto/server/createInviteCode.ts","./src/api/com/atproto/server/createInviteCodes.ts","./src/api/com/atproto/server/createSession.ts","./src/api/com/atproto/server/deactivateAccount.ts","./src/api/com/atproto/server/deleteAccount.ts","./src/api/com/atproto/server/deleteSession.ts","./src/api/com/atproto/server/describeServer.ts","./src/api/com/atproto/server/getAccountInviteCodes.ts","./src/api/com/atproto/server/getServiceAuth.ts","./src/api/com/atproto/server/getSession.ts","./src/api/com/atproto/server/index.ts","./src/api/com/atproto/server/listAppPasswords.ts","./src/api/com/atproto/server/refreshSession.ts","./src/api/com/atproto/server/requestAccountDelete.ts","./src/api/com/atproto/server/requestEmailConfirmation.ts","./src/api/com/atproto/server/requestEmailUpdate.ts","./src/api/com/atproto/server/requestPasswordReset.ts","./src/api/com/atproto/server/reserveSigningKey.ts","./src/api/com/atproto/server/resetPassword.ts","./src/api/com/atproto/server/revokeAppPassword.ts","./src/api/com/atproto/server/updateEmail.ts","./src/api/com/atproto/server/util.ts","./src/api/com/atproto/sync/getBlob.ts","./src/api/com/atproto/sync/getBlocks.ts","./src/api/com/atproto/sync/getLatestCommit.ts","./src/api/com/atproto/sync/getRecord.ts","./src/api/com/atproto/sync/getRepo.ts","./src/api/com/atproto/sync/getRepoStatus.ts","./src/api/com/atproto/sync/index.ts","./src/api/com/atproto/sync/listBlobs.ts","./src/api/com/atproto/sync/listRepos.ts","./src/api/com/atproto/sync/subscribeRepos.ts","./src/api/com/atproto/sync/util.ts","./src/api/com/atproto/sync/deprecated/getCheckout.ts","./src/api/com/atproto/sync/deprecated/getHead.ts","./src/api/com/atproto/temp/checkSignupQueue.ts","./src/api/com/atproto/temp/index.ts","./src/config/config.ts","./src/config/env.ts","./src/config/index.ts","./src/config/secrets.ts","./src/db/cast.ts","./src/db/db.ts","./src/db/index.ts","./src/db/migrator.ts","./src/db/pagination.ts","./src/db/util.ts","./src/db/tables/moderation.ts","./src/did-cache/index.ts","./src/did-cache/db/index.ts","./src/did-cache/db/migrations.ts","./src/did-cache/db/schema.ts","./src/handle/explicit-slurs.ts","./src/handle/index.ts","./src/handle/reserved.ts","./src/image/image-url-builder.ts","./src/image/index.ts","./src/lexicon/index.ts","./src/lexicon/lexicons.ts","./src/lexicon/util.ts","./src/lexicon/types/app/bsky/actor/defs.ts","./src/lexicon/types/app/bsky/actor/getPreferences.ts","./src/lexicon/types/app/bsky/actor/getProfile.ts","./src/lexicon/types/app/bsky/actor/getProfiles.ts","./src/lexicon/types/app/bsky/actor/getSuggestions.ts","./src/lexicon/types/app/bsky/actor/profile.ts","./src/lexicon/types/app/bsky/actor/putPreferences.ts","./src/lexicon/types/app/bsky/actor/searchActors.ts","./src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts","./src/lexicon/types/app/bsky/actor/status.ts","./src/lexicon/types/app/bsky/embed/defs.ts","./src/lexicon/types/app/bsky/embed/external.ts","./src/lexicon/types/app/bsky/embed/images.ts","./src/lexicon/types/app/bsky/embed/record.ts","./src/lexicon/types/app/bsky/embed/recordWithMedia.ts","./src/lexicon/types/app/bsky/embed/video.ts","./src/lexicon/types/app/bsky/feed/defs.ts","./src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/generator.ts","./src/lexicon/types/app/bsky/feed/getActorFeeds.ts","./src/lexicon/types/app/bsky/feed/getActorLikes.ts","./src/lexicon/types/app/bsky/feed/getAuthorFeed.ts","./src/lexicon/types/app/bsky/feed/getFeed.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerators.ts","./src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts","./src/lexicon/types/app/bsky/feed/getLikes.ts","./src/lexicon/types/app/bsky/feed/getListFeed.ts","./src/lexicon/types/app/bsky/feed/getPostThread.ts","./src/lexicon/types/app/bsky/feed/getPosts.ts","./src/lexicon/types/app/bsky/feed/getQuotes.ts","./src/lexicon/types/app/bsky/feed/getRepostedBy.ts","./src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts","./src/lexicon/types/app/bsky/feed/getTimeline.ts","./src/lexicon/types/app/bsky/feed/like.ts","./src/lexicon/types/app/bsky/feed/post.ts","./src/lexicon/types/app/bsky/feed/postgate.ts","./src/lexicon/types/app/bsky/feed/repost.ts","./src/lexicon/types/app/bsky/feed/searchPosts.ts","./src/lexicon/types/app/bsky/feed/sendInteractions.ts","./src/lexicon/types/app/bsky/feed/threadgate.ts","./src/lexicon/types/app/bsky/graph/block.ts","./src/lexicon/types/app/bsky/graph/defs.ts","./src/lexicon/types/app/bsky/graph/follow.ts","./src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getBlocks.ts","./src/lexicon/types/app/bsky/graph/getFollowers.ts","./src/lexicon/types/app/bsky/graph/getFollows.ts","./src/lexicon/types/app/bsky/graph/getKnownFollowers.ts","./src/lexicon/types/app/bsky/graph/getList.ts","./src/lexicon/types/app/bsky/graph/getListBlocks.ts","./src/lexicon/types/app/bsky/graph/getListMutes.ts","./src/lexicon/types/app/bsky/graph/getLists.ts","./src/lexicon/types/app/bsky/graph/getListsWithMembership.ts","./src/lexicon/types/app/bsky/graph/getMutes.ts","./src/lexicon/types/app/bsky/graph/getRelationships.ts","./src/lexicon/types/app/bsky/graph/getStarterPack.ts","./src/lexicon/types/app/bsky/graph/getStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.ts","./src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts","./src/lexicon/types/app/bsky/graph/list.ts","./src/lexicon/types/app/bsky/graph/listblock.ts","./src/lexicon/types/app/bsky/graph/listitem.ts","./src/lexicon/types/app/bsky/graph/muteActor.ts","./src/lexicon/types/app/bsky/graph/muteActorList.ts","./src/lexicon/types/app/bsky/graph/muteThread.ts","./src/lexicon/types/app/bsky/graph/searchStarterPacks.ts","./src/lexicon/types/app/bsky/graph/starterpack.ts","./src/lexicon/types/app/bsky/graph/unmuteActor.ts","./src/lexicon/types/app/bsky/graph/unmuteActorList.ts","./src/lexicon/types/app/bsky/graph/unmuteThread.ts","./src/lexicon/types/app/bsky/graph/verification.ts","./src/lexicon/types/app/bsky/labeler/defs.ts","./src/lexicon/types/app/bsky/labeler/getServices.ts","./src/lexicon/types/app/bsky/labeler/service.ts","./src/lexicon/types/app/bsky/notification/declaration.ts","./src/lexicon/types/app/bsky/notification/defs.ts","./src/lexicon/types/app/bsky/notification/getPreferences.ts","./src/lexicon/types/app/bsky/notification/getUnreadCount.ts","./src/lexicon/types/app/bsky/notification/listActivitySubscriptions.ts","./src/lexicon/types/app/bsky/notification/listNotifications.ts","./src/lexicon/types/app/bsky/notification/putActivitySubscription.ts","./src/lexicon/types/app/bsky/notification/putPreferences.ts","./src/lexicon/types/app/bsky/notification/putPreferencesV2.ts","./src/lexicon/types/app/bsky/notification/registerPush.ts","./src/lexicon/types/app/bsky/notification/unregisterPush.ts","./src/lexicon/types/app/bsky/notification/updateSeen.ts","./src/lexicon/types/app/bsky/richtext/facet.ts","./src/lexicon/types/app/bsky/unspecced/defs.ts","./src/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.ts","./src/lexicon/types/app/bsky/unspecced/getConfig.ts","./src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts","./src/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.ts","./src/lexicon/types/app/bsky/unspecced/getPostThreadV2.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts","./src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts","./src/lexicon/types/app/bsky/unspecced/getTrends.ts","./src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/initAgeAssurance.ts","./src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/video/defs.ts","./src/lexicon/types/app/bsky/video/getJobStatus.ts","./src/lexicon/types/app/bsky/video/getUploadLimits.ts","./src/lexicon/types/app/bsky/video/uploadVideo.ts","./src/lexicon/types/chat/bsky/actor/declaration.ts","./src/lexicon/types/chat/bsky/actor/defs.ts","./src/lexicon/types/chat/bsky/actor/deleteAccount.ts","./src/lexicon/types/chat/bsky/actor/exportAccountData.ts","./src/lexicon/types/chat/bsky/convo/acceptConvo.ts","./src/lexicon/types/chat/bsky/convo/addReaction.ts","./src/lexicon/types/chat/bsky/convo/defs.ts","./src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts","./src/lexicon/types/chat/bsky/convo/getConvo.ts","./src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts","./src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts","./src/lexicon/types/chat/bsky/convo/getLog.ts","./src/lexicon/types/chat/bsky/convo/getMessages.ts","./src/lexicon/types/chat/bsky/convo/leaveConvo.ts","./src/lexicon/types/chat/bsky/convo/listConvos.ts","./src/lexicon/types/chat/bsky/convo/muteConvo.ts","./src/lexicon/types/chat/bsky/convo/removeReaction.ts","./src/lexicon/types/chat/bsky/convo/sendMessage.ts","./src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts","./src/lexicon/types/chat/bsky/convo/unmuteConvo.ts","./src/lexicon/types/chat/bsky/convo/updateAllRead.ts","./src/lexicon/types/chat/bsky/convo/updateRead.ts","./src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts","./src/lexicon/types/chat/bsky/moderation/getMessageContext.ts","./src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts","./src/lexicon/types/com/atproto/admin/defs.ts","./src/lexicon/types/com/atproto/admin/deleteAccount.ts","./src/lexicon/types/com/atproto/admin/disableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/disableInviteCodes.ts","./src/lexicon/types/com/atproto/admin/enableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/getAccountInfo.ts","./src/lexicon/types/com/atproto/admin/getAccountInfos.ts","./src/lexicon/types/com/atproto/admin/getInviteCodes.ts","./src/lexicon/types/com/atproto/admin/getSubjectStatus.ts","./src/lexicon/types/com/atproto/admin/searchAccounts.ts","./src/lexicon/types/com/atproto/admin/sendEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountHandle.ts","./src/lexicon/types/com/atproto/admin/updateAccountPassword.ts","./src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts","./src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts","./src/lexicon/types/com/atproto/identity/defs.ts","./src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts","./src/lexicon/types/com/atproto/identity/refreshIdentity.ts","./src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts","./src/lexicon/types/com/atproto/identity/resolveDid.ts","./src/lexicon/types/com/atproto/identity/resolveHandle.ts","./src/lexicon/types/com/atproto/identity/resolveIdentity.ts","./src/lexicon/types/com/atproto/identity/signPlcOperation.ts","./src/lexicon/types/com/atproto/identity/submitPlcOperation.ts","./src/lexicon/types/com/atproto/identity/updateHandle.ts","./src/lexicon/types/com/atproto/label/defs.ts","./src/lexicon/types/com/atproto/label/queryLabels.ts","./src/lexicon/types/com/atproto/label/subscribeLabels.ts","./src/lexicon/types/com/atproto/lexicon/schema.ts","./src/lexicon/types/com/atproto/moderation/createReport.ts","./src/lexicon/types/com/atproto/moderation/defs.ts","./src/lexicon/types/com/atproto/repo/applyWrites.ts","./src/lexicon/types/com/atproto/repo/createRecord.ts","./src/lexicon/types/com/atproto/repo/defs.ts","./src/lexicon/types/com/atproto/repo/deleteRecord.ts","./src/lexicon/types/com/atproto/repo/describeRepo.ts","./src/lexicon/types/com/atproto/repo/getRecord.ts","./src/lexicon/types/com/atproto/repo/importRepo.ts","./src/lexicon/types/com/atproto/repo/listMissingBlobs.ts","./src/lexicon/types/com/atproto/repo/listRecords.ts","./src/lexicon/types/com/atproto/repo/putRecord.ts","./src/lexicon/types/com/atproto/repo/strongRef.ts","./src/lexicon/types/com/atproto/repo/uploadBlob.ts","./src/lexicon/types/com/atproto/server/activateAccount.ts","./src/lexicon/types/com/atproto/server/checkAccountStatus.ts","./src/lexicon/types/com/atproto/server/confirmEmail.ts","./src/lexicon/types/com/atproto/server/createAccount.ts","./src/lexicon/types/com/atproto/server/createAppPassword.ts","./src/lexicon/types/com/atproto/server/createInviteCode.ts","./src/lexicon/types/com/atproto/server/createInviteCodes.ts","./src/lexicon/types/com/atproto/server/createSession.ts","./src/lexicon/types/com/atproto/server/deactivateAccount.ts","./src/lexicon/types/com/atproto/server/defs.ts","./src/lexicon/types/com/atproto/server/deleteAccount.ts","./src/lexicon/types/com/atproto/server/deleteSession.ts","./src/lexicon/types/com/atproto/server/describeServer.ts","./src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts","./src/lexicon/types/com/atproto/server/getServiceAuth.ts","./src/lexicon/types/com/atproto/server/getSession.ts","./src/lexicon/types/com/atproto/server/listAppPasswords.ts","./src/lexicon/types/com/atproto/server/refreshSession.ts","./src/lexicon/types/com/atproto/server/requestAccountDelete.ts","./src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts","./src/lexicon/types/com/atproto/server/requestEmailUpdate.ts","./src/lexicon/types/com/atproto/server/requestPasswordReset.ts","./src/lexicon/types/com/atproto/server/reserveSigningKey.ts","./src/lexicon/types/com/atproto/server/resetPassword.ts","./src/lexicon/types/com/atproto/server/revokeAppPassword.ts","./src/lexicon/types/com/atproto/server/updateEmail.ts","./src/lexicon/types/com/atproto/sync/defs.ts","./src/lexicon/types/com/atproto/sync/getBlob.ts","./src/lexicon/types/com/atproto/sync/getBlocks.ts","./src/lexicon/types/com/atproto/sync/getCheckout.ts","./src/lexicon/types/com/atproto/sync/getHead.ts","./src/lexicon/types/com/atproto/sync/getHostStatus.ts","./src/lexicon/types/com/atproto/sync/getLatestCommit.ts","./src/lexicon/types/com/atproto/sync/getRecord.ts","./src/lexicon/types/com/atproto/sync/getRepo.ts","./src/lexicon/types/com/atproto/sync/getRepoStatus.ts","./src/lexicon/types/com/atproto/sync/listBlobs.ts","./src/lexicon/types/com/atproto/sync/listHosts.ts","./src/lexicon/types/com/atproto/sync/listRepos.ts","./src/lexicon/types/com/atproto/sync/listReposByCollection.ts","./src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts","./src/lexicon/types/com/atproto/sync/requestCrawl.ts","./src/lexicon/types/com/atproto/sync/subscribeRepos.ts","./src/lexicon/types/com/atproto/temp/addReservedHandle.ts","./src/lexicon/types/com/atproto/temp/checkHandleAvailability.ts","./src/lexicon/types/com/atproto/temp/checkSignupQueue.ts","./src/lexicon/types/com/atproto/temp/fetchLabels.ts","./src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts","./src/lexicon/types/tools/ozone/communication/createTemplate.ts","./src/lexicon/types/tools/ozone/communication/defs.ts","./src/lexicon/types/tools/ozone/communication/deleteTemplate.ts","./src/lexicon/types/tools/ozone/communication/listTemplates.ts","./src/lexicon/types/tools/ozone/communication/updateTemplate.ts","./src/lexicon/types/tools/ozone/hosting/getAccountHistory.ts","./src/lexicon/types/tools/ozone/moderation/defs.ts","./src/lexicon/types/tools/ozone/moderation/emitEvent.ts","./src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts","./src/lexicon/types/tools/ozone/moderation/getEvent.ts","./src/lexicon/types/tools/ozone/moderation/getRecord.ts","./src/lexicon/types/tools/ozone/moderation/getRecords.ts","./src/lexicon/types/tools/ozone/moderation/getRepo.ts","./src/lexicon/types/tools/ozone/moderation/getReporterStats.ts","./src/lexicon/types/tools/ozone/moderation/getRepos.ts","./src/lexicon/types/tools/ozone/moderation/getSubjects.ts","./src/lexicon/types/tools/ozone/moderation/queryEvents.ts","./src/lexicon/types/tools/ozone/moderation/queryStatuses.ts","./src/lexicon/types/tools/ozone/moderation/searchRepos.ts","./src/lexicon/types/tools/ozone/safelink/addRule.ts","./src/lexicon/types/tools/ozone/safelink/defs.ts","./src/lexicon/types/tools/ozone/safelink/queryEvents.ts","./src/lexicon/types/tools/ozone/safelink/queryRules.ts","./src/lexicon/types/tools/ozone/safelink/removeRule.ts","./src/lexicon/types/tools/ozone/safelink/updateRule.ts","./src/lexicon/types/tools/ozone/server/getConfig.ts","./src/lexicon/types/tools/ozone/set/addValues.ts","./src/lexicon/types/tools/ozone/set/defs.ts","./src/lexicon/types/tools/ozone/set/deleteSet.ts","./src/lexicon/types/tools/ozone/set/deleteValues.ts","./src/lexicon/types/tools/ozone/set/getValues.ts","./src/lexicon/types/tools/ozone/set/querySets.ts","./src/lexicon/types/tools/ozone/set/upsertSet.ts","./src/lexicon/types/tools/ozone/setting/defs.ts","./src/lexicon/types/tools/ozone/setting/listOptions.ts","./src/lexicon/types/tools/ozone/setting/removeOptions.ts","./src/lexicon/types/tools/ozone/setting/upsertOption.ts","./src/lexicon/types/tools/ozone/signature/defs.ts","./src/lexicon/types/tools/ozone/signature/findCorrelation.ts","./src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts","./src/lexicon/types/tools/ozone/signature/searchAccounts.ts","./src/lexicon/types/tools/ozone/team/addMember.ts","./src/lexicon/types/tools/ozone/team/defs.ts","./src/lexicon/types/tools/ozone/team/deleteMember.ts","./src/lexicon/types/tools/ozone/team/listMembers.ts","./src/lexicon/types/tools/ozone/team/updateMember.ts","./src/lexicon/types/tools/ozone/verification/defs.ts","./src/lexicon/types/tools/ozone/verification/grantVerifications.ts","./src/lexicon/types/tools/ozone/verification/listVerifications.ts","./src/lexicon/types/tools/ozone/verification/revokeVerifications.ts","./src/mailer/index.ts","./src/mailer/moderation.ts","./src/mailer/templates.ts","./src/mailer/templates/confirm-email.d.ts","./src/mailer/templates/delete-account.d.ts","./src/mailer/templates/plc-operation.d.ts","./src/mailer/templates/reset-password.d.ts","./src/mailer/templates/update-email.d.ts","./src/read-after-write/index.ts","./src/read-after-write/types.ts","./src/read-after-write/util.ts","./src/read-after-write/viewer.ts","./src/repo/index.ts","./src/repo/prepare.ts","./src/repo/types.ts","./src/scripts/index.ts","./src/scripts/publish-identity.ts","./src/scripts/rebuild-repo.ts","./src/scripts/rotate-keys.ts","./src/scripts/util.ts","./src/scripts/sequencer-recovery/index.ts","./src/scripts/sequencer-recovery/recoverer.ts","./src/scripts/sequencer-recovery/recovery-db.ts","./src/scripts/sequencer-recovery/repair-repos.ts","./src/scripts/sequencer-recovery/user-queues.ts","./src/sequencer/events.ts","./src/sequencer/index.ts","./src/sequencer/outbox.ts","./src/sequencer/sequencer.ts","./src/sequencer/db/index.ts","./src/sequencer/db/schema.ts","./src/sequencer/db/migrations/001-init.ts","./src/sequencer/db/migrations/index.ts","./src/util/compression.ts","./src/util/debug.ts","./src/util/params.ts"],"version":"5.8.2"}
1
+ {"root":["./src/app-view.ts","./src/auth-output.ts","./src/auth-routes.ts","./src/auth-scope.ts","./src/auth-verifier.ts","./src/background.ts","./src/basic-routes.ts","./src/bsky-app-view.ts","./src/context.ts","./src/crawlers.ts","./src/disk-blobstore.ts","./src/error.ts","./src/index.ts","./src/logger.ts","./src/pipethrough.ts","./src/redis.ts","./src/well-known.ts","./src/account-manager/account-manager.ts","./src/account-manager/oauth-store.ts","./src/account-manager/db/index.ts","./src/account-manager/db/migrations/001-init.ts","./src/account-manager/db/migrations/002-account-deactivation.ts","./src/account-manager/db/migrations/003-privileged-app-passwords.ts","./src/account-manager/db/migrations/004-oauth.ts","./src/account-manager/db/migrations/005-oauth-account-management.ts","./src/account-manager/db/migrations/index.ts","./src/account-manager/db/schema/account-device.ts","./src/account-manager/db/schema/account.ts","./src/account-manager/db/schema/actor.ts","./src/account-manager/db/schema/app-password.ts","./src/account-manager/db/schema/authorization-request.ts","./src/account-manager/db/schema/authorized-client.ts","./src/account-manager/db/schema/device.ts","./src/account-manager/db/schema/email-token.ts","./src/account-manager/db/schema/index.ts","./src/account-manager/db/schema/invite-code.ts","./src/account-manager/db/schema/refresh-token.ts","./src/account-manager/db/schema/repo-root.ts","./src/account-manager/db/schema/token.ts","./src/account-manager/db/schema/used-refresh-token.ts","./src/account-manager/helpers/account-device.ts","./src/account-manager/helpers/account.ts","./src/account-manager/helpers/auth.ts","./src/account-manager/helpers/authorization-request.ts","./src/account-manager/helpers/authorized-client.ts","./src/account-manager/helpers/device.ts","./src/account-manager/helpers/email-token.ts","./src/account-manager/helpers/invite.ts","./src/account-manager/helpers/password.ts","./src/account-manager/helpers/repo.ts","./src/account-manager/helpers/scrypt.ts","./src/account-manager/helpers/token.ts","./src/account-manager/helpers/used-refresh-token.ts","./src/actor-store/actor-store-reader.ts","./src/actor-store/actor-store-resources.ts","./src/actor-store/actor-store-transactor.ts","./src/actor-store/actor-store-writer.ts","./src/actor-store/actor-store.ts","./src/actor-store/migrate.ts","./src/actor-store/blob/reader.ts","./src/actor-store/blob/transactor.ts","./src/actor-store/db/index.ts","./src/actor-store/db/migrations/001-init.ts","./src/actor-store/db/migrations/index.ts","./src/actor-store/db/schema/account-pref.ts","./src/actor-store/db/schema/backlink.ts","./src/actor-store/db/schema/blob.ts","./src/actor-store/db/schema/index.ts","./src/actor-store/db/schema/record-blob.ts","./src/actor-store/db/schema/record.ts","./src/actor-store/db/schema/repo-block.ts","./src/actor-store/db/schema/repo-root.ts","./src/actor-store/preference/reader.ts","./src/actor-store/preference/transactor.ts","./src/actor-store/preference/util.ts","./src/actor-store/record/reader.ts","./src/actor-store/record/transactor.ts","./src/actor-store/repo/reader.ts","./src/actor-store/repo/sql-repo-reader.ts","./src/actor-store/repo/sql-repo-transactor.ts","./src/actor-store/repo/transactor.ts","./src/api/index.ts","./src/api/proxy.ts","./src/api/app/bsky/index.ts","./src/api/app/bsky/actor/getPreferences.ts","./src/api/app/bsky/actor/getProfile.ts","./src/api/app/bsky/actor/getProfiles.ts","./src/api/app/bsky/actor/index.ts","./src/api/app/bsky/actor/putPreferences.ts","./src/api/app/bsky/feed/getActorLikes.ts","./src/api/app/bsky/feed/getAuthorFeed.ts","./src/api/app/bsky/feed/getFeed.ts","./src/api/app/bsky/feed/getPostThread.ts","./src/api/app/bsky/feed/getTimeline.ts","./src/api/app/bsky/feed/index.ts","./src/api/app/bsky/notification/index.ts","./src/api/app/bsky/notification/registerPush.ts","./src/api/app/bsky/util/resolver.ts","./src/api/com/atproto/index.ts","./src/api/com/atproto/admin/deleteAccount.ts","./src/api/com/atproto/admin/disableAccountInvites.ts","./src/api/com/atproto/admin/disableInviteCodes.ts","./src/api/com/atproto/admin/enableAccountInvites.ts","./src/api/com/atproto/admin/getAccountInfo.ts","./src/api/com/atproto/admin/getAccountInfos.ts","./src/api/com/atproto/admin/getInviteCodes.ts","./src/api/com/atproto/admin/getSubjectStatus.ts","./src/api/com/atproto/admin/index.ts","./src/api/com/atproto/admin/sendEmail.ts","./src/api/com/atproto/admin/updateAccountEmail.ts","./src/api/com/atproto/admin/updateAccountHandle.ts","./src/api/com/atproto/admin/updateAccountPassword.ts","./src/api/com/atproto/admin/updateSubjectStatus.ts","./src/api/com/atproto/admin/util.ts","./src/api/com/atproto/identity/getRecommendedDidCredentials.ts","./src/api/com/atproto/identity/index.ts","./src/api/com/atproto/identity/requestPlcOperationSignature.ts","./src/api/com/atproto/identity/resolveHandle.ts","./src/api/com/atproto/identity/signPlcOperation.ts","./src/api/com/atproto/identity/submitPlcOperation.ts","./src/api/com/atproto/identity/updateHandle.ts","./src/api/com/atproto/moderation/createReport.ts","./src/api/com/atproto/moderation/index.ts","./src/api/com/atproto/repo/applyWrites.ts","./src/api/com/atproto/repo/createRecord.ts","./src/api/com/atproto/repo/deleteRecord.ts","./src/api/com/atproto/repo/describeRepo.ts","./src/api/com/atproto/repo/getRecord.ts","./src/api/com/atproto/repo/importRepo.ts","./src/api/com/atproto/repo/index.ts","./src/api/com/atproto/repo/listMissingBlobs.ts","./src/api/com/atproto/repo/listRecords.ts","./src/api/com/atproto/repo/putRecord.ts","./src/api/com/atproto/repo/uploadBlob.ts","./src/api/com/atproto/server/activateAccount.ts","./src/api/com/atproto/server/checkAccountStatus.ts","./src/api/com/atproto/server/confirmEmail.ts","./src/api/com/atproto/server/createAccount.ts","./src/api/com/atproto/server/createAppPassword.ts","./src/api/com/atproto/server/createInviteCode.ts","./src/api/com/atproto/server/createInviteCodes.ts","./src/api/com/atproto/server/createSession.ts","./src/api/com/atproto/server/deactivateAccount.ts","./src/api/com/atproto/server/deleteAccount.ts","./src/api/com/atproto/server/deleteSession.ts","./src/api/com/atproto/server/describeServer.ts","./src/api/com/atproto/server/getAccountInviteCodes.ts","./src/api/com/atproto/server/getServiceAuth.ts","./src/api/com/atproto/server/getSession.ts","./src/api/com/atproto/server/index.ts","./src/api/com/atproto/server/listAppPasswords.ts","./src/api/com/atproto/server/refreshSession.ts","./src/api/com/atproto/server/requestAccountDelete.ts","./src/api/com/atproto/server/requestEmailConfirmation.ts","./src/api/com/atproto/server/requestEmailUpdate.ts","./src/api/com/atproto/server/requestPasswordReset.ts","./src/api/com/atproto/server/reserveSigningKey.ts","./src/api/com/atproto/server/resetPassword.ts","./src/api/com/atproto/server/revokeAppPassword.ts","./src/api/com/atproto/server/updateEmail.ts","./src/api/com/atproto/server/util.ts","./src/api/com/atproto/sync/getBlob.ts","./src/api/com/atproto/sync/getBlocks.ts","./src/api/com/atproto/sync/getLatestCommit.ts","./src/api/com/atproto/sync/getRecord.ts","./src/api/com/atproto/sync/getRepo.ts","./src/api/com/atproto/sync/getRepoStatus.ts","./src/api/com/atproto/sync/index.ts","./src/api/com/atproto/sync/listBlobs.ts","./src/api/com/atproto/sync/listRepos.ts","./src/api/com/atproto/sync/subscribeRepos.ts","./src/api/com/atproto/sync/util.ts","./src/api/com/atproto/sync/deprecated/getCheckout.ts","./src/api/com/atproto/sync/deprecated/getHead.ts","./src/api/com/atproto/temp/checkSignupQueue.ts","./src/api/com/atproto/temp/index.ts","./src/config/config.ts","./src/config/env.ts","./src/config/index.ts","./src/config/secrets.ts","./src/db/cast.ts","./src/db/db.ts","./src/db/index.ts","./src/db/migrator.ts","./src/db/pagination.ts","./src/db/util.ts","./src/db/tables/moderation.ts","./src/did-cache/index.ts","./src/did-cache/db/index.ts","./src/did-cache/db/migrations.ts","./src/did-cache/db/schema.ts","./src/handle/explicit-slurs.ts","./src/handle/index.ts","./src/handle/reserved.ts","./src/image/image-url-builder.ts","./src/image/index.ts","./src/lexicon/index.ts","./src/lexicon/lexicons.ts","./src/lexicon/util.ts","./src/lexicon/types/app/bsky/actor/defs.ts","./src/lexicon/types/app/bsky/actor/getPreferences.ts","./src/lexicon/types/app/bsky/actor/getProfile.ts","./src/lexicon/types/app/bsky/actor/getProfiles.ts","./src/lexicon/types/app/bsky/actor/getSuggestions.ts","./src/lexicon/types/app/bsky/actor/profile.ts","./src/lexicon/types/app/bsky/actor/putPreferences.ts","./src/lexicon/types/app/bsky/actor/searchActors.ts","./src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts","./src/lexicon/types/app/bsky/actor/status.ts","./src/lexicon/types/app/bsky/embed/defs.ts","./src/lexicon/types/app/bsky/embed/external.ts","./src/lexicon/types/app/bsky/embed/images.ts","./src/lexicon/types/app/bsky/embed/record.ts","./src/lexicon/types/app/bsky/embed/recordWithMedia.ts","./src/lexicon/types/app/bsky/embed/video.ts","./src/lexicon/types/app/bsky/feed/defs.ts","./src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/generator.ts","./src/lexicon/types/app/bsky/feed/getActorFeeds.ts","./src/lexicon/types/app/bsky/feed/getActorLikes.ts","./src/lexicon/types/app/bsky/feed/getAuthorFeed.ts","./src/lexicon/types/app/bsky/feed/getFeed.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerator.ts","./src/lexicon/types/app/bsky/feed/getFeedGenerators.ts","./src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts","./src/lexicon/types/app/bsky/feed/getLikes.ts","./src/lexicon/types/app/bsky/feed/getListFeed.ts","./src/lexicon/types/app/bsky/feed/getPostThread.ts","./src/lexicon/types/app/bsky/feed/getPosts.ts","./src/lexicon/types/app/bsky/feed/getQuotes.ts","./src/lexicon/types/app/bsky/feed/getRepostedBy.ts","./src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts","./src/lexicon/types/app/bsky/feed/getTimeline.ts","./src/lexicon/types/app/bsky/feed/like.ts","./src/lexicon/types/app/bsky/feed/post.ts","./src/lexicon/types/app/bsky/feed/postgate.ts","./src/lexicon/types/app/bsky/feed/repost.ts","./src/lexicon/types/app/bsky/feed/searchPosts.ts","./src/lexicon/types/app/bsky/feed/sendInteractions.ts","./src/lexicon/types/app/bsky/feed/threadgate.ts","./src/lexicon/types/app/bsky/graph/block.ts","./src/lexicon/types/app/bsky/graph/defs.ts","./src/lexicon/types/app/bsky/graph/follow.ts","./src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getBlocks.ts","./src/lexicon/types/app/bsky/graph/getFollowers.ts","./src/lexicon/types/app/bsky/graph/getFollows.ts","./src/lexicon/types/app/bsky/graph/getKnownFollowers.ts","./src/lexicon/types/app/bsky/graph/getList.ts","./src/lexicon/types/app/bsky/graph/getListBlocks.ts","./src/lexicon/types/app/bsky/graph/getListMutes.ts","./src/lexicon/types/app/bsky/graph/getLists.ts","./src/lexicon/types/app/bsky/graph/getListsWithMembership.ts","./src/lexicon/types/app/bsky/graph/getMutes.ts","./src/lexicon/types/app/bsky/graph/getRelationships.ts","./src/lexicon/types/app/bsky/graph/getStarterPack.ts","./src/lexicon/types/app/bsky/graph/getStarterPacks.ts","./src/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.ts","./src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts","./src/lexicon/types/app/bsky/graph/list.ts","./src/lexicon/types/app/bsky/graph/listblock.ts","./src/lexicon/types/app/bsky/graph/listitem.ts","./src/lexicon/types/app/bsky/graph/muteActor.ts","./src/lexicon/types/app/bsky/graph/muteActorList.ts","./src/lexicon/types/app/bsky/graph/muteThread.ts","./src/lexicon/types/app/bsky/graph/searchStarterPacks.ts","./src/lexicon/types/app/bsky/graph/starterpack.ts","./src/lexicon/types/app/bsky/graph/unmuteActor.ts","./src/lexicon/types/app/bsky/graph/unmuteActorList.ts","./src/lexicon/types/app/bsky/graph/unmuteThread.ts","./src/lexicon/types/app/bsky/graph/verification.ts","./src/lexicon/types/app/bsky/labeler/defs.ts","./src/lexicon/types/app/bsky/labeler/getServices.ts","./src/lexicon/types/app/bsky/labeler/service.ts","./src/lexicon/types/app/bsky/notification/declaration.ts","./src/lexicon/types/app/bsky/notification/defs.ts","./src/lexicon/types/app/bsky/notification/getPreferences.ts","./src/lexicon/types/app/bsky/notification/getUnreadCount.ts","./src/lexicon/types/app/bsky/notification/listActivitySubscriptions.ts","./src/lexicon/types/app/bsky/notification/listNotifications.ts","./src/lexicon/types/app/bsky/notification/putActivitySubscription.ts","./src/lexicon/types/app/bsky/notification/putPreferences.ts","./src/lexicon/types/app/bsky/notification/putPreferencesV2.ts","./src/lexicon/types/app/bsky/notification/registerPush.ts","./src/lexicon/types/app/bsky/notification/unregisterPush.ts","./src/lexicon/types/app/bsky/notification/updateSeen.ts","./src/lexicon/types/app/bsky/richtext/facet.ts","./src/lexicon/types/app/bsky/unspecced/defs.ts","./src/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.ts","./src/lexicon/types/app/bsky/unspecced/getConfig.ts","./src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts","./src/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.ts","./src/lexicon/types/app/bsky/unspecced/getPostThreadV2.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts","./src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts","./src/lexicon/types/app/bsky/unspecced/getTrends.ts","./src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/initAgeAssurance.ts","./src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts","./src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts","./src/lexicon/types/app/bsky/video/defs.ts","./src/lexicon/types/app/bsky/video/getJobStatus.ts","./src/lexicon/types/app/bsky/video/getUploadLimits.ts","./src/lexicon/types/app/bsky/video/uploadVideo.ts","./src/lexicon/types/chat/bsky/actor/declaration.ts","./src/lexicon/types/chat/bsky/actor/defs.ts","./src/lexicon/types/chat/bsky/actor/deleteAccount.ts","./src/lexicon/types/chat/bsky/actor/exportAccountData.ts","./src/lexicon/types/chat/bsky/convo/acceptConvo.ts","./src/lexicon/types/chat/bsky/convo/addReaction.ts","./src/lexicon/types/chat/bsky/convo/defs.ts","./src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts","./src/lexicon/types/chat/bsky/convo/getConvo.ts","./src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts","./src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts","./src/lexicon/types/chat/bsky/convo/getLog.ts","./src/lexicon/types/chat/bsky/convo/getMessages.ts","./src/lexicon/types/chat/bsky/convo/leaveConvo.ts","./src/lexicon/types/chat/bsky/convo/listConvos.ts","./src/lexicon/types/chat/bsky/convo/muteConvo.ts","./src/lexicon/types/chat/bsky/convo/removeReaction.ts","./src/lexicon/types/chat/bsky/convo/sendMessage.ts","./src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts","./src/lexicon/types/chat/bsky/convo/unmuteConvo.ts","./src/lexicon/types/chat/bsky/convo/updateAllRead.ts","./src/lexicon/types/chat/bsky/convo/updateRead.ts","./src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts","./src/lexicon/types/chat/bsky/moderation/getMessageContext.ts","./src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts","./src/lexicon/types/com/atproto/admin/defs.ts","./src/lexicon/types/com/atproto/admin/deleteAccount.ts","./src/lexicon/types/com/atproto/admin/disableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/disableInviteCodes.ts","./src/lexicon/types/com/atproto/admin/enableAccountInvites.ts","./src/lexicon/types/com/atproto/admin/getAccountInfo.ts","./src/lexicon/types/com/atproto/admin/getAccountInfos.ts","./src/lexicon/types/com/atproto/admin/getInviteCodes.ts","./src/lexicon/types/com/atproto/admin/getSubjectStatus.ts","./src/lexicon/types/com/atproto/admin/searchAccounts.ts","./src/lexicon/types/com/atproto/admin/sendEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountEmail.ts","./src/lexicon/types/com/atproto/admin/updateAccountHandle.ts","./src/lexicon/types/com/atproto/admin/updateAccountPassword.ts","./src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts","./src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts","./src/lexicon/types/com/atproto/identity/defs.ts","./src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts","./src/lexicon/types/com/atproto/identity/refreshIdentity.ts","./src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts","./src/lexicon/types/com/atproto/identity/resolveDid.ts","./src/lexicon/types/com/atproto/identity/resolveHandle.ts","./src/lexicon/types/com/atproto/identity/resolveIdentity.ts","./src/lexicon/types/com/atproto/identity/signPlcOperation.ts","./src/lexicon/types/com/atproto/identity/submitPlcOperation.ts","./src/lexicon/types/com/atproto/identity/updateHandle.ts","./src/lexicon/types/com/atproto/label/defs.ts","./src/lexicon/types/com/atproto/label/queryLabels.ts","./src/lexicon/types/com/atproto/label/subscribeLabels.ts","./src/lexicon/types/com/atproto/lexicon/schema.ts","./src/lexicon/types/com/atproto/moderation/createReport.ts","./src/lexicon/types/com/atproto/moderation/defs.ts","./src/lexicon/types/com/atproto/repo/applyWrites.ts","./src/lexicon/types/com/atproto/repo/createRecord.ts","./src/lexicon/types/com/atproto/repo/defs.ts","./src/lexicon/types/com/atproto/repo/deleteRecord.ts","./src/lexicon/types/com/atproto/repo/describeRepo.ts","./src/lexicon/types/com/atproto/repo/getRecord.ts","./src/lexicon/types/com/atproto/repo/importRepo.ts","./src/lexicon/types/com/atproto/repo/listMissingBlobs.ts","./src/lexicon/types/com/atproto/repo/listRecords.ts","./src/lexicon/types/com/atproto/repo/putRecord.ts","./src/lexicon/types/com/atproto/repo/strongRef.ts","./src/lexicon/types/com/atproto/repo/uploadBlob.ts","./src/lexicon/types/com/atproto/server/activateAccount.ts","./src/lexicon/types/com/atproto/server/checkAccountStatus.ts","./src/lexicon/types/com/atproto/server/confirmEmail.ts","./src/lexicon/types/com/atproto/server/createAccount.ts","./src/lexicon/types/com/atproto/server/createAppPassword.ts","./src/lexicon/types/com/atproto/server/createInviteCode.ts","./src/lexicon/types/com/atproto/server/createInviteCodes.ts","./src/lexicon/types/com/atproto/server/createSession.ts","./src/lexicon/types/com/atproto/server/deactivateAccount.ts","./src/lexicon/types/com/atproto/server/defs.ts","./src/lexicon/types/com/atproto/server/deleteAccount.ts","./src/lexicon/types/com/atproto/server/deleteSession.ts","./src/lexicon/types/com/atproto/server/describeServer.ts","./src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts","./src/lexicon/types/com/atproto/server/getServiceAuth.ts","./src/lexicon/types/com/atproto/server/getSession.ts","./src/lexicon/types/com/atproto/server/listAppPasswords.ts","./src/lexicon/types/com/atproto/server/refreshSession.ts","./src/lexicon/types/com/atproto/server/requestAccountDelete.ts","./src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts","./src/lexicon/types/com/atproto/server/requestEmailUpdate.ts","./src/lexicon/types/com/atproto/server/requestPasswordReset.ts","./src/lexicon/types/com/atproto/server/reserveSigningKey.ts","./src/lexicon/types/com/atproto/server/resetPassword.ts","./src/lexicon/types/com/atproto/server/revokeAppPassword.ts","./src/lexicon/types/com/atproto/server/updateEmail.ts","./src/lexicon/types/com/atproto/sync/defs.ts","./src/lexicon/types/com/atproto/sync/getBlob.ts","./src/lexicon/types/com/atproto/sync/getBlocks.ts","./src/lexicon/types/com/atproto/sync/getCheckout.ts","./src/lexicon/types/com/atproto/sync/getHead.ts","./src/lexicon/types/com/atproto/sync/getHostStatus.ts","./src/lexicon/types/com/atproto/sync/getLatestCommit.ts","./src/lexicon/types/com/atproto/sync/getRecord.ts","./src/lexicon/types/com/atproto/sync/getRepo.ts","./src/lexicon/types/com/atproto/sync/getRepoStatus.ts","./src/lexicon/types/com/atproto/sync/listBlobs.ts","./src/lexicon/types/com/atproto/sync/listHosts.ts","./src/lexicon/types/com/atproto/sync/listRepos.ts","./src/lexicon/types/com/atproto/sync/listReposByCollection.ts","./src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts","./src/lexicon/types/com/atproto/sync/requestCrawl.ts","./src/lexicon/types/com/atproto/sync/subscribeRepos.ts","./src/lexicon/types/com/atproto/temp/addReservedHandle.ts","./src/lexicon/types/com/atproto/temp/checkHandleAvailability.ts","./src/lexicon/types/com/atproto/temp/checkSignupQueue.ts","./src/lexicon/types/com/atproto/temp/fetchLabels.ts","./src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts","./src/lexicon/types/tools/ozone/communication/createTemplate.ts","./src/lexicon/types/tools/ozone/communication/defs.ts","./src/lexicon/types/tools/ozone/communication/deleteTemplate.ts","./src/lexicon/types/tools/ozone/communication/listTemplates.ts","./src/lexicon/types/tools/ozone/communication/updateTemplate.ts","./src/lexicon/types/tools/ozone/hosting/getAccountHistory.ts","./src/lexicon/types/tools/ozone/moderation/defs.ts","./src/lexicon/types/tools/ozone/moderation/emitEvent.ts","./src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts","./src/lexicon/types/tools/ozone/moderation/getEvent.ts","./src/lexicon/types/tools/ozone/moderation/getRecord.ts","./src/lexicon/types/tools/ozone/moderation/getRecords.ts","./src/lexicon/types/tools/ozone/moderation/getRepo.ts","./src/lexicon/types/tools/ozone/moderation/getReporterStats.ts","./src/lexicon/types/tools/ozone/moderation/getRepos.ts","./src/lexicon/types/tools/ozone/moderation/getSubjects.ts","./src/lexicon/types/tools/ozone/moderation/queryEvents.ts","./src/lexicon/types/tools/ozone/moderation/queryStatuses.ts","./src/lexicon/types/tools/ozone/moderation/searchRepos.ts","./src/lexicon/types/tools/ozone/safelink/addRule.ts","./src/lexicon/types/tools/ozone/safelink/defs.ts","./src/lexicon/types/tools/ozone/safelink/queryEvents.ts","./src/lexicon/types/tools/ozone/safelink/queryRules.ts","./src/lexicon/types/tools/ozone/safelink/removeRule.ts","./src/lexicon/types/tools/ozone/safelink/updateRule.ts","./src/lexicon/types/tools/ozone/server/getConfig.ts","./src/lexicon/types/tools/ozone/set/addValues.ts","./src/lexicon/types/tools/ozone/set/defs.ts","./src/lexicon/types/tools/ozone/set/deleteSet.ts","./src/lexicon/types/tools/ozone/set/deleteValues.ts","./src/lexicon/types/tools/ozone/set/getValues.ts","./src/lexicon/types/tools/ozone/set/querySets.ts","./src/lexicon/types/tools/ozone/set/upsertSet.ts","./src/lexicon/types/tools/ozone/setting/defs.ts","./src/lexicon/types/tools/ozone/setting/listOptions.ts","./src/lexicon/types/tools/ozone/setting/removeOptions.ts","./src/lexicon/types/tools/ozone/setting/upsertOption.ts","./src/lexicon/types/tools/ozone/signature/defs.ts","./src/lexicon/types/tools/ozone/signature/findCorrelation.ts","./src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts","./src/lexicon/types/tools/ozone/signature/searchAccounts.ts","./src/lexicon/types/tools/ozone/team/addMember.ts","./src/lexicon/types/tools/ozone/team/defs.ts","./src/lexicon/types/tools/ozone/team/deleteMember.ts","./src/lexicon/types/tools/ozone/team/listMembers.ts","./src/lexicon/types/tools/ozone/team/updateMember.ts","./src/lexicon/types/tools/ozone/verification/defs.ts","./src/lexicon/types/tools/ozone/verification/grantVerifications.ts","./src/lexicon/types/tools/ozone/verification/listVerifications.ts","./src/lexicon/types/tools/ozone/verification/revokeVerifications.ts","./src/mailer/index.ts","./src/mailer/moderation.ts","./src/mailer/templates.ts","./src/mailer/templates/confirm-email.d.ts","./src/mailer/templates/delete-account.d.ts","./src/mailer/templates/plc-operation.d.ts","./src/mailer/templates/reset-password.d.ts","./src/mailer/templates/update-email.d.ts","./src/read-after-write/index.ts","./src/read-after-write/types.ts","./src/read-after-write/util.ts","./src/read-after-write/viewer.ts","./src/repo/index.ts","./src/repo/prepare.ts","./src/repo/types.ts","./src/scripts/index.ts","./src/scripts/publish-identity.ts","./src/scripts/rebuild-repo.ts","./src/scripts/rotate-keys.ts","./src/scripts/util.ts","./src/scripts/sequencer-recovery/index.ts","./src/scripts/sequencer-recovery/recoverer.ts","./src/scripts/sequencer-recovery/recovery-db.ts","./src/scripts/sequencer-recovery/repair-repos.ts","./src/scripts/sequencer-recovery/user-queues.ts","./src/sequencer/events.ts","./src/sequencer/index.ts","./src/sequencer/outbox.ts","./src/sequencer/sequencer.ts","./src/sequencer/db/index.ts","./src/sequencer/db/schema.ts","./src/sequencer/db/migrations/001-init.ts","./src/sequencer/db/migrations/index.ts","./src/util/compression.ts","./src/util/debug.ts","./src/util/http.ts","./src/util/params.ts","./src/util/types.ts"],"version":"5.8.2"}