@atproto/bsky 0.0.269 → 0.0.270

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 (135) hide show
  1. package/CHANGELOG.md +24 -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.map +1 -1
  27. package/dist/data-plane/server/db/db.js +0 -2
  28. package/dist/data-plane/server/db/db.js.map +1 -1
  29. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.d.ts +4 -0
  30. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.d.ts.map +1 -0
  31. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.js +17 -0
  32. package/dist/data-plane/server/db/migrations/20260618T200000000Z-add-mute-scope.js.map +1 -0
  33. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.d.ts +4 -0
  34. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.d.ts.map +1 -0
  35. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.js +14 -0
  36. package/dist/data-plane/server/db/migrations/20260729T223157563Z-add-op-thread-reply.js.map +1 -0
  37. package/dist/data-plane/server/db/migrations/index.d.ts +2 -0
  38. package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
  39. package/dist/data-plane/server/db/migrations/index.js +2 -0
  40. package/dist/data-plane/server/db/migrations/index.js.map +1 -1
  41. package/dist/data-plane/server/db/tables/mute.d.ts +2 -0
  42. package/dist/data-plane/server/db/tables/mute.d.ts.map +1 -1
  43. package/dist/data-plane/server/db/tables/mute.js.map +1 -1
  44. package/dist/data-plane/server/db/tables/op-thread-reply.d.ts +12 -0
  45. package/dist/data-plane/server/db/tables/op-thread-reply.d.ts.map +1 -0
  46. package/dist/data-plane/server/db/tables/op-thread-reply.js +3 -0
  47. package/dist/data-plane/server/db/tables/op-thread-reply.js.map +1 -0
  48. package/dist/data-plane/server/db/types.d.ts.map +1 -1
  49. package/dist/data-plane/server/db/types.js.map +1 -1
  50. package/dist/data-plane/server/db/util.d.ts.map +1 -1
  51. package/dist/data-plane/server/db/util.js.map +1 -1
  52. package/dist/data-plane/server/index.d.ts.map +1 -1
  53. package/dist/data-plane/server/index.js +2 -3
  54. package/dist/data-plane/server/index.js.map +1 -1
  55. package/dist/data-plane/server/indexing/plugins/post.d.ts.map +1 -1
  56. package/dist/data-plane/server/indexing/plugins/post.js +22 -0
  57. package/dist/data-plane/server/indexing/plugins/post.js.map +1 -1
  58. package/dist/data-plane/server/routes/drafts.js.map +1 -1
  59. package/dist/data-plane/server/routes/mutes.js +17 -4
  60. package/dist/data-plane/server/routes/mutes.js.map +1 -1
  61. package/dist/data-plane/server/routes/relationships.js +14 -3
  62. package/dist/data-plane/server/routes/relationships.js.map +1 -1
  63. package/dist/data-plane/server/routes/threads.d.ts.map +1 -1
  64. package/dist/data-plane/server/routes/threads.js +89 -2
  65. package/dist/data-plane/server/routes/threads.js.map +1 -1
  66. package/dist/data-plane/server/util.d.ts +4 -4
  67. package/dist/hydration/actor.d.ts +2 -0
  68. package/dist/hydration/actor.d.ts.map +1 -1
  69. package/dist/hydration/actor.js +2 -0
  70. package/dist/hydration/actor.js.map +1 -1
  71. package/dist/hydration/external.d.ts.map +1 -1
  72. package/dist/hydration/external.js.map +1 -1
  73. package/dist/hydration/graph.d.ts.map +1 -1
  74. package/dist/hydration/graph.js.map +1 -1
  75. package/dist/hydration/hydrator.d.ts.map +1 -1
  76. package/dist/hydration/hydrator.js +4 -1
  77. package/dist/hydration/hydrator.js.map +1 -1
  78. package/dist/image/uri.d.ts.map +1 -1
  79. package/dist/image/uri.js.map +1 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +2 -3
  82. package/dist/index.js.map +1 -1
  83. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts +11 -0
  84. package/dist/lexicons/app/bsky/actor/defs.defs.d.ts.map +1 -1
  85. package/dist/lexicons/app/bsky/actor/defs.defs.js +2 -0
  86. package/dist/lexicons/app/bsky/actor/defs.defs.js.map +1 -1
  87. package/dist/lexicons/app/bsky/draft/defs.defs.d.ts.map +1 -1
  88. package/dist/lexicons/app/bsky/draft/defs.defs.js.map +1 -1
  89. package/dist/lexicons/app/bsky/graph/getMutes.defs.d.ts +1 -1
  90. package/dist/lexicons/app/bsky/graph/getMutes.defs.d.ts.map +1 -1
  91. package/dist/lexicons/app/bsky/graph/getMutes.defs.js +1 -1
  92. package/dist/lexicons/app/bsky/graph/getMutes.defs.js.map +1 -1
  93. package/dist/lexicons/app/bsky/graph/muteActor.defs.d.ts +5 -1
  94. package/dist/lexicons/app/bsky/graph/muteActor.defs.d.ts.map +1 -1
  95. package/dist/lexicons/app/bsky/graph/muteActor.defs.js +3 -1
  96. package/dist/lexicons/app/bsky/graph/muteActor.defs.js.map +1 -1
  97. package/dist/lexicons/app/bsky/richtext/facet.defs.d.ts.map +1 -1
  98. package/dist/lexicons/app/bsky/richtext/facet.defs.js.map +1 -1
  99. package/dist/lexicons/app/bsky/unspecced/defs.defs.d.ts +9 -1
  100. package/dist/lexicons/app/bsky/unspecced/defs.defs.d.ts.map +1 -1
  101. package/dist/lexicons/app/bsky/unspecced/defs.defs.js +2 -0
  102. package/dist/lexicons/app/bsky/unspecced/defs.defs.js.map +1 -1
  103. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  104. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  105. package/dist/lexicons/chat/bsky/group/createGroup.defs.js +1 -1
  106. package/dist/lexicons/chat/bsky/group/createGroup.defs.js.map +1 -1
  107. package/dist/lexicons/com/atproto/sync/defs.defs.d.ts.map +1 -1
  108. package/dist/lexicons/com/atproto/sync/defs.defs.js.map +1 -1
  109. package/dist/lexicons/tools/ozone/moderation/defs.defs.d.ts.map +1 -1
  110. package/dist/lexicons/tools/ozone/moderation/defs.defs.js.map +1 -1
  111. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts.map +1 -1
  112. package/dist/lexicons/tools/ozone/queue/defs.defs.js.map +1 -1
  113. package/dist/lexicons/tools/ozone/report/defs.defs.d.ts.map +1 -1
  114. package/dist/lexicons/tools/ozone/report/defs.defs.js.map +1 -1
  115. package/dist/proto/bsky_pb.d.ts +81 -1
  116. package/dist/proto/bsky_pb.d.ts.map +1 -1
  117. package/dist/proto/bsky_pb.js +104 -1
  118. package/dist/proto/bsky_pb.js.map +1 -1
  119. package/dist/proto/bsync_pb.d.ts +23 -0
  120. package/dist/proto/bsync_pb.d.ts.map +1 -1
  121. package/dist/proto/bsync_pb.js +27 -0
  122. package/dist/proto/bsync_pb.js.map +1 -1
  123. package/dist/util/standard-site.d.ts.map +1 -1
  124. package/dist/util/standard-site.js.map +1 -1
  125. package/dist/views/index.d.ts +5 -0
  126. package/dist/views/index.d.ts.map +1 -1
  127. package/dist/views/index.js +59 -3
  128. package/dist/views/index.js.map +1 -1
  129. package/dist/views/threads-v2.d.ts +1 -0
  130. package/dist/views/threads-v2.d.ts.map +1 -1
  131. package/dist/views/threads-v2.js +8 -2
  132. package/dist/views/threads-v2.js.map +1 -1
  133. package/dist/views/types.d.ts.map +1 -1
  134. package/dist/views/types.js.map +1 -1
  135. package/package.json +15 -14
@@ -54,6 +54,7 @@ export declare function sortTrimFlattenThreadTree(anchorTree: ThreadTree, option
54
54
  type SortTrimFlattenOptions = {
55
55
  branchingFactor: GetPostThreadV2QueryParams['branchingFactor'];
56
56
  opDid: string;
57
+ opThreadUris?: ReadonlySet<string>;
57
58
  sort?: GetPostThreadV2QueryParams['sort'];
58
59
  viewer: HydrateCtx['viewer'];
59
60
  threadTagsBumpDown: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"threads-v2.d.ts","sourceRoot":"","sources":["../../src/views/threads-v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads-v2.d.ts","sourceRoot":"","sources":["../../src/views/threads-v2.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ function applyBumping(aNode, bNode, opts) {
46
46
  if (!isPostNode(bNode)) {
47
47
  return null;
48
48
  }
49
- const { opDid, viewer, threadTagsBumpDown, threadTagsHide } = opts;
49
+ const { opDid, opThreadUris, viewer, threadTagsBumpDown, threadTagsHide } = opts;
50
50
  const maybeBump = (bump, predicateFn) => {
51
51
  const aPredicate = predicateFn(aNode);
52
52
  const bPredicate = predicateFn(bNode);
@@ -68,6 +68,9 @@ function applyBumping(aNode, bNode, opts) {
68
68
  /*
69
69
  General bumps.
70
70
  */
71
+ // OP thread replies: the chain continuation always appears first beneath
72
+ // its parent, regardless of the selected sort.
73
+ ['up', (i) => !!opThreadUris?.has(i.item.uri)],
71
74
  // OP replies.
72
75
  ['up', (i) => i.item.value.post.author.did === opDid],
73
76
  // Viewer replies.
@@ -227,7 +230,7 @@ function applyBumpingExploration(aNode, bNode, opts) {
227
230
  if (!isPostNode(bNode)) {
228
231
  return null;
229
232
  }
230
- const { opDid, viewer } = opts;
233
+ const { opDid, opThreadUris, viewer } = opts;
231
234
  const maybeBump = (bump, predicateFn) => {
232
235
  const aPredicate = predicateFn(aNode);
233
236
  const bPredicate = predicateFn(bNode);
@@ -249,6 +252,9 @@ function applyBumpingExploration(aNode, bNode, opts) {
249
252
  /*
250
253
  General bumps.
251
254
  */
255
+ // OP thread replies: the chain continuation always appears first beneath
256
+ // its parent, regardless of the selected sort.
257
+ ['up', (i) => !!opThreadUris?.has(i.item.uri)],
252
258
  // OP replies.
253
259
  ['up', (i) => i.item.value.post.author.did === opDid],
254
260
  // Viewer replies.
@@ -1 +1 @@
1
- {"version":3,"file":"threads-v2.js","sourceRoot":"","sources":["../../src/views/threads-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import type { $Typed } from '@atproto/lex'\nimport type { HydrateCtx } from '../hydration/hydrator.js'\nimport type {\n GetPostThreadV2QueryParams,\n ThreadItem,\n ThreadItemBlocked,\n ThreadItemNoUnauthenticated,\n ThreadItemNotFound,\n ThreadItemPost,\n ThreadOtherItem,\n} from './types.js'\n\ntype ThreadMaybeOtherPostNode = ThreadPostNode | ThreadOtherPostNode\ntype ThreadNodeWithReplies =\n | ThreadPostNode\n | ThreadOtherPostNode\n | ThreadOtherAnchorPostNode\n\ntype ThreadItemValue<T extends ThreadItem['value']> = Omit<\n ThreadItem,\n 'value'\n> & {\n value: T\n}\n\nexport type ThreadItemValueBlocked = ThreadItemValue<$Typed<ThreadItemBlocked>>\n\nexport type ThreadItemValueNoUnauthenticated = ThreadItemValue<\n $Typed<ThreadItemNoUnauthenticated>\n>\n\nexport type ThreadItemValueNotFound = ThreadItemValue<\n $Typed<ThreadItemNotFound>\n>\n\nexport type ThreadItemValuePost = ThreadItemValue<$Typed<ThreadItemPost>>\n\ntype ThreadBlockedNode = {\n type: 'blocked'\n item: ThreadItemValueBlocked\n}\ntype ThreadNoUnauthenticatedNode = {\n type: 'noUnauthenticated'\n parent: ThreadTree | undefined\n item: ThreadItemValueNoUnauthenticated\n}\n\ntype ThreadNotFoundNode = {\n type: 'notFound'\n item: ThreadItemValueNotFound\n}\n\ntype ThreadPostNode = {\n type: 'post'\n item: ThreadItemValuePost\n tags: Set<string>\n hasOPLike: boolean\n parent: ThreadTree | undefined\n replies: ThreadTree[] | undefined\n}\n\ntype ThreadOtherItemValue<T extends ThreadOtherItem['value']> = Omit<\n ThreadOtherItem,\n 'value'\n> & {\n value: T\n}\n\nexport type ThreadOtherItemValuePost = ThreadOtherItemValue<\n $Typed<ThreadItemPost>\n>\n\n// This is an intermediary type that doesn't map to the views.\n// It is useful to differentiate between the anchor post and the replies for the hidden case,\n// while also differentiating between hidden and visible cases.\nexport type ThreadOtherAnchorPostNode = {\n type: 'hiddenAnchor'\n item: Omit<ThreadOtherItem, 'value'> & { value: undefined }\n replies: ThreadOtherPostNode[] | undefined\n}\n\nexport type ThreadOtherPostNode = {\n type: 'hiddenPost'\n item: ThreadOtherItemValuePost\n tags: Set<string>\n replies: ThreadOtherPostNode[] | undefined\n}\n\nconst isNodeWithReplies = (node: ThreadTree): node is ThreadNodeWithReplies =>\n 'replies' in node && node.replies !== undefined\n\nconst isPostNode = (node: ThreadTree): node is ThreadMaybeOtherPostNode =>\n node.type === 'post' || node.type === 'hiddenPost'\n\nexport type ThreadTreeVisible =\n | ThreadBlockedNode\n | ThreadNoUnauthenticatedNode\n | ThreadNotFoundNode\n | ThreadPostNode\n\nexport type ThreadTreeOther = ThreadOtherAnchorPostNode | ThreadOtherPostNode\n\nexport type ThreadTree = ThreadTreeVisible | ThreadTreeOther\n\n/** This function mutates the tree parameter. */\nexport function sortTrimFlattenThreadTree(\n anchorTree: ThreadTree,\n options: SortTrimFlattenOptions,\n useExploration?: boolean,\n) {\n const sortedAnchorTree = useExploration\n ? sortTrimThreadTreeExploration(anchorTree, options)\n : sortTrimThreadTree(anchorTree, options)\n\n return flattenTree(sortedAnchorTree)\n}\n\ntype SortTrimFlattenOptions = {\n branchingFactor: GetPostThreadV2QueryParams['branchingFactor']\n opDid: string\n sort?: GetPostThreadV2QueryParams['sort']\n viewer: HydrateCtx['viewer']\n threadTagsBumpDown: readonly string[]\n threadTagsHide: readonly string[]\n visibilityTagRankPrefix: string\n}\n\n/** This function mutates the tree parameter. */\nfunction sortTrimThreadTree(\n n: ThreadTree,\n opts: SortTrimFlattenOptions,\n): ThreadTree {\n if (!isNodeWithReplies(n)) {\n return n\n }\n const node: ThreadNodeWithReplies = n\n\n if (node.replies) {\n node.replies.sort((an: ThreadTree, bn: ThreadTree) => {\n if (!isPostNode(an)) {\n return 1\n }\n if (!isPostNode(bn)) {\n return -1\n }\n const aNode: ThreadMaybeOtherPostNode = an\n const bNode: ThreadMaybeOtherPostNode = bn\n\n // First applies bumping.\n const bump = applyBumping(aNode, bNode, opts)\n if (bump !== null) {\n return bump\n }\n\n // Then applies sorting.\n return applySorting(aNode, bNode, opts)\n })\n\n // Trimming: after sorting, apply branching factor to all levels of replies except the anchor direct replies.\n if (node.item.depth !== 0) {\n node.replies = node.replies.slice(0, opts.branchingFactor)\n }\n\n node.replies.forEach((reply) => sortTrimThreadTree(reply, opts))\n }\n\n return node\n}\n\nfunction applyBumping(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number | null {\n if (!isPostNode(aNode)) {\n return null\n }\n if (!isPostNode(bNode)) {\n return null\n }\n\n const { opDid, viewer, threadTagsBumpDown, threadTagsHide } = opts\n\n type BumpDirection = 'up' | 'down'\n type BumpPredicateFn = (i: ThreadMaybeOtherPostNode) => boolean\n\n const maybeBump = (\n bump: BumpDirection,\n predicateFn: BumpPredicateFn,\n ): number | null => {\n const aPredicate = predicateFn(aNode)\n const bPredicate = predicateFn(bNode)\n if (aPredicate && bPredicate) {\n return applySorting(aNode, bNode, opts)\n } else if (aPredicate) {\n return bump === 'up' ? -1 : 1\n } else if (bPredicate) {\n return bump === 'up' ? 1 : -1\n }\n return null\n }\n\n // The order of the bumps determines the priority with which they are applied.\n // Bumps-up applied first make the item appear higher in the list than later bumps-up.\n // Bumps-down applied first make the item appear lower in the list than later bumps-down.\n const bumps: [BumpDirection, BumpPredicateFn][] = [\n /*\n General bumps.\n */\n // OP replies.\n ['up', (i) => i.item.value.post.author.did === opDid],\n // Viewer replies.\n ['up', (i) => i.item.value.post.author.did === viewer],\n\n /*\n Bumps within visible replies.\n */\n // Followers posts.\n [\n 'up',\n (i) => i.type === 'post' && !!i.item.value.post.author.viewer?.following,\n ],\n // Bump-down tags.\n [\n 'down',\n (i) => i.type === 'post' && threadTagsBumpDown.some((t) => i.tags.has(t)),\n ],\n\n /*\n Bumps within hidden replies.\n This determines the order of hidden replies:\n 1. hidden by threadgate.\n 2. hidden by tags.\n 3. muted by viewer.\n */\n // Muted account by the viewer.\n ['down', (i) => i.type === 'hiddenPost' && i.item.value.mutedByViewer],\n // Hidden by tags.\n [\n 'down',\n (i) =>\n i.type === 'hiddenPost' && threadTagsHide.some((t) => i.tags.has(t)),\n ],\n // Hidden by threadgate.\n ['down', (i) => i.type === 'hiddenPost' && i.item.value.hiddenByThreadgate],\n ]\n\n for (const [bump, predicateFn] of bumps) {\n const bumpResult = maybeBump(bump, predicateFn)\n if (bumpResult !== null) {\n return bumpResult\n }\n }\n\n return null\n}\n\nfunction applySorting(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number {\n const a = aNode.item.value\n const b = bNode.item.value\n\n // Only customize sort for visible posts.\n if (aNode.type === 'post' && bNode.type === 'post') {\n const { sort } = opts\n\n if (sort === 'oldest') {\n return a.post.indexedAt.localeCompare(b.post.indexedAt)\n }\n if (sort === 'top') {\n const aLikes = a.post.likeCount ?? 0\n const bLikes = b.post.likeCount ?? 0\n const aTop = topSortValue(aLikes, aNode.hasOPLike)\n const bTop = topSortValue(bLikes, bNode.hasOPLike)\n if (aTop !== bTop) {\n return bTop - aTop\n }\n }\n }\n\n // Fallback to newest.\n return b.post.indexedAt.localeCompare(a.post.indexedAt)\n}\n\nfunction topSortValue(likeCount: number, hasOPLike: boolean): number {\n return Math.log(3 + likeCount) * (hasOPLike ? 1.45 : 1.0)\n}\n\nfunction flattenTree(tree: ThreadTree) {\n return [\n // All parents above.\n ...Array.from(\n flattenInDirection({\n tree,\n direction: 'up',\n }),\n ),\n\n // The anchor.\n // In the case of hidden replies, the anchor item itself is undefined.\n ...(tree.item.value ? [tree.item] : []),\n\n // All replies below.\n ...Array.from(\n flattenInDirection({\n tree,\n direction: 'down',\n }),\n ),\n ]\n}\n\nfunction* flattenInDirection({\n tree,\n direction,\n}: {\n tree: ThreadTree\n direction: 'up' | 'down'\n}) {\n if (tree.type === 'noUnauthenticated') {\n if (direction === 'up') {\n if (tree.parent) {\n // Unfold all parents above.\n yield* flattenTree(tree.parent)\n }\n }\n }\n\n if (tree.type === 'post') {\n if (direction === 'up') {\n if (tree.parent) {\n // Unfold all parents above.\n yield* flattenTree(tree.parent)\n }\n } else {\n // Unfold all replies below.\n if (tree.replies?.length) {\n for (const reply of tree.replies) {\n yield* flattenTree(reply)\n }\n }\n }\n }\n\n // For the first level of hidden replies, the items are undefined.\n if (tree.type === 'hiddenAnchor' || tree.type === 'hiddenPost') {\n if (direction === 'down') {\n // Unfold all replies below.\n if (tree.replies?.length) {\n for (const reply of tree.replies) {\n yield* flattenTree(reply)\n }\n }\n }\n }\n}\n\nexport function sortTrimThreadTreeExploration(\n n: ThreadTree,\n opts: SortTrimFlattenOptions,\n): ThreadTree {\n if (!isNodeWithReplies(n)) {\n return n\n }\n const node: ThreadNodeWithReplies = n\n\n if (node.replies) {\n node.replies.sort((an: ThreadTree, bn: ThreadTree) => {\n if (!isPostNode(an)) {\n return 1\n }\n if (!isPostNode(bn)) {\n return -1\n }\n const aNode: ThreadMaybeOtherPostNode = an\n const bNode: ThreadMaybeOtherPostNode = bn\n\n // First applies bumping.\n const bump = applyBumpingExploration(aNode, bNode, opts)\n if (bump !== null) {\n return bump\n }\n\n // Then applies sorting.\n return applySortingExploration(aNode, bNode, opts)\n })\n\n // Trimming: after sorting, apply branching factor to all levels of replies except the anchor direct replies.\n if (node.item.depth !== 0) {\n node.replies = node.replies.slice(0, opts.branchingFactor)\n }\n\n node.replies.forEach((reply) => sortTrimThreadTreeExploration(reply, opts))\n }\n\n return node\n}\n\nfunction applyBumpingExploration(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number | null {\n if (!isPostNode(aNode)) {\n return null\n }\n if (!isPostNode(bNode)) {\n return null\n }\n\n const { opDid, viewer } = opts\n\n type BumpDirection = 'up' | 'down'\n type BumpPredicateFn = (i: ThreadMaybeOtherPostNode) => boolean\n\n const maybeBump = (\n bump: BumpDirection,\n predicateFn: BumpPredicateFn,\n ): number | null => {\n const aPredicate = predicateFn(aNode)\n const bPredicate = predicateFn(bNode)\n if (aPredicate && bPredicate) {\n return applySortingExploration(aNode, bNode, opts)\n } else if (aPredicate) {\n return bump === 'up' ? -1 : 1\n } else if (bPredicate) {\n return bump === 'up' ? 1 : -1\n }\n return null\n }\n\n // The order of the bumps determines the priority with which they are applied.\n // Bumps-up applied first make the item appear higher in the list than later bumps-up.\n // Bumps-down applied first make the item appear lower in the list than later bumps-down.\n const bumps: [BumpDirection, BumpPredicateFn][] = [\n /*\n General bumps.\n */\n // OP replies.\n ['up', (i) => i.item.value.post.author.did === opDid],\n // Viewer replies.\n ['up', (i) => i.item.value.post.author.did === viewer],\n ]\n\n for (const [bump, predicateFn] of bumps) {\n const bumpResult = maybeBump(bump, predicateFn)\n if (bumpResult !== null) {\n return bumpResult\n }\n }\n\n return null\n}\n\nfunction applySortingExploration(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number {\n const { visibilityTagRankPrefix: rp } = opts\n\n const a = aNode.item.value\n const ar = !rp ? 0 : parseRankFromTag(rp, findRankTag(aNode.tags, rp))\n const b = bNode.item.value\n const br = !rp ? 0 : parseRankFromTag(rp, findRankTag(bNode.tags, rp))\n\n // Only customize sort for visible posts.\n if (aNode.type === 'post' && bNode.type === 'post') {\n const { sort } = opts\n\n if (sort === 'oldest') {\n return a.post.indexedAt.localeCompare(b.post.indexedAt)\n }\n if (sort === 'top') {\n const aLikes = a.post.likeCount ?? 0\n const bLikes = b.post.likeCount ?? 0\n const aTop = topSortValue(aLikes, aNode.hasOPLike)\n const bTop = topSortValue(bLikes, bNode.hasOPLike)\n const aRank = aTop + ar\n const bRank = bTop + br\n if (aRank !== bRank) {\n return bRank - aRank\n }\n }\n }\n\n // Fallback to newest.\n return b.post.indexedAt.localeCompare(a.post.indexedAt)\n}\n\nfunction findRankTag(tags: Set<string>, prefix: string) {\n return Array.from(tags.values()).find((tag) => tag.startsWith(prefix))\n}\n\nfunction parseRankFromTag(prefix: string, tag?: string) {\n if (!tag) return 0\n\n try {\n const rank = parseInt(tag.slice(prefix.length), 10)\n if (typeof rank !== 'number' || isNaN(rank)) {\n return 0\n }\n return rank\n } catch {\n return 0\n }\n}\n"]}
1
+ {"version":3,"file":"threads-v2.js","sourceRoot":"","sources":["../../src/views/threads-v2.ts"],"names":[],"mappings":"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","sourcesContent":["import type { $Typed } from '@atproto/lex'\nimport type { HydrateCtx } from '../hydration/hydrator.js'\nimport type {\n GetPostThreadV2QueryParams,\n ThreadItem,\n ThreadItemBlocked,\n ThreadItemNoUnauthenticated,\n ThreadItemNotFound,\n ThreadItemPost,\n ThreadOtherItem,\n} from './types.js'\n\ntype ThreadMaybeOtherPostNode = ThreadPostNode | ThreadOtherPostNode\ntype ThreadNodeWithReplies =\n ThreadPostNode | ThreadOtherPostNode | ThreadOtherAnchorPostNode\n\ntype ThreadItemValue<T extends ThreadItem['value']> = Omit<\n ThreadItem,\n 'value'\n> & {\n value: T\n}\n\nexport type ThreadItemValueBlocked = ThreadItemValue<$Typed<ThreadItemBlocked>>\n\nexport type ThreadItemValueNoUnauthenticated = ThreadItemValue<\n $Typed<ThreadItemNoUnauthenticated>\n>\n\nexport type ThreadItemValueNotFound = ThreadItemValue<\n $Typed<ThreadItemNotFound>\n>\n\nexport type ThreadItemValuePost = ThreadItemValue<$Typed<ThreadItemPost>>\n\ntype ThreadBlockedNode = {\n type: 'blocked'\n item: ThreadItemValueBlocked\n}\ntype ThreadNoUnauthenticatedNode = {\n type: 'noUnauthenticated'\n parent: ThreadTree | undefined\n item: ThreadItemValueNoUnauthenticated\n}\n\ntype ThreadNotFoundNode = {\n type: 'notFound'\n item: ThreadItemValueNotFound\n}\n\ntype ThreadPostNode = {\n type: 'post'\n item: ThreadItemValuePost\n tags: Set<string>\n hasOPLike: boolean\n parent: ThreadTree | undefined\n replies: ThreadTree[] | undefined\n}\n\ntype ThreadOtherItemValue<T extends ThreadOtherItem['value']> = Omit<\n ThreadOtherItem,\n 'value'\n> & {\n value: T\n}\n\nexport type ThreadOtherItemValuePost = ThreadOtherItemValue<\n $Typed<ThreadItemPost>\n>\n\n// This is an intermediary type that doesn't map to the views.\n// It is useful to differentiate between the anchor post and the replies for the hidden case,\n// while also differentiating between hidden and visible cases.\nexport type ThreadOtherAnchorPostNode = {\n type: 'hiddenAnchor'\n item: Omit<ThreadOtherItem, 'value'> & { value: undefined }\n replies: ThreadOtherPostNode[] | undefined\n}\n\nexport type ThreadOtherPostNode = {\n type: 'hiddenPost'\n item: ThreadOtherItemValuePost\n tags: Set<string>\n replies: ThreadOtherPostNode[] | undefined\n}\n\nconst isNodeWithReplies = (node: ThreadTree): node is ThreadNodeWithReplies =>\n 'replies' in node && node.replies !== undefined\n\nconst isPostNode = (node: ThreadTree): node is ThreadMaybeOtherPostNode =>\n node.type === 'post' || node.type === 'hiddenPost'\n\nexport type ThreadTreeVisible =\n | ThreadBlockedNode\n | ThreadNoUnauthenticatedNode\n | ThreadNotFoundNode\n | ThreadPostNode\n\nexport type ThreadTreeOther = ThreadOtherAnchorPostNode | ThreadOtherPostNode\n\nexport type ThreadTree = ThreadTreeVisible | ThreadTreeOther\n\n/** This function mutates the tree parameter. */\nexport function sortTrimFlattenThreadTree(\n anchorTree: ThreadTree,\n options: SortTrimFlattenOptions,\n useExploration?: boolean,\n) {\n const sortedAnchorTree = useExploration\n ? sortTrimThreadTreeExploration(anchorTree, options)\n : sortTrimThreadTree(anchorTree, options)\n\n return flattenTree(sortedAnchorTree)\n}\n\ntype SortTrimFlattenOptions = {\n branchingFactor: GetPostThreadV2QueryParams['branchingFactor']\n opDid: string\n // Posts on the OP thread (the oldest contiguous chain of OP replies from\n // the root). A chain reply always appears first beneath its parent,\n // regardless of the selected sort. The chain is linear, so at most one\n // reply in any sibling group is on it.\n opThreadUris?: ReadonlySet<string>\n sort?: GetPostThreadV2QueryParams['sort']\n viewer: HydrateCtx['viewer']\n threadTagsBumpDown: readonly string[]\n threadTagsHide: readonly string[]\n visibilityTagRankPrefix: string\n}\n\n/** This function mutates the tree parameter. */\nfunction sortTrimThreadTree(\n n: ThreadTree,\n opts: SortTrimFlattenOptions,\n): ThreadTree {\n if (!isNodeWithReplies(n)) {\n return n\n }\n const node: ThreadNodeWithReplies = n\n\n if (node.replies) {\n node.replies.sort((an: ThreadTree, bn: ThreadTree) => {\n if (!isPostNode(an)) {\n return 1\n }\n if (!isPostNode(bn)) {\n return -1\n }\n const aNode: ThreadMaybeOtherPostNode = an\n const bNode: ThreadMaybeOtherPostNode = bn\n\n // First applies bumping.\n const bump = applyBumping(aNode, bNode, opts)\n if (bump !== null) {\n return bump\n }\n\n // Then applies sorting.\n return applySorting(aNode, bNode, opts)\n })\n\n // Trimming: after sorting, apply branching factor to all levels of replies except the anchor direct replies.\n if (node.item.depth !== 0) {\n node.replies = node.replies.slice(0, opts.branchingFactor)\n }\n\n node.replies.forEach((reply) => sortTrimThreadTree(reply, opts))\n }\n\n return node\n}\n\nfunction applyBumping(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number | null {\n if (!isPostNode(aNode)) {\n return null\n }\n if (!isPostNode(bNode)) {\n return null\n }\n\n const { opDid, opThreadUris, viewer, threadTagsBumpDown, threadTagsHide } =\n opts\n\n type BumpDirection = 'up' | 'down'\n type BumpPredicateFn = (i: ThreadMaybeOtherPostNode) => boolean\n\n const maybeBump = (\n bump: BumpDirection,\n predicateFn: BumpPredicateFn,\n ): number | null => {\n const aPredicate = predicateFn(aNode)\n const bPredicate = predicateFn(bNode)\n if (aPredicate && bPredicate) {\n return applySorting(aNode, bNode, opts)\n } else if (aPredicate) {\n return bump === 'up' ? -1 : 1\n } else if (bPredicate) {\n return bump === 'up' ? 1 : -1\n }\n return null\n }\n\n // The order of the bumps determines the priority with which they are applied.\n // Bumps-up applied first make the item appear higher in the list than later bumps-up.\n // Bumps-down applied first make the item appear lower in the list than later bumps-down.\n const bumps: [BumpDirection, BumpPredicateFn][] = [\n /*\n General bumps.\n */\n // OP thread replies: the chain continuation always appears first beneath\n // its parent, regardless of the selected sort.\n ['up', (i) => !!opThreadUris?.has(i.item.uri)],\n // OP replies.\n ['up', (i) => i.item.value.post.author.did === opDid],\n // Viewer replies.\n ['up', (i) => i.item.value.post.author.did === viewer],\n\n /*\n Bumps within visible replies.\n */\n // Followers posts.\n [\n 'up',\n (i) => i.type === 'post' && !!i.item.value.post.author.viewer?.following,\n ],\n // Bump-down tags.\n [\n 'down',\n (i) => i.type === 'post' && threadTagsBumpDown.some((t) => i.tags.has(t)),\n ],\n\n /*\n Bumps within hidden replies.\n This determines the order of hidden replies:\n 1. hidden by threadgate.\n 2. hidden by tags.\n 3. muted by viewer.\n */\n // Muted account by the viewer.\n ['down', (i) => i.type === 'hiddenPost' && i.item.value.mutedByViewer],\n // Hidden by tags.\n [\n 'down',\n (i) =>\n i.type === 'hiddenPost' && threadTagsHide.some((t) => i.tags.has(t)),\n ],\n // Hidden by threadgate.\n ['down', (i) => i.type === 'hiddenPost' && i.item.value.hiddenByThreadgate],\n ]\n\n for (const [bump, predicateFn] of bumps) {\n const bumpResult = maybeBump(bump, predicateFn)\n if (bumpResult !== null) {\n return bumpResult\n }\n }\n\n return null\n}\n\nfunction applySorting(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number {\n const a = aNode.item.value\n const b = bNode.item.value\n\n // Only customize sort for visible posts.\n if (aNode.type === 'post' && bNode.type === 'post') {\n const { sort } = opts\n\n if (sort === 'oldest') {\n return a.post.indexedAt.localeCompare(b.post.indexedAt)\n }\n if (sort === 'top') {\n const aLikes = a.post.likeCount ?? 0\n const bLikes = b.post.likeCount ?? 0\n const aTop = topSortValue(aLikes, aNode.hasOPLike)\n const bTop = topSortValue(bLikes, bNode.hasOPLike)\n if (aTop !== bTop) {\n return bTop - aTop\n }\n }\n }\n\n // Fallback to newest.\n return b.post.indexedAt.localeCompare(a.post.indexedAt)\n}\n\nfunction topSortValue(likeCount: number, hasOPLike: boolean): number {\n return Math.log(3 + likeCount) * (hasOPLike ? 1.45 : 1.0)\n}\n\nfunction flattenTree(tree: ThreadTree) {\n return [\n // All parents above.\n ...Array.from(\n flattenInDirection({\n tree,\n direction: 'up',\n }),\n ),\n\n // The anchor.\n // In the case of hidden replies, the anchor item itself is undefined.\n ...(tree.item.value ? [tree.item] : []),\n\n // All replies below.\n ...Array.from(\n flattenInDirection({\n tree,\n direction: 'down',\n }),\n ),\n ]\n}\n\nfunction* flattenInDirection({\n tree,\n direction,\n}: {\n tree: ThreadTree\n direction: 'up' | 'down'\n}) {\n if (tree.type === 'noUnauthenticated') {\n if (direction === 'up') {\n if (tree.parent) {\n // Unfold all parents above.\n yield* flattenTree(tree.parent)\n }\n }\n }\n\n if (tree.type === 'post') {\n if (direction === 'up') {\n if (tree.parent) {\n // Unfold all parents above.\n yield* flattenTree(tree.parent)\n }\n } else {\n // Unfold all replies below.\n if (tree.replies?.length) {\n for (const reply of tree.replies) {\n yield* flattenTree(reply)\n }\n }\n }\n }\n\n // For the first level of hidden replies, the items are undefined.\n if (tree.type === 'hiddenAnchor' || tree.type === 'hiddenPost') {\n if (direction === 'down') {\n // Unfold all replies below.\n if (tree.replies?.length) {\n for (const reply of tree.replies) {\n yield* flattenTree(reply)\n }\n }\n }\n }\n}\n\nexport function sortTrimThreadTreeExploration(\n n: ThreadTree,\n opts: SortTrimFlattenOptions,\n): ThreadTree {\n if (!isNodeWithReplies(n)) {\n return n\n }\n const node: ThreadNodeWithReplies = n\n\n if (node.replies) {\n node.replies.sort((an: ThreadTree, bn: ThreadTree) => {\n if (!isPostNode(an)) {\n return 1\n }\n if (!isPostNode(bn)) {\n return -1\n }\n const aNode: ThreadMaybeOtherPostNode = an\n const bNode: ThreadMaybeOtherPostNode = bn\n\n // First applies bumping.\n const bump = applyBumpingExploration(aNode, bNode, opts)\n if (bump !== null) {\n return bump\n }\n\n // Then applies sorting.\n return applySortingExploration(aNode, bNode, opts)\n })\n\n // Trimming: after sorting, apply branching factor to all levels of replies except the anchor direct replies.\n if (node.item.depth !== 0) {\n node.replies = node.replies.slice(0, opts.branchingFactor)\n }\n\n node.replies.forEach((reply) => sortTrimThreadTreeExploration(reply, opts))\n }\n\n return node\n}\n\nfunction applyBumpingExploration(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number | null {\n if (!isPostNode(aNode)) {\n return null\n }\n if (!isPostNode(bNode)) {\n return null\n }\n\n const { opDid, opThreadUris, viewer } = opts\n\n type BumpDirection = 'up' | 'down'\n type BumpPredicateFn = (i: ThreadMaybeOtherPostNode) => boolean\n\n const maybeBump = (\n bump: BumpDirection,\n predicateFn: BumpPredicateFn,\n ): number | null => {\n const aPredicate = predicateFn(aNode)\n const bPredicate = predicateFn(bNode)\n if (aPredicate && bPredicate) {\n return applySortingExploration(aNode, bNode, opts)\n } else if (aPredicate) {\n return bump === 'up' ? -1 : 1\n } else if (bPredicate) {\n return bump === 'up' ? 1 : -1\n }\n return null\n }\n\n // The order of the bumps determines the priority with which they are applied.\n // Bumps-up applied first make the item appear higher in the list than later bumps-up.\n // Bumps-down applied first make the item appear lower in the list than later bumps-down.\n const bumps: [BumpDirection, BumpPredicateFn][] = [\n /*\n General bumps.\n */\n // OP thread replies: the chain continuation always appears first beneath\n // its parent, regardless of the selected sort.\n ['up', (i) => !!opThreadUris?.has(i.item.uri)],\n // OP replies.\n ['up', (i) => i.item.value.post.author.did === opDid],\n // Viewer replies.\n ['up', (i) => i.item.value.post.author.did === viewer],\n ]\n\n for (const [bump, predicateFn] of bumps) {\n const bumpResult = maybeBump(bump, predicateFn)\n if (bumpResult !== null) {\n return bumpResult\n }\n }\n\n return null\n}\n\nfunction applySortingExploration(\n aNode: ThreadMaybeOtherPostNode,\n bNode: ThreadMaybeOtherPostNode,\n opts: SortTrimFlattenOptions,\n): number {\n const { visibilityTagRankPrefix: rp } = opts\n\n const a = aNode.item.value\n const ar = !rp ? 0 : parseRankFromTag(rp, findRankTag(aNode.tags, rp))\n const b = bNode.item.value\n const br = !rp ? 0 : parseRankFromTag(rp, findRankTag(bNode.tags, rp))\n\n // Only customize sort for visible posts.\n if (aNode.type === 'post' && bNode.type === 'post') {\n const { sort } = opts\n\n if (sort === 'oldest') {\n return a.post.indexedAt.localeCompare(b.post.indexedAt)\n }\n if (sort === 'top') {\n const aLikes = a.post.likeCount ?? 0\n const bLikes = b.post.likeCount ?? 0\n const aTop = topSortValue(aLikes, aNode.hasOPLike)\n const bTop = topSortValue(bLikes, bNode.hasOPLike)\n const aRank = aTop + ar\n const bRank = bTop + br\n if (aRank !== bRank) {\n return bRank - aRank\n }\n }\n }\n\n // Fallback to newest.\n return b.post.indexedAt.localeCompare(a.post.indexedAt)\n}\n\nfunction findRankTag(tags: Set<string>, prefix: string) {\n return Array.from(tags.values()).find((tag) => tag.startsWith(prefix))\n}\n\nfunction parseRankFromTag(prefix: string, tag?: string) {\n if (!tag) return 0\n\n try {\n const rank = parseInt(tag.slice(prefix.length), 10)\n if (typeof rank !== 'number' || isNaN(rank)) {\n return 0\n }\n return rank\n } catch {\n return 0\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,GAAG,EAAa,MAAM,sBAAsB,CAAA;AAKrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAoBnE,iBAAiB;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAIhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;AAI9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAGlE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAA;AAI7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAA;AAQpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAQhE,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAA;AAoC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;AAG5D,MAAM,CAAC,MAAM,yBAAyB,GACpC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAA;AAa9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAA;AAGnE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAA;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAA;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAA;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAA;AAqB/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAA;AAcrE,oBAAoB;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAsB3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAA;AAK3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA","sourcesContent":["import { app, type chat, com, type site } from '../lexicons/index.js'\n\n// app.bsky.actor\n\nexport type ProfileRecord = app.bsky.actor.profile.Main\nexport const isProfileRecordType = app.bsky.actor.profile.$isTypeOf\n\nexport type ProfileViewer = app.bsky.actor.defs.ViewerState\nexport type KnownFollowers = app.bsky.actor.defs.KnownFollowers\nexport type ProfileAssociatedActivitySubscription =\n app.bsky.actor.defs.ProfileAssociatedActivitySubscription\nexport type ProfileAssociatedChat = app.bsky.actor.defs.ProfileAssociatedChat\nexport type ProfileView = app.bsky.actor.defs.ProfileView\nexport type ProfileViewBasic = app.bsky.actor.defs.ProfileViewBasic\nexport type ProfileViewDetailed = app.bsky.actor.defs.ProfileViewDetailed\nexport type StatusView = app.bsky.actor.defs.StatusView\nexport type VerificationState = app.bsky.actor.defs.VerificationState\nexport type VerificationView = app.bsky.actor.defs.VerificationView\n\nexport type StatusRecord = app.bsky.actor.status.Main\n\n// app.bsky.bookmark\n\nexport type BookmarkView = app.bsky.bookmark.defs.BookmarkView\n\n// app.bsky.embed\n\nexport const isImagesEmbedType = app.bsky.embed.images.$isTypeOf\nexport type ImagesEmbed = app.bsky.embed.images.Main\nexport type ImagesEmbedView = app.bsky.embed.images.View\n\nexport const isVideoEmbedType = app.bsky.embed.video.$isTypeOf\nexport type VideoEmbed = app.bsky.embed.video.Main\nexport type VideoEmbedView = app.bsky.embed.video.View\n\nexport const isGalleryEmbedType = app.bsky.embed.gallery.$isTypeOf\nexport type GalleryEmbed = app.bsky.embed.gallery.Main\nexport type GalleryEmbedView = app.bsky.embed.gallery.View\nexport const isGalleryImageEmbedType = app.bsky.embed.gallery.image.$isTypeOf\nexport type GalleryImageEmbed = app.bsky.embed.gallery.Image\nexport type GalleryImageEmbedView = app.bsky.embed.gallery.ViewImage\n\nexport const isExternalEmbedType = app.bsky.embed.external.$isTypeOf\nexport type ExternalEmbed = app.bsky.embed.external.Main\nexport type ExternalEmbedView = app.bsky.embed.external.View\nexport type ExternalEmbedSourceView = app.bsky.embed.external.ViewExternalSource\nexport type ExternalEmbedSourceThemeView =\n app.bsky.embed.external.ViewExternalSourceTheme\nexport type ExternalEmbedColorRgb = app.bsky.embed.external.ColorRgb\n\nexport const isRecordEmbedType = app.bsky.embed.record.$isTypeOf\nexport type RecordEmbed = app.bsky.embed.record.Main\nexport type RecordEmbedView = app.bsky.embed.record.View\nexport type EmbedBlocked = app.bsky.embed.record.ViewBlocked\nexport type EmbedDetached = app.bsky.embed.record.ViewDetached\nexport type EmbedNotFound = app.bsky.embed.record.ViewNotFound\nexport type PostEmbedView = app.bsky.embed.record.ViewRecord\n\nexport const isRecordWithMediaType = app.bsky.embed.recordWithMedia.$isTypeOf\nexport type RecordWithMedia = app.bsky.embed.recordWithMedia.Main\nexport type RecordWithMediaView = app.bsky.embed.recordWithMedia.View\nexport type RecordWithMediaEmbedView = app.bsky.embed.recordWithMedia.View\n\nexport type Embed =\n | ImagesEmbed\n | VideoEmbed\n | GalleryEmbed\n | ExternalEmbed\n | RecordEmbed\n | RecordWithMedia\n\nexport type EmbedView =\n | ImagesEmbedView\n | VideoEmbedView\n | GalleryEmbedView\n | ExternalEmbedView\n | RecordEmbedView\n | RecordWithMediaView\n\nexport type MaybePostView = PostView | NotFoundPost | BlockedPost\n\nexport type RecordEmbedViewInternal =\n | PostEmbedView\n | GeneratorView\n | ListView\n | LabelerView\n | StarterPackViewBasic\n\n// app.bsky.feed\n\nexport type LikeRecord = app.bsky.feed.like.Main\nexport type RepostRecord = app.bsky.feed.repost.Main\n\nexport type PostRecord = app.bsky.feed.post.Main\nexport const isPostRecordType = app.bsky.feed.post.$isTypeOf\n\nexport type PostgateRecord = app.bsky.feed.postgate.Main\nexport const isPostgateDisableRuleType =\n app.bsky.feed.postgate.disableRule.$isTypeOf\n\nexport type FeedViewPost = app.bsky.feed.defs.FeedViewPost\nexport type ReasonPin = app.bsky.feed.defs.ReasonPin\nexport type ReasonRepost = app.bsky.feed.defs.ReasonRepost\nexport type ReplyRef = app.bsky.feed.defs.ReplyRef\nexport type PostReplyRef = app.bsky.feed.post.ReplyRef\nexport type ThreadViewPost = app.bsky.feed.defs.ThreadViewPost\nexport type ThreadgateView = app.bsky.feed.defs.ThreadgateView\nexport type BlockedPost = app.bsky.feed.defs.BlockedPost\nexport type GeneratorView = app.bsky.feed.defs.GeneratorView\nexport type NotFoundPost = app.bsky.feed.defs.NotFoundPost\nexport type PostView = app.bsky.feed.defs.PostView\nexport const isPostViewType = app.bsky.feed.defs.postView.$isTypeOf\n\nexport type GateRecord = app.bsky.feed.threadgate.Main\nexport const isFollowerRuleType =\n app.bsky.feed.threadgate.followerRule.$isTypeOf\nexport const isFollowingRuleType =\n app.bsky.feed.threadgate.followingRule.$isTypeOf\nexport const isListRuleType = app.bsky.feed.threadgate.listRule.$isTypeOf\nexport const isMentionRuleType = app.bsky.feed.threadgate.mentionRule.$isTypeOf\n\nexport type FeedGenRecord = app.bsky.feed.generator.Main\n\n// app.bsky.graph\n\nexport type BlockRecord = app.bsky.graph.block.Main\nexport type FollowRecord = app.bsky.graph.follow.Main\nexport type ListItemRecord = app.bsky.graph.listitem.Main\nexport type ListItemView = app.bsky.graph.defs.ListItemView\nexport type ListRecord = app.bsky.graph.list.Main\nexport type ListView = app.bsky.graph.defs.ListView\nexport type ListViewBasic = app.bsky.graph.defs.ListViewBasic\nexport type StarterPackRecord = app.bsky.graph.starterpack.Main\nexport type StarterPackView = app.bsky.graph.defs.StarterPackView\nexport type StarterPackViewBasic = app.bsky.graph.defs.StarterPackViewBasic\nexport type VerificationRecord = app.bsky.graph.verification.Main\n\n// app.bsky.labeler\n\nexport type LabelerRecord = app.bsky.labeler.service.Main\nexport const isLabelerRecordType = app.bsky.labeler.service.$isTypeOf\nexport type LabelerView = app.bsky.labeler.defs.LabelerView\nexport type LabelerViewDetailed = app.bsky.labeler.defs.LabelerViewDetailed\n\n// app.bsky.notification\n\nexport type NotificationDeclarationRecord =\n app.bsky.notification.declaration.Main\nexport type ActivitySubscription =\n app.bsky.notification.defs.ActivitySubscription\nexport type NotificationRecordDeleted = app.bsky.notification.defs.RecordDeleted\nexport type NotificationView =\n app.bsky.notification.listNotifications.Notification\n\n// app.bsky.richtext\n\nexport const isMentionFacetType = app.bsky.richtext.facet.mention.$isTypeOf\n\n// app.bsky.unspecced\n\nexport type ThreadItemBlocked = app.bsky.unspecced.defs.ThreadItemBlocked\nexport type ThreadItemNoUnauthenticated =\n app.bsky.unspecced.defs.ThreadItemNoUnauthenticated\nexport type ThreadItemNotFound = app.bsky.unspecced.defs.ThreadItemNotFound\nexport type ThreadItemPost = app.bsky.unspecced.defs.ThreadItemPost\n\nexport type ThreadOtherItem = app.bsky.unspecced.getPostThreadOtherV2.ThreadItem\nexport type GetPostThreadV2QueryParams =\n app.bsky.unspecced.getPostThreadV2.$Params\nexport type ThreadItem = app.bsky.unspecced.getPostThreadV2.ThreadItem\n\n// chat.bsky.actor\n\nexport type ChatDeclarationRecord = chat.bsky.actor.declaration.Main\n\n// com.atproto.label\n\nexport type Label = com.atproto.label.defs.Label\nexport const isSelfLabelsType = com.atproto.label.defs.selfLabels.$isTypeOf\n\n// com.atproto.label\n\nexport type StrongRef = com.atproto.repo.strongRef.Main\nexport const validateStrongRef = com.atproto.repo.strongRef.$safeValidate\n\n// com.germnetwork.declaration\n\nexport type GermDeclarationRecord = com.germnetwork.declaration.Main\n\n// site.standard\n\nexport type SiteStandardDocumentRecord = site.standard.document.Main\nexport type SiteStandardPublicationRecord = site.standard.publication.Main\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/views/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAa,GAAG,EAAa,MAAM,sBAAsB,CAAA;AAKrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAoBnE,iBAAiB;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAIhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;AAI9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAGlE,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAA;AAI7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAA;AAQpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAQhE,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAA;AAgC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;AAG5D,MAAM,CAAC,MAAM,yBAAyB,GACpC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAA;AAa9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAA;AAGnE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAA;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAA;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAA;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAA;AAqB/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAA;AAcrE,oBAAoB;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAA;AAsB3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAA;AAK3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAA","sourcesContent":["import { app, type chat, com, type site } from '../lexicons/index.js'\n\n// app.bsky.actor\n\nexport type ProfileRecord = app.bsky.actor.profile.Main\nexport const isProfileRecordType = app.bsky.actor.profile.$isTypeOf\n\nexport type ProfileViewer = app.bsky.actor.defs.ViewerState\nexport type KnownFollowers = app.bsky.actor.defs.KnownFollowers\nexport type ProfileAssociatedActivitySubscription =\n app.bsky.actor.defs.ProfileAssociatedActivitySubscription\nexport type ProfileAssociatedChat = app.bsky.actor.defs.ProfileAssociatedChat\nexport type ProfileView = app.bsky.actor.defs.ProfileView\nexport type ProfileViewBasic = app.bsky.actor.defs.ProfileViewBasic\nexport type ProfileViewDetailed = app.bsky.actor.defs.ProfileViewDetailed\nexport type StatusView = app.bsky.actor.defs.StatusView\nexport type VerificationState = app.bsky.actor.defs.VerificationState\nexport type VerificationView = app.bsky.actor.defs.VerificationView\n\nexport type StatusRecord = app.bsky.actor.status.Main\n\n// app.bsky.bookmark\n\nexport type BookmarkView = app.bsky.bookmark.defs.BookmarkView\n\n// app.bsky.embed\n\nexport const isImagesEmbedType = app.bsky.embed.images.$isTypeOf\nexport type ImagesEmbed = app.bsky.embed.images.Main\nexport type ImagesEmbedView = app.bsky.embed.images.View\n\nexport const isVideoEmbedType = app.bsky.embed.video.$isTypeOf\nexport type VideoEmbed = app.bsky.embed.video.Main\nexport type VideoEmbedView = app.bsky.embed.video.View\n\nexport const isGalleryEmbedType = app.bsky.embed.gallery.$isTypeOf\nexport type GalleryEmbed = app.bsky.embed.gallery.Main\nexport type GalleryEmbedView = app.bsky.embed.gallery.View\nexport const isGalleryImageEmbedType = app.bsky.embed.gallery.image.$isTypeOf\nexport type GalleryImageEmbed = app.bsky.embed.gallery.Image\nexport type GalleryImageEmbedView = app.bsky.embed.gallery.ViewImage\n\nexport const isExternalEmbedType = app.bsky.embed.external.$isTypeOf\nexport type ExternalEmbed = app.bsky.embed.external.Main\nexport type ExternalEmbedView = app.bsky.embed.external.View\nexport type ExternalEmbedSourceView = app.bsky.embed.external.ViewExternalSource\nexport type ExternalEmbedSourceThemeView =\n app.bsky.embed.external.ViewExternalSourceTheme\nexport type ExternalEmbedColorRgb = app.bsky.embed.external.ColorRgb\n\nexport const isRecordEmbedType = app.bsky.embed.record.$isTypeOf\nexport type RecordEmbed = app.bsky.embed.record.Main\nexport type RecordEmbedView = app.bsky.embed.record.View\nexport type EmbedBlocked = app.bsky.embed.record.ViewBlocked\nexport type EmbedDetached = app.bsky.embed.record.ViewDetached\nexport type EmbedNotFound = app.bsky.embed.record.ViewNotFound\nexport type PostEmbedView = app.bsky.embed.record.ViewRecord\n\nexport const isRecordWithMediaType = app.bsky.embed.recordWithMedia.$isTypeOf\nexport type RecordWithMedia = app.bsky.embed.recordWithMedia.Main\nexport type RecordWithMediaView = app.bsky.embed.recordWithMedia.View\nexport type RecordWithMediaEmbedView = app.bsky.embed.recordWithMedia.View\n\nexport type Embed =\n | ImagesEmbed\n | VideoEmbed\n | GalleryEmbed\n | ExternalEmbed\n | RecordEmbed\n | RecordWithMedia\n\nexport type EmbedView =\n | ImagesEmbedView\n | VideoEmbedView\n | GalleryEmbedView\n | ExternalEmbedView\n | RecordEmbedView\n | RecordWithMediaView\n\nexport type MaybePostView = PostView | NotFoundPost | BlockedPost\n\nexport type RecordEmbedViewInternal =\n PostEmbedView | GeneratorView | ListView | LabelerView | StarterPackViewBasic\n\n// app.bsky.feed\n\nexport type LikeRecord = app.bsky.feed.like.Main\nexport type RepostRecord = app.bsky.feed.repost.Main\n\nexport type PostRecord = app.bsky.feed.post.Main\nexport const isPostRecordType = app.bsky.feed.post.$isTypeOf\n\nexport type PostgateRecord = app.bsky.feed.postgate.Main\nexport const isPostgateDisableRuleType =\n app.bsky.feed.postgate.disableRule.$isTypeOf\n\nexport type FeedViewPost = app.bsky.feed.defs.FeedViewPost\nexport type ReasonPin = app.bsky.feed.defs.ReasonPin\nexport type ReasonRepost = app.bsky.feed.defs.ReasonRepost\nexport type ReplyRef = app.bsky.feed.defs.ReplyRef\nexport type PostReplyRef = app.bsky.feed.post.ReplyRef\nexport type ThreadViewPost = app.bsky.feed.defs.ThreadViewPost\nexport type ThreadgateView = app.bsky.feed.defs.ThreadgateView\nexport type BlockedPost = app.bsky.feed.defs.BlockedPost\nexport type GeneratorView = app.bsky.feed.defs.GeneratorView\nexport type NotFoundPost = app.bsky.feed.defs.NotFoundPost\nexport type PostView = app.bsky.feed.defs.PostView\nexport const isPostViewType = app.bsky.feed.defs.postView.$isTypeOf\n\nexport type GateRecord = app.bsky.feed.threadgate.Main\nexport const isFollowerRuleType =\n app.bsky.feed.threadgate.followerRule.$isTypeOf\nexport const isFollowingRuleType =\n app.bsky.feed.threadgate.followingRule.$isTypeOf\nexport const isListRuleType = app.bsky.feed.threadgate.listRule.$isTypeOf\nexport const isMentionRuleType = app.bsky.feed.threadgate.mentionRule.$isTypeOf\n\nexport type FeedGenRecord = app.bsky.feed.generator.Main\n\n// app.bsky.graph\n\nexport type BlockRecord = app.bsky.graph.block.Main\nexport type FollowRecord = app.bsky.graph.follow.Main\nexport type ListItemRecord = app.bsky.graph.listitem.Main\nexport type ListItemView = app.bsky.graph.defs.ListItemView\nexport type ListRecord = app.bsky.graph.list.Main\nexport type ListView = app.bsky.graph.defs.ListView\nexport type ListViewBasic = app.bsky.graph.defs.ListViewBasic\nexport type StarterPackRecord = app.bsky.graph.starterpack.Main\nexport type StarterPackView = app.bsky.graph.defs.StarterPackView\nexport type StarterPackViewBasic = app.bsky.graph.defs.StarterPackViewBasic\nexport type VerificationRecord = app.bsky.graph.verification.Main\n\n// app.bsky.labeler\n\nexport type LabelerRecord = app.bsky.labeler.service.Main\nexport const isLabelerRecordType = app.bsky.labeler.service.$isTypeOf\nexport type LabelerView = app.bsky.labeler.defs.LabelerView\nexport type LabelerViewDetailed = app.bsky.labeler.defs.LabelerViewDetailed\n\n// app.bsky.notification\n\nexport type NotificationDeclarationRecord =\n app.bsky.notification.declaration.Main\nexport type ActivitySubscription =\n app.bsky.notification.defs.ActivitySubscription\nexport type NotificationRecordDeleted = app.bsky.notification.defs.RecordDeleted\nexport type NotificationView =\n app.bsky.notification.listNotifications.Notification\n\n// app.bsky.richtext\n\nexport const isMentionFacetType = app.bsky.richtext.facet.mention.$isTypeOf\n\n// app.bsky.unspecced\n\nexport type ThreadItemBlocked = app.bsky.unspecced.defs.ThreadItemBlocked\nexport type ThreadItemNoUnauthenticated =\n app.bsky.unspecced.defs.ThreadItemNoUnauthenticated\nexport type ThreadItemNotFound = app.bsky.unspecced.defs.ThreadItemNotFound\nexport type ThreadItemPost = app.bsky.unspecced.defs.ThreadItemPost\n\nexport type ThreadOtherItem = app.bsky.unspecced.getPostThreadOtherV2.ThreadItem\nexport type GetPostThreadV2QueryParams =\n app.bsky.unspecced.getPostThreadV2.$Params\nexport type ThreadItem = app.bsky.unspecced.getPostThreadV2.ThreadItem\n\n// chat.bsky.actor\n\nexport type ChatDeclarationRecord = chat.bsky.actor.declaration.Main\n\n// com.atproto.label\n\nexport type Label = com.atproto.label.defs.Label\nexport const isSelfLabelsType = com.atproto.label.defs.selfLabels.$isTypeOf\n\n// com.atproto.label\n\nexport type StrongRef = com.atproto.repo.strongRef.Main\nexport const validateStrongRef = com.atproto.repo.strongRef.$safeValidate\n\n// com.germnetwork.declaration\n\nexport type GermDeclarationRecord = com.germnetwork.declaration.Main\n\n// site.standard\n\nexport type SiteStandardDocumentRecord = site.standard.document.Main\nexport type SiteStandardPublicationRecord = site.standard.publication.Main\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/bsky",
3
- "version": "0.0.269",
3
+ "version": "0.0.270",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of app.bsky App View (Bluesky API)",
6
6
  "keywords": [
@@ -60,18 +60,18 @@
60
60
  "uint8arrays": "^5.0.0",
61
61
  "undici": "^8.5.0",
62
62
  "zod": "3.23.8",
63
- "@atproto-labs/fetch-node": "^0.3.6",
64
- "@atproto/common": "^0.7.3",
65
- "@atproto/api": "^0.20.36",
66
- "@atproto/did": "^0.5.4",
67
- "@atproto-labs/xrpc-utils": "^0.1.12",
63
+ "@atproto-labs/xrpc-utils": "^0.1.13",
64
+ "@atproto-labs/fetch-node": "^0.3.7",
68
65
  "@atproto/crypto": "^0.5.4",
69
- "@atproto/identity": "^0.5.7",
70
- "@atproto/sync": "^0.3.15",
71
- "@atproto/syntax": "^0.7.2",
72
- "@atproto/lex": "^0.3.2",
73
- "@atproto/repo": "^0.10.7",
74
- "@atproto/xrpc-server": "^0.11.13"
66
+ "@atproto/common": "^0.7.4",
67
+ "@atproto/api": "^0.20.37",
68
+ "@atproto/did": "^0.5.4",
69
+ "@atproto/identity": "^0.5.8",
70
+ "@atproto/repo": "^0.10.8",
71
+ "@atproto/sync": "^0.4.0",
72
+ "@atproto/syntax": "^0.7.3",
73
+ "@atproto/lex": "^0.3.3",
74
+ "@atproto/xrpc-server": "^0.12.0"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@bufbuild/buf": "^1.28.1",
@@ -84,14 +84,15 @@
84
84
  "@types/express-serve-static-core": "^4.17.36",
85
85
  "@types/pg": "^8.15.5",
86
86
  "@types/qs": "^6.9.7",
87
- "vitest": "^4.0.16",
88
- "@atproto/pds": "^0.5.23"
87
+ "vitest": "^4.1.10",
88
+ "@atproto/pds": "^0.5.24"
89
89
  },
90
90
  "scripts": {
91
91
  "codegen:buf": "buf generate ../bsync/proto && buf generate ./proto",
92
92
  "codegen:lex": "lex build --clear --indexFile --lexicons ../../lexicons",
93
93
  "prebuild": "pnpm run '/^(codegen:.+)$/'",
94
94
  "build": "tsgo --build tsconfig.build.json",
95
+ "verify:import": "node --input-type=module -e \"import '@atproto/bsky'\"",
95
96
  "start": "node --enable-source-maps dist/bin.js",
96
97
  "test": "../dev-infra/with-test-redis-and-db.sh vitest run",
97
98
  "test:log": "tail -50 test.log | pino-pretty",