@atproto/bsky 0.0.153 → 0.0.155

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 (33) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/lexicon/lexicons.d.ts +102 -122
  3. package/dist/lexicon/lexicons.d.ts.map +1 -1
  4. package/dist/lexicon/lexicons.js +61 -66
  5. package/dist/lexicon/lexicons.js.map +1 -1
  6. package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts +33 -0
  7. package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts.map +1 -1
  8. package/dist/lexicon/types/app/bsky/unspecced/defs.js +36 -0
  9. package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
  10. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2.d.ts +3 -13
  11. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2.d.ts.map +1 -1
  12. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2.js +0 -9
  13. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2.js.map +1 -1
  14. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.d.ts +2 -29
  15. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.d.ts.map +1 -1
  16. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js +0 -36
  17. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
  18. package/dist/views/index.d.ts.map +1 -1
  19. package/dist/views/index.js +10 -5
  20. package/dist/views/index.js.map +1 -1
  21. package/dist/views/threads-v2.d.ts +5 -4
  22. package/dist/views/threads-v2.d.ts.map +1 -1
  23. package/dist/views/threads-v2.js.map +1 -1
  24. package/package.json +7 -7
  25. package/src/lexicon/lexicons.ts +66 -71
  26. package/src/lexicon/types/app/bsky/unspecced/defs.ts +73 -0
  27. package/src/lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2.ts +3 -22
  28. package/src/lexicon/types/app/bsky/unspecced/getPostThreadV2.ts +5 -72
  29. package/src/views/index.ts +13 -7
  30. package/src/views/threads-v2.ts +21 -23
  31. package/tests/views/__snapshots__/thread-v2.test.ts.snap +69 -23
  32. package/tests/views/thread-v2.test.ts +34 -42
  33. package/tsconfig.tests.tsbuildinfo +1 -1
@@ -11,7 +11,7 @@ import {
11
11
  type OmitKey,
12
12
  } from '../../../../util'
13
13
  import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
14
- import type * as AppBskyFeedDefs from '../feed/defs.js'
14
+ import type * as AppBskyUnspeccedDefs from './defs.js'
15
15
 
16
16
  const is$typed = _is$typed,
17
17
  validate = _validate
@@ -27,7 +27,7 @@ export interface QueryParams {
27
27
  export type InputSchema = undefined
28
28
 
29
29
  export interface OutputSchema {
30
- /** A flat list of thread hidden items. The depth of each item is indicated by the depth property inside the item. */
30
+ /** A flat list of hidden thread items. The depth of each item is indicated by the depth property inside the item. */
31
31
  thread: ThreadHiddenItem[]
32
32
  }
33
33
 
@@ -62,7 +62,7 @@ export interface ThreadHiddenItem {
62
62
  uri: string
63
63
  /** The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths. */
64
64
  depth: number
65
- value: $Typed<ThreadHiddenItemPost> | { $type: string }
65
+ value: $Typed<AppBskyUnspeccedDefs.ThreadItemPost> | { $type: string }
66
66
  }
67
67
 
68
68
  const hashThreadHiddenItem = 'threadHiddenItem'
@@ -74,22 +74,3 @@ export function isThreadHiddenItem<V>(v: V) {
74
74
  export function validateThreadHiddenItem<V>(v: V) {
75
75
  return validate<ThreadHiddenItem & V>(v, id, hashThreadHiddenItem)
76
76
  }
77
-
78
- export interface ThreadHiddenItemPost {
79
- $type?: 'app.bsky.unspecced.getPostThreadHiddenV2#threadHiddenItemPost'
80
- post: AppBskyFeedDefs.PostView
81
- /** The threadgate created by the author indicates this post as a reply to be hidden for everyone consuming the thread. */
82
- hiddenByThreadgate: boolean
83
- /** This is by an account muted by the viewer requesting it. */
84
- mutedByViewer: boolean
85
- }
86
-
87
- const hashThreadHiddenItemPost = 'threadHiddenItemPost'
88
-
89
- export function isThreadHiddenItemPost<V>(v: V) {
90
- return is$typed(v, id, hashThreadHiddenItemPost)
91
- }
92
-
93
- export function validateThreadHiddenItemPost<V>(v: V) {
94
- return validate<ThreadHiddenItemPost & V>(v, id, hashThreadHiddenItemPost)
95
- }
@@ -12,6 +12,7 @@ import {
12
12
  } from '../../../../util'
13
13
  import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
14
14
  import type * as AppBskyFeedDefs from '../feed/defs.js'
15
+ import type * as AppBskyUnspeccedDefs from './defs.js'
15
16
 
16
17
  const is$typed = _is$typed,
17
18
  validate = _validate
@@ -74,10 +75,10 @@ export interface ThreadItem {
74
75
  /** The nesting level of this item in the thread. Depth 0 means the anchor item. Items above have negative depths, items below have positive depths. */
75
76
  depth: number
76
77
  value:
77
- | $Typed<ThreadItemPost>
78
- | $Typed<ThreadItemNoUnauthenticated>
79
- | $Typed<ThreadItemNotFound>
80
- | $Typed<ThreadItemBlocked>
78
+ | $Typed<AppBskyUnspeccedDefs.ThreadItemPost>
79
+ | $Typed<AppBskyUnspeccedDefs.ThreadItemNoUnauthenticated>
80
+ | $Typed<AppBskyUnspeccedDefs.ThreadItemNotFound>
81
+ | $Typed<AppBskyUnspeccedDefs.ThreadItemBlocked>
81
82
  | { $type: string }
82
83
  }
83
84
 
@@ -90,71 +91,3 @@ export function isThreadItem<V>(v: V) {
90
91
  export function validateThreadItem<V>(v: V) {
91
92
  return validate<ThreadItem & V>(v, id, hashThreadItem)
92
93
  }
93
-
94
- export interface ThreadItemPost {
95
- $type?: 'app.bsky.unspecced.getPostThreadV2#threadItemPost'
96
- post: AppBskyFeedDefs.PostView
97
- /** This post has more parents that were not present in the response. This is just a boolean, without the number of parents. */
98
- moreParents: boolean
99
- /** This post has more replies that were not present in the response. This is a numeric value, which is best-effort and might not be accurate. */
100
- moreReplies: number
101
- /** This post is part of a contiguous thread by the OP from the thread root. Many different OP threads can happen in the same thread. */
102
- opThread: boolean
103
- }
104
-
105
- const hashThreadItemPost = 'threadItemPost'
106
-
107
- export function isThreadItemPost<V>(v: V) {
108
- return is$typed(v, id, hashThreadItemPost)
109
- }
110
-
111
- export function validateThreadItemPost<V>(v: V) {
112
- return validate<ThreadItemPost & V>(v, id, hashThreadItemPost)
113
- }
114
-
115
- export interface ThreadItemNoUnauthenticated {
116
- $type?: 'app.bsky.unspecced.getPostThreadV2#threadItemNoUnauthenticated'
117
- }
118
-
119
- const hashThreadItemNoUnauthenticated = 'threadItemNoUnauthenticated'
120
-
121
- export function isThreadItemNoUnauthenticated<V>(v: V) {
122
- return is$typed(v, id, hashThreadItemNoUnauthenticated)
123
- }
124
-
125
- export function validateThreadItemNoUnauthenticated<V>(v: V) {
126
- return validate<ThreadItemNoUnauthenticated & V>(
127
- v,
128
- id,
129
- hashThreadItemNoUnauthenticated,
130
- )
131
- }
132
-
133
- export interface ThreadItemNotFound {
134
- $type?: 'app.bsky.unspecced.getPostThreadV2#threadItemNotFound'
135
- }
136
-
137
- const hashThreadItemNotFound = 'threadItemNotFound'
138
-
139
- export function isThreadItemNotFound<V>(v: V) {
140
- return is$typed(v, id, hashThreadItemNotFound)
141
- }
142
-
143
- export function validateThreadItemNotFound<V>(v: V) {
144
- return validate<ThreadItemNotFound & V>(v, id, hashThreadItemNotFound)
145
- }
146
-
147
- export interface ThreadItemBlocked {
148
- $type?: 'app.bsky.unspecced.getPostThreadV2#threadItemBlocked'
149
- author: AppBskyFeedDefs.BlockedAuthor
150
- }
151
-
152
- const hashThreadItemBlocked = 'threadItemBlocked'
153
-
154
- export function isThreadItemBlocked<V>(v: V) {
155
- return is$typed(v, id, hashThreadItemBlocked)
156
- }
157
-
158
- export function validateThreadItemBlocked<V>(v: V) {
159
- return validate<ThreadItemBlocked & V>(v, id, hashThreadItemBlocked)
160
- }
@@ -76,6 +76,7 @@ import {
76
76
  } from '../util/uris'
77
77
  import {
78
78
  ThreadHiddenAnchorPostNode,
79
+ ThreadHiddenItemValuePost,
79
80
  ThreadHiddenPostNode,
80
81
  ThreadItemValueBlocked,
81
82
  ThreadItemValueNoUnauthenticated,
@@ -1275,7 +1276,7 @@ export class Views {
1275
1276
  }
1276
1277
  }
1277
1278
 
1278
- const thread = sortTrimFlattenThreadTree<ThreadItem>(anchorTree, {
1279
+ const thread = sortTrimFlattenThreadTree(anchorTree, {
1279
1280
  opDid,
1280
1281
  branchingFactor,
1281
1282
  sort,
@@ -1531,11 +1532,13 @@ export class Views {
1531
1532
  uri,
1532
1533
  depth,
1533
1534
  value: {
1534
- $type: 'app.bsky.unspecced.getPostThreadV2#threadItemPost',
1535
+ $type: 'app.bsky.unspecced.defs#threadItemPost',
1535
1536
  post: postView,
1536
1537
  moreParents: moreParents ?? false,
1537
1538
  moreReplies,
1538
1539
  opThread: isOPThread,
1540
+ hiddenByThreadgate: false, // Hidden posts are handled by threadHiddenV2
1541
+ mutedByViewer: false, // Hidden posts are handled by threadHiddenV2
1539
1542
  },
1540
1543
  }
1541
1544
  }
@@ -1551,7 +1554,7 @@ export class Views {
1551
1554
  uri,
1552
1555
  depth,
1553
1556
  value: {
1554
- $type: 'app.bsky.unspecced.getPostThreadV2#threadItemNoUnauthenticated',
1557
+ $type: 'app.bsky.unspecced.defs#threadItemNoUnauthenticated',
1555
1558
  },
1556
1559
  }
1557
1560
  }
@@ -1567,7 +1570,7 @@ export class Views {
1567
1570
  uri,
1568
1571
  depth,
1569
1572
  value: {
1570
- $type: 'app.bsky.unspecced.getPostThreadV2#threadItemNotFound',
1573
+ $type: 'app.bsky.unspecced.defs#threadItemNotFound',
1571
1574
  },
1572
1575
  }
1573
1576
  }
@@ -1587,7 +1590,7 @@ export class Views {
1587
1590
  uri,
1588
1591
  depth,
1589
1592
  value: {
1590
- $type: 'app.bsky.unspecced.getPostThreadV2#threadItemBlocked',
1593
+ $type: 'app.bsky.unspecced.defs#threadItemBlocked',
1591
1594
  author: {
1592
1595
  did: authorDid,
1593
1596
  viewer: this.blockedProfileViewer(authorDid, state),
@@ -1768,15 +1771,18 @@ export class Views {
1768
1771
  mutedByViewer: boolean
1769
1772
  postView: PostView
1770
1773
  uri: string
1771
- }): ThreadHiddenPostNode['item'] {
1774
+ }): ThreadHiddenItemValuePost {
1772
1775
  const base = this.threadHiddenV2ItemPostAnchor({ depth, uri })
1773
1776
  return {
1774
1777
  ...base,
1775
1778
  value: {
1776
- $type: 'app.bsky.unspecced.getPostThreadHiddenV2#threadHiddenItemPost',
1779
+ $type: 'app.bsky.unspecced.defs#threadItemPost',
1777
1780
  post: postView,
1778
1781
  hiddenByThreadgate,
1779
1782
  mutedByViewer,
1783
+ moreParents: false, // Hidden replies don't have parents.
1784
+ moreReplies: 0, // Hidden replies don't have replies hydrated.
1785
+ opThread: false, // Hidden replies don't contain OP threads.
1780
1786
  },
1781
1787
  }
1782
1788
  }
@@ -2,16 +2,15 @@ import { asPredicate } from '@atproto/api'
2
2
  import { HydrateCtx } from '../hydration/hydrator'
3
3
  import { validateRecord as validatePostRecord } from '../lexicon/types/app/bsky/feed/post'
4
4
  import {
5
- ThreadHiddenItem,
6
- ThreadHiddenItemPost,
7
- } from '../lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2'
8
- import {
9
- QueryParams as GetPostThreadV2QueryParams,
10
- ThreadItem,
11
5
  ThreadItemBlocked,
12
6
  ThreadItemNoUnauthenticated,
13
7
  ThreadItemNotFound,
14
8
  ThreadItemPost,
9
+ } from '../lexicon/types/app/bsky/unspecced/defs'
10
+ import { ThreadHiddenItem } from '../lexicon/types/app/bsky/unspecced/getPostThreadHiddenV2'
11
+ import {
12
+ QueryParams as GetPostThreadV2QueryParams,
13
+ ThreadItem,
15
14
  } from '../lexicon/types/app/bsky/unspecced/getPostThreadV2'
16
15
  import { $Typed } from '../lexicon/util'
17
16
 
@@ -72,7 +71,7 @@ type ThreadHiddenItemValue<T extends ThreadHiddenItem['value']> = Omit<
72
71
  }
73
72
 
74
73
  export type ThreadHiddenItemValuePost = ThreadHiddenItemValue<
75
- $Typed<ThreadHiddenItemPost>
74
+ $Typed<ThreadItemPost>
76
75
  >
77
76
 
78
77
  // This is an intermediary type that doesn't map to the views.
@@ -108,12 +107,13 @@ export type ThreadTreeHidden = ThreadHiddenAnchorPostNode | ThreadHiddenPostNode
108
107
  export type ThreadTree = ThreadTreeVisible | ThreadTreeHidden
109
108
 
110
109
  /** This function mutates the tree parameter. */
111
- export function sortTrimFlattenThreadTree<
112
- TItem extends ThreadItem | ThreadHiddenItem,
113
- >(anchorTree: ThreadTree, options: SortTrimFlattenOptions): TItem[] {
110
+ export function sortTrimFlattenThreadTree(
111
+ anchorTree: ThreadTree,
112
+ options: SortTrimFlattenOptions,
113
+ ) {
114
114
  const sortedAnchorTree = sortTrimThreadTree(anchorTree, options)
115
115
 
116
- return flattenTree<TItem>(sortedAnchorTree)
116
+ return flattenTree(sortedAnchorTree)
117
117
  }
118
118
 
119
119
  type SortTrimFlattenOptions = {
@@ -309,13 +309,11 @@ function topSortValue(likeCount: number, hasOPLike: boolean): number {
309
309
  return Math.log(3 + likeCount) * (hasOPLike ? 1.45 : 1.0)
310
310
  }
311
311
 
312
- function flattenTree<TItem extends ThreadItem | ThreadHiddenItem>(
313
- tree: ThreadTree,
314
- ): TItem[] {
312
+ function flattenTree(tree: ThreadTree) {
315
313
  return [
316
314
  // All parents above.
317
315
  ...Array.from(
318
- flattenInDirection<TItem>({
316
+ flattenInDirection({
319
317
  tree,
320
318
  direction: 'up',
321
319
  }),
@@ -323,11 +321,11 @@ function flattenTree<TItem extends ThreadItem | ThreadHiddenItem>(
323
321
 
324
322
  // The anchor.
325
323
  // In the case of hidden replies, the anchor item itself is undefined.
326
- ...(tree.item.value ? ([tree.item] as TItem[]) : []),
324
+ ...(tree.item.value ? [tree.item] : []),
327
325
 
328
326
  // All replies below.
329
327
  ...Array.from(
330
- flattenInDirection<TItem>({
328
+ flattenInDirection({
331
329
  tree,
332
330
  direction: 'down',
333
331
  }),
@@ -335,18 +333,18 @@ function flattenTree<TItem extends ThreadItem | ThreadHiddenItem>(
335
333
  ]
336
334
  }
337
335
 
338
- function* flattenInDirection<TItem extends ThreadItem | ThreadHiddenItem>({
336
+ function* flattenInDirection({
339
337
  tree,
340
338
  direction,
341
339
  }: {
342
340
  tree: ThreadTree
343
341
  direction: 'up' | 'down'
344
- }): Generator<TItem, void> {
342
+ }) {
345
343
  if (tree.type === 'noUnauthenticated') {
346
344
  if (direction === 'up') {
347
345
  if (tree.parent) {
348
346
  // Unfold all parents above.
349
- yield* flattenTree<TItem>(tree.parent)
347
+ yield* flattenTree(tree.parent)
350
348
  }
351
349
  }
352
350
  }
@@ -355,13 +353,13 @@ function* flattenInDirection<TItem extends ThreadItem | ThreadHiddenItem>({
355
353
  if (direction === 'up') {
356
354
  if (tree.parent) {
357
355
  // Unfold all parents above.
358
- yield* flattenTree<TItem>(tree.parent)
356
+ yield* flattenTree(tree.parent)
359
357
  }
360
358
  } else {
361
359
  // Unfold all replies below.
362
360
  if (tree.replies?.length) {
363
361
  for (const reply of tree.replies) {
364
- yield* flattenTree<TItem>(reply)
362
+ yield* flattenTree(reply)
365
363
  }
366
364
  }
367
365
  }
@@ -373,7 +371,7 @@ function* flattenInDirection<TItem extends ThreadItem | ThreadHiddenItem>({
373
371
  // Unfold all replies below.
374
372
  if (tree.replies?.length) {
375
373
  for (const reply of tree.replies) {
376
- yield* flattenTree<TItem>(reply)
374
+ yield* flattenTree(reply)
377
375
  }
378
376
  }
379
377
  }
@@ -8,9 +8,11 @@ Object {
8
8
  "depth": -1,
9
9
  "uri": "record(0)",
10
10
  "value": Object {
11
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
11
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
12
+ "hiddenByThreadgate": false,
12
13
  "moreParents": false,
13
14
  "moreReplies": 0,
15
+ "mutedByViewer": false,
14
16
  "opThread": true,
15
17
  "post": Object {
16
18
  "author": Object {
@@ -46,9 +48,11 @@ Object {
46
48
  "depth": 0,
47
49
  "uri": "record(1)",
48
50
  "value": Object {
49
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
51
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
52
+ "hiddenByThreadgate": false,
50
53
  "moreParents": false,
51
54
  "moreReplies": 0,
55
+ "mutedByViewer": false,
52
56
  "opThread": false,
53
57
  "post": Object {
54
58
  "author": Object {
@@ -102,9 +106,11 @@ Object {
102
106
  "depth": -1,
103
107
  "uri": "record(0)",
104
108
  "value": Object {
105
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
109
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
110
+ "hiddenByThreadgate": false,
106
111
  "moreParents": false,
107
112
  "moreReplies": 0,
113
+ "mutedByViewer": false,
108
114
  "opThread": true,
109
115
  "post": Object {
110
116
  "author": Object {
@@ -140,9 +146,11 @@ Object {
140
146
  "depth": 0,
141
147
  "uri": "record(1)",
142
148
  "value": Object {
143
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
149
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
150
+ "hiddenByThreadgate": false,
144
151
  "moreParents": false,
145
152
  "moreReplies": 0,
153
+ "mutedByViewer": false,
146
154
  "opThread": false,
147
155
  "post": Object {
148
156
  "author": Object {
@@ -188,9 +196,11 @@ Object {
188
196
  "depth": 1,
189
197
  "uri": "record(2)",
190
198
  "value": Object {
191
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
199
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
200
+ "hiddenByThreadgate": false,
192
201
  "moreParents": false,
193
202
  "moreReplies": 0,
203
+ "mutedByViewer": false,
194
204
  "opThread": false,
195
205
  "post": Object {
196
206
  "author": Object {
@@ -244,9 +254,11 @@ Object {
244
254
  "depth": -2,
245
255
  "uri": "record(0)",
246
256
  "value": Object {
247
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
257
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
258
+ "hiddenByThreadgate": false,
248
259
  "moreParents": false,
249
260
  "moreReplies": 0,
261
+ "mutedByViewer": false,
250
262
  "opThread": true,
251
263
  "post": Object {
252
264
  "author": Object {
@@ -282,9 +294,11 @@ Object {
282
294
  "depth": -1,
283
295
  "uri": "record(1)",
284
296
  "value": Object {
285
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
297
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
298
+ "hiddenByThreadgate": false,
286
299
  "moreParents": false,
287
300
  "moreReplies": 0,
301
+ "mutedByViewer": false,
288
302
  "opThread": false,
289
303
  "post": Object {
290
304
  "author": Object {
@@ -330,9 +344,11 @@ Object {
330
344
  "depth": 0,
331
345
  "uri": "record(2)",
332
346
  "value": Object {
333
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
347
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
348
+ "hiddenByThreadgate": false,
334
349
  "moreParents": false,
335
350
  "moreReplies": 0,
351
+ "mutedByViewer": false,
336
352
  "opThread": false,
337
353
  "post": Object {
338
354
  "author": Object {
@@ -386,9 +402,11 @@ Object {
386
402
  "depth": -1,
387
403
  "uri": "record(0)",
388
404
  "value": Object {
389
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
405
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
406
+ "hiddenByThreadgate": false,
390
407
  "moreParents": false,
391
408
  "moreReplies": 0,
409
+ "mutedByViewer": false,
392
410
  "opThread": true,
393
411
  "post": Object {
394
412
  "author": Object {
@@ -424,9 +442,11 @@ Object {
424
442
  "depth": 0,
425
443
  "uri": "record(1)",
426
444
  "value": Object {
427
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
445
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
446
+ "hiddenByThreadgate": false,
428
447
  "moreParents": false,
429
448
  "moreReplies": 0,
449
+ "mutedByViewer": false,
430
450
  "opThread": false,
431
451
  "post": Object {
432
452
  "author": Object {
@@ -480,9 +500,11 @@ Object {
480
500
  "depth": -1,
481
501
  "uri": "record(0)",
482
502
  "value": Object {
483
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
503
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
504
+ "hiddenByThreadgate": false,
484
505
  "moreParents": false,
485
506
  "moreReplies": 0,
507
+ "mutedByViewer": false,
486
508
  "opThread": true,
487
509
  "post": Object {
488
510
  "author": Object {
@@ -518,9 +540,11 @@ Object {
518
540
  "depth": 0,
519
541
  "uri": "record(1)",
520
542
  "value": Object {
521
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
543
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
544
+ "hiddenByThreadgate": false,
522
545
  "moreParents": false,
523
546
  "moreReplies": 0,
547
+ "mutedByViewer": false,
524
548
  "opThread": true,
525
549
  "post": Object {
526
550
  "author": Object {
@@ -566,9 +590,11 @@ Object {
566
590
  "depth": 1,
567
591
  "uri": "record(2)",
568
592
  "value": Object {
569
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
593
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
594
+ "hiddenByThreadgate": false,
570
595
  "moreParents": false,
571
596
  "moreReplies": 0,
597
+ "mutedByViewer": false,
572
598
  "opThread": true,
573
599
  "post": Object {
574
600
  "author": Object {
@@ -622,9 +648,11 @@ Object {
622
648
  "depth": -2,
623
649
  "uri": "record(0)",
624
650
  "value": Object {
625
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
651
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
652
+ "hiddenByThreadgate": false,
626
653
  "moreParents": false,
627
654
  "moreReplies": 0,
655
+ "mutedByViewer": false,
628
656
  "opThread": true,
629
657
  "post": Object {
630
658
  "author": Object {
@@ -660,9 +688,11 @@ Object {
660
688
  "depth": -1,
661
689
  "uri": "record(1)",
662
690
  "value": Object {
663
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
691
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
692
+ "hiddenByThreadgate": false,
664
693
  "moreParents": false,
665
694
  "moreReplies": 0,
695
+ "mutedByViewer": false,
666
696
  "opThread": true,
667
697
  "post": Object {
668
698
  "author": Object {
@@ -708,9 +738,11 @@ Object {
708
738
  "depth": 0,
709
739
  "uri": "record(2)",
710
740
  "value": Object {
711
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
741
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
742
+ "hiddenByThreadgate": false,
712
743
  "moreParents": false,
713
744
  "moreReplies": 0,
745
+ "mutedByViewer": false,
714
746
  "opThread": true,
715
747
  "post": Object {
716
748
  "author": Object {
@@ -764,9 +796,11 @@ Object {
764
796
  "depth": 0,
765
797
  "uri": "record(0)",
766
798
  "value": Object {
767
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
799
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
800
+ "hiddenByThreadgate": false,
768
801
  "moreParents": false,
769
802
  "moreReplies": 0,
803
+ "mutedByViewer": false,
770
804
  "opThread": true,
771
805
  "post": Object {
772
806
  "author": Object {
@@ -802,9 +836,11 @@ Object {
802
836
  "depth": 1,
803
837
  "uri": "record(1)",
804
838
  "value": Object {
805
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
839
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
840
+ "hiddenByThreadgate": false,
806
841
  "moreParents": false,
807
842
  "moreReplies": 0,
843
+ "mutedByViewer": false,
808
844
  "opThread": true,
809
845
  "post": Object {
810
846
  "author": Object {
@@ -850,9 +886,11 @@ Object {
850
886
  "depth": 2,
851
887
  "uri": "record(2)",
852
888
  "value": Object {
853
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
889
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
890
+ "hiddenByThreadgate": false,
854
891
  "moreParents": false,
855
892
  "moreReplies": 0,
893
+ "mutedByViewer": false,
856
894
  "opThread": true,
857
895
  "post": Object {
858
896
  "author": Object {
@@ -898,9 +936,11 @@ Object {
898
936
  "depth": 1,
899
937
  "uri": "record(3)",
900
938
  "value": Object {
901
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
939
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
940
+ "hiddenByThreadgate": false,
902
941
  "moreParents": false,
903
942
  "moreReplies": 0,
943
+ "mutedByViewer": false,
904
944
  "opThread": false,
905
945
  "post": Object {
906
946
  "author": Object {
@@ -946,9 +986,11 @@ Object {
946
986
  "depth": 1,
947
987
  "uri": "record(4)",
948
988
  "value": Object {
949
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
989
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
990
+ "hiddenByThreadgate": false,
950
991
  "moreParents": false,
951
992
  "moreReplies": 0,
993
+ "mutedByViewer": false,
952
994
  "opThread": false,
953
995
  "post": Object {
954
996
  "author": Object {
@@ -994,9 +1036,11 @@ Object {
994
1036
  "depth": 2,
995
1037
  "uri": "record(5)",
996
1038
  "value": Object {
997
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
1039
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
1040
+ "hiddenByThreadgate": false,
998
1041
  "moreParents": false,
999
1042
  "moreReplies": 0,
1043
+ "mutedByViewer": false,
1000
1044
  "opThread": false,
1001
1045
  "post": Object {
1002
1046
  "author": Object {
@@ -1042,9 +1086,11 @@ Object {
1042
1086
  "depth": 1,
1043
1087
  "uri": "record(6)",
1044
1088
  "value": Object {
1045
- "$type": "app.bsky.unspecced.getPostThreadV2#threadItemPost",
1089
+ "$type": "app.bsky.unspecced.defs#threadItemPost",
1090
+ "hiddenByThreadgate": false,
1046
1091
  "moreParents": false,
1047
1092
  "moreReplies": 0,
1093
+ "mutedByViewer": false,
1048
1094
  "opThread": false,
1049
1095
  "post": Object {
1050
1096
  "author": Object {