@atproto/bsky 0.0.241 → 0.0.243

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 (328) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/api/age-assurance/const.d.ts +1 -1
  3. package/dist/api/age-assurance/index.d.ts.map +1 -1
  4. package/dist/api/age-assurance/kws/age-verified.d.ts +13 -13
  5. package/dist/api/age-assurance/kws/age-verified.d.ts.map +1 -1
  6. package/dist/api/age-assurance/kws/external-payload.d.ts +4 -4
  7. package/dist/api/age-assurance/redirects/kws-age-verified.d.ts.map +1 -1
  8. package/dist/api/age-assurance/webhooks/kws-age-verified.d.ts.map +1 -1
  9. package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
  10. package/dist/api/app/bsky/actor/searchActors.js +7 -3
  11. package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
  12. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
  13. package/dist/api/app/bsky/actor/searchActorsTypeahead.js +7 -3
  14. package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  15. package/dist/api/app/bsky/bookmark/util.d.ts.map +1 -1
  16. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  17. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  18. package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
  19. package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
  20. package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
  21. package/dist/api/app/bsky/feed/searchPosts.js +8 -3
  22. package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
  23. package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
  24. package/dist/api/app/bsky/graph/searchStarterPacks.js +7 -3
  25. package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
  26. package/dist/api/app/bsky/notification/listNotifications.d.ts.map +1 -1
  27. package/dist/api/app/bsky/notification/util.d.ts.map +1 -1
  28. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
  29. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js +3 -2
  30. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
  31. package/dist/api/external.d.ts.map +1 -1
  32. package/dist/api/health.d.ts.map +1 -1
  33. package/dist/api/kws/api.d.ts.map +1 -1
  34. package/dist/api/kws/index.d.ts.map +1 -1
  35. package/dist/api/kws/types.d.ts +6 -6
  36. package/dist/api/kws/util.d.ts +1 -1
  37. package/dist/api/kws/util.d.ts.map +1 -1
  38. package/dist/api/kws/webhook.d.ts.map +1 -1
  39. package/dist/api/sitemap.d.ts.map +1 -1
  40. package/dist/api/util.d.ts +5 -0
  41. package/dist/api/util.d.ts.map +1 -1
  42. package/dist/api/util.js +11 -0
  43. package/dist/api/util.js.map +1 -1
  44. package/dist/api/well-known.d.ts.map +1 -1
  45. package/dist/auth-verifier.d.ts +2 -2
  46. package/dist/auth-verifier.d.ts.map +1 -1
  47. package/dist/bsync.d.ts.map +1 -1
  48. package/dist/cache/read-through.d.ts.map +1 -1
  49. package/dist/cache/read-through.js.map +1 -1
  50. package/dist/config.d.ts +6 -4
  51. package/dist/config.d.ts.map +1 -1
  52. package/dist/config.js +5 -0
  53. package/dist/config.js.map +1 -1
  54. package/dist/context.d.ts.map +1 -1
  55. package/dist/context.js.map +1 -1
  56. package/dist/courier.d.ts.map +1 -1
  57. package/dist/data-plane/bsync/index.d.ts.map +1 -1
  58. package/dist/data-plane/bsync/index.js.map +1 -1
  59. package/dist/data-plane/client/hosts.d.ts.map +1 -1
  60. package/dist/data-plane/client/index.d.ts.map +1 -1
  61. package/dist/data-plane/client/util.d.ts.map +1 -1
  62. package/dist/data-plane/server/background.d.ts.map +1 -1
  63. package/dist/data-plane/server/db/db.d.ts +4 -5
  64. package/dist/data-plane/server/db/db.d.ts.map +1 -1
  65. package/dist/data-plane/server/db/db.js +2 -1
  66. package/dist/data-plane/server/db/db.js.map +1 -1
  67. package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.d.ts.map +1 -1
  68. package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.js +2 -4
  69. package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.js.map +1 -1
  70. package/dist/data-plane/server/db/migrations/provider.d.ts +2 -1
  71. package/dist/data-plane/server/db/migrations/provider.d.ts.map +1 -1
  72. package/dist/data-plane/server/db/migrations/provider.js.map +1 -1
  73. package/dist/data-plane/server/db/pagination.d.ts +4 -3
  74. package/dist/data-plane/server/db/pagination.d.ts.map +1 -1
  75. package/dist/data-plane/server/db/pagination.js +8 -8
  76. package/dist/data-plane/server/db/pagination.js.map +1 -1
  77. package/dist/data-plane/server/db/util.d.ts +5 -5
  78. package/dist/data-plane/server/db/util.d.ts.map +1 -1
  79. package/dist/data-plane/server/db/util.js.map +1 -1
  80. package/dist/data-plane/server/index.d.ts.map +1 -1
  81. package/dist/data-plane/server/index.js.map +1 -1
  82. package/dist/data-plane/server/indexing/index.d.ts +78 -78
  83. package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
  84. package/dist/data-plane/server/indexing/index.js.map +1 -1
  85. package/dist/data-plane/server/indexing/plugins/block.d.ts +9 -4
  86. package/dist/data-plane/server/indexing/plugins/block.d.ts.map +1 -1
  87. package/dist/data-plane/server/indexing/plugins/chat-declaration.d.ts.map +1 -1
  88. package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts +13 -4
  89. package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts.map +1 -1
  90. package/dist/data-plane/server/indexing/plugins/follow.d.ts +9 -4
  91. package/dist/data-plane/server/indexing/plugins/follow.d.ts.map +1 -1
  92. package/dist/data-plane/server/indexing/plugins/germ-declaration.d.ts.map +1 -1
  93. package/dist/data-plane/server/indexing/plugins/labeler.d.ts +8 -4
  94. package/dist/data-plane/server/indexing/plugins/labeler.d.ts.map +1 -1
  95. package/dist/data-plane/server/indexing/plugins/like.d.ts +12 -4
  96. package/dist/data-plane/server/indexing/plugins/like.d.ts.map +1 -1
  97. package/dist/data-plane/server/indexing/plugins/list-block.d.ts +9 -4
  98. package/dist/data-plane/server/indexing/plugins/list-block.d.ts.map +1 -1
  99. package/dist/data-plane/server/indexing/plugins/list-item.d.ts +10 -4
  100. package/dist/data-plane/server/indexing/plugins/list-item.d.ts.map +1 -1
  101. package/dist/data-plane/server/indexing/plugins/list.d.ts +13 -4
  102. package/dist/data-plane/server/indexing/plugins/list.d.ts.map +1 -1
  103. package/dist/data-plane/server/indexing/plugins/notif-declaration.d.ts.map +1 -1
  104. package/dist/data-plane/server/indexing/plugins/post-gate.d.ts.map +1 -1
  105. package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
  106. package/dist/data-plane/server/indexing/plugins/post.js +4 -3
  107. package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
  108. package/dist/data-plane/server/indexing/plugins/profile.d.ts.map +1 -1
  109. package/dist/data-plane/server/indexing/plugins/repost.d.ts +12 -4
  110. package/dist/data-plane/server/indexing/plugins/repost.d.ts.map +1 -1
  111. package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts +9 -4
  112. package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts.map +1 -1
  113. package/dist/data-plane/server/indexing/plugins/status.d.ts.map +1 -1
  114. package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts.map +1 -1
  115. package/dist/data-plane/server/indexing/plugins/verification.d.ts +12 -4
  116. package/dist/data-plane/server/indexing/plugins/verification.d.ts.map +1 -1
  117. package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
  118. package/dist/data-plane/server/indexing/processor.js.map +1 -1
  119. package/dist/data-plane/server/routes/activity-subscription.d.ts.map +1 -1
  120. package/dist/data-plane/server/routes/blocks.d.ts.map +1 -1
  121. package/dist/data-plane/server/routes/blocks.js +22 -14
  122. package/dist/data-plane/server/routes/blocks.js.map +1 -1
  123. package/dist/data-plane/server/routes/bookmarks.d.ts.map +1 -1
  124. package/dist/data-plane/server/routes/drafts.d.ts.map +1 -1
  125. package/dist/data-plane/server/routes/feed-gens.d.ts.map +1 -1
  126. package/dist/data-plane/server/routes/feed-gens.js +2 -2
  127. package/dist/data-plane/server/routes/feed-gens.js.map +1 -1
  128. package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
  129. package/dist/data-plane/server/routes/feeds.js +18 -16
  130. package/dist/data-plane/server/routes/feeds.js.map +1 -1
  131. package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
  132. package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
  133. package/dist/data-plane/server/routes/index.d.ts.map +1 -1
  134. package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
  135. package/dist/data-plane/server/routes/labels.d.ts.map +1 -1
  136. package/dist/data-plane/server/routes/labels.js +1 -1
  137. package/dist/data-plane/server/routes/labels.js.map +1 -1
  138. package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
  139. package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
  140. package/dist/data-plane/server/routes/moderation.d.ts.map +1 -1
  141. package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
  142. package/dist/data-plane/server/routes/mutes.js +2 -2
  143. package/dist/data-plane/server/routes/mutes.js.map +1 -1
  144. package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
  145. package/dist/data-plane/server/routes/notifs.js +10 -9
  146. package/dist/data-plane/server/routes/notifs.js.map +1 -1
  147. package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
  148. package/dist/data-plane/server/routes/quotes.d.ts.map +1 -1
  149. package/dist/data-plane/server/routes/records.d.ts.map +1 -1
  150. package/dist/data-plane/server/routes/relationships.d.ts.map +1 -1
  151. package/dist/data-plane/server/routes/relationships.js.map +1 -1
  152. package/dist/data-plane/server/routes/reposts.d.ts.map +1 -1
  153. package/dist/data-plane/server/routes/search.d.ts.map +1 -1
  154. package/dist/data-plane/server/routes/site-standard.d.ts.map +1 -1
  155. package/dist/data-plane/server/routes/sitemap.d.ts.map +1 -1
  156. package/dist/data-plane/server/routes/starter-packs.d.ts.map +1 -1
  157. package/dist/data-plane/server/routes/suggestions.d.ts.map +1 -1
  158. package/dist/data-plane/server/routes/suggestions.js +2 -2
  159. package/dist/data-plane/server/routes/suggestions.js.map +1 -1
  160. package/dist/data-plane/server/routes/sync.d.ts.map +1 -1
  161. package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
  162. package/dist/data-plane/server/subscription.d.ts.map +1 -1
  163. package/dist/data-plane/server/subscription.js.map +1 -1
  164. package/dist/data-plane/server/util.d.ts +31 -23
  165. package/dist/data-plane/server/util.d.ts.map +1 -1
  166. package/dist/etcd.d.ts.map +1 -1
  167. package/dist/etcd.js.map +1 -1
  168. package/dist/feature-gates/index.d.ts.map +1 -1
  169. package/dist/feature-gates/metrics.d.ts.map +1 -1
  170. package/dist/feature-gates/metrics.js.map +1 -1
  171. package/dist/hydration/actor.d.ts.map +1 -1
  172. package/dist/hydration/actor.js.map +1 -1
  173. package/dist/hydration/external.d.ts.map +1 -1
  174. package/dist/hydration/external.js.map +1 -1
  175. package/dist/hydration/feed.d.ts.map +1 -1
  176. package/dist/hydration/feed.js.map +1 -1
  177. package/dist/hydration/graph.d.ts.map +1 -1
  178. package/dist/hydration/graph.js.map +1 -1
  179. package/dist/hydration/hydrator.d.ts +1 -1
  180. package/dist/hydration/hydrator.d.ts.map +1 -1
  181. package/dist/hydration/hydrator.js.map +1 -1
  182. package/dist/hydration/label.d.ts.map +1 -1
  183. package/dist/hydration/label.js.map +1 -1
  184. package/dist/hydration/util.d.ts.map +1 -1
  185. package/dist/image/invalidator.d.ts.map +1 -1
  186. package/dist/image/invalidator.js.map +1 -1
  187. package/dist/image/logger.d.ts.map +1 -1
  188. package/dist/image/server.d.ts.map +1 -1
  189. package/dist/image/server.js.map +1 -1
  190. package/dist/image/sharp.d.ts +1 -1
  191. package/dist/image/uri.d.ts.map +1 -1
  192. package/dist/image/uri.js.map +1 -1
  193. package/dist/index.d.ts.map +1 -1
  194. package/dist/kws.d.ts.map +1 -1
  195. package/dist/kws.js.map +1 -1
  196. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +75 -155
  197. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  198. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts +100 -300
  199. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
  200. package/dist/lexicons/app/bsky/actor/status.defs.d.ts +40 -40
  201. package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
  202. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts +4 -4
  203. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
  204. package/dist/lexicons/app/bsky/embed/external.defs.d.ts +10 -10
  205. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts +10 -42
  206. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts.map +1 -1
  207. package/dist/lexicons/app/bsky/embed/images.defs.d.ts +10 -10
  208. package/dist/lexicons/app/bsky/embed/record.defs.d.ts +10 -10
  209. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts +10 -10
  210. package/dist/lexicons/app/bsky/embed/video.defs.d.ts +50 -162
  211. package/dist/lexicons/app/bsky/embed/video.defs.d.ts.map +1 -1
  212. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts +80 -160
  213. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
  214. package/dist/lexicons/app/bsky/feed/like.defs.d.ts +30 -30
  215. package/dist/lexicons/app/bsky/feed/like.defs.d.ts.map +1 -1
  216. package/dist/lexicons/app/bsky/feed/post.defs.d.ts +80 -200
  217. package/dist/lexicons/app/bsky/feed/post.defs.d.ts.map +1 -1
  218. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts +40 -80
  219. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts.map +1 -1
  220. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts +30 -30
  221. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts.map +1 -1
  222. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts +30 -30
  223. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts.map +1 -1
  224. package/dist/lexicons/app/bsky/graph/block.defs.d.ts +20 -20
  225. package/dist/lexicons/app/bsky/graph/block.defs.d.ts.map +1 -1
  226. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts +30 -30
  227. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts.map +1 -1
  228. package/dist/lexicons/app/bsky/graph/list.defs.d.ts +70 -70
  229. package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
  230. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts +20 -20
  231. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts.map +1 -1
  232. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts +20 -20
  233. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts.map +1 -1
  234. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts +50 -90
  235. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts.map +1 -1
  236. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts +30 -30
  237. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts.map +1 -1
  238. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts +60 -140
  239. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts.map +1 -1
  240. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts +10 -10
  241. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts.map +1 -1
  242. package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts +10 -10
  243. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts +20 -20
  244. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts.map +1 -1
  245. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts +17 -0
  246. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  247. package/dist/lexicons/chat/bsky/convo/defs.defs.js +11 -0
  248. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  249. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts +7 -3
  250. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts.map +1 -1
  251. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js +5 -2
  252. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js.map +1 -1
  253. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts +1 -1
  254. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts.map +1 -1
  255. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js +1 -0
  256. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js.map +1 -1
  257. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts +1 -1
  258. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts.map +1 -1
  259. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js +1 -0
  260. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js.map +1 -1
  261. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts +10 -42
  262. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts.map +1 -1
  263. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts +10 -10
  264. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts.map +1 -1
  265. package/dist/lexicons/com/atproto/repo/strongRef.defs.d.ts +10 -10
  266. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts +40 -120
  267. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts.map +1 -1
  268. package/dist/lexicons/site/standard/document.defs.d.ts +140 -460
  269. package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
  270. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts +10 -10
  271. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
  272. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts +20 -60
  273. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts.map +1 -1
  274. package/dist/lexicons/site/standard/publication.defs.d.ts +60 -220
  275. package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
  276. package/dist/lexicons/site/standard/theme/basic.defs.d.ts +10 -10
  277. package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
  278. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts +2 -2
  279. package/dist/lexicons/tools/ozone/set/querySets.defs.d.ts +2 -2
  280. package/dist/pipeline.d.ts.map +1 -1
  281. package/dist/proto/bsky_connect.d.ts.map +1 -1
  282. package/dist/proto/bsky_pb.d.ts.map +1 -1
  283. package/dist/proto/bsky_pb.js.map +1 -1
  284. package/dist/proto/bsync_connect.d.ts.map +1 -1
  285. package/dist/proto/bsync_pb.d.ts.map +1 -1
  286. package/dist/proto/bsync_pb.js.map +1 -1
  287. package/dist/proto/courier_connect.d.ts.map +1 -1
  288. package/dist/proto/courier_pb.d.ts.map +1 -1
  289. package/dist/proto/courier_pb.js.map +1 -1
  290. package/dist/proto/rolodex_connect.d.ts.map +1 -1
  291. package/dist/proto/rolodex_pb.d.ts.map +1 -1
  292. package/dist/proto/rolodex_pb.js.map +1 -1
  293. package/dist/redis.d.ts.map +1 -1
  294. package/dist/rolodex.d.ts.map +1 -1
  295. package/dist/stash.d.ts.map +1 -1
  296. package/dist/stash.js.map +1 -1
  297. package/dist/util/debug.d.ts.map +1 -1
  298. package/dist/util/standard-site.d.ts.map +1 -1
  299. package/dist/util.d.ts.map +1 -1
  300. package/dist/views/index.d.ts.map +1 -1
  301. package/dist/views/types.d.ts +1 -1
  302. package/dist/views/types.d.ts.map +1 -1
  303. package/dist/views/util.d.ts.map +1 -1
  304. package/dist/views/util.js.map +1 -1
  305. package/package.json +17 -18
  306. package/src/api/app/bsky/actor/searchActors.ts +17 -6
  307. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +11 -5
  308. package/src/api/app/bsky/feed/searchPosts.ts +12 -5
  309. package/src/api/app/bsky/graph/searchStarterPacks.ts +14 -5
  310. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +9 -2
  311. package/src/api/util.ts +17 -0
  312. package/src/config.ts +9 -0
  313. package/src/data-plane/server/db/db.ts +1 -1
  314. package/src/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.ts +2 -4
  315. package/src/data-plane/server/db/migrations/provider.ts +2 -1
  316. package/src/data-plane/server/db/pagination.ts +15 -15
  317. package/src/data-plane/server/db/util.ts +8 -5
  318. package/src/data-plane/server/indexing/plugins/post.ts +5 -4
  319. package/src/data-plane/server/routes/blocks.ts +30 -24
  320. package/src/data-plane/server/routes/feed-gens.ts +2 -2
  321. package/src/data-plane/server/routes/feeds.ts +23 -19
  322. package/src/data-plane/server/routes/labels.ts +2 -2
  323. package/src/data-plane/server/routes/mutes.ts +8 -6
  324. package/src/data-plane/server/routes/notifs.ts +15 -12
  325. package/src/data-plane/server/routes/relationships.ts +4 -2
  326. package/src/data-plane/server/routes/suggestions.ts +2 -2
  327. package/tests/data-plane/subscription.test.ts +18 -16
  328. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/hydration/external.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUriString } from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { site } from '../lexicons/index.js'\nimport { hydrationLogger } from '../logger.js'\nimport {\n GetSiteStandardRecordsByRefResponse,\n GetSiteStandardRecordsByURIResponse,\n} from '../proto/bsky_pb.js'\nimport {\n parseSiteStandardRecordKey,\n siteStandardRecordKey,\n} from '../util/standard-site.js'\nimport {\n SiteStandardDocumentRecord,\n SiteStandardPublicationRecord,\n} from '../views/types.js'\nimport { HydrationMap, ItemRef, RecordInfo, parseRecord } from './util.js'\n\nexport type SiteStandardDocument = RecordInfo<SiteStandardDocumentRecord>\nexport type SiteStandardPublication = RecordInfo<SiteStandardPublicationRecord>\n\n/**\n * Keyed by `${uri}@${cid}` — see `siteStandardRecordKey`. A single hydration\n * batch can pull more than one version of the same URI (different posts\n * pinning different cids), so the composite key is needed for O(1)\n * version-exact lookups.\n */\nexport type SiteStandardDocuments = HydrationMap<string, SiteStandardDocument>\n/**\n * Keyed by `${uri}@${cid}`. See `SiteStandardDocuments` for the rationale.\n */\nexport type SiteStandardPublications = HydrationMap<\n string,\n SiteStandardPublication\n>\nexport type SiteStandardRecords = {\n documents: SiteStandardDocuments\n publications: SiteStandardPublications\n}\n\nexport type AssociatedSiteStandardRecord<T> = {\n ref: { uri: AtUriString; cid: string }\n info: T\n}\n\nexport class ExternalHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getSiteStandardRecordsByRef(\n refs: ItemRef[],\n includeTakedowns = false,\n ): Promise<SiteStandardRecords> {\n if (!refs.length) return emptySiteStandardRecords()\n\n const res = await this.dataplane.getSiteStandardRecordsByRef({\n refs: refs.map(({ uri, cid }) => ({ uri, cid: cid ?? '' })),\n })\n return buildSiteStandardRecordsHydrationMaps(res, includeTakedowns)\n }\n\n async getSiteStandardRecordsByURI(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<SiteStandardRecords> {\n if (!uris.length) return emptySiteStandardRecords()\n\n const res = await this.dataplane.getSiteStandardRecordsByURI({ uris })\n return buildSiteStandardRecordsHydrationMaps(res, includeTakedowns)\n }\n}\n\nconst emptySiteStandardRecords = (): SiteStandardRecords => ({\n documents: new HydrationMap(),\n publications: new HydrationMap(),\n})\n\nconst buildSiteStandardRecordsHydrationMaps = (\n res:\n | GetSiteStandardRecordsByURIResponse\n | GetSiteStandardRecordsByRefResponse,\n includeTakedowns: boolean,\n): SiteStandardRecords => {\n const documents: SiteStandardDocuments = new HydrationMap()\n for (const { ref, record } of res.documents) {\n if (!ref?.uri || !ref.cid || !record) continue\n documents.set(\n siteStandardRecordKey(ref.uri, ref.cid),\n parseRecord(site.standard.document.main, record, includeTakedowns) ??\n null,\n )\n }\n const publications: SiteStandardPublications = new HydrationMap()\n for (const { ref, record } of res.publications) {\n if (!ref?.uri || !ref.cid || !record) continue\n publications.set(\n siteStandardRecordKey(ref.uri, ref.cid),\n parseRecord(site.standard.publication.main, record, includeTakedowns) ??\n null,\n )\n }\n return { documents, publications }\n}\n\n/**\n * Read-path resolution: caller pinned a set of `(uri, cid)` strongRefs in\n * the post at write time, and we honor those exact versions. Any pair\n * that doesn't structurally agree is rejected, so downstream callers can\n * trust the returned shape.\n *\n * Same observable contract as\n * `getSiteStandardRecordsFromHydrationMapsByDocumentUri` (the compose-path\n * sister) — both functions guarantee that a returned `(doc, pub)` pair\n * has matching site/uri, and reject orphan docs that claim a\n * non-hydrated publication. They differ only in how upstream availability\n * is asserted: this one trusts caller-supplied refs; the sister derives\n * everything from the dataplane response.\n *\n * Pairing rules:\n * - Both slots referenced: `doc.site` must equal `publication.ref.uri`,\n * else both come back `undefined`.\n * - Doc with at-uri `site` referenced but no matching publication ref:\n * reject the whole pairing (doc claims a publication that should have\n * been pinned, but wasn't).\n * - Loose doc (web-URL `site`) referenced: publication stays `undefined`.\n * - Only a publication referenced: document stays `undefined`.\n *\n * Each returned slot carries the matching `ref` so callers can recover\n * the owner DID for blob-cdn URL building, etc.\n */\nexport const getSiteStandardRecordsFromHydrationMapsByRefs = (\n associatedRefs: readonly { uri: AtUriString; cid: string }[] | undefined,\n documents: SiteStandardDocuments | undefined,\n publications: SiteStandardPublications | undefined,\n): {\n document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n publication: AssociatedSiteStandardRecord<SiteStandardPublication> | undefined\n} => {\n if (!associatedRefs?.length) {\n return { document: undefined, publication: undefined }\n }\n\n // Resolve each ref against the hydration maps, taking the first hit on\n // each side.\n let document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n let publication:\n | AssociatedSiteStandardRecord<SiteStandardPublication>\n | undefined\n for (const ref of associatedRefs) {\n const key = siteStandardRecordKey(ref.uri, ref.cid)\n if (!document) {\n const hit = documents?.get(key)\n if (hit) document = { ref, info: hit }\n }\n if (!publication) {\n const hit = publications?.get(key)\n if (hit) publication = { ref, info: hit }\n }\n if (document && publication) break\n }\n\n // Both refs resolved: enforce that the doc's `site` actually points at\n // the supplied publication. Mismatch means the post was misconstructed\n // (or tampered with), so reject the whole pairing.\n if (document && publication) {\n if (document.info.record.site !== publication.ref.uri) {\n hydrationLogger.warn(\n {\n documentUri: document.ref.uri,\n documentSite: document.info.record.site,\n publicationUri: publication.ref.uri,\n },\n 'site.standard byRefs lookup failed: doc.site does not match hydrated publication.uri',\n )\n return { document: undefined, publication: undefined }\n }\n }\n\n // Doc with at-uri `site` but no publication: the post should have\n // pinned the publication too. Treat as misconstructed — same contract\n // as the compose-path lookup.\n if (document && !publication) {\n const site = document.info.record.site\n if (site && site.startsWith('at://')) {\n hydrationLogger.warn(\n { documentUri: document.ref.uri, documentSite: site },\n 'site.standard byRefs lookup failed: document.site is AT URI but no matching publication was hydrated',\n )\n return { document: undefined, publication: undefined }\n }\n }\n\n return { document, publication }\n}\n\n/**\n * Compose-path resolution: no caller-supplied refs — the dataplane\n * returned the latest version of each record (including any\n * publications it auto-resolved from a document's `site` field). Take\n * the first hydrated document and pair it with the publication its\n * `site` field points at.\n *\n * Same observable contract as\n * `getSiteStandardRecordsFromHydrationMapsByRefs` (the read-path\n * sister) — both functions guarantee that a returned `(doc, pub)` pair\n * has matching site/uri, and reject orphan docs that claim a\n * non-hydrated publication. They differ only in how upstream\n * availability is asserted: this one walks whatever was returned by the\n * dataplane; the sister checks against caller-supplied refs.\n *\n * Pairing rules:\n * - Doc with at-uri `site`: must find a hydrated publication at that\n * URI. If none was hydrated, the doc/publication chain is incomplete\n * and the function returns `undefined` for both slots; the doc alone\n * isn't useful without its source (can't verify the pub)\n * - Doc with web-URL `site` (loose): no publication.\n * - No doc hydrated: fall through to the first hydrated publication for\n * the publication-only resolution flow.\n */\nexport const getSiteStandardRecordsFromHydrationMapsByDocumentUri = (\n documents: SiteStandardDocuments | undefined,\n publications: SiteStandardPublications | undefined,\n): {\n document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n publication: AssociatedSiteStandardRecord<SiteStandardPublication> | undefined\n} => {\n // First hydrated doc.\n let document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n for (const [key, info] of documents ?? []) {\n if (!info) continue\n document = { ref: parseSiteStandardRecordKey(key), info }\n break\n }\n\n let publication:\n | AssociatedSiteStandardRecord<SiteStandardPublication>\n | undefined\n if (document) {\n const site = document.info.record.site\n if (site && site.startsWith('at://')) {\n // Doc declared an at-uri publication; we need it.\n for (const [key, info] of publications ?? []) {\n if (!info) continue\n const ref = parseSiteStandardRecordKey(key)\n if (ref.uri === site) {\n publication = { ref, info }\n break\n }\n }\n if (!publication) {\n hydrationLogger.warn(\n { documentUri: document.ref.uri, documentSite: site },\n 'site.standard byDocumentUri lookup failed: document.site is AT URI but no matching publication was hydrated',\n )\n return { document: undefined, publication: undefined }\n }\n }\n // else: loose doc (web-URL site), no publication needed.\n } else {\n // Publication-only flow: no doc, take the first hydrated publication.\n for (const [key, info] of publications ?? []) {\n if (!info) continue\n publication = { ref: parseSiteStandardRecordKey(key), info }\n break\n }\n }\n\n return { document, publication }\n}\n"]}
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/hydration/external.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUriString } from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { site } from '../lexicons/index.js'\nimport { hydrationLogger } from '../logger.js'\nimport {\n GetSiteStandardRecordsByRefResponse,\n GetSiteStandardRecordsByURIResponse,\n} from '../proto/bsky_pb.js'\nimport {\n parseSiteStandardRecordKey,\n siteStandardRecordKey,\n} from '../util/standard-site.js'\nimport {\n SiteStandardDocumentRecord,\n SiteStandardPublicationRecord,\n} from '../views/types.js'\nimport { HydrationMap, ItemRef, RecordInfo, parseRecord } from './util.js'\n\nexport type SiteStandardDocument = RecordInfo<SiteStandardDocumentRecord>\nexport type SiteStandardPublication = RecordInfo<SiteStandardPublicationRecord>\n\n/**\n * Keyed by `${uri}@${cid}` — see `siteStandardRecordKey`. A single hydration\n * batch can pull more than one version of the same URI (different posts\n * pinning different cids), so the composite key is needed for O(1)\n * version-exact lookups.\n */\nexport type SiteStandardDocuments = HydrationMap<string, SiteStandardDocument>\n/**\n * Keyed by `${uri}@${cid}`. See `SiteStandardDocuments` for the rationale.\n */\nexport type SiteStandardPublications = HydrationMap<\n string,\n SiteStandardPublication\n>\nexport type SiteStandardRecords = {\n documents: SiteStandardDocuments\n publications: SiteStandardPublications\n}\n\nexport type AssociatedSiteStandardRecord<T> = {\n ref: { uri: AtUriString; cid: string }\n info: T\n}\n\nexport class ExternalHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getSiteStandardRecordsByRef(\n refs: ItemRef[],\n includeTakedowns = false,\n ): Promise<SiteStandardRecords> {\n if (!refs.length) return emptySiteStandardRecords()\n\n const res = await this.dataplane.getSiteStandardRecordsByRef({\n refs: refs.map(({ uri, cid }) => ({ uri, cid: cid ?? '' })),\n })\n return buildSiteStandardRecordsHydrationMaps(res, includeTakedowns)\n }\n\n async getSiteStandardRecordsByURI(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<SiteStandardRecords> {\n if (!uris.length) return emptySiteStandardRecords()\n\n const res = await this.dataplane.getSiteStandardRecordsByURI({ uris })\n return buildSiteStandardRecordsHydrationMaps(res, includeTakedowns)\n }\n}\n\nconst emptySiteStandardRecords = (): SiteStandardRecords => ({\n documents: new HydrationMap(),\n publications: new HydrationMap(),\n})\n\nconst buildSiteStandardRecordsHydrationMaps = (\n res:\n | GetSiteStandardRecordsByURIResponse\n | GetSiteStandardRecordsByRefResponse,\n includeTakedowns: boolean,\n): SiteStandardRecords => {\n const documents: SiteStandardDocuments = new HydrationMap()\n for (const { ref, record } of res.documents) {\n if (!ref?.uri || !ref.cid || !record) continue\n documents.set(\n siteStandardRecordKey(ref.uri, ref.cid),\n parseRecord(site.standard.document.main, record, includeTakedowns) ??\n null,\n )\n }\n const publications: SiteStandardPublications = new HydrationMap()\n for (const { ref, record } of res.publications) {\n if (!ref?.uri || !ref.cid || !record) continue\n publications.set(\n siteStandardRecordKey(ref.uri, ref.cid),\n parseRecord(site.standard.publication.main, record, includeTakedowns) ??\n null,\n )\n }\n return { documents, publications }\n}\n\n/**\n * Read-path resolution: caller pinned a set of `(uri, cid)` strongRefs in\n * the post at write time, and we honor those exact versions. Any pair\n * that doesn't structurally agree is rejected, so downstream callers can\n * trust the returned shape.\n *\n * Same observable contract as\n * `getSiteStandardRecordsFromHydrationMapsByDocumentUri` (the compose-path\n * sister) — both functions guarantee that a returned `(doc, pub)` pair\n * has matching site/uri, and reject orphan docs that claim a\n * non-hydrated publication. They differ only in how upstream availability\n * is asserted: this one trusts caller-supplied refs; the sister derives\n * everything from the dataplane response.\n *\n * Pairing rules:\n * - Both slots referenced: `doc.site` must equal `publication.ref.uri`,\n * else both come back `undefined`.\n * - Doc with at-uri `site` referenced but no matching publication ref:\n * reject the whole pairing (doc claims a publication that should have\n * been pinned, but wasn't).\n * - Loose doc (web-URL `site`) referenced: publication stays `undefined`.\n * - Only a publication referenced: document stays `undefined`.\n *\n * Each returned slot carries the matching `ref` so callers can recover\n * the owner DID for blob-cdn URL building, etc.\n */\nexport const getSiteStandardRecordsFromHydrationMapsByRefs = (\n associatedRefs: readonly { uri: AtUriString; cid: string }[] | undefined,\n documents: SiteStandardDocuments | undefined,\n publications: SiteStandardPublications | undefined,\n): {\n document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n publication: AssociatedSiteStandardRecord<SiteStandardPublication> | undefined\n} => {\n if (!associatedRefs?.length) {\n return { document: undefined, publication: undefined }\n }\n\n // Resolve each ref against the hydration maps, taking the first hit on\n // each side.\n let document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n let publication:\n | AssociatedSiteStandardRecord<SiteStandardPublication>\n | undefined\n for (const ref of associatedRefs) {\n const key = siteStandardRecordKey(ref.uri, ref.cid)\n if (!document) {\n const hit = documents?.get(key)\n if (hit) document = { ref, info: hit }\n }\n if (!publication) {\n const hit = publications?.get(key)\n if (hit) publication = { ref, info: hit }\n }\n if (document && publication) break\n }\n\n // Both refs resolved: enforce that the doc's `site` actually points at\n // the supplied publication. Mismatch means the post was misconstructed\n // (or tampered with), so reject the whole pairing.\n if (document && publication) {\n if (document.info.record.site !== publication.ref.uri) {\n hydrationLogger.warn(\n {\n documentUri: document.ref.uri,\n documentSite: document.info.record.site,\n publicationUri: publication.ref.uri,\n },\n 'site.standard byRefs lookup failed: doc.site does not match hydrated publication.uri',\n )\n return { document: undefined, publication: undefined }\n }\n }\n\n // Doc with at-uri `site` but no publication: the post should have\n // pinned the publication too. Treat as misconstructed — same contract\n // as the compose-path lookup.\n if (document && !publication) {\n const site = document.info.record.site\n if (site && site.startsWith('at://')) {\n hydrationLogger.warn(\n { documentUri: document.ref.uri, documentSite: site },\n 'site.standard byRefs lookup failed: document.site is AT URI but no matching publication was hydrated',\n )\n return { document: undefined, publication: undefined }\n }\n }\n\n return { document, publication }\n}\n\n/**\n * Compose-path resolution: no caller-supplied refs — the dataplane\n * returned the latest version of each record (including any\n * publications it auto-resolved from a document's `site` field). Take\n * the first hydrated document and pair it with the publication its\n * `site` field points at.\n *\n * Same observable contract as\n * `getSiteStandardRecordsFromHydrationMapsByRefs` (the read-path\n * sister) — both functions guarantee that a returned `(doc, pub)` pair\n * has matching site/uri, and reject orphan docs that claim a\n * non-hydrated publication. They differ only in how upstream\n * availability is asserted: this one walks whatever was returned by the\n * dataplane; the sister checks against caller-supplied refs.\n *\n * Pairing rules:\n * - Doc with at-uri `site`: must find a hydrated publication at that\n * URI. If none was hydrated, the doc/publication chain is incomplete\n * and the function returns `undefined` for both slots; the doc alone\n * isn't useful without its source (can't verify the pub)\n * - Doc with web-URL `site` (loose): no publication.\n * - No doc hydrated: fall through to the first hydrated publication for\n * the publication-only resolution flow.\n */\nexport const getSiteStandardRecordsFromHydrationMapsByDocumentUri = (\n documents: SiteStandardDocuments | undefined,\n publications: SiteStandardPublications | undefined,\n): {\n document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n publication: AssociatedSiteStandardRecord<SiteStandardPublication> | undefined\n} => {\n // First hydrated doc.\n let document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined\n for (const [key, info] of documents ?? []) {\n if (!info) continue\n document = { ref: parseSiteStandardRecordKey(key), info }\n break\n }\n\n let publication:\n | AssociatedSiteStandardRecord<SiteStandardPublication>\n | undefined\n if (document) {\n const site = document.info.record.site\n if (site && site.startsWith('at://')) {\n // Doc declared an at-uri publication; we need it.\n for (const [key, info] of publications ?? []) {\n if (!info) continue\n const ref = parseSiteStandardRecordKey(key)\n if (ref.uri === site) {\n publication = { ref, info }\n break\n }\n }\n if (!publication) {\n hydrationLogger.warn(\n { documentUri: document.ref.uri, documentSite: site },\n 'site.standard byDocumentUri lookup failed: document.site is AT URI but no matching publication was hydrated',\n )\n return { document: undefined, publication: undefined }\n }\n }\n // else: loose doc (web-URL site), no publication needed.\n } else {\n // Publication-only flow: no doc, take the first hydrated publication.\n for (const [key, info] of publications ?? []) {\n if (!info) continue\n publication = { ref: parseSiteStandardRecordKey(key), info }\n break\n }\n }\n\n return { document, publication }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../src/hydration/feed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAO/D,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,OAAO,EACP,UAAU,EAIX,MAAM,WAAW,CAAA;AAElB,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG;IAC1C,kBAAkB,EAAE,OAAO,CAAA;IAC3B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAChB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAEzE,MAAM,MAAM,aAAa,GAAG;IAE1B,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;AAErE,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAEzD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;AACzC,MAAM,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AAEnD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;AAC7C,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAE/D,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAC/C,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;AAE/E,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;AAC/C,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAC/D,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;AACjD,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE3D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,CAAA;AAI7D,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,yBAAyB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAChD,CAAA;AAED,qBAAa,YAAY;IACJ,SAAS,EAAE,eAAe;gBAA1B,SAAS,EAAE,eAAe;IAEvC,QAAQ,CACZ,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,EACxB,KAAK,GAAE,KAA0B,EACjC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,KAAK,CAAC;IAsDX,mBAAmB,CACvB,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;YAsCd,cAAc;IAiBtB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IA4C7D,iBAAiB,CACrB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,SAAS,GAAG,IAAI,GACvB,OAAO,CAAC,QAAQ,CAAC;IAsBd,WAAW,CACf,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,QAAQ,CAAC;IAiBd,sBAAsB,CAC1B,IAAI,EAAE,WAAW,EAAE,EACnB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,mBAAmB,CAAC;IAiBzB,oBAAoB,CACxB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,SAAS,GAAG,IAAI,GACvB,OAAO,CAAC,WAAW,CAAC;IAejB,sBAAsB,CAC1B,QAAQ,EAAE,WAAW,EAAE,EACvB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,WAAW,CAAC;IAKjB,oBAAoB,CACxB,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,WAAW,CAAC;IAiBjB,oBAAoB,CACxB,QAAQ,EAAE,WAAW,EAAE,EACvB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,SAAS,CAAC;IAKf,kBAAkB,CACtB,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,SAAS,CAAC;IAiBf,QAAQ,CACZ,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,KAAK,CAAC;IAiBX,UAAU,CACd,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,OAAO,CAAC;CAgBpB"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../src/hydration/feed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"feed.js","sourceRoot":"","sources":["../../src/hydration/feed.ts"],"names":[],"mappings":"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","sourcesContent":["import { dedupeStrs } from '@atproto/common'\nimport { AtUriString, DidString } from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app } from '../lexicons/index.js'\nimport {\n postUriToPostgateUri,\n postUriToThreadgateUri,\n uriToDid as didFromUri,\n} from '../util/uris.js'\nimport {\n FeedGenRecord,\n GateRecord,\n LikeRecord,\n PostRecord,\n PostgateRecord,\n RepostRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n ItemRef,\n RecordInfo,\n parseRecord,\n parseString,\n split,\n} from './util.js'\n\nexport type Post = RecordInfo<PostRecord> & {\n violatesThreadGate: boolean\n violatesEmbeddingRules: boolean\n hasThreadGate: boolean\n hasPostGate: boolean\n tags: Set<string>\n /**\n * Debug information for internal development\n */\n debug?: {\n tags?: string[]\n }\n}\n\nexport type Posts = HydrationMap<AtUriString, Post>\n\nexport type PostViewerState = {\n like?: AtUriString\n repost?: AtUriString\n bookmarked?: boolean\n threadMuted?: boolean\n}\n\nexport type PostViewerStates = HydrationMap<AtUriString, PostViewerState>\n\nexport type ThreadContext = {\n // Whether the root author has liked the post.\n like?: AtUriString\n}\n\nexport type ThreadContexts = HydrationMap<AtUriString, ThreadContext>\n\nexport type PostAgg = {\n likes: number\n replies: number\n reposts: number\n quotes: number\n bookmarks: number\n}\n\nexport type PostAggs = HydrationMap<AtUriString, PostAgg>\n\nexport type Like = RecordInfo<LikeRecord>\nexport type Likes = HydrationMap<AtUriString, Like>\n\nexport type Repost = RecordInfo<RepostRecord>\nexport type Reposts = HydrationMap<AtUriString, Repost>\n\nexport type FeedGenAgg = {\n likes: number\n}\n\nexport type FeedGenAggs = HydrationMap<AtUriString, FeedGenAgg>\n\nexport type FeedGen = RecordInfo<FeedGenRecord>\nexport type FeedGens = HydrationMap<AtUriString, FeedGen>\n\nexport type FeedGenViewerState = {\n like?: AtUriString\n}\n\nexport type FeedGenViewerStates = HydrationMap<AtUriString, FeedGenViewerState>\n\nexport type Threadgate = RecordInfo<GateRecord>\nexport type Threadgates = HydrationMap<AtUriString, Threadgate>\nexport type Postgate = RecordInfo<PostgateRecord>\nexport type Postgates = HydrationMap<AtUriString, Postgate>\n\nexport type ThreadRef = ItemRef & { threadRoot: AtUriString }\n\n// @NOTE the feed item types in the protos for author feeds and timelines\n// technically have additional fields, not supported by the mock dataplane.\nexport type FeedItem = {\n post: ItemRef\n repost?: ItemRef\n /**\n * If true, overrides the `reason` with `app.bsky.feed.defs#reasonPin`. Used\n * only in author feeds.\n */\n authorPinned?: boolean\n}\n\nexport type GetPostsHydrationOptions = {\n processDynamicTagsForView?: 'thread' | 'search'\n}\n\nexport class FeedHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getPosts(\n uris: AtUriString[],\n includeTakedowns = false,\n given: Posts = new HydrationMap(),\n viewer?: string | null,\n options: GetPostsHydrationOptions = {},\n ): Promise<Posts> {\n const [have, need] = split(uris, (uri) => given.has(uri))\n const base: Posts = new HydrationMap()\n\n for (const uri of have) {\n base.set(uri, given.get(uri) ?? null)\n }\n\n if (need.length) {\n const res = await this.dataplane.getPostRecords(\n options.processDynamicTagsForView\n ? {\n uris: need,\n viewerDid: viewer ?? undefined,\n processDynamicTagsForView: options.processDynamicTagsForView,\n }\n : {\n uris: need,\n },\n )\n\n for (let i = 0; i < need.length; i++) {\n const record = parseRecord(\n app.bsky.feed.post.main,\n res.records[i],\n includeTakedowns,\n )\n const violatesThreadGate = res.meta[i].violatesThreadGate\n const violatesEmbeddingRules = res.meta[i].violatesEmbeddingRules\n const hasThreadGate = res.meta[i].hasThreadGate\n const hasPostGate = res.meta[i].hasPostGate\n const tags = new Set<string>(res.records[i].tags ?? [])\n const debug = { tags: Array.from(tags) }\n\n base.set(\n need[i],\n record\n ? {\n ...record,\n violatesThreadGate,\n violatesEmbeddingRules,\n hasThreadGate,\n hasPostGate,\n tags,\n debug,\n }\n : null,\n )\n }\n }\n\n return base\n }\n\n async getPostViewerStates(\n refs: ThreadRef[],\n viewer: string,\n ): Promise<PostViewerStates> {\n const map: PostViewerStates = new HydrationMap()\n if (!refs.length) return map\n\n const [likes, reposts, bookmarks, threadMutesMap] = await Promise.all([\n this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs,\n }),\n this.dataplane.getRepostsByActorAndSubjects({\n actorDid: viewer,\n refs,\n }),\n this.dataplane.getBookmarksByActorAndSubjects({\n actorDid: viewer,\n uris: refs.map((r) => r.uri),\n }),\n this.getThreadMutes(\n refs.map((r) => r.threadRoot),\n viewer,\n ),\n ])\n\n for (let i = 0; i < refs.length; i++) {\n const { uri, threadRoot } = refs[i]\n map.set(uri, {\n like: parseString(likes.uris[i]),\n repost: parseString(reposts.uris[i]),\n // @NOTE: The dataplane contract is that the array position will be present,\n // but the optional chaining is to ensure it works regardless of the dataplane being update to provide the data.\n bookmarked: !!bookmarks.bookmarks.at(i)?.ref?.key,\n threadMuted: threadMutesMap.get(threadRoot) ?? false,\n })\n }\n\n return map\n }\n\n private async getThreadMutes(\n threadRoots: AtUriString[],\n viewer: string,\n ): Promise<Map<string, boolean>> {\n const deduped = dedupeStrs(threadRoots)\n const threadMutes = await this.dataplane.getThreadMutesOnSubjects({\n actorDid: viewer,\n threadRoots: deduped,\n })\n const map: Map<AtUriString, boolean> = new Map()\n for (let i = 0; i < deduped.length; i++) {\n map.set(deduped[i], threadMutes.muted[i] ?? false)\n }\n\n return map\n }\n\n async getThreadContexts(refs: ThreadRef[]): Promise<ThreadContexts> {\n const map: ThreadContexts = new HydrationMap()\n if (!refs.length) return map\n\n const refsByRootAuthor = new Map<DidString, ThreadRef[]>()\n\n for (const ref of refs) {\n const { threadRoot } = ref\n const rootAuthor = didFromUri(threadRoot)\n const existingValue = refsByRootAuthor.get(rootAuthor) ?? []\n refsByRootAuthor.set(rootAuthor, [...existingValue, ref])\n }\n\n const refsByRootAuthorEntries = Array.from(refsByRootAuthor.entries())\n\n const rootAuthorsLikes = await Promise.all(\n refsByRootAuthorEntries.map(([rootAuthor, refsForAuthor]) =>\n this.dataplane.getLikesByActorAndSubjects({\n actorDid: rootAuthor,\n refs: refsForAuthor.map(({ uri, cid }) => ({ uri, cid })),\n }),\n ),\n )\n\n const likesByUri = new Map<AtUriString, AtUriString>()\n\n for (let i = 0; i < refsByRootAuthorEntries.length; i++) {\n const [_rootAuthor, refsForAuthor] = refsByRootAuthorEntries[i]\n const likesForRootAuthor = rootAuthorsLikes[i]\n for (let j = 0; j < refsForAuthor.length; j++) {\n const { uri } = refsForAuthor[j]\n likesByUri.set(uri, likesForRootAuthor.uris[j] as AtUriString)\n }\n }\n\n for (const { uri } of refs) {\n map.set(uri, {\n like: parseString(likesByUri.get(uri)),\n })\n }\n\n return map\n }\n\n async getPostAggregates(\n refs: ItemRef[],\n viewer: DidString | null,\n ): Promise<PostAggs> {\n const map: PostAggs = new HydrationMap()\n if (!refs.length) return map\n\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, {\n likes: counts.likes[i] ?? 0,\n replies: counts.replies[i] ?? 0,\n reposts: counts.reposts[i] ?? 0,\n quotes: counts.quotes[i] ?? 0,\n bookmarks: counts.bookmarks[i] ?? 0,\n })\n }\n\n return map\n }\n\n async getFeedGens(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<FeedGens> {\n const map: FeedGens = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getFeedGeneratorRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.generator.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getFeedGenViewerStates(\n uris: AtUriString[],\n viewer: DidString,\n ): Promise<FeedGenViewerStates> {\n const map: FeedGenViewerStates = new HydrationMap()\n if (!uris.length) return map\n\n const likes = await this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs: uris.map((uri) => ({ uri })),\n })\n for (let i = 0; i < uris.length; i++) {\n map.set(uris[i], {\n like: parseString(likes.uris[i]),\n })\n }\n\n return map\n }\n\n async getFeedGenAggregates(\n refs: ItemRef[],\n viewer: DidString | null,\n ): Promise<FeedGenAggs> {\n const map: FeedGenAggs = new HydrationMap()\n if (!refs.length) return map\n\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, { likes: counts.likes[i] ?? 0 })\n }\n\n return map\n }\n\n async getThreadgatesForPosts(\n postUris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Threadgates> {\n const uris = postUris.map(postUriToThreadgateUri)\n return this.getThreadgateRecords(uris, includeTakedowns)\n }\n\n async getThreadgateRecords(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Threadgates> {\n const map: Threadgates = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getThreadGateRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.threadgate.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getPostgatesForPosts(\n postUris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Postgates> {\n const uris = postUris.map(postUriToPostgateUri)\n return this.getPostgateRecords(uris, includeTakedowns)\n }\n\n async getPostgateRecords(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Postgates> {\n const map: Postgates = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getPostgateRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.postgate.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getLikes(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Likes> {\n const map: Likes = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getLikeRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.like.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getReposts(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Reposts> {\n const map: Reposts = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getRepostRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.repost.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n}\n"]}
1
+ {"version":3,"file":"feed.js","sourceRoot":"","sources":["../../src/hydration/feed.ts"],"names":[],"mappings":"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","sourcesContent":["import { dedupeStrs } from '@atproto/common'\nimport { AtUriString, DidString } from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app } from '../lexicons/index.js'\nimport {\n postUriToPostgateUri,\n postUriToThreadgateUri,\n uriToDid as didFromUri,\n} from '../util/uris.js'\nimport {\n FeedGenRecord,\n GateRecord,\n LikeRecord,\n PostRecord,\n PostgateRecord,\n RepostRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n ItemRef,\n RecordInfo,\n parseRecord,\n parseString,\n split,\n} from './util.js'\n\nexport type Post = RecordInfo<PostRecord> & {\n violatesThreadGate: boolean\n violatesEmbeddingRules: boolean\n hasThreadGate: boolean\n hasPostGate: boolean\n tags: Set<string>\n /**\n * Debug information for internal development\n */\n debug?: {\n tags?: string[]\n }\n}\n\nexport type Posts = HydrationMap<AtUriString, Post>\n\nexport type PostViewerState = {\n like?: AtUriString\n repost?: AtUriString\n bookmarked?: boolean\n threadMuted?: boolean\n}\n\nexport type PostViewerStates = HydrationMap<AtUriString, PostViewerState>\n\nexport type ThreadContext = {\n // Whether the root author has liked the post.\n like?: AtUriString\n}\n\nexport type ThreadContexts = HydrationMap<AtUriString, ThreadContext>\n\nexport type PostAgg = {\n likes: number\n replies: number\n reposts: number\n quotes: number\n bookmarks: number\n}\n\nexport type PostAggs = HydrationMap<AtUriString, PostAgg>\n\nexport type Like = RecordInfo<LikeRecord>\nexport type Likes = HydrationMap<AtUriString, Like>\n\nexport type Repost = RecordInfo<RepostRecord>\nexport type Reposts = HydrationMap<AtUriString, Repost>\n\nexport type FeedGenAgg = {\n likes: number\n}\n\nexport type FeedGenAggs = HydrationMap<AtUriString, FeedGenAgg>\n\nexport type FeedGen = RecordInfo<FeedGenRecord>\nexport type FeedGens = HydrationMap<AtUriString, FeedGen>\n\nexport type FeedGenViewerState = {\n like?: AtUriString\n}\n\nexport type FeedGenViewerStates = HydrationMap<AtUriString, FeedGenViewerState>\n\nexport type Threadgate = RecordInfo<GateRecord>\nexport type Threadgates = HydrationMap<AtUriString, Threadgate>\nexport type Postgate = RecordInfo<PostgateRecord>\nexport type Postgates = HydrationMap<AtUriString, Postgate>\n\nexport type ThreadRef = ItemRef & { threadRoot: AtUriString }\n\n// @NOTE the feed item types in the protos for author feeds and timelines\n// technically have additional fields, not supported by the mock dataplane.\nexport type FeedItem = {\n post: ItemRef\n repost?: ItemRef\n /**\n * If true, overrides the `reason` with `app.bsky.feed.defs#reasonPin`. Used\n * only in author feeds.\n */\n authorPinned?: boolean\n}\n\nexport type GetPostsHydrationOptions = {\n processDynamicTagsForView?: 'thread' | 'search'\n}\n\nexport class FeedHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getPosts(\n uris: AtUriString[],\n includeTakedowns = false,\n given: Posts = new HydrationMap(),\n viewer?: string | null,\n options: GetPostsHydrationOptions = {},\n ): Promise<Posts> {\n const [have, need] = split(uris, (uri) => given.has(uri))\n const base: Posts = new HydrationMap()\n\n for (const uri of have) {\n base.set(uri, given.get(uri) ?? null)\n }\n\n if (need.length) {\n const res = await this.dataplane.getPostRecords(\n options.processDynamicTagsForView\n ? {\n uris: need,\n viewerDid: viewer ?? undefined,\n processDynamicTagsForView: options.processDynamicTagsForView,\n }\n : {\n uris: need,\n },\n )\n\n for (let i = 0; i < need.length; i++) {\n const record = parseRecord(\n app.bsky.feed.post.main,\n res.records[i],\n includeTakedowns,\n )\n const violatesThreadGate = res.meta[i].violatesThreadGate\n const violatesEmbeddingRules = res.meta[i].violatesEmbeddingRules\n const hasThreadGate = res.meta[i].hasThreadGate\n const hasPostGate = res.meta[i].hasPostGate\n const tags = new Set<string>(res.records[i].tags ?? [])\n const debug = { tags: Array.from(tags) }\n\n base.set(\n need[i],\n record\n ? {\n ...record,\n violatesThreadGate,\n violatesEmbeddingRules,\n hasThreadGate,\n hasPostGate,\n tags,\n debug,\n }\n : null,\n )\n }\n }\n\n return base\n }\n\n async getPostViewerStates(\n refs: ThreadRef[],\n viewer: string,\n ): Promise<PostViewerStates> {\n const map: PostViewerStates = new HydrationMap()\n if (!refs.length) return map\n\n const [likes, reposts, bookmarks, threadMutesMap] = await Promise.all([\n this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs,\n }),\n this.dataplane.getRepostsByActorAndSubjects({\n actorDid: viewer,\n refs,\n }),\n this.dataplane.getBookmarksByActorAndSubjects({\n actorDid: viewer,\n uris: refs.map((r) => r.uri),\n }),\n this.getThreadMutes(\n refs.map((r) => r.threadRoot),\n viewer,\n ),\n ])\n\n for (let i = 0; i < refs.length; i++) {\n const { uri, threadRoot } = refs[i]\n map.set(uri, {\n like: parseString(likes.uris[i]),\n repost: parseString(reposts.uris[i]),\n // @NOTE: The dataplane contract is that the array position will be present,\n // but the optional chaining is to ensure it works regardless of the dataplane being update to provide the data.\n bookmarked: !!bookmarks.bookmarks.at(i)?.ref?.key,\n threadMuted: threadMutesMap.get(threadRoot) ?? false,\n })\n }\n\n return map\n }\n\n private async getThreadMutes(\n threadRoots: AtUriString[],\n viewer: string,\n ): Promise<Map<string, boolean>> {\n const deduped = dedupeStrs(threadRoots)\n const threadMutes = await this.dataplane.getThreadMutesOnSubjects({\n actorDid: viewer,\n threadRoots: deduped,\n })\n const map: Map<AtUriString, boolean> = new Map()\n for (let i = 0; i < deduped.length; i++) {\n map.set(deduped[i], threadMutes.muted[i] ?? false)\n }\n\n return map\n }\n\n async getThreadContexts(refs: ThreadRef[]): Promise<ThreadContexts> {\n const map: ThreadContexts = new HydrationMap()\n if (!refs.length) return map\n\n const refsByRootAuthor = new Map<DidString, ThreadRef[]>()\n\n for (const ref of refs) {\n const { threadRoot } = ref\n const rootAuthor = didFromUri(threadRoot)\n const existingValue = refsByRootAuthor.get(rootAuthor) ?? []\n refsByRootAuthor.set(rootAuthor, [...existingValue, ref])\n }\n\n const refsByRootAuthorEntries = Array.from(refsByRootAuthor.entries())\n\n const rootAuthorsLikes = await Promise.all(\n refsByRootAuthorEntries.map(([rootAuthor, refsForAuthor]) =>\n this.dataplane.getLikesByActorAndSubjects({\n actorDid: rootAuthor,\n refs: refsForAuthor.map(({ uri, cid }) => ({ uri, cid })),\n }),\n ),\n )\n\n const likesByUri = new Map<AtUriString, AtUriString>()\n\n for (let i = 0; i < refsByRootAuthorEntries.length; i++) {\n const [_rootAuthor, refsForAuthor] = refsByRootAuthorEntries[i]\n const likesForRootAuthor = rootAuthorsLikes[i]\n for (let j = 0; j < refsForAuthor.length; j++) {\n const { uri } = refsForAuthor[j]\n likesByUri.set(uri, likesForRootAuthor.uris[j] as AtUriString)\n }\n }\n\n for (const { uri } of refs) {\n map.set(uri, {\n like: parseString(likesByUri.get(uri)),\n })\n }\n\n return map\n }\n\n async getPostAggregates(\n refs: ItemRef[],\n viewer: DidString | null,\n ): Promise<PostAggs> {\n const map: PostAggs = new HydrationMap()\n if (!refs.length) return map\n\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, {\n likes: counts.likes[i] ?? 0,\n replies: counts.replies[i] ?? 0,\n reposts: counts.reposts[i] ?? 0,\n quotes: counts.quotes[i] ?? 0,\n bookmarks: counts.bookmarks[i] ?? 0,\n })\n }\n\n return map\n }\n\n async getFeedGens(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<FeedGens> {\n const map: FeedGens = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getFeedGeneratorRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.generator.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getFeedGenViewerStates(\n uris: AtUriString[],\n viewer: DidString,\n ): Promise<FeedGenViewerStates> {\n const map: FeedGenViewerStates = new HydrationMap()\n if (!uris.length) return map\n\n const likes = await this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs: uris.map((uri) => ({ uri })),\n })\n for (let i = 0; i < uris.length; i++) {\n map.set(uris[i], {\n like: parseString(likes.uris[i]),\n })\n }\n\n return map\n }\n\n async getFeedGenAggregates(\n refs: ItemRef[],\n viewer: DidString | null,\n ): Promise<FeedGenAggs> {\n const map: FeedGenAggs = new HydrationMap()\n if (!refs.length) return map\n\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, { likes: counts.likes[i] ?? 0 })\n }\n\n return map\n }\n\n async getThreadgatesForPosts(\n postUris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Threadgates> {\n const uris = postUris.map(postUriToThreadgateUri)\n return this.getThreadgateRecords(uris, includeTakedowns)\n }\n\n async getThreadgateRecords(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Threadgates> {\n const map: Threadgates = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getThreadGateRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.threadgate.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getPostgatesForPosts(\n postUris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Postgates> {\n const uris = postUris.map(postUriToPostgateUri)\n return this.getPostgateRecords(uris, includeTakedowns)\n }\n\n async getPostgateRecords(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Postgates> {\n const map: Postgates = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getPostgateRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.postgate.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getLikes(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Likes> {\n const map: Likes = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getLikeRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.like.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getReposts(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Reposts> {\n const map: Reposts = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getRepostRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.feed.repost.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/hydration/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/hydration/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAA;AAE1E,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;AACzC,MAAM,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AAEnD,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;AACjD,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,WAAW,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAEzE,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,CAAC,EAAE,WAAW,CAAA;CAC/B,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAC7C,WAAW,EACX,YAAY,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAC7C,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;AAC7C,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAEvD,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;AAE3C,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;AACvD,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAEjE,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACzD,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AAEnE,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;AAEvE,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;AASjE,qBAAa,MAAM;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAY;IAC5C,cAAgB;IAEhB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAIzD;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAIjD;IAED,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK5B;CACF;AAGD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAA;IACjC,YAAY,EAAE,WAAW,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,qBAAa,aAAa;IACL,SAAS,EAAE,eAAe;IAA7C,YAAmB,SAAS,EAAE,eAAe,EAAI;IAE3C,QAAQ,CACZ,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,KAAK,CAAC,CAehB;IAEK,YAAY,CAChB,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,SAAS,CAAC,CAepB;IAEK,mBAAmB,CACvB,IAAI,EAAE,WAAW,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAqB3B;YAEa,iBAAiB;IAiBzB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBvE;IAEK,UAAU,CACd,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,OAAO,CAAC,CAgBlB;IAEK,gBAAgB,CACpB,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,aAAa,CAAC,CAgBxB;IAEK,SAAS,CACb,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAgB3C;IAEK,eAAe,CAAC,KAAK,EAAE;QAC3B,GAAG,EAAE,SAAS,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAQrD;IAEK,iBAAiB,CAAC,KAAK,EAAE;QAC7B,GAAG,EAAE,SAAS,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAQvD;IAEK,eAAe,CACnB,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,YAAY,CAAC,CAgBvB;IAEK,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,4BAc7C;IAEK,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAY1D;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/hydration/graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUriString, DidString } from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app } from '../lexicons/index.js'\nimport { FollowInfo } from '../proto/bsky_pb.js'\nimport {\n BlockRecord,\n FollowRecord,\n ListItemRecord,\n ListRecord,\n StarterPackRecord,\n VerificationRecord,\n} from '../views/types.js'\nimport { HydrationMap, ItemRef, RecordInfo, parseRecord } from './util.js'\n\nexport type List = RecordInfo<ListRecord>\nexport type Lists = HydrationMap<AtUriString, List>\n\nexport type ListItem = RecordInfo<ListItemRecord>\nexport type ListItems = HydrationMap<AtUriString, ListItem>\n\nexport type ListViewerState = {\n viewerMuted?: string // @TODO AtUriString ?\n viewerListBlockUri?: AtUriString\n viewerInList?: string // @TODO AtUriString ?\n}\n\nexport type ListViewerStates = HydrationMap<AtUriString, ListViewerState>\n\nexport type ListMembershipState = {\n actorListItemUri?: AtUriString\n}\n\n// list uri => actor did => state\nexport type ListMembershipStates = HydrationMap<\n AtUriString,\n HydrationMap<DidString, ListMembershipState>\n>\n\nexport type Follow = RecordInfo<FollowRecord>\nexport type Follows = HydrationMap<AtUriString, Follow>\n\nexport type Block = RecordInfo<BlockRecord>\n\nexport type StarterPack = RecordInfo<StarterPackRecord>\nexport type StarterPacks = HydrationMap<AtUriString, StarterPack>\n\nexport type Verification = RecordInfo<VerificationRecord>\nexport type Verifications = HydrationMap<AtUriString, Verification>\n\nexport type StarterPackAgg = {\n joinedWeek: number\n joinedAllTime: number\n listItemSampleUris?: AtUriString[] // gets set during starter pack hydration (not for basic view)\n}\n\nexport type StarterPackAggs = HydrationMap<AtUriString, StarterPackAgg>\n\nexport type ListAgg = {\n listItems: number\n}\n\nexport type ListAggs = HydrationMap<AtUriString, ListAgg>\n\nexport type RelationshipPair = [didA: DidString, didB: DidString]\n\nconst dedupePairs = (pairs: RelationshipPair[]): RelationshipPair[] => {\n const deduped = pairs.reduce((acc, pair) => {\n return acc.set(Blocks.key(...pair), pair)\n }, new Map<string, RelationshipPair>())\n return [...deduped.values()]\n}\n\nexport class Blocks {\n _blocks: Map<string, BlockEntry> = new Map() // did:a,did:b -> block\n constructor() {}\n\n static key(didA: string, didB: string): string {\n return [didA, didB].sort().join(',')\n }\n\n set(didA: string, didB: string, block: BlockEntry): Blocks {\n const key = Blocks.key(didA, didB)\n this._blocks.set(key, block)\n return this\n }\n\n get(didA: string, didB: string): BlockEntry | null {\n if (didA === didB) return null // ignore self-blocks\n const key = Blocks.key(didA, didB)\n return this._blocks.get(key) ?? null\n }\n\n merge(blocks: Blocks): Blocks {\n blocks._blocks.forEach((block, key) => {\n this._blocks.set(key, block)\n })\n return this\n }\n}\n\n// No \"blocking\" vs. \"blocked\" directionality: only suitable for bidirectional block checks\nexport type BlockEntry = {\n blockUri: AtUriString | undefined\n blockListUri: AtUriString | undefined\n}\n\nexport class GraphHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getLists(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Lists> {\n const map: Lists = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getListRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.graph.list.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getListItems(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ListItems> {\n const map: ListItems = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getListItemRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.graph.listitem.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getListViewerStates(\n uris: AtUriString[],\n viewer: string,\n ): Promise<ListViewerStates> {\n const map: ListViewerStates = new HydrationMap()\n if (!uris.length) return map\n\n const mutesAndBlocks = await Promise.all(\n uris.map((uri) => this.getMutesAndBlocks(uri, viewer)),\n )\n const listMemberships = await this.dataplane.getListMembership({\n actorDid: viewer,\n listUris: uris,\n })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n map.set(uri, {\n viewerMuted: mutesAndBlocks[i].muted ? uri : undefined,\n viewerListBlockUri: mutesAndBlocks[i].listBlockUri || undefined,\n viewerInList: listMemberships.listitemUris[i],\n })\n }\n\n return map\n }\n\n private async getMutesAndBlocks(uri: string, viewer: string) {\n const [muted, listBlockUri] = await Promise.all([\n this.dataplane.getMutelistSubscription({\n actorDid: viewer,\n listUri: uri,\n }),\n this.dataplane.getBlocklistSubscription({\n actorDid: viewer,\n listUri: uri,\n }),\n ])\n return {\n muted: muted.subscribed,\n listBlockUri: listBlockUri.listblockUri as AtUriString,\n }\n }\n\n async getBidirectionalBlocks(pairs: RelationshipPair[]): Promise<Blocks> {\n if (!pairs.length) return new Blocks()\n const deduped = dedupePairs(pairs).map(([a, b]) => ({ a, b }))\n const res = await this.dataplane.getBlockExistence({ pairs: deduped })\n const blocks = new Blocks()\n for (let i = 0; i < deduped.length; i++) {\n const pair = deduped[i]\n const block = res.blocks[i]\n blocks.set(pair.a, pair.b, {\n blockUri: (block.blockedBy || block.blocking || undefined) as\n | AtUriString\n | undefined,\n blockListUri: (block.blockedByList ||\n block.blockingByList ||\n undefined) as AtUriString | undefined,\n })\n }\n return blocks\n }\n\n async getFollows(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Follows> {\n const map: Follows = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getFollowRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.follow.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getVerifications(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Verifications> {\n const map: Verifications = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getVerificationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.verification.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getBlocks(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<HydrationMap<AtUriString, Block>> {\n const map = new HydrationMap<AtUriString, Block>()\n if (!uris.length) return map\n\n const res = await this.dataplane.getBlockRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.block.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getActorFollows(input: {\n did: DidString\n cursor?: string\n limit?: number\n }): Promise<{ follows: FollowInfo[]; cursor: string }> {\n const { did, cursor, limit } = input\n const res = await this.dataplane.getFollows({\n actorDid: did,\n cursor,\n limit,\n })\n return { follows: res.follows, cursor: res.cursor }\n }\n\n async getActorFollowers(input: {\n did: DidString\n cursor?: string\n limit?: number\n }): Promise<{ followers: FollowInfo[]; cursor: string }> {\n const { did, cursor, limit } = input\n const res = await this.dataplane.getFollowers({\n actorDid: did,\n cursor,\n limit,\n })\n return { followers: res.followers, cursor: res.cursor }\n }\n\n async getStarterPacks(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<StarterPacks> {\n const map: StarterPacks = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getStarterPackRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.starterpack.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getStarterPackAggregates(refs: ItemRef[]) {\n const map: StarterPackAggs = new HydrationMap()\n\n if (refs.length) {\n const counts = await this.dataplane.getStarterPackCounts({ refs })\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, {\n joinedWeek: counts.joinedWeek[i] ?? 0,\n joinedAllTime: counts.joinedAllTime[i] ?? 0,\n })\n }\n }\n\n return map\n }\n\n async getListAggregates(refs: ItemRef[]): Promise<ListAggs> {\n const map: ListAggs = new HydrationMap()\n\n if (refs.length) {\n const counts = await this.dataplane.getListCounts({ refs })\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, {\n listItems: counts.listItems[i] ?? 0,\n })\n }\n }\n return map\n }\n}\n"]}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/hydration/graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUriString, DidString } from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app } from '../lexicons/index.js'\nimport { FollowInfo } from '../proto/bsky_pb.js'\nimport {\n BlockRecord,\n FollowRecord,\n ListItemRecord,\n ListRecord,\n StarterPackRecord,\n VerificationRecord,\n} from '../views/types.js'\nimport { HydrationMap, ItemRef, RecordInfo, parseRecord } from './util.js'\n\nexport type List = RecordInfo<ListRecord>\nexport type Lists = HydrationMap<AtUriString, List>\n\nexport type ListItem = RecordInfo<ListItemRecord>\nexport type ListItems = HydrationMap<AtUriString, ListItem>\n\nexport type ListViewerState = {\n viewerMuted?: string // @TODO AtUriString ?\n viewerListBlockUri?: AtUriString\n viewerInList?: string // @TODO AtUriString ?\n}\n\nexport type ListViewerStates = HydrationMap<AtUriString, ListViewerState>\n\nexport type ListMembershipState = {\n actorListItemUri?: AtUriString\n}\n\n// list uri => actor did => state\nexport type ListMembershipStates = HydrationMap<\n AtUriString,\n HydrationMap<DidString, ListMembershipState>\n>\n\nexport type Follow = RecordInfo<FollowRecord>\nexport type Follows = HydrationMap<AtUriString, Follow>\n\nexport type Block = RecordInfo<BlockRecord>\n\nexport type StarterPack = RecordInfo<StarterPackRecord>\nexport type StarterPacks = HydrationMap<AtUriString, StarterPack>\n\nexport type Verification = RecordInfo<VerificationRecord>\nexport type Verifications = HydrationMap<AtUriString, Verification>\n\nexport type StarterPackAgg = {\n joinedWeek: number\n joinedAllTime: number\n listItemSampleUris?: AtUriString[] // gets set during starter pack hydration (not for basic view)\n}\n\nexport type StarterPackAggs = HydrationMap<AtUriString, StarterPackAgg>\n\nexport type ListAgg = {\n listItems: number\n}\n\nexport type ListAggs = HydrationMap<AtUriString, ListAgg>\n\nexport type RelationshipPair = [didA: DidString, didB: DidString]\n\nconst dedupePairs = (pairs: RelationshipPair[]): RelationshipPair[] => {\n const deduped = pairs.reduce((acc, pair) => {\n return acc.set(Blocks.key(...pair), pair)\n }, new Map<string, RelationshipPair>())\n return [...deduped.values()]\n}\n\nexport class Blocks {\n _blocks: Map<string, BlockEntry> = new Map() // did:a,did:b -> block\n constructor() {}\n\n static key(didA: string, didB: string): string {\n return [didA, didB].sort().join(',')\n }\n\n set(didA: string, didB: string, block: BlockEntry): Blocks {\n const key = Blocks.key(didA, didB)\n this._blocks.set(key, block)\n return this\n }\n\n get(didA: string, didB: string): BlockEntry | null {\n if (didA === didB) return null // ignore self-blocks\n const key = Blocks.key(didA, didB)\n return this._blocks.get(key) ?? null\n }\n\n merge(blocks: Blocks): Blocks {\n blocks._blocks.forEach((block, key) => {\n this._blocks.set(key, block)\n })\n return this\n }\n}\n\n// No \"blocking\" vs. \"blocked\" directionality: only suitable for bidirectional block checks\nexport type BlockEntry = {\n blockUri: AtUriString | undefined\n blockListUri: AtUriString | undefined\n}\n\nexport class GraphHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getLists(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Lists> {\n const map: Lists = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getListRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.graph.list.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getListItems(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ListItems> {\n const map: ListItems = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getListItemRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.graph.listitem.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getListViewerStates(\n uris: AtUriString[],\n viewer: string,\n ): Promise<ListViewerStates> {\n const map: ListViewerStates = new HydrationMap()\n if (!uris.length) return map\n\n const mutesAndBlocks = await Promise.all(\n uris.map((uri) => this.getMutesAndBlocks(uri, viewer)),\n )\n const listMemberships = await this.dataplane.getListMembership({\n actorDid: viewer,\n listUris: uris,\n })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n map.set(uri, {\n viewerMuted: mutesAndBlocks[i].muted ? uri : undefined,\n viewerListBlockUri: mutesAndBlocks[i].listBlockUri || undefined,\n viewerInList: listMemberships.listitemUris[i],\n })\n }\n\n return map\n }\n\n private async getMutesAndBlocks(uri: string, viewer: string) {\n const [muted, listBlockUri] = await Promise.all([\n this.dataplane.getMutelistSubscription({\n actorDid: viewer,\n listUri: uri,\n }),\n this.dataplane.getBlocklistSubscription({\n actorDid: viewer,\n listUri: uri,\n }),\n ])\n return {\n muted: muted.subscribed,\n listBlockUri: listBlockUri.listblockUri as AtUriString,\n }\n }\n\n async getBidirectionalBlocks(pairs: RelationshipPair[]): Promise<Blocks> {\n if (!pairs.length) return new Blocks()\n const deduped = dedupePairs(pairs).map(([a, b]) => ({ a, b }))\n const res = await this.dataplane.getBlockExistence({ pairs: deduped })\n const blocks = new Blocks()\n for (let i = 0; i < deduped.length; i++) {\n const pair = deduped[i]\n const block = res.blocks[i]\n blocks.set(pair.a, pair.b, {\n blockUri: (block.blockedBy || block.blocking || undefined) as\n | AtUriString\n | undefined,\n blockListUri: (block.blockedByList ||\n block.blockingByList ||\n undefined) as AtUriString | undefined,\n })\n }\n return blocks\n }\n\n async getFollows(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Follows> {\n const map: Follows = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getFollowRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.follow.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getVerifications(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Verifications> {\n const map: Verifications = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getVerificationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.verification.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getBlocks(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<HydrationMap<AtUriString, Block>> {\n const map = new HydrationMap<AtUriString, Block>()\n if (!uris.length) return map\n\n const res = await this.dataplane.getBlockRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.block.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getActorFollows(input: {\n did: DidString\n cursor?: string\n limit?: number\n }): Promise<{ follows: FollowInfo[]; cursor: string }> {\n const { did, cursor, limit } = input\n const res = await this.dataplane.getFollows({\n actorDid: did,\n cursor,\n limit,\n })\n return { follows: res.follows, cursor: res.cursor }\n }\n\n async getActorFollowers(input: {\n did: DidString\n cursor?: string\n limit?: number\n }): Promise<{ followers: FollowInfo[]; cursor: string }> {\n const { did, cursor, limit } = input\n const res = await this.dataplane.getFollowers({\n actorDid: did,\n cursor,\n limit,\n })\n return { followers: res.followers, cursor: res.cursor }\n }\n\n async getStarterPacks(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<StarterPacks> {\n const map: StarterPacks = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getStarterPackRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.graph.starterpack.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getStarterPackAggregates(refs: ItemRef[]) {\n const map: StarterPackAggs = new HydrationMap()\n\n if (refs.length) {\n const counts = await this.dataplane.getStarterPackCounts({ refs })\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, {\n joinedWeek: counts.joinedWeek[i] ?? 0,\n joinedAllTime: counts.joinedAllTime[i] ?? 0,\n })\n }\n }\n\n return map\n }\n\n async getListAggregates(refs: ItemRef[]): Promise<ListAggs> {\n const map: ListAggs = new HydrationMap()\n\n if (refs.length) {\n const counts = await this.dataplane.getListCounts({ refs })\n for (let i = 0; i < refs.length; i++) {\n map.set(refs[i].uri, {\n listItems: counts.listItems[i] ?? 0,\n })\n }\n }\n return map\n }\n}\n"]}
@@ -151,7 +151,7 @@ export declare class Hydrator {
151
151
  hydrateBidirectionalBlocks(didMap: Map<DidString, DidString[]>, // DID -> DID[]
152
152
  ctx: HydrateCtx): Promise<BidirectionalBlocks>;
153
153
  hydrateLabelers(dids: DidString[], ctx: HydrateCtx): Promise<HydrationState>;
154
- getRecord(uri: AtUriString, includeTakedowns?: boolean): Promise<import("./actor.js").ChatDeclaration | import("./actor.js").GermDeclaration | import("./actor.js").NotificationDeclaration | import("./actor.js").Status | Post | import("./feed.js").Like | import("./feed.js").Repost | import("./feed.js").FeedGen | import("./feed.js").Threadgate | import("./feed.js").Postgate | import("./graph.js").List | import("./graph.js").ListItem | import("./graph.js").Follow | import("./graph.js").Block | import("./graph.js").StarterPack | import("./label.js").Labeler | RecordInfo<app.bsky.actor.profile.Main> | undefined>;
154
+ getRecord(uri: AtUriString, includeTakedowns?: boolean): Promise<import("./graph.js").Block | import("./actor.js").ChatDeclaration | import("./feed.js").FeedGen | import("./graph.js").Follow | import("./actor.js").GermDeclaration | import("./label.js").Labeler | import("./feed.js").Like | import("./graph.js").List | import("./graph.js").ListItem | import("./actor.js").NotificationDeclaration | import("./feed.js").Postgate | RecordInfo<app.bsky.actor.profile.Main> | import("./feed.js").Repost | import("./graph.js").StarterPack | import("./actor.js").Status | import("./feed.js").Threadgate | Post | undefined>;
155
155
  createContext<V extends Omit<HydrateCtxVals, 'features'> & {
156
156
  features?: ScopedFeatureGatesClient;
157
157
  }>(vals: V): Promise<HydrateCtx & {
@@ -1 +1 @@
1
- {"version":3,"file":"hydrator.d.ts","sourceRoot":"","sources":["../../src/hydration/hydrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hydrator.d.ts","sourceRoot":"","sources":["../../src/hydration/hydrator.ts"],"names":[],"mappings":"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"}