@atproto/bsky 0.0.269 → 0.0.271

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 (221) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/api/app/bsky/feed/getFeed.d.ts.map +1 -1
  3. package/dist/api/app/bsky/feed/getFeed.js +2 -0
  4. package/dist/api/app/bsky/feed/getFeed.js.map +1 -1
  5. package/dist/api/app/bsky/feed/getListFeed.d.ts.map +1 -1
  6. package/dist/api/app/bsky/feed/getListFeed.js +2 -0
  7. package/dist/api/app/bsky/feed/getListFeed.js.map +1 -1
  8. package/dist/api/app/bsky/feed/getTimeline.d.ts.map +1 -1
  9. package/dist/api/app/bsky/feed/getTimeline.js +2 -0
  10. package/dist/api/app/bsky/feed/getTimeline.js.map +1 -1
  11. package/dist/api/app/bsky/graph/getMutes.js +29 -9
  12. package/dist/api/app/bsky/graph/getMutes.js.map +1 -1
  13. package/dist/api/app/bsky/graph/muteActor.d.ts.map +1 -1
  14. package/dist/api/app/bsky/graph/muteActor.js +3 -1
  15. package/dist/api/app/bsky/graph/muteActor.js.map +1 -1
  16. package/dist/api/app/bsky/notification/updateSeen.js +3 -4
  17. package/dist/api/app/bsky/notification/updateSeen.js.map +1 -1
  18. package/dist/api/app/bsky/unspecced/getPostThreadV2.js +3 -0
  19. package/dist/api/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
  20. package/dist/data-plane/server/bsync-subscription.d.ts.map +1 -1
  21. package/dist/data-plane/server/bsync-subscription.js +6 -2
  22. package/dist/data-plane/server/bsync-subscription.js.map +1 -1
  23. package/dist/data-plane/server/db/database-schema.d.ts +2 -1
  24. package/dist/data-plane/server/db/database-schema.d.ts.map +1 -1
  25. package/dist/data-plane/server/db/database-schema.js.map +1 -1
  26. package/dist/data-plane/server/db/db.d.ts +3 -4
  27. package/dist/data-plane/server/db/db.d.ts.map +1 -1
  28. package/dist/data-plane/server/db/db.js +0 -2
  29. package/dist/data-plane/server/db/db.js.map +1 -1
  30. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.d.ts +4 -0
  31. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.d.ts.map +1 -0
  32. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.js +17 -0
  33. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.js.map +1 -0
  34. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.d.ts +4 -0
  35. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.d.ts.map +1 -0
  36. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.js +14 -0
  37. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.js.map +1 -0
  38. package/dist/data-plane/server/db/migrations/index.d.ts +2 -0
  39. package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
  40. package/dist/data-plane/server/db/migrations/index.js +2 -0
  41. package/dist/data-plane/server/db/migrations/index.js.map +1 -1
  42. package/dist/data-plane/server/db/tables/mute.d.ts +2 -0
  43. package/dist/data-plane/server/db/tables/mute.d.ts.map +1 -1
  44. package/dist/data-plane/server/db/tables/mute.js.map +1 -1
  45. package/dist/data-plane/server/db/tables/op-thread-reply.d.ts +12 -0
  46. package/dist/data-plane/server/db/tables/op-thread-reply.d.ts.map +1 -0
  47. package/dist/data-plane/server/db/tables/op-thread-reply.js +3 -0
  48. package/dist/data-plane/server/db/tables/op-thread-reply.js.map +1 -0
  49. package/dist/data-plane/server/db/types.d.ts.map +1 -1
  50. package/dist/data-plane/server/db/types.js.map +1 -1
  51. package/dist/data-plane/server/db/util.d.ts.map +1 -1
  52. package/dist/data-plane/server/db/util.js.map +1 -1
  53. package/dist/data-plane/server/index.d.ts.map +1 -1
  54. package/dist/data-plane/server/index.js +2 -3
  55. package/dist/data-plane/server/index.js.map +1 -1
  56. package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
  57. package/dist/data-plane/server/indexing/plugins/post.js +22 -0
  58. package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
  59. package/dist/data-plane/server/routes/activity-subscription.d.ts +1 -1
  60. package/dist/data-plane/server/routes/activity-subscription.d.ts.map +1 -1
  61. package/dist/data-plane/server/routes/blocks.d.ts +1 -1
  62. package/dist/data-plane/server/routes/blocks.d.ts.map +1 -1
  63. package/dist/data-plane/server/routes/bookmarks.d.ts +1 -1
  64. package/dist/data-plane/server/routes/bookmarks.d.ts.map +1 -1
  65. package/dist/data-plane/server/routes/drafts.d.ts +1 -1
  66. package/dist/data-plane/server/routes/drafts.d.ts.map +1 -1
  67. package/dist/data-plane/server/routes/drafts.js.map +1 -1
  68. package/dist/data-plane/server/routes/feed-gens.d.ts +1 -1
  69. package/dist/data-plane/server/routes/feed-gens.d.ts.map +1 -1
  70. package/dist/data-plane/server/routes/feeds.d.ts +1 -1
  71. package/dist/data-plane/server/routes/feeds.d.ts.map +1 -1
  72. package/dist/data-plane/server/routes/follows.d.ts +1 -1
  73. package/dist/data-plane/server/routes/follows.d.ts.map +1 -1
  74. package/dist/data-plane/server/routes/identity.d.ts +1 -1
  75. package/dist/data-plane/server/routes/identity.d.ts.map +1 -1
  76. package/dist/data-plane/server/routes/index.d.ts +1 -1
  77. package/dist/data-plane/server/routes/index.d.ts.map +1 -1
  78. package/dist/data-plane/server/routes/interactions.d.ts +1 -1
  79. package/dist/data-plane/server/routes/interactions.d.ts.map +1 -1
  80. package/dist/data-plane/server/routes/labels.d.ts +1 -1
  81. package/dist/data-plane/server/routes/labels.d.ts.map +1 -1
  82. package/dist/data-plane/server/routes/likes.d.ts +1 -1
  83. package/dist/data-plane/server/routes/likes.d.ts.map +1 -1
  84. package/dist/data-plane/server/routes/lists.d.ts +1 -1
  85. package/dist/data-plane/server/routes/lists.d.ts.map +1 -1
  86. package/dist/data-plane/server/routes/moderation.d.ts +1 -1
  87. package/dist/data-plane/server/routes/moderation.d.ts.map +1 -1
  88. package/dist/data-plane/server/routes/mutes.d.ts +1 -1
  89. package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
  90. package/dist/data-plane/server/routes/mutes.js +17 -4
  91. package/dist/data-plane/server/routes/mutes.js.map +1 -1
  92. package/dist/data-plane/server/routes/notifs.d.ts +1 -1
  93. package/dist/data-plane/server/routes/notifs.d.ts.map +1 -1
  94. package/dist/data-plane/server/routes/profile.d.ts +1 -1
  95. package/dist/data-plane/server/routes/profile.d.ts.map +1 -1
  96. package/dist/data-plane/server/routes/quotes.d.ts +1 -1
  97. package/dist/data-plane/server/routes/quotes.d.ts.map +1 -1
  98. package/dist/data-plane/server/routes/records.d.ts +1 -1
  99. package/dist/data-plane/server/routes/records.d.ts.map +1 -1
  100. package/dist/data-plane/server/routes/relationships.d.ts +1 -1
  101. package/dist/data-plane/server/routes/relationships.d.ts.map +1 -1
  102. package/dist/data-plane/server/routes/relationships.js +14 -3
  103. package/dist/data-plane/server/routes/relationships.js.map +1 -1
  104. package/dist/data-plane/server/routes/reposts.d.ts +1 -1
  105. package/dist/data-plane/server/routes/reposts.d.ts.map +1 -1
  106. package/dist/data-plane/server/routes/search.d.ts +1 -1
  107. package/dist/data-plane/server/routes/search.d.ts.map +1 -1
  108. package/dist/data-plane/server/routes/site-standard.d.ts +1 -1
  109. package/dist/data-plane/server/routes/site-standard.d.ts.map +1 -1
  110. package/dist/data-plane/server/routes/sitemap.d.ts +1 -1
  111. package/dist/data-plane/server/routes/sitemap.d.ts.map +1 -1
  112. package/dist/data-plane/server/routes/starter-packs.d.ts +1 -1
  113. package/dist/data-plane/server/routes/starter-packs.d.ts.map +1 -1
  114. package/dist/data-plane/server/routes/suggestions.d.ts +1 -1
  115. package/dist/data-plane/server/routes/suggestions.d.ts.map +1 -1
  116. package/dist/data-plane/server/routes/sync.d.ts +1 -1
  117. package/dist/data-plane/server/routes/sync.d.ts.map +1 -1
  118. package/dist/data-plane/server/routes/threads.d.ts +1 -1
  119. package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
  120. package/dist/data-plane/server/routes/threads.js +89 -2
  121. package/dist/data-plane/server/routes/threads.js.map +1 -1
  122. package/dist/data-plane/server/util.d.ts +4 -4
  123. package/dist/hydration/actor.d.ts +2 -0
  124. package/dist/hydration/actor.d.ts.map +1 -1
  125. package/dist/hydration/actor.js +2 -0
  126. package/dist/hydration/actor.js.map +1 -1
  127. package/dist/hydration/external.d.ts.map +1 -1
  128. package/dist/hydration/external.js.map +1 -1
  129. package/dist/hydration/graph.d.ts.map +1 -1
  130. package/dist/hydration/graph.js.map +1 -1
  131. package/dist/hydration/hydrator.d.ts.map +1 -1
  132. package/dist/hydration/hydrator.js +4 -1
  133. package/dist/hydration/hydrator.js.map +1 -1
  134. package/dist/image/uri.d.ts.map +1 -1
  135. package/dist/image/uri.js.map +1 -1
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +2 -3
  138. package/dist/index.js.map +1 -1
  139. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +11 -0
  140. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  141. package/dist/lexicons/app/bsky/actor/defs.defs.js +2 -0
  142. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  143. package/dist/lexicons/app/bsky/authCreatePosts.defs.d.ts +1 -1
  144. package/dist/lexicons/app/bsky/authCreatePosts.defs.d.ts.map +1 -1
  145. package/dist/lexicons/app/bsky/authDeleteContent.defs.d.ts +1 -1
  146. package/dist/lexicons/app/bsky/authDeleteContent.defs.d.ts.map +1 -1
  147. package/dist/lexicons/app/bsky/authFullApp.defs.d.ts +1 -1
  148. package/dist/lexicons/app/bsky/authFullApp.defs.d.ts.map +1 -1
  149. package/dist/lexicons/app/bsky/authManageFeedDeclarations.defs.d.ts +1 -1
  150. package/dist/lexicons/app/bsky/authManageFeedDeclarations.defs.d.ts.map +1 -1
  151. package/dist/lexicons/app/bsky/authManageLabelerService.defs.d.ts +1 -1
  152. package/dist/lexicons/app/bsky/authManageLabelerService.defs.d.ts.map +1 -1
  153. package/dist/lexicons/app/bsky/authManageModeration.defs.d.ts +1 -1
  154. package/dist/lexicons/app/bsky/authManageModeration.defs.d.ts.map +1 -1
  155. package/dist/lexicons/app/bsky/authManageNotifications.defs.d.ts +1 -1
  156. package/dist/lexicons/app/bsky/authManageNotifications.defs.d.ts.map +1 -1
  157. package/dist/lexicons/app/bsky/authManageProfile.defs.d.ts +1 -1
  158. package/dist/lexicons/app/bsky/authManageProfile.defs.d.ts.map +1 -1
  159. package/dist/lexicons/app/bsky/authViewAll.defs.d.ts +1 -1
  160. package/dist/lexicons/app/bsky/authViewAll.defs.d.ts.map +1 -1
  161. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
  162. package/dist/lexicons/app/bsky/draft/defs.defs.js.map +1 -1
  163. package/dist/lexicons/app/bsky/graph/getMutes.defs.d.ts +1 -1
  164. package/dist/lexicons/app/bsky/graph/getMutes.defs.d.ts.map +1 -1
  165. package/dist/lexicons/app/bsky/graph/getMutes.defs.js +1 -1
  166. package/dist/lexicons/app/bsky/graph/getMutes.defs.js.map +1 -1
  167. package/dist/lexicons/app/bsky/graph/muteActor.defs.d.ts +5 -1
  168. package/dist/lexicons/app/bsky/graph/muteActor.defs.d.ts.map +1 -1
  169. package/dist/lexicons/app/bsky/graph/muteActor.defs.js +3 -1
  170. package/dist/lexicons/app/bsky/graph/muteActor.defs.js.map +1 -1
  171. package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts.map +1 -1
  172. package/dist/lexicons/app/bsky/richtext/facet.defs.js.map +1 -1
  173. package/dist/lexicons/app/bsky/unspecced/defs.defs.d.ts +9 -1
  174. package/dist/lexicons/app/bsky/unspecced/defs.defs.d.ts.map +1 -1
  175. package/dist/lexicons/app/bsky/unspecced/defs.defs.js +2 -0
  176. package/dist/lexicons/app/bsky/unspecced/defs.defs.js.map +1 -1
  177. package/dist/lexicons/chat/bsky/authFullChatClient.defs.d.ts +1 -1
  178. package/dist/lexicons/chat/bsky/authFullChatClient.defs.d.ts.map +1 -1
  179. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  180. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  181. package/dist/lexicons/chat/bsky/group/createGroup.defs.js +1 -1
  182. package/dist/lexicons/chat/bsky/group/createGroup.defs.js.map +1 -1
  183. package/dist/lexicons/com/atproto/sync/defs.defs.d.ts.map +1 -1
  184. package/dist/lexicons/com/atproto/sync/defs.defs.js.map +1 -1
  185. package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts.map +1 -1
  186. package/dist/lexicons/tools/ozone/moderation/defs.defs.js.map +1 -1
  187. package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts +3 -1
  188. package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts.map +1 -1
  189. package/dist/lexicons/tools/ozone/queue/createQueue.defs.js +3 -0
  190. package/dist/lexicons/tools/ozone/queue/createQueue.defs.js.map +1 -1
  191. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts +4 -0
  192. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts.map +1 -1
  193. package/dist/lexicons/tools/ozone/queue/defs.defs.js +2 -0
  194. package/dist/lexicons/tools/ozone/queue/defs.defs.js.map +1 -1
  195. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts +4 -2
  196. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts.map +1 -1
  197. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js +6 -2
  198. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js.map +1 -1
  199. package/dist/lexicons/tools/ozone/report/defs.defs.d.ts.map +1 -1
  200. package/dist/lexicons/tools/ozone/report/defs.defs.js.map +1 -1
  201. package/dist/proto/bsky_pb.d.ts +81 -1
  202. package/dist/proto/bsky_pb.d.ts.map +1 -1
  203. package/dist/proto/bsky_pb.js +104 -1
  204. package/dist/proto/bsky_pb.js.map +1 -1
  205. package/dist/proto/bsync_pb.d.ts +23 -0
  206. package/dist/proto/bsync_pb.d.ts.map +1 -1
  207. package/dist/proto/bsync_pb.js +27 -0
  208. package/dist/proto/bsync_pb.js.map +1 -1
  209. package/dist/util/standard-site.d.ts.map +1 -1
  210. package/dist/util/standard-site.js.map +1 -1
  211. package/dist/views/index.d.ts +5 -0
  212. package/dist/views/index.d.ts.map +1 -1
  213. package/dist/views/index.js +59 -3
  214. package/dist/views/index.js.map +1 -1
  215. package/dist/views/threads-v2.d.ts +1 -0
  216. package/dist/views/threads-v2.d.ts.map +1 -1
  217. package/dist/views/threads-v2.js +8 -2
  218. package/dist/views/threads-v2.js.map +1 -1
  219. package/dist/views/types.d.ts.map +1 -1
  220. package/dist/views/types.js.map +1 -1
  221. package/package.json +16 -16
@@ -71,6 +71,18 @@ export class Views {
71
71
  return false;
72
72
  return !!(viewer.muted || this.mutedByList(viewer, state));
73
73
  }
74
+ viewerRepostMuteExists(did, state) {
75
+ const viewer = state.profileViewers?.get(did);
76
+ if (!viewer)
77
+ return false;
78
+ return !!viewer.mutedOnlyReposts;
79
+ }
80
+ viewerQuotepostMuteExists(did, state) {
81
+ const viewer = state.profileViewers?.get(did);
82
+ if (!viewer)
83
+ return false;
84
+ return !!viewer.mutedOnlyQuoteposts;
85
+ }
74
86
  blockingByList(viewer, state) {
75
87
  return (viewer.blockingByList && this.recordActive(viewer.blockingByList, state));
76
88
  }
@@ -254,8 +266,16 @@ export class Views {
254
266
  const blockingUri = viewer.blocking || blockingByList;
255
267
  const block = !!blockedByUri || !!blockingUri;
256
268
  const mutedByList = this.mutedByList(viewer, state);
269
+ // scoped mute flags are exclusive with muted: when the account is fully
270
+ // muted (directly or via a mutelist), suppress them so a scoped direct
271
+ // mute underneath a list mute doesn't surface both as true.
272
+ const muted = !!(viewer.muted || mutedByList);
257
273
  return {
258
- muted: !!(viewer.muted || mutedByList),
274
+ muted,
275
+ // when muted is true, these are suppressed to avoid confusion
276
+ mutedOnlyReposts: !muted && !!viewer.mutedOnlyReposts,
277
+ // when muted is true, these are suppressed to avoid confusion
278
+ mutedOnlyQuoteposts: !muted && !!viewer.mutedOnlyQuoteposts,
259
279
  mutedByList: mutedByList ? this.listBasic(mutedByList, state) : undefined,
260
280
  blockedBy: !!blockedByUri,
261
281
  blocking: blockingUri,
@@ -607,8 +627,11 @@ export class Views {
607
627
  const grandparentAuthorDid = grandparentUri && creatorFromUri(grandparentUri);
608
628
  return {
609
629
  originatorMuted: this.viewerMuteExists(originatorDid, state),
630
+ originatorRepostMuted: !!item.repost && this.viewerRepostMuteExists(originatorDid, state),
610
631
  originatorBlocked: this.viewerBlockExists(originatorDid, state),
611
632
  authorMuted: this.viewerMuteExists(authorDid, state),
633
+ authorQuotepostMuted: postIsQuotepost(post?.record) &&
634
+ this.viewerQuotepostMuteExists(authorDid, state),
612
635
  authorBlocked: this.viewerBlockExists(authorDid, state),
613
636
  ancestorAuthorBlocked: (!!parentAuthorDid && this.viewerBlockExists(parentAuthorDid, state)) ||
614
637
  (!!grandparentAuthorDid &&
@@ -1052,6 +1075,7 @@ export class Views {
1052
1075
  }
1053
1076
  const thread = sortTrimFlattenThreadTree(anchorTree, {
1054
1077
  opDid,
1078
+ opThreadUris: skeleton.opThread && new Set(skeleton.opThread),
1055
1079
  branchingFactor,
1056
1080
  sort,
1057
1081
  viewer: state.ctx?.viewer ?? null,
@@ -1059,6 +1083,25 @@ export class Views {
1059
1083
  threadTagsHide: this.threadTagsHide,
1060
1084
  visibilityTagRankPrefix: this.visibilityTagRankPrefix,
1061
1085
  }, state.ctx?.features.checkGate(state.ctx.features.Gate.ThreadsReplyRankingExplorationEnable));
1086
+ if (skeleton.opThread) {
1087
+ const indexByUri = new Map(skeleton.opThread.map((uri, i) => [uri, i + 1]));
1088
+ const postCount = skeleton.opThread.length;
1089
+ for (const item of thread) {
1090
+ if (!app.bsky.unspecced.defs.threadItemPost.$isTypeOf(item.value)) {
1091
+ continue;
1092
+ }
1093
+ const index = indexByUri.get(item.uri);
1094
+ item.value.opThread = index !== undefined;
1095
+ if (index !== undefined) {
1096
+ item.value.opThreadPostIndex = index;
1097
+ item.value.opThreadPostCount = postCount;
1098
+ }
1099
+ else {
1100
+ delete item.value.opThreadPostIndex;
1101
+ delete item.value.opThreadPostCount;
1102
+ }
1103
+ }
1104
+ }
1062
1105
  return {
1063
1106
  hasOtherReplies,
1064
1107
  thread,
@@ -1660,9 +1703,9 @@ export class Views {
1660
1703
  // unit, so doc-scoped and publication-scoped labels end up in the same
1661
1704
  // bucket.
1662
1705
  const labels = [
1663
- ...(document ? state.labels?.getBySubject(document.ref.uri) ?? [] : []),
1706
+ ...(document ? (state.labels?.getBySubject(document.ref.uri) ?? []) : []),
1664
1707
  ...(publication
1665
- ? state.labels?.getBySubject(publication.ref.uri) ?? []
1708
+ ? (state.labels?.getBySubject(publication.ref.uri) ?? [])
1666
1709
  : []),
1667
1710
  ];
1668
1711
  if (labels.length)
@@ -1959,6 +2002,19 @@ export class Views {
1959
2002
  const getRootUri = (uri, post) => {
1960
2003
  return post.record.reply?.root.uri ?? uri;
1961
2004
  };
2005
+ const postIsQuotepost = (record) => {
2006
+ const embed = record?.embed;
2007
+ if (!embed)
2008
+ return false;
2009
+ const recordEmbed = isRecordEmbedType(embed)
2010
+ ? embed
2011
+ : isRecordWithMediaType(embed)
2012
+ ? embed.record
2013
+ : undefined;
2014
+ if (!recordEmbed)
2015
+ return false;
2016
+ return (new AtUri(recordEmbed.record.uri).collection === app.bsky.feed.post.$type);
2017
+ };
1962
2018
  const externalEmbedSourceTheme = (theme) => {
1963
2019
  if (!theme)
1964
2020
  return undefined;