@atproto/bsky 0.0.10 → 0.0.12

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 (173) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/api/com/atproto/admin/util.d.ts +5 -0
  3. package/dist/config.d.ts +2 -0
  4. package/dist/context.d.ts +8 -0
  5. package/dist/db/index.js +51 -2
  6. package/dist/db/index.js.map +3 -3
  7. package/dist/db/migrations/20230929T192920807Z-record-cursor-indexes.d.ts +3 -0
  8. package/dist/db/migrations/index.d.ts +1 -0
  9. package/dist/did-cache.d.ts +2 -2
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.js +1818 -580
  12. package/dist/index.js.map +3 -3
  13. package/dist/lexicon/index.d.ts +16 -0
  14. package/dist/lexicon/lexicons.d.ts +330 -3
  15. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +1 -0
  16. package/dist/lexicon/types/com/atproto/admin/defs.d.ts +28 -0
  17. package/dist/lexicon/types/com/atproto/admin/getAccountInfo.d.ts +29 -0
  18. package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts +39 -0
  19. package/dist/lexicon/types/com/atproto/admin/searchRepos.d.ts +0 -1
  20. package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts +46 -0
  21. package/dist/lexicon/types/com/atproto/server/confirmEmail.d.ts +27 -0
  22. package/dist/lexicon/types/com/atproto/server/createAccount.d.ts +2 -0
  23. package/dist/lexicon/types/com/atproto/server/createSession.d.ts +2 -0
  24. package/dist/lexicon/types/com/atproto/server/getSession.d.ts +1 -0
  25. package/dist/lexicon/types/com/atproto/server/refreshSession.d.ts +1 -0
  26. package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.d.ts +19 -0
  27. package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.d.ts +30 -0
  28. package/dist/lexicon/types/com/atproto/server/reserveSigningKey.d.ts +30 -0
  29. package/dist/lexicon/types/com/atproto/server/updateEmail.d.ts +27 -0
  30. package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts +1 -0
  31. package/dist/services/actor/index.d.ts +2 -2
  32. package/dist/services/actor/types.d.ts +1 -0
  33. package/dist/services/graph/index.d.ts +2 -0
  34. package/dist/services/moderation/index.d.ts +13 -3
  35. package/dist/services/util/search.d.ts +3 -3
  36. package/package.json +13 -14
  37. package/src/api/app/bsky/actor/searchActors.ts +36 -22
  38. package/src/api/app/bsky/actor/searchActorsTypeahead.ts +24 -17
  39. package/src/api/app/bsky/feed/getAuthorFeed.ts +2 -2
  40. package/src/api/app/bsky/feed/getPostThread.ts +2 -2
  41. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +1 -0
  42. package/src/api/app/bsky/notification/listNotifications.ts +33 -22
  43. package/src/api/com/atproto/admin/getModerationAction.ts +28 -2
  44. package/src/api/com/atproto/admin/getModerationReport.ts +27 -2
  45. package/src/api/com/atproto/admin/getRecord.ts +14 -2
  46. package/src/api/com/atproto/admin/getRepo.ts +13 -2
  47. package/src/api/com/atproto/admin/reverseModerationAction.ts +31 -5
  48. package/src/api/com/atproto/admin/searchRepos.ts +6 -12
  49. package/src/api/com/atproto/admin/takeModerationAction.ts +41 -7
  50. package/src/api/com/atproto/admin/util.ts +50 -0
  51. package/src/api/well-known.ts +8 -0
  52. package/src/auth.ts +12 -5
  53. package/src/auto-moderator/index.ts +1 -0
  54. package/src/config.ts +7 -0
  55. package/src/context.ts +30 -0
  56. package/src/db/migrations/20230929T192920807Z-record-cursor-indexes.ts +40 -0
  57. package/src/db/migrations/index.ts +1 -0
  58. package/src/did-cache.ts +29 -14
  59. package/src/feed-gen/with-friends.ts +2 -2
  60. package/src/index.ts +9 -1
  61. package/src/indexer/subscription.ts +1 -21
  62. package/src/lexicon/index.ts +96 -0
  63. package/src/lexicon/lexicons.ts +368 -4
  64. package/src/lexicon/types/app/bsky/actor/defs.ts +1 -0
  65. package/src/lexicon/types/com/atproto/admin/defs.ts +61 -0
  66. package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +41 -0
  67. package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +54 -0
  68. package/src/lexicon/types/com/atproto/admin/searchRepos.ts +0 -1
  69. package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +61 -0
  70. package/src/lexicon/types/com/atproto/server/confirmEmail.ts +40 -0
  71. package/src/lexicon/types/com/atproto/server/createAccount.ts +2 -0
  72. package/src/lexicon/types/com/atproto/server/createSession.ts +2 -0
  73. package/src/lexicon/types/com/atproto/server/getSession.ts +1 -0
  74. package/src/lexicon/types/com/atproto/server/refreshSession.ts +1 -0
  75. package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +31 -0
  76. package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +43 -0
  77. package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +44 -0
  78. package/src/lexicon/types/com/atproto/server/updateEmail.ts +41 -0
  79. package/src/lexicon/types/com/atproto/sync/listRepos.ts +1 -0
  80. package/src/logger.ts +8 -0
  81. package/src/services/actor/index.ts +16 -10
  82. package/src/services/actor/types.ts +1 -0
  83. package/src/services/actor/views.ts +26 -8
  84. package/src/services/graph/index.ts +26 -7
  85. package/src/services/indexing/index.ts +15 -17
  86. package/src/services/moderation/index.ts +94 -14
  87. package/src/services/moderation/views.ts +1 -0
  88. package/src/services/util/search.ts +24 -23
  89. package/tests/__snapshots__/feed-generation.test.ts.snap +12 -12
  90. package/tests/__snapshots__/indexing.test.ts.snap +4 -4
  91. package/tests/admin/__snapshots__/get-moderation-action.test.ts.snap +172 -0
  92. package/tests/admin/__snapshots__/get-moderation-actions.test.ts.snap +178 -0
  93. package/tests/admin/__snapshots__/get-moderation-report.test.ts.snap +177 -0
  94. package/tests/admin/__snapshots__/get-moderation-reports.test.ts.snap +307 -0
  95. package/tests/admin/__snapshots__/get-record.test.ts.snap +275 -0
  96. package/tests/admin/__snapshots__/get-repo.test.ts.snap +103 -0
  97. package/tests/admin/get-moderation-action.test.ts +100 -0
  98. package/tests/admin/get-moderation-actions.test.ts +164 -0
  99. package/tests/admin/get-moderation-report.test.ts +100 -0
  100. package/tests/admin/get-moderation-reports.test.ts +332 -0
  101. package/tests/admin/get-record.test.ts +115 -0
  102. package/tests/admin/get-repo.test.ts +101 -0
  103. package/tests/{moderation.test.ts → admin/moderation.test.ts} +107 -9
  104. package/tests/admin/repo-search.test.ts +124 -0
  105. package/tests/algos/hot-classic.test.ts +3 -5
  106. package/tests/algos/whats-hot.test.ts +3 -5
  107. package/tests/algos/with-friends.test.ts +2 -4
  108. package/tests/auth.test.ts +64 -0
  109. package/tests/auto-moderator/fuzzy-matcher.test.ts +2 -3
  110. package/tests/auto-moderator/labeler.test.ts +5 -7
  111. package/tests/auto-moderator/takedowns.test.ts +11 -12
  112. package/tests/blob-resolver.test.ts +1 -3
  113. package/tests/did-cache.test.ts +2 -5
  114. package/tests/feed-generation.test.ts +8 -6
  115. package/tests/handle-invalidation.test.ts +2 -3
  116. package/tests/image/server.test.ts +1 -4
  117. package/tests/image/sharp.test.ts +1 -1
  118. package/tests/indexing.test.ts +4 -4
  119. package/tests/notification-server.test.ts +2 -3
  120. package/tests/pipeline/backpressure.test.ts +2 -3
  121. package/tests/pipeline/reingest.test.ts +7 -4
  122. package/tests/pipeline/repartition.test.ts +2 -3
  123. package/tests/reprocessing.test.ts +2 -6
  124. package/tests/seeds/basic.ts +4 -4
  125. package/tests/seeds/follows.ts +1 -1
  126. package/tests/seeds/likes.ts +1 -1
  127. package/tests/seeds/reposts.ts +1 -1
  128. package/tests/seeds/users-bulk.ts +1 -1
  129. package/tests/seeds/users.ts +1 -1
  130. package/tests/server.test.ts +1 -3
  131. package/tests/subscription/repo.test.ts +2 -4
  132. package/tests/views/__snapshots__/author-feed.test.ts.snap +24 -24
  133. package/tests/views/__snapshots__/block-lists.test.ts.snap +42 -7
  134. package/tests/views/__snapshots__/blocks.test.ts.snap +2 -2
  135. package/tests/views/__snapshots__/list-feed.test.ts.snap +6 -6
  136. package/tests/views/__snapshots__/mute-lists.test.ts.snap +15 -4
  137. package/tests/views/__snapshots__/mutes.test.ts.snap +2 -2
  138. package/tests/views/__snapshots__/notifications.test.ts.snap +2 -2
  139. package/tests/views/__snapshots__/posts.test.ts.snap +8 -8
  140. package/tests/views/__snapshots__/thread.test.ts.snap +10 -10
  141. package/tests/views/__snapshots__/timeline.test.ts.snap +58 -58
  142. package/tests/views/actor-likes.test.ts +2 -3
  143. package/tests/views/actor-search.test.ts +5 -5
  144. package/tests/views/admin/repo-search.test.ts +2 -4
  145. package/tests/views/author-feed.test.ts +2 -4
  146. package/tests/views/block-lists.test.ts +34 -7
  147. package/tests/views/blocks.test.ts +6 -3
  148. package/tests/views/follows.test.ts +2 -4
  149. package/tests/views/likes.test.ts +2 -5
  150. package/tests/views/list-feed.test.ts +2 -4
  151. package/tests/views/mute-lists.test.ts +23 -5
  152. package/tests/views/mutes.test.ts +2 -5
  153. package/tests/views/notifications.test.ts +2 -4
  154. package/tests/views/posts.test.ts +2 -5
  155. package/tests/views/profile.test.ts +4 -5
  156. package/tests/views/reposts.test.ts +2 -4
  157. package/tests/views/suggested-follows.test.ts +2 -3
  158. package/tests/views/suggestions.test.ts +2 -4
  159. package/tests/views/thread.test.ts +2 -4
  160. package/tests/views/threadgating.test.ts +2 -3
  161. package/tests/views/timeline.test.ts +2 -4
  162. package/dist/env.d.ts +0 -1
  163. package/example.dev.env +0 -5
  164. package/src/env.ts +0 -9
  165. package/tests/seeds/client.ts +0 -466
  166. /package/tests/{__snapshots__ → admin/__snapshots__}/moderation.test.ts.snap +0 -0
  167. /package/tests/{image/fixtures → sample-img}/at.png +0 -0
  168. /package/tests/{image/fixtures → sample-img}/hd-key.jpg +0 -0
  169. /package/tests/{image/fixtures → sample-img}/key-alt.jpg +0 -0
  170. /package/tests/{image/fixtures → sample-img}/key-landscape-large.jpg +0 -0
  171. /package/tests/{image/fixtures → sample-img}/key-landscape-small.jpg +0 -0
  172. /package/tests/{image/fixtures → sample-img}/key-portrait-large.jpg +0 -0
  173. /package/tests/{image/fixtures → sample-img}/key-portrait-small.jpg +0 -0
@@ -11,9 +11,8 @@ import AtpAgent, {
11
11
  AppBskyFeedRepost,
12
12
  AppBskyGraphFollow,
13
13
  } from '@atproto/api'
14
- import { TestNetwork } from '@atproto/dev-env'
14
+ import { TestNetwork, SeedClient } from '@atproto/dev-env'
15
15
  import { forSnapshot } from './_util'
16
- import { SeedClient } from './seeds/client'
17
16
  import usersSeed from './seeds/users'
18
17
  import basicSeed from './seeds/basic'
19
18
  import { ids } from '../src/lexicon/lexicons'
@@ -31,7 +30,7 @@ describe('indexing', () => {
31
30
  })
32
31
  agent = network.bsky.getClient()
33
32
  pdsAgent = network.pds.getClient()
34
- sc = new SeedClient(pdsAgent)
33
+ sc = network.getSeedClient()
35
34
  await usersSeed(sc)
36
35
  // Data in tests is not processed from subscription
37
36
  await network.processAll()
@@ -648,8 +647,9 @@ describe('indexing', () => {
648
647
  headers: sc.getHeaders(alice),
649
648
  })
650
649
  const { token } = await network.pds.ctx.db.db
651
- .selectFrom('delete_account_token')
650
+ .selectFrom('email_token')
652
651
  .selectAll()
652
+ .where('purpose', '=', 'delete_account')
653
653
  .where('did', '=', alice)
654
654
  .executeTakeFirstOrThrow()
655
655
  await pdsAgent.api.com.atproto.server.deleteAccount({
@@ -1,6 +1,5 @@
1
1
  import AtpAgent, { AtUri } from '@atproto/api'
2
- import { TestNetwork } from '@atproto/dev-env'
3
- import { SeedClient } from './seeds/client'
2
+ import { TestNetwork, SeedClient } from '@atproto/dev-env'
4
3
  import basicSeed from './seeds/basic'
5
4
  import { NotificationServer } from '../src/notifications'
6
5
  import { Database } from '../src'
@@ -21,7 +20,7 @@ describe('notification server', () => {
21
20
  })
22
21
  agent = network.bsky.getClient()
23
22
  pdsAgent = network.pds.getClient()
24
- sc = new SeedClient(pdsAgent)
23
+ sc = network.getSeedClient()
25
24
  await basicSeed(sc)
26
25
  await network.processAll()
27
26
  await network.bsky.processAll()
@@ -5,8 +5,8 @@ import {
5
5
  getIndexers,
6
6
  getIngester,
7
7
  processAll,
8
+ SeedClient,
8
9
  } from '@atproto/dev-env'
9
- import { SeedClient } from '../seeds/client'
10
10
  import basicSeed from '../seeds/basic'
11
11
  import { BskyIngester } from '../../src'
12
12
 
@@ -33,8 +33,7 @@ describe('pipeline backpressure', () => {
33
33
  name: TEST_NAME,
34
34
  partitionIdsByIndexer: [[0], [1]],
35
35
  })
36
- const pdsAgent = network.pds.getClient()
37
- sc = new SeedClient(pdsAgent)
36
+ sc = network.getSeedClient()
38
37
  await basicSeed(sc)
39
38
  })
40
39
 
@@ -1,5 +1,9 @@
1
- import { TestNetworkNoAppView, getIngester, ingestAll } from '@atproto/dev-env'
2
- import { SeedClient } from '../seeds/client'
1
+ import {
2
+ TestNetworkNoAppView,
3
+ SeedClient,
4
+ getIngester,
5
+ ingestAll,
6
+ } from '@atproto/dev-env'
3
7
  import basicSeed from '../seeds/basic'
4
8
  import { BskyIngester } from '../../src'
5
9
 
@@ -18,8 +22,7 @@ describe('pipeline reingestion', () => {
18
22
  name: TEST_NAME,
19
23
  ingesterPartitionCount: 1,
20
24
  })
21
- const pdsAgent = network.pds.getClient()
22
- sc = new SeedClient(pdsAgent)
25
+ sc = network.getSeedClient()
23
26
  await basicSeed(sc)
24
27
  })
25
28
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  BskyIndexers,
3
3
  TestNetworkNoAppView,
4
+ SeedClient,
4
5
  getIndexers,
5
6
  getIngester,
6
7
  ingestAll,
7
8
  processAll,
8
9
  } from '@atproto/dev-env'
9
- import { SeedClient } from '../seeds/client'
10
10
  import usersSeed from '../seeds/users'
11
11
  import { BskyIngester } from '../../src'
12
12
  import { countAll } from '../../src/db/util'
@@ -36,8 +36,7 @@ describe('pipeline indexer repartitioning', () => {
36
36
  name: TEST_NAME,
37
37
  partitionIdsByIndexer: [[0], [1]], // two indexers, each consuming one partition
38
38
  })
39
- const pdsAgent = network.pds.getClient()
40
- sc = new SeedClient(pdsAgent)
39
+ sc = network.getSeedClient()
41
40
  await usersSeed(sc)
42
41
  })
43
42
 
@@ -1,14 +1,11 @@
1
1
  import axios from 'axios'
2
2
  import { AtUri } from '@atproto/syntax'
3
- import AtpAgent from '@atproto/api'
4
- import { TestNetwork } from '@atproto/dev-env'
5
- import { SeedClient } from './seeds/client'
3
+ import { TestNetwork, SeedClient } from '@atproto/dev-env'
6
4
  import basicSeed from './seeds/basic'
7
5
  import { Database } from '../src/db'
8
6
 
9
7
  describe('reprocessing', () => {
10
8
  let network: TestNetwork
11
- let pdsAgent: AtpAgent
12
9
  let sc: SeedClient
13
10
  let alice: string
14
11
 
@@ -16,8 +13,7 @@ describe('reprocessing', () => {
16
13
  network = await TestNetwork.create({
17
14
  dbPostgresSchema: 'bsky_reprocessing',
18
15
  })
19
- pdsAgent = network.pds.getClient()
20
- sc = new SeedClient(pdsAgent)
16
+ sc = network.getSeedClient()
21
17
  await basicSeed(sc)
22
18
  alice = sc.dids.alice
23
19
  await network.processAll()
@@ -1,5 +1,5 @@
1
+ import { SeedClient } from '@atproto/dev-env'
1
2
  import { ids } from '../../src/lexicon/lexicons'
2
- import { SeedClient } from './client'
3
3
  import usersSeed from './users'
4
4
 
5
5
  export default async (sc: SeedClient, users = true) => {
@@ -34,12 +34,12 @@ export default async (sc: SeedClient, users = true) => {
34
34
  })
35
35
  const img1 = await sc.uploadFile(
36
36
  carol,
37
- 'tests/image/fixtures/key-landscape-small.jpg',
37
+ 'tests/sample-img/key-landscape-small.jpg',
38
38
  'image/jpeg',
39
39
  )
40
40
  const img2 = await sc.uploadFile(
41
41
  carol,
42
- 'tests/image/fixtures/key-alt.jpg',
42
+ 'tests/sample-img/key-alt.jpg',
43
43
  'image/jpeg',
44
44
  )
45
45
  await sc.post(
@@ -100,7 +100,7 @@ export default async (sc: SeedClient, users = true) => {
100
100
 
101
101
  const replyImg = await sc.uploadFile(
102
102
  bob,
103
- 'tests/image/fixtures/key-landscape-small.jpg',
103
+ 'tests/sample-img/key-landscape-small.jpg',
104
104
  'image/jpeg',
105
105
  )
106
106
  await sc.reply(
@@ -1,4 +1,4 @@
1
- import { SeedClient } from './client'
1
+ import { SeedClient } from '@atproto/dev-env'
2
2
 
3
3
  export default async (sc: SeedClient) => {
4
4
  await sc.createAccount('alice', users.alice)
@@ -1,5 +1,5 @@
1
+ import { SeedClient } from '@atproto/dev-env'
1
2
  import basicSeed from './basic'
2
- import { SeedClient } from './client'
3
3
 
4
4
  export default async (sc: SeedClient) => {
5
5
  await basicSeed(sc)
@@ -1,5 +1,5 @@
1
+ import { SeedClient } from '@atproto/dev-env'
1
2
  import basicSeed from './basic'
2
- import { SeedClient } from './client'
3
3
 
4
4
  export default async (sc: SeedClient) => {
5
5
  await basicSeed(sc)
@@ -1,5 +1,5 @@
1
+ import { SeedClient } from '@atproto/dev-env'
1
2
  import { chunkArray } from '@atproto/common'
2
- import { SeedClient } from './client'
3
3
 
4
4
  export default async (sc: SeedClient, max = Infinity) => {
5
5
  // @TODO when these are run in parallel, seem to get an intermittent
@@ -1,4 +1,4 @@
1
- import { SeedClient } from './client'
1
+ import { SeedClient } from '@atproto/dev-env'
2
2
 
3
3
  export default async (sc: SeedClient) => {
4
4
  await sc.createAccount('alice', users.alice)
@@ -4,7 +4,6 @@ import axios, { AxiosError } from 'axios'
4
4
  import { TestNetwork } from '@atproto/dev-env'
5
5
  import { handler as errorHandler } from '../src/error'
6
6
  import { Database } from '../src'
7
- import { SeedClient } from './seeds/client'
8
7
  import basicSeed from './seeds/basic'
9
8
 
10
9
  describe('server', () => {
@@ -16,8 +15,7 @@ describe('server', () => {
16
15
  network = await TestNetwork.create({
17
16
  dbPostgresSchema: 'bsky_server',
18
17
  })
19
- const pdsAgent = network.pds.getClient()
20
- const sc = new SeedClient(pdsAgent)
18
+ const sc = network.getSeedClient()
21
19
  await basicSeed(sc)
22
20
  await network.processAll()
23
21
  alice = sc.dids.alice
@@ -1,6 +1,5 @@
1
1
  import AtpAgent from '@atproto/api'
2
-
3
- import { TestNetwork } from '@atproto/dev-env'
2
+ import { TestNetwork, SeedClient } from '@atproto/dev-env'
4
3
  import { CommitData } from '@atproto/repo'
5
4
  import { RepoService } from '@atproto/pds/src/services/repo'
6
5
  import { PreparedWrite } from '@atproto/pds/src/repo'
@@ -11,7 +10,6 @@ import { ids } from '../../src/lexicon/lexicons'
11
10
  import { forSnapshot } from '../_util'
12
11
  import { AppContext, Database } from '../../src'
13
12
  import basicSeed from '../seeds/basic'
14
- import { SeedClient } from '../seeds/client'
15
13
 
16
14
  describe('sync', () => {
17
15
  let network: TestNetwork
@@ -25,7 +23,7 @@ describe('sync', () => {
25
23
  })
26
24
  ctx = network.bsky.ctx
27
25
  pdsAgent = network.pds.getClient()
28
- sc = new SeedClient(pdsAgent)
26
+ sc = network.getSeedClient()
29
27
  await basicSeed(sc)
30
28
  })
31
29
 
@@ -77,7 +77,7 @@ Array [
77
77
  "$type": "app.bsky.embed.images#view",
78
78
  "images": Array [
79
79
  Object {
80
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
80
+ "alt": "tests/sample-img/key-landscape-small.jpg",
81
81
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(3)/cids(5)@jpeg",
82
82
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(3)/cids(5)@jpeg",
83
83
  },
@@ -110,7 +110,7 @@ Array [
110
110
  "$type": "app.bsky.embed.images",
111
111
  "images": Array [
112
112
  Object {
113
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
113
+ "alt": "tests/sample-img/key-landscape-small.jpg",
114
114
  "image": Object {
115
115
  "$type": "blob",
116
116
  "mimeType": "image/jpeg",
@@ -260,7 +260,7 @@ Array [
260
260
  "$type": "app.bsky.embed.images",
261
261
  "images": Array [
262
262
  Object {
263
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
263
+ "alt": "tests/sample-img/key-landscape-small.jpg",
264
264
  "image": Object {
265
265
  "$type": "blob",
266
266
  "mimeType": "image/jpeg",
@@ -271,7 +271,7 @@ Array [
271
271
  },
272
272
  },
273
273
  Object {
274
- "alt": "tests/image/fixtures/key-alt.jpg",
274
+ "alt": "tests/sample-img/key-alt.jpg",
275
275
  "image": Object {
276
276
  "$type": "blob",
277
277
  "mimeType": "image/jpeg",
@@ -486,7 +486,7 @@ Array [
486
486
  "$type": "app.bsky.embed.images#view",
487
487
  "images": Array [
488
488
  Object {
489
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
489
+ "alt": "tests/sample-img/key-landscape-small.jpg",
490
490
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(1)/cids(2)@jpeg",
491
491
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(1)/cids(2)@jpeg",
492
492
  },
@@ -519,7 +519,7 @@ Array [
519
519
  "$type": "app.bsky.embed.images",
520
520
  "images": Array [
521
521
  Object {
522
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
522
+ "alt": "tests/sample-img/key-landscape-small.jpg",
523
523
  "image": Object {
524
524
  "$type": "blob",
525
525
  "mimeType": "image/jpeg",
@@ -745,12 +745,12 @@ Array [
745
745
  "$type": "app.bsky.embed.images#view",
746
746
  "images": Array [
747
747
  Object {
748
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
748
+ "alt": "tests/sample-img/key-landscape-small.jpg",
749
749
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(5)/cids(2)@jpeg",
750
750
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(5)/cids(2)@jpeg",
751
751
  },
752
752
  Object {
753
- "alt": "tests/image/fixtures/key-alt.jpg",
753
+ "alt": "tests/sample-img/key-alt.jpg",
754
754
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(5)/cids(3)@jpeg",
755
755
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(5)/cids(3)@jpeg",
756
756
  },
@@ -800,7 +800,7 @@ Array [
800
800
  "$type": "app.bsky.embed.images",
801
801
  "images": Array [
802
802
  Object {
803
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
803
+ "alt": "tests/sample-img/key-landscape-small.jpg",
804
804
  "image": Object {
805
805
  "$type": "blob",
806
806
  "mimeType": "image/jpeg",
@@ -811,7 +811,7 @@ Array [
811
811
  },
812
812
  },
813
813
  Object {
814
- "alt": "tests/image/fixtures/key-alt.jpg",
814
+ "alt": "tests/sample-img/key-alt.jpg",
815
815
  "image": Object {
816
816
  "$type": "blob",
817
817
  "mimeType": "image/jpeg",
@@ -1036,12 +1036,12 @@ Array [
1036
1036
  "$type": "app.bsky.embed.images#view",
1037
1037
  "images": Array [
1038
1038
  Object {
1039
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1039
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1040
1040
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(5)/cids(2)@jpeg",
1041
1041
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(5)/cids(2)@jpeg",
1042
1042
  },
1043
1043
  Object {
1044
- "alt": "tests/image/fixtures/key-alt.jpg",
1044
+ "alt": "tests/sample-img/key-alt.jpg",
1045
1045
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(5)/cids(3)@jpeg",
1046
1046
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(5)/cids(3)@jpeg",
1047
1047
  },
@@ -1091,7 +1091,7 @@ Array [
1091
1091
  "$type": "app.bsky.embed.images",
1092
1092
  "images": Array [
1093
1093
  Object {
1094
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1094
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1095
1095
  "image": Object {
1096
1096
  "$type": "blob",
1097
1097
  "mimeType": "image/jpeg",
@@ -1102,7 +1102,7 @@ Array [
1102
1102
  },
1103
1103
  },
1104
1104
  Object {
1105
- "alt": "tests/image/fixtures/key-alt.jpg",
1105
+ "alt": "tests/sample-img/key-alt.jpg",
1106
1106
  "image": Object {
1107
1107
  "$type": "blob",
1108
1108
  "mimeType": "image/jpeg",
@@ -1224,7 +1224,7 @@ Array [
1224
1224
  "$type": "app.bsky.embed.images#view",
1225
1225
  "images": Array [
1226
1226
  Object {
1227
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1227
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1228
1228
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(4)/cids(5)@jpeg",
1229
1229
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(4)/cids(5)@jpeg",
1230
1230
  },
@@ -1257,7 +1257,7 @@ Array [
1257
1257
  "$type": "app.bsky.embed.images",
1258
1258
  "images": Array [
1259
1259
  Object {
1260
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1260
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1261
1261
  "image": Object {
1262
1262
  "$type": "blob",
1263
1263
  "mimeType": "image/jpeg",
@@ -1431,12 +1431,12 @@ Array [
1431
1431
  "$type": "app.bsky.embed.images#view",
1432
1432
  "images": Array [
1433
1433
  Object {
1434
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1434
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1435
1435
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(6)/cids(5)@jpeg",
1436
1436
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(6)/cids(5)@jpeg",
1437
1437
  },
1438
1438
  Object {
1439
- "alt": "tests/image/fixtures/key-alt.jpg",
1439
+ "alt": "tests/sample-img/key-alt.jpg",
1440
1440
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(6)/cids(8)@jpeg",
1441
1441
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(6)/cids(8)@jpeg",
1442
1442
  },
@@ -1486,7 +1486,7 @@ Array [
1486
1486
  "$type": "app.bsky.embed.images",
1487
1487
  "images": Array [
1488
1488
  Object {
1489
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1489
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1490
1490
  "image": Object {
1491
1491
  "$type": "blob",
1492
1492
  "mimeType": "image/jpeg",
@@ -1497,7 +1497,7 @@ Array [
1497
1497
  },
1498
1498
  },
1499
1499
  Object {
1500
- "alt": "tests/image/fixtures/key-alt.jpg",
1500
+ "alt": "tests/sample-img/key-alt.jpg",
1501
1501
  "image": Object {
1502
1502
  "$type": "blob",
1503
1503
  "mimeType": "image/jpeg",
@@ -1662,7 +1662,7 @@ Array [
1662
1662
  "$type": "app.bsky.embed.images#view",
1663
1663
  "images": Array [
1664
1664
  Object {
1665
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1665
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1666
1666
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(3)/cids(5)@jpeg",
1667
1667
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(3)/cids(5)@jpeg",
1668
1668
  },
@@ -1695,7 +1695,7 @@ Array [
1695
1695
  "$type": "app.bsky.embed.images",
1696
1696
  "images": Array [
1697
1697
  Object {
1698
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1698
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1699
1699
  "image": Object {
1700
1700
  "$type": "blob",
1701
1701
  "mimeType": "image/jpeg",
@@ -1848,7 +1848,7 @@ Array [
1848
1848
  "$type": "app.bsky.embed.images",
1849
1849
  "images": Array [
1850
1850
  Object {
1851
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
1851
+ "alt": "tests/sample-img/key-landscape-small.jpg",
1852
1852
  "image": Object {
1853
1853
  "$type": "blob",
1854
1854
  "mimeType": "image/jpeg",
@@ -1859,7 +1859,7 @@ Array [
1859
1859
  },
1860
1860
  },
1861
1861
  Object {
1862
- "alt": "tests/image/fixtures/key-alt.jpg",
1862
+ "alt": "tests/sample-img/key-alt.jpg",
1863
1863
  "image": Object {
1864
1864
  "$type": "blob",
1865
1865
  "mimeType": "image/jpeg",
@@ -335,7 +335,7 @@ Object {
335
335
  "description": "blah blah",
336
336
  "indexedAt": "1970-01-01T00:00:00.000Z",
337
337
  "name": "new list",
338
- "purpose": "app.bsky.graph.defs#blocklist",
338
+ "purpose": "app.bsky.graph.defs#modlist",
339
339
  "uri": "record(0)",
340
340
  "viewer": Object {
341
341
  "blocked": "record(1)",
@@ -379,7 +379,7 @@ Object {
379
379
  "description": "big list of blocks",
380
380
  "indexedAt": "1970-01-01T00:00:00.000Z",
381
381
  "name": "alice blocks",
382
- "purpose": "app.bsky.graph.defs#blocklist",
382
+ "purpose": "app.bsky.graph.defs#modlist",
383
383
  "uri": "record(4)",
384
384
  "viewer": Object {
385
385
  "blocked": "record(5)",
@@ -430,7 +430,7 @@ Object {
430
430
  "description": "blah blah",
431
431
  "indexedAt": "1970-01-01T00:00:00.000Z",
432
432
  "name": "new list",
433
- "purpose": "app.bsky.graph.defs#blocklist",
433
+ "purpose": "app.bsky.graph.defs#modlist",
434
434
  "uri": "record(0)",
435
435
  "viewer": Object {
436
436
  "muted": false,
@@ -473,7 +473,7 @@ Object {
473
473
  "description": "big list of blocks",
474
474
  "indexedAt": "1970-01-01T00:00:00.000Z",
475
475
  "name": "alice blocks",
476
- "purpose": "app.bsky.graph.defs#blocklist",
476
+ "purpose": "app.bsky.graph.defs#modlist",
477
477
  "uri": "record(3)",
478
478
  "viewer": Object {
479
479
  "blocked": "record(4)",
@@ -491,20 +491,43 @@ Object {
491
491
  Object {
492
492
  "subject": Object {
493
493
  "did": "user(2)",
494
+ "handle": "dan.test",
495
+ "labels": Array [],
496
+ "viewer": Object {
497
+ "blockedBy": false,
498
+ "muted": false,
499
+ },
500
+ },
501
+ },
502
+ Object {
503
+ "subject": Object {
504
+ "did": "user(3)",
494
505
  "handle": "carol.test",
495
506
  "labels": Array [],
496
507
  "viewer": Object {
497
508
  "blockedBy": false,
498
509
  "blocking": "record(0)",
510
+ "blockingByList": Object {
511
+ "avatar": "https://bsky.public.url/img/avatar/plain/user(0)/cids(1)@jpeg",
512
+ "cid": "cids(0)",
513
+ "indexedAt": "1970-01-01T00:00:00.000Z",
514
+ "name": "alice blocks",
515
+ "purpose": "app.bsky.graph.defs#modlist",
516
+ "uri": "record(0)",
517
+ "viewer": Object {
518
+ "blocked": "record(1)",
519
+ "muted": false,
520
+ },
521
+ },
499
522
  "muted": false,
500
523
  },
501
524
  },
502
525
  },
503
526
  Object {
504
527
  "subject": Object {
505
- "avatar": "https://bsky.public.url/img/avatar/plain/user(4)/cids(1)@jpeg",
528
+ "avatar": "https://bsky.public.url/img/avatar/plain/user(5)/cids(1)@jpeg",
506
529
  "description": "hi im bob label_me",
507
- "did": "user(3)",
530
+ "did": "user(4)",
508
531
  "displayName": "bobby",
509
532
  "handle": "bob.test",
510
533
  "indexedAt": "1970-01-01T00:00:00.000Z",
@@ -512,6 +535,18 @@ Object {
512
535
  "viewer": Object {
513
536
  "blockedBy": false,
514
537
  "blocking": "record(0)",
538
+ "blockingByList": Object {
539
+ "avatar": "https://bsky.public.url/img/avatar/plain/user(0)/cids(1)@jpeg",
540
+ "cid": "cids(0)",
541
+ "indexedAt": "1970-01-01T00:00:00.000Z",
542
+ "name": "alice blocks",
543
+ "purpose": "app.bsky.graph.defs#modlist",
544
+ "uri": "record(0)",
545
+ "viewer": Object {
546
+ "blocked": "record(1)",
547
+ "muted": false,
548
+ },
549
+ },
515
550
  "muted": false,
516
551
  },
517
552
  },
@@ -554,7 +589,7 @@ Object {
554
589
  "description": "big list of blocks",
555
590
  "indexedAt": "1970-01-01T00:00:00.000Z",
556
591
  "name": "alice blocks",
557
- "purpose": "app.bsky.graph.defs#blocklist",
592
+ "purpose": "app.bsky.graph.defs#modlist",
558
593
  "uri": "record(0)",
559
594
  "viewer": Object {
560
595
  "blocked": "record(1)",
@@ -295,7 +295,7 @@ Object {
295
295
  "$type": "app.bsky.embed.images#view",
296
296
  "images": Array [
297
297
  Object {
298
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
298
+ "alt": "tests/sample-img/key-landscape-small.jpg",
299
299
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(4)/cids(4)@jpeg",
300
300
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(4)/cids(4)@jpeg",
301
301
  },
@@ -328,7 +328,7 @@ Object {
328
328
  "$type": "app.bsky.embed.images",
329
329
  "images": Array [
330
330
  Object {
331
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
331
+ "alt": "tests/sample-img/key-landscape-small.jpg",
332
332
  "image": Object {
333
333
  "$type": "blob",
334
334
  "mimeType": "image/jpeg",
@@ -78,7 +78,7 @@ Array [
78
78
  "$type": "app.bsky.embed.images#view",
79
79
  "images": Array [
80
80
  Object {
81
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
81
+ "alt": "tests/sample-img/key-landscape-small.jpg",
82
82
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(3)/cids(5)@jpeg",
83
83
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(3)/cids(5)@jpeg",
84
84
  },
@@ -111,7 +111,7 @@ Array [
111
111
  "$type": "app.bsky.embed.images",
112
112
  "images": Array [
113
113
  Object {
114
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
114
+ "alt": "tests/sample-img/key-landscape-small.jpg",
115
115
  "image": Object {
116
116
  "$type": "blob",
117
117
  "mimeType": "image/jpeg",
@@ -209,7 +209,7 @@ Array [
209
209
  "$type": "app.bsky.embed.images#view",
210
210
  "images": Array [
211
211
  Object {
212
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
212
+ "alt": "tests/sample-img/key-landscape-small.jpg",
213
213
  "fullsize": "https://bsky.public.url/img/feed_fullsize/plain/user(3)/cids(5)@jpeg",
214
214
  "thumb": "https://bsky.public.url/img/feed_thumbnail/plain/user(3)/cids(5)@jpeg",
215
215
  },
@@ -242,7 +242,7 @@ Array [
242
242
  "$type": "app.bsky.embed.images",
243
243
  "images": Array [
244
244
  Object {
245
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
245
+ "alt": "tests/sample-img/key-landscape-small.jpg",
246
246
  "image": Object {
247
247
  "$type": "blob",
248
248
  "mimeType": "image/jpeg",
@@ -444,7 +444,7 @@ Array [
444
444
  "$type": "app.bsky.embed.images",
445
445
  "images": Array [
446
446
  Object {
447
- "alt": "tests/image/fixtures/key-landscape-small.jpg",
447
+ "alt": "tests/sample-img/key-landscape-small.jpg",
448
448
  "image": Object {
449
449
  "$type": "blob",
450
450
  "mimeType": "image/jpeg",
@@ -455,7 +455,7 @@ Array [
455
455
  },
456
456
  },
457
457
  Object {
458
- "alt": "tests/image/fixtures/key-alt.jpg",
458
+ "alt": "tests/sample-img/key-alt.jpg",
459
459
  "image": Object {
460
460
  "$type": "blob",
461
461
  "mimeType": "image/jpeg",