@atproto/bsky 0.0.241 → 0.0.243

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/api/age-assurance/const.d.ts +1 -1
  3. package/dist/api/age-assurance/index.d.ts.map +1 -1
  4. package/dist/api/age-assurance/kws/age-verified.d.ts +13 -13
  5. package/dist/api/age-assurance/kws/age-verified.d.ts.map +1 -1
  6. package/dist/api/age-assurance/kws/external-payload.d.ts +4 -4
  7. package/dist/api/age-assurance/redirects/kws-age-verified.d.ts.map +1 -1
  8. package/dist/api/age-assurance/webhooks/kws-age-verified.d.ts.map +1 -1
  9. package/dist/api/app/bsky/actor/searchActors.d.ts.map +1 -1
  10. package/dist/api/app/bsky/actor/searchActors.js +7 -3
  11. package/dist/api/app/bsky/actor/searchActors.js.map +1 -1
  12. package/dist/api/app/bsky/actor/searchActorsTypeahead.d.ts.map +1 -1
  13. package/dist/api/app/bsky/actor/searchActorsTypeahead.js +7 -3
  14. package/dist/api/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  15. package/dist/api/app/bsky/bookmark/util.d.ts.map +1 -1
  16. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  17. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  18. package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
  19. package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
  20. package/dist/api/app/bsky/feed/searchPosts.d.ts.map +1 -1
  21. package/dist/api/app/bsky/feed/searchPosts.js +8 -3
  22. package/dist/api/app/bsky/feed/searchPosts.js.map +1 -1
  23. package/dist/api/app/bsky/graph/searchStarterPacks.d.ts.map +1 -1
  24. package/dist/api/app/bsky/graph/searchStarterPacks.js +7 -3
  25. package/dist/api/app/bsky/graph/searchStarterPacks.js.map +1 -1
  26. package/dist/api/app/bsky/notification/listNotifications.d.ts.map +1 -1
  27. package/dist/api/app/bsky/notification/util.d.ts.map +1 -1
  28. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.d.ts.map +1 -1
  29. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js +3 -2
  30. package/dist/api/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
  31. package/dist/api/external.d.ts.map +1 -1
  32. package/dist/api/health.d.ts.map +1 -1
  33. package/dist/api/kws/api.d.ts.map +1 -1
  34. package/dist/api/kws/index.d.ts.map +1 -1
  35. package/dist/api/kws/types.d.ts +6 -6
  36. package/dist/api/kws/util.d.ts +1 -1
  37. package/dist/api/kws/util.d.ts.map +1 -1
  38. package/dist/api/kws/webhook.d.ts.map +1 -1
  39. package/dist/api/sitemap.d.ts.map +1 -1
  40. package/dist/api/util.d.ts +5 -0
  41. package/dist/api/util.d.ts.map +1 -1
  42. package/dist/api/util.js +11 -0
  43. package/dist/api/util.js.map +1 -1
  44. package/dist/api/well-known.d.ts.map +1 -1
  45. package/dist/auth-verifier.d.ts +2 -2
  46. package/dist/auth-verifier.d.ts.map +1 -1
  47. package/dist/bsync.d.ts.map +1 -1
  48. package/dist/cache/read-through.d.ts.map +1 -1
  49. package/dist/cache/read-through.js.map +1 -1
  50. package/dist/config.d.ts +6 -4
  51. package/dist/config.d.ts.map +1 -1
  52. package/dist/config.js +5 -0
  53. package/dist/config.js.map +1 -1
  54. package/dist/context.d.ts.map +1 -1
  55. package/dist/context.js.map +1 -1
  56. package/dist/courier.d.ts.map +1 -1
  57. package/dist/data-plane/bsync/index.d.ts.map +1 -1
  58. package/dist/data-plane/bsync/index.js.map +1 -1
  59. package/dist/data-plane/client/hosts.d.ts.map +1 -1
  60. package/dist/data-plane/client/index.d.ts.map +1 -1
  61. package/dist/data-plane/client/util.d.ts.map +1 -1
  62. package/dist/data-plane/server/background.d.ts.map +1 -1
  63. package/dist/data-plane/server/db/db.d.ts +4 -5
  64. package/dist/data-plane/server/db/db.d.ts.map +1 -1
  65. package/dist/data-plane/server/db/db.js +2 -1
  66. package/dist/data-plane/server/db/db.js.map +1 -1
  67. package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.d.ts.map +1 -1
  68. package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.js +2 -4
  69. package/dist/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.js.map +1 -1
  70. package/dist/data-plane/server/db/migrations/provider.d.ts +2 -1
  71. package/dist/data-plane/server/db/migrations/provider.d.ts.map +1 -1
  72. package/dist/data-plane/server/db/migrations/provider.js.map +1 -1
  73. package/dist/data-plane/server/db/pagination.d.ts +4 -3
  74. package/dist/data-plane/server/db/pagination.d.ts.map +1 -1
  75. package/dist/data-plane/server/db/pagination.js +8 -8
  76. package/dist/data-plane/server/db/pagination.js.map +1 -1
  77. package/dist/data-plane/server/db/util.d.ts +5 -5
  78. package/dist/data-plane/server/db/util.d.ts.map +1 -1
  79. package/dist/data-plane/server/db/util.js.map +1 -1
  80. package/dist/data-plane/server/index.d.ts.map +1 -1
  81. package/dist/data-plane/server/index.js.map +1 -1
  82. package/dist/data-plane/server/indexing/index.d.ts +78 -78
  83. package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
  84. package/dist/data-plane/server/indexing/index.js.map +1 -1
  85. package/dist/data-plane/server/indexing/plugins/block.d.ts +9 -4
  86. package/dist/data-plane/server/indexing/plugins/block.d.ts.map +1 -1
  87. package/dist/data-plane/server/indexing/plugins/chat-declaration.d.ts.map +1 -1
  88. package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts +13 -4
  89. package/dist/data-plane/server/indexing/plugins/feed-generator.d.ts.map +1 -1
  90. package/dist/data-plane/server/indexing/plugins/follow.d.ts +9 -4
  91. package/dist/data-plane/server/indexing/plugins/follow.d.ts.map +1 -1
  92. package/dist/data-plane/server/indexing/plugins/germ-declaration.d.ts.map +1 -1
  93. package/dist/data-plane/server/indexing/plugins/labeler.d.ts +8 -4
  94. package/dist/data-plane/server/indexing/plugins/labeler.d.ts.map +1 -1
  95. package/dist/data-plane/server/indexing/plugins/like.d.ts +12 -4
  96. package/dist/data-plane/server/indexing/plugins/like.d.ts.map +1 -1
  97. package/dist/data-plane/server/indexing/plugins/list-block.d.ts +9 -4
  98. package/dist/data-plane/server/indexing/plugins/list-block.d.ts.map +1 -1
  99. package/dist/data-plane/server/indexing/plugins/list-item.d.ts +10 -4
  100. package/dist/data-plane/server/indexing/plugins/list-item.d.ts.map +1 -1
  101. package/dist/data-plane/server/indexing/plugins/list.d.ts +13 -4
  102. package/dist/data-plane/server/indexing/plugins/list.d.ts.map +1 -1
  103. package/dist/data-plane/server/indexing/plugins/notif-declaration.d.ts.map +1 -1
  104. package/dist/data-plane/server/indexing/plugins/post-gate.d.ts.map +1 -1
  105. package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
  106. package/dist/data-plane/server/indexing/plugins/post.js +4 -3
  107. package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
  108. package/dist/data-plane/server/indexing/plugins/profile.d.ts.map +1 -1
  109. package/dist/data-plane/server/indexing/plugins/repost.d.ts +12 -4
  110. package/dist/data-plane/server/indexing/plugins/repost.d.ts.map +1 -1
  111. package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts +9 -4
  112. package/dist/data-plane/server/indexing/plugins/starter-pack.d.ts.map +1 -1
  113. package/dist/data-plane/server/indexing/plugins/status.d.ts.map +1 -1
  114. package/dist/data-plane/server/indexing/plugins/thread-gate.d.ts.map +1 -1
  115. package/dist/data-plane/server/indexing/plugins/verification.d.ts +12 -4
  116. package/dist/data-plane/server/indexing/plugins/verification.d.ts.map +1 -1
  117. package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
  118. package/dist/data-plane/server/indexing/processor.js.map +1 -1
  119. package/dist/data-plane/server/routes/activity-subscription.d.ts.map +1 -1
  120. package/dist/data-plane/server/routes/blocks.d.ts.map +1 -1
  121. package/dist/data-plane/server/routes/blocks.js +22 -14
  122. package/dist/data-plane/server/routes/blocks.js.map +1 -1
  123. package/dist/data-plane/server/routes/bookmarks.d.ts.map +1 -1
  124. package/dist/data-plane/server/routes/drafts.d.ts.map +1 -1
  125. package/dist/data-plane/server/routes/feed-gens.d.ts.map +1 -1
  126. package/dist/data-plane/server/routes/feed-gens.js +2 -2
  127. package/dist/data-plane/server/routes/feed-gens.js.map +1 -1
  128. package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
  129. package/dist/data-plane/server/routes/feeds.js +18 -16
  130. package/dist/data-plane/server/routes/feeds.js.map +1 -1
  131. package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
  132. package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
  133. package/dist/data-plane/server/routes/index.d.ts.map +1 -1
  134. package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
  135. package/dist/data-plane/server/routes/labels.d.ts.map +1 -1
  136. package/dist/data-plane/server/routes/labels.js +1 -1
  137. package/dist/data-plane/server/routes/labels.js.map +1 -1
  138. package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
  139. package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
  140. package/dist/data-plane/server/routes/moderation.d.ts.map +1 -1
  141. package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
  142. package/dist/data-plane/server/routes/mutes.js +2 -2
  143. package/dist/data-plane/server/routes/mutes.js.map +1 -1
  144. package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
  145. package/dist/data-plane/server/routes/notifs.js +10 -9
  146. package/dist/data-plane/server/routes/notifs.js.map +1 -1
  147. package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
  148. package/dist/data-plane/server/routes/quotes.d.ts.map +1 -1
  149. package/dist/data-plane/server/routes/records.d.ts.map +1 -1
  150. package/dist/data-plane/server/routes/relationships.d.ts.map +1 -1
  151. package/dist/data-plane/server/routes/relationships.js.map +1 -1
  152. package/dist/data-plane/server/routes/reposts.d.ts.map +1 -1
  153. package/dist/data-plane/server/routes/search.d.ts.map +1 -1
  154. package/dist/data-plane/server/routes/site-standard.d.ts.map +1 -1
  155. package/dist/data-plane/server/routes/sitemap.d.ts.map +1 -1
  156. package/dist/data-plane/server/routes/starter-packs.d.ts.map +1 -1
  157. package/dist/data-plane/server/routes/suggestions.d.ts.map +1 -1
  158. package/dist/data-plane/server/routes/suggestions.js +2 -2
  159. package/dist/data-plane/server/routes/suggestions.js.map +1 -1
  160. package/dist/data-plane/server/routes/sync.d.ts.map +1 -1
  161. package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
  162. package/dist/data-plane/server/subscription.d.ts.map +1 -1
  163. package/dist/data-plane/server/subscription.js.map +1 -1
  164. package/dist/data-plane/server/util.d.ts +31 -23
  165. package/dist/data-plane/server/util.d.ts.map +1 -1
  166. package/dist/etcd.d.ts.map +1 -1
  167. package/dist/etcd.js.map +1 -1
  168. package/dist/feature-gates/index.d.ts.map +1 -1
  169. package/dist/feature-gates/metrics.d.ts.map +1 -1
  170. package/dist/feature-gates/metrics.js.map +1 -1
  171. package/dist/hydration/actor.d.ts.map +1 -1
  172. package/dist/hydration/actor.js.map +1 -1
  173. package/dist/hydration/external.d.ts.map +1 -1
  174. package/dist/hydration/external.js.map +1 -1
  175. package/dist/hydration/feed.d.ts.map +1 -1
  176. package/dist/hydration/feed.js.map +1 -1
  177. package/dist/hydration/graph.d.ts.map +1 -1
  178. package/dist/hydration/graph.js.map +1 -1
  179. package/dist/hydration/hydrator.d.ts +1 -1
  180. package/dist/hydration/hydrator.d.ts.map +1 -1
  181. package/dist/hydration/hydrator.js.map +1 -1
  182. package/dist/hydration/label.d.ts.map +1 -1
  183. package/dist/hydration/label.js.map +1 -1
  184. package/dist/hydration/util.d.ts.map +1 -1
  185. package/dist/image/invalidator.d.ts.map +1 -1
  186. package/dist/image/invalidator.js.map +1 -1
  187. package/dist/image/logger.d.ts.map +1 -1
  188. package/dist/image/server.d.ts.map +1 -1
  189. package/dist/image/server.js.map +1 -1
  190. package/dist/image/sharp.d.ts +1 -1
  191. package/dist/image/uri.d.ts.map +1 -1
  192. package/dist/image/uri.js.map +1 -1
  193. package/dist/index.d.ts.map +1 -1
  194. package/dist/kws.d.ts.map +1 -1
  195. package/dist/kws.js.map +1 -1
  196. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +75 -155
  197. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  198. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts +100 -300
  199. package/dist/lexicons/app/bsky/actor/profile.defs.d.ts.map +1 -1
  200. package/dist/lexicons/app/bsky/actor/status.defs.d.ts +40 -40
  201. package/dist/lexicons/app/bsky/actor/status.defs.d.ts.map +1 -1
  202. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts +4 -4
  203. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
  204. package/dist/lexicons/app/bsky/embed/external.defs.d.ts +10 -10
  205. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts +10 -42
  206. package/dist/lexicons/app/bsky/embed/gallery.defs.d.ts.map +1 -1
  207. package/dist/lexicons/app/bsky/embed/images.defs.d.ts +10 -10
  208. package/dist/lexicons/app/bsky/embed/record.defs.d.ts +10 -10
  209. package/dist/lexicons/app/bsky/embed/recordWithMedia.defs.d.ts +10 -10
  210. package/dist/lexicons/app/bsky/embed/video.defs.d.ts +50 -162
  211. package/dist/lexicons/app/bsky/embed/video.defs.d.ts.map +1 -1
  212. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts +80 -160
  213. package/dist/lexicons/app/bsky/feed/generator.defs.d.ts.map +1 -1
  214. package/dist/lexicons/app/bsky/feed/like.defs.d.ts +30 -30
  215. package/dist/lexicons/app/bsky/feed/like.defs.d.ts.map +1 -1
  216. package/dist/lexicons/app/bsky/feed/post.defs.d.ts +80 -200
  217. package/dist/lexicons/app/bsky/feed/post.defs.d.ts.map +1 -1
  218. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts +40 -80
  219. package/dist/lexicons/app/bsky/feed/postgate.defs.d.ts.map +1 -1
  220. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts +30 -30
  221. package/dist/lexicons/app/bsky/feed/repost.defs.d.ts.map +1 -1
  222. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts +30 -30
  223. package/dist/lexicons/app/bsky/feed/threadgate.defs.d.ts.map +1 -1
  224. package/dist/lexicons/app/bsky/graph/block.defs.d.ts +20 -20
  225. package/dist/lexicons/app/bsky/graph/block.defs.d.ts.map +1 -1
  226. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts +30 -30
  227. package/dist/lexicons/app/bsky/graph/follow.defs.d.ts.map +1 -1
  228. package/dist/lexicons/app/bsky/graph/list.defs.d.ts +70 -70
  229. package/dist/lexicons/app/bsky/graph/list.defs.d.ts.map +1 -1
  230. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts +20 -20
  231. package/dist/lexicons/app/bsky/graph/listblock.defs.d.ts.map +1 -1
  232. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts +20 -20
  233. package/dist/lexicons/app/bsky/graph/listitem.defs.d.ts.map +1 -1
  234. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts +50 -90
  235. package/dist/lexicons/app/bsky/graph/starterpack.defs.d.ts.map +1 -1
  236. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts +30 -30
  237. package/dist/lexicons/app/bsky/graph/verification.defs.d.ts.map +1 -1
  238. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts +60 -140
  239. package/dist/lexicons/app/bsky/labeler/service.defs.d.ts.map +1 -1
  240. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts +10 -10
  241. package/dist/lexicons/app/bsky/notification/declaration.defs.d.ts.map +1 -1
  242. package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts +10 -10
  243. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts +20 -20
  244. package/dist/lexicons/chat/bsky/actor/declaration.defs.d.ts.map +1 -1
  245. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts +17 -0
  246. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  247. package/dist/lexicons/chat/bsky/convo/defs.defs.js +11 -0
  248. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  249. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts +7 -3
  250. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts.map +1 -1
  251. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js +5 -2
  252. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js.map +1 -1
  253. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts +1 -1
  254. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.d.ts.map +1 -1
  255. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js +1 -0
  256. package/dist/lexicons/chat/bsky/convo/sendMessage.defs.js.map +1 -1
  257. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts +1 -1
  258. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.d.ts.map +1 -1
  259. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js +1 -0
  260. package/dist/lexicons/chat/bsky/convo/sendMessageBatch.defs.js.map +1 -1
  261. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts +10 -42
  262. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts.map +1 -1
  263. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts +10 -10
  264. package/dist/lexicons/com/atproto/lexicon/schema.defs.d.ts.map +1 -1
  265. package/dist/lexicons/com/atproto/repo/strongRef.defs.d.ts +10 -10
  266. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts +40 -120
  267. package/dist/lexicons/com/germnetwork/declaration.defs.d.ts.map +1 -1
  268. package/dist/lexicons/site/standard/document.defs.d.ts +140 -460
  269. package/dist/lexicons/site/standard/document.defs.d.ts.map +1 -1
  270. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts +10 -10
  271. package/dist/lexicons/site/standard/graph/recommend.defs.d.ts.map +1 -1
  272. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts +20 -60
  273. package/dist/lexicons/site/standard/graph/subscription.defs.d.ts.map +1 -1
  274. package/dist/lexicons/site/standard/publication.defs.d.ts +60 -220
  275. package/dist/lexicons/site/standard/publication.defs.d.ts.map +1 -1
  276. package/dist/lexicons/site/standard/theme/basic.defs.d.ts +10 -10
  277. package/dist/lexicons/site/standard/theme/basic.defs.d.ts.map +1 -1
  278. package/dist/lexicons/tools/ozone/moderation/queryStatuses.defs.d.ts +2 -2
  279. package/dist/lexicons/tools/ozone/set/querySets.defs.d.ts +2 -2
  280. package/dist/pipeline.d.ts.map +1 -1
  281. package/dist/proto/bsky_connect.d.ts.map +1 -1
  282. package/dist/proto/bsky_pb.d.ts.map +1 -1
  283. package/dist/proto/bsky_pb.js.map +1 -1
  284. package/dist/proto/bsync_connect.d.ts.map +1 -1
  285. package/dist/proto/bsync_pb.d.ts.map +1 -1
  286. package/dist/proto/bsync_pb.js.map +1 -1
  287. package/dist/proto/courier_connect.d.ts.map +1 -1
  288. package/dist/proto/courier_pb.d.ts.map +1 -1
  289. package/dist/proto/courier_pb.js.map +1 -1
  290. package/dist/proto/rolodex_connect.d.ts.map +1 -1
  291. package/dist/proto/rolodex_pb.d.ts.map +1 -1
  292. package/dist/proto/rolodex_pb.js.map +1 -1
  293. package/dist/redis.d.ts.map +1 -1
  294. package/dist/rolodex.d.ts.map +1 -1
  295. package/dist/stash.d.ts.map +1 -1
  296. package/dist/stash.js.map +1 -1
  297. package/dist/util/debug.d.ts.map +1 -1
  298. package/dist/util/standard-site.d.ts.map +1 -1
  299. package/dist/util.d.ts.map +1 -1
  300. package/dist/views/index.d.ts.map +1 -1
  301. package/dist/views/types.d.ts +1 -1
  302. package/dist/views/types.d.ts.map +1 -1
  303. package/dist/views/util.d.ts.map +1 -1
  304. package/dist/views/util.js.map +1 -1
  305. package/package.json +17 -18
  306. package/src/api/app/bsky/actor/searchActors.ts +17 -6
  307. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +11 -5
  308. package/src/api/app/bsky/feed/searchPosts.ts +12 -5
  309. package/src/api/app/bsky/graph/searchStarterPacks.ts +14 -5
  310. package/src/api/app/bsky/unspecced/getPopularFeedGenerators.ts +9 -2
  311. package/src/api/util.ts +17 -0
  312. package/src/config.ts +9 -0
  313. package/src/data-plane/server/db/db.ts +1 -1
  314. package/src/data-plane/server/db/migrations/20230627T212437895Z-optional-handle.ts +2 -4
  315. package/src/data-plane/server/db/migrations/provider.ts +2 -1
  316. package/src/data-plane/server/db/pagination.ts +15 -15
  317. package/src/data-plane/server/db/util.ts +8 -5
  318. package/src/data-plane/server/indexing/plugins/post.ts +5 -4
  319. package/src/data-plane/server/routes/blocks.ts +30 -24
  320. package/src/data-plane/server/routes/feed-gens.ts +2 -2
  321. package/src/data-plane/server/routes/feeds.ts +23 -19
  322. package/src/data-plane/server/routes/labels.ts +2 -2
  323. package/src/data-plane/server/routes/mutes.ts +8 -6
  324. package/src/data-plane/server/routes/notifs.ts +15 -12
  325. package/src/data-plane/server/routes/relationships.ts +4 -2
  326. package/src/data-plane/server/routes/suggestions.ts +2 -2
  327. package/tests/data-plane/subscription.test.ts +18 -16
  328. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/suggestions.ts"],"names":[],"mappings":"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","sourcesContent":["import { ServiceImpl } from '@connectrpc/connect'\nimport { sql } from 'kysely'\nimport { Service } from '../../../proto/bsky_connect.js'\nimport { Database } from '../db/index.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getFollowSuggestions(req) {\n const { actorDid, relativeToDid, cursor, limit } = req\n if (relativeToDid) {\n return getFollowSuggestionsRelativeTo(db, {\n actorDid,\n relativeToDid,\n cursor: cursor || undefined,\n limit: limit || undefined,\n })\n } else {\n return getFollowSuggestionsGlobal(db, {\n actorDid,\n cursor: cursor || undefined,\n limit: limit || undefined,\n })\n }\n },\n\n async getSuggestedEntities() {\n const entities = await db.db\n .selectFrom('tagged_suggestion')\n .selectAll()\n .execute()\n return {\n entities,\n }\n },\n})\n\nconst getFollowSuggestionsGlobal = async (\n db: Database,\n input: { actorDid: string; cursor?: string; limit?: number },\n) => {\n const alreadyIncluded = parseCursor(input.cursor)\n const suggestions = await db.db\n .selectFrom('suggested_follow')\n .innerJoin('actor', 'actor.did', 'suggested_follow.did')\n .if(alreadyIncluded.length > 0, (qb) =>\n qb.where('suggested_follow.order', 'not in', alreadyIncluded),\n )\n .selectAll()\n .orderBy('suggested_follow.order', 'asc')\n .execute()\n\n // always include first two\n const firstTwo = suggestions.filter(\n (row) => row.order === 1 || row.order === 2,\n )\n const rest = suggestions.filter((row) => row.order !== 1 && row.order !== 2)\n const limited = firstTwo.concat(shuffle(rest)).slice(0, input.limit)\n\n // if the result set ends up getting larger, consider using a seed included in the cursor for the randomized shuffle\n const cursor =\n limited.length > 0\n ? limited\n .map((row) => row.order.toString())\n .concat(alreadyIncluded.map((id) => id.toString()))\n .join(':')\n : undefined\n\n return {\n dids: limited.map((s) => s.did),\n cursor,\n }\n}\n\nconst getFollowSuggestionsRelativeTo = async (\n db: Database,\n input: {\n actorDid: string\n relativeToDid: string\n cursor?: string\n limit?: number\n },\n) => {\n if (input.cursor) return { dids: [] }\n const limit = input.limit ? Math.min(10, input.limit) : 10\n const actorsViewerFollows = db.db\n .selectFrom('follow')\n .where('creator', '=', input.actorDid)\n .select('subjectDid')\n const mostLikedAccounts = await db.db\n .selectFrom(\n db.db\n .selectFrom('like')\n .where('creator', '=', input.relativeToDid)\n .select(sql`split_part(subject, '/', 3)`.as('subjectDid'))\n .orderBy('sortAt', 'desc')\n .limit(1000) // limit to 1000\n .as('likes'),\n )\n .select('likes.subjectDid as did')\n .select((qb) => qb.fn.count('likes.subjectDid').as('count'))\n .where('likes.subjectDid', 'not in', actorsViewerFollows)\n .where('likes.subjectDid', 'not in', [input.actorDid, input.relativeToDid])\n .groupBy('likes.subjectDid')\n .orderBy('count', 'desc')\n .limit(limit)\n .execute()\n const resultDids = mostLikedAccounts.map((a) => ({ did: a.did })) as {\n did: string\n }[]\n\n if (resultDids.length < limit) {\n // backfill with popular accounts followed by actor\n const mostPopularAccountsActorFollows = await db.db\n .selectFrom('follow')\n .innerJoin('profile_agg', 'follow.subjectDid', 'profile_agg.did')\n .select('follow.subjectDid as did')\n .where('follow.creator', '=', input.actorDid)\n .where('follow.subjectDid', '!=', input.relativeToDid)\n .where('follow.subjectDid', 'not in', actorsViewerFollows)\n .if(resultDids.length > 0, (qb) =>\n qb.where(\n 'subjectDid',\n 'not in',\n resultDids.map((a) => a.did),\n ),\n )\n .orderBy('profile_agg.followersCount', 'desc')\n .limit(limit)\n .execute()\n\n resultDids.push(...mostPopularAccountsActorFollows)\n }\n\n if (resultDids.length < limit) {\n // backfill with suggested_follow table\n const additional = await db.db\n .selectFrom('suggested_follow')\n .where(\n 'did',\n 'not in',\n // exclude any we already have\n resultDids\n .map((a) => a.did)\n .concat([input.actorDid, input.relativeToDid]),\n )\n // and aren't already followed by viewer\n .where('did', 'not in', actorsViewerFollows)\n .selectAll()\n .execute()\n\n resultDids.push(...additional)\n }\n\n return { dids: resultDids.map((x) => x.did) }\n}\n\nconst parseCursor = (cursor?: string): number[] => {\n if (!cursor) {\n return []\n }\n try {\n return cursor\n .split(':')\n .map((id) => parseInt(id, 10))\n .filter((id) => !isNaN(id))\n } catch {\n return []\n }\n}\n\nconst shuffle = <T>(arr: T[]): T[] => {\n return arr\n .map((value) => ({ value, sort: Math.random() }))\n .sort((a, b) => a.sort - b.sort)\n .map(({ value }) => value)\n}\n"]}
1
+ {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/suggestions.ts"],"names":[],"mappings":"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","sourcesContent":["import { ServiceImpl } from '@connectrpc/connect'\nimport { sql } from 'kysely'\nimport { Service } from '../../../proto/bsky_connect.js'\nimport { Database } from '../db/index.js'\n\nexport default (db: Database): Partial<ServiceImpl<typeof Service>> => ({\n async getFollowSuggestions(req) {\n const { actorDid, relativeToDid, cursor, limit } = req\n if (relativeToDid) {\n return getFollowSuggestionsRelativeTo(db, {\n actorDid,\n relativeToDid,\n cursor: cursor || undefined,\n limit: limit || undefined,\n })\n } else {\n return getFollowSuggestionsGlobal(db, {\n actorDid,\n cursor: cursor || undefined,\n limit: limit || undefined,\n })\n }\n },\n\n async getSuggestedEntities() {\n const entities = await db.db\n .selectFrom('tagged_suggestion')\n .selectAll()\n .execute()\n return {\n entities,\n }\n },\n})\n\nconst getFollowSuggestionsGlobal = async (\n db: Database,\n input: { actorDid: string; cursor?: string; limit?: number },\n) => {\n const alreadyIncluded = parseCursor(input.cursor)\n const suggestions = await db.db\n .selectFrom('suggested_follow')\n .innerJoin('actor', 'actor.did', 'suggested_follow.did')\n .$if(alreadyIncluded.length > 0, (qb) =>\n qb.where('suggested_follow.order', 'not in', alreadyIncluded),\n )\n .selectAll()\n .orderBy('suggested_follow.order', 'asc')\n .execute()\n\n // always include first two\n const firstTwo = suggestions.filter(\n (row) => row.order === 1 || row.order === 2,\n )\n const rest = suggestions.filter((row) => row.order !== 1 && row.order !== 2)\n const limited = firstTwo.concat(shuffle(rest)).slice(0, input.limit)\n\n // if the result set ends up getting larger, consider using a seed included in the cursor for the randomized shuffle\n const cursor =\n limited.length > 0\n ? limited\n .map((row) => row.order.toString())\n .concat(alreadyIncluded.map((id) => id.toString()))\n .join(':')\n : undefined\n\n return {\n dids: limited.map((s) => s.did),\n cursor,\n }\n}\n\nconst getFollowSuggestionsRelativeTo = async (\n db: Database,\n input: {\n actorDid: string\n relativeToDid: string\n cursor?: string\n limit?: number\n },\n) => {\n if (input.cursor) return { dids: [] }\n const limit = input.limit ? Math.min(10, input.limit) : 10\n const actorsViewerFollows = db.db\n .selectFrom('follow')\n .where('creator', '=', input.actorDid)\n .select('subjectDid')\n const mostLikedAccounts = await db.db\n .selectFrom(\n db.db\n .selectFrom('like')\n .where('creator', '=', input.relativeToDid)\n .select(sql`split_part(subject, '/', 3)`.as('subjectDid'))\n .orderBy('sortAt', 'desc')\n .limit(1000) // limit to 1000\n .as('likes'),\n )\n .select('likes.subjectDid as did')\n .select((qb) => qb.fn.count('likes.subjectDid').as('count'))\n .where('likes.subjectDid', 'not in', actorsViewerFollows)\n .where('likes.subjectDid', 'not in', [input.actorDid, input.relativeToDid])\n .groupBy('likes.subjectDid')\n .orderBy('count', 'desc')\n .limit(limit)\n .execute()\n const resultDids = mostLikedAccounts.map((a) => ({ did: a.did })) as {\n did: string\n }[]\n\n if (resultDids.length < limit) {\n // backfill with popular accounts followed by actor\n const mostPopularAccountsActorFollows = await db.db\n .selectFrom('follow')\n .innerJoin('profile_agg', 'follow.subjectDid', 'profile_agg.did')\n .select('follow.subjectDid as did')\n .where('follow.creator', '=', input.actorDid)\n .where('follow.subjectDid', '!=', input.relativeToDid)\n .where('follow.subjectDid', 'not in', actorsViewerFollows)\n .$if(resultDids.length > 0, (qb) =>\n qb.where(\n 'subjectDid',\n 'not in',\n resultDids.map((a) => a.did),\n ),\n )\n .orderBy('profile_agg.followersCount', 'desc')\n .limit(limit)\n .execute()\n\n resultDids.push(...mostPopularAccountsActorFollows)\n }\n\n if (resultDids.length < limit) {\n // backfill with suggested_follow table\n const additional = await db.db\n .selectFrom('suggested_follow')\n .where(\n 'did',\n 'not in',\n // exclude any we already have\n resultDids\n .map((a) => a.did)\n .concat([input.actorDid, input.relativeToDid]),\n )\n // and aren't already followed by viewer\n .where('did', 'not in', actorsViewerFollows)\n .selectAll()\n .execute()\n\n resultDids.push(...additional)\n }\n\n return { dids: resultDids.map((x) => x.did) }\n}\n\nconst parseCursor = (cursor?: string): number[] => {\n if (!cursor) {\n return []\n }\n try {\n return cursor\n .split(':')\n .map((id) => parseInt(id, 10))\n .filter((id) => !isNaN(id))\n } catch {\n return []\n }\n}\n\nconst shuffle = <T>(arr: T[]): T[] => {\n return arr\n .map((value) => ({ value, sort: Math.random() }))\n .sort((a, b) => a.sort - b.sort)\n .map(({ value }) => value)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;yBAEzB,IAAI,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAAnE,wBAWE"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;6BAErB,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;yBAGzB,IAAI,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAAnE,wBA2BE"}
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../../src/data-plane/server/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;6BAGrB,QAAQ,KAAG,OAAO,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAA0B,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,qBAAa,gBAAgB;IAOlB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE;IANxE,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,eAAe,CAAA;IAC3B,WAAW,EAAE,eAAe,CAAA;gBAGnB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE;IAexE,KAAK;IAIC,OAAO;IAYP,UAAU;IAKV,OAAO;CAKd"}
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAA0B,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,qBAAa,gBAAgB;IAOlB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE;IANxE,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,eAAe,CAAA;IAC3B,WAAW,EAAE,eAAe,CAAA;IAE5B,YACS,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,EAavE;IAED,KAAK,SAEJ;IAEK,OAAO,kBAUZ;IAEK,UAAU,kBAGf;IAEK,OAAO,kBAIZ;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/data-plane/server/subscription.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAA0B,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,OAAO,gBAAgB;IAM3B,YACS,IAA+D;QAA/D,SAAI,GAAJ,IAAI,CAA2D;QAEtE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QACxC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAEvE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YAC1C,UAAU;YACV,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QACpB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;YAC1C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAChC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC;CACF;AAED,MAAM,cAAc,GAAG,CAAC,IAIvB,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACjD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,UAAU;QACV,MAAM;QACN,OAAO;QACP,sBAAsB,EAAE,IAAI,EAAE,iCAAiC;QAC/D,sBAAsB,EAAE,IAAI,EAAE,8GAA8G;QAC5I,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC;QAC7D,WAAW,EAAE,KAAK,EAAE,GAAkB,EAAE,EAAE;YACxC,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC7B,MAAM,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACxD,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrD,MAAM,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACxC,CAAC;qBAAM,CAAC;oBACN,MAAM,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,OAAO,CAAC,GAAG,CAAC;oBAChB,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;oBACxD,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;iBAC3C,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GACX,GAAG,CAAC,KAAK,KAAK,QAAQ;oBACpB,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oBACnC,CAAC,CAAC,WAAW,CAAC,WAAW,CACrB,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,KAAK,KAAK,QAAQ;wBACpB,CAAC,CAAC,aAAa,CAAC,MAAM;wBACtB,CAAC,CAAC,aAAa,CAAC,MAAM,EACxB,GAAG,CAAC,IAAI,CACT,CAAA;gBACP,MAAM,OAAO,CAAC,GAAG,CAAC;oBAChB,OAAO;oBACP,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;oBAC3D,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;iBAC3C,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAA;IACF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AAC7B,CAAC,CAAA","sourcesContent":["import { IdResolver } from '@atproto/identity'\nimport { WriteOpAction } from '@atproto/repo'\nimport { Event as FirehoseEvent, Firehose, MemoryRunner } from '@atproto/sync'\nimport { subLogger as log } from '../../logger.js'\nimport { BackgroundQueue } from './background.js'\nimport { Database } from './db/index.js'\nimport { IndexingService } from './indexing/index.js'\n\nexport class RepoSubscription {\n firehose: Firehose\n runner: MemoryRunner\n background: BackgroundQueue\n indexingSvc: IndexingService\n\n constructor(\n public opts: { service: string; db: Database; idResolver: IdResolver },\n ) {\n const { service, db, idResolver } = opts\n this.background = new BackgroundQueue(db)\n this.indexingSvc = new IndexingService(db, idResolver, this.background)\n\n const { runner, firehose } = createFirehose({\n idResolver,\n service,\n indexingSvc: this.indexingSvc,\n })\n this.runner = runner\n this.firehose = firehose\n }\n\n start() {\n this.firehose.start()\n }\n\n async restart() {\n await this.destroy()\n const { runner, firehose } = createFirehose({\n idResolver: this.opts.idResolver,\n service: this.opts.service,\n indexingSvc: this.indexingSvc,\n })\n this.runner = runner\n this.firehose = firehose\n this.start()\n }\n\n async processAll() {\n await this.runner.processAll()\n await this.background.processAll()\n }\n\n async destroy() {\n await this.firehose.destroy()\n await this.runner.destroy()\n await this.background.processAll()\n }\n}\n\nconst createFirehose = (opts: {\n idResolver: IdResolver\n service: string\n indexingSvc: IndexingService\n}) => {\n const { idResolver, service, indexingSvc } = opts\n const runner = new MemoryRunner({ startCursor: 0 })\n const firehose = new Firehose({\n idResolver,\n runner,\n service,\n unauthenticatedHandles: true, // indexing service handles these\n unauthenticatedCommits: true, // @TODO there seems to be a very rare issue where the authenticator thinks a block is missing in deletion ops\n onError: (err) => log.error({ err }, 'error in subscription'),\n handleEvent: async (evt: FirehoseEvent) => {\n if (evt.event === 'identity') {\n await indexingSvc.indexHandle(evt.did, evt.time, true)\n } else if (evt.event === 'account') {\n if (evt.active === false && evt.status === 'deleted') {\n await indexingSvc.deleteActor(evt.did)\n } else {\n await indexingSvc.updateActorStatus(evt.did, evt.active, evt.status)\n }\n } else if (evt.event === 'sync') {\n await Promise.all([\n indexingSvc.setCommitLastSeen(evt.did, evt.cid, evt.rev),\n indexingSvc.indexHandle(evt.did, evt.time),\n ])\n } else {\n const indexFn =\n evt.event === 'delete'\n ? indexingSvc.deleteRecord(evt.uri)\n : indexingSvc.indexRecord(\n evt.uri,\n evt.cid,\n evt.record,\n evt.event === 'create'\n ? WriteOpAction.Create\n : WriteOpAction.Update,\n evt.time,\n )\n await Promise.all([\n indexFn,\n indexingSvc.setCommitLastSeen(evt.did, evt.commit, evt.rev),\n indexingSvc.indexHandle(evt.did, evt.time),\n ])\n }\n },\n })\n return { firehose, runner }\n}\n"]}
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/data-plane/server/subscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { IdResolver } from '@atproto/identity'\nimport { WriteOpAction } from '@atproto/repo'\nimport { Event as FirehoseEvent, Firehose, MemoryRunner } from '@atproto/sync'\nimport { subLogger as log } from '../../logger.js'\nimport { BackgroundQueue } from './background.js'\nimport { Database } from './db/index.js'\nimport { IndexingService } from './indexing/index.js'\n\nexport class RepoSubscription {\n firehose: Firehose\n runner: MemoryRunner\n background: BackgroundQueue\n indexingSvc: IndexingService\n\n constructor(\n public opts: { service: string; db: Database; idResolver: IdResolver },\n ) {\n const { service, db, idResolver } = opts\n this.background = new BackgroundQueue(db)\n this.indexingSvc = new IndexingService(db, idResolver, this.background)\n\n const { runner, firehose } = createFirehose({\n idResolver,\n service,\n indexingSvc: this.indexingSvc,\n })\n this.runner = runner\n this.firehose = firehose\n }\n\n start() {\n this.firehose.start()\n }\n\n async restart() {\n await this.destroy()\n const { runner, firehose } = createFirehose({\n idResolver: this.opts.idResolver,\n service: this.opts.service,\n indexingSvc: this.indexingSvc,\n })\n this.runner = runner\n this.firehose = firehose\n this.start()\n }\n\n async processAll() {\n await this.runner.processAll()\n await this.background.processAll()\n }\n\n async destroy() {\n await this.firehose.destroy()\n await this.runner.destroy()\n await this.background.processAll()\n }\n}\n\nconst createFirehose = (opts: {\n idResolver: IdResolver\n service: string\n indexingSvc: IndexingService\n}) => {\n const { idResolver, service, indexingSvc } = opts\n const runner = new MemoryRunner({ startCursor: 0 })\n const firehose = new Firehose({\n idResolver,\n runner,\n service,\n unauthenticatedHandles: true, // indexing service handles these\n unauthenticatedCommits: true, // @TODO there seems to be a very rare issue where the authenticator thinks a block is missing in deletion ops\n onError: (err) => log.error({ err }, 'error in subscription'),\n handleEvent: async (evt: FirehoseEvent) => {\n if (evt.event === 'identity') {\n await indexingSvc.indexHandle(evt.did, evt.time, true)\n } else if (evt.event === 'account') {\n if (evt.active === false && evt.status === 'deleted') {\n await indexingSvc.deleteActor(evt.did)\n } else {\n await indexingSvc.updateActorStatus(evt.did, evt.active, evt.status)\n }\n } else if (evt.event === 'sync') {\n await Promise.all([\n indexingSvc.setCommitLastSeen(evt.did, evt.cid, evt.rev),\n indexingSvc.indexHandle(evt.did, evt.time),\n ])\n } else {\n const indexFn =\n evt.event === 'delete'\n ? indexingSvc.deleteRecord(evt.uri)\n : indexingSvc.indexRecord(\n evt.uri,\n evt.cid,\n evt.record,\n evt.event === 'create'\n ? WriteOpAction.Create\n : WriteOpAction.Update,\n evt.time,\n )\n await Promise.all([\n indexFn,\n indexingSvc.setCommitLastSeen(evt.did, evt.commit, evt.rev),\n indexingSvc.indexHandle(evt.did, evt.time),\n ])\n }\n },\n })\n return { firehose, runner }\n}\n"]}
@@ -3,32 +3,40 @@ import { DatabaseSchema } from './db/database-schema.js';
3
3
  export declare const getDescendentsQb: (db: DatabaseSchema, opts: {
4
4
  uri: string;
5
5
  depth: number;
6
- }) => import("kysely").QueryCreatorWithCommonTableExpression<import("./db/database-schema.js").DatabaseSchemaType, "descendent(uri, depth)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & Record<"descendent", {
7
- uri: any;
8
- depth: any;
9
- }>>) => import("kysely").SelectQueryBuilder<import("kysely/dist/esm/parser/table-parser.js").From<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & Record<"descendent", {
10
- uri: any;
11
- depth: any;
12
- }>, "post">, "post", import("kysely").Selection<import("kysely/dist/esm/parser/table-parser.js").From<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & Record<"descendent", {
13
- uri: any;
14
- depth: any;
15
- }>, "post">, "post", "post.uri as uri" | import("kysely").AliasedRawBuilder<number, "depth">>>>;
6
+ }) => import("kysely").QueryCreatorWithCommonTableExpression<import("./db/database-schema.js").DatabaseSchemaType, "descendent(uri, depth)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & {
7
+ descendent: {
8
+ depth: any;
9
+ uri: any;
10
+ };
11
+ }>) => import("kysely").SelectQueryBuilder<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & {
12
+ descendent: {
13
+ depth: any;
14
+ uri: any;
15
+ };
16
+ }, "post", {
17
+ depth: number;
18
+ uri: string;
19
+ }>>;
16
20
  export declare const getAncestorsAndSelfQb: (db: DatabaseSchema, opts: {
17
21
  uri: string;
18
22
  parentHeight: number;
19
- }) => import("kysely").QueryCreatorWithCommonTableExpression<import("./db/database-schema.js").DatabaseSchemaType, "ancestor(uri, ancestorUri, height)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & Record<"ancestor", {
20
- uri: any;
21
- ancestorUri: any;
22
- height: any;
23
- }>>) => import("kysely").SelectQueryBuilder<import("kysely/dist/esm/parser/table-parser.js").From<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & Record<"ancestor", {
24
- uri: any;
25
- ancestorUri: any;
26
- height: any;
27
- }>, "post">, "post", import("kysely").Selection<import("kysely/dist/esm/parser/table-parser.js").From<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & Record<"ancestor", {
28
- uri: any;
29
- ancestorUri: any;
30
- height: any;
31
- }>, "post">, "post", "post.uri as uri" | "post.replyParent as ancestorUri" | import("kysely").AliasedRawBuilder<number, "height">>>>;
23
+ }) => import("kysely").QueryCreatorWithCommonTableExpression<import("./db/database-schema.js").DatabaseSchemaType, "ancestor(uri, ancestorUri, height)", (cte: import("kysely").QueryCreator<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & {
24
+ ancestor: {
25
+ ancestorUri: any;
26
+ height: any;
27
+ uri: any;
28
+ };
29
+ }>) => import("kysely").SelectQueryBuilder<import("./db/tables/duplicate-record.js").PartialDB & import("./db/tables/profile.js").PartialDB & import("./db/tables/profile-agg.js").PartialDB & import("./db/tables/post.js").PartialDB & import("./db/tables/post-embed.js").PartialDB & import("./db/tables/post-agg.js").PartialDB & import("./db/tables/repost.js").PartialDB & import("./db/tables/thread-gate.js").PartialDB & import("./db/tables/post-gate.js").PartialDB & import("./db/tables/feed-item.js").PartialDB & import("./db/tables/follow.js").PartialDB & import("./db/tables/like.js").PartialDB & import("./db/tables/list.js").PartialDB & import("./db/tables/list-item.js").PartialDB & import("./db/tables/list-mute.js").PartialDB & import("./db/tables/list-block.js").PartialDB & import("./db/tables/mute.js").PartialDB & import("./db/tables/actor-block.js").PartialDB & import("./db/tables/thread-mute.js").PartialDB & import("./db/tables/feed-generator.js").PartialDB & import("./db/tables/subscription.js").PartialDB & import("./db/tables/actor.js").PartialDB & import("./db/tables/actor-state.js").PartialDB & import("./db/tables/actor-sync.js").PartialDB & import("./db/tables/record.js").PartialDB & import("./db/tables/notification.js").PartialDB & import("./db/tables/notification-push-token.js").PartialDB & import("./db/tables/did-cache.js").PartialDB & import("./db/tables/label.js").PartialDB & import("./db/tables/algo.js").PartialDB & import("./db/tables/view-param.js").PartialDB & import("./db/tables/suggested-follow.js").PartialDB & import("./db/tables/suggested-feed.js").PartialDB & import("./db/tables/blob-takedown.js").PartialDB & import("./db/tables/labeler.js").PartialDB & import("./db/tables/starter-pack.js").PartialDB & import("./db/tables/tagged-suggestion.js").PartialDB & import("./db/tables/quote.js").PartialDB & import("./db/tables/verification.js").PartialDB & import("./db/tables/private-data.js").PartialDB & import("./db/tables/activity-subscription.js").PartialDB & import("./db/tables/bookmark.js").PartialDB & import("./db/tables/draft.js").PartialDB & {
30
+ ancestor: {
31
+ ancestorUri: any;
32
+ height: any;
33
+ uri: any;
34
+ };
35
+ }, "post", {
36
+ ancestorUri: string | null;
37
+ height: number;
38
+ uri: string;
39
+ }>>;
32
40
  export declare const invalidReplyRoot: (reply: PostReplyRef, parent: {
33
41
  record: PostRecord;
34
42
  invalidReplyRoot: boolean | null;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,eAAO,MAAM,gBAAgB,GAC3B,IAAI,cAAc,EAClB,MAAM;IACJ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;;;;;;;;;+FAqBF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,IAAI,cAAc,EAClB,MAAM;IACJ,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;CACrB;;;;;;;;;;;;oIA4BF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,OAAO,YAAY,EACnB,QAAQ;IACN,MAAM,EAAE,UAAU,CAAA;IAClB,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAA;CACjC,YAcF,CAAA;AACD,eAAO,MAAM,kBAAkB,GAC7B,IAAI,cAAc,EAClB,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,UAAU,UAAU,GAAG,IAAI,EAC3B,MAAM,UAAU,GAAG,IAAI,qBAwDxB,CAAA;AAID,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,SAAS;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,KACA,eAqCF,CAAA"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/data-plane/server/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,eAAO,MAAM,gBAAgB,OACvB,cAAc,QACZ;IACJ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;;;;;;;;;;;;;GAqBF,CAAA;AAED,eAAO,MAAM,qBAAqB,OAC5B,cAAc,QACZ;IACJ,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;CACrB;;;;;;;;;;;;;;;;GA4BF,CAAA;AAED,eAAO,MAAM,gBAAgB,UACpB,YAAY,UACX;IACN,MAAM,EAAE,UAAU,CAAA;IAClB,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAA;CACjC,YAcF,CAAA;AACD,eAAO,MAAM,kBAAkB,OACzB,cAAc,cACN,MAAM,YACR,MAAM,YACN,UAAU,GAAG,IAAI,QACrB,UAAU,GAAG,IAAI,qBAwDxB,CAAA;AAID,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,MAAM,WACL;IACP,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,KACA,eAqCF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"etcd.d.ts","sourceRoot":"","sources":["../src/etcd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtC;;GAEG;AACH,qBAAa,OAAO;IAOhB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IAPhB,KAAK,8BAAoC;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IACrC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,CAAK;gBAGhC,IAAI,EAAE,KAAK,EACX,MAAM,SAAK;IAMf,OAAO;IAyBb,GAAG,CAAC,GAAG,EAAE,MAAM;IAId,MAAM;IAQP,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;IAIzC,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,KAAK;CAMd;AAaD,KAAK,cAAc,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA"}
1
+ {"version":3,"file":"etcd.d.ts","sourceRoot":"","sources":["../src/etcd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtC;;GAEG;AACH,qBAAa,OAAO;IAOhB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IAPhB,KAAK,8BAAoC;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IACrC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE,CAAK;IAE1C,YACU,IAAI,EAAE,KAAK,EACX,MAAM,SAAK,EAIpB;IAEK,OAAO,kBAuBZ;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,iBAEd;IAEA,MAAM,qCAMN;IAED,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,QAExC;IAED,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,KAAK;CAMd;AAaD,KAAK,cAAc,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA"}
package/dist/etcd.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"etcd.js","sourceRoot":"","sources":["../src/etcd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGlC;;GAEG;AACH,MAAM,OAAO,OAAO;IAMlB,YACU,IAAW,EACX,SAAS,EAAE;QADX,SAAI,GAAJ,IAAI,CAAO;QACX,WAAM,GAAN,MAAM,CAAK;QAPrB,UAAK,GAAG,IAAI,GAAG,EAA0B,CAAA;QAGzC,aAAQ,GAAgC,EAAE,CAAA;QAMxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;QACpD,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;YACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;YAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAA;YAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QACnE,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;YACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAA;IAC3C,CAAC;IAED,CAAC,MAAM;QACL,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,OAAgC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAEO,MAAM;QACZ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,GAAG,EAAE,EAAkB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;YAAE,OAAM;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACvB,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAgB;IAC5C,MAAM,OAAO,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1B,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { once } from 'node:events'\nimport { Etcd3, Watcher } from 'etcd3'\n\n/**\n * A reactive map based on the keys and values stored within etcd under a given prefix.\n */\nexport class EtcdMap {\n inner = new Map<string, VersionedValue>()\n watcher: Watcher\n connecting: Promise<void> | undefined\n handlers: ((self: EtcdMap) => void)[] = []\n\n constructor(\n private etcd: Etcd3,\n private prefix = '',\n ) {\n this.watcher = etcd.watch().prefix(prefix).watcher()\n this.connecting = connectWatcher(this.watcher)\n }\n\n async connect() {\n this.watcher.on('put', (kv) => {\n const key = kv.key.toString()\n const value = kv.value.toString()\n const rev = revToInt(kv.mod_revision)\n this.apply(key, { value, rev })\n })\n this.watcher.on('delete', (kv) => {\n const key = kv.key.toString()\n const value = null\n const rev = revToInt(kv.mod_revision)\n this.apply(key, { value, rev })\n })\n await this.connecting?.finally(() => {\n this.connecting = undefined\n })\n const { kvs } = await this.etcd.getAll().prefix(this.prefix).exec()\n for (const kv of kvs) {\n const key = kv.key.toString()\n const value = kv.value.toString()\n const rev = revToInt(kv.mod_revision)\n this.apply(key, { value, rev })\n }\n }\n\n get(key: string) {\n return this.inner.get(key)?.value ?? null\n }\n\n *values() {\n for (const { value } of this.inner.values()) {\n if (value !== null) {\n yield value\n }\n }\n }\n\n onUpdate(handler: (self: EtcdMap) => void) {\n this.handlers.push(handler)\n }\n\n private update() {\n for (const handler of this.handlers) {\n handler(this)\n }\n }\n\n private apply(key, vv: VersionedValue) {\n const curr = this.inner.get(key)\n if (curr && curr.rev > vv.rev) return\n this.inner.set(key, vv)\n this.update()\n }\n}\n\nfunction revToInt(rev: string) {\n return parseInt(rev, 10)\n}\n\nasync function connectWatcher(watcher: Watcher) {\n await Promise.race([\n once(watcher, 'connected'),\n once(watcher, 'error').then((err) => Promise.reject(err)),\n ])\n}\n\ntype VersionedValue = {\n rev: number\n value: string | null\n}\n"]}
1
+ {"version":3,"file":"etcd.js","sourceRoot":"","sources":["../src/etcd.ts"],"names":[],"mappings":"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","sourcesContent":["import { once } from 'node:events'\nimport { Etcd3, Watcher } from 'etcd3'\n\n/**\n * A reactive map based on the keys and values stored within etcd under a given prefix.\n */\nexport class EtcdMap {\n inner = new Map<string, VersionedValue>()\n watcher: Watcher\n connecting: Promise<void> | undefined\n handlers: ((self: EtcdMap) => void)[] = []\n\n constructor(\n private etcd: Etcd3,\n private prefix = '',\n ) {\n this.watcher = etcd.watch().prefix(prefix).watcher()\n this.connecting = connectWatcher(this.watcher)\n }\n\n async connect() {\n this.watcher.on('put', (kv) => {\n const key = kv.key.toString()\n const value = kv.value.toString()\n const rev = revToInt(kv.mod_revision)\n this.apply(key, { value, rev })\n })\n this.watcher.on('delete', (kv) => {\n const key = kv.key.toString()\n const value = null\n const rev = revToInt(kv.mod_revision)\n this.apply(key, { value, rev })\n })\n await this.connecting?.finally(() => {\n this.connecting = undefined\n })\n const { kvs } = await this.etcd.getAll().prefix(this.prefix).exec()\n for (const kv of kvs) {\n const key = kv.key.toString()\n const value = kv.value.toString()\n const rev = revToInt(kv.mod_revision)\n this.apply(key, { value, rev })\n }\n }\n\n get(key: string) {\n return this.inner.get(key)?.value ?? null\n }\n\n *values() {\n for (const { value } of this.inner.values()) {\n if (value !== null) {\n yield value\n }\n }\n }\n\n onUpdate(handler: (self: EtcdMap) => void) {\n this.handlers.push(handler)\n }\n\n private update() {\n for (const handler of this.handlers) {\n handler(this)\n }\n }\n\n private apply(key, vv: VersionedValue) {\n const curr = this.inner.get(key)\n if (curr && curr.rev > vv.rev) return\n this.inner.set(key, vv)\n this.update()\n }\n}\n\nfunction revToInt(rev: string) {\n return parseInt(rev, 10)\n}\n\nasync function connectWatcher(watcher: Watcher) {\n await Promise.race([\n once(watcher, 'connected'),\n once(watcher, 'error').then((err) => Promise.reject(err)),\n ])\n}\n\ntype VersionedValue = {\n rev: number\n value: string | null\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-gates/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAElC,OAAO,EAAE,IAAI,EAA4B,MAAM,YAAY,CAAA;AAE3D,OAAO,EAEL,wBAAwB,EACxB,WAAW,EACZ,MAAM,YAAY,CAAA;AA0BnB,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE1D,qBAAa,kBAAkB;IAa3B,OAAO,CAAC,MAAM;IAZhB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,OAAO,CAAe;IAE9B;;;OAGG;IACH,IAAI,cAAO;gBAGD,MAAM,EAAE;QACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;QAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAA;KACpC;IAOG,KAAK;IA+FX,OAAO;IAUP;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB,KAAK,CAAC,iBAAiB,EAAE,WAAW,GAAG,wBAAwB;IAsB/D;;;;;OAKG;IACH,2BAA2B,CAAC,EAC1B,MAAM,EACN,GAAG,GACJ,EAAE;QACD;;WAEG;QACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB;;WAEG;QACH,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;KACrB,GAAG,WAAW;CAUhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/feature-gates/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAElC,OAAO,EAAE,IAAI,EAA4B,MAAM,YAAY,CAAA;AAE3D,OAAO,EAEL,wBAAwB,EACxB,WAAW,EACZ,MAAM,YAAY,CAAA;AA0BnB,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE1D,qBAAa,kBAAkB;IAa3B,OAAO,CAAC,MAAM;IAZhB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,OAAO,CAAe;IAE9B;;;OAGG;IACH,IAAI,cAAO;IAEX,YACU,MAAM,EAAE;QACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;QAC5B,0BAA0B,CAAC,EAAE,MAAM,CAAA;KACpC,EAKF;IAEK,KAAK,kBA6FV;IAED,OAAO,SAQN;IAED;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB,KAAK,CAAC,iBAAiB,EAAE,WAAW,GAAG,wBAAwB,CAoB9D;IAED;;;;;OAKG;IACH,2BAA2B,CAAC,EAC1B,MAAM,EACN,GAAG,GACJ,EAAE;QACD;;WAEG;QACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB;;WAEG;QACH,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;KACrB,GAAG,WAAW,CASd;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/feature-gates/metrics.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,mBAAmB,EAAE;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,kBAAkB,EAAE,OAAO,CAAA;QAC3B,6DAA6D;QAC7D,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,6DAA6D;QAC7D,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA;AASD,MAAM,MAAM,MAAM,GAAG;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAMnD,OAAO,CAAC,MAAM;IAL1B,YAAY,SAAM;IAElB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAA8B;gBAC/B,MAAM,EAAE,MAAM;IAElC,KAAK;IAQL,IAAI;IAQJ,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,EACrB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EACb,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAkBpC,KAAK;YAMS,SAAS;CA2BxB"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/feature-gates/metrics.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACZ,mBAAmB,EAAE;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,kBAAkB,EAAE,OAAO,CAAA;QAC3B,6DAA6D;QAC7D,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,6DAA6D;QAC7D,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACF,CAAA;AASD,MAAM,MAAM,MAAM,GAAG;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAMnD,OAAO,CAAC,MAAM;IAL1B,YAAY,SAAM;IAElB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAA8B;IACnD,YAAoB,MAAM,EAAE,MAAM,EAAI;IAEtC,KAAK,SAMJ;IAED,IAAI,SAMH;IAED,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,EACrB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EACb,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,QAgBnC;IAED,KAAK,SAIJ;YAEa,SAAS;CA2BxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/feature-gates/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["import { featureGatesLogger } from '../logger.js'\n\ntype Events = {\n 'experiment:viewed': {\n experimentId: string\n variationId: string\n }\n 'feature:viewed': {\n featureId: string\n featureResultValue: unknown\n /** Only available if feature has experiment rules applied */\n experimentId?: string\n /** Only available if feature has experiment rules applied */\n variationId?: string\n }\n}\n\ntype Event<M extends Record<string, any>> = {\n time: number\n event: keyof M\n payload: M[keyof M]\n metadata: Record<string, any>\n}\n\nexport type Config = {\n trackingEndpoint?: string\n}\n\nexport class MetricsClient<M extends Record<string, any> = Events> {\n maxBatchSize = 100\n\n private started: boolean = false\n private queue: Event<M>[] = []\n private flushInterval: NodeJS.Timeout | null = null\n constructor(private config: Config) {}\n\n start() {\n if (this.started) return\n this.started = true\n this.flushInterval = setInterval(() => {\n this.flush()\n }, 10_000)\n }\n\n stop() {\n if (this.flushInterval) {\n clearInterval(this.flushInterval)\n this.flushInterval = null\n }\n this.flush()\n }\n\n track<E extends keyof M>(\n event: E,\n payload: M[E],\n metadata: Record<string, any> = {},\n ) {\n this.start()\n\n const e = {\n source: 'appview',\n time: Date.now(),\n event,\n payload,\n metadata,\n }\n this.queue.push(e)\n\n if (this.queue.length > this.maxBatchSize) {\n this.flush()\n }\n }\n\n flush() {\n if (!this.queue.length) return\n const events = this.queue.splice(0, this.queue.length)\n this.sendBatch(events)\n }\n\n private async sendBatch(events: Event<M>[]) {\n if (!this.config.trackingEndpoint) return\n\n try {\n const res = await fetch(this.config.trackingEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ events }),\n keepalive: true,\n })\n\n if (!res.ok) {\n const errorText = await res.text().catch(() => 'Unknown error')\n featureGatesLogger.error(\n { err: new Error(`${res.status} Failed to fetch - ${errorText}`) },\n 'Failed to send metrics',\n )\n } else {\n // Drain response body to allow connection reuse.\n await res.text().catch(() => {})\n }\n } catch (err) {\n featureGatesLogger.error({ err }, 'Failed to send metrics')\n }\n }\n}\n"]}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/feature-gates/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["import { featureGatesLogger } from '../logger.js'\n\ntype Events = {\n 'experiment:viewed': {\n experimentId: string\n variationId: string\n }\n 'feature:viewed': {\n featureId: string\n featureResultValue: unknown\n /** Only available if feature has experiment rules applied */\n experimentId?: string\n /** Only available if feature has experiment rules applied */\n variationId?: string\n }\n}\n\ntype Event<M extends Record<string, any>> = {\n time: number\n event: keyof M\n payload: M[keyof M]\n metadata: Record<string, any>\n}\n\nexport type Config = {\n trackingEndpoint?: string\n}\n\nexport class MetricsClient<M extends Record<string, any> = Events> {\n maxBatchSize = 100\n\n private started: boolean = false\n private queue: Event<M>[] = []\n private flushInterval: NodeJS.Timeout | null = null\n constructor(private config: Config) {}\n\n start() {\n if (this.started) return\n this.started = true\n this.flushInterval = setInterval(() => {\n this.flush()\n }, 10_000)\n }\n\n stop() {\n if (this.flushInterval) {\n clearInterval(this.flushInterval)\n this.flushInterval = null\n }\n this.flush()\n }\n\n track<E extends keyof M>(\n event: E,\n payload: M[E],\n metadata: Record<string, any> = {},\n ) {\n this.start()\n\n const e = {\n source: 'appview',\n time: Date.now(),\n event,\n payload,\n metadata,\n }\n this.queue.push(e)\n\n if (this.queue.length > this.maxBatchSize) {\n this.flush()\n }\n }\n\n flush() {\n if (!this.queue.length) return\n const events = this.queue.splice(0, this.queue.length)\n this.sendBatch(events)\n }\n\n private async sendBatch(events: Event<M>[]) {\n if (!this.config.trackingEndpoint) return\n\n try {\n const res = await fetch(this.config.trackingEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ events }),\n keepalive: true,\n })\n\n if (!res.ok) {\n const errorText = await res.text().catch(() => 'Unknown error')\n featureGatesLogger.error(\n { err: new Error(`${res.status} Failed to fetch - ${errorText}`) },\n 'Failed to send metrics',\n )\n } else {\n // Drain response body to allow connection reuse.\n await res.text().catch(() => {})\n }\n } catch (err) {\n featureGatesLogger.error({ err }, 'Failed to send metrics')\n }\n }\n}\n"]}
@@ -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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"}
@@ -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 AtIdentifierString,\n AtUriString,\n DatetimeString,\n DidString,\n HandleString,\n isDidIdentifier,\n isHandleIdentifier,\n normalizeHandle,\n} from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, chat, com } from '../lexicons/index.js'\nimport { ActivitySubscription, VerificationMeta } from '../proto/bsky_pb.js'\nimport {\n ChatDeclarationRecord,\n GermDeclarationRecord,\n NotificationDeclarationRecord,\n ProfileRecord,\n StatusRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n 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 priorityNotifications: boolean\n trustedVerifier?: boolean\n verifications: VerificationHydrationState[]\n status?: RecordInfo<StatusRecord>\n germ?: RecordInfo<GermDeclarationRecord>\n allowActivitySubscriptionsFrom: AllowActivitySubscriptions\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 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\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\n | 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 priorityNotifications: actor.priorityNotifications,\n trustedVerifier: actor.trustedVerifier,\n verifications,\n status: status,\n germ: germ,\n allowActivitySubscriptionsFrom: allowActivitySubscriptionsFrom(\n actor.allowActivitySubscriptionsFrom,\n ),\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 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: knownFollowersResults } =\n await this.dataplane.getFollowsFollowing(\n {\n actorDid: viewer,\n targetDids: dids,\n },\n {\n signal: AbortSignal.timeout(100),\n },\n )\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const result = knownFollowersResults[i]?.dids\n\n map.set(\n did,\n result && result.length > 0\n ? {\n count: result.length,\n followers: result.slice(0, 5) as DidString[],\n }\n : undefined,\n )\n }\n } catch {\n // ignore errors and return empty map\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\n | 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 {\n // ignore errors and return empty map\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 AtIdentifierString,\n AtUriString,\n DatetimeString,\n DidString,\n HandleString,\n isDidIdentifier,\n isHandleIdentifier,\n normalizeHandle,\n} from '@atproto/syntax'\nimport { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, chat, com } from '../lexicons/index.js'\nimport { ActivitySubscription, VerificationMeta } from '../proto/bsky_pb.js'\nimport {\n ChatDeclarationRecord,\n GermDeclarationRecord,\n NotificationDeclarationRecord,\n ProfileRecord,\n StatusRecord,\n} from '../views/types.js'\nimport {\n HydrationMap,\n 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 priorityNotifications: boolean\n trustedVerifier?: boolean\n verifications: VerificationHydrationState[]\n status?: RecordInfo<StatusRecord>\n germ?: RecordInfo<GermDeclarationRecord>\n allowActivitySubscriptionsFrom: AllowActivitySubscriptions\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 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\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\n | 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 priorityNotifications: actor.priorityNotifications,\n trustedVerifier: actor.trustedVerifier,\n verifications,\n status: status,\n germ: germ,\n allowActivitySubscriptionsFrom: allowActivitySubscriptionsFrom(\n actor.allowActivitySubscriptionsFrom,\n ),\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 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: knownFollowersResults } =\n await this.dataplane.getFollowsFollowing(\n {\n actorDid: viewer,\n targetDids: dids,\n },\n {\n signal: AbortSignal.timeout(100),\n },\n )\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n\n const result = knownFollowersResults[i]?.dids\n\n map.set(\n did,\n result && result.length > 0\n ? {\n count: result.length,\n followers: result.slice(0, 5) as DidString[],\n }\n : undefined,\n )\n }\n } catch {\n // ignore errors and return empty map\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\n | 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 {\n // ignore errors and return empty map\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 +1 @@
1
- {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/hydration/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAA;AACzE,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,6BAA6B,CAAC,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAC9E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,YAAY,CACjD,MAAM,EACN,uBAAuB,CACxB,CAAA;AACD,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,qBAAqB,CAAA;IAChC,YAAY,EAAE,wBAAwB,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI;IAC5C,GAAG,EAAE;QAAE,GAAG,EAAE,WAAW,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,qBAAa,gBAAgB;IACR,SAAS,EAAE,eAAe;gBAA1B,SAAS,EAAE,eAAe;IAEvC,2BAA2B,CAC/B,IAAI,EAAE,OAAO,EAAE,EACf,gBAAgB,UAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC;IASzB,2BAA2B,CAC/B,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC;CAMhC;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,6CAA6C,GACxD,gBAAgB,SAAS;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,EACxE,WAAW,qBAAqB,GAAG,SAAS,EAC5C,cAAc,wBAAwB,GAAG,SAAS,KACjD;IACD,QAAQ,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAA;IACxE,WAAW,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAA;CAyD/E,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,oDAAoD,GAC/D,WAAW,qBAAqB,GAAG,SAAS,EAC5C,cAAc,wBAAwB,GAAG,SAAS,KACjD;IACD,QAAQ,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAA;IACxE,WAAW,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAA;CA4C/E,CAAA"}
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/hydration/external.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAW/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,WAAW,CAAA;AAE1E,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAA;AACzE,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,6BAA6B,CAAC,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAC9E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,YAAY,CACjD,MAAM,EACN,uBAAuB,CACxB,CAAA;AACD,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,qBAAqB,CAAA;IAChC,YAAY,EAAE,wBAAwB,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI;IAC5C,GAAG,EAAE;QAAE,GAAG,EAAE,WAAW,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,qBAAa,gBAAgB;IACR,SAAS,EAAE,eAAe;IAA7C,YAAmB,SAAS,EAAE,eAAe,EAAI;IAE3C,2BAA2B,CAC/B,IAAI,EAAE,OAAO,EAAE,EACf,gBAAgB,UAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAO9B;IAEK,2BAA2B,CAC/B,IAAI,EAAE,WAAW,EAAE,EACnB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAK9B;CACF;AAkCD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,6CAA6C,mBACxC,SAAS;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,aAC7D,qBAAqB,GAAG,SAAS,gBAC9B,wBAAwB,GAAG,SAAS,KACjD;IACD,QAAQ,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAA;IACxE,WAAW,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAA;CAyD/E,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,oDAAoD,cACpD,qBAAqB,GAAG,SAAS,gBAC9B,wBAAwB,GAAG,SAAS,KACjD;IACD,QAAQ,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAA;IACxE,WAAW,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,GAAG,SAAS,CAAA;CA4C/E,CAAA"}