@atproto/bsky 0.0.112 → 0.0.114

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 (625) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/bin/migration-create.ts +2 -2
  3. package/dist/api/app/bsky/actor/getProfile.d.ts +1 -1
  4. package/dist/api/app/bsky/actor/getProfile.d.ts.map +1 -1
  5. package/dist/api/app/bsky/actor/getProfile.js +1 -1
  6. package/dist/api/app/bsky/actor/getProfile.js.map +1 -1
  7. package/dist/api/app/bsky/actor/getProfiles.d.ts +1 -1
  8. package/dist/api/app/bsky/actor/getProfiles.d.ts.map +1 -1
  9. package/dist/api/app/bsky/actor/getProfiles.js +2 -2
  10. package/dist/api/app/bsky/actor/getProfiles.js.map +1 -1
  11. package/dist/api/app/bsky/actor/getSuggestions.d.ts +1 -1
  12. package/dist/api/app/bsky/actor/getSuggestions.d.ts.map +1 -1
  13. package/dist/api/app/bsky/actor/getSuggestions.js +1 -1
  14. package/dist/api/app/bsky/actor/getSuggestions.js.map +1 -1
  15. package/dist/api/app/bsky/actor/searchActors.d.ts +1 -1
  16. package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
  17. package/dist/api/app/bsky/actor/searchActors.js +1 -1
  18. package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
  19. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts +1 -1
  20. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
  21. package/dist/api/app/bsky/actor/searchActorsTypeahead.js +1 -1
  22. package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  23. package/dist/api/app/bsky/feed/getActorFeeds.d.ts +1 -1
  24. package/dist/api/app/bsky/feed/getActorFeeds.d.ts.map +1 -1
  25. package/dist/api/app/bsky/feed/getActorFeeds.js +2 -2
  26. package/dist/api/app/bsky/feed/getActorFeeds.js.map +1 -1
  27. package/dist/api/app/bsky/feed/getActorLikes.d.ts +1 -1
  28. package/dist/api/app/bsky/feed/getActorLikes.d.ts.map +1 -1
  29. package/dist/api/app/bsky/feed/getActorLikes.js +6 -6
  30. package/dist/api/app/bsky/feed/getActorLikes.js.map +1 -1
  31. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts +5 -5
  32. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  33. package/dist/api/app/bsky/feed/getAuthorFeed.js +11 -9
  34. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  35. package/dist/api/app/bsky/feed/getFeed.d.ts +2 -2
  36. package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
  37. package/dist/api/app/bsky/feed/getFeed.js +6 -6
  38. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  39. package/dist/api/app/bsky/feed/getFeedGenerator.d.ts +1 -1
  40. package/dist/api/app/bsky/feed/getFeedGenerator.d.ts.map +1 -1
  41. package/dist/api/app/bsky/feed/getFeedGenerator.js.map +1 -1
  42. package/dist/api/app/bsky/feed/getFeedGenerators.d.ts +1 -1
  43. package/dist/api/app/bsky/feed/getFeedGenerators.d.ts.map +1 -1
  44. package/dist/api/app/bsky/feed/getFeedGenerators.js.map +1 -1
  45. package/dist/api/app/bsky/feed/getLikes.d.ts +1 -1
  46. package/dist/api/app/bsky/feed/getLikes.d.ts.map +1 -1
  47. package/dist/api/app/bsky/feed/getLikes.js +2 -2
  48. package/dist/api/app/bsky/feed/getLikes.js.map +1 -1
  49. package/dist/api/app/bsky/feed/getListFeed.d.ts +4 -4
  50. package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
  51. package/dist/api/app/bsky/feed/getListFeed.js +7 -7
  52. package/dist/api/app/bsky/feed/getListFeed.js.map +1 -1
  53. package/dist/api/app/bsky/feed/getPostThread.d.ts +1 -1
  54. package/dist/api/app/bsky/feed/getPostThread.d.ts.map +1 -1
  55. package/dist/api/app/bsky/feed/getPostThread.js +2 -2
  56. package/dist/api/app/bsky/feed/getPostThread.js.map +1 -1
  57. package/dist/api/app/bsky/feed/getPosts.d.ts +1 -1
  58. package/dist/api/app/bsky/feed/getPosts.d.ts.map +1 -1
  59. package/dist/api/app/bsky/feed/getPosts.js +1 -1
  60. package/dist/api/app/bsky/feed/getPosts.js.map +1 -1
  61. package/dist/api/app/bsky/feed/getQuotes.d.ts +1 -1
  62. package/dist/api/app/bsky/feed/getQuotes.d.ts.map +1 -1
  63. package/dist/api/app/bsky/feed/getQuotes.js +6 -6
  64. package/dist/api/app/bsky/feed/getQuotes.js.map +1 -1
  65. package/dist/api/app/bsky/feed/getRepostedBy.d.ts +1 -1
  66. package/dist/api/app/bsky/feed/getRepostedBy.d.ts.map +1 -1
  67. package/dist/api/app/bsky/feed/getRepostedBy.js +1 -1
  68. package/dist/api/app/bsky/feed/getRepostedBy.js.map +1 -1
  69. package/dist/api/app/bsky/feed/getSuggestedFeeds.d.ts +1 -1
  70. package/dist/api/app/bsky/feed/getSuggestedFeeds.d.ts.map +1 -1
  71. package/dist/api/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
  72. package/dist/api/app/bsky/feed/getTimeline.d.ts +4 -4
  73. package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
  74. package/dist/api/app/bsky/feed/getTimeline.js +6 -6
  75. package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
  76. package/dist/api/app/bsky/feed/searchPosts.d.ts +1 -1
  77. package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
  78. package/dist/api/app/bsky/feed/searchPosts.js +1 -1
  79. package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
  80. package/dist/api/app/bsky/graph/getActorStarterPacks.d.ts +1 -1
  81. package/dist/api/app/bsky/graph/getActorStarterPacks.d.ts.map +1 -1
  82. package/dist/api/app/bsky/graph/getActorStarterPacks.js +5 -5
  83. package/dist/api/app/bsky/graph/getActorStarterPacks.js.map +1 -1
  84. package/dist/api/app/bsky/graph/getBlocks.d.ts +1 -1
  85. package/dist/api/app/bsky/graph/getBlocks.d.ts.map +1 -1
  86. package/dist/api/app/bsky/graph/getBlocks.js.map +1 -1
  87. package/dist/api/app/bsky/graph/getFollowers.d.ts +1 -1
  88. package/dist/api/app/bsky/graph/getFollowers.d.ts.map +1 -1
  89. package/dist/api/app/bsky/graph/getFollowers.js +1 -1
  90. package/dist/api/app/bsky/graph/getFollowers.js.map +1 -1
  91. package/dist/api/app/bsky/graph/getFollows.d.ts +1 -1
  92. package/dist/api/app/bsky/graph/getFollows.d.ts.map +1 -1
  93. package/dist/api/app/bsky/graph/getFollows.js +1 -1
  94. package/dist/api/app/bsky/graph/getFollows.js.map +1 -1
  95. package/dist/api/app/bsky/graph/getKnownFollowers.d.ts +1 -1
  96. package/dist/api/app/bsky/graph/getKnownFollowers.d.ts.map +1 -1
  97. package/dist/api/app/bsky/graph/getKnownFollowers.js.map +1 -1
  98. package/dist/api/app/bsky/graph/getList.d.ts +1 -1
  99. package/dist/api/app/bsky/graph/getList.d.ts.map +1 -1
  100. package/dist/api/app/bsky/graph/getList.js +2 -2
  101. package/dist/api/app/bsky/graph/getList.js.map +1 -1
  102. package/dist/api/app/bsky/graph/getListBlocks.d.ts +1 -1
  103. package/dist/api/app/bsky/graph/getListBlocks.d.ts.map +1 -1
  104. package/dist/api/app/bsky/graph/getListBlocks.js.map +1 -1
  105. package/dist/api/app/bsky/graph/getListMutes.d.ts +1 -1
  106. package/dist/api/app/bsky/graph/getListMutes.d.ts.map +1 -1
  107. package/dist/api/app/bsky/graph/getListMutes.js.map +1 -1
  108. package/dist/api/app/bsky/graph/getLists.d.ts +1 -1
  109. package/dist/api/app/bsky/graph/getLists.d.ts.map +1 -1
  110. package/dist/api/app/bsky/graph/getLists.js.map +1 -1
  111. package/dist/api/app/bsky/graph/getMutes.d.ts +1 -1
  112. package/dist/api/app/bsky/graph/getMutes.d.ts.map +1 -1
  113. package/dist/api/app/bsky/graph/getMutes.js.map +1 -1
  114. package/dist/api/app/bsky/graph/getRelationships.d.ts +1 -1
  115. package/dist/api/app/bsky/graph/getRelationships.d.ts.map +1 -1
  116. package/dist/api/app/bsky/graph/getStarterPack.d.ts +1 -1
  117. package/dist/api/app/bsky/graph/getStarterPack.d.ts.map +1 -1
  118. package/dist/api/app/bsky/graph/getStarterPack.js.map +1 -1
  119. package/dist/api/app/bsky/graph/getStarterPacks.d.ts +1 -1
  120. package/dist/api/app/bsky/graph/getStarterPacks.d.ts.map +1 -1
  121. package/dist/api/app/bsky/graph/getStarterPacks.js +1 -1
  122. package/dist/api/app/bsky/graph/getStarterPacks.js.map +1 -1
  123. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts +1 -1
  124. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +1 -1
  125. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  126. package/dist/api/app/bsky/graph/muteActor.d.ts +1 -1
  127. package/dist/api/app/bsky/graph/muteActor.d.ts.map +1 -1
  128. package/dist/api/app/bsky/graph/muteActorList.d.ts +1 -1
  129. package/dist/api/app/bsky/graph/muteActorList.d.ts.map +1 -1
  130. package/dist/api/app/bsky/graph/muteThread.d.ts +1 -1
  131. package/dist/api/app/bsky/graph/muteThread.d.ts.map +1 -1
  132. package/dist/api/app/bsky/graph/searchStarterPacks.d.ts +1 -1
  133. package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
  134. package/dist/api/app/bsky/graph/searchStarterPacks.js +2 -2
  135. package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
  136. package/dist/api/app/bsky/graph/unmuteActor.d.ts +1 -1
  137. package/dist/api/app/bsky/graph/unmuteActor.d.ts.map +1 -1
  138. package/dist/api/app/bsky/graph/unmuteActorList.d.ts +1 -1
  139. package/dist/api/app/bsky/graph/unmuteActorList.d.ts.map +1 -1
  140. package/dist/api/app/bsky/graph/unmuteThread.d.ts +1 -1
  141. package/dist/api/app/bsky/graph/unmuteThread.d.ts.map +1 -1
  142. package/dist/api/app/bsky/labeler/getServices.d.ts +1 -1
  143. package/dist/api/app/bsky/labeler/getServices.d.ts.map +1 -1
  144. package/dist/api/app/bsky/labeler/getServices.js.map +1 -1
  145. package/dist/api/app/bsky/notification/getUnreadCount.d.ts +1 -1
  146. package/dist/api/app/bsky/notification/getUnreadCount.d.ts.map +1 -1
  147. package/dist/api/app/bsky/notification/getUnreadCount.js.map +1 -1
  148. package/dist/api/app/bsky/notification/listNotifications.d.ts +1 -1
  149. package/dist/api/app/bsky/notification/listNotifications.d.ts.map +1 -1
  150. package/dist/api/app/bsky/notification/listNotifications.js +1 -1
  151. package/dist/api/app/bsky/notification/listNotifications.js.map +1 -1
  152. package/dist/api/app/bsky/notification/putPreferences.d.ts +1 -1
  153. package/dist/api/app/bsky/notification/putPreferences.d.ts.map +1 -1
  154. package/dist/api/app/bsky/notification/registerPush.d.ts +1 -1
  155. package/dist/api/app/bsky/notification/registerPush.d.ts.map +1 -1
  156. package/dist/api/app/bsky/notification/updateSeen.d.ts +1 -1
  157. package/dist/api/app/bsky/notification/updateSeen.d.ts.map +1 -1
  158. package/dist/api/app/bsky/notification/updateSeen.js +2 -5
  159. package/dist/api/app/bsky/notification/updateSeen.js.map +1 -1
  160. package/dist/api/app/bsky/unspecced/getConfig.d.ts +1 -1
  161. package/dist/api/app/bsky/unspecced/getConfig.d.ts.map +1 -1
  162. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts +1 -1
  163. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
  164. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
  165. package/dist/api/app/bsky/unspecced/getTaggedSuggestions.d.ts +1 -1
  166. package/dist/api/app/bsky/unspecced/getTaggedSuggestions.d.ts.map +1 -1
  167. package/dist/api/app/bsky/unspecced/getTrendingTopics.d.ts +1 -1
  168. package/dist/api/app/bsky/unspecced/getTrendingTopics.d.ts.map +1 -1
  169. package/dist/api/app/bsky/unspecced/getTrendingTopics.js +1 -1
  170. package/dist/api/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
  171. package/dist/api/blob-dispatcher.d.ts.map +1 -1
  172. package/dist/api/blob-dispatcher.js +1 -1
  173. package/dist/api/blob-dispatcher.js.map +1 -1
  174. package/dist/api/blob-resolver.d.ts +3 -3
  175. package/dist/api/blob-resolver.d.ts.map +1 -1
  176. package/dist/api/blob-resolver.js +6 -4
  177. package/dist/api/blob-resolver.js.map +1 -1
  178. package/dist/api/com/atproto/admin/getAccountInfos.d.ts +1 -1
  179. package/dist/api/com/atproto/admin/getAccountInfos.d.ts.map +1 -1
  180. package/dist/api/com/atproto/admin/getAccountInfos.js.map +1 -1
  181. package/dist/api/com/atproto/admin/getSubjectStatus.d.ts +1 -1
  182. package/dist/api/com/atproto/admin/getSubjectStatus.d.ts.map +1 -1
  183. package/dist/api/com/atproto/admin/updateSubjectStatus.d.ts +1 -1
  184. package/dist/api/com/atproto/admin/updateSubjectStatus.d.ts.map +1 -1
  185. package/dist/api/com/atproto/identity/resolveHandle.d.ts +1 -1
  186. package/dist/api/com/atproto/identity/resolveHandle.d.ts.map +1 -1
  187. package/dist/api/com/atproto/identity/resolveHandle.js +1 -1
  188. package/dist/api/com/atproto/identity/resolveHandle.js.map +1 -1
  189. package/dist/api/com/atproto/label/queryLabels.d.ts +1 -1
  190. package/dist/api/com/atproto/label/queryLabels.d.ts.map +1 -1
  191. package/dist/api/com/atproto/label/queryLabels.js.map +1 -1
  192. package/dist/api/com/atproto/repo/getRecord.d.ts +1 -1
  193. package/dist/api/com/atproto/repo/getRecord.d.ts.map +1 -1
  194. package/dist/api/com/atproto/repo/getRecord.js +1 -1
  195. package/dist/api/com/atproto/repo/getRecord.js.map +1 -1
  196. package/dist/api/com/atproto/temp/fetchLabels.d.ts +1 -1
  197. package/dist/api/com/atproto/temp/fetchLabels.d.ts.map +1 -1
  198. package/dist/api/com/atproto/temp/fetchLabels.js.map +1 -1
  199. package/dist/api/health.d.ts +3 -3
  200. package/dist/api/health.d.ts.map +1 -1
  201. package/dist/api/health.js +2 -5
  202. package/dist/api/health.js.map +1 -1
  203. package/dist/api/index.d.ts +1 -1
  204. package/dist/api/index.d.ts.map +1 -1
  205. package/dist/api/index.js +20 -20
  206. package/dist/api/index.js.map +1 -1
  207. package/dist/api/util.d.ts +1 -0
  208. package/dist/api/util.d.ts.map +1 -1
  209. package/dist/api/util.js +2 -1
  210. package/dist/api/util.js.map +1 -1
  211. package/dist/api/well-known.d.ts +3 -3
  212. package/dist/api/well-known.d.ts.map +1 -1
  213. package/dist/api/well-known.js +2 -5
  214. package/dist/api/well-known.js.map +1 -1
  215. package/dist/auth-verifier.d.ts +1 -1
  216. package/dist/auth-verifier.d.ts.map +1 -1
  217. package/dist/auth-verifier.js +3 -3
  218. package/dist/auth-verifier.js.map +1 -1
  219. package/dist/bsync.d.ts +2 -2
  220. package/dist/bsync.d.ts.map +1 -1
  221. package/dist/bsync.js +1 -1
  222. package/dist/bsync.js.map +1 -1
  223. package/dist/context.d.ts +7 -8
  224. package/dist/context.d.ts.map +1 -1
  225. package/dist/context.js +1 -2
  226. package/dist/context.js.map +1 -1
  227. package/dist/courier.d.ts +2 -2
  228. package/dist/courier.d.ts.map +1 -1
  229. package/dist/courier.js +1 -1
  230. package/dist/courier.js.map +1 -1
  231. package/dist/data-plane/bsync/index.d.ts +1 -1
  232. package/dist/data-plane/bsync/index.d.ts.map +1 -1
  233. package/dist/data-plane/bsync/index.js +6 -6
  234. package/dist/data-plane/bsync/index.js.map +1 -1
  235. package/dist/data-plane/client.d.ts.map +1 -1
  236. package/dist/data-plane/client.js +1 -1
  237. package/dist/data-plane/client.js.map +1 -1
  238. package/dist/data-plane/server/background.d.ts.map +1 -1
  239. package/dist/data-plane/server/background.js.map +1 -1
  240. package/dist/data-plane/server/db/database-schema.d.ts +26 -27
  241. package/dist/data-plane/server/db/database-schema.d.ts.map +1 -1
  242. package/dist/data-plane/server/db/db.d.ts +2 -2
  243. package/dist/data-plane/server/db/db.d.ts.map +1 -1
  244. package/dist/data-plane/server/db/db.js +6 -6
  245. package/dist/data-plane/server/db/db.js.map +1 -1
  246. package/dist/data-plane/server/db/util.d.ts +1 -1
  247. package/dist/data-plane/server/db/util.d.ts.map +1 -1
  248. package/dist/data-plane/server/index.d.ts +2 -2
  249. package/dist/data-plane/server/index.d.ts.map +1 -1
  250. package/dist/data-plane/server/index.js +4 -4
  251. package/dist/data-plane/server/index.js.map +1 -1
  252. package/dist/data-plane/server/indexing/index.d.ts +14 -14
  253. package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
  254. package/dist/data-plane/server/indexing/index.js +16 -16
  255. package/dist/data-plane/server/indexing/index.js.map +1 -1
  256. package/dist/data-plane/server/indexing/plugins/block.d.ts +2 -2
  257. package/dist/data-plane/server/indexing/plugins/block.d.ts.map +1 -1
  258. package/dist/data-plane/server/indexing/plugins/block.js +2 -5
  259. package/dist/data-plane/server/indexing/plugins/block.js.map +1 -1
  260. package/dist/data-plane/server/indexing/plugins/chat-declaration.d.ts +2 -2
  261. package/dist/data-plane/server/indexing/plugins/chat-declaration.d.ts.map +1 -1
  262. package/dist/data-plane/server/indexing/plugins/chat-declaration.js +2 -5
  263. package/dist/data-plane/server/indexing/plugins/chat-declaration.js.map +1 -1
  264. package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts +2 -2
  265. package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts.map +1 -1
  266. package/dist/data-plane/server/indexing/plugins/feed-generator.js +2 -5
  267. package/dist/data-plane/server/indexing/plugins/feed-generator.js.map +1 -1
  268. package/dist/data-plane/server/indexing/plugins/follow.d.ts +2 -2
  269. package/dist/data-plane/server/indexing/plugins/follow.d.ts.map +1 -1
  270. package/dist/data-plane/server/indexing/plugins/follow.js +2 -5
  271. package/dist/data-plane/server/indexing/plugins/follow.js.map +1 -1
  272. package/dist/data-plane/server/indexing/plugins/labeler.d.ts +2 -2
  273. package/dist/data-plane/server/indexing/plugins/labeler.d.ts.map +1 -1
  274. package/dist/data-plane/server/indexing/plugins/labeler.js +2 -5
  275. package/dist/data-plane/server/indexing/plugins/labeler.js.map +1 -1
  276. package/dist/data-plane/server/indexing/plugins/like.d.ts +2 -2
  277. package/dist/data-plane/server/indexing/plugins/like.d.ts.map +1 -1
  278. package/dist/data-plane/server/indexing/plugins/like.js +2 -5
  279. package/dist/data-plane/server/indexing/plugins/like.js.map +1 -1
  280. package/dist/data-plane/server/indexing/plugins/list-block.d.ts +2 -2
  281. package/dist/data-plane/server/indexing/plugins/list-block.d.ts.map +1 -1
  282. package/dist/data-plane/server/indexing/plugins/list-block.js +2 -5
  283. package/dist/data-plane/server/indexing/plugins/list-block.js.map +1 -1
  284. package/dist/data-plane/server/indexing/plugins/list-item.d.ts +2 -2
  285. package/dist/data-plane/server/indexing/plugins/list-item.d.ts.map +1 -1
  286. package/dist/data-plane/server/indexing/plugins/list-item.js +3 -6
  287. package/dist/data-plane/server/indexing/plugins/list-item.js.map +1 -1
  288. package/dist/data-plane/server/indexing/plugins/list.d.ts +3 -3
  289. package/dist/data-plane/server/indexing/plugins/list.d.ts.map +1 -1
  290. package/dist/data-plane/server/indexing/plugins/list.js +2 -5
  291. package/dist/data-plane/server/indexing/plugins/list.js.map +1 -1
  292. package/dist/data-plane/server/indexing/plugins/post-gate.d.ts +3 -3
  293. package/dist/data-plane/server/indexing/plugins/post-gate.d.ts.map +1 -1
  294. package/dist/data-plane/server/indexing/plugins/post-gate.js +2 -5
  295. package/dist/data-plane/server/indexing/plugins/post-gate.js.map +1 -1
  296. package/dist/data-plane/server/indexing/plugins/post.d.ts +3 -3
  297. package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
  298. package/dist/data-plane/server/indexing/plugins/post.js +21 -24
  299. package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
  300. package/dist/data-plane/server/indexing/plugins/profile.d.ts +3 -3
  301. package/dist/data-plane/server/indexing/plugins/profile.d.ts.map +1 -1
  302. package/dist/data-plane/server/indexing/plugins/profile.js +2 -5
  303. package/dist/data-plane/server/indexing/plugins/profile.js.map +1 -1
  304. package/dist/data-plane/server/indexing/plugins/repost.d.ts +2 -2
  305. package/dist/data-plane/server/indexing/plugins/repost.d.ts.map +1 -1
  306. package/dist/data-plane/server/indexing/plugins/repost.js +2 -5
  307. package/dist/data-plane/server/indexing/plugins/repost.js.map +1 -1
  308. package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts +2 -2
  309. package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts.map +1 -1
  310. package/dist/data-plane/server/indexing/plugins/starter-pack.js +2 -5
  311. package/dist/data-plane/server/indexing/plugins/starter-pack.js.map +1 -1
  312. package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts +3 -3
  313. package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts.map +1 -1
  314. package/dist/data-plane/server/indexing/plugins/thread-gate.js +2 -5
  315. package/dist/data-plane/server/indexing/plugins/thread-gate.js.map +1 -1
  316. package/dist/data-plane/server/indexing/processor.d.ts +2 -2
  317. package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
  318. package/dist/data-plane/server/indexing/processor.js +1 -1
  319. package/dist/data-plane/server/indexing/processor.js.map +1 -1
  320. package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
  321. package/dist/data-plane/server/routes/feeds.js +1 -1
  322. package/dist/data-plane/server/routes/feeds.js.map +1 -1
  323. package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
  324. package/dist/data-plane/server/routes/follows.js +1 -1
  325. package/dist/data-plane/server/routes/follows.js.map +1 -1
  326. package/dist/data-plane/server/routes/identity.d.ts +1 -1
  327. package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
  328. package/dist/data-plane/server/routes/identity.js +1 -1
  329. package/dist/data-plane/server/routes/identity.js.map +1 -1
  330. package/dist/data-plane/server/routes/index.d.ts.map +1 -1
  331. package/dist/data-plane/server/routes/index.js +1 -1
  332. package/dist/data-plane/server/routes/index.js.map +1 -1
  333. package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
  334. package/dist/data-plane/server/routes/interactions.js +11 -11
  335. package/dist/data-plane/server/routes/interactions.js.map +1 -1
  336. package/dist/data-plane/server/routes/labels.d.ts.map +1 -1
  337. package/dist/data-plane/server/routes/labels.js.map +1 -1
  338. package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
  339. package/dist/data-plane/server/routes/likes.js +1 -2
  340. package/dist/data-plane/server/routes/likes.js.map +1 -1
  341. package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
  342. package/dist/data-plane/server/routes/lists.js +2 -2
  343. package/dist/data-plane/server/routes/lists.js.map +1 -1
  344. package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
  345. package/dist/data-plane/server/routes/mutes.js +7 -7
  346. package/dist/data-plane/server/routes/mutes.js.map +1 -1
  347. package/dist/data-plane/server/routes/notifs.js +2 -2
  348. package/dist/data-plane/server/routes/notifs.js.map +1 -1
  349. package/dist/data-plane/server/routes/posts.d.ts.map +1 -1
  350. package/dist/data-plane/server/routes/posts.js +1 -1
  351. package/dist/data-plane/server/routes/posts.js.map +1 -1
  352. package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
  353. package/dist/data-plane/server/routes/profile.js +4 -4
  354. package/dist/data-plane/server/routes/profile.js.map +1 -1
  355. package/dist/data-plane/server/routes/records.d.ts.map +1 -1
  356. package/dist/data-plane/server/routes/records.js +7 -7
  357. package/dist/data-plane/server/routes/records.js.map +1 -1
  358. package/dist/data-plane/server/routes/relationships.d.ts.map +1 -1
  359. package/dist/data-plane/server/routes/relationships.js +60 -40
  360. package/dist/data-plane/server/routes/relationships.js.map +1 -1
  361. package/dist/data-plane/server/routes/reposts.d.ts.map +1 -1
  362. package/dist/data-plane/server/routes/reposts.js +1 -2
  363. package/dist/data-plane/server/routes/reposts.js.map +1 -1
  364. package/dist/data-plane/server/routes/suggestions.d.ts.map +1 -1
  365. package/dist/data-plane/server/routes/suggestions.js.map +1 -1
  366. package/dist/data-plane/server/subscription.d.ts +3 -3
  367. package/dist/data-plane/server/subscription.d.ts.map +1 -1
  368. package/dist/data-plane/server/subscription.js +2 -2
  369. package/dist/data-plane/server/subscription.js.map +1 -1
  370. package/dist/data-plane/server/util.d.ts +1 -1
  371. package/dist/data-plane/server/util.d.ts.map +1 -1
  372. package/dist/data-plane/server/util.js +4 -4
  373. package/dist/data-plane/server/util.js.map +1 -1
  374. package/dist/error.d.ts.map +1 -1
  375. package/dist/error.js.map +1 -1
  376. package/dist/feature-gates.d.ts.map +1 -1
  377. package/dist/feature-gates.js.map +1 -1
  378. package/dist/hydration/feed.d.ts +3 -3
  379. package/dist/hydration/feed.d.ts.map +1 -1
  380. package/dist/hydration/feed.js +1 -1
  381. package/dist/hydration/feed.js.map +1 -1
  382. package/dist/hydration/graph.d.ts +11 -8
  383. package/dist/hydration/graph.d.ts.map +1 -1
  384. package/dist/hydration/graph.js +17 -19
  385. package/dist/hydration/graph.js.map +1 -1
  386. package/dist/hydration/hydrator.d.ts +7 -5
  387. package/dist/hydration/hydrator.d.ts.map +1 -1
  388. package/dist/hydration/hydrator.js +53 -21
  389. package/dist/hydration/hydrator.js.map +1 -1
  390. package/dist/hydration/label.d.ts +2 -2
  391. package/dist/hydration/label.d.ts.map +1 -1
  392. package/dist/hydration/label.js +1 -1
  393. package/dist/hydration/label.js.map +1 -1
  394. package/dist/hydration/util.d.ts.map +1 -1
  395. package/dist/hydration/util.js +2 -2
  396. package/dist/hydration/util.js.map +1 -1
  397. package/dist/image/index.d.ts +1 -1
  398. package/dist/image/index.d.ts.map +1 -1
  399. package/dist/image/server.d.ts +1 -1
  400. package/dist/image/server.d.ts.map +1 -1
  401. package/dist/image/server.js +3 -3
  402. package/dist/image/server.js.map +1 -1
  403. package/dist/image/sharp.d.ts.map +1 -1
  404. package/dist/image/sharp.js +1 -1
  405. package/dist/image/sharp.js.map +1 -1
  406. package/dist/index.d.ts +6 -6
  407. package/dist/index.d.ts.map +1 -1
  408. package/dist/index.js +22 -22
  409. package/dist/index.js.map +1 -1
  410. package/dist/lexicon/lexicons.d.ts +56 -2
  411. package/dist/lexicon/lexicons.d.ts.map +1 -1
  412. package/dist/lexicon/lexicons.js +32 -0
  413. package/dist/lexicon/lexicons.js.map +1 -1
  414. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +19 -1
  415. package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
  416. package/dist/lexicon/types/app/bsky/actor/defs.js +10 -0
  417. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  418. package/dist/lexicon/types/app/bsky/feed/postgate.d.ts +1 -0
  419. package/dist/lexicon/types/app/bsky/feed/postgate.d.ts.map +1 -1
  420. package/dist/lexicon/types/app/bsky/feed/postgate.js.map +1 -1
  421. package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts +1 -0
  422. package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts.map +1 -1
  423. package/dist/lexicon/types/app/bsky/feed/threadgate.js.map +1 -1
  424. package/dist/logger.js +2 -5
  425. package/dist/logger.js.map +1 -1
  426. package/dist/redis.js +5 -5
  427. package/dist/redis.js.map +1 -1
  428. package/dist/util/http.d.ts.map +1 -1
  429. package/dist/util/http.js.map +1 -1
  430. package/dist/util/uris.d.ts.map +1 -1
  431. package/dist/views/index.d.ts +13 -8
  432. package/dist/views/index.d.ts.map +1 -1
  433. package/dist/views/index.js +47 -27
  434. package/dist/views/index.js.map +1 -1
  435. package/dist/views/types.d.ts +3 -3
  436. package/dist/views/types.d.ts.map +1 -1
  437. package/dist/views/util.d.ts +1 -1
  438. package/dist/views/util.d.ts.map +1 -1
  439. package/dist/views/util.js +1 -1
  440. package/dist/views/util.js.map +1 -1
  441. package/package.json +20 -17
  442. package/src/api/app/bsky/actor/getProfile.ts +5 -5
  443. package/src/api/app/bsky/actor/getProfiles.ts +6 -6
  444. package/src/api/app/bsky/actor/getSuggestions.ts +10 -9
  445. package/src/api/app/bsky/actor/searchActors.ts +6 -6
  446. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +5 -5
  447. package/src/api/app/bsky/feed/getActorFeeds.ts +7 -7
  448. package/src/api/app/bsky/feed/getActorLikes.ts +9 -9
  449. package/src/api/app/bsky/feed/getAuthorFeed.ts +18 -12
  450. package/src/api/app/bsky/feed/getFeed.ts +17 -17
  451. package/src/api/app/bsky/feed/getFeedGenerator.ts +3 -3
  452. package/src/api/app/bsky/feed/getFeedGenerators.ts +4 -4
  453. package/src/api/app/bsky/feed/getLikes.ts +6 -7
  454. package/src/api/app/bsky/feed/getListFeed.ts +9 -9
  455. package/src/api/app/bsky/feed/getPostThread.ts +7 -7
  456. package/src/api/app/bsky/feed/getPosts.ts +6 -6
  457. package/src/api/app/bsky/feed/getQuotes.ts +7 -7
  458. package/src/api/app/bsky/feed/getRepostedBy.ts +5 -5
  459. package/src/api/app/bsky/feed/getSuggestedFeeds.ts +2 -2
  460. package/src/api/app/bsky/feed/getTimeline.ts +9 -9
  461. package/src/api/app/bsky/feed/searchPosts.ts +6 -6
  462. package/src/api/app/bsky/graph/getActorStarterPacks.ts +7 -7
  463. package/src/api/app/bsky/graph/getBlocks.ts +4 -4
  464. package/src/api/app/bsky/graph/getFollowers.ts +6 -6
  465. package/src/api/app/bsky/graph/getFollows.ts +6 -6
  466. package/src/api/app/bsky/graph/getKnownFollowers.ts +2 -2
  467. package/src/api/app/bsky/graph/getList.ts +10 -10
  468. package/src/api/app/bsky/graph/getListBlocks.ts +4 -4
  469. package/src/api/app/bsky/graph/getListMutes.ts +4 -4
  470. package/src/api/app/bsky/graph/getLists.ts +4 -4
  471. package/src/api/app/bsky/graph/getMutes.ts +3 -3
  472. package/src/api/app/bsky/graph/getRelationships.ts +1 -1
  473. package/src/api/app/bsky/graph/getStarterPack.ts +4 -4
  474. package/src/api/app/bsky/graph/getStarterPacks.ts +5 -5
  475. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +6 -5
  476. package/src/api/app/bsky/graph/muteActor.ts +1 -1
  477. package/src/api/app/bsky/graph/muteActorList.ts +1 -1
  478. package/src/api/app/bsky/graph/muteThread.ts +1 -1
  479. package/src/api/app/bsky/graph/searchStarterPacks.ts +7 -7
  480. package/src/api/app/bsky/graph/unmuteActor.ts +1 -1
  481. package/src/api/app/bsky/graph/unmuteActorList.ts +1 -1
  482. package/src/api/app/bsky/graph/unmuteThread.ts +1 -1
  483. package/src/api/app/bsky/labeler/getServices.ts +2 -2
  484. package/src/api/app/bsky/notification/getUnreadCount.ts +2 -2
  485. package/src/api/app/bsky/notification/listNotifications.ts +6 -6
  486. package/src/api/app/bsky/notification/putPreferences.ts +1 -1
  487. package/src/api/app/bsky/notification/registerPush.ts +1 -1
  488. package/src/api/app/bsky/notification/updateSeen.ts +3 -3
  489. package/src/api/app/bsky/unspecced/getConfig.ts +1 -1
  490. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +2 -2
  491. package/src/api/app/bsky/unspecced/getTaggedSuggestions.ts +1 -1
  492. package/src/api/app/bsky/unspecced/getTrendingTopics.ts +7 -7
  493. package/src/api/blob-dispatcher.ts +1 -2
  494. package/src/api/blob-resolver.ts +15 -13
  495. package/src/api/com/atproto/admin/getAccountInfos.ts +2 -2
  496. package/src/api/com/atproto/admin/getSubjectStatus.ts +1 -1
  497. package/src/api/com/atproto/admin/updateSubjectStatus.ts +2 -2
  498. package/src/api/com/atproto/identity/resolveHandle.ts +2 -2
  499. package/src/api/com/atproto/label/queryLabels.ts +2 -2
  500. package/src/api/com/atproto/repo/getRecord.ts +2 -2
  501. package/src/api/com/atproto/temp/fetchLabels.ts +2 -2
  502. package/src/api/health.ts +4 -4
  503. package/src/api/index.ts +21 -21
  504. package/src/api/util.ts +1 -0
  505. package/src/api/well-known.ts +4 -4
  506. package/src/auth-verifier.ts +6 -6
  507. package/src/bsync.ts +3 -3
  508. package/src/context.ts +8 -10
  509. package/src/courier.ts +3 -3
  510. package/src/data-plane/bsync/index.ts +6 -6
  511. package/src/data-plane/client.ts +1 -1
  512. package/src/data-plane/server/background.ts +1 -1
  513. package/src/data-plane/server/db/database-schema.ts +26 -28
  514. package/src/data-plane/server/db/db.ts +6 -6
  515. package/src/data-plane/server/db/util.ts +2 -2
  516. package/src/data-plane/server/index.ts +5 -5
  517. package/src/data-plane/server/indexing/index.ts +21 -21
  518. package/src/data-plane/server/indexing/plugins/block.ts +4 -4
  519. package/src/data-plane/server/indexing/plugins/chat-declaration.ts +4 -4
  520. package/src/data-plane/server/indexing/plugins/feed-generator.ts +4 -4
  521. package/src/data-plane/server/indexing/plugins/follow.ts +5 -5
  522. package/src/data-plane/server/indexing/plugins/labeler.ts +4 -4
  523. package/src/data-plane/server/indexing/plugins/like.ts +5 -5
  524. package/src/data-plane/server/indexing/plugins/list-block.ts +4 -4
  525. package/src/data-plane/server/indexing/plugins/list-item.ts +5 -5
  526. package/src/data-plane/server/indexing/plugins/list.ts +5 -5
  527. package/src/data-plane/server/indexing/plugins/post-gate.ts +5 -5
  528. package/src/data-plane/server/indexing/plugins/post.ts +18 -18
  529. package/src/data-plane/server/indexing/plugins/profile.ts +5 -5
  530. package/src/data-plane/server/indexing/plugins/repost.ts +4 -4
  531. package/src/data-plane/server/indexing/plugins/starter-pack.ts +4 -4
  532. package/src/data-plane/server/indexing/plugins/thread-gate.ts +5 -5
  533. package/src/data-plane/server/indexing/processor.ts +3 -3
  534. package/src/data-plane/server/routes/feeds.ts +1 -1
  535. package/src/data-plane/server/routes/follows.ts +2 -2
  536. package/src/data-plane/server/routes/identity.ts +2 -2
  537. package/src/data-plane/server/routes/index.ts +2 -2
  538. package/src/data-plane/server/routes/interactions.ts +14 -12
  539. package/src/data-plane/server/routes/labels.ts +2 -2
  540. package/src/data-plane/server/routes/likes.ts +2 -3
  541. package/src/data-plane/server/routes/lists.ts +3 -3
  542. package/src/data-plane/server/routes/mutes.ts +3 -3
  543. package/src/data-plane/server/routes/notifs.ts +3 -3
  544. package/src/data-plane/server/routes/posts.ts +2 -2
  545. package/src/data-plane/server/routes/profile.ts +6 -6
  546. package/src/data-plane/server/routes/quotes.ts +1 -1
  547. package/src/data-plane/server/routes/records.ts +7 -7
  548. package/src/data-plane/server/routes/relationships.ts +74 -50
  549. package/src/data-plane/server/routes/reposts.ts +2 -3
  550. package/src/data-plane/server/routes/suggestions.ts +1 -1
  551. package/src/data-plane/server/subscription.ts +3 -3
  552. package/src/data-plane/server/util.ts +2 -2
  553. package/src/error.ts +1 -1
  554. package/src/feature-gates.ts +0 -2
  555. package/src/hydration/feed.ts +9 -9
  556. package/src/hydration/graph.ts +27 -27
  557. package/src/hydration/hydrator.ts +92 -45
  558. package/src/hydration/label.ts +4 -4
  559. package/src/hydration/util.ts +2 -2
  560. package/src/image/index.ts +1 -1
  561. package/src/image/server.ts +12 -13
  562. package/src/image/sharp.ts +2 -2
  563. package/src/index.ts +23 -23
  564. package/src/lexicon/lexicons.ts +37 -0
  565. package/src/lexicon/types/app/bsky/actor/defs.ts +36 -0
  566. package/src/lexicon/types/app/bsky/feed/postgate.ts +1 -0
  567. package/src/lexicon/types/app/bsky/feed/threadgate.ts +1 -0
  568. package/src/logger.ts +1 -1
  569. package/src/redis.ts +1 -1
  570. package/src/util/http.ts +1 -1
  571. package/src/util/uris.ts +1 -1
  572. package/src/views/index.ts +77 -45
  573. package/src/views/types.ts +9 -9
  574. package/src/views/util.ts +4 -4
  575. package/tests/_util.ts +4 -5
  576. package/tests/admin/admin-auth.test.ts +2 -2
  577. package/tests/admin/moderation.test.ts +1 -1
  578. package/tests/auth.test.ts +1 -1
  579. package/tests/blob-resolver.test.ts +2 -2
  580. package/tests/data-plane/duplicate-records.test.ts +3 -3
  581. package/tests/data-plane/handle-invalidation.test.ts +2 -2
  582. package/tests/data-plane/indexing.test.ts +8 -8
  583. package/tests/data-plane/subscription.test.ts +1 -1
  584. package/tests/data-plane/thread-mutes.test.ts +1 -1
  585. package/tests/entryway-auth.test.ts +5 -5
  586. package/tests/feed-generation.test.ts +8 -8
  587. package/tests/hydration/util.test.ts +1 -1
  588. package/tests/image/server.test.ts +2 -2
  589. package/tests/image/uri.test.ts +2 -2
  590. package/tests/label-hydration.test.ts +6 -3
  591. package/tests/postgates.test.ts +2 -3
  592. package/tests/query-labels.test.ts +1 -1
  593. package/tests/seed/feed-hidden-replies.ts +1 -1
  594. package/tests/seed/known-followers.ts +1 -1
  595. package/tests/seed/postgates.ts +1 -1
  596. package/tests/server.test.ts +2 -2
  597. package/tests/views/account-deactivation.test.ts +1 -1
  598. package/tests/views/actor-likes.test.ts +1 -1
  599. package/tests/views/actor-search.test.ts +2 -2
  600. package/tests/views/author-feed.test.ts +11 -11
  601. package/tests/views/block-lists.test.ts +3 -3
  602. package/tests/views/blocks.test.ts +4 -4
  603. package/tests/views/feed-hidden-replies.test.ts +2 -3
  604. package/tests/views/feed-view-post.test.ts +2 -2
  605. package/tests/views/follows.test.ts +2 -2
  606. package/tests/views/known-followers.test.ts +2 -3
  607. package/tests/views/labeler-service.test.ts +2 -2
  608. package/tests/views/labels-needs-review.test.ts +2 -2
  609. package/tests/views/labels-takedown.test.ts +30 -1
  610. package/tests/views/likes.test.ts +2 -2
  611. package/tests/views/list-feed.test.ts +2 -2
  612. package/tests/views/lists.test.ts +2 -2
  613. package/tests/views/mute-lists.test.ts +3 -3
  614. package/tests/views/mutes.test.ts +2 -2
  615. package/tests/views/notifications.test.ts +3 -3
  616. package/tests/views/posts.test.ts +3 -3
  617. package/tests/views/profile.test.ts +3 -3
  618. package/tests/views/quotes.test.ts +2 -2
  619. package/tests/views/reposts.test.ts +2 -2
  620. package/tests/views/starter-packs.test.ts +3 -3
  621. package/tests/views/suggested-follows.test.ts +2 -2
  622. package/tests/views/suggestions.test.ts +2 -2
  623. package/tests/views/thread.test.ts +2 -2
  624. package/tests/views/threadgating.test.ts +3 -3
  625. package/tests/views/timeline.test.ts +5 -5
@@ -1,6 +1,7 @@
1
1
  import { ConnectRouter } from '@connectrpc/connect'
2
2
  import { IdResolver } from '@atproto/identity'
3
3
  import { Service } from '../../../proto/bsky_connect'
4
+ import { Database } from '../db'
4
5
  import blocks from './blocks'
5
6
  import feedGens from './feed-gens'
6
7
  import feeds from './feeds'
@@ -20,11 +21,10 @@ import records from './records'
20
21
  import relationships from './relationships'
21
22
  import reposts from './reposts'
22
23
  import search from './search'
24
+ import starterPacks from './starter-packs'
23
25
  import suggestions from './suggestions'
24
26
  import sync from './sync'
25
27
  import threads from './threads'
26
- import starterPacks from './starter-packs'
27
- import { Database } from '../db'
28
28
 
29
29
  export default (db: Database, idResolver: IdResolver) =>
30
30
  (router: ConnectRouter) =>
@@ -1,5 +1,5 @@
1
- import { DAY, keyBy } from '@atproto/common'
2
1
  import { ServiceImpl } from '@connectrpc/connect'
2
+ import { DAY, keyBy } from '@atproto/common'
3
3
  import { Service } from '../../../proto/bsky_connect'
4
4
  import { Database } from '../db'
5
5
  import { countAll } from '../db/util'
@@ -17,10 +17,10 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
17
17
  .execute()
18
18
  const byUri = keyBy(res, 'uri')
19
19
  return {
20
- likes: uris.map((uri) => byUri[uri]?.likeCount ?? 0),
21
- replies: uris.map((uri) => byUri[uri]?.replyCount ?? 0),
22
- reposts: uris.map((uri) => byUri[uri]?.repostCount ?? 0),
23
- quotes: uris.map((uri) => byUri[uri]?.quoteCount ?? 0),
20
+ likes: uris.map((uri) => byUri.get(uri)?.likeCount ?? 0),
21
+ replies: uris.map((uri) => byUri.get(uri)?.replyCount ?? 0),
22
+ reposts: uris.map((uri) => byUri.get(uri)?.repostCount ?? 0),
23
+ quotes: uris.map((uri) => byUri.get(uri)?.quoteCount ?? 0),
24
24
  }
25
25
  },
26
26
  async getCountsForUsers(req) {
@@ -52,12 +52,14 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
52
52
  .execute()
53
53
  const byDid = keyBy(res, 'did')
54
54
  return {
55
- followers: req.dids.map((uri) => byDid[uri]?.followersCount ?? 0),
56
- following: req.dids.map((uri) => byDid[uri]?.followsCount ?? 0),
57
- posts: req.dids.map((uri) => byDid[uri]?.postsCount ?? 0),
58
- lists: req.dids.map((uri) => byDid[uri]?.listsCount ?? 0),
59
- feeds: req.dids.map((uri) => byDid[uri]?.feedGensCount ?? 0),
60
- starterPacks: req.dids.map((uri) => byDid[uri]?.starterPacksCount ?? 0),
55
+ followers: req.dids.map((uri) => byDid.get(uri)?.followersCount ?? 0),
56
+ following: req.dids.map((uri) => byDid.get(uri)?.followsCount ?? 0),
57
+ posts: req.dids.map((uri) => byDid.get(uri)?.postsCount ?? 0),
58
+ lists: req.dids.map((uri) => byDid.get(uri)?.listsCount ?? 0),
59
+ feeds: req.dids.map((uri) => byDid.get(uri)?.feedGensCount ?? 0),
60
+ starterPacks: req.dids.map(
61
+ (uri) => byDid.get(uri)?.starterPacksCount ?? 0,
62
+ ),
61
63
  }
62
64
  },
63
65
  async getStarterPackCounts(req) {
@@ -105,7 +107,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
105
107
  .execute()
106
108
  const countsByUri = keyBy(countsListItems, 'uri')
107
109
  return {
108
- listItems: uris.map((uri) => countsByUri[uri]?.count ?? 0),
110
+ listItems: uris.map((uri) => countsByUri.get(uri)?.count ?? 0),
109
111
  }
110
112
  },
111
113
  })
@@ -1,9 +1,9 @@
1
+ import { ServiceImpl } from '@connectrpc/connect'
2
+ import { Selectable } from 'kysely'
1
3
  import * as ui8 from 'uint8arrays'
2
4
  import { noUndefinedVals } from '@atproto/common'
3
- import { ServiceImpl } from '@connectrpc/connect'
4
5
  import { Service } from '../../../proto/bsky_connect'
5
6
  import { Database } from '../db'
6
- import { Selectable } from 'kysely'
7
7
  import { Label } from '../db/tables/label'
8
8
 
9
9
  type LabelRow = Selectable<Label>
@@ -1,6 +1,6 @@
1
1
  import assert from 'node:assert'
2
- import { keyBy } from '@atproto/common'
3
2
  import { ServiceImpl } from '@connectrpc/connect'
3
+ import { keyBy } from '@atproto/common'
4
4
  import { Service } from '../../../proto/bsky_connect'
5
5
  import { Database } from '../db'
6
6
  import { TimeCidKeyset, paginate } from '../db/pagination'
@@ -58,8 +58,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
58
58
  .selectAll()
59
59
  .execute()
60
60
  const bySubject = keyBy(res, 'subject')
61
- // @TODO handling undefineds properly, or do we need to turn them into empty strings?
62
- const uris = refs.map(({ uri }) => bySubject[uri]?.uri)
61
+ const uris = refs.map(({ uri }) => bySubject.get(uri)?.uri ?? '')
63
62
  return { uris }
64
63
  },
65
64
 
@@ -1,9 +1,9 @@
1
- import { keyBy } from '@atproto/common'
2
1
  import { ServiceImpl } from '@connectrpc/connect'
2
+ import { keyBy } from '@atproto/common'
3
3
  import { Service } from '../../../proto/bsky_connect'
4
4
  import { Database } from '../db'
5
- import { countAll } from '../db/util'
6
5
  import { TimeCidKeyset, paginate } from '../db/pagination'
6
+ import { countAll } from '../db/util'
7
7
 
8
8
  export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
9
9
  async getActorLists(req) {
@@ -69,7 +69,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
69
69
  .selectAll()
70
70
  .execute()
71
71
  const byListUri = keyBy(res, 'listUri')
72
- const listitemUris = listUris.map((uri) => byListUri[uri]?.uri ?? '')
72
+ const listitemUris = listUris.map((uri) => byListUri.get(uri)?.uri ?? '')
73
73
  return {
74
74
  listitemUris,
75
75
  }
@@ -1,11 +1,11 @@
1
- import assert from 'assert'
1
+ import assert from 'node:assert'
2
2
  import { ServiceImpl } from '@connectrpc/connect'
3
+ import { keyBy } from '@atproto/common'
3
4
  import { AtUri } from '@atproto/syntax'
4
5
  import { ids } from '../../../lexicon/lexicons'
5
6
  import { Service } from '../../../proto/bsky_connect'
6
7
  import { Database } from '../db'
7
8
  import { CreatedAtDidKeyset, TimeCidKeyset, paginate } from '../db/pagination'
8
- import { keyBy } from '@atproto/common'
9
9
 
10
10
  export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
11
11
  async getActorMutesActor(req) {
@@ -180,7 +180,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
180
180
  .where('rootUri', 'in', threadRoots)
181
181
  .execute()
182
182
  const byRootUri = keyBy(res, 'rootUri')
183
- const muted = threadRoots.map((uri) => !!byRootUri[uri])
183
+ const muted = threadRoots.map((uri) => !!byRootUri.get(uri))
184
184
  return { muted }
185
185
  },
186
186
  })
@@ -1,10 +1,10 @@
1
- import { sql } from 'kysely'
2
- import { ServiceImpl } from '@connectrpc/connect'
3
1
  import { Timestamp } from '@bufbuild/protobuf'
2
+ import { ServiceImpl } from '@connectrpc/connect'
3
+ import { sql } from 'kysely'
4
4
  import { Service } from '../../../proto/bsky_connect'
5
5
  import { Database } from '../db'
6
- import { countAll, notSoftDeletedClause } from '../db/util'
7
6
  import { TimeCidKeyset, paginate } from '../db/pagination'
7
+ import { countAll, notSoftDeletedClause } from '../db/util'
8
8
 
9
9
  export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
10
10
  async getNotifications(req) {
@@ -1,6 +1,6 @@
1
1
  import { ServiceImpl } from '@connectrpc/connect'
2
- import { Service } from '../../../proto/bsky_connect'
3
2
  import { keyBy } from '@atproto/common'
3
+ import { Service } from '../../../proto/bsky_connect'
4
4
  import { Database } from '../db'
5
5
 
6
6
  export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
@@ -15,7 +15,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
15
15
  .where('uri', 'in', uris)
16
16
  .execute()
17
17
  const byUri = keyBy(res, 'uri')
18
- const counts = uris.map((uri) => byUri[uri]?.replyCount ?? 0)
18
+ const counts = uris.map((uri) => byUri.get(uri)?.replyCount ?? 0)
19
19
  return { counts }
20
20
  },
21
21
  })
@@ -1,10 +1,10 @@
1
1
  import { ServiceImpl } from '@connectrpc/connect'
2
- import { Service } from '../../../proto/bsky_connect'
3
- import { keyBy } from '@atproto/common'
4
- import { getRecords } from './records'
5
- import { Database } from '../db'
6
2
  import { sql } from 'kysely'
3
+ import { keyBy } from '@atproto/common'
7
4
  import { parseRecordBytes } from '../../../hydration/util'
5
+ import { Service } from '../../../proto/bsky_connect'
6
+ import { Database } from '../db'
7
+ import { getRecords } from './records'
8
8
 
9
9
  export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
10
10
  async getActors(req) {
@@ -39,7 +39,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
39
39
  ])
40
40
  const byDid = keyBy(handlesRes, 'did')
41
41
  const actors = dids.map((did, i) => {
42
- const row = byDid[did]
42
+ const row = byDid.get(did)
43
43
  const chatDeclaration = parseRecordBytes(
44
44
  chatDeclarations.records[i].record,
45
45
  )
@@ -74,7 +74,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
74
74
  .selectAll()
75
75
  .execute()
76
76
  const byHandle = keyBy(res, 'handle')
77
- const dids = handles.map((handle) => byHandle[handle]?.did ?? '')
77
+ const dids = handles.map((handle) => byHandle.get(handle)?.did ?? '')
78
78
  return { dids }
79
79
  },
80
80
 
@@ -1,7 +1,7 @@
1
1
  import { ServiceImpl } from '@connectrpc/connect'
2
2
  import { Service } from '../../../proto/bsky_connect'
3
3
  import { Database } from '../db'
4
- import { paginate, TimeCidKeyset } from '../db/pagination'
4
+ import { TimeCidKeyset, paginate } from '../db/pagination'
5
5
 
6
6
  export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
7
7
  async getQuotesBySubjectSorted(req) {
@@ -1,8 +1,8 @@
1
- import { keyBy } from '@atproto/common'
2
- import { AtUri } from '@atproto/syntax'
3
1
  import { Timestamp } from '@bufbuild/protobuf'
4
2
  import { ServiceImpl } from '@connectrpc/connect'
5
3
  import * as ui8 from 'uint8arrays'
4
+ import { keyBy } from '@atproto/common'
5
+ import { AtUri } from '@atproto/syntax'
6
6
  import { ids } from '../../../lexicon/lexicons'
7
7
  import { Service } from '../../../proto/bsky_connect'
8
8
  import { PostRecordMeta, Record } from '../../../proto/bsky_pb'
@@ -41,7 +41,7 @@ export const getRecords =
41
41
  : []
42
42
  const byUri = keyBy(res, 'uri')
43
43
  const records: Record[] = req.uris.map((uri) => {
44
- const row = byUri[uri]
44
+ const row = byUri.get(uri)
45
45
  const json = row ? row.json : JSON.stringify(null)
46
46
  const createdAtRaw = new Date(JSON.parse(json)?.['createdAt'])
47
47
  const createdAt = !isNaN(createdAtRaw.getTime())
@@ -88,10 +88,10 @@ export const getPostRecords = (db: Database) => {
88
88
  const byKey = keyBy(details, 'uri')
89
89
  const meta = req.uris.map((uri) => {
90
90
  return new PostRecordMeta({
91
- violatesThreadGate: !!byKey[uri]?.violatesThreadGate,
92
- violatesEmbeddingRules: !!byKey[uri]?.violatesEmbeddingRules,
93
- hasThreadGate: !!byKey[uri]?.hasThreadGate,
94
- hasPostGate: !!byKey[uri]?.hasPostGate,
91
+ violatesThreadGate: !!byKey.get(uri)?.violatesThreadGate,
92
+ violatesEmbeddingRules: !!byKey.get(uri)?.violatesEmbeddingRules,
93
+ hasThreadGate: !!byKey.get(uri)?.hasThreadGate,
94
+ hasPostGate: !!byKey.get(uri)?.hasPostGate,
95
95
  })
96
96
  })
97
97
  return { records, meta }
@@ -1,5 +1,5 @@
1
- import { sql } from 'kysely'
2
1
  import { ServiceImpl } from '@connectrpc/connect'
2
+ import { sql } from 'kysely'
3
3
  import { keyBy } from '@atproto/common'
4
4
  import { Service } from '../../../proto/bsky_connect'
5
5
  import { Database } from '../db'
@@ -72,16 +72,16 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
72
72
  .execute()
73
73
  const byDid = keyBy(res, 'did')
74
74
  const relationships = targetDids.map((did) => {
75
- const row = byDid[did] ?? {}
75
+ const row = byDid.get(did)
76
76
  return {
77
- muted: row.muted ?? false,
78
- mutedByList: row.mutedByList ?? '',
79
- blockedBy: row.blockedBy ?? '',
80
- blocking: row.blocking ?? '',
81
- blockedByList: row.blockedByList ?? '',
82
- blockingByList: row.blockingByList ?? '',
83
- following: row.following ?? '',
84
- followedBy: row.followedBy ?? '',
77
+ muted: row?.muted ?? false,
78
+ mutedByList: row?.mutedByList ?? '',
79
+ blockedBy: row?.blockedBy ?? '',
80
+ blocking: row?.blocking ?? '',
81
+ blockedByList: row?.blockedByList ?? '',
82
+ blockingByList: row?.blockingByList ?? '',
83
+ following: row?.following ?? '',
84
+ followedBy: row?.followedBy ?? '',
85
85
  }
86
86
  })
87
87
  return { relationships }
@@ -90,7 +90,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
90
90
  async getBlockExistence(req) {
91
91
  const { pairs } = req
92
92
  if (pairs.length === 0) {
93
- return { exists: [] }
93
+ return { exists: [], blocks: [] }
94
94
  }
95
95
  const { ref } = db.db.dynamic
96
96
  const sourceRef = ref('pair.source')
@@ -101,48 +101,72 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
101
101
  .select([
102
102
  sql<string>`${sourceRef}`.as('source'),
103
103
  sql<string>`${targetRef}`.as('target'),
104
+ (eb) =>
105
+ eb
106
+ .selectFrom('actor_block')
107
+ .whereRef('actor_block.creator', '=', sourceRef)
108
+ .whereRef('actor_block.subjectDid', '=', targetRef)
109
+ .select('uri')
110
+ .as('blocking'),
111
+ (eb) =>
112
+ eb
113
+ .selectFrom('actor_block')
114
+ .whereRef('actor_block.creator', '=', targetRef)
115
+ .whereRef('actor_block.subjectDid', '=', sourceRef)
116
+ .select('uri')
117
+ .as('blockedBy'),
118
+ (eb) =>
119
+ eb
120
+ .selectFrom('list_item')
121
+ .innerJoin(
122
+ 'list_block',
123
+ 'list_block.subjectUri',
124
+ 'list_item.listUri',
125
+ )
126
+ .whereRef('list_block.creator', '=', sourceRef)
127
+ .whereRef('list_item.subjectDid', '=', targetRef)
128
+ .select('list_item.listUri')
129
+ .as('blockingByList'),
130
+ (eb) =>
131
+ eb
132
+ .selectFrom('list_item')
133
+ .innerJoin(
134
+ 'list_block',
135
+ 'list_block.subjectUri',
136
+ 'list_item.listUri',
137
+ )
138
+ .whereRef('list_block.creator', '=', targetRef)
139
+ .whereRef('list_item.subjectDid', '=', sourceRef)
140
+ .select('list_item.listUri')
141
+ .as('blockedByList'),
104
142
  ])
105
- .whereExists((qb) =>
106
- qb
107
- .selectFrom('actor_block')
108
- .whereRef('actor_block.creator', '=', sourceRef)
109
- .whereRef('actor_block.subjectDid', '=', targetRef)
110
- .select('uri'),
111
- )
112
- .orWhereExists((qb) =>
113
- qb
114
- .selectFrom('actor_block')
115
- .whereRef('actor_block.creator', '=', targetRef)
116
- .whereRef('actor_block.subjectDid', '=', sourceRef)
117
- .select('uri'),
118
- )
119
- .orWhereExists((qb) =>
120
- qb
121
- .selectFrom('list_item')
122
- .innerJoin('list_block', 'list_block.subjectUri', 'list_item.listUri')
123
- .whereRef('list_block.creator', '=', sourceRef)
124
- .whereRef('list_item.subjectDid', '=', targetRef)
125
- .select('list_item.listUri'),
126
- )
127
- .orWhereExists((qb) =>
128
- qb
129
- .selectFrom('list_item')
130
- .innerJoin('list_block', 'list_block.subjectUri', 'list_item.listUri')
131
- .whereRef('list_block.creator', '=', targetRef)
132
- .whereRef('list_item.subjectDid', '=', sourceRef)
133
- .select('list_item.listUri'),
134
- )
135
143
  .execute()
136
- const existMap = res.reduce((acc, cur) => {
137
- const key = [cur.source, cur.target].sort().join(',')
138
- return acc.set(key, true)
139
- }, new Map<string, boolean>())
140
- const exists = pairs.map((pair) => {
141
- const key = [pair.a, pair.b].sort().join(',')
142
- return existMap.get(key) === true
143
- })
144
+ const getKey = (a, b) => [a, b].sort().join(',')
145
+ const lookup = res.reduce((acc, cur) => {
146
+ const key = getKey(cur.source, cur.target)
147
+ return acc.set(key, cur)
148
+ }, new Map<string, (typeof res)[0]>())
144
149
  return {
145
- exists,
150
+ exists: pairs.map((pair) => {
151
+ const item = lookup.get(getKey(pair.a, pair.b))
152
+ if (!item) return false
153
+ return !!(
154
+ item.blocking ||
155
+ item.blockedBy ||
156
+ item.blockingByList ||
157
+ item.blockedByList
158
+ )
159
+ }),
160
+ blocks: pairs.map((pair) => {
161
+ const item = lookup.get(getKey(pair.a, pair.b))
162
+ if (!item) return {}
163
+ return {
164
+ blockedBy: item.blockedBy || undefined,
165
+ blocking: item.blocking || undefined,
166
+ blockedByList: item.blockedByList || undefined,
167
+ blockingByList: item.blockingByList || undefined,
168
+ }
169
+ }),
146
170
  }
147
171
  },
148
172
  })
@@ -1,5 +1,5 @@
1
- import { keyBy } from '@atproto/common'
2
1
  import { ServiceImpl } from '@connectrpc/connect'
2
+ import { keyBy } from '@atproto/common'
3
3
  import { Service } from '../../../proto/bsky_connect'
4
4
  import { Database } from '../db'
5
5
  import { TimeCidKeyset, paginate } from '../db/pagination'
@@ -45,8 +45,7 @@ export default (db: Database): Partial<ServiceImpl<typeof Service>> => ({
45
45
  .selectAll()
46
46
  .execute()
47
47
  const bySubject = keyBy(res, 'subject')
48
- // @TODO handling undefineds properly, or do we need to turn them into empty strings?
49
- const uris = refs.map(({ uri }) => bySubject[uri]?.uri)
48
+ const uris = refs.map(({ uri }) => bySubject.get(uri)?.uri ?? '')
50
49
  return { uris }
51
50
  },
52
51
 
@@ -1,5 +1,5 @@
1
- import { sql } from 'kysely'
2
1
  import { ServiceImpl } from '@connectrpc/connect'
2
+ import { sql } from 'kysely'
3
3
  import { Service } from '../../../proto/bsky_connect'
4
4
  import { Database } from '../db'
5
5
 
@@ -1,10 +1,10 @@
1
- import { Firehose, MemoryRunner } from '@atproto/sync'
2
1
  import { IdResolver } from '@atproto/identity'
3
2
  import { WriteOpAction } from '@atproto/repo'
3
+ import { Firehose, MemoryRunner } from '@atproto/sync'
4
4
  import { subLogger as log } from '../../logger'
5
- import { IndexingService } from './indexing'
6
- import { Database } from './db'
7
5
  import { BackgroundQueue } from './background'
6
+ import { Database } from './db'
7
+ import { IndexingService } from './indexing'
8
8
 
9
9
  export class RepoSubscription {
10
10
  firehose: Firehose
@@ -4,9 +4,9 @@ import {
4
4
  ReplyRef,
5
5
  } from '../../lexicon/types/app/bsky/feed/post'
6
6
  import { Record as GateRecord } from '../../lexicon/types/app/bsky/feed/threadgate'
7
- import DatabaseSchema from './db/database-schema'
8
- import { valuesList } from './db/util'
9
7
  import { parseThreadGate } from '../../views/util'
8
+ import { DatabaseSchema } from './db/database-schema'
9
+ import { valuesList } from './db/util'
10
10
 
11
11
  export const getDescendentsQb = (
12
12
  db: DatabaseSchema,
package/src/error.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { XRPCError } from '@atproto/xrpc-server'
2
1
  import { ErrorRequestHandler } from 'express'
2
+ import { XRPCError } from '@atproto/xrpc-server'
3
3
  import { httpLogger as log } from './logger'
4
4
 
5
5
  export const handler: ErrorRequestHandler = (err, _req, res, next) => {
@@ -1,8 +1,6 @@
1
1
  import Statsig, { StatsigUser } from 'statsig-node'
2
2
  import { sha256Hex } from '@atproto/crypto'
3
-
4
3
  import { featureGatesLogger } from './logger'
5
- import type { ServerConfig } from './config'
6
4
 
7
5
  export type Config = {
8
6
  apiKey?: string
@@ -1,10 +1,16 @@
1
+ import { dedupeStrs } from '@atproto/common'
1
2
  import { DataPlaneClient } from '../data-plane/client'
2
- import { Record as PostRecord } from '../lexicon/types/app/bsky/feed/post'
3
+ import { Record as FeedGenRecord } from '../lexicon/types/app/bsky/feed/generator'
3
4
  import { Record as LikeRecord } from '../lexicon/types/app/bsky/feed/like'
5
+ import { Record as PostRecord } from '../lexicon/types/app/bsky/feed/post'
6
+ import { Record as PostgateRecord } from '../lexicon/types/app/bsky/feed/postgate'
4
7
  import { Record as RepostRecord } from '../lexicon/types/app/bsky/feed/repost'
5
- import { Record as FeedGenRecord } from '../lexicon/types/app/bsky/feed/generator'
6
8
  import { Record as ThreadgateRecord } from '../lexicon/types/app/bsky/feed/threadgate'
7
- import { Record as PostgateRecord } from '../lexicon/types/app/bsky/feed/postgate'
9
+ import {
10
+ postUriToPostgateUri,
11
+ postUriToThreadgateUri,
12
+ uriToDid as didFromUri,
13
+ } from '../util/uris'
8
14
  import {
9
15
  HydrationMap,
10
16
  ItemRef,
@@ -13,12 +19,6 @@ import {
13
19
  parseString,
14
20
  split,
15
21
  } from './util'
16
- import { dedupeStrs } from '@atproto/common'
17
- import {
18
- postUriToThreadgateUri,
19
- postUriToPostgateUri,
20
- uriToDid as didFromUri,
21
- } from '../util/uris'
22
22
 
23
23
  export type Post = RecordInfo<PostRecord> & {
24
24
  violatesThreadGate: boolean
@@ -1,11 +1,11 @@
1
- import { Record as FollowRecord } from '../lexicon/types/app/bsky/graph/follow'
1
+ import { DataPlaneClient } from '../data-plane/client'
2
2
  import { Record as BlockRecord } from '../lexicon/types/app/bsky/graph/block'
3
- import { Record as StarterPackRecord } from '../lexicon/types/app/bsky/graph/starterpack'
3
+ import { Record as FollowRecord } from '../lexicon/types/app/bsky/graph/follow'
4
4
  import { Record as ListRecord } from '../lexicon/types/app/bsky/graph/list'
5
5
  import { Record as ListItemRecord } from '../lexicon/types/app/bsky/graph/listitem'
6
- import { DataPlaneClient } from '../data-plane/client'
7
- import { HydrationMap, ItemRef, RecordInfo, parseRecord } from './util'
6
+ import { Record as StarterPackRecord } from '../lexicon/types/app/bsky/graph/starterpack'
8
7
  import { FollowInfo } from '../proto/bsky_pb'
8
+ import { HydrationMap, ItemRef, RecordInfo, parseRecord } from './util'
9
9
 
10
10
  export type List = RecordInfo<ListRecord>
11
11
  export type Lists = HydrationMap<List>
@@ -46,50 +46,46 @@ export type ListAggs = HydrationMap<ListAgg>
46
46
  export type RelationshipPair = [didA: string, didB: string]
47
47
 
48
48
  const dedupePairs = (pairs: RelationshipPair[]): RelationshipPair[] => {
49
- const mapped = pairs.reduce(
50
- (acc, cur) => {
51
- const sorted = ([...cur] as RelationshipPair).sort()
52
- acc[sorted.join('-')] = sorted
53
- return acc
54
- },
55
- {} as Record<string, RelationshipPair>,
56
- )
57
- return Object.values(mapped)
49
+ const deduped = pairs.reduce((acc, pair) => {
50
+ return acc.set(Blocks.key(...pair), pair)
51
+ }, new Map<string, RelationshipPair>())
52
+ return [...deduped.values()]
58
53
  }
59
54
 
60
55
  export class Blocks {
61
- _blocks: Map<string, boolean> = new Map()
56
+ _blocks: Map<string, BlockEntry> = new Map() // did:a,did:b -> block
62
57
  constructor() {}
63
58
 
64
59
  static key(didA: string, didB: string): string {
65
60
  return [didA, didB].sort().join(',')
66
61
  }
67
62
 
68
- set(didA: string, didB: string, exists: boolean): Blocks {
63
+ set(didA: string, didB: string, block: BlockEntry): Blocks {
69
64
  const key = Blocks.key(didA, didB)
70
- this._blocks.set(key, exists)
65
+ this._blocks.set(key, block)
71
66
  return this
72
67
  }
73
68
 
74
- has(didA: string, didB: string): boolean {
75
- const key = Blocks.key(didA, didB)
76
- return this._blocks.has(key)
77
- }
78
-
79
- isBlocked(didA: string, didB: string): boolean {
80
- if (didA === didB) return false // ignore self-blocks
69
+ get(didA: string, didB: string): BlockEntry | null {
70
+ if (didA === didB) return null // ignore self-blocks
81
71
  const key = Blocks.key(didA, didB)
82
- return this._blocks.get(key) ?? false
72
+ return this._blocks.get(key) ?? null
83
73
  }
84
74
 
85
75
  merge(blocks: Blocks): Blocks {
86
- blocks._blocks.forEach((exists, key) => {
87
- this._blocks.set(key, exists)
76
+ blocks._blocks.forEach((block, key) => {
77
+ this._blocks.set(key, block)
88
78
  })
89
79
  return this
90
80
  }
91
81
  }
92
82
 
83
+ // No "blocking" vs. "blocked" directionality: only suitable for bidirectional block checks
84
+ export type BlockEntry = {
85
+ blockUri: string | undefined
86
+ blockListUri: string | undefined
87
+ }
88
+
93
89
  export class GraphHydrator {
94
90
  constructor(public dataplane: DataPlaneClient) {}
95
91
 
@@ -162,7 +158,11 @@ export class GraphHydrator {
162
158
  const blocks = new Blocks()
163
159
  for (let i = 0; i < deduped.length; i++) {
164
160
  const pair = deduped[i]
165
- blocks.set(pair.a, pair.b, res.exists[i] ?? false)
161
+ const block = res.blocks[i]
162
+ blocks.set(pair.a, pair.b, {
163
+ blockUri: block.blockedBy || block.blocking || undefined,
164
+ blockListUri: block.blockedByList || block.blockingByList || undefined,
165
+ })
166
166
  }
167
167
  return blocks
168
168
  }