@atproto/pds 0.5.52 → 0.5.56

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 (1066) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/account-manager/account-manager.d.ts +2 -2
  3. package/dist/account-manager/account-manager.d.ts.map +1 -1
  4. package/dist/account-manager/account-manager.js +1 -1
  5. package/dist/account-manager/account-manager.js.map +1 -1
  6. package/dist/account-manager/db/schema/account-email-auth-factor.d.ts +1 -1
  7. package/dist/account-manager/db/schema/account-email-auth-factor.d.ts.map +1 -1
  8. package/dist/account-manager/db/schema/account-email-auth-factor.js.map +1 -1
  9. package/dist/account-manager/db/schema/account.d.ts +1 -1
  10. package/dist/account-manager/db/schema/account.d.ts.map +1 -1
  11. package/dist/account-manager/db/schema/account.js.map +1 -1
  12. package/dist/account-manager/db/schema/app-password.d.ts +1 -1
  13. package/dist/account-manager/db/schema/app-password.d.ts.map +1 -1
  14. package/dist/account-manager/db/schema/app-password.js.map +1 -1
  15. package/dist/account-manager/db/schema/invite-code.d.ts +1 -1
  16. package/dist/account-manager/db/schema/invite-code.d.ts.map +1 -1
  17. package/dist/account-manager/db/schema/invite-code.js.map +1 -1
  18. package/dist/account-manager/db/schema/repo-root.d.ts +1 -1
  19. package/dist/account-manager/db/schema/repo-root.d.ts.map +1 -1
  20. package/dist/account-manager/db/schema/repo-root.js.map +1 -1
  21. package/dist/account-manager/helpers/account.d.ts +1 -1
  22. package/dist/account-manager/helpers/account.d.ts.map +1 -1
  23. package/dist/account-manager/helpers/account.js +1 -1
  24. package/dist/account-manager/helpers/account.js.map +1 -1
  25. package/dist/account-manager/helpers/email-auth-factor.d.ts +1 -1
  26. package/dist/account-manager/helpers/email-auth-factor.d.ts.map +1 -1
  27. package/dist/account-manager/helpers/email-auth-factor.js +1 -1
  28. package/dist/account-manager/helpers/email-auth-factor.js.map +1 -1
  29. package/dist/account-manager/helpers/email-token.d.ts +1 -1
  30. package/dist/account-manager/helpers/email-token.d.ts.map +1 -1
  31. package/dist/account-manager/helpers/email-token.js +1 -1
  32. package/dist/account-manager/helpers/email-token.js.map +1 -1
  33. package/dist/account-manager/helpers/invite.d.ts +1 -1
  34. package/dist/account-manager/helpers/invite.d.ts.map +1 -1
  35. package/dist/account-manager/helpers/invite.js +1 -1
  36. package/dist/account-manager/helpers/invite.js.map +1 -1
  37. package/dist/account-manager/helpers/password.d.ts +1 -1
  38. package/dist/account-manager/helpers/password.d.ts.map +1 -1
  39. package/dist/account-manager/helpers/password.js +1 -1
  40. package/dist/account-manager/helpers/password.js.map +1 -1
  41. package/dist/account-manager/helpers/repo.d.ts +1 -1
  42. package/dist/account-manager/helpers/repo.d.ts.map +1 -1
  43. package/dist/account-manager/helpers/repo.js +1 -1
  44. package/dist/account-manager/helpers/repo.js.map +1 -1
  45. package/dist/account-manager/oauth-store.d.ts +1 -1
  46. package/dist/account-manager/oauth-store.d.ts.map +1 -1
  47. package/dist/account-manager/oauth-store.js +1 -1
  48. package/dist/account-manager/oauth-store.js.map +1 -1
  49. package/dist/account-manager/scope-reference-getter.d.ts +1 -1
  50. package/dist/account-manager/scope-reference-getter.d.ts.map +1 -1
  51. package/dist/account-manager/scope-reference-getter.js +1 -1
  52. package/dist/account-manager/scope-reference-getter.js.map +1 -1
  53. package/dist/actor-store/actor-store-reader.d.ts +1 -1
  54. package/dist/actor-store/actor-store-reader.d.ts.map +1 -1
  55. package/dist/actor-store/actor-store-reader.js.map +1 -1
  56. package/dist/actor-store/actor-store-transactor.d.ts +1 -1
  57. package/dist/actor-store/actor-store-transactor.d.ts.map +1 -1
  58. package/dist/actor-store/actor-store-transactor.js.map +1 -1
  59. package/dist/actor-store/actor-store.d.ts +1 -1
  60. package/dist/actor-store/actor-store.d.ts.map +1 -1
  61. package/dist/actor-store/actor-store.js.map +1 -1
  62. package/dist/actor-store/record/reader.d.ts +1 -1
  63. package/dist/actor-store/record/reader.d.ts.map +1 -1
  64. package/dist/actor-store/record/reader.js.map +1 -1
  65. package/dist/actor-store/record/transactor.d.ts +1 -1
  66. package/dist/actor-store/record/transactor.d.ts.map +1 -1
  67. package/dist/actor-store/record/transactor.js.map +1 -1
  68. package/dist/actor-store/repo/reader.d.ts +1 -1
  69. package/dist/actor-store/repo/reader.d.ts.map +1 -1
  70. package/dist/actor-store/repo/reader.js.map +1 -1
  71. package/dist/actor-store/repo/transactor.d.ts +1 -1
  72. package/dist/actor-store/repo/transactor.d.ts.map +1 -1
  73. package/dist/actor-store/repo/transactor.js.map +1 -1
  74. package/dist/api/app/bsky/actor/getPreferences.js +1 -1
  75. package/dist/api/app/bsky/actor/getPreferences.js.map +1 -1
  76. package/dist/api/app/bsky/actor/putPreferences.d.ts.map +1 -1
  77. package/dist/api/app/bsky/actor/putPreferences.js +3 -0
  78. package/dist/api/app/bsky/actor/putPreferences.js.map +1 -1
  79. package/dist/api/app/bsky/feed/getPostThread.js +1 -1
  80. package/dist/api/app/bsky/feed/getPostThread.js.map +1 -1
  81. package/dist/api/com/atproto/admin/deleteAccount.js +1 -1
  82. package/dist/api/com/atproto/admin/deleteAccount.js.map +1 -1
  83. package/dist/api/com/atproto/admin/getSubjectStatus.js +1 -1
  84. package/dist/api/com/atproto/admin/getSubjectStatus.js.map +1 -1
  85. package/dist/api/com/atproto/admin/updateAccountHandle.js +1 -1
  86. package/dist/api/com/atproto/admin/updateAccountHandle.js.map +1 -1
  87. package/dist/api/com/atproto/admin/updateSubjectStatus.js +1 -1
  88. package/dist/api/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  89. package/dist/api/com/atproto/admin/util.js.map +1 -1
  90. package/dist/api/com/atproto/identity/resolveHandle.js +1 -1
  91. package/dist/api/com/atproto/identity/resolveHandle.js.map +1 -1
  92. package/dist/api/com/atproto/repo/getRecord.js +1 -1
  93. package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
  94. package/dist/api/com/atproto/repo/putRecord.js +1 -1
  95. package/dist/api/com/atproto/repo/putRecord.js.map +1 -1
  96. package/dist/api/com/atproto/repo/uploadBlob.d.ts.map +1 -1
  97. package/dist/api/com/atproto/repo/uploadBlob.js +1 -0
  98. package/dist/api/com/atproto/repo/uploadBlob.js.map +1 -1
  99. package/dist/api/com/atproto/server/createAccount.d.ts.map +1 -1
  100. package/dist/api/com/atproto/server/createAccount.js +13 -2
  101. package/dist/api/com/atproto/server/createAccount.js.map +1 -1
  102. package/dist/api/com/atproto/server/describeServer.js.map +1 -1
  103. package/dist/api/com/atproto/server/getServiceAuth.js.map +1 -1
  104. package/dist/api/com/atproto/server/reserveSigningKey.d.ts.map +1 -1
  105. package/dist/api/com/atproto/server/reserveSigningKey.js +3 -0
  106. package/dist/api/com/atproto/server/reserveSigningKey.js.map +1 -1
  107. package/dist/app-view.d.ts +1 -1
  108. package/dist/app-view.d.ts.map +1 -1
  109. package/dist/app-view.js +1 -1
  110. package/dist/app-view.js.map +1 -1
  111. package/dist/auth-output.d.ts +6 -0
  112. package/dist/auth-output.d.ts.map +1 -1
  113. package/dist/auth-output.js.map +1 -1
  114. package/dist/auth-verifier.d.ts +22 -3
  115. package/dist/auth-verifier.d.ts.map +1 -1
  116. package/dist/auth-verifier.js +99 -1
  117. package/dist/auth-verifier.js.map +1 -1
  118. package/dist/bsky-app-view.d.ts +1 -1
  119. package/dist/bsky-app-view.d.ts.map +1 -1
  120. package/dist/bsky-app-view.js +1 -1
  121. package/dist/bsky-app-view.js.map +1 -1
  122. package/dist/config/config.d.ts +11 -0
  123. package/dist/config/config.d.ts.map +1 -1
  124. package/dist/config/config.js +2 -0
  125. package/dist/config/config.js.map +1 -1
  126. package/dist/config/env.d.ts +2 -0
  127. package/dist/config/env.d.ts.map +1 -1
  128. package/dist/config/env.js +2 -0
  129. package/dist/config/env.js.map +1 -1
  130. package/dist/context.d.ts +1 -1
  131. package/dist/context.d.ts.map +1 -1
  132. package/dist/context.js +9 -3
  133. package/dist/context.js.map +1 -1
  134. package/dist/crawlers.js +1 -1
  135. package/dist/crawlers.js.map +1 -1
  136. package/dist/entryway-attribution.d.ts +39 -0
  137. package/dist/entryway-attribution.d.ts.map +1 -0
  138. package/dist/entryway-attribution.js +101 -0
  139. package/dist/entryway-attribution.js.map +1 -0
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +10 -1
  142. package/dist/index.js.map +1 -1
  143. package/dist/lexicons/app/bsky/actor/contentVisibilityDeclaration.defs.d.ts +1 -1
  144. package/dist/lexicons/app/bsky/actor/contentVisibilityDeclaration.defs.d.ts.map +1 -1
  145. package/dist/lexicons/app/bsky/actor/contentVisibilityDeclaration.defs.js +1 -1
  146. package/dist/lexicons/app/bsky/actor/contentVisibilityDeclaration.defs.js.map +1 -1
  147. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +1 -1
  148. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  149. package/dist/lexicons/app/bsky/actor/defs.defs.js +1 -1
  150. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  151. package/dist/lexicons/app/bsky/actor/getPreferences.defs.d.ts +1 -1
  152. package/dist/lexicons/app/bsky/actor/getPreferences.defs.d.ts.map +1 -1
  153. package/dist/lexicons/app/bsky/actor/getPreferences.defs.js +1 -1
  154. package/dist/lexicons/app/bsky/actor/getPreferences.defs.js.map +1 -1
  155. package/dist/lexicons/app/bsky/actor/getProfile.defs.d.ts +1 -1
  156. package/dist/lexicons/app/bsky/actor/getProfile.defs.d.ts.map +1 -1
  157. package/dist/lexicons/app/bsky/actor/getProfile.defs.js +1 -1
  158. package/dist/lexicons/app/bsky/actor/getProfile.defs.js.map +1 -1
  159. package/dist/lexicons/app/bsky/actor/getProfiles.defs.d.ts +1 -1
  160. package/dist/lexicons/app/bsky/actor/getProfiles.defs.d.ts.map +1 -1
  161. package/dist/lexicons/app/bsky/actor/getProfiles.defs.js +1 -1
  162. package/dist/lexicons/app/bsky/actor/getProfiles.defs.js.map +1 -1
  163. package/dist/lexicons/app/bsky/actor/link.defs.d.ts +1 -1
  164. package/dist/lexicons/app/bsky/actor/link.defs.d.ts.map +1 -1
  165. package/dist/lexicons/app/bsky/actor/link.defs.js +1 -1
  166. package/dist/lexicons/app/bsky/actor/link.defs.js.map +1 -1
  167. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts +1 -1
  168. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
  169. package/dist/lexicons/app/bsky/actor/profile.defs.js +1 -1
  170. package/dist/lexicons/app/bsky/actor/profile.defs.js.map +1 -1
  171. package/dist/lexicons/app/bsky/actor/putPreferences.defs.d.ts +1 -1
  172. package/dist/lexicons/app/bsky/actor/putPreferences.defs.d.ts.map +1 -1
  173. package/dist/lexicons/app/bsky/actor/putPreferences.defs.js +1 -1
  174. package/dist/lexicons/app/bsky/actor/putPreferences.defs.js.map +1 -1
  175. package/dist/lexicons/app/bsky/actor/status.defs.d.ts +1 -1
  176. package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
  177. package/dist/lexicons/app/bsky/actor/status.defs.js +1 -1
  178. package/dist/lexicons/app/bsky/actor/status.defs.js.map +1 -1
  179. package/dist/lexicons/app/bsky/ageassurance/defs.defs.d.ts +1 -1
  180. package/dist/lexicons/app/bsky/ageassurance/defs.defs.d.ts.map +1 -1
  181. package/dist/lexicons/app/bsky/ageassurance/defs.defs.js +1 -1
  182. package/dist/lexicons/app/bsky/ageassurance/defs.defs.js.map +1 -1
  183. package/dist/lexicons/app/bsky/embed/defs.defs.d.ts +1 -1
  184. package/dist/lexicons/app/bsky/embed/defs.defs.d.ts.map +1 -1
  185. package/dist/lexicons/app/bsky/embed/defs.defs.js +1 -1
  186. package/dist/lexicons/app/bsky/embed/defs.defs.js.map +1 -1
  187. package/dist/lexicons/app/bsky/embed/external.defs.d.ts +1 -1
  188. package/dist/lexicons/app/bsky/embed/external.defs.d.ts.map +1 -1
  189. package/dist/lexicons/app/bsky/embed/external.defs.js +1 -1
  190. package/dist/lexicons/app/bsky/embed/external.defs.js.map +1 -1
  191. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts +1 -1
  192. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts.map +1 -1
  193. package/dist/lexicons/app/bsky/embed/gallery.defs.js +1 -1
  194. package/dist/lexicons/app/bsky/embed/gallery.defs.js.map +1 -1
  195. package/dist/lexicons/app/bsky/embed/images.defs.d.ts +1 -1
  196. package/dist/lexicons/app/bsky/embed/images.defs.d.ts.map +1 -1
  197. package/dist/lexicons/app/bsky/embed/images.defs.js +1 -1
  198. package/dist/lexicons/app/bsky/embed/images.defs.js.map +1 -1
  199. package/dist/lexicons/app/bsky/embed/record.defs.d.ts +1 -1
  200. package/dist/lexicons/app/bsky/embed/record.defs.d.ts.map +1 -1
  201. package/dist/lexicons/app/bsky/embed/record.defs.js +1 -1
  202. package/dist/lexicons/app/bsky/embed/record.defs.js.map +1 -1
  203. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts +1 -1
  204. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts.map +1 -1
  205. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.js +1 -1
  206. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.js.map +1 -1
  207. package/dist/lexicons/app/bsky/embed/video.defs.d.ts +1 -1
  208. package/dist/lexicons/app/bsky/embed/video.defs.d.ts.map +1 -1
  209. package/dist/lexicons/app/bsky/embed/video.defs.js +1 -1
  210. package/dist/lexicons/app/bsky/embed/video.defs.js.map +1 -1
  211. package/dist/lexicons/app/bsky/feed/defs.defs.d.ts +1 -1
  212. package/dist/lexicons/app/bsky/feed/defs.defs.d.ts.map +1 -1
  213. package/dist/lexicons/app/bsky/feed/defs.defs.js +1 -1
  214. package/dist/lexicons/app/bsky/feed/defs.defs.js.map +1 -1
  215. package/dist/lexicons/app/bsky/feed/describeFeedGenerator.defs.d.ts +1 -1
  216. package/dist/lexicons/app/bsky/feed/describeFeedGenerator.defs.d.ts.map +1 -1
  217. package/dist/lexicons/app/bsky/feed/describeFeedGenerator.defs.js +1 -1
  218. package/dist/lexicons/app/bsky/feed/describeFeedGenerator.defs.js.map +1 -1
  219. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts +1 -1
  220. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
  221. package/dist/lexicons/app/bsky/feed/generator.defs.js +1 -1
  222. package/dist/lexicons/app/bsky/feed/generator.defs.js.map +1 -1
  223. package/dist/lexicons/app/bsky/feed/getActorLikes.defs.d.ts +1 -1
  224. package/dist/lexicons/app/bsky/feed/getActorLikes.defs.d.ts.map +1 -1
  225. package/dist/lexicons/app/bsky/feed/getActorLikes.defs.js +1 -1
  226. package/dist/lexicons/app/bsky/feed/getActorLikes.defs.js.map +1 -1
  227. package/dist/lexicons/app/bsky/feed/getAuthorFeed.defs.d.ts +1 -1
  228. package/dist/lexicons/app/bsky/feed/getAuthorFeed.defs.d.ts.map +1 -1
  229. package/dist/lexicons/app/bsky/feed/getAuthorFeed.defs.js +1 -1
  230. package/dist/lexicons/app/bsky/feed/getAuthorFeed.defs.js.map +1 -1
  231. package/dist/lexicons/app/bsky/feed/getFeed.defs.d.ts +1 -1
  232. package/dist/lexicons/app/bsky/feed/getFeed.defs.d.ts.map +1 -1
  233. package/dist/lexicons/app/bsky/feed/getFeed.defs.js +1 -1
  234. package/dist/lexicons/app/bsky/feed/getFeed.defs.js.map +1 -1
  235. package/dist/lexicons/app/bsky/feed/getFeedGenerator.defs.d.ts +1 -1
  236. package/dist/lexicons/app/bsky/feed/getFeedGenerator.defs.d.ts.map +1 -1
  237. package/dist/lexicons/app/bsky/feed/getFeedGenerator.defs.js +1 -1
  238. package/dist/lexicons/app/bsky/feed/getFeedGenerator.defs.js.map +1 -1
  239. package/dist/lexicons/app/bsky/feed/getFeedSkeleton.defs.d.ts +1 -1
  240. package/dist/lexicons/app/bsky/feed/getFeedSkeleton.defs.d.ts.map +1 -1
  241. package/dist/lexicons/app/bsky/feed/getFeedSkeleton.defs.js +1 -1
  242. package/dist/lexicons/app/bsky/feed/getFeedSkeleton.defs.js.map +1 -1
  243. package/dist/lexicons/app/bsky/feed/getPostThread.defs.d.ts +1 -1
  244. package/dist/lexicons/app/bsky/feed/getPostThread.defs.d.ts.map +1 -1
  245. package/dist/lexicons/app/bsky/feed/getPostThread.defs.js +1 -1
  246. package/dist/lexicons/app/bsky/feed/getPostThread.defs.js.map +1 -1
  247. package/dist/lexicons/app/bsky/feed/getPosts.defs.d.ts +1 -1
  248. package/dist/lexicons/app/bsky/feed/getPosts.defs.d.ts.map +1 -1
  249. package/dist/lexicons/app/bsky/feed/getPosts.defs.js +1 -1
  250. package/dist/lexicons/app/bsky/feed/getPosts.defs.js.map +1 -1
  251. package/dist/lexicons/app/bsky/feed/getTimeline.defs.d.ts +1 -1
  252. package/dist/lexicons/app/bsky/feed/getTimeline.defs.d.ts.map +1 -1
  253. package/dist/lexicons/app/bsky/feed/getTimeline.defs.js +1 -1
  254. package/dist/lexicons/app/bsky/feed/getTimeline.defs.js.map +1 -1
  255. package/dist/lexicons/app/bsky/feed/like.defs.d.ts +1 -1
  256. package/dist/lexicons/app/bsky/feed/like.defs.d.ts.map +1 -1
  257. package/dist/lexicons/app/bsky/feed/like.defs.js +1 -1
  258. package/dist/lexicons/app/bsky/feed/like.defs.js.map +1 -1
  259. package/dist/lexicons/app/bsky/feed/post.defs.d.ts +1 -1
  260. package/dist/lexicons/app/bsky/feed/post.defs.d.ts.map +1 -1
  261. package/dist/lexicons/app/bsky/feed/post.defs.js +1 -1
  262. package/dist/lexicons/app/bsky/feed/post.defs.js.map +1 -1
  263. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts +1 -1
  264. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts.map +1 -1
  265. package/dist/lexicons/app/bsky/feed/postgate.defs.js +1 -1
  266. package/dist/lexicons/app/bsky/feed/postgate.defs.js.map +1 -1
  267. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts +1 -1
  268. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts.map +1 -1
  269. package/dist/lexicons/app/bsky/feed/repost.defs.js +1 -1
  270. package/dist/lexicons/app/bsky/feed/repost.defs.js.map +1 -1
  271. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts +1 -1
  272. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts.map +1 -1
  273. package/dist/lexicons/app/bsky/feed/threadgate.defs.js +1 -1
  274. package/dist/lexicons/app/bsky/feed/threadgate.defs.js.map +1 -1
  275. package/dist/lexicons/app/bsky/graph/block.defs.d.ts +1 -1
  276. package/dist/lexicons/app/bsky/graph/block.defs.d.ts.map +1 -1
  277. package/dist/lexicons/app/bsky/graph/block.defs.js +1 -1
  278. package/dist/lexicons/app/bsky/graph/block.defs.js.map +1 -1
  279. package/dist/lexicons/app/bsky/graph/defs.defs.d.ts +1 -1
  280. package/dist/lexicons/app/bsky/graph/defs.defs.d.ts.map +1 -1
  281. package/dist/lexicons/app/bsky/graph/defs.defs.js +1 -1
  282. package/dist/lexicons/app/bsky/graph/defs.defs.js.map +1 -1
  283. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts +1 -1
  284. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts.map +1 -1
  285. package/dist/lexicons/app/bsky/graph/follow.defs.js +1 -1
  286. package/dist/lexicons/app/bsky/graph/follow.defs.js.map +1 -1
  287. package/dist/lexicons/app/bsky/graph/getList.defs.d.ts +1 -1
  288. package/dist/lexicons/app/bsky/graph/getList.defs.d.ts.map +1 -1
  289. package/dist/lexicons/app/bsky/graph/getList.defs.js +1 -1
  290. package/dist/lexicons/app/bsky/graph/getList.defs.js.map +1 -1
  291. package/dist/lexicons/app/bsky/graph/list.defs.d.ts +1 -1
  292. package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
  293. package/dist/lexicons/app/bsky/graph/list.defs.js +1 -1
  294. package/dist/lexicons/app/bsky/graph/list.defs.js.map +1 -1
  295. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts +1 -1
  296. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts.map +1 -1
  297. package/dist/lexicons/app/bsky/graph/listblock.defs.js +1 -1
  298. package/dist/lexicons/app/bsky/graph/listblock.defs.js.map +1 -1
  299. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts +1 -1
  300. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts.map +1 -1
  301. package/dist/lexicons/app/bsky/graph/listitem.defs.js +1 -1
  302. package/dist/lexicons/app/bsky/graph/listitem.defs.js.map +1 -1
  303. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.d.ts +1 -1
  304. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.d.ts.map +1 -1
  305. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.js +1 -1
  306. package/dist/lexicons/app/bsky/graph/referencelistoptout.defs.js.map +1 -1
  307. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts +1 -1
  308. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts.map +1 -1
  309. package/dist/lexicons/app/bsky/graph/starterpack.defs.js +1 -1
  310. package/dist/lexicons/app/bsky/graph/starterpack.defs.js.map +1 -1
  311. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts +1 -1
  312. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts.map +1 -1
  313. package/dist/lexicons/app/bsky/graph/verification.defs.js +1 -1
  314. package/dist/lexicons/app/bsky/graph/verification.defs.js.map +1 -1
  315. package/dist/lexicons/app/bsky/labeler/defs.defs.d.ts +1 -1
  316. package/dist/lexicons/app/bsky/labeler/defs.defs.d.ts.map +1 -1
  317. package/dist/lexicons/app/bsky/labeler/defs.defs.js +1 -1
  318. package/dist/lexicons/app/bsky/labeler/defs.defs.js.map +1 -1
  319. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts +1 -1
  320. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts.map +1 -1
  321. package/dist/lexicons/app/bsky/labeler/service.defs.js +1 -1
  322. package/dist/lexicons/app/bsky/labeler/service.defs.js.map +1 -1
  323. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts +1 -1
  324. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts.map +1 -1
  325. package/dist/lexicons/app/bsky/notification/declaration.defs.js +1 -1
  326. package/dist/lexicons/app/bsky/notification/declaration.defs.js.map +1 -1
  327. package/dist/lexicons/app/bsky/notification/defs.defs.d.ts +1 -1
  328. package/dist/lexicons/app/bsky/notification/defs.defs.d.ts.map +1 -1
  329. package/dist/lexicons/app/bsky/notification/defs.defs.js +1 -1
  330. package/dist/lexicons/app/bsky/notification/defs.defs.js.map +1 -1
  331. package/dist/lexicons/app/bsky/notification/registerPush.defs.d.ts +1 -1
  332. package/dist/lexicons/app/bsky/notification/registerPush.defs.d.ts.map +1 -1
  333. package/dist/lexicons/app/bsky/notification/registerPush.defs.js +1 -1
  334. package/dist/lexicons/app/bsky/notification/registerPush.defs.js.map +1 -1
  335. package/dist/lexicons/app/bsky/notification/unregisterPush.defs.d.ts +1 -1
  336. package/dist/lexicons/app/bsky/notification/unregisterPush.defs.d.ts.map +1 -1
  337. package/dist/lexicons/app/bsky/notification/unregisterPush.defs.js +1 -1
  338. package/dist/lexicons/app/bsky/notification/unregisterPush.defs.js.map +1 -1
  339. package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts +1 -1
  340. package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts.map +1 -1
  341. package/dist/lexicons/app/bsky/richtext/facet.defs.js +1 -1
  342. package/dist/lexicons/app/bsky/richtext/facet.defs.js.map +1 -1
  343. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts +1 -1
  344. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts.map +1 -1
  345. package/dist/lexicons/chat/bsky/actor/declaration.defs.js +1 -1
  346. package/dist/lexicons/chat/bsky/actor/declaration.defs.js.map +1 -1
  347. package/dist/lexicons/chat/bsky/actor/defs.defs.d.ts +1 -1
  348. package/dist/lexicons/chat/bsky/actor/defs.defs.d.ts.map +1 -1
  349. package/dist/lexicons/chat/bsky/actor/defs.defs.js +1 -1
  350. package/dist/lexicons/chat/bsky/actor/defs.defs.js.map +1 -1
  351. package/dist/lexicons/chat/bsky/actor/deleteAccount.defs.d.ts +1 -1
  352. package/dist/lexicons/chat/bsky/actor/deleteAccount.defs.d.ts.map +1 -1
  353. package/dist/lexicons/chat/bsky/actor/deleteAccount.defs.js +1 -1
  354. package/dist/lexicons/chat/bsky/actor/deleteAccount.defs.js.map +1 -1
  355. package/dist/lexicons/chat/bsky/actor/exportAccountData.defs.d.ts +1 -1
  356. package/dist/lexicons/chat/bsky/actor/exportAccountData.defs.d.ts.map +1 -1
  357. package/dist/lexicons/chat/bsky/actor/exportAccountData.defs.js +1 -1
  358. package/dist/lexicons/chat/bsky/actor/exportAccountData.defs.js.map +1 -1
  359. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts +1 -1
  360. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  361. package/dist/lexicons/chat/bsky/convo/defs.defs.js +1 -1
  362. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  363. package/dist/lexicons/chat/bsky/convo/deleteMessageForSelf.defs.d.ts +1 -1
  364. package/dist/lexicons/chat/bsky/convo/deleteMessageForSelf.defs.d.ts.map +1 -1
  365. package/dist/lexicons/chat/bsky/convo/deleteMessageForSelf.defs.js +1 -1
  366. package/dist/lexicons/chat/bsky/convo/deleteMessageForSelf.defs.js.map +1 -1
  367. package/dist/lexicons/chat/bsky/convo/getConvo.defs.d.ts +1 -1
  368. package/dist/lexicons/chat/bsky/convo/getConvo.defs.d.ts.map +1 -1
  369. package/dist/lexicons/chat/bsky/convo/getConvo.defs.js +1 -1
  370. package/dist/lexicons/chat/bsky/convo/getConvo.defs.js.map +1 -1
  371. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.d.ts +1 -1
  372. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.d.ts.map +1 -1
  373. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.js +1 -1
  374. package/dist/lexicons/chat/bsky/convo/getConvoForMembers.defs.js.map +1 -1
  375. package/dist/lexicons/chat/bsky/convo/getLog.defs.d.ts +1 -1
  376. package/dist/lexicons/chat/bsky/convo/getLog.defs.d.ts.map +1 -1
  377. package/dist/lexicons/chat/bsky/convo/getLog.defs.js +1 -1
  378. package/dist/lexicons/chat/bsky/convo/getLog.defs.js.map +1 -1
  379. package/dist/lexicons/chat/bsky/convo/getMessages.defs.d.ts +1 -1
  380. package/dist/lexicons/chat/bsky/convo/getMessages.defs.d.ts.map +1 -1
  381. package/dist/lexicons/chat/bsky/convo/getMessages.defs.js +1 -1
  382. package/dist/lexicons/chat/bsky/convo/getMessages.defs.js.map +1 -1
  383. package/dist/lexicons/chat/bsky/convo/leaveConvo.defs.d.ts +1 -1
  384. package/dist/lexicons/chat/bsky/convo/leaveConvo.defs.d.ts.map +1 -1
  385. package/dist/lexicons/chat/bsky/convo/leaveConvo.defs.js +1 -1
  386. package/dist/lexicons/chat/bsky/convo/leaveConvo.defs.js.map +1 -1
  387. package/dist/lexicons/chat/bsky/convo/listConvos.defs.d.ts +1 -1
  388. package/dist/lexicons/chat/bsky/convo/listConvos.defs.d.ts.map +1 -1
  389. package/dist/lexicons/chat/bsky/convo/listConvos.defs.js +1 -1
  390. package/dist/lexicons/chat/bsky/convo/listConvos.defs.js.map +1 -1
  391. package/dist/lexicons/chat/bsky/convo/muteConvo.defs.d.ts +1 -1
  392. package/dist/lexicons/chat/bsky/convo/muteConvo.defs.d.ts.map +1 -1
  393. package/dist/lexicons/chat/bsky/convo/muteConvo.defs.js +1 -1
  394. package/dist/lexicons/chat/bsky/convo/muteConvo.defs.js.map +1 -1
  395. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts +1 -1
  396. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts.map +1 -1
  397. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js +1 -1
  398. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js.map +1 -1
  399. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts +1 -1
  400. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts.map +1 -1
  401. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js +1 -1
  402. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js.map +1 -1
  403. package/dist/lexicons/chat/bsky/convo/unmuteConvo.defs.d.ts +1 -1
  404. package/dist/lexicons/chat/bsky/convo/unmuteConvo.defs.d.ts.map +1 -1
  405. package/dist/lexicons/chat/bsky/convo/unmuteConvo.defs.js +1 -1
  406. package/dist/lexicons/chat/bsky/convo/unmuteConvo.defs.js.map +1 -1
  407. package/dist/lexicons/chat/bsky/convo/updateRead.defs.d.ts +1 -1
  408. package/dist/lexicons/chat/bsky/convo/updateRead.defs.d.ts.map +1 -1
  409. package/dist/lexicons/chat/bsky/convo/updateRead.defs.js +1 -1
  410. package/dist/lexicons/chat/bsky/convo/updateRead.defs.js.map +1 -1
  411. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts +1 -1
  412. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts.map +1 -1
  413. package/dist/lexicons/chat/bsky/embed/joinLink.defs.js +1 -1
  414. package/dist/lexicons/chat/bsky/embed/joinLink.defs.js.map +1 -1
  415. package/dist/lexicons/chat/bsky/group/defs.defs.d.ts +1 -1
  416. package/dist/lexicons/chat/bsky/group/defs.defs.d.ts.map +1 -1
  417. package/dist/lexicons/chat/bsky/group/defs.defs.js +1 -1
  418. package/dist/lexicons/chat/bsky/group/defs.defs.js.map +1 -1
  419. package/dist/lexicons/com/atproto/admin/defs.defs.d.ts +1 -1
  420. package/dist/lexicons/com/atproto/admin/defs.defs.d.ts.map +1 -1
  421. package/dist/lexicons/com/atproto/admin/defs.defs.js +1 -1
  422. package/dist/lexicons/com/atproto/admin/defs.defs.js.map +1 -1
  423. package/dist/lexicons/com/atproto/admin/deleteAccount.defs.d.ts +1 -1
  424. package/dist/lexicons/com/atproto/admin/deleteAccount.defs.d.ts.map +1 -1
  425. package/dist/lexicons/com/atproto/admin/deleteAccount.defs.js +1 -1
  426. package/dist/lexicons/com/atproto/admin/deleteAccount.defs.js.map +1 -1
  427. package/dist/lexicons/com/atproto/admin/disableAccountInvites.defs.d.ts +1 -1
  428. package/dist/lexicons/com/atproto/admin/disableAccountInvites.defs.d.ts.map +1 -1
  429. package/dist/lexicons/com/atproto/admin/disableAccountInvites.defs.js +1 -1
  430. package/dist/lexicons/com/atproto/admin/disableAccountInvites.defs.js.map +1 -1
  431. package/dist/lexicons/com/atproto/admin/disableInviteCodes.defs.d.ts +1 -1
  432. package/dist/lexicons/com/atproto/admin/disableInviteCodes.defs.d.ts.map +1 -1
  433. package/dist/lexicons/com/atproto/admin/disableInviteCodes.defs.js +1 -1
  434. package/dist/lexicons/com/atproto/admin/disableInviteCodes.defs.js.map +1 -1
  435. package/dist/lexicons/com/atproto/admin/enableAccountInvites.defs.d.ts +1 -1
  436. package/dist/lexicons/com/atproto/admin/enableAccountInvites.defs.d.ts.map +1 -1
  437. package/dist/lexicons/com/atproto/admin/enableAccountInvites.defs.js +1 -1
  438. package/dist/lexicons/com/atproto/admin/enableAccountInvites.defs.js.map +1 -1
  439. package/dist/lexicons/com/atproto/admin/getAccountInfo.defs.d.ts +1 -1
  440. package/dist/lexicons/com/atproto/admin/getAccountInfo.defs.d.ts.map +1 -1
  441. package/dist/lexicons/com/atproto/admin/getAccountInfo.defs.js +1 -1
  442. package/dist/lexicons/com/atproto/admin/getAccountInfo.defs.js.map +1 -1
  443. package/dist/lexicons/com/atproto/admin/getAccountInfos.defs.d.ts +1 -1
  444. package/dist/lexicons/com/atproto/admin/getAccountInfos.defs.d.ts.map +1 -1
  445. package/dist/lexicons/com/atproto/admin/getAccountInfos.defs.js +1 -1
  446. package/dist/lexicons/com/atproto/admin/getAccountInfos.defs.js.map +1 -1
  447. package/dist/lexicons/com/atproto/admin/getInviteCodes.defs.d.ts +1 -1
  448. package/dist/lexicons/com/atproto/admin/getInviteCodes.defs.d.ts.map +1 -1
  449. package/dist/lexicons/com/atproto/admin/getInviteCodes.defs.js +1 -1
  450. package/dist/lexicons/com/atproto/admin/getInviteCodes.defs.js.map +1 -1
  451. package/dist/lexicons/com/atproto/admin/getSubjectStatus.defs.d.ts +1 -1
  452. package/dist/lexicons/com/atproto/admin/getSubjectStatus.defs.d.ts.map +1 -1
  453. package/dist/lexicons/com/atproto/admin/getSubjectStatus.defs.js +1 -1
  454. package/dist/lexicons/com/atproto/admin/getSubjectStatus.defs.js.map +1 -1
  455. package/dist/lexicons/com/atproto/admin/searchAccounts.defs.d.ts +1 -1
  456. package/dist/lexicons/com/atproto/admin/searchAccounts.defs.d.ts.map +1 -1
  457. package/dist/lexicons/com/atproto/admin/searchAccounts.defs.js +1 -1
  458. package/dist/lexicons/com/atproto/admin/searchAccounts.defs.js.map +1 -1
  459. package/dist/lexicons/com/atproto/admin/sendEmail.defs.d.ts +1 -1
  460. package/dist/lexicons/com/atproto/admin/sendEmail.defs.d.ts.map +1 -1
  461. package/dist/lexicons/com/atproto/admin/sendEmail.defs.js +1 -1
  462. package/dist/lexicons/com/atproto/admin/sendEmail.defs.js.map +1 -1
  463. package/dist/lexicons/com/atproto/admin/updateAccountEmail.defs.d.ts +1 -1
  464. package/dist/lexicons/com/atproto/admin/updateAccountEmail.defs.d.ts.map +1 -1
  465. package/dist/lexicons/com/atproto/admin/updateAccountEmail.defs.js +1 -1
  466. package/dist/lexicons/com/atproto/admin/updateAccountEmail.defs.js.map +1 -1
  467. package/dist/lexicons/com/atproto/admin/updateAccountHandle.defs.d.ts +1 -1
  468. package/dist/lexicons/com/atproto/admin/updateAccountHandle.defs.d.ts.map +1 -1
  469. package/dist/lexicons/com/atproto/admin/updateAccountHandle.defs.js +1 -1
  470. package/dist/lexicons/com/atproto/admin/updateAccountHandle.defs.js.map +1 -1
  471. package/dist/lexicons/com/atproto/admin/updateAccountPassword.defs.d.ts +1 -1
  472. package/dist/lexicons/com/atproto/admin/updateAccountPassword.defs.d.ts.map +1 -1
  473. package/dist/lexicons/com/atproto/admin/updateAccountPassword.defs.js +1 -1
  474. package/dist/lexicons/com/atproto/admin/updateAccountPassword.defs.js.map +1 -1
  475. package/dist/lexicons/com/atproto/admin/updateAccountSigningKey.defs.d.ts +1 -1
  476. package/dist/lexicons/com/atproto/admin/updateAccountSigningKey.defs.d.ts.map +1 -1
  477. package/dist/lexicons/com/atproto/admin/updateAccountSigningKey.defs.js +1 -1
  478. package/dist/lexicons/com/atproto/admin/updateAccountSigningKey.defs.js.map +1 -1
  479. package/dist/lexicons/com/atproto/admin/updateSubjectStatus.defs.d.ts +1 -1
  480. package/dist/lexicons/com/atproto/admin/updateSubjectStatus.defs.d.ts.map +1 -1
  481. package/dist/lexicons/com/atproto/admin/updateSubjectStatus.defs.js +1 -1
  482. package/dist/lexicons/com/atproto/admin/updateSubjectStatus.defs.js.map +1 -1
  483. package/dist/lexicons/com/atproto/identity/defs.defs.d.ts +1 -1
  484. package/dist/lexicons/com/atproto/identity/defs.defs.d.ts.map +1 -1
  485. package/dist/lexicons/com/atproto/identity/defs.defs.js +1 -1
  486. package/dist/lexicons/com/atproto/identity/defs.defs.js.map +1 -1
  487. package/dist/lexicons/com/atproto/identity/getRecommendedDidCredentials.defs.d.ts +1 -1
  488. package/dist/lexicons/com/atproto/identity/getRecommendedDidCredentials.defs.d.ts.map +1 -1
  489. package/dist/lexicons/com/atproto/identity/getRecommendedDidCredentials.defs.js +1 -1
  490. package/dist/lexicons/com/atproto/identity/getRecommendedDidCredentials.defs.js.map +1 -1
  491. package/dist/lexicons/com/atproto/identity/refreshIdentity.defs.d.ts +1 -1
  492. package/dist/lexicons/com/atproto/identity/refreshIdentity.defs.d.ts.map +1 -1
  493. package/dist/lexicons/com/atproto/identity/refreshIdentity.defs.js +1 -1
  494. package/dist/lexicons/com/atproto/identity/refreshIdentity.defs.js.map +1 -1
  495. package/dist/lexicons/com/atproto/identity/requestPlcOperationSignature.defs.d.ts +1 -1
  496. package/dist/lexicons/com/atproto/identity/requestPlcOperationSignature.defs.d.ts.map +1 -1
  497. package/dist/lexicons/com/atproto/identity/requestPlcOperationSignature.defs.js +1 -1
  498. package/dist/lexicons/com/atproto/identity/requestPlcOperationSignature.defs.js.map +1 -1
  499. package/dist/lexicons/com/atproto/identity/resolveDid.defs.d.ts +1 -1
  500. package/dist/lexicons/com/atproto/identity/resolveDid.defs.d.ts.map +1 -1
  501. package/dist/lexicons/com/atproto/identity/resolveDid.defs.js +1 -1
  502. package/dist/lexicons/com/atproto/identity/resolveDid.defs.js.map +1 -1
  503. package/dist/lexicons/com/atproto/identity/resolveHandle.defs.d.ts +1 -1
  504. package/dist/lexicons/com/atproto/identity/resolveHandle.defs.d.ts.map +1 -1
  505. package/dist/lexicons/com/atproto/identity/resolveHandle.defs.js +1 -1
  506. package/dist/lexicons/com/atproto/identity/resolveHandle.defs.js.map +1 -1
  507. package/dist/lexicons/com/atproto/identity/resolveIdentity.defs.d.ts +1 -1
  508. package/dist/lexicons/com/atproto/identity/resolveIdentity.defs.d.ts.map +1 -1
  509. package/dist/lexicons/com/atproto/identity/resolveIdentity.defs.js +1 -1
  510. package/dist/lexicons/com/atproto/identity/resolveIdentity.defs.js.map +1 -1
  511. package/dist/lexicons/com/atproto/identity/signPlcOperation.defs.d.ts +1 -1
  512. package/dist/lexicons/com/atproto/identity/signPlcOperation.defs.d.ts.map +1 -1
  513. package/dist/lexicons/com/atproto/identity/signPlcOperation.defs.js +1 -1
  514. package/dist/lexicons/com/atproto/identity/signPlcOperation.defs.js.map +1 -1
  515. package/dist/lexicons/com/atproto/identity/submitPlcOperation.defs.d.ts +1 -1
  516. package/dist/lexicons/com/atproto/identity/submitPlcOperation.defs.d.ts.map +1 -1
  517. package/dist/lexicons/com/atproto/identity/submitPlcOperation.defs.js +1 -1
  518. package/dist/lexicons/com/atproto/identity/submitPlcOperation.defs.js.map +1 -1
  519. package/dist/lexicons/com/atproto/identity/updateHandle.defs.d.ts +1 -1
  520. package/dist/lexicons/com/atproto/identity/updateHandle.defs.d.ts.map +1 -1
  521. package/dist/lexicons/com/atproto/identity/updateHandle.defs.js +1 -1
  522. package/dist/lexicons/com/atproto/identity/updateHandle.defs.js.map +1 -1
  523. package/dist/lexicons/com/atproto/label/defs.defs.d.ts +1 -1
  524. package/dist/lexicons/com/atproto/label/defs.defs.d.ts.map +1 -1
  525. package/dist/lexicons/com/atproto/label/defs.defs.js +1 -1
  526. package/dist/lexicons/com/atproto/label/defs.defs.js.map +1 -1
  527. package/dist/lexicons/com/atproto/label/queryLabels.defs.d.ts +1 -1
  528. package/dist/lexicons/com/atproto/label/queryLabels.defs.d.ts.map +1 -1
  529. package/dist/lexicons/com/atproto/label/queryLabels.defs.js +1 -1
  530. package/dist/lexicons/com/atproto/label/queryLabels.defs.js.map +1 -1
  531. package/dist/lexicons/com/atproto/label/record.d.ts +3 -0
  532. package/dist/lexicons/com/atproto/label/record.d.ts.map +1 -0
  533. package/dist/lexicons/com/atproto/label/record.defs.d.ts +122 -0
  534. package/dist/lexicons/com/atproto/label/record.defs.d.ts.map +1 -0
  535. package/dist/lexicons/com/atproto/label/record.defs.js +23 -0
  536. package/dist/lexicons/com/atproto/label/record.defs.js.map +1 -0
  537. package/dist/lexicons/com/atproto/label/record.js +6 -0
  538. package/dist/lexicons/com/atproto/label/record.js.map +1 -0
  539. package/dist/lexicons/com/atproto/label/subscribeLabels.defs.d.ts +1 -1
  540. package/dist/lexicons/com/atproto/label/subscribeLabels.defs.d.ts.map +1 -1
  541. package/dist/lexicons/com/atproto/label/subscribeLabels.defs.js +1 -1
  542. package/dist/lexicons/com/atproto/label/subscribeLabels.defs.js.map +1 -1
  543. package/dist/lexicons/com/atproto/label.d.ts +1 -0
  544. package/dist/lexicons/com/atproto/label.d.ts.map +1 -1
  545. package/dist/lexicons/com/atproto/label.js +1 -0
  546. package/dist/lexicons/com/atproto/label.js.map +1 -1
  547. package/dist/lexicons/com/atproto/lexicon/resolveLexicon.defs.d.ts +1 -1
  548. package/dist/lexicons/com/atproto/lexicon/resolveLexicon.defs.d.ts.map +1 -1
  549. package/dist/lexicons/com/atproto/lexicon/resolveLexicon.defs.js +1 -1
  550. package/dist/lexicons/com/atproto/lexicon/resolveLexicon.defs.js.map +1 -1
  551. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts +1 -1
  552. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts.map +1 -1
  553. package/dist/lexicons/com/atproto/lexicon/schema.defs.js +1 -1
  554. package/dist/lexicons/com/atproto/lexicon/schema.defs.js.map +1 -1
  555. package/dist/lexicons/com/atproto/moderation/createReport.defs.d.ts +1 -1
  556. package/dist/lexicons/com/atproto/moderation/createReport.defs.d.ts.map +1 -1
  557. package/dist/lexicons/com/atproto/moderation/createReport.defs.js +1 -1
  558. package/dist/lexicons/com/atproto/moderation/createReport.defs.js.map +1 -1
  559. package/dist/lexicons/com/atproto/moderation/defs.defs.d.ts +1 -1
  560. package/dist/lexicons/com/atproto/moderation/defs.defs.d.ts.map +1 -1
  561. package/dist/lexicons/com/atproto/moderation/defs.defs.js +1 -1
  562. package/dist/lexicons/com/atproto/moderation/defs.defs.js.map +1 -1
  563. package/dist/lexicons/com/atproto/repo/applyWrites.defs.d.ts +1 -1
  564. package/dist/lexicons/com/atproto/repo/applyWrites.defs.d.ts.map +1 -1
  565. package/dist/lexicons/com/atproto/repo/applyWrites.defs.js +1 -1
  566. package/dist/lexicons/com/atproto/repo/applyWrites.defs.js.map +1 -1
  567. package/dist/lexicons/com/atproto/repo/createRecord.defs.d.ts +1 -1
  568. package/dist/lexicons/com/atproto/repo/createRecord.defs.d.ts.map +1 -1
  569. package/dist/lexicons/com/atproto/repo/createRecord.defs.js +1 -1
  570. package/dist/lexicons/com/atproto/repo/createRecord.defs.js.map +1 -1
  571. package/dist/lexicons/com/atproto/repo/defs.defs.d.ts +1 -1
  572. package/dist/lexicons/com/atproto/repo/defs.defs.d.ts.map +1 -1
  573. package/dist/lexicons/com/atproto/repo/defs.defs.js +1 -1
  574. package/dist/lexicons/com/atproto/repo/defs.defs.js.map +1 -1
  575. package/dist/lexicons/com/atproto/repo/deleteRecord.defs.d.ts +1 -1
  576. package/dist/lexicons/com/atproto/repo/deleteRecord.defs.d.ts.map +1 -1
  577. package/dist/lexicons/com/atproto/repo/deleteRecord.defs.js +1 -1
  578. package/dist/lexicons/com/atproto/repo/deleteRecord.defs.js.map +1 -1
  579. package/dist/lexicons/com/atproto/repo/describeRepo.defs.d.ts +1 -1
  580. package/dist/lexicons/com/atproto/repo/describeRepo.defs.d.ts.map +1 -1
  581. package/dist/lexicons/com/atproto/repo/describeRepo.defs.js +1 -1
  582. package/dist/lexicons/com/atproto/repo/describeRepo.defs.js.map +1 -1
  583. package/dist/lexicons/com/atproto/repo/getRecord.defs.d.ts +1 -1
  584. package/dist/lexicons/com/atproto/repo/getRecord.defs.d.ts.map +1 -1
  585. package/dist/lexicons/com/atproto/repo/getRecord.defs.js +1 -1
  586. package/dist/lexicons/com/atproto/repo/getRecord.defs.js.map +1 -1
  587. package/dist/lexicons/com/atproto/repo/importRepo.defs.d.ts +1 -1
  588. package/dist/lexicons/com/atproto/repo/importRepo.defs.d.ts.map +1 -1
  589. package/dist/lexicons/com/atproto/repo/importRepo.defs.js +1 -1
  590. package/dist/lexicons/com/atproto/repo/importRepo.defs.js.map +1 -1
  591. package/dist/lexicons/com/atproto/repo/listMissingBlobs.defs.d.ts +1 -1
  592. package/dist/lexicons/com/atproto/repo/listMissingBlobs.defs.d.ts.map +1 -1
  593. package/dist/lexicons/com/atproto/repo/listMissingBlobs.defs.js +1 -1
  594. package/dist/lexicons/com/atproto/repo/listMissingBlobs.defs.js.map +1 -1
  595. package/dist/lexicons/com/atproto/repo/listRecords.defs.d.ts +1 -1
  596. package/dist/lexicons/com/atproto/repo/listRecords.defs.d.ts.map +1 -1
  597. package/dist/lexicons/com/atproto/repo/listRecords.defs.js +1 -1
  598. package/dist/lexicons/com/atproto/repo/listRecords.defs.js.map +1 -1
  599. package/dist/lexicons/com/atproto/repo/putRecord.defs.d.ts +1 -1
  600. package/dist/lexicons/com/atproto/repo/putRecord.defs.d.ts.map +1 -1
  601. package/dist/lexicons/com/atproto/repo/putRecord.defs.js +1 -1
  602. package/dist/lexicons/com/atproto/repo/putRecord.defs.js.map +1 -1
  603. package/dist/lexicons/com/atproto/repo/strongRef.defs.d.ts +1 -1
  604. package/dist/lexicons/com/atproto/repo/strongRef.defs.d.ts.map +1 -1
  605. package/dist/lexicons/com/atproto/repo/strongRef.defs.js +1 -1
  606. package/dist/lexicons/com/atproto/repo/strongRef.defs.js.map +1 -1
  607. package/dist/lexicons/com/atproto/repo/uploadBlob.defs.d.ts +1 -1
  608. package/dist/lexicons/com/atproto/repo/uploadBlob.defs.d.ts.map +1 -1
  609. package/dist/lexicons/com/atproto/repo/uploadBlob.defs.js +1 -1
  610. package/dist/lexicons/com/atproto/repo/uploadBlob.defs.js.map +1 -1
  611. package/dist/lexicons/com/atproto/server/activateAccount.defs.d.ts +1 -1
  612. package/dist/lexicons/com/atproto/server/activateAccount.defs.d.ts.map +1 -1
  613. package/dist/lexicons/com/atproto/server/activateAccount.defs.js +1 -1
  614. package/dist/lexicons/com/atproto/server/activateAccount.defs.js.map +1 -1
  615. package/dist/lexicons/com/atproto/server/checkAccountStatus.defs.d.ts +1 -1
  616. package/dist/lexicons/com/atproto/server/checkAccountStatus.defs.d.ts.map +1 -1
  617. package/dist/lexicons/com/atproto/server/checkAccountStatus.defs.js +1 -1
  618. package/dist/lexicons/com/atproto/server/checkAccountStatus.defs.js.map +1 -1
  619. package/dist/lexicons/com/atproto/server/confirmEmail.defs.d.ts +1 -1
  620. package/dist/lexicons/com/atproto/server/confirmEmail.defs.d.ts.map +1 -1
  621. package/dist/lexicons/com/atproto/server/confirmEmail.defs.js +1 -1
  622. package/dist/lexicons/com/atproto/server/confirmEmail.defs.js.map +1 -1
  623. package/dist/lexicons/com/atproto/server/createAccount.defs.d.ts +1 -1
  624. package/dist/lexicons/com/atproto/server/createAccount.defs.d.ts.map +1 -1
  625. package/dist/lexicons/com/atproto/server/createAccount.defs.js +1 -1
  626. package/dist/lexicons/com/atproto/server/createAccount.defs.js.map +1 -1
  627. package/dist/lexicons/com/atproto/server/createAppPassword.defs.d.ts +1 -1
  628. package/dist/lexicons/com/atproto/server/createAppPassword.defs.d.ts.map +1 -1
  629. package/dist/lexicons/com/atproto/server/createAppPassword.defs.js +1 -1
  630. package/dist/lexicons/com/atproto/server/createAppPassword.defs.js.map +1 -1
  631. package/dist/lexicons/com/atproto/server/createInviteCode.defs.d.ts +1 -1
  632. package/dist/lexicons/com/atproto/server/createInviteCode.defs.d.ts.map +1 -1
  633. package/dist/lexicons/com/atproto/server/createInviteCode.defs.js +1 -1
  634. package/dist/lexicons/com/atproto/server/createInviteCode.defs.js.map +1 -1
  635. package/dist/lexicons/com/atproto/server/createInviteCodes.defs.d.ts +1 -1
  636. package/dist/lexicons/com/atproto/server/createInviteCodes.defs.d.ts.map +1 -1
  637. package/dist/lexicons/com/atproto/server/createInviteCodes.defs.js +1 -1
  638. package/dist/lexicons/com/atproto/server/createInviteCodes.defs.js.map +1 -1
  639. package/dist/lexicons/com/atproto/server/createSession.defs.d.ts +1 -1
  640. package/dist/lexicons/com/atproto/server/createSession.defs.d.ts.map +1 -1
  641. package/dist/lexicons/com/atproto/server/createSession.defs.js +1 -1
  642. package/dist/lexicons/com/atproto/server/createSession.defs.js.map +1 -1
  643. package/dist/lexicons/com/atproto/server/deactivateAccount.defs.d.ts +1 -1
  644. package/dist/lexicons/com/atproto/server/deactivateAccount.defs.d.ts.map +1 -1
  645. package/dist/lexicons/com/atproto/server/deactivateAccount.defs.js +1 -1
  646. package/dist/lexicons/com/atproto/server/deactivateAccount.defs.js.map +1 -1
  647. package/dist/lexicons/com/atproto/server/defs.defs.d.ts +1 -1
  648. package/dist/lexicons/com/atproto/server/defs.defs.d.ts.map +1 -1
  649. package/dist/lexicons/com/atproto/server/defs.defs.js +1 -1
  650. package/dist/lexicons/com/atproto/server/defs.defs.js.map +1 -1
  651. package/dist/lexicons/com/atproto/server/deleteAccount.defs.d.ts +1 -1
  652. package/dist/lexicons/com/atproto/server/deleteAccount.defs.d.ts.map +1 -1
  653. package/dist/lexicons/com/atproto/server/deleteAccount.defs.js +1 -1
  654. package/dist/lexicons/com/atproto/server/deleteAccount.defs.js.map +1 -1
  655. package/dist/lexicons/com/atproto/server/deleteSession.defs.d.ts +1 -1
  656. package/dist/lexicons/com/atproto/server/deleteSession.defs.d.ts.map +1 -1
  657. package/dist/lexicons/com/atproto/server/deleteSession.defs.js +1 -1
  658. package/dist/lexicons/com/atproto/server/deleteSession.defs.js.map +1 -1
  659. package/dist/lexicons/com/atproto/server/describeServer.defs.d.ts +1 -1
  660. package/dist/lexicons/com/atproto/server/describeServer.defs.d.ts.map +1 -1
  661. package/dist/lexicons/com/atproto/server/describeServer.defs.js +1 -1
  662. package/dist/lexicons/com/atproto/server/describeServer.defs.js.map +1 -1
  663. package/dist/lexicons/com/atproto/server/getAccountInviteCodes.defs.d.ts +1 -1
  664. package/dist/lexicons/com/atproto/server/getAccountInviteCodes.defs.d.ts.map +1 -1
  665. package/dist/lexicons/com/atproto/server/getAccountInviteCodes.defs.js +1 -1
  666. package/dist/lexicons/com/atproto/server/getAccountInviteCodes.defs.js.map +1 -1
  667. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.d.ts +1 -1
  668. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.d.ts.map +1 -1
  669. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.js +1 -1
  670. package/dist/lexicons/com/atproto/server/getServiceAuth.defs.js.map +1 -1
  671. package/dist/lexicons/com/atproto/server/getSession.defs.d.ts +1 -1
  672. package/dist/lexicons/com/atproto/server/getSession.defs.d.ts.map +1 -1
  673. package/dist/lexicons/com/atproto/server/getSession.defs.js +1 -1
  674. package/dist/lexicons/com/atproto/server/getSession.defs.js.map +1 -1
  675. package/dist/lexicons/com/atproto/server/listAppPasswords.defs.d.ts +1 -1
  676. package/dist/lexicons/com/atproto/server/listAppPasswords.defs.d.ts.map +1 -1
  677. package/dist/lexicons/com/atproto/server/listAppPasswords.defs.js +1 -1
  678. package/dist/lexicons/com/atproto/server/listAppPasswords.defs.js.map +1 -1
  679. package/dist/lexicons/com/atproto/server/refreshSession.defs.d.ts +1 -1
  680. package/dist/lexicons/com/atproto/server/refreshSession.defs.d.ts.map +1 -1
  681. package/dist/lexicons/com/atproto/server/refreshSession.defs.js +1 -1
  682. package/dist/lexicons/com/atproto/server/refreshSession.defs.js.map +1 -1
  683. package/dist/lexicons/com/atproto/server/requestAccountDelete.defs.d.ts +1 -1
  684. package/dist/lexicons/com/atproto/server/requestAccountDelete.defs.d.ts.map +1 -1
  685. package/dist/lexicons/com/atproto/server/requestAccountDelete.defs.js +1 -1
  686. package/dist/lexicons/com/atproto/server/requestAccountDelete.defs.js.map +1 -1
  687. package/dist/lexicons/com/atproto/server/requestEmailConfirmation.defs.d.ts +1 -1
  688. package/dist/lexicons/com/atproto/server/requestEmailConfirmation.defs.d.ts.map +1 -1
  689. package/dist/lexicons/com/atproto/server/requestEmailConfirmation.defs.js +1 -1
  690. package/dist/lexicons/com/atproto/server/requestEmailConfirmation.defs.js.map +1 -1
  691. package/dist/lexicons/com/atproto/server/requestEmailUpdate.defs.d.ts +1 -1
  692. package/dist/lexicons/com/atproto/server/requestEmailUpdate.defs.d.ts.map +1 -1
  693. package/dist/lexicons/com/atproto/server/requestEmailUpdate.defs.js +1 -1
  694. package/dist/lexicons/com/atproto/server/requestEmailUpdate.defs.js.map +1 -1
  695. package/dist/lexicons/com/atproto/server/requestPasswordReset.defs.d.ts +1 -1
  696. package/dist/lexicons/com/atproto/server/requestPasswordReset.defs.d.ts.map +1 -1
  697. package/dist/lexicons/com/atproto/server/requestPasswordReset.defs.js +1 -1
  698. package/dist/lexicons/com/atproto/server/requestPasswordReset.defs.js.map +1 -1
  699. package/dist/lexicons/com/atproto/server/reserveSigningKey.defs.d.ts +1 -1
  700. package/dist/lexicons/com/atproto/server/reserveSigningKey.defs.d.ts.map +1 -1
  701. package/dist/lexicons/com/atproto/server/reserveSigningKey.defs.js +1 -1
  702. package/dist/lexicons/com/atproto/server/reserveSigningKey.defs.js.map +1 -1
  703. package/dist/lexicons/com/atproto/server/resetPassword.defs.d.ts +1 -1
  704. package/dist/lexicons/com/atproto/server/resetPassword.defs.d.ts.map +1 -1
  705. package/dist/lexicons/com/atproto/server/resetPassword.defs.js +1 -1
  706. package/dist/lexicons/com/atproto/server/resetPassword.defs.js.map +1 -1
  707. package/dist/lexicons/com/atproto/server/revokeAppPassword.defs.d.ts +1 -1
  708. package/dist/lexicons/com/atproto/server/revokeAppPassword.defs.d.ts.map +1 -1
  709. package/dist/lexicons/com/atproto/server/revokeAppPassword.defs.js +1 -1
  710. package/dist/lexicons/com/atproto/server/revokeAppPassword.defs.js.map +1 -1
  711. package/dist/lexicons/com/atproto/server/updateEmail.defs.d.ts +1 -1
  712. package/dist/lexicons/com/atproto/server/updateEmail.defs.d.ts.map +1 -1
  713. package/dist/lexicons/com/atproto/server/updateEmail.defs.js +1 -1
  714. package/dist/lexicons/com/atproto/server/updateEmail.defs.js.map +1 -1
  715. package/dist/lexicons/com/atproto/sync/defs.defs.d.ts +1 -1
  716. package/dist/lexicons/com/atproto/sync/defs.defs.d.ts.map +1 -1
  717. package/dist/lexicons/com/atproto/sync/defs.defs.js +1 -1
  718. package/dist/lexicons/com/atproto/sync/defs.defs.js.map +1 -1
  719. package/dist/lexicons/com/atproto/sync/getBlob.defs.d.ts +1 -1
  720. package/dist/lexicons/com/atproto/sync/getBlob.defs.d.ts.map +1 -1
  721. package/dist/lexicons/com/atproto/sync/getBlob.defs.js +1 -1
  722. package/dist/lexicons/com/atproto/sync/getBlob.defs.js.map +1 -1
  723. package/dist/lexicons/com/atproto/sync/getBlocks.defs.d.ts +1 -1
  724. package/dist/lexicons/com/atproto/sync/getBlocks.defs.d.ts.map +1 -1
  725. package/dist/lexicons/com/atproto/sync/getBlocks.defs.js +1 -1
  726. package/dist/lexicons/com/atproto/sync/getBlocks.defs.js.map +1 -1
  727. package/dist/lexicons/com/atproto/sync/getCheckout.defs.d.ts +1 -1
  728. package/dist/lexicons/com/atproto/sync/getCheckout.defs.d.ts.map +1 -1
  729. package/dist/lexicons/com/atproto/sync/getCheckout.defs.js +1 -1
  730. package/dist/lexicons/com/atproto/sync/getCheckout.defs.js.map +1 -1
  731. package/dist/lexicons/com/atproto/sync/getHead.defs.d.ts +1 -1
  732. package/dist/lexicons/com/atproto/sync/getHead.defs.d.ts.map +1 -1
  733. package/dist/lexicons/com/atproto/sync/getHead.defs.js +1 -1
  734. package/dist/lexicons/com/atproto/sync/getHead.defs.js.map +1 -1
  735. package/dist/lexicons/com/atproto/sync/getHostStatus.defs.d.ts +1 -1
  736. package/dist/lexicons/com/atproto/sync/getHostStatus.defs.d.ts.map +1 -1
  737. package/dist/lexicons/com/atproto/sync/getHostStatus.defs.js +1 -1
  738. package/dist/lexicons/com/atproto/sync/getHostStatus.defs.js.map +1 -1
  739. package/dist/lexicons/com/atproto/sync/getLatestCommit.defs.d.ts +1 -1
  740. package/dist/lexicons/com/atproto/sync/getLatestCommit.defs.d.ts.map +1 -1
  741. package/dist/lexicons/com/atproto/sync/getLatestCommit.defs.js +1 -1
  742. package/dist/lexicons/com/atproto/sync/getLatestCommit.defs.js.map +1 -1
  743. package/dist/lexicons/com/atproto/sync/getRecord.defs.d.ts +1 -1
  744. package/dist/lexicons/com/atproto/sync/getRecord.defs.d.ts.map +1 -1
  745. package/dist/lexicons/com/atproto/sync/getRecord.defs.js +1 -1
  746. package/dist/lexicons/com/atproto/sync/getRecord.defs.js.map +1 -1
  747. package/dist/lexicons/com/atproto/sync/getRepo.defs.d.ts +1 -1
  748. package/dist/lexicons/com/atproto/sync/getRepo.defs.d.ts.map +1 -1
  749. package/dist/lexicons/com/atproto/sync/getRepo.defs.js +1 -1
  750. package/dist/lexicons/com/atproto/sync/getRepo.defs.js.map +1 -1
  751. package/dist/lexicons/com/atproto/sync/getRepoStatus.defs.d.ts +1 -1
  752. package/dist/lexicons/com/atproto/sync/getRepoStatus.defs.d.ts.map +1 -1
  753. package/dist/lexicons/com/atproto/sync/getRepoStatus.defs.js +1 -1
  754. package/dist/lexicons/com/atproto/sync/getRepoStatus.defs.js.map +1 -1
  755. package/dist/lexicons/com/atproto/sync/listBlobs.defs.d.ts +1 -1
  756. package/dist/lexicons/com/atproto/sync/listBlobs.defs.d.ts.map +1 -1
  757. package/dist/lexicons/com/atproto/sync/listBlobs.defs.js +1 -1
  758. package/dist/lexicons/com/atproto/sync/listBlobs.defs.js.map +1 -1
  759. package/dist/lexicons/com/atproto/sync/listHosts.defs.d.ts +1 -1
  760. package/dist/lexicons/com/atproto/sync/listHosts.defs.d.ts.map +1 -1
  761. package/dist/lexicons/com/atproto/sync/listHosts.defs.js +1 -1
  762. package/dist/lexicons/com/atproto/sync/listHosts.defs.js.map +1 -1
  763. package/dist/lexicons/com/atproto/sync/listRepos.defs.d.ts +1 -1
  764. package/dist/lexicons/com/atproto/sync/listRepos.defs.d.ts.map +1 -1
  765. package/dist/lexicons/com/atproto/sync/listRepos.defs.js +1 -1
  766. package/dist/lexicons/com/atproto/sync/listRepos.defs.js.map +1 -1
  767. package/dist/lexicons/com/atproto/sync/listReposByCollection.defs.d.ts +1 -1
  768. package/dist/lexicons/com/atproto/sync/listReposByCollection.defs.d.ts.map +1 -1
  769. package/dist/lexicons/com/atproto/sync/listReposByCollection.defs.js +1 -1
  770. package/dist/lexicons/com/atproto/sync/listReposByCollection.defs.js.map +1 -1
  771. package/dist/lexicons/com/atproto/sync/notifyOfUpdate.defs.d.ts +1 -1
  772. package/dist/lexicons/com/atproto/sync/notifyOfUpdate.defs.d.ts.map +1 -1
  773. package/dist/lexicons/com/atproto/sync/notifyOfUpdate.defs.js +1 -1
  774. package/dist/lexicons/com/atproto/sync/notifyOfUpdate.defs.js.map +1 -1
  775. package/dist/lexicons/com/atproto/sync/requestCrawl.defs.d.ts +1 -1
  776. package/dist/lexicons/com/atproto/sync/requestCrawl.defs.d.ts.map +1 -1
  777. package/dist/lexicons/com/atproto/sync/requestCrawl.defs.js +1 -1
  778. package/dist/lexicons/com/atproto/sync/requestCrawl.defs.js.map +1 -1
  779. package/dist/lexicons/com/atproto/sync/subscribeRepos.defs.d.ts +1 -1
  780. package/dist/lexicons/com/atproto/sync/subscribeRepos.defs.d.ts.map +1 -1
  781. package/dist/lexicons/com/atproto/sync/subscribeRepos.defs.js +1 -1
  782. package/dist/lexicons/com/atproto/sync/subscribeRepos.defs.js.map +1 -1
  783. package/dist/lexicons/com/atproto/temp/addReservedHandle.defs.d.ts +1 -1
  784. package/dist/lexicons/com/atproto/temp/addReservedHandle.defs.d.ts.map +1 -1
  785. package/dist/lexicons/com/atproto/temp/addReservedHandle.defs.js +1 -1
  786. package/dist/lexicons/com/atproto/temp/addReservedHandle.defs.js.map +1 -1
  787. package/dist/lexicons/com/atproto/temp/checkHandleAvailability.defs.d.ts +1 -1
  788. package/dist/lexicons/com/atproto/temp/checkHandleAvailability.defs.d.ts.map +1 -1
  789. package/dist/lexicons/com/atproto/temp/checkHandleAvailability.defs.js +1 -1
  790. package/dist/lexicons/com/atproto/temp/checkHandleAvailability.defs.js.map +1 -1
  791. package/dist/lexicons/com/atproto/temp/checkSignupQueue.defs.d.ts +1 -1
  792. package/dist/lexicons/com/atproto/temp/checkSignupQueue.defs.d.ts.map +1 -1
  793. package/dist/lexicons/com/atproto/temp/checkSignupQueue.defs.js +1 -1
  794. package/dist/lexicons/com/atproto/temp/checkSignupQueue.defs.js.map +1 -1
  795. package/dist/lexicons/com/atproto/temp/dereferenceScope.defs.d.ts +1 -1
  796. package/dist/lexicons/com/atproto/temp/dereferenceScope.defs.d.ts.map +1 -1
  797. package/dist/lexicons/com/atproto/temp/dereferenceScope.defs.js +1 -1
  798. package/dist/lexicons/com/atproto/temp/dereferenceScope.defs.js.map +1 -1
  799. package/dist/lexicons/com/atproto/temp/fetchLabels.defs.d.ts +1 -1
  800. package/dist/lexicons/com/atproto/temp/fetchLabels.defs.d.ts.map +1 -1
  801. package/dist/lexicons/com/atproto/temp/fetchLabels.defs.js +1 -1
  802. package/dist/lexicons/com/atproto/temp/fetchLabels.defs.js.map +1 -1
  803. package/dist/lexicons/com/atproto/temp/requestPhoneVerification.defs.d.ts +1 -1
  804. package/dist/lexicons/com/atproto/temp/requestPhoneVerification.defs.d.ts.map +1 -1
  805. package/dist/lexicons/com/atproto/temp/requestPhoneVerification.defs.js +1 -1
  806. package/dist/lexicons/com/atproto/temp/requestPhoneVerification.defs.js.map +1 -1
  807. package/dist/lexicons/com/atproto/temp/revokeAccountCredentials.defs.d.ts +1 -1
  808. package/dist/lexicons/com/atproto/temp/revokeAccountCredentials.defs.d.ts.map +1 -1
  809. package/dist/lexicons/com/atproto/temp/revokeAccountCredentials.defs.js +1 -1
  810. package/dist/lexicons/com/atproto/temp/revokeAccountCredentials.defs.js.map +1 -1
  811. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts +1 -1
  812. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts.map +1 -1
  813. package/dist/lexicons/com/germnetwork/declaration.defs.js +1 -1
  814. package/dist/lexicons/com/germnetwork/declaration.defs.js.map +1 -1
  815. package/dist/lexicons/place/stream/badge/defs.defs.d.ts +1 -1
  816. package/dist/lexicons/place/stream/badge/defs.defs.d.ts.map +1 -1
  817. package/dist/lexicons/place/stream/badge/defs.defs.js +1 -1
  818. package/dist/lexicons/place/stream/badge/defs.defs.js.map +1 -1
  819. package/dist/lexicons/place/stream/chat/defs.defs.d.ts +1 -1
  820. package/dist/lexicons/place/stream/chat/defs.defs.d.ts.map +1 -1
  821. package/dist/lexicons/place/stream/chat/defs.defs.js +1 -1
  822. package/dist/lexicons/place/stream/chat/defs.defs.js.map +1 -1
  823. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.d.ts +1 -1
  824. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.d.ts.map +1 -1
  825. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.js +1 -1
  826. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.js.map +1 -1
  827. package/dist/lexicons/place/stream/chat/profile.defs.d.ts +1 -1
  828. package/dist/lexicons/place/stream/chat/profile.defs.d.ts.map +1 -1
  829. package/dist/lexicons/place/stream/chat/profile.defs.js +1 -1
  830. package/dist/lexicons/place/stream/chat/profile.defs.js.map +1 -1
  831. package/dist/lexicons/place/stream/defs.defs.d.ts +1 -1
  832. package/dist/lexicons/place/stream/defs.defs.d.ts.map +1 -1
  833. package/dist/lexicons/place/stream/defs.defs.js +1 -1
  834. package/dist/lexicons/place/stream/defs.defs.js.map +1 -1
  835. package/dist/lexicons/place/stream/livestream.defs.d.ts +1 -1
  836. package/dist/lexicons/place/stream/livestream.defs.d.ts.map +1 -1
  837. package/dist/lexicons/place/stream/livestream.defs.js +1 -1
  838. package/dist/lexicons/place/stream/livestream.defs.js.map +1 -1
  839. package/dist/lexicons/site/standard/document.defs.d.ts +1 -1
  840. package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
  841. package/dist/lexicons/site/standard/document.defs.js +1 -1
  842. package/dist/lexicons/site/standard/document.defs.js.map +1 -1
  843. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts +1 -1
  844. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
  845. package/dist/lexicons/site/standard/graph/recommend.defs.js +1 -1
  846. package/dist/lexicons/site/standard/graph/recommend.defs.js.map +1 -1
  847. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts +1 -1
  848. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts.map +1 -1
  849. package/dist/lexicons/site/standard/graph/subscription.defs.js +1 -1
  850. package/dist/lexicons/site/standard/graph/subscription.defs.js.map +1 -1
  851. package/dist/lexicons/site/standard/publication.defs.d.ts +1 -1
  852. package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
  853. package/dist/lexicons/site/standard/publication.defs.js +1 -1
  854. package/dist/lexicons/site/standard/publication.defs.js.map +1 -1
  855. package/dist/lexicons/site/standard/theme/basic.defs.d.ts +1 -1
  856. package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
  857. package/dist/lexicons/site/standard/theme/basic.defs.js +1 -1
  858. package/dist/lexicons/site/standard/theme/basic.defs.js.map +1 -1
  859. package/dist/lexicons/site/standard/theme/color.defs.d.ts +1 -1
  860. package/dist/lexicons/site/standard/theme/color.defs.d.ts.map +1 -1
  861. package/dist/lexicons/site/standard/theme/color.defs.js +1 -1
  862. package/dist/lexicons/site/standard/theme/color.defs.js.map +1 -1
  863. package/dist/lexicons/social/grain/defs.defs.d.ts +1 -1
  864. package/dist/lexicons/social/grain/defs.defs.d.ts.map +1 -1
  865. package/dist/lexicons/social/grain/defs.defs.js +1 -1
  866. package/dist/lexicons/social/grain/defs.defs.js.map +1 -1
  867. package/dist/lexicons/social/grain/favorite.defs.d.ts +1 -1
  868. package/dist/lexicons/social/grain/favorite.defs.d.ts.map +1 -1
  869. package/dist/lexicons/social/grain/favorite.defs.js +1 -1
  870. package/dist/lexicons/social/grain/favorite.defs.js.map +1 -1
  871. package/dist/lexicons/social/grain/gallery/item.defs.d.ts +1 -1
  872. package/dist/lexicons/social/grain/gallery/item.defs.d.ts.map +1 -1
  873. package/dist/lexicons/social/grain/gallery/item.defs.js +1 -1
  874. package/dist/lexicons/social/grain/gallery/item.defs.js.map +1 -1
  875. package/dist/lexicons/social/grain/gallery.defs.d.ts +1 -1
  876. package/dist/lexicons/social/grain/gallery.defs.d.ts.map +1 -1
  877. package/dist/lexicons/social/grain/gallery.defs.js +1 -1
  878. package/dist/lexicons/social/grain/gallery.defs.js.map +1 -1
  879. package/dist/lexicons/social/grain/photo.defs.d.ts +1 -1
  880. package/dist/lexicons/social/grain/photo.defs.d.ts.map +1 -1
  881. package/dist/lexicons/social/grain/photo.defs.js +1 -1
  882. package/dist/lexicons/social/grain/photo.defs.js.map +1 -1
  883. package/dist/lexicons/tools/ozone/communication/createTemplate.defs.d.ts +1 -1
  884. package/dist/lexicons/tools/ozone/communication/createTemplate.defs.d.ts.map +1 -1
  885. package/dist/lexicons/tools/ozone/communication/createTemplate.defs.js +1 -1
  886. package/dist/lexicons/tools/ozone/communication/createTemplate.defs.js.map +1 -1
  887. package/dist/lexicons/tools/ozone/communication/defs.defs.d.ts +1 -1
  888. package/dist/lexicons/tools/ozone/communication/defs.defs.d.ts.map +1 -1
  889. package/dist/lexicons/tools/ozone/communication/defs.defs.js +1 -1
  890. package/dist/lexicons/tools/ozone/communication/defs.defs.js.map +1 -1
  891. package/dist/lexicons/tools/ozone/communication/deleteTemplate.defs.d.ts +1 -1
  892. package/dist/lexicons/tools/ozone/communication/deleteTemplate.defs.d.ts.map +1 -1
  893. package/dist/lexicons/tools/ozone/communication/deleteTemplate.defs.js +1 -1
  894. package/dist/lexicons/tools/ozone/communication/deleteTemplate.defs.js.map +1 -1
  895. package/dist/lexicons/tools/ozone/communication/listTemplates.defs.d.ts +1 -1
  896. package/dist/lexicons/tools/ozone/communication/listTemplates.defs.d.ts.map +1 -1
  897. package/dist/lexicons/tools/ozone/communication/listTemplates.defs.js +1 -1
  898. package/dist/lexicons/tools/ozone/communication/listTemplates.defs.js.map +1 -1
  899. package/dist/lexicons/tools/ozone/communication/updateTemplate.defs.d.ts +1 -1
  900. package/dist/lexicons/tools/ozone/communication/updateTemplate.defs.d.ts.map +1 -1
  901. package/dist/lexicons/tools/ozone/communication/updateTemplate.defs.js +1 -1
  902. package/dist/lexicons/tools/ozone/communication/updateTemplate.defs.js.map +1 -1
  903. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.d.ts +1 -1
  904. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.d.ts.map +1 -1
  905. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.js +1 -1
  906. package/dist/lexicons/tools/ozone/inbox/appealActionedSubject.defs.js.map +1 -1
  907. package/dist/lexicons/tools/ozone/inbox/defs.defs.d.ts +18 -1
  908. package/dist/lexicons/tools/ozone/inbox/defs.defs.d.ts.map +1 -1
  909. package/dist/lexicons/tools/ozone/inbox/defs.defs.js +5 -2
  910. package/dist/lexicons/tools/ozone/inbox/defs.defs.js.map +1 -1
  911. package/dist/lexicons/tools/ozone/moderation/cancelScheduledActions.defs.d.ts +1 -1
  912. package/dist/lexicons/tools/ozone/moderation/cancelScheduledActions.defs.d.ts.map +1 -1
  913. package/dist/lexicons/tools/ozone/moderation/cancelScheduledActions.defs.js +1 -1
  914. package/dist/lexicons/tools/ozone/moderation/cancelScheduledActions.defs.js.map +1 -1
  915. package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts +1 -1
  916. package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts.map +1 -1
  917. package/dist/lexicons/tools/ozone/moderation/defs.defs.js +1 -1
  918. package/dist/lexicons/tools/ozone/moderation/defs.defs.js.map +1 -1
  919. package/dist/lexicons/tools/ozone/moderation/emitEvent.defs.d.ts +5 -1
  920. package/dist/lexicons/tools/ozone/moderation/emitEvent.defs.d.ts.map +1 -1
  921. package/dist/lexicons/tools/ozone/moderation/emitEvent.defs.js +2 -2
  922. package/dist/lexicons/tools/ozone/moderation/emitEvent.defs.js.map +1 -1
  923. package/dist/lexicons/tools/ozone/moderation/getAccountTimeline.defs.d.ts +1 -1
  924. package/dist/lexicons/tools/ozone/moderation/getAccountTimeline.defs.d.ts.map +1 -1
  925. package/dist/lexicons/tools/ozone/moderation/getAccountTimeline.defs.js +1 -1
  926. package/dist/lexicons/tools/ozone/moderation/getAccountTimeline.defs.js.map +1 -1
  927. package/dist/lexicons/tools/ozone/moderation/getEvent.defs.d.ts +1 -1
  928. package/dist/lexicons/tools/ozone/moderation/getEvent.defs.d.ts.map +1 -1
  929. package/dist/lexicons/tools/ozone/moderation/getEvent.defs.js +1 -1
  930. package/dist/lexicons/tools/ozone/moderation/getEvent.defs.js.map +1 -1
  931. package/dist/lexicons/tools/ozone/moderation/getRecord.defs.d.ts +1 -1
  932. package/dist/lexicons/tools/ozone/moderation/getRecord.defs.d.ts.map +1 -1
  933. package/dist/lexicons/tools/ozone/moderation/getRecord.defs.js +1 -1
  934. package/dist/lexicons/tools/ozone/moderation/getRecord.defs.js.map +1 -1
  935. package/dist/lexicons/tools/ozone/moderation/getRepo.defs.d.ts +1 -1
  936. package/dist/lexicons/tools/ozone/moderation/getRepo.defs.d.ts.map +1 -1
  937. package/dist/lexicons/tools/ozone/moderation/getRepo.defs.js +1 -1
  938. package/dist/lexicons/tools/ozone/moderation/getRepo.defs.js.map +1 -1
  939. package/dist/lexicons/tools/ozone/moderation/listScheduledActions.defs.d.ts +1 -1
  940. package/dist/lexicons/tools/ozone/moderation/listScheduledActions.defs.d.ts.map +1 -1
  941. package/dist/lexicons/tools/ozone/moderation/listScheduledActions.defs.js +1 -1
  942. package/dist/lexicons/tools/ozone/moderation/listScheduledActions.defs.js.map +1 -1
  943. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.d.ts +1 -1
  944. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.d.ts.map +1 -1
  945. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.js +1 -1
  946. package/dist/lexicons/tools/ozone/moderation/queryEvents.defs.js.map +1 -1
  947. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts +1 -1
  948. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts.map +1 -1
  949. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.js +1 -1
  950. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.js.map +1 -1
  951. package/dist/lexicons/tools/ozone/moderation/scheduleAction.defs.d.ts +1 -1
  952. package/dist/lexicons/tools/ozone/moderation/scheduleAction.defs.d.ts.map +1 -1
  953. package/dist/lexicons/tools/ozone/moderation/scheduleAction.defs.js +1 -1
  954. package/dist/lexicons/tools/ozone/moderation/scheduleAction.defs.js.map +1 -1
  955. package/dist/lexicons/tools/ozone/moderation/searchRepos.defs.d.ts +1 -1
  956. package/dist/lexicons/tools/ozone/moderation/searchRepos.defs.d.ts.map +1 -1
  957. package/dist/lexicons/tools/ozone/moderation/searchRepos.defs.js +1 -1
  958. package/dist/lexicons/tools/ozone/moderation/searchRepos.defs.js.map +1 -1
  959. package/dist/lexicons/tools/ozone/safelink/addRule.defs.d.ts +1 -1
  960. package/dist/lexicons/tools/ozone/safelink/addRule.defs.d.ts.map +1 -1
  961. package/dist/lexicons/tools/ozone/safelink/addRule.defs.js +1 -1
  962. package/dist/lexicons/tools/ozone/safelink/addRule.defs.js.map +1 -1
  963. package/dist/lexicons/tools/ozone/safelink/defs.defs.d.ts +1 -1
  964. package/dist/lexicons/tools/ozone/safelink/defs.defs.d.ts.map +1 -1
  965. package/dist/lexicons/tools/ozone/safelink/defs.defs.js +1 -1
  966. package/dist/lexicons/tools/ozone/safelink/defs.defs.js.map +1 -1
  967. package/dist/lexicons/tools/ozone/safelink/queryEvents.defs.d.ts +1 -1
  968. package/dist/lexicons/tools/ozone/safelink/queryEvents.defs.d.ts.map +1 -1
  969. package/dist/lexicons/tools/ozone/safelink/queryEvents.defs.js +1 -1
  970. package/dist/lexicons/tools/ozone/safelink/queryEvents.defs.js.map +1 -1
  971. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.d.ts +1 -1
  972. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.d.ts.map +1 -1
  973. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.js +1 -1
  974. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.js.map +1 -1
  975. package/dist/lexicons/tools/ozone/safelink/removeRule.defs.d.ts +1 -1
  976. package/dist/lexicons/tools/ozone/safelink/removeRule.defs.d.ts.map +1 -1
  977. package/dist/lexicons/tools/ozone/safelink/removeRule.defs.js +1 -1
  978. package/dist/lexicons/tools/ozone/safelink/removeRule.defs.js.map +1 -1
  979. package/dist/lexicons/tools/ozone/safelink/syncSource.defs.d.ts +1 -1
  980. package/dist/lexicons/tools/ozone/safelink/syncSource.defs.d.ts.map +1 -1
  981. package/dist/lexicons/tools/ozone/safelink/syncSource.defs.js +1 -1
  982. package/dist/lexicons/tools/ozone/safelink/syncSource.defs.js.map +1 -1
  983. package/dist/lexicons/tools/ozone/safelink/updateRule.defs.d.ts +1 -1
  984. package/dist/lexicons/tools/ozone/safelink/updateRule.defs.d.ts.map +1 -1
  985. package/dist/lexicons/tools/ozone/safelink/updateRule.defs.js +1 -1
  986. package/dist/lexicons/tools/ozone/safelink/updateRule.defs.js.map +1 -1
  987. package/dist/lexicons/tools/ozone/team/addMember.defs.d.ts +1 -1
  988. package/dist/lexicons/tools/ozone/team/addMember.defs.d.ts.map +1 -1
  989. package/dist/lexicons/tools/ozone/team/addMember.defs.js +1 -1
  990. package/dist/lexicons/tools/ozone/team/addMember.defs.js.map +1 -1
  991. package/dist/lexicons/tools/ozone/team/defs.defs.d.ts +1 -1
  992. package/dist/lexicons/tools/ozone/team/defs.defs.d.ts.map +1 -1
  993. package/dist/lexicons/tools/ozone/team/defs.defs.js +1 -1
  994. package/dist/lexicons/tools/ozone/team/defs.defs.js.map +1 -1
  995. package/dist/lexicons/tools/ozone/team/deleteMember.defs.d.ts +1 -1
  996. package/dist/lexicons/tools/ozone/team/deleteMember.defs.d.ts.map +1 -1
  997. package/dist/lexicons/tools/ozone/team/deleteMember.defs.js +1 -1
  998. package/dist/lexicons/tools/ozone/team/deleteMember.defs.js.map +1 -1
  999. package/dist/lexicons/tools/ozone/team/listMembers.defs.d.ts +1 -1
  1000. package/dist/lexicons/tools/ozone/team/listMembers.defs.d.ts.map +1 -1
  1001. package/dist/lexicons/tools/ozone/team/listMembers.defs.js +1 -1
  1002. package/dist/lexicons/tools/ozone/team/listMembers.defs.js.map +1 -1
  1003. package/dist/lexicons/tools/ozone/team/updateMember.defs.d.ts +1 -1
  1004. package/dist/lexicons/tools/ozone/team/updateMember.defs.d.ts.map +1 -1
  1005. package/dist/lexicons/tools/ozone/team/updateMember.defs.js +1 -1
  1006. package/dist/lexicons/tools/ozone/team/updateMember.defs.js.map +1 -1
  1007. package/dist/lexicons/tools/ozone/verification/defs.defs.d.ts +1 -1
  1008. package/dist/lexicons/tools/ozone/verification/defs.defs.d.ts.map +1 -1
  1009. package/dist/lexicons/tools/ozone/verification/defs.defs.js +1 -1
  1010. package/dist/lexicons/tools/ozone/verification/defs.defs.js.map +1 -1
  1011. package/dist/lexicons/tools/ozone/verification/grantVerifications.defs.d.ts +1 -1
  1012. package/dist/lexicons/tools/ozone/verification/grantVerifications.defs.d.ts.map +1 -1
  1013. package/dist/lexicons/tools/ozone/verification/grantVerifications.defs.js +1 -1
  1014. package/dist/lexicons/tools/ozone/verification/grantVerifications.defs.js.map +1 -1
  1015. package/dist/lexicons/tools/ozone/verification/listVerifications.defs.d.ts +1 -1
  1016. package/dist/lexicons/tools/ozone/verification/listVerifications.defs.d.ts.map +1 -1
  1017. package/dist/lexicons/tools/ozone/verification/listVerifications.defs.js +1 -1
  1018. package/dist/lexicons/tools/ozone/verification/listVerifications.defs.js.map +1 -1
  1019. package/dist/lexicons/tools/ozone/verification/revokeVerifications.defs.d.ts +1 -1
  1020. package/dist/lexicons/tools/ozone/verification/revokeVerifications.defs.d.ts.map +1 -1
  1021. package/dist/lexicons/tools/ozone/verification/revokeVerifications.defs.js +1 -1
  1022. package/dist/lexicons/tools/ozone/verification/revokeVerifications.defs.js.map +1 -1
  1023. package/dist/logger.d.ts.map +1 -1
  1024. package/dist/logger.js +8 -1
  1025. package/dist/logger.js.map +1 -1
  1026. package/dist/mailer/templates/confirm-email.js.map +1 -1
  1027. package/dist/mailer/templates/delete-account.js.map +1 -1
  1028. package/dist/mailer/templates/plc-operation.js.map +1 -1
  1029. package/dist/mailer/templates/reset-password.js.map +1 -1
  1030. package/dist/mailer/templates/sign-in-auth-factor.js.map +1 -1
  1031. package/dist/mailer/templates/update-email.js.map +1 -1
  1032. package/dist/rate-limits.d.ts +2 -2
  1033. package/dist/rate-limits.d.ts.map +1 -1
  1034. package/dist/rate-limits.js +6 -6
  1035. package/dist/rate-limits.js.map +1 -1
  1036. package/dist/read-after-write/util.d.ts +2 -1
  1037. package/dist/read-after-write/util.d.ts.map +1 -1
  1038. package/dist/read-after-write/util.js +1 -1
  1039. package/dist/read-after-write/util.js.map +1 -1
  1040. package/dist/read-after-write/viewer.d.ts +5 -5
  1041. package/dist/read-after-write/viewer.d.ts.map +1 -1
  1042. package/dist/read-after-write/viewer.js +1 -1
  1043. package/dist/read-after-write/viewer.js.map +1 -1
  1044. package/dist/repo/prepare.d.ts.map +1 -1
  1045. package/dist/repo/prepare.js +1 -1
  1046. package/dist/repo/prepare.js.map +1 -1
  1047. package/dist/scripts/publish-identity.js +1 -1
  1048. package/dist/scripts/publish-identity.js.map +1 -1
  1049. package/dist/scripts/rebuild-repo.d.ts +1 -1
  1050. package/dist/scripts/rebuild-repo.d.ts.map +1 -1
  1051. package/dist/scripts/rebuild-repo.js +1 -1
  1052. package/dist/scripts/rebuild-repo.js.map +1 -1
  1053. package/dist/scripts/rotate-keys.js +1 -1
  1054. package/dist/scripts/rotate-keys.js.map +1 -1
  1055. package/dist/scripts/sequencer-recovery/recoverer.d.ts.map +1 -1
  1056. package/dist/scripts/sequencer-recovery/recoverer.js +1 -1
  1057. package/dist/scripts/sequencer-recovery/recoverer.js.map +1 -1
  1058. package/dist/sequencer/events.d.ts +17 -17
  1059. package/dist/sequencer/events.d.ts.map +1 -1
  1060. package/dist/sequencer/events.js +1 -1
  1061. package/dist/sequencer/events.js.map +1 -1
  1062. package/dist/util/ip.d.ts +8 -0
  1063. package/dist/util/ip.d.ts.map +1 -0
  1064. package/dist/util/ip.js +34 -0
  1065. package/dist/util/ip.js.map +1 -0
  1066. package/package.json +30 -28
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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","sourcesContent":["import { envBool, envInt, envList, envStr } from '@atproto/common'\n\nexport function readEnv() {\n return {\n // service\n port: envInt('PDS_PORT'),\n hostname: envStr('PDS_HOSTNAME'),\n serviceDid: envStr('PDS_SERVICE_DID'),\n serviceName: envStr('PDS_SERVICE_NAME'),\n version: envStr('PDS_VERSION'),\n homeUrl: envStr('PDS_HOME_URL'),\n logoUrl: envStr('PDS_LOGO_URL'),\n privacyPolicyUrl: envStr('PDS_PRIVACY_POLICY_URL'),\n supportUrl: envStr('PDS_SUPPORT_URL'),\n termsOfServiceUrl: envStr('PDS_TERMS_OF_SERVICE_URL'),\n contactEmailAddress: envStr('PDS_CONTACT_EMAIL_ADDRESS'),\n acceptingImports: envBool('PDS_ACCEPTING_REPO_IMPORTS'),\n maxImportSize: envInt('PDS_MAX_REPO_IMPORT_SIZE'),\n blobUploadLimit: envInt('PDS_BLOB_UPLOAD_LIMIT'),\n devMode: envBool('PDS_DEV_MODE'),\n\n // hCaptcha\n hcaptchaSiteKey: envStr('PDS_HCAPTCHA_SITE_KEY'),\n hcaptchaSecretKey: envStr('PDS_HCAPTCHA_SECRET_KEY'),\n hcaptchaTokenSalt: envStr('PDS_HCAPTCHA_TOKEN_SALT'),\n\n // OAuth\n trustedOAuthClients: envList('PDS_OAUTH_TRUSTED_CLIENTS'),\n\n // branding\n primaryColor: envStr('PDS_PRIMARY_COLOR'),\n errorColor: envStr('PDS_ERROR_COLOR'),\n warningColor: envStr('PDS_WARNING_COLOR'),\n infoColor: envStr('PDS_INFO_COLOR'),\n successColor: envStr('PDS_SUCCESS_COLOR'),\n\n backgroundLightUrl: envStr('PDS_BACKGROUND_LIGHT_URL'),\n backgroundDarkUrl: envStr('PDS_BACKGROUND_DARK_URL'),\n\n // database\n dataDirectory: envStr('PDS_DATA_DIRECTORY'),\n disableWalAutoCheckpoint: envBool('PDS_SQLITE_DISABLE_WAL_AUTO_CHECKPOINT'),\n accountDbLocation: envStr('PDS_ACCOUNT_DB_LOCATION'),\n sequencerDbLocation: envStr('PDS_SEQUENCER_DB_LOCATION'),\n didCacheDbLocation: envStr('PDS_DID_CACHE_DB_LOCATION'),\n\n // actor store\n actorStoreDirectory: envStr('PDS_ACTOR_STORE_DIRECTORY'),\n actorStoreCacheSize: envInt('PDS_ACTOR_STORE_CACHE_SIZE'),\n\n // blobstore: one required\n // s3\n blobstoreS3Bucket: envStr('PDS_BLOBSTORE_S3_BUCKET'),\n blobstoreS3Region: envStr('PDS_BLOBSTORE_S3_REGION'),\n blobstoreS3Endpoint: envStr('PDS_BLOBSTORE_S3_ENDPOINT'),\n blobstoreS3ForcePathStyle: envBool('PDS_BLOBSTORE_S3_FORCE_PATH_STYLE'),\n blobstoreS3AccessKeyId: envStr('PDS_BLOBSTORE_S3_ACCESS_KEY_ID'),\n blobstoreS3SecretAccessKey: envStr('PDS_BLOBSTORE_S3_SECRET_ACCESS_KEY'),\n blobstoreS3UploadTimeoutMs: envInt('PDS_BLOBSTORE_S3_UPLOAD_TIMEOUT_MS'),\n blobstoreS3RequestTimeoutMs: envInt('PDS_BLOBSTORE_S3_REQUEST_TIMEOUT_MS'),\n // disk\n blobstoreDiskLocation: envStr('PDS_BLOBSTORE_DISK_LOCATION'),\n blobstoreDiskTmpLocation: envStr('PDS_BLOBSTORE_DISK_TMP_LOCATION'),\n\n // identity\n didPlcUrl: envStr('PDS_DID_PLC_URL'),\n didCacheStaleTTL: envInt('PDS_DID_CACHE_STALE_TTL'),\n didCacheMaxTTL: envInt('PDS_DID_CACHE_MAX_TTL'),\n resolverTimeout: envInt('PDS_ID_RESOLVER_TIMEOUT'),\n recoveryDidKey: envStr('PDS_RECOVERY_DID_KEY'),\n serviceHandleDomains: envList('PDS_SERVICE_HANDLE_DOMAINS'), // public hostname by default\n handleBackupNameservers: envList('PDS_HANDLE_BACKUP_NAMESERVERS'),\n enableDidDocWithSession: envBool('PDS_ENABLE_DID_DOC_WITH_SESSION'),\n\n // entryway\n entrywayUrl: envStr('PDS_ENTRYWAY_URL'),\n entrywayDid: envStr('PDS_ENTRYWAY_DID'),\n entrywayJwtVerifyKeyK256PublicKeyHex: envStr(\n 'PDS_ENTRYWAY_JWT_VERIFY_KEY_K256_PUBLIC_KEY_HEX',\n ),\n entrywayPlcRotationKey: envStr('PDS_ENTRYWAY_PLC_ROTATION_KEY'),\n\n // invites\n inviteRequired: envBool('PDS_INVITE_REQUIRED'),\n inviteInterval: envInt('PDS_INVITE_INTERVAL'),\n inviteEpoch: envInt('PDS_INVITE_EPOCH'),\n\n // email\n emailSmtpUrl: envStr('PDS_EMAIL_SMTP_URL'),\n emailFromAddress: envStr('PDS_EMAIL_FROM_ADDRESS'),\n emailDisableConfirmationLink: envBool(\n 'PDS_EMAIL_DISABLE_CONFIRMATION_LINK',\n ),\n moderationEmailSmtpUrl: envStr('PDS_MODERATION_EMAIL_SMTP_URL'),\n moderationEmailAddress: envStr('PDS_MODERATION_EMAIL_ADDRESS'),\n\n // subscription\n maxSubscriptionBuffer: envInt('PDS_MAX_SUBSCRIPTION_BUFFER'),\n repoBackfillLimitMs: envInt('PDS_REPO_BACKFILL_LIMIT_MS'),\n\n // appview\n bskyAppViewUrl: envStr('PDS_BSKY_APP_VIEW_URL'),\n bskyAppViewDid: envStr('PDS_BSKY_APP_VIEW_DID'),\n bskyAppViewCdnUrlPattern: envStr('PDS_BSKY_APP_VIEW_CDN_URL_PATTERN'),\n\n // mod service\n modServiceUrl: envStr('PDS_MOD_SERVICE_URL'),\n modServiceDid: envStr('PDS_MOD_SERVICE_DID'),\n\n // report service\n reportServiceUrl: envStr('PDS_REPORT_SERVICE_URL'),\n reportServiceDid: envStr('PDS_REPORT_SERVICE_DID'),\n\n // rate limits\n rateLimitsEnabled: envBool('PDS_RATE_LIMITS_ENABLED'),\n rateLimitBypassKey: envStr('PDS_RATE_LIMIT_BYPASS_KEY'),\n rateLimitBypassIps: envList('PDS_RATE_LIMIT_BYPASS_IPS'),\n\n // redis\n redisScratchAddress: envStr('PDS_REDIS_SCRATCH_ADDRESS'),\n redisScratchPassword: envStr('PDS_REDIS_SCRATCH_PASSWORD'),\n\n // crawlers\n crawlers: envList('PDS_CRAWLERS'),\n\n // secrets\n dpopSecret: envStr('PDS_DPOP_SECRET'),\n jwtSecret: envStr('PDS_JWT_SECRET'),\n adminPassword: envStr('PDS_ADMIN_PASSWORD'),\n entrywayAdminToken: envStr('PDS_ENTRYWAY_ADMIN_TOKEN'),\n\n // kms\n plcRotationKeyKmsKeyId: envStr('PDS_PLC_ROTATION_KEY_KMS_KEY_ID'),\n // memory\n plcRotationKeyK256PrivateKeyHex: envStr(\n 'PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX',\n ),\n\n // user provided url http requests\n disableSsrfProtection: envBool('PDS_DISABLE_SSRF_PROTECTION'),\n\n // fetch\n fetchMaxResponseSize: envInt('PDS_FETCH_MAX_RESPONSE_SIZE'),\n\n // proxy\n proxyAllowHTTP2: envBool('PDS_PROXY_ALLOW_HTTP2'),\n proxyHeadersTimeout: envInt('PDS_PROXY_HEADERS_TIMEOUT'),\n proxyBodyTimeout: envInt('PDS_PROXY_BODY_TIMEOUT'),\n proxyMaxResponseSize: envInt('PDS_PROXY_MAX_RESPONSE_SIZE'),\n proxyMaxRetries: envInt('PDS_PROXY_MAX_RETRIES'),\n proxyPreferCompressed: envBool('PDS_PROXY_PREFER_COMPRESSED'),\n\n // lexicon resolution\n lexiconDidAuthority: envStr('PDS_LEXICON_AUTHORITY_DID'),\n }\n}\n\nexport type ServerEnvironment = Partial<ReturnType<typeof readEnv>>\n"]}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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","sourcesContent":["import { envBool, envInt, envList, envStr } from '@atproto/common'\n\nexport function readEnv() {\n return {\n // service\n port: envInt('PDS_PORT'),\n hostname: envStr('PDS_HOSTNAME'),\n serviceDid: envStr('PDS_SERVICE_DID'),\n serviceName: envStr('PDS_SERVICE_NAME'),\n version: envStr('PDS_VERSION'),\n homeUrl: envStr('PDS_HOME_URL'),\n logoUrl: envStr('PDS_LOGO_URL'),\n privacyPolicyUrl: envStr('PDS_PRIVACY_POLICY_URL'),\n supportUrl: envStr('PDS_SUPPORT_URL'),\n termsOfServiceUrl: envStr('PDS_TERMS_OF_SERVICE_URL'),\n contactEmailAddress: envStr('PDS_CONTACT_EMAIL_ADDRESS'),\n acceptingImports: envBool('PDS_ACCEPTING_REPO_IMPORTS'),\n maxImportSize: envInt('PDS_MAX_REPO_IMPORT_SIZE'),\n blobUploadLimit: envInt('PDS_BLOB_UPLOAD_LIMIT'),\n devMode: envBool('PDS_DEV_MODE'),\n\n // hCaptcha\n hcaptchaSiteKey: envStr('PDS_HCAPTCHA_SITE_KEY'),\n hcaptchaSecretKey: envStr('PDS_HCAPTCHA_SECRET_KEY'),\n hcaptchaTokenSalt: envStr('PDS_HCAPTCHA_TOKEN_SALT'),\n\n // OAuth\n trustedOAuthClients: envList('PDS_OAUTH_TRUSTED_CLIENTS'),\n\n // branding\n primaryColor: envStr('PDS_PRIMARY_COLOR'),\n errorColor: envStr('PDS_ERROR_COLOR'),\n warningColor: envStr('PDS_WARNING_COLOR'),\n infoColor: envStr('PDS_INFO_COLOR'),\n successColor: envStr('PDS_SUCCESS_COLOR'),\n\n backgroundLightUrl: envStr('PDS_BACKGROUND_LIGHT_URL'),\n backgroundDarkUrl: envStr('PDS_BACKGROUND_DARK_URL'),\n\n // database\n dataDirectory: envStr('PDS_DATA_DIRECTORY'),\n disableWalAutoCheckpoint: envBool('PDS_SQLITE_DISABLE_WAL_AUTO_CHECKPOINT'),\n accountDbLocation: envStr('PDS_ACCOUNT_DB_LOCATION'),\n sequencerDbLocation: envStr('PDS_SEQUENCER_DB_LOCATION'),\n didCacheDbLocation: envStr('PDS_DID_CACHE_DB_LOCATION'),\n\n // actor store\n actorStoreDirectory: envStr('PDS_ACTOR_STORE_DIRECTORY'),\n actorStoreCacheSize: envInt('PDS_ACTOR_STORE_CACHE_SIZE'),\n\n // blobstore: one required\n // s3\n blobstoreS3Bucket: envStr('PDS_BLOBSTORE_S3_BUCKET'),\n blobstoreS3Region: envStr('PDS_BLOBSTORE_S3_REGION'),\n blobstoreS3Endpoint: envStr('PDS_BLOBSTORE_S3_ENDPOINT'),\n blobstoreS3ForcePathStyle: envBool('PDS_BLOBSTORE_S3_FORCE_PATH_STYLE'),\n blobstoreS3AccessKeyId: envStr('PDS_BLOBSTORE_S3_ACCESS_KEY_ID'),\n blobstoreS3SecretAccessKey: envStr('PDS_BLOBSTORE_S3_SECRET_ACCESS_KEY'),\n blobstoreS3UploadTimeoutMs: envInt('PDS_BLOBSTORE_S3_UPLOAD_TIMEOUT_MS'),\n blobstoreS3RequestTimeoutMs: envInt('PDS_BLOBSTORE_S3_REQUEST_TIMEOUT_MS'),\n // disk\n blobstoreDiskLocation: envStr('PDS_BLOBSTORE_DISK_LOCATION'),\n blobstoreDiskTmpLocation: envStr('PDS_BLOBSTORE_DISK_TMP_LOCATION'),\n\n // identity\n didPlcUrl: envStr('PDS_DID_PLC_URL'),\n didCacheStaleTTL: envInt('PDS_DID_CACHE_STALE_TTL'),\n didCacheMaxTTL: envInt('PDS_DID_CACHE_MAX_TTL'),\n resolverTimeout: envInt('PDS_ID_RESOLVER_TIMEOUT'),\n recoveryDidKey: envStr('PDS_RECOVERY_DID_KEY'),\n serviceHandleDomains: envList('PDS_SERVICE_HANDLE_DOMAINS'), // public hostname by default\n handleBackupNameservers: envList('PDS_HANDLE_BACKUP_NAMESERVERS'),\n enableDidDocWithSession: envBool('PDS_ENABLE_DID_DOC_WITH_SESSION'),\n\n // entryway\n entrywayUrl: envStr('PDS_ENTRYWAY_URL'),\n entrywayApiUrl: envStr('PDS_ENTRYWAY_API_URL'),\n entrywayDid: envStr('PDS_ENTRYWAY_DID'),\n entrywayJwtVerifyKeyK256PublicKeyHex: envStr(\n 'PDS_ENTRYWAY_JWT_VERIFY_KEY_K256_PUBLIC_KEY_HEX',\n ),\n entrywayPlcRotationKey: envStr('PDS_ENTRYWAY_PLC_ROTATION_KEY'),\n entrywayRequireServiceAuth: envBool('PDS_ENTRYWAY_REQUIRE_SERVICE_AUTH'),\n\n // invites\n inviteRequired: envBool('PDS_INVITE_REQUIRED'),\n inviteInterval: envInt('PDS_INVITE_INTERVAL'),\n inviteEpoch: envInt('PDS_INVITE_EPOCH'),\n\n // email\n emailSmtpUrl: envStr('PDS_EMAIL_SMTP_URL'),\n emailFromAddress: envStr('PDS_EMAIL_FROM_ADDRESS'),\n emailDisableConfirmationLink: envBool(\n 'PDS_EMAIL_DISABLE_CONFIRMATION_LINK',\n ),\n moderationEmailSmtpUrl: envStr('PDS_MODERATION_EMAIL_SMTP_URL'),\n moderationEmailAddress: envStr('PDS_MODERATION_EMAIL_ADDRESS'),\n\n // subscription\n maxSubscriptionBuffer: envInt('PDS_MAX_SUBSCRIPTION_BUFFER'),\n repoBackfillLimitMs: envInt('PDS_REPO_BACKFILL_LIMIT_MS'),\n\n // appview\n bskyAppViewUrl: envStr('PDS_BSKY_APP_VIEW_URL'),\n bskyAppViewDid: envStr('PDS_BSKY_APP_VIEW_DID'),\n bskyAppViewCdnUrlPattern: envStr('PDS_BSKY_APP_VIEW_CDN_URL_PATTERN'),\n\n // mod service\n modServiceUrl: envStr('PDS_MOD_SERVICE_URL'),\n modServiceDid: envStr('PDS_MOD_SERVICE_DID'),\n\n // report service\n reportServiceUrl: envStr('PDS_REPORT_SERVICE_URL'),\n reportServiceDid: envStr('PDS_REPORT_SERVICE_DID'),\n\n // rate limits\n rateLimitsEnabled: envBool('PDS_RATE_LIMITS_ENABLED'),\n rateLimitBypassKey: envStr('PDS_RATE_LIMIT_BYPASS_KEY'),\n rateLimitBypassIps: envList('PDS_RATE_LIMIT_BYPASS_IPS'),\n\n // redis\n redisScratchAddress: envStr('PDS_REDIS_SCRATCH_ADDRESS'),\n redisScratchPassword: envStr('PDS_REDIS_SCRATCH_PASSWORD'),\n\n // crawlers\n crawlers: envList('PDS_CRAWLERS'),\n\n // secrets\n dpopSecret: envStr('PDS_DPOP_SECRET'),\n jwtSecret: envStr('PDS_JWT_SECRET'),\n adminPassword: envStr('PDS_ADMIN_PASSWORD'),\n entrywayAdminToken: envStr('PDS_ENTRYWAY_ADMIN_TOKEN'),\n\n // kms\n plcRotationKeyKmsKeyId: envStr('PDS_PLC_ROTATION_KEY_KMS_KEY_ID'),\n // memory\n plcRotationKeyK256PrivateKeyHex: envStr(\n 'PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX',\n ),\n\n // user provided url http requests\n disableSsrfProtection: envBool('PDS_DISABLE_SSRF_PROTECTION'),\n\n // fetch\n fetchMaxResponseSize: envInt('PDS_FETCH_MAX_RESPONSE_SIZE'),\n\n // proxy\n proxyAllowHTTP2: envBool('PDS_PROXY_ALLOW_HTTP2'),\n proxyHeadersTimeout: envInt('PDS_PROXY_HEADERS_TIMEOUT'),\n proxyBodyTimeout: envInt('PDS_PROXY_BODY_TIMEOUT'),\n proxyMaxResponseSize: envInt('PDS_PROXY_MAX_RESPONSE_SIZE'),\n proxyMaxRetries: envInt('PDS_PROXY_MAX_RETRIES'),\n proxyPreferCompressed: envBool('PDS_PROXY_PREFER_COMPRESSED'),\n\n // lexicon resolution\n lexiconDidAuthority: envStr('PDS_LEXICON_AUTHORITY_DID'),\n }\n}\n\nexport type ServerEnvironment = Partial<ReturnType<typeof readEnv>>\n"]}
package/dist/context.d.ts CHANGED
@@ -4,7 +4,7 @@ import type { Redis } from 'ioredis';
4
4
  import type * as undici from 'undici';
5
5
  import * as crypto from '@atproto/crypto';
6
6
  import { IdResolver } from '@atproto/identity';
7
- import { Client } from '@atproto/lex';
7
+ import { Client } from '@atproto/lex-client';
8
8
  import { OAuthProvider } from '@atproto/oauth-provider/provider';
9
9
  import type { BlobStoreCreator } from '@atproto/repo';
10
10
  import { type Fetch } from '@atproto-labs/fetch-node';
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/context.js CHANGED
@@ -5,7 +5,7 @@ import * as ui8 from 'uint8arrays';
5
5
  import { KmsKeypair, S3BlobStore } from '@atproto/aws';
6
6
  import * as crypto from '@atproto/crypto';
7
7
  import { IdResolver } from '@atproto/identity';
8
- import { Client } from '@atproto/lex';
8
+ import { Client } from '@atproto/lex-client';
9
9
  import { parseCid } from '@atproto/lex-data';
10
10
  import { AccessTokenMode, JoseKey, LexResolver, LexResolverError, OAuthProvider, } from '@atproto/oauth-provider/provider';
11
11
  import { OAuthVerifier } from '@atproto/oauth-provider/verifier';
@@ -144,7 +144,7 @@ export class AppContext {
144
144
  })
145
145
  : undefined;
146
146
  const entrywayClient = cfg.entryway
147
- ? new Client({ service: cfg.entryway.url }, {
147
+ ? new Client({ service: cfg.entryway.apiUrl }, {
148
148
  // Trust internal services to send us well-formed responses
149
149
  strictResponseProcessing: false,
150
150
  validateResponse: cfg.service.devMode,
@@ -152,7 +152,7 @@ export class AppContext {
152
152
  : undefined;
153
153
  const entrywayAdminClient = cfg.entryway && secrets.entrywayAdminToken
154
154
  ? new Client({
155
- service: cfg.entryway.url,
155
+ service: cfg.entryway.apiUrl,
156
156
  headers: {
157
157
  authorization: basicAuthHeader('admin', secrets.entrywayAdminToken),
158
158
  },
@@ -368,6 +368,12 @@ export class AppContext {
368
368
  entryway: cfg.entryway?.did,
369
369
  modService: cfg.modService?.did,
370
370
  },
371
+ entrywayServiceAuth: cfg.entryway
372
+ ? {
373
+ didKey: crypto.formatDidKey(crypto.SECP256K1_JWT_ALG, ui8.fromString(cfg.entryway.jwtPublicKeyHex, 'hex')),
374
+ required: cfg.entryway.requireServiceAuth,
375
+ }
376
+ : undefined,
371
377
  });
372
378
  return new AppContext({
373
379
  actorStore,
@@ -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 { 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 { BlobStoreCreator } 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: BlobStoreCreator\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: BlobStoreCreator\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: BlobStoreCreator =\n overrides?.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 allowHttp: cfg.service.devMode,\n plcDirectoryUrl: cfg.identity.plcUrl,\n fallbackNameservers: cfg.identity.handleBackupNameservers,\n handleCache: undefined, // Memory\n didCache: {\n // Map didCache to SimpleCache<Did, DidDocument>\n get: async (did) => {\n const res = await didCache.checkCache(did)\n // Expired entries are only ever refreshed by a resolution, so\n // report them as missing rather than serving them indefinitely.\n return res && !res.expired ? (res.doc as any) : undefined\n },\n set: async (did, doc) => {\n await didCache.cacheDid(did, doc as any)\n },\n del: async (did) => {\n await didCache.clearEntry(did)\n },\n },\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 // @TODO Implement this using an AsyncDisposableStack when it becomes\n // widely available.\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 try {\n await this.proxyAgent.destroy()\n } finally {\n await this.blobstore[Symbol.asyncDispose]()\n }\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-client'\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 { BlobStoreCreator } 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: BlobStoreCreator\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: BlobStoreCreator\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: BlobStoreCreator =\n overrides?.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.apiUrl },\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.apiUrl,\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 allowHttp: cfg.service.devMode,\n plcDirectoryUrl: cfg.identity.plcUrl,\n fallbackNameservers: cfg.identity.handleBackupNameservers,\n handleCache: undefined, // Memory\n didCache: {\n // Map didCache to SimpleCache<Did, DidDocument>\n get: async (did) => {\n const res = await didCache.checkCache(did)\n // Expired entries are only ever refreshed by a resolution, so\n // report them as missing rather than serving them indefinitely.\n return res && !res.expired ? (res.doc as any) : undefined\n },\n set: async (did, doc) => {\n await didCache.cacheDid(did, doc as any)\n },\n del: async (did) => {\n await didCache.clearEntry(did)\n },\n },\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 entrywayServiceAuth: cfg.entryway\n ? {\n didKey: crypto.formatDidKey(\n crypto.SECP256K1_JWT_ALG,\n ui8.fromString(cfg.entryway.jwtPublicKeyHex, 'hex'),\n ),\n required: cfg.entryway.requireServiceAuth,\n }\n : undefined,\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 // @TODO Implement this using an AsyncDisposableStack when it becomes\n // widely available.\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 try {\n await this.proxyAgent.destroy()\n } finally {\n await this.blobstore[Symbol.asyncDispose]()\n }\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/crawlers.js CHANGED
@@ -1,4 +1,4 @@
1
- import { xrpc } from '@atproto/lex';
1
+ import { xrpc } from '@atproto/lex-client';
2
2
  import { com } from './lexicons/index.js';
3
3
  import { crawlerLogger as log } from './logger.js';
4
4
  const NOTIFY_THRESHOLD = 20 * 60e3;
@@ -1 +1 @@
1
- {"version":3,"file":"crawlers.js","sourceRoot":"","sources":["../src/crawlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,MAAM,OAAO,QAAQ;IAGnB,YACmB,eAAgC,EAChC,QAAgB,EAChB,QAA0B;QAF1B,oBAAe,GAAf,eAAe,CAAiB;QAChC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAkB;QALrC,iBAAY,GAAG,CAAC,QAAQ,CAAA;IAM7B,CAAC;IAEJ,cAAc;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,gBAAgB,EAAE,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;YACvB,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,yEAAyE;YACzE,oEAAoE;YACpE,YAAY;QACd,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBAClC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;wBACjD,eAAe,EAAE,KAAK;wBACtB,gBAAgB,EAAE,KAAK;wBACvB,wBAAwB,EAAE,KAAK;wBAC/B,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;qBAClC,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,yBAAyB,CAAC,CAAA;gBACvD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF","sourcesContent":["import { xrpc } from '@atproto/lex'\nimport type { BackgroundQueue } from './background.js'\nimport { com } from './lexicons/index.js'\nimport { crawlerLogger as log } from './logger.js'\n\nconst NOTIFY_THRESHOLD = 20 * 60e3\n\nexport class Crawlers {\n private lastNotified = -Infinity\n\n constructor(\n private readonly backgroundQueue: BackgroundQueue,\n private readonly hostname: string,\n private readonly crawlers: Iterable<string>,\n ) {}\n\n notifyOfUpdate() {\n const now = Date.now()\n if (this.lastNotified < now - NOTIFY_THRESHOLD) {\n this.lastNotified = now\n this.requestCrawl()\n } else {\n // @TODO We should probably actually schedule (setTimeout) a crawl for\n // when the threshold is met, instead of just waiting for the next update\n // to trigger it. Not doing this now as it requires cleanup logic on\n // shutdown.\n }\n }\n\n private requestCrawl() {\n for (const crawler of this.crawlers) {\n this.backgroundQueue.add(async () => {\n try {\n await xrpc(crawler, com.atproto.sync.requestCrawl, {\n validateRequest: false,\n validateResponse: false,\n strictResponseProcessing: false,\n body: { hostname: this.hostname },\n })\n } catch (err) {\n log.warn({ err, crawler }, 'failed to request crawl')\n }\n })\n }\n }\n}\n"]}
1
+ {"version":3,"file":"crawlers.js","sourceRoot":"","sources":["../src/crawlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAElC,MAAM,OAAO,QAAQ;IAGnB,YACmB,eAAgC,EAChC,QAAgB,EAChB,QAA0B;QAF1B,oBAAe,GAAf,eAAe,CAAiB;QAChC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAkB;QALrC,iBAAY,GAAG,CAAC,QAAQ,CAAA;IAM7B,CAAC;IAEJ,cAAc;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,gBAAgB,EAAE,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;YACvB,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,yEAAyE;YACzE,oEAAoE;YACpE,YAAY;QACd,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBAClC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;wBACjD,eAAe,EAAE,KAAK;wBACtB,gBAAgB,EAAE,KAAK;wBACvB,wBAAwB,EAAE,KAAK;wBAC/B,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;qBAClC,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,yBAAyB,CAAC,CAAA;gBACvD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF","sourcesContent":["import { xrpc } from '@atproto/lex-client'\nimport type { BackgroundQueue } from './background.js'\nimport { com } from './lexicons/index.js'\nimport { crawlerLogger as log } from './logger.js'\n\nconst NOTIFY_THRESHOLD = 20 * 60e3\n\nexport class Crawlers {\n private lastNotified = -Infinity\n\n constructor(\n private readonly backgroundQueue: BackgroundQueue,\n private readonly hostname: string,\n private readonly crawlers: Iterable<string>,\n ) {}\n\n notifyOfUpdate() {\n const now = Date.now()\n if (this.lastNotified < now - NOTIFY_THRESHOLD) {\n this.lastNotified = now\n this.requestCrawl()\n } else {\n // @TODO We should probably actually schedule (setTimeout) a crawl for\n // when the threshold is met, instead of just waiting for the next update\n // to trigger it. Not doing this now as it requires cleanup logic on\n // shutdown.\n }\n }\n\n private requestCrawl() {\n for (const crawler of this.crawlers) {\n this.backgroundQueue.add(async () => {\n try {\n await xrpc(crawler, com.atproto.sync.requestCrawl, {\n validateRequest: false,\n validateResponse: false,\n strictResponseProcessing: false,\n body: { hostname: this.hostname },\n })\n } catch (err) {\n log.warn({ err, crawler }, 'failed to request crawl')\n }\n })\n }\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import type { KeyObject } from 'node:crypto';
2
+ import type express from 'express';
3
+ import type { HandlerContext } from '@atproto/xrpc-server';
4
+ export declare class EntrywayRelayTokenError extends Error {
5
+ readonly reason: string;
6
+ /**
7
+ * @param reason Why the token was refused, as a short code (such as jose's
8
+ * error code) so that logging it reveals nothing of the token or the client.
9
+ */
10
+ constructor(reason: string, options?: ErrorOptions);
11
+ }
12
+ /**
13
+ * Rate limit bypass for requests the entryway makes with its service JWT.
14
+ * Routes authenticate requests before applying rate limits, so this relies on
15
+ * the route having accepted the token rather than verifying it again.
16
+ */
17
+ export declare const entrywayRateLimitBypass: ({ auth }: HandlerContext) => boolean;
18
+ /**
19
+ * Attributes the user requests the entryway proxies to the users rather than
20
+ * to the entryway, by the relay token it signs. The rate limiters key on
21
+ * `req.ip`, and on methods the PDS proxies they run before anything
22
+ * authenticates the request, so the token is verified here, ahead of the XRPC
23
+ * router.
24
+ */
25
+ export declare function entrywayAttribution(relayTokenOpts: EntrywayRelayTokenOptions): express.RequestHandler;
26
+ type EntrywayRelayTokenOptions = {
27
+ entrywayDid: string;
28
+ pdsDid: string;
29
+ key: KeyObject;
30
+ };
31
+ /**
32
+ * Verifies the relay token that the entryway attaches to the user requests it
33
+ * proxies, and returns the client IP address it attests to, in canonical form.
34
+ *
35
+ * @throws {EntrywayRelayTokenError} if the token is not valid
36
+ */
37
+ export declare function verifyEntrywayRelayToken(token: string, opts: EntrywayRelayTokenOptions): Promise<string>;
38
+ export {};
39
+ //# sourceMappingURL=entryway-attribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entryway-attribution.d.ts","sourceRoot":"","sources":["../src/entryway-attribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAS1D,qBAAa,uBAAwB,SAAQ,KAAK;aAM9B,MAAM,EAAE,MAAM;IALhC;;;OAGG;IACH,YACkB,MAAM,EAAE,MAAM,EAC9B,OAAO,CAAC,EAAE,YAAY,EAGvB;CACF;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,aAAc,cAAc,KAAG,OAIlE,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,yBAAyB,GACxC,OAAO,CAAC,cAAc,CA2BxB;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,SAAS,CAAA;CACf,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
@@ -0,0 +1,101 @@
1
+ import * as jose from 'jose';
2
+ import { httpLogger } from './logger.js';
3
+ import { canonicalIp } from './util/ip.js';
4
+ const ENTRYWAY_RELAY_HEADER = 'x-entryway-relay';
5
+ const ENTRYWAY_RELAY_TOKEN_MAX_LIFETIME_SEC = 2 * 60;
6
+ const ENTRYWAY_RELAY_TOKEN_CLOCK_TOLERANCE_SEC = 30;
7
+ export class EntrywayRelayTokenError extends Error {
8
+ /**
9
+ * @param reason Why the token was refused, as a short code (such as jose's
10
+ * error code) so that logging it reveals nothing of the token or the client.
11
+ */
12
+ constructor(reason, options) {
13
+ super(`Invalid entryway relay token: ${reason}`, options);
14
+ this.reason = reason;
15
+ }
16
+ }
17
+ /**
18
+ * Rate limit bypass for requests the entryway makes with its service JWT.
19
+ * Routes authenticate requests before applying rate limits, so this relies on
20
+ * the route having accepted the token rather than verifying it again.
21
+ */
22
+ export const entrywayRateLimitBypass = ({ auth }) => {
23
+ if (!auth)
24
+ return false;
25
+ const credentials = auth.credentials;
26
+ return credentials?.type === 'entryway_service';
27
+ };
28
+ /**
29
+ * Attributes the user requests the entryway proxies to the users rather than
30
+ * to the entryway, by the relay token it signs. The rate limiters key on
31
+ * `req.ip`, and on methods the PDS proxies they run before anything
32
+ * authenticates the request, so the token is verified here, ahead of the XRPC
33
+ * router.
34
+ */
35
+ export function entrywayAttribution(relayTokenOpts) {
36
+ return async (req, res, next) => {
37
+ const relayToken = req.headers[ENTRYWAY_RELAY_HEADER];
38
+ if (typeof relayToken === 'string') {
39
+ try {
40
+ const clientIp = await verifyEntrywayRelayToken(relayToken, relayTokenOpts);
41
+ // Shadows express's "ip" getter so that everything reading req.ip
42
+ // (rate limit keys, x-forwarded-for to the entryway) sees the client.
43
+ Object.defineProperty(req, 'ip', {
44
+ value: clientIp,
45
+ configurable: true,
46
+ enumerable: true,
47
+ });
48
+ }
49
+ catch (err) {
50
+ // Never fatal: the request stays attributed to its actual source. Only
51
+ // the reason is logged, as the token itself carries the client's IP.
52
+ const reason = err instanceof EntrywayRelayTokenError ? err.reason : 'error';
53
+ httpLogger.debug({ reason }, 'ignoring invalid entryway relay token');
54
+ }
55
+ }
56
+ next();
57
+ };
58
+ }
59
+ /**
60
+ * Verifies the relay token that the entryway attaches to the user requests it
61
+ * proxies, and returns the client IP address it attests to, in canonical form.
62
+ *
63
+ * @throws {EntrywayRelayTokenError} if the token is not valid
64
+ */
65
+ export async function verifyEntrywayRelayToken(token, opts) {
66
+ return jose
67
+ .jwtVerify(token, opts.key, {
68
+ algorithms: ['ES256K'],
69
+ // Pinned so that access tokens ("at+jwt") are refused
70
+ typ: 'JWT',
71
+ issuer: opts.entrywayDid,
72
+ audience: opts.pdsDid,
73
+ requiredClaims: ['iat', 'exp', 'client_ip'],
74
+ // Also refuses an "iat" in the future
75
+ maxTokenAge: ENTRYWAY_RELAY_TOKEN_MAX_LIFETIME_SEC,
76
+ clockTolerance: ENTRYWAY_RELAY_TOKEN_CLOCK_TOLERANCE_SEC,
77
+ })
78
+ .then(checkEntrywayRelayClaims, (err) => {
79
+ const reason = err instanceof jose.errors.JOSEError ? err.code : 'error';
80
+ throw new EntrywayRelayTokenError(reason, { cause: err });
81
+ });
82
+ }
83
+ // Checks what jwtVerify() does not: "lxm" is refused so that a relay token and
84
+ // a service JWT can never stand in for each other, and "exp" may be at most 120
85
+ // seconds after "iat". Returns the attested client IP in canonical form.
86
+ function checkEntrywayRelayClaims({ payload }) {
87
+ const { iat, exp, lxm, client_ip: clientIp } = payload;
88
+ if (lxm !== undefined) {
89
+ throw new EntrywayRelayTokenError('has_lxm');
90
+ }
91
+ // jwtVerify() made "iat" and "exp" required numbers
92
+ if (exp - iat > ENTRYWAY_RELAY_TOKEN_MAX_LIFETIME_SEC) {
93
+ throw new EntrywayRelayTokenError('bad_lifetime');
94
+ }
95
+ const ip = typeof clientIp === 'string' ? canonicalIp(clientIp) : null;
96
+ if (!ip) {
97
+ throw new EntrywayRelayTokenError('bad_client_ip');
98
+ }
99
+ return ip;
100
+ }
101
+ //# sourceMappingURL=entryway-attribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entryway-attribution.js","sourceRoot":"","sources":["../src/entryway-attribution.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeyObject } from 'node:crypto'\nimport type express from 'express'\nimport * as jose from 'jose'\nimport type { HandlerContext } from '@atproto/xrpc-server'\nimport { httpLogger } from './logger.js'\nimport { canonicalIp } from './util/ip.js'\n\nconst ENTRYWAY_RELAY_HEADER = 'x-entryway-relay'\n\nconst ENTRYWAY_RELAY_TOKEN_MAX_LIFETIME_SEC = 2 * 60\nconst ENTRYWAY_RELAY_TOKEN_CLOCK_TOLERANCE_SEC = 30\n\nexport class EntrywayRelayTokenError extends Error {\n /**\n * @param reason Why the token was refused, as a short code (such as jose's\n * error code) so that logging it reveals nothing of the token or the client.\n */\n constructor(\n public readonly reason: string,\n options?: ErrorOptions,\n ) {\n super(`Invalid entryway relay token: ${reason}`, options)\n }\n}\n\n/**\n * Rate limit bypass for requests the entryway makes with its service JWT.\n * Routes authenticate requests before applying rate limits, so this relies on\n * the route having accepted the token rather than verifying it again.\n */\nexport const entrywayRateLimitBypass = ({ auth }: HandlerContext): boolean => {\n if (!auth) return false\n const credentials = auth.credentials as { type?: unknown }\n return credentials?.type === 'entryway_service'\n}\n\n/**\n * Attributes the user requests the entryway proxies to the users rather than\n * to the entryway, by the relay token it signs. The rate limiters key on\n * `req.ip`, and on methods the PDS proxies they run before anything\n * authenticates the request, so the token is verified here, ahead of the XRPC\n * router.\n */\nexport function entrywayAttribution(\n relayTokenOpts: EntrywayRelayTokenOptions,\n): express.RequestHandler {\n return async (req, res, next) => {\n const relayToken = req.headers[ENTRYWAY_RELAY_HEADER]\n if (typeof relayToken === 'string') {\n try {\n const clientIp = await verifyEntrywayRelayToken(\n relayToken,\n relayTokenOpts,\n )\n // Shadows express's \"ip\" getter so that everything reading req.ip\n // (rate limit keys, x-forwarded-for to the entryway) sees the client.\n Object.defineProperty(req, 'ip', {\n value: clientIp,\n configurable: true,\n enumerable: true,\n })\n } catch (err) {\n // Never fatal: the request stays attributed to its actual source. Only\n // the reason is logged, as the token itself carries the client's IP.\n const reason =\n err instanceof EntrywayRelayTokenError ? err.reason : 'error'\n httpLogger.debug({ reason }, 'ignoring invalid entryway relay token')\n }\n }\n\n next()\n }\n}\n\ntype EntrywayRelayTokenOptions = {\n entrywayDid: string\n pdsDid: string\n key: KeyObject\n}\n\n/**\n * Verifies the relay token that the entryway attaches to the user requests it\n * proxies, and returns the client IP address it attests to, in canonical form.\n *\n * @throws {EntrywayRelayTokenError} if the token is not valid\n */\nexport async function verifyEntrywayRelayToken(\n token: string,\n opts: EntrywayRelayTokenOptions,\n): Promise<string> {\n return jose\n .jwtVerify(token, opts.key, {\n algorithms: ['ES256K'],\n // Pinned so that access tokens (\"at+jwt\") are refused\n typ: 'JWT',\n issuer: opts.entrywayDid,\n audience: opts.pdsDid,\n requiredClaims: ['iat', 'exp', 'client_ip'],\n // Also refuses an \"iat\" in the future\n maxTokenAge: ENTRYWAY_RELAY_TOKEN_MAX_LIFETIME_SEC,\n clockTolerance: ENTRYWAY_RELAY_TOKEN_CLOCK_TOLERANCE_SEC,\n })\n .then(checkEntrywayRelayClaims, (err) => {\n const reason = err instanceof jose.errors.JOSEError ? err.code : 'error'\n throw new EntrywayRelayTokenError(reason, { cause: err })\n })\n}\n\n// Checks what jwtVerify() does not: \"lxm\" is refused so that a relay token and\n// a service JWT can never stand in for each other, and \"exp\" may be at most 120\n// seconds after \"iat\". Returns the attested client IP in canonical form.\nfunction checkEntrywayRelayClaims({ payload }: jose.JWTVerifyResult): string {\n const { iat, exp, lxm, client_ip: clientIp } = payload\n if (lxm !== undefined) {\n throw new EntrywayRelayTokenError('has_lxm')\n }\n // jwtVerify() made \"iat\" and \"exp\" required numbers\n if (exp! - iat! > ENTRYWAY_RELAY_TOKEN_MAX_LIFETIME_SEC) {\n throw new EntrywayRelayTokenError('bad_lifetime')\n }\n const ip = typeof clientIp === 'string' ? canonicalIp(clientIp) : null\n if (!ip) {\n throw new EntrywayRelayTokenError('bad_client_ip')\n }\n return ip\n}\n"]}
@@ -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,KAAK,SAAS,EACd,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACjE,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,CAClB,GAAG,GAAE,iBAA6B,EAClC,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,OAAO,CAAC,GAAG,CAAC,CAId;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
@@ -64,9 +64,11 @@ import { DAY, SECOND } from '@atproto/common';
64
64
  import { ResponseType, XRPCError, createServer, } from '@atproto/xrpc-server';
65
65
  import apiRoutes from './api/index.js';
66
66
  import * as authRoutes from './auth-routes.js';
67
+ import { createPublicKeyObject } from './auth-verifier.js';
67
68
  import * as basicRoutes from './basic-routes.js';
68
69
  import { envToCfg, envToSecrets, readEnv, } from './config/index.js';
69
70
  import { AppContext } from './context.js';
71
+ import { entrywayAttribution, entrywayRateLimitBypass, } from './entryway-attribution.js';
70
72
  import * as error from './error.js';
71
73
  import { loggerMiddleware, pdsLogger } from './logger.js';
72
74
  import { proxyHandler } from './pipethrough.js';
@@ -171,7 +173,7 @@ export class PDS {
171
173
  }
172
174
  return XRPCError.fromError(err);
173
175
  },
174
- rateLimits: buildRateLimitsConfig(rateLimits, ctx.redisScratch),
176
+ rateLimits: buildRateLimitsConfig(rateLimits, ctx.redisScratch, cfg.entryway ? entrywayRateLimitBypass : undefined),
175
177
  });
176
178
  apiRoutes(server, ctx);
177
179
  const app = express();
@@ -184,6 +186,13 @@ export class PDS {
184
186
  ...getTrustedIps(cfg),
185
187
  ]);
186
188
  app.use(loggerMiddleware);
189
+ if (cfg.entryway) {
190
+ app.use(entrywayAttribution({
191
+ entrywayDid: cfg.entryway.did,
192
+ pdsDid: cfg.service.did,
193
+ key: createPublicKeyObject(cfg.entryway.jwtPublicKeyHex),
194
+ }));
195
+ }
187
196
  app.use(compression());
188
197
  app.use(authRoutes.createRouter(ctx)); // Before CORS
189
198
  app.use(cors({ maxAge: DAY / SECOND }));