@atproto/bsky 0.1.6 → 0.2.0

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 (283) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/api/app/bsky/actor/getProfile.js +1 -1
  3. package/dist/api/app/bsky/actor/getProfile.js.map +1 -1
  4. package/dist/api/app/bsky/actor/getProfiles.js +1 -1
  5. package/dist/api/app/bsky/actor/getProfiles.js.map +1 -1
  6. package/dist/api/app/bsky/actor/getSuggestions.js +2 -2
  7. package/dist/api/app/bsky/actor/getSuggestions.js.map +1 -1
  8. package/dist/api/app/bsky/embed/getEmbedExternalView.d.ts.map +1 -1
  9. package/dist/api/app/bsky/embed/getEmbedExternalView.js +132 -53
  10. package/dist/api/app/bsky/embed/getEmbedExternalView.js.map +1 -1
  11. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  12. package/dist/api/app/bsky/feed/getAuthorFeed.js +4 -2
  13. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  14. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js +2 -2
  15. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  16. package/dist/api/app/bsky/notification/constants.d.ts +4 -1
  17. package/dist/api/app/bsky/notification/constants.d.ts.map +1 -1
  18. package/dist/api/app/bsky/notification/constants.js +3 -0
  19. package/dist/api/app/bsky/notification/constants.js.map +1 -1
  20. package/dist/api/app/bsky/notification/getGroupedNotifications.js +19 -7
  21. package/dist/api/app/bsky/notification/getGroupedNotifications.js.map +1 -1
  22. package/dist/api/app/bsky/notification/grouping/spotlight.d.ts +1 -1
  23. package/dist/api/app/bsky/notification/grouping/spotlight.d.ts.map +1 -1
  24. package/dist/api/app/bsky/notification/grouping/spotlight.js +114 -80
  25. package/dist/api/app/bsky/notification/grouping/spotlight.js.map +1 -1
  26. package/dist/api/app/bsky/notification/listActivitySubscriptions.js +3 -2
  27. package/dist/api/app/bsky/notification/listActivitySubscriptions.js.map +1 -1
  28. package/dist/api/app/bsky/unspecced/getAtmosphereExploreTab.d.ts +4 -0
  29. package/dist/api/app/bsky/unspecced/getAtmosphereExploreTab.d.ts.map +1 -0
  30. package/dist/api/app/bsky/unspecced/getAtmosphereExploreTab.js +142 -0
  31. package/dist/api/app/bsky/unspecced/getAtmosphereExploreTab.js.map +1 -0
  32. package/dist/api/index.d.ts.map +1 -1
  33. package/dist/api/index.js +2 -0
  34. package/dist/api/index.js.map +1 -1
  35. package/dist/api/internal/bsky/actor/getProfiles.js +4 -1
  36. package/dist/api/internal/bsky/actor/getProfiles.js.map +1 -1
  37. package/dist/config.d.ts +4 -0
  38. package/dist/config.d.ts.map +1 -1
  39. package/dist/config.js +12 -0
  40. package/dist/config.js.map +1 -1
  41. package/dist/data-plane/server/indexing/index.d.ts +3 -1
  42. package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
  43. package/dist/data-plane/server/indexing/index.js +2 -0
  44. package/dist/data-plane/server/indexing/index.js.map +1 -1
  45. package/dist/data-plane/server/indexing/plugins/profile-link.d.ts +8 -0
  46. package/dist/data-plane/server/indexing/plugins/profile-link.d.ts.map +1 -0
  47. package/dist/data-plane/server/indexing/plugins/profile-link.js +30 -0
  48. package/dist/data-plane/server/indexing/plugins/profile-link.js.map +1 -0
  49. package/dist/data-plane/server/routes/records.d.ts.map +1 -1
  50. package/dist/data-plane/server/routes/records.js +1 -0
  51. package/dist/data-plane/server/routes/records.js.map +1 -1
  52. package/dist/hydration/actor.d.ts +4 -1
  53. package/dist/hydration/actor.d.ts.map +1 -1
  54. package/dist/hydration/actor.js +11 -0
  55. package/dist/hydration/actor.js.map +1 -1
  56. package/dist/hydration/external.d.ts +74 -70
  57. package/dist/hydration/external.d.ts.map +1 -1
  58. package/dist/hydration/external.js +79 -133
  59. package/dist/hydration/external.js.map +1 -1
  60. package/dist/hydration/hydrator.d.ts +57 -14
  61. package/dist/hydration/hydrator.d.ts.map +1 -1
  62. package/dist/hydration/hydrator.js +417 -105
  63. package/dist/hydration/hydrator.js.map +1 -1
  64. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +24 -0
  65. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  66. package/dist/lexicons/app/bsky/actor/defs.defs.js +13 -0
  67. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  68. package/dist/lexicons/app/bsky/actor/link.d.ts +3 -0
  69. package/dist/lexicons/app/bsky/actor/link.d.ts.map +1 -0
  70. package/dist/lexicons/app/bsky/actor/link.defs.d.ts +105 -0
  71. package/dist/lexicons/app/bsky/actor/link.defs.d.ts.map +1 -0
  72. package/dist/lexicons/app/bsky/actor/link.defs.js +34 -0
  73. package/dist/lexicons/app/bsky/actor/link.defs.js.map +1 -0
  74. package/dist/lexicons/app/bsky/actor/link.js +6 -0
  75. package/dist/lexicons/app/bsky/actor/link.js.map +1 -0
  76. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts +14 -0
  77. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
  78. package/dist/lexicons/app/bsky/actor/profile.defs.js +3 -0
  79. package/dist/lexicons/app/bsky/actor/profile.defs.js.map +1 -1
  80. package/dist/lexicons/app/bsky/actor.d.ts +1 -0
  81. package/dist/lexicons/app/bsky/actor.d.ts.map +1 -1
  82. package/dist/lexicons/app/bsky/actor.js +1 -0
  83. package/dist/lexicons/app/bsky/actor.js.map +1 -1
  84. package/dist/lexicons/app/bsky/authFullApp.defs.d.ts.map +1 -1
  85. package/dist/lexicons/app/bsky/authFullApp.defs.js +1 -0
  86. package/dist/lexicons/app/bsky/authFullApp.defs.js.map +1 -1
  87. package/dist/lexicons/app/bsky/authManageProfile.defs.d.ts.map +1 -1
  88. package/dist/lexicons/app/bsky/authManageProfile.defs.js +1 -0
  89. package/dist/lexicons/app/bsky/authManageProfile.defs.js.map +1 -1
  90. package/dist/lexicons/app/bsky/embed/external.defs.d.ts +130 -0
  91. package/dist/lexicons/app/bsky/embed/external.defs.d.ts.map +1 -1
  92. package/dist/lexicons/app/bsky/embed/external.defs.js +135 -0
  93. package/dist/lexicons/app/bsky/embed/external.defs.js.map +1 -1
  94. package/dist/lexicons/app/bsky/embed/getEmbedExternalView.defs.d.ts +15 -3
  95. package/dist/lexicons/app/bsky/embed/getEmbedExternalView.defs.d.ts.map +1 -1
  96. package/dist/lexicons/app/bsky/embed/getEmbedExternalView.defs.js +18 -3
  97. package/dist/lexicons/app/bsky/embed/getEmbedExternalView.defs.js.map +1 -1
  98. package/dist/lexicons/app/bsky/notification/getGroupedNotifications.defs.d.ts +62 -3
  99. package/dist/lexicons/app/bsky/notification/getGroupedNotifications.defs.d.ts.map +1 -1
  100. package/dist/lexicons/app/bsky/notification/getGroupedNotifications.defs.js +53 -2
  101. package/dist/lexicons/app/bsky/notification/getGroupedNotifications.defs.js.map +1 -1
  102. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.d.ts +3 -0
  103. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.d.ts.map +1 -0
  104. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.defs.d.ts +103 -0
  105. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.defs.d.ts.map +1 -0
  106. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.defs.js +95 -0
  107. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.defs.js.map +1 -0
  108. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.js +6 -0
  109. package/dist/lexicons/app/bsky/unspecced/getAtmosphereExploreTab.js.map +1 -0
  110. package/dist/lexicons/app/bsky/unspecced.d.ts +1 -0
  111. package/dist/lexicons/app/bsky/unspecced.d.ts.map +1 -1
  112. package/dist/lexicons/app/bsky/unspecced.js +1 -0
  113. package/dist/lexicons/app/bsky/unspecced.js.map +1 -1
  114. package/dist/lexicons/index.d.ts +2 -0
  115. package/dist/lexicons/index.d.ts.map +1 -1
  116. package/dist/lexicons/index.js +2 -0
  117. package/dist/lexicons/index.js.map +1 -1
  118. package/dist/lexicons/place/stream/badge/defs.d.ts +2 -0
  119. package/dist/lexicons/place/stream/badge/defs.d.ts.map +1 -0
  120. package/dist/lexicons/place/stream/badge/defs.defs.d.ts +131 -0
  121. package/dist/lexicons/place/stream/badge/defs.defs.d.ts.map +1 -0
  122. package/dist/lexicons/place/stream/badge/defs.defs.js +73 -0
  123. package/dist/lexicons/place/stream/badge/defs.defs.js.map +1 -0
  124. package/dist/lexicons/place/stream/badge/defs.js +5 -0
  125. package/dist/lexicons/place/stream/badge/defs.js.map +1 -0
  126. package/dist/lexicons/place/stream/badge.d.ts +2 -0
  127. package/dist/lexicons/place/stream/badge.d.ts.map +1 -0
  128. package/dist/lexicons/place/stream/badge.js +5 -0
  129. package/dist/lexicons/place/stream/badge.js.map +1 -0
  130. package/dist/lexicons/place/stream/chat/defs.d.ts +2 -0
  131. package/dist/lexicons/place/stream/chat/defs.d.ts.map +1 -0
  132. package/dist/lexicons/place/stream/chat/defs.defs.d.ts +44 -0
  133. package/dist/lexicons/place/stream/chat/defs.defs.d.ts.map +1 -0
  134. package/dist/lexicons/place/stream/chat/defs.defs.js +41 -0
  135. package/dist/lexicons/place/stream/chat/defs.defs.js.map +1 -0
  136. package/dist/lexicons/place/stream/chat/defs.js +5 -0
  137. package/dist/lexicons/place/stream/chat/defs.js.map +1 -0
  138. package/dist/lexicons/place/stream/chat/pinnedRecord.d.ts +3 -0
  139. package/dist/lexicons/place/stream/chat/pinnedRecord.d.ts.map +1 -0
  140. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.d.ts +108 -0
  141. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.d.ts.map +1 -0
  142. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.js +31 -0
  143. package/dist/lexicons/place/stream/chat/pinnedRecord.defs.js.map +1 -0
  144. package/dist/lexicons/place/stream/chat/pinnedRecord.js +6 -0
  145. package/dist/lexicons/place/stream/chat/pinnedRecord.js.map +1 -0
  146. package/dist/lexicons/place/stream/chat/profile.d.ts +3 -0
  147. package/dist/lexicons/place/stream/chat/profile.d.ts.map +1 -0
  148. package/dist/lexicons/place/stream/chat/profile.defs.d.ts +143 -0
  149. package/dist/lexicons/place/stream/chat/profile.defs.d.ts.map +1 -0
  150. package/dist/lexicons/place/stream/chat/profile.defs.js +62 -0
  151. package/dist/lexicons/place/stream/chat/profile.defs.js.map +1 -0
  152. package/dist/lexicons/place/stream/chat/profile.js +6 -0
  153. package/dist/lexicons/place/stream/chat/profile.js.map +1 -0
  154. package/dist/lexicons/place/stream/chat.d.ts +4 -0
  155. package/dist/lexicons/place/stream/chat.d.ts.map +1 -0
  156. package/dist/lexicons/place/stream/chat.js +7 -0
  157. package/dist/lexicons/place/stream/chat.js.map +1 -0
  158. package/dist/lexicons/place/stream/defs.d.ts +2 -0
  159. package/dist/lexicons/place/stream/defs.d.ts.map +1 -0
  160. package/dist/lexicons/place/stream/defs.defs.d.ts +54 -0
  161. package/dist/lexicons/place/stream/defs.defs.d.ts.map +1 -0
  162. package/dist/lexicons/place/stream/defs.defs.js +40 -0
  163. package/dist/lexicons/place/stream/defs.defs.js.map +1 -0
  164. package/dist/lexicons/place/stream/defs.js +5 -0
  165. package/dist/lexicons/place/stream/defs.js.map +1 -0
  166. package/dist/lexicons/place/stream/livestream.d.ts +3 -0
  167. package/dist/lexicons/place/stream/livestream.d.ts.map +1 -0
  168. package/dist/lexicons/place/stream/livestream.defs.d.ts +312 -0
  169. package/dist/lexicons/place/stream/livestream.defs.d.ts.map +1 -0
  170. package/dist/lexicons/place/stream/livestream.defs.js +105 -0
  171. package/dist/lexicons/place/stream/livestream.defs.js.map +1 -0
  172. package/dist/lexicons/place/stream/livestream.js +6 -0
  173. package/dist/lexicons/place/stream/livestream.js.map +1 -0
  174. package/dist/lexicons/place/stream.d.ts +5 -0
  175. package/dist/lexicons/place/stream.d.ts.map +1 -0
  176. package/dist/lexicons/place/stream.js +8 -0
  177. package/dist/lexicons/place/stream.js.map +1 -0
  178. package/dist/lexicons/place.d.ts +2 -0
  179. package/dist/lexicons/place.d.ts.map +1 -0
  180. package/dist/lexicons/place.js +5 -0
  181. package/dist/lexicons/place.js.map +1 -0
  182. package/dist/lexicons/site/standard/document.defs.d.ts +127 -127
  183. package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
  184. package/dist/lexicons/site/standard/document.defs.js +28 -28
  185. package/dist/lexicons/site/standard/document.defs.js.map +1 -1
  186. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts +11 -11
  187. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
  188. package/dist/lexicons/site/standard/graph/recommend.defs.js +1 -1
  189. package/dist/lexicons/site/standard/graph/recommend.defs.js.map +1 -1
  190. package/dist/lexicons/site/standard/publication.defs.d.ts +52 -52
  191. package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
  192. package/dist/lexicons/site/standard/publication.defs.js +6 -6
  193. package/dist/lexicons/site/standard/publication.defs.js.map +1 -1
  194. package/dist/lexicons/site/standard/theme/basic.defs.d.ts +14 -14
  195. package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
  196. package/dist/lexicons/site/standard/theme/basic.defs.js +1 -1
  197. package/dist/lexicons/site/standard/theme/basic.defs.js.map +1 -1
  198. package/dist/lexicons/social/grain/defs.d.ts +2 -0
  199. package/dist/lexicons/social/grain/defs.d.ts.map +1 -0
  200. package/dist/lexicons/social/grain/defs.defs.d.ts +15 -0
  201. package/dist/lexicons/social/grain/defs.defs.d.ts.map +1 -0
  202. package/dist/lexicons/social/grain/defs.defs.js +14 -0
  203. package/dist/lexicons/social/grain/defs.defs.js.map +1 -0
  204. package/dist/lexicons/social/grain/defs.js +5 -0
  205. package/dist/lexicons/social/grain/defs.js.map +1 -0
  206. package/dist/lexicons/social/grain/favorite.d.ts +3 -0
  207. package/dist/lexicons/social/grain/favorite.d.ts.map +1 -0
  208. package/dist/lexicons/social/grain/favorite.defs.d.ts +72 -0
  209. package/dist/lexicons/social/grain/favorite.defs.d.ts.map +1 -0
  210. package/dist/lexicons/social/grain/favorite.defs.js +26 -0
  211. package/dist/lexicons/social/grain/favorite.defs.js.map +1 -0
  212. package/dist/lexicons/social/grain/favorite.js +6 -0
  213. package/dist/lexicons/social/grain/favorite.js.map +1 -0
  214. package/dist/lexicons/social/grain/gallery/item.d.ts +3 -0
  215. package/dist/lexicons/social/grain/gallery/item.d.ts.map +1 -0
  216. package/dist/lexicons/social/grain/gallery/item.defs.d.ts +94 -0
  217. package/dist/lexicons/social/grain/gallery/item.defs.d.ts.map +1 -0
  218. package/dist/lexicons/social/grain/gallery/item.defs.js +29 -0
  219. package/dist/lexicons/social/grain/gallery/item.defs.js.map +1 -0
  220. package/dist/lexicons/social/grain/gallery/item.js +6 -0
  221. package/dist/lexicons/social/grain/gallery/item.js.map +1 -0
  222. package/dist/lexicons/social/grain/gallery.d.ts +4 -0
  223. package/dist/lexicons/social/grain/gallery.d.ts.map +1 -0
  224. package/dist/lexicons/social/grain/gallery.defs.d.ts +98 -0
  225. package/dist/lexicons/social/grain/gallery.defs.d.ts.map +1 -0
  226. package/dist/lexicons/social/grain/gallery.defs.js +33 -0
  227. package/dist/lexicons/social/grain/gallery.defs.js.map +1 -0
  228. package/dist/lexicons/social/grain/gallery.js +7 -0
  229. package/dist/lexicons/social/grain/gallery.js.map +1 -0
  230. package/dist/lexicons/social/grain/photo.d.ts +3 -0
  231. package/dist/lexicons/social/grain/photo.d.ts.map +1 -0
  232. package/dist/lexicons/social/grain/photo.defs.d.ts +98 -0
  233. package/dist/lexicons/social/grain/photo.defs.d.ts.map +1 -0
  234. package/dist/lexicons/social/grain/photo.defs.js +31 -0
  235. package/dist/lexicons/social/grain/photo.defs.js.map +1 -0
  236. package/dist/lexicons/social/grain/photo.js +6 -0
  237. package/dist/lexicons/social/grain/photo.js.map +1 -0
  238. package/dist/lexicons/social/grain.d.ts +5 -0
  239. package/dist/lexicons/social/grain.d.ts.map +1 -0
  240. package/dist/lexicons/social/grain.js +8 -0
  241. package/dist/lexicons/social/grain.js.map +1 -0
  242. package/dist/lexicons/social.d.ts +2 -0
  243. package/dist/lexicons/social.d.ts.map +1 -0
  244. package/dist/lexicons/social.js +5 -0
  245. package/dist/lexicons/social.js.map +1 -0
  246. package/dist/proto/bsky_connect.d.ts +10 -1
  247. package/dist/proto/bsky_connect.d.ts.map +1 -1
  248. package/dist/proto/bsky_connect.js +10 -1
  249. package/dist/proto/bsky_connect.js.map +1 -1
  250. package/dist/proto/bsky_pb.d.ts +34 -0
  251. package/dist/proto/bsky_pb.d.ts.map +1 -1
  252. package/dist/proto/bsky_pb.js +60 -0
  253. package/dist/proto/bsky_pb.js.map +1 -1
  254. package/dist/telemetry/events.d.ts +30 -0
  255. package/dist/telemetry/events.d.ts.map +1 -1
  256. package/dist/telemetry/events.js +37 -0
  257. package/dist/telemetry/events.js.map +1 -1
  258. package/dist/util/external/index.d.ts +8 -0
  259. package/dist/util/external/index.d.ts.map +1 -0
  260. package/dist/util/external/index.js +50 -0
  261. package/dist/util/external/index.js.map +1 -0
  262. package/dist/util/{standard-site.d.ts → external/standard-site.d.ts} +30 -4
  263. package/dist/util/external/standard-site.d.ts.map +1 -0
  264. package/dist/util/{standard-site.js → external/standard-site.js} +73 -4
  265. package/dist/util/external/standard-site.js.map +1 -0
  266. package/dist/views/external.d.ts +8 -0
  267. package/dist/views/external.d.ts.map +1 -0
  268. package/dist/views/external.js +260 -0
  269. package/dist/views/external.js.map +1 -0
  270. package/dist/views/index.d.ts +12 -6
  271. package/dist/views/index.d.ts.map +1 -1
  272. package/dist/views/index.js +89 -42
  273. package/dist/views/index.js.map +1 -1
  274. package/dist/views/profile-link-rules.d.ts +10 -0
  275. package/dist/views/profile-link-rules.d.ts.map +1 -0
  276. package/dist/views/profile-link-rules.js +48 -0
  277. package/dist/views/profile-link-rules.js.map +1 -0
  278. package/dist/views/types.d.ts +3 -0
  279. package/dist/views/types.d.ts.map +1 -1
  280. package/dist/views/types.js.map +1 -1
  281. package/package.json +4 -4
  282. package/dist/util/standard-site.d.ts.map +0 -1
  283. package/dist/util/standard-site.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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"}
@@ -152,6 +152,17 @@ export class ActorHydrator {
152
152
  }
153
153
  return map;
154
154
  }
155
+ async getProfileLinks(uris, includeTakedowns = false) {
156
+ const map = new HydrationMap();
157
+ if (!uris.length)
158
+ return map;
159
+ const res = await this.dataplane.getProfileLinkRecords({ uris });
160
+ for (let i = 0; i < uris.length; i++) {
161
+ const record = parseRecord(app.bsky.actor.link.main, res.records[i], includeTakedowns);
162
+ map.set(uris[i], record ?? null);
163
+ }
164
+ return map;
165
+ }
155
166
  async getNotificationDeclarations(uris, includeTakedowns = false) {
156
167
  const map = new HydrationMap();
157
168
  if (!uris.length)
@@ -1 +1 @@
1
- {"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport {\n type AtIdentifierString,\n type AtUriString,\n type DatetimeString,\n type DidString,\n type HandleString,\n isDidIdentifier,\n isHandleIdentifier,\n normalizeHandle,\n} from '@atproto/syntax'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, chat, com } from '../lexicons/index.js'\nimport type {\n ActivitySubscription,\n VerificationMeta,\n} from '../proto/bsky_pb.js'\nimport { events } from '../telemetry/events.js'\nimport type {\n ChatDeclarationRecord,\n GermDeclarationRecord,\n NotificationDeclarationRecord,\n ProfileRecord,\n StatusRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n type RecordInfo,\n isActivitySubscriptionEnabled,\n parseDate,\n parseRecord,\n parseString,\n safeTakedownRef,\n} from './util.js'\n\ntype AllowActivitySubscriptions = Extract<\n app.bsky.notification.declaration.Main['allowSubscriptions'],\n 'followers' | 'mutuals' | 'none'\n>\n\nexport type Actor = {\n did: DidString\n handle?: HandleString\n profile?: ProfileRecord\n profileCid?: string\n profileTakedownRef?: string\n sortedAt?: Date\n indexedAt?: Date\n takedownRef?: string\n isLabeler: boolean\n allowIncomingChatsFrom?: string\n allowGroupChatInvitesFrom?: string\n upstreamStatus?: string\n createdAt?: Date\n trustedVerifier?: boolean\n verifications: VerificationHydrationState[]\n status?: RecordInfo<StatusRecord>\n germ?: RecordInfo<GermDeclarationRecord>\n allowActivitySubscriptionsFrom: AllowActivitySubscriptions\n accountModerationTags: Set<string>\n profileModerationTags: Set<string>\n /**\n * Debug information for internal development\n */\n debug?: {\n pagerank?: string\n accountTags?: string[]\n profileTags?: string[]\n }\n}\n\nexport type VerificationHydrationState = {\n issuer: DidString\n uri: AtUriString\n handle: HandleString\n displayName: string\n createdAt: DatetimeString\n}\n\nexport type VerificationMetaRequired = Required<VerificationMeta>\n\nexport type Actors = HydrationMap<DidString, Actor>\n\nexport type ChatDeclaration = RecordInfo<ChatDeclarationRecord>\nexport type ChatDeclarations = HydrationMap<AtUriString, ChatDeclaration>\n\nexport type GermDeclaration = RecordInfo<GermDeclarationRecord>\nexport type GermDeclarations = HydrationMap<AtUriString, GermDeclaration>\n\nexport type NotificationDeclaration = RecordInfo<NotificationDeclarationRecord>\nexport type NotificationDeclarations = HydrationMap<\n AtUriString,\n NotificationDeclaration\n>\n\nexport type Status = RecordInfo<StatusRecord>\nexport type Statuses = HydrationMap<AtUriString, Status>\n\nexport type ProfileViewerState = {\n did: DidString\n muted?: boolean\n mutedOnlyReposts?: boolean\n mutedOnlyQuoteposts?: boolean\n mutedByList?: AtUriString\n blockedBy?: AtUriString\n blocking?: AtUriString\n blockedByList?: AtUriString\n blockingByList?: AtUriString\n following?: AtUriString\n followedBy?: AtUriString\n}\n\nexport type ProfileViewerStates = HydrationMap<\n AtIdentifierString,\n ProfileViewerState\n>\n\ntype ActivitySubscriptionState = {\n post: boolean\n reply: boolean\n}\n\nexport type ActivitySubscriptionStates = HydrationMap<\n DidString,\n ActivitySubscriptionState | undefined\n>\n\ntype KnownFollowersState = {\n count: number\n followers: DidString[]\n}\n\nexport type KnownFollowersStates = HydrationMap<\n DidString,\n KnownFollowersState | undefined\n>\n\ntype KnownLikersState = {\n count: number\n actors: DidString[]\n}\n\nexport type KnownLikersStates = HydrationMap<\n AtUriString,\n KnownLikersState | undefined\n>\n\nexport type ProfileAgg = {\n followers: number\n follows: number\n posts: number\n lists: number\n feeds: number\n starterPacks: number\n}\n\nexport type ProfileAggs = HydrationMap<DidString, ProfileAgg>\n\nexport class ActorHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getRepoRevSafe(did: string | null): Promise<string | null> {\n if (!did) return null\n try {\n const res = await this.dataplane.getLatestRev({ actorDid: did })\n return parseString(res.rev) ?? null\n } catch {\n return null\n }\n }\n\n /**\n * @note handles do not need to be normalized\n */\n async getDids(\n handleOrDids: AtIdentifierString[],\n opts?: { lookupUnidirectional?: boolean },\n ): Promise<(DidString | undefined)[]> {\n const didByHandle = new Map<HandleString, DidString>()\n\n const handles = handleOrDids.filter(isHandleIdentifier)\n if (handles.length) {\n const { dids } = await this.dataplane.getDidsByHandles({\n handles: handles.map(normalizeHandle),\n lookupUnidirectional: opts?.lookupUnidirectional,\n })\n\n for (let i = 0; i < handles.length; i++) {\n const did = parseString<DidString>(dids[i])\n if (did) didByHandle.set(handles[i], did)\n }\n }\n\n return handleOrDids.map((id) =>\n isDidIdentifier(id) ? id : didByHandle.get(id),\n )\n }\n\n async getDidsDefined(\n handleOrDids: AtIdentifierString[],\n ): Promise<DidString[]> {\n const res = await this.getDids(handleOrDids)\n return res.filter((v) => v != null)\n }\n\n async getActors(\n dids: DidString[],\n opts: {\n includeTakedowns?: boolean\n skipCacheForDids?: DidString[]\n } = {},\n ): Promise<Actors> {\n const map: Actors = new HydrationMap()\n if (!dids.length) return map\n\n const { includeTakedowns = false, skipCacheForDids } = opts\n\n const res = await this.dataplane.getActors({ dids, skipCacheForDids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const actor = res.actors[i]\n const isNoHosted =\n actor.takenDown ||\n (actor.upstreamStatus && actor.upstreamStatus !== 'active')\n if (\n !actor.exists ||\n (isNoHosted && !includeTakedowns) ||\n !!actor.tombstonedAt\n ) {\n map.set(did, null)\n continue\n }\n\n const profile = actor.profile?.record\n ? parseRecord(\n app.bsky.actor.profile.main,\n actor.profile,\n includeTakedowns,\n )\n : undefined\n\n const status = actor.statusRecord\n ? parseRecord(\n app.bsky.actor.status.main,\n actor.statusRecord,\n /*\n * Always true, we filter this out in the `Views.status()`. If we\n * ever remove that filter, we'll want to reinstate this here.\n */\n true,\n )\n : undefined\n\n const germ = actor.germRecord\n ? parseRecord(\n com.germnetwork.declaration.main,\n actor.germRecord,\n includeTakedowns,\n )\n : undefined\n\n const verifications = mapDefined(\n Object.entries(actor.verifiedBy) as [DidString, VerificationMeta][],\n ([actorDid, verificationMeta]):\n VerificationHydrationState | undefined => {\n if (\n verificationMeta.handle &&\n verificationMeta.rkey &&\n verificationMeta.sortedAt\n ) {\n return {\n issuer: actorDid,\n uri: `at://${actorDid}/app.bsky.graph.verification/${verificationMeta.rkey}`,\n handle: verificationMeta.handle as HandleString,\n displayName: verificationMeta.displayName,\n createdAt: (\n parseDate(verificationMeta.sortedAt) ?? new Date(0)\n ).toISOString() as DatetimeString,\n }\n }\n // Filter out the verification meta that doesn't contain all info.\n return undefined\n },\n )\n\n const allowActivitySubscriptionsFrom = (\n val: string,\n ): AllowActivitySubscriptions => {\n switch (val) {\n case 'followers':\n case 'mutuals':\n case 'none':\n return val\n default:\n // The dataplane should set the default of \"FOLLOWERS\". Just in case.\n return 'followers'\n }\n }\n\n const debug = {\n pagerank: actor.pagerank ? actor.pagerank.toString() : undefined,\n accountTags: actor.tags,\n profileTags: actor.profileTags,\n }\n\n map.set(did, {\n did,\n handle: parseString<HandleString>(actor.handle),\n profile: profile?.record,\n profileCid: profile?.cid,\n profileTakedownRef: profile?.takedownRef,\n sortedAt: profile?.sortedAt,\n indexedAt: profile?.indexedAt,\n takedownRef: safeTakedownRef(actor),\n isLabeler: actor.labeler ?? false,\n allowIncomingChatsFrom: actor.allowIncomingChatsFrom || undefined,\n allowGroupChatInvitesFrom: actor.allowGroupChatInvitesFrom || undefined,\n upstreamStatus: actor.upstreamStatus || undefined,\n createdAt: parseDate(actor.createdAt),\n trustedVerifier: actor.trustedVerifier,\n verifications,\n status: status,\n germ: germ,\n allowActivitySubscriptionsFrom: allowActivitySubscriptionsFrom(\n actor.allowActivitySubscriptionsFrom,\n ),\n accountModerationTags: new Set(actor.tags),\n profileModerationTags: new Set(actor.profileTags),\n debug,\n })\n }\n\n return map\n }\n\n async getChatDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ChatDeclarations> {\n const map: ChatDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getActorChatDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n chat.bsky.actor.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getGermDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<GermDeclarations> {\n const map: GermDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getGermDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n com.germnetwork.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getNotificationDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<NotificationDeclarations> {\n const map: NotificationDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getNotificationDeclarationRecords({\n uris,\n })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.notification.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getStatus(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Statuses> {\n const map: Statuses = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getStatusRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.actor.status.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n // \"naive\" because this method does not verify the existence of the list itself\n // a later check in the main hydrator will remove list uris that have been deleted or\n // repurposed to \"curate lists\"\n async getProfileViewerStatesNaive(\n actors: AtIdentifierString[],\n viewer: DidString,\n ): Promise<ProfileViewerStates> {\n const map: ProfileViewerStates = new HydrationMap()\n if (!actors.length) return map\n\n // @TODO we could use \"await this.getDids(actors)\" here to resolve the\n // handles (no other code change should be needed). This was not done as\n // part of this PR to avoid changing the behavior of this method.\n const actorDids = actors.map((a) => (isDidIdentifier(a) ? a : undefined))\n\n // getRelationships requires DidString so we remove anything that isn't one\n const actorDidsDefined = Array.from(\n new Set(\n actorDids\n .filter((did) => did != null)\n // Since we special case self-relationship below, we can skip querying\n // the dataplane for the viewer's own DID if it's included in the\n // input.\n .filter((did) => did !== viewer),\n ),\n )\n\n const res = await this.dataplane.getRelationships({\n actorDid: viewer,\n targetDids: actorDidsDefined,\n })\n\n const actorToDid = new Map<AtIdentifierString, DidString | undefined>(\n actors.map((actor, i) => [actor, actorDids[i]]),\n )\n\n for (let i = 0; i < actors.length; i++) {\n const actor = actors[i]\n\n const did = actorToDid.get(actor)\n // ignore unresolved handles\n if (!did) continue\n\n if (did === viewer) {\n // ignore self-follows, self-mutes, self-blocks, self-activity-subscriptions\n map.set(actor, { did })\n continue\n }\n\n // Get the index that was used to query the relationships for this actor\n const index = actorDidsDefined.indexOf(did)\n if (index === -1) continue\n\n const rels = res.relationships[index]\n map.set(actor, {\n did,\n muted: rels.muted ?? false,\n mutedOnlyReposts: rels.mutedOnlyReposts ?? false,\n mutedOnlyQuoteposts: rels.mutedOnlyQuoteposts ?? false,\n mutedByList: parseString(rels.mutedByList),\n blockedBy: parseString(rels.blockedBy),\n blocking: parseString<AtUriString>(rels.blocking),\n blockedByList: parseString(rels.blockedByList),\n blockingByList: parseString(rels.blockingByList),\n following: parseString<AtUriString>(rels.following),\n followedBy: parseString(rels.followedBy),\n })\n }\n\n return map\n }\n\n async getKnownFollowers(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<KnownFollowersStates> {\n const map: KnownFollowersStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { results } = await this.dataplane.sampleFollowsFollowing(\n {\n actorDid: viewer,\n targetDids: dids,\n limit: 5,\n },\n { signal: AbortSignal.timeout(100) },\n )\n for (let i = 0; i < dids.length; i++) {\n const result = results[i]\n const followerDids = result?.dids\n map.set(\n dids[i],\n followerDids && followerDids.length > 0\n ? {\n count: result.totalKnown || followerDids.length,\n followers: followerDids as DidString[],\n }\n : undefined,\n )\n }\n } catch (err) {\n // Fail open.\n events.hydrationFailed({ source: 'known_followers', err })\n }\n\n return map\n }\n\n async getActivitySubscriptions(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<ActivitySubscriptionStates> {\n const map: ActivitySubscriptionStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { subscriptions } =\n await this.dataplane.getActivitySubscriptionsByActorAndSubjects(\n { actorDid: viewer, subjectDids: dids },\n { signal: AbortSignal.timeout(100) },\n )\n\n for (let i = 0; i < dids.length; i++) {\n // @NOTE Although not typed as nullable, the code here used to defend\n // against potentially missing subscription objects in the response, so\n // we keep that defense in place.\n const subscription = subscriptions[i] as\n ActivitySubscription | undefined\n\n const state = {\n post: subscription?.post != null,\n reply: subscription?.reply != null,\n }\n\n const did = dids[i]!\n if (isActivitySubscriptionEnabled(state)) {\n map.set(did, state)\n } else {\n map.set(did, undefined)\n }\n }\n } catch (err) {\n // Fail open.\n events.hydrationFailed({ source: 'activity_subscriptions', err })\n }\n\n return map\n }\n\n async getProfileAggregates(dids: DidString[]): Promise<ProfileAggs> {\n const map: ProfileAggs = new HydrationMap()\n if (!dids.length) return map\n\n const counts = await this.dataplane.getCountsForUsers({ dids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n followers: counts.followers[i] ?? 0,\n follows: counts.following[i] ?? 0,\n posts: counts.posts[i] ?? 0,\n lists: counts.lists[i] ?? 0,\n feeds: counts.feeds[i] ?? 0,\n starterPacks: counts.starterPacks[i] ?? 0,\n })\n }\n\n return map\n }\n}\n"]}
1
+ {"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/hydration/actor.ts"],"names":[],"mappings":"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","sourcesContent":["import { mapDefined } from '@atproto/common'\nimport {\n type AtIdentifierString,\n type AtUriString,\n type DatetimeString,\n type DidString,\n type HandleString,\n isDidIdentifier,\n isHandleIdentifier,\n normalizeHandle,\n} from '@atproto/syntax'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, chat, com } from '../lexicons/index.js'\nimport type {\n ActivitySubscription,\n VerificationMeta,\n} from '../proto/bsky_pb.js'\nimport { events } from '../telemetry/events.js'\nimport type {\n ChatDeclarationRecord,\n GermDeclarationRecord,\n NotificationDeclarationRecord,\n ProfileLinkRecord,\n ProfileRecord,\n StatusRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n type RecordInfo,\n isActivitySubscriptionEnabled,\n parseDate,\n parseRecord,\n parseString,\n safeTakedownRef,\n} from './util.js'\n\ntype AllowActivitySubscriptions = Extract<\n app.bsky.notification.declaration.Main['allowSubscriptions'],\n 'followers' | 'mutuals' | 'none'\n>\n\nexport type Actor = {\n did: DidString\n handle?: HandleString\n profile?: ProfileRecord\n profileCid?: string\n profileTakedownRef?: string\n sortedAt?: Date\n indexedAt?: Date\n takedownRef?: string\n isLabeler: boolean\n allowIncomingChatsFrom?: string\n allowGroupChatInvitesFrom?: string\n upstreamStatus?: string\n createdAt?: Date\n trustedVerifier?: boolean\n verifications: VerificationHydrationState[]\n status?: RecordInfo<StatusRecord>\n germ?: RecordInfo<GermDeclarationRecord>\n allowActivitySubscriptionsFrom: AllowActivitySubscriptions\n accountModerationTags: Set<string>\n profileModerationTags: Set<string>\n /**\n * Debug information for internal development\n */\n debug?: {\n pagerank?: string\n accountTags?: string[]\n profileTags?: string[]\n }\n}\n\nexport type VerificationHydrationState = {\n issuer: DidString\n uri: AtUriString\n handle: HandleString\n displayName: string\n createdAt: DatetimeString\n}\n\nexport type VerificationMetaRequired = Required<VerificationMeta>\n\nexport type Actors = HydrationMap<DidString, Actor>\n\nexport type ChatDeclaration = RecordInfo<ChatDeclarationRecord>\nexport type ChatDeclarations = HydrationMap<AtUriString, ChatDeclaration>\n\nexport type GermDeclaration = RecordInfo<GermDeclarationRecord>\nexport type GermDeclarations = HydrationMap<AtUriString, GermDeclaration>\n\nexport type ProfileLink = RecordInfo<ProfileLinkRecord>\nexport type ProfileLinks = HydrationMap<AtUriString, ProfileLink>\n\nexport type NotificationDeclaration = RecordInfo<NotificationDeclarationRecord>\nexport type NotificationDeclarations = HydrationMap<\n AtUriString,\n NotificationDeclaration\n>\n\nexport type Status = RecordInfo<StatusRecord>\nexport type Statuses = HydrationMap<AtUriString, Status>\n\nexport type ProfileViewerState = {\n did: DidString\n muted?: boolean\n mutedOnlyReposts?: boolean\n mutedOnlyQuoteposts?: boolean\n mutedByList?: AtUriString\n blockedBy?: AtUriString\n blocking?: AtUriString\n blockedByList?: AtUriString\n blockingByList?: AtUriString\n following?: AtUriString\n followedBy?: AtUriString\n}\n\nexport type ProfileViewerStates = HydrationMap<\n AtIdentifierString,\n ProfileViewerState\n>\n\ntype ActivitySubscriptionState = {\n post: boolean\n reply: boolean\n}\n\nexport type ActivitySubscriptionStates = HydrationMap<\n DidString,\n ActivitySubscriptionState | undefined\n>\n\ntype KnownFollowersState = {\n count: number\n followers: DidString[]\n}\n\nexport type KnownFollowersStates = HydrationMap<\n DidString,\n KnownFollowersState | undefined\n>\n\ntype KnownLikersState = {\n count: number\n actors: DidString[]\n}\n\nexport type KnownLikersStates = HydrationMap<\n AtUriString,\n KnownLikersState | undefined\n>\n\nexport type ProfileAgg = {\n followers: number\n follows: number\n posts: number\n lists: number\n feeds: number\n starterPacks: number\n}\n\nexport type ProfileAggs = HydrationMap<DidString, ProfileAgg>\n\nexport class ActorHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getRepoRevSafe(did: string | null): Promise<string | null> {\n if (!did) return null\n try {\n const res = await this.dataplane.getLatestRev({ actorDid: did })\n return parseString(res.rev) ?? null\n } catch {\n return null\n }\n }\n\n /**\n * @note handles do not need to be normalized\n */\n async getDids(\n handleOrDids: AtIdentifierString[],\n opts?: { lookupUnidirectional?: boolean },\n ): Promise<(DidString | undefined)[]> {\n const didByHandle = new Map<HandleString, DidString>()\n\n const handles = handleOrDids.filter(isHandleIdentifier)\n if (handles.length) {\n const { dids } = await this.dataplane.getDidsByHandles({\n handles: handles.map(normalizeHandle),\n lookupUnidirectional: opts?.lookupUnidirectional,\n })\n\n for (let i = 0; i < handles.length; i++) {\n const did = parseString<DidString>(dids[i])\n if (did) didByHandle.set(handles[i], did)\n }\n }\n\n return handleOrDids.map((id) =>\n isDidIdentifier(id) ? id : didByHandle.get(id),\n )\n }\n\n async getDidsDefined(\n handleOrDids: AtIdentifierString[],\n ): Promise<DidString[]> {\n const res = await this.getDids(handleOrDids)\n return res.filter((v) => v != null)\n }\n\n async getActors(\n dids: DidString[],\n opts: {\n includeTakedowns?: boolean\n skipCacheForDids?: DidString[]\n } = {},\n ): Promise<Actors> {\n const map: Actors = new HydrationMap()\n if (!dids.length) return map\n\n const { includeTakedowns = false, skipCacheForDids } = opts\n\n const res = await this.dataplane.getActors({ dids, skipCacheForDids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const actor = res.actors[i]\n const isNoHosted =\n actor.takenDown ||\n (actor.upstreamStatus && actor.upstreamStatus !== 'active')\n if (\n !actor.exists ||\n (isNoHosted && !includeTakedowns) ||\n !!actor.tombstonedAt\n ) {\n map.set(did, null)\n continue\n }\n\n const profile = actor.profile?.record\n ? parseRecord(\n app.bsky.actor.profile.main,\n actor.profile,\n includeTakedowns,\n )\n : undefined\n\n const status = actor.statusRecord\n ? parseRecord(\n app.bsky.actor.status.main,\n actor.statusRecord,\n /*\n * Always true, we filter this out in the `Views.status()`. If we\n * ever remove that filter, we'll want to reinstate this here.\n */\n true,\n )\n : undefined\n\n const germ = actor.germRecord\n ? parseRecord(\n com.germnetwork.declaration.main,\n actor.germRecord,\n includeTakedowns,\n )\n : undefined\n\n const verifications = mapDefined(\n Object.entries(actor.verifiedBy) as [DidString, VerificationMeta][],\n ([actorDid, verificationMeta]):\n VerificationHydrationState | undefined => {\n if (\n verificationMeta.handle &&\n verificationMeta.rkey &&\n verificationMeta.sortedAt\n ) {\n return {\n issuer: actorDid,\n uri: `at://${actorDid}/app.bsky.graph.verification/${verificationMeta.rkey}`,\n handle: verificationMeta.handle as HandleString,\n displayName: verificationMeta.displayName,\n createdAt: (\n parseDate(verificationMeta.sortedAt) ?? new Date(0)\n ).toISOString() as DatetimeString,\n }\n }\n // Filter out the verification meta that doesn't contain all info.\n return undefined\n },\n )\n\n const allowActivitySubscriptionsFrom = (\n val: string,\n ): AllowActivitySubscriptions => {\n switch (val) {\n case 'followers':\n case 'mutuals':\n case 'none':\n return val\n default:\n // The dataplane should set the default of \"FOLLOWERS\". Just in case.\n return 'followers'\n }\n }\n\n const debug = {\n pagerank: actor.pagerank ? actor.pagerank.toString() : undefined,\n accountTags: actor.tags,\n profileTags: actor.profileTags,\n }\n\n map.set(did, {\n did,\n handle: parseString<HandleString>(actor.handle),\n profile: profile?.record,\n profileCid: profile?.cid,\n profileTakedownRef: profile?.takedownRef,\n sortedAt: profile?.sortedAt,\n indexedAt: profile?.indexedAt,\n takedownRef: safeTakedownRef(actor),\n isLabeler: actor.labeler ?? false,\n allowIncomingChatsFrom: actor.allowIncomingChatsFrom || undefined,\n allowGroupChatInvitesFrom: actor.allowGroupChatInvitesFrom || undefined,\n upstreamStatus: actor.upstreamStatus || undefined,\n createdAt: parseDate(actor.createdAt),\n trustedVerifier: actor.trustedVerifier,\n verifications,\n status: status,\n germ: germ,\n allowActivitySubscriptionsFrom: allowActivitySubscriptionsFrom(\n actor.allowActivitySubscriptionsFrom,\n ),\n accountModerationTags: new Set(actor.tags),\n profileModerationTags: new Set(actor.profileTags),\n debug,\n })\n }\n\n return map\n }\n\n async getChatDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ChatDeclarations> {\n const map: ChatDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getActorChatDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n chat.bsky.actor.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getGermDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<GermDeclarations> {\n const map: GermDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getGermDeclarationRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n com.germnetwork.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getProfileLinks(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<ProfileLinks> {\n const map: ProfileLinks = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getProfileLinkRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const record = parseRecord(\n app.bsky.actor.link.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uris[i], record ?? null)\n }\n\n return map\n }\n\n async getNotificationDeclarations(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<NotificationDeclarations> {\n const map: NotificationDeclarations = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getNotificationDeclarationRecords({\n uris,\n })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.notification.declaration.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n async getStatus(\n uris: AtUriString[],\n includeTakedowns = false,\n ): Promise<Statuses> {\n const map: Statuses = new HydrationMap()\n if (!uris.length) return map\n\n const res = await this.dataplane.getStatusRecords({ uris })\n for (let i = 0; i < uris.length; i++) {\n const uri = uris[i]\n const record = parseRecord(\n app.bsky.actor.status.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(uri, record ?? null)\n }\n\n return map\n }\n\n // \"naive\" because this method does not verify the existence of the list itself\n // a later check in the main hydrator will remove list uris that have been deleted or\n // repurposed to \"curate lists\"\n async getProfileViewerStatesNaive(\n actors: AtIdentifierString[],\n viewer: DidString,\n ): Promise<ProfileViewerStates> {\n const map: ProfileViewerStates = new HydrationMap()\n if (!actors.length) return map\n\n // @TODO we could use \"await this.getDids(actors)\" here to resolve the\n // handles (no other code change should be needed). This was not done as\n // part of this PR to avoid changing the behavior of this method.\n const actorDids = actors.map((a) => (isDidIdentifier(a) ? a : undefined))\n\n // getRelationships requires DidString so we remove anything that isn't one\n const actorDidsDefined = Array.from(\n new Set(\n actorDids\n .filter((did) => did != null)\n // Since we special case self-relationship below, we can skip querying\n // the dataplane for the viewer's own DID if it's included in the\n // input.\n .filter((did) => did !== viewer),\n ),\n )\n\n const res = await this.dataplane.getRelationships({\n actorDid: viewer,\n targetDids: actorDidsDefined,\n })\n\n const actorToDid = new Map<AtIdentifierString, DidString | undefined>(\n actors.map((actor, i) => [actor, actorDids[i]]),\n )\n\n for (let i = 0; i < actors.length; i++) {\n const actor = actors[i]\n\n const did = actorToDid.get(actor)\n // ignore unresolved handles\n if (!did) continue\n\n if (did === viewer) {\n // ignore self-follows, self-mutes, self-blocks, self-activity-subscriptions\n map.set(actor, { did })\n continue\n }\n\n // Get the index that was used to query the relationships for this actor\n const index = actorDidsDefined.indexOf(did)\n if (index === -1) continue\n\n const rels = res.relationships[index]\n map.set(actor, {\n did,\n muted: rels.muted ?? false,\n mutedOnlyReposts: rels.mutedOnlyReposts ?? false,\n mutedOnlyQuoteposts: rels.mutedOnlyQuoteposts ?? false,\n mutedByList: parseString(rels.mutedByList),\n blockedBy: parseString(rels.blockedBy),\n blocking: parseString<AtUriString>(rels.blocking),\n blockedByList: parseString(rels.blockedByList),\n blockingByList: parseString(rels.blockingByList),\n following: parseString<AtUriString>(rels.following),\n followedBy: parseString(rels.followedBy),\n })\n }\n\n return map\n }\n\n async getKnownFollowers(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<KnownFollowersStates> {\n const map: KnownFollowersStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { results } = await this.dataplane.sampleFollowsFollowing(\n {\n actorDid: viewer,\n targetDids: dids,\n limit: 5,\n },\n { signal: AbortSignal.timeout(100) },\n )\n for (let i = 0; i < dids.length; i++) {\n const result = results[i]\n const followerDids = result?.dids\n map.set(\n dids[i],\n followerDids && followerDids.length > 0\n ? {\n count: result.totalKnown || followerDids.length,\n followers: followerDids as DidString[],\n }\n : undefined,\n )\n }\n } catch (err) {\n // Fail open.\n events.hydrationFailed({ source: 'known_followers', err })\n }\n\n return map\n }\n\n async getActivitySubscriptions(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<ActivitySubscriptionStates> {\n const map: ActivitySubscriptionStates = new HydrationMap()\n if (!viewer) return map\n if (!dids.length) return map\n\n try {\n const { subscriptions } =\n await this.dataplane.getActivitySubscriptionsByActorAndSubjects(\n { actorDid: viewer, subjectDids: dids },\n { signal: AbortSignal.timeout(100) },\n )\n\n for (let i = 0; i < dids.length; i++) {\n // @NOTE Although not typed as nullable, the code here used to defend\n // against potentially missing subscription objects in the response, so\n // we keep that defense in place.\n const subscription = subscriptions[i] as\n ActivitySubscription | undefined\n\n const state = {\n post: subscription?.post != null,\n reply: subscription?.reply != null,\n }\n\n const did = dids[i]!\n if (isActivitySubscriptionEnabled(state)) {\n map.set(did, state)\n } else {\n map.set(did, undefined)\n }\n }\n } catch (err) {\n // Fail open.\n events.hydrationFailed({ source: 'activity_subscriptions', err })\n }\n\n return map\n }\n\n async getProfileAggregates(dids: DidString[]): Promise<ProfileAggs> {\n const map: ProfileAggs = new HydrationMap()\n if (!dids.length) return map\n\n const counts = await this.dataplane.getCountsForUsers({ dids })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n followers: counts.followers[i] ?? 0,\n follows: counts.following[i] ?? 0,\n posts: counts.posts[i] ?? 0,\n lists: counts.lists[i] ?? 0,\n feeds: counts.feeds[i] ?? 0,\n starterPacks: counts.starterPacks[i] ?? 0,\n })\n }\n\n return map\n }\n}\n"]}
@@ -1,12 +1,16 @@
1
1
  import { type AtUriString, type DidString, type NsidString, type TypedLexMap } from '@atproto/lex';
2
2
  import type { DataPlaneClient } from '../data-plane/client/index.js';
3
+ import { type ExternalHydrationRoot, type ExternalHydrationWork } from '../telemetry/events.js';
3
4
  import type { SiteStandardDocumentRecord, SiteStandardPublicationRecord } from '../views/types.js';
5
+ import type { Actors } from './actor.js';
6
+ import type { Labels } from './label.js';
4
7
  import { HydrationMap, type ItemRef, type RecordInfo } from './util.js';
5
8
  /** Generic record bodies are decoded, but not validated against a Lexicon. */
6
- export type GenericRecord = RecordInfo<TypedLexMap>;
7
- export type GenericRecords = HydrationMap<AtUriString, GenericRecord>;
8
- /** Keyed by `genericRecordKey(uri, cid)` to retain multiple versions of a URI. */
9
- export type GenericRecordsByRef = HydrationMap<string, GenericRecord>;
9
+ export type ExternalRecord = RecordInfo<TypedLexMap>;
10
+ export type ExternalRecords = HydrationMap<AtUriString, ExternalRecord>;
11
+ /** Keyed by `genericRecordKey({ uri, cid })` to retain versions of a URI. */
12
+ export type ExternalRecordsByRef = HydrationMap<ExactRecordKey, ExternalRecord>;
13
+ export type ExternalRecordBacklinks = HydrationMap<AtUriString, AtUriString[]>;
10
14
  export type AtmosphereActivityItem = {
11
15
  uri: AtUriString;
12
16
  sortedAt: Date;
@@ -19,22 +23,18 @@ export type AtmosphereBacklinks = {
19
23
  backlinks: AtmosphereActivityItem[];
20
24
  cursor?: string;
21
25
  };
22
- export type AtmosphereBacklinkCounts = HydrationMap<AtUriString, Partial<Record<NsidString, number>>>;
26
+ export type ExternalRecordBacklinkCounts = HydrationMap<AtUriString, Partial<Record<NsidString, number>>>;
23
27
  export type AtmosphereBacklinksByActor = {
24
28
  backlinks: HydrationMap<AtUriString, AtUriString[]>;
25
29
  truncated: boolean;
26
30
  };
31
+ declare const exactRecordKeySymbol: unique symbol;
27
32
  /**
28
- * Composes a stable map key from an `(uri, cid)` pair. A single hydration
29
- * batch can pull more than one version of the same record URI (different
30
- * posts pinning different cids), so the composite is needed for O(1)
31
- * version-exact lookups.
33
+ * A version-exact `${uri}@${cid}` key, only produced by `genericRecordKey` for
34
+ * a ref with a CID, so it can be parsed back by `parseGenericRecordKey`.
32
35
  */
33
- export declare function genericRecordKey(uri: AtUriString, cid: string): string;
34
- /** Recover the URI and CID from a composite hydration key. */
35
- export declare function parseGenericRecordKey(key: string): {
36
- uri: AtUriString;
37
- cid: string;
36
+ export type ExactRecordKey = string & {
37
+ [exactRecordKeySymbol]: true;
38
38
  };
39
39
  export type SiteStandardDocument = RecordInfo<SiteStandardDocumentRecord>;
40
40
  export type SiteStandardPublication = RecordInfo<SiteStandardPublicationRecord>;
@@ -44,36 +44,34 @@ export type SiteStandardPublication = RecordInfo<SiteStandardPublicationRecord>;
44
44
  * pinning different cids), so the composite key is needed for O(1)
45
45
  * version-exact lookups.
46
46
  */
47
- export type SiteStandardDocuments = HydrationMap<string, SiteStandardDocument>;
47
+ export type SiteStandardDocuments = HydrationMap<ExactRecordKey, SiteStandardDocument>;
48
48
  /**
49
49
  * Keyed by `${uri}@${cid}`. See `SiteStandardDocuments` for the rationale.
50
50
  */
51
- export type SiteStandardPublications = HydrationMap<string, SiteStandardPublication>;
51
+ export type SiteStandardPublications = HydrationMap<ExactRecordKey, SiteStandardPublication>;
52
52
  export type SiteStandardRecords = {
53
53
  documents: SiteStandardDocuments;
54
54
  publications: SiteStandardPublications;
55
55
  };
56
- export type AssociatedSiteStandardRecord<T> = {
57
- ref: {
58
- uri: AtUriString;
59
- cid: string;
60
- };
61
- info: T;
62
- };
63
56
  export declare class ExternalHydrator {
64
57
  dataplane: DataPlaneClient;
58
+ static readonly MAX_BACKLINK_PREVIEWS = 3;
59
+ static readonly MAX_BACKLINK_GALLERY_ITEMS = 10;
60
+ static readonly MAX_BACKLINK_FANOUT = 8;
61
+ /** Hard cap on generic batches per traversal, counting the root as pass 1. */
62
+ static readonly MAX_EXTERNAL_HYDRATION_PASSES = 8;
65
63
  constructor(dataplane: DataPlaneClient);
66
64
  /** Fetch exact record versions; unavailable records are represented by null. */
67
- getRecordsByRef(refs: Required<ItemRef>[], includeTakedowns?: boolean): Promise<GenericRecordsByRef>;
65
+ getRecordsByRef(refs: Required<ItemRef>[], includeTakedowns?: boolean): Promise<ExternalRecordsByRef>;
68
66
  /** Fetch the latest indexed versions without collection-specific validation. */
69
- getRecordsByURI(uris: AtUriString[], includeTakedowns?: boolean): Promise<GenericRecords>;
67
+ getRecordsByURI(uris: AtUriString[], includeTakedowns?: boolean): Promise<ExternalRecords>;
70
68
  /** Fetch a page of activity refs for subsequent generic record hydration. */
71
69
  getAtmosphereTimeline(viewerDid: DidString, opts?: {
72
70
  limit?: number;
73
71
  cursor?: string;
74
72
  }): Promise<AtmosphereTimeline>;
75
73
  /** Fetch source-record counts, optionally restricted to one collection. */
76
- getAtmosphereBacklinkCounts(targetUris: AtUriString[], collection?: NsidString): Promise<AtmosphereBacklinkCounts>;
74
+ getAtmosphereBacklinkCounts(targetUris: AtUriString[], collection?: NsidString): Promise<ExternalRecordBacklinkCounts>;
77
75
  /** Fetch a page of source records linking to a target. */
78
76
  getAtmosphereBacklinks(targetUri: AtUriString, collection: NsidString, opts?: {
79
77
  limit?: number;
@@ -86,29 +84,62 @@ export declare class ExternalHydrator {
86
84
  * resolve a document's publication; callers must pin it explicitly.
87
85
  */
88
86
  getSiteStandardRecordsByRef(refs: ItemRef[], includeTakedowns?: boolean): Promise<SiteStandardRecords>;
89
- /**
90
- * Fetch the latest `site.standard.{document,publication}` versions. The
91
- * generic record lookup does not follow references, so publications named
92
- * by the `site` field of the hydrated documents are fetched in a second
93
- * call.
94
- */
95
- getSiteStandardRecordsByURI(uris: AtUriString[], includeTakedowns?: boolean): Promise<SiteStandardRecords>;
96
- private addSiteStandardRecordsByURI;
97
87
  }
88
+ /**
89
+ * Composes the lookup key for a ref: the bare URI for a latest-version lookup,
90
+ * or `${uri}@${cid}` for an exact version. A single hydration batch can pull
91
+ * several versions of one URI (different posts pinning different cids), so
92
+ * exact maps need the composite for O(1) version-exact lookups. The two forms
93
+ * never collide, so latest and exact lookups can share one traversal set.
94
+ *
95
+ * Throws on an empty CID rather than treating it as a latest lookup.
96
+ */
97
+ export declare function genericRecordKey(ref: Required<ItemRef>): ExactRecordKey;
98
+ export declare function genericRecordKey(ref: ItemRef): string;
99
+ /**
100
+ * Recover the URI and CID from an exact record key, splitting at the last `@`.
101
+ * Throws if either part is missing. Components are trusted, not revalidated.
102
+ */
103
+ export declare function parseGenericRecordKey(key: ExactRecordKey): Required<ItemRef>;
104
+ /**
105
+ * Null generic external records (in both the URI-keyed and exact-ref maps,
106
+ * keeping their keys) that are taken down by an actionable label, unless
107
+ * takedowns are included, or whose owner is explicitly unavailable. Applies to
108
+ * each record independently; counts and other records are unaffected.
109
+ */
110
+ export declare function actionExternalRecordTakedowns({ externalRecords, externalRecordsByRef, actors, labels, }: {
111
+ externalRecords?: ExternalRecords;
112
+ externalRecordsByRef?: ExternalRecordsByRef;
113
+ actors?: Actors;
114
+ labels?: Labels;
115
+ }, includeTakedowns?: boolean): void;
116
+ /**
117
+ * Generic lookup work of one external hydration traversal, shared by reference
118
+ * through its nested passes. `capped` records hitting the pass limit.
119
+ */
120
+ export type ExternalHydrationTracker = ExternalHydrationWork & {
121
+ capped: boolean;
122
+ };
123
+ /**
124
+ * Run `fn` with the caller's tracker, or as the owner of a new traversal when
125
+ * there is none. Only the owner reports, once, including on failure. Owners
126
+ * that completed without scheduling a batch did no work and are not reported;
127
+ * caps and failures always are.
128
+ */
129
+ export declare function trackExternalHydration<T>(root: ExternalHydrationRoot, hydrationMetrics: ExternalHydrationTracker | undefined, fn: (hydrationMetrics: ExternalHydrationTracker) => Promise<T>): Promise<T>;
130
+ export type AssociatedSiteStandardRecord<T> = {
131
+ ref: {
132
+ uri: AtUriString;
133
+ cid: string;
134
+ };
135
+ info: T;
136
+ };
98
137
  /**
99
138
  * Read-path resolution: caller pinned a set of `(uri, cid)` strongRefs in
100
139
  * the post at write time, and we honor those exact versions. Any pair
101
140
  * that doesn't structurally agree is rejected, so downstream callers can
102
141
  * trust the returned shape.
103
142
  *
104
- * Same observable contract as
105
- * `getSiteStandardRecordsFromHydrationMapsByDocumentUri` (the compose-path
106
- * sister) — both functions guarantee that a returned `(doc, pub)` pair
107
- * has matching site/uri, and reject orphan docs that claim a
108
- * non-hydrated publication. They differ only in how upstream availability
109
- * is asserted: this one trusts caller-supplied refs; the sister derives
110
- * everything from the dataplane response.
111
- *
112
143
  * Pairing rules:
113
144
  * - Both slots referenced: `doc.site` must equal `publication.ref.uri`,
114
145
  * else both come back `undefined`.
@@ -128,32 +159,5 @@ export declare const getSiteStandardRecordsFromHydrationMapsByRefs: (associatedR
128
159
  document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined;
129
160
  publication: AssociatedSiteStandardRecord<SiteStandardPublication> | undefined;
130
161
  };
131
- /**
132
- * Compose-path resolution: no caller-supplied refs — the dataplane
133
- * returned the latest version of each record (including any
134
- * publications it auto-resolved from a document's `site` field). Take
135
- * the first hydrated document and pair it with the publication its
136
- * `site` field points at.
137
- *
138
- * Same observable contract as
139
- * `getSiteStandardRecordsFromHydrationMapsByRefs` (the read-path
140
- * sister) — both functions guarantee that a returned `(doc, pub)` pair
141
- * has matching site/uri, and reject orphan docs that claim a
142
- * non-hydrated publication. They differ only in how upstream
143
- * availability is asserted: this one walks whatever was returned by the
144
- * dataplane; the sister checks against caller-supplied refs.
145
- *
146
- * Pairing rules:
147
- * - Doc with at-uri `site`: must find a hydrated publication at that
148
- * URI. If none was hydrated, the doc/publication chain is incomplete
149
- * and the function returns `undefined` for both slots; the doc alone
150
- * isn't useful without its source (can't verify the pub)
151
- * - Doc with web-URL `site` (loose): no publication.
152
- * - No doc hydrated: fall through to the first hydrated publication for
153
- * the publication-only resolution flow.
154
- */
155
- export declare const getSiteStandardRecordsFromHydrationMapsByDocumentUri: (documents: SiteStandardDocuments | undefined, publications: SiteStandardPublications | undefined) => {
156
- document: AssociatedSiteStandardRecord<SiteStandardDocument> | undefined;
157
- publication: AssociatedSiteStandardRecord<SiteStandardPublication> | undefined;
158
- };
162
+ export {};
159
163
  //# sourceMappingURL=external.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/hydration/external.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/hydration/external.ts"],"names":[],"mappings":"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"}