@atproto/dev-env 0.5.9 → 0.5.11

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atproto/dev-env
2
2
 
3
+ ## 0.5.11
4
+
5
+ ### Patch Changes
6
+
7
+ - [#5089](https://github.com/bluesky-social/atproto/pull/5089) [`85b4eb8`](https://github.com/bluesky-social/atproto/commit/85b4eb84aefaa293e93dcbf976b7b60cb47747fe) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Temporarily ignore error when creating mock post replies
8
+
9
+ - Updated dependencies [[`7b8a240`](https://github.com/bluesky-social/atproto/commit/7b8a240bcfd91df3465d374d86259477490a0ff4), [`3247279`](https://github.com/bluesky-social/atproto/commit/324727933699bee63a1db3b1fba040e067511ad4)]:
10
+ - @atproto/pds@0.5.4
11
+
12
+ ## 0.5.10
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies [[`c4bcb12`](https://github.com/bluesky-social/atproto/commit/c4bcb12a21bebb9e83f5c98c7ccdb16b5344ee9e), [`b9ef557`](https://github.com/bluesky-social/atproto/commit/b9ef5576beeb949bbac776dcbe4e4c2c7af60e74)]:
17
+ - @atproto/api@0.20.13
18
+ - @atproto/bsky@0.0.241
19
+ - @atproto/pds@0.5.2
20
+
3
21
  ## 0.5.9
4
22
 
5
23
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAA8B,WAAW,EAAE,MAAM,aAAa,CAAA;AAkBrE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,iBAsoBvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAA8B,WAAW,EAAE,MAAM,aAAa,CAAA;AAkBrE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,iBA2oBvD"}
@@ -275,14 +275,21 @@ export async function generateMockSetup(env) {
275
275
  rkey: urip.rkey,
276
276
  });
277
277
  const author = picka(userAgents);
278
- posts.push(await author.app.bsky.feed.post.create({ repo: author.did }, {
279
- text: picka(replyTexts),
280
- reply: {
281
- root: target.value.reply ? target.value.reply.root : target,
282
- parent: target,
283
- },
284
- createdAt: date.next().value,
285
- }));
278
+ try {
279
+ const post = await author.app.bsky.feed.post.create({ repo: author.did }, {
280
+ text: picka(replyTexts),
281
+ reply: {
282
+ root: target.value.reply?.root ?? target,
283
+ parent: target,
284
+ },
285
+ createdAt: date.next().value,
286
+ });
287
+ posts.push(post);
288
+ }
289
+ catch (err) {
290
+ // @TODO Investigate why this sometimes fails.
291
+ console.error('Failed to create reply', err);
292
+ }
286
293
  }
287
294
  // a set of likes
288
295
  for (const post of posts) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AtpAgent,\n COM_ATPROTO_MODERATION,\n ToolsOzoneQueueCreateQueue,\n} from '@atproto/api'\nimport { Database } from '@atproto/bsky'\nimport { AtUri, AtUriString } from '@atproto/syntax'\nimport { EXAMPLE_LABELER, RecordRef, TestNetwork } from '../index.js'\nimport { postTexts, replyTexts } from './data.js'\nimport blurHashB64 from './img/blur-hash-avatar-b64.js'\nimport labeledImgB64 from './img/labeled-img-b64.js'\n\n// NOTE\n// deterministic date generator\n// we use this to ensure the mock dataset is always the same\n// which is very useful when testing\n// (not everything is currently deterministic but it could be)\nfunction* dateGen(): Generator<string, never> {\n let start = 1657846031914\n while (true) {\n yield new Date(start).toISOString()\n start += 1e3\n }\n}\n\nexport async function generateMockSetup(env: TestNetwork) {\n const date = dateGen()\n\n const rand = (n: number) => Math.floor(Math.random() * n)\n const picka = <T>(arr: Array<T>): T => {\n if (arr.length) {\n return arr[rand(arr.length)] || arr[0]\n }\n throw new Error('Not found')\n }\n\n const users = [\n {\n email: 'alice@test.com',\n handle: `alice.test`,\n password: 'hunter2',\n displayName: 'Alice',\n description: 'Test user 0',\n },\n {\n email: 'bob@test.com',\n handle: `bob.test`,\n password: 'hunter2',\n displayName: 'Bob',\n description: 'Test user 1',\n },\n {\n email: 'carla@test.com',\n handle: `carla.test`,\n password: 'hunter2',\n displayName: 'Carla',\n description: 'Test user 2',\n },\n {\n email: 'triage@test.com',\n handle: 'triage.test',\n password: 'triage-pass',\n },\n {\n email: 'mod@test.com',\n handle: 'mod.test',\n password: 'mod-pass',\n },\n {\n email: 'admin-mod@test.com',\n handle: 'admin-mod.test',\n password: 'admin-mod-pass',\n },\n {\n email: 'labeler@test.com',\n handle: 'labeler.test',\n password: 'hunter2',\n displayName: 'Test Labeler',\n description: 'Labeling things across the atmosphere',\n },\n ]\n\n const userAgents = await Promise.all(\n users.map(async (user) => {\n const agent: AtpAgent = env.pds.getAgent()\n await agent.createAccount(user)\n agent.assertAuthenticated()\n if (user.displayName || user.description) {\n await agent.app.bsky.actor.profile.create(\n { repo: agent.did },\n {\n displayName: user.displayName,\n description: user.description,\n },\n )\n }\n return agent\n }),\n )\n\n const [alice, bob, carla, triage, mod, adminMod, labeler] = userAgents\n\n // Create chat declarations for all users\n for (const user of userAgents) {\n await user.chat.bsky.actor.declaration.create(\n { repo: user.did },\n { allowIncoming: 'all' },\n )\n }\n\n // Add moderator roles\n await env.ozone.addTriageDid(triage.did)\n await env.ozone.addModeratorDid(mod.did)\n await env.ozone.addAdminDid(adminMod.did)\n\n // Create report queues\n const ozoneAgent = env.ozone.getAgent()\n const adminHeaders = async (nsid: string) =>\n env.ozone.modHeaders(nsid, 'admin')\n\n const createQueue = async (input: {\n name: string\n subjectTypes: string[]\n reportTypes: string[]\n collection?: string\n }): Promise<void> => {\n try {\n await ozoneAgent.tools.ozone.queue.createQueue(input, {\n encoding: 'application/json',\n headers: await adminHeaders('tools.ozone.queue.createQueue'),\n })\n } catch (err) {\n if (!(err instanceof ToolsOzoneQueueCreateQueue.ConflictingQueueError)) {\n throw err\n }\n }\n }\n\n await Promise.all([\n createQueue({\n name: 'Spammy Accounts',\n subjectTypes: ['account'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n }),\n createQueue({\n name: 'Threatening Accounts',\n subjectTypes: ['account'],\n reportTypes: ['tools.ozone.report.defs#reasonViolenceThreats'],\n }),\n createQueue({\n name: 'Spammy Posts',\n subjectTypes: ['record'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n collection: 'app.bsky.feed.post',\n }),\n ])\n\n // Report one user (random)\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: picka(userAgents).did,\n },\n })\n\n // Reports that target queues\n await alice.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This account is spamming',\n subject: { $type: 'com.atproto.admin.defs#repoRef', did: bob.did },\n })\n await bob.com.atproto.moderation.createReport({\n reasonType: 'tools.ozone.report.defs#reasonViolenceThreats',\n reason: 'Threatened me',\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: carla.did,\n },\n })\n\n // everybody follows everybody\n const follow = async (author: AtpAgent, subject: AtpAgent) => {\n await author.app.bsky.graph.follow.create(\n { repo: author.assertDid },\n {\n subject: subject.assertDid,\n createdAt: date.next().value,\n },\n )\n }\n await follow(alice, bob)\n await follow(alice, carla)\n await follow(bob, alice)\n await follow(bob, carla)\n await follow(carla, alice)\n await follow(carla, bob)\n\n // a set of posts and reposts\n const posts: { uri: string; cid: string }[] = []\n for (let i = 0; i < postTexts.length; i++) {\n const author = picka(userAgents)\n const post = await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: postTexts[i],\n createdAt: date.next().value,\n },\n )\n posts.push(post)\n if (rand(10) === 0) {\n const reposter = picka(userAgents)\n await reposter.app.bsky.feed.repost.create(\n { repo: reposter.did },\n {\n subject: picka(posts),\n createdAt: date.next().value,\n },\n )\n }\n if (rand(6) === 0) {\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: post.uri,\n cid: post.cid,\n },\n })\n }\n }\n\n // Spam post report\n if (posts.length > 0) {\n await carla.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This post is spam',\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: posts[0].uri,\n cid: posts[0].cid,\n },\n })\n }\n\n // Route all reports to queues\n await env.ozone.daemon.ctx.queueRouter.routeReports()\n\n // make some naughty posts & label them\n const file = Buffer.from(labeledImgB64, 'base64')\n const uploadedImg = await bob.com.atproto.repo.uploadBlob(file, {\n encoding: 'image/png',\n })\n const labeledPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'naughty post',\n embed: {\n $type: 'app.bsky.embed.images',\n images: [\n {\n image: uploadedImg.data.blob,\n alt: 'naughty naughty',\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n\n const filteredPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'really bad post should be deleted',\n createdAt: date.next().value,\n },\n )\n\n await createLabel(env.bsky.db, {\n uri: labeledPost.uri,\n cid: labeledPost.cid,\n val: 'nudity',\n })\n await createLabel(env.bsky.db, {\n uri: filteredPost.uri,\n cid: filteredPost.cid,\n val: 'dmca-violation',\n })\n\n // post with a gallery of images\n const galleryItems: Array<any> = []\n for (let i = 0; i < 10; i++) {\n galleryItems.push({\n $type: 'app.bsky.embed.gallery#image',\n image: uploadedImg.data.blob,\n alt: 'naughty ' + (i + 1),\n aspectRatio: {\n $type: 'app.bsky.embed.defs#aspectRatio',\n width: 10,\n height: 10,\n },\n })\n }\n const galleryPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'look at my cool pics',\n embed: {\n $type: 'app.bsky.embed.gallery',\n items: galleryItems,\n },\n createdAt: date.next().value,\n },\n )\n posts.push(galleryPost)\n\n // a set of replies\n for (let i = 0; i < 100; i++) {\n const targetUri = picka(posts).uri\n const urip = new AtUri(targetUri)\n const target = await alice.app.bsky.feed.post.get({\n repo: urip.host,\n rkey: urip.rkey,\n })\n const author = picka(userAgents)\n posts.push(\n await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: picka(replyTexts),\n reply: {\n root: target.value.reply ? target.value.reply.root : target,\n parent: target,\n },\n createdAt: date.next().value,\n },\n ),\n )\n }\n\n // a set of likes\n for (const post of posts) {\n for (const user of userAgents) {\n if (rand(3) === 0) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: post,\n createdAt: date.next().value,\n },\n )\n }\n }\n }\n\n // a couple feed generators that returns some posts\n const fg1Uri = AtUri.make(\n alice.assertDid,\n 'app.bsky.feed.generator',\n 'alice-favs',\n )\n const fg1 = await env.createFeedGen({\n [fg1Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const avatarImg = Buffer.from(blurHashB64, 'base64')\n const avatarRes = await alice.com.atproto.repo.uploadBlob(avatarImg, {\n encoding: 'image/png',\n })\n const fgAliceRes = await alice.app.bsky.feed.generator.create(\n { repo: alice.assertDid, rkey: fg1Uri.rkey },\n {\n did: fg1.did,\n displayName: 'alices feed',\n description: 'all my fav stuff',\n avatar: avatarRes.data.blob,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: 'check out my algorithm!',\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgAliceRes,\n },\n createdAt: date.next().value,\n },\n )\n for (const user of [alice, bob, carla]) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: fgAliceRes,\n createdAt: date.next().value,\n },\n )\n }\n\n const fg2Uri = AtUri.make(\n bob.assertDid,\n 'app.bsky.feed.generator',\n 'bob-redux',\n )\n const fg2 = await env.createFeedGen({\n [fg2Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgBobRes = await bob.app.bsky.feed.generator.create(\n { repo: bob.assertDid, rkey: fg2Uri.rkey },\n {\n did: fg2.did,\n displayName: 'Bobby boy hot new algo',\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `bobs feed is neat too`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgBobRes,\n },\n createdAt: date.next().value,\n },\n )\n\n const fg3Uri = AtUri.make(\n carla.assertDid,\n 'app.bsky.feed.generator',\n 'carla-intr-algo',\n )\n const fg3 = await env.createFeedGen({\n [fg3Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgCarlaRes = await carla.app.bsky.feed.generator.create(\n { repo: carla.assertDid, rkey: fg3Uri.rkey },\n {\n did: fg3.did,\n displayName: `Acceptin' Generator`,\n acceptsInteractions: true,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `carla accepts interactions on her feed`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgCarlaRes,\n },\n createdAt: date.next().value,\n },\n )\n\n // create labeler service\n {\n await labeler.app.bsky.labeler.service.create(\n { repo: labeler.did, rkey: 'self' },\n {\n policies: {\n labelValues: [\n '!hide',\n 'porn',\n 'rude',\n 'spam',\n 'spider',\n 'misinfo',\n 'cool',\n 'curate',\n ],\n labelValueDefinitions: [\n {\n identifier: 'rude',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: true,\n locales: [\n {\n lang: 'en',\n name: 'Rude',\n description: 'Just such a jerk, you wouldnt believe it.',\n },\n ],\n },\n {\n identifier: 'spam',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n locales: [\n {\n lang: 'en',\n name: 'Spam',\n description:\n 'Low quality posts that dont add to the conversation.',\n },\n ],\n },\n {\n identifier: 'spider',\n blurs: 'media',\n severity: 'alert',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Spider!',\n description: 'Oh no its a spider.',\n },\n ],\n },\n {\n identifier: 'cool',\n blurs: 'none',\n severity: 'inform',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Cool',\n description: 'The coolest peeps in the atmosphere.',\n },\n ],\n },\n {\n identifier: 'curate',\n blurs: 'none',\n severity: 'none',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Curation filter',\n description: 'We just dont want to see it as much.',\n },\n ],\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n await createLabel(env.bsky.db, {\n uri: alice.assertDid,\n cid: '',\n val: 'rude',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: `at://${alice.assertDid}/app.bsky.feed.generator/alice-favs`,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: bob.assertDid,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: carla.assertDid,\n cid: '',\n val: 'spam',\n src: labeler.did,\n })\n }\n\n // Create lists and add people to the lists\n {\n const flowerLovers = await alice.app.bsky.graph.list.create(\n { repo: alice.assertDid },\n {\n name: 'Flower Lovers',\n purpose: 'app.bsky.graph.defs#curatelist',\n createdAt: new Date().toISOString(),\n description: 'A list of posts about flowers',\n },\n )\n const labelHaters = await bob.app.bsky.graph.list.create(\n { repo: bob.assertDid },\n {\n name: 'Label Haters',\n purpose: 'app.bsky.graph.defs#modlist',\n createdAt: new Date().toISOString(),\n description: 'A list of people who hate labels',\n },\n )\n await alice.app.bsky.graph.listitem.create(\n { repo: alice.assertDid },\n {\n subject: bob.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(flowerLovers.uri, flowerLovers.cid).uriStr,\n },\n )\n await bob.app.bsky.graph.listitem.create(\n { repo: bob.assertDid },\n {\n subject: alice.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(labelHaters.uri, labelHaters.cid).uriStr,\n },\n )\n }\n\n await setVerifier(env.bsky.db, alice.assertDid)\n\n // @TODO These are useful when testing complex threads, but don't need to be enabled all the time. We could make it configurable.\n // import * as seedThreadV2 from '../seed/thread-v2.js'\n // const sc = env.getSeedClient()\n // await seedThreadV2.simple(sc)\n // await seedThreadV2.long(sc)\n // await seedThreadV2.deep(sc)\n // await seedThreadV2.branchingFactor(sc)\n // await seedThreadV2.annotateMoreReplies(sc)\n // await seedThreadV2.annotateOP(sc)\n // await seedThreadV2.sort(sc)\n // await seedThreadV2.bumpOpAndViewer(sc)\n // await seedThreadV2.bumpGroupSorting(sc)\n // await seedThreadV2.bumpFollows(sc)\n // await seedThreadV2.blockDeletionAuth(sc, env.bsky.ctx.cfg.modServiceDid)\n // await seedThreadV2.mutes(sc)\n // await seedThreadV2.threadgated(sc)\n // await seedThreadV2.tags(sc)\n}\n\nconst createLabel = async (\n db: Database,\n opts: { uri: string; cid: string; val: string; src?: string },\n) => {\n await db.db\n .insertInto('label')\n .values({\n uri: opts.uri,\n cid: opts.cid,\n val: opts.val,\n cts: new Date().toISOString(),\n neg: false,\n src: opts.src ?? EXAMPLE_LABELER,\n })\n .execute()\n}\n\nconst setVerifier = async (db: Database, did: string) => {\n await db.db\n .updateTable('actor')\n .set({ trustedVerifier: true })\n .where('did', '=', did)\n .execute()\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AtpAgent,\n COM_ATPROTO_MODERATION,\n ToolsOzoneQueueCreateQueue,\n} from '@atproto/api'\nimport { Database } from '@atproto/bsky'\nimport { AtUri, AtUriString } from '@atproto/syntax'\nimport { EXAMPLE_LABELER, RecordRef, TestNetwork } from '../index.js'\nimport { postTexts, replyTexts } from './data.js'\nimport blurHashB64 from './img/blur-hash-avatar-b64.js'\nimport labeledImgB64 from './img/labeled-img-b64.js'\n\n// NOTE\n// deterministic date generator\n// we use this to ensure the mock dataset is always the same\n// which is very useful when testing\n// (not everything is currently deterministic but it could be)\nfunction* dateGen(): Generator<string, never> {\n let start = 1657846031914\n while (true) {\n yield new Date(start).toISOString()\n start += 1e3\n }\n}\n\nexport async function generateMockSetup(env: TestNetwork) {\n const date = dateGen()\n\n const rand = (n: number) => Math.floor(Math.random() * n)\n const picka = <T>(arr: Array<T>): T => {\n if (arr.length) {\n return arr[rand(arr.length)] || arr[0]\n }\n throw new Error('Not found')\n }\n\n const users = [\n {\n email: 'alice@test.com',\n handle: `alice.test`,\n password: 'hunter2',\n displayName: 'Alice',\n description: 'Test user 0',\n },\n {\n email: 'bob@test.com',\n handle: `bob.test`,\n password: 'hunter2',\n displayName: 'Bob',\n description: 'Test user 1',\n },\n {\n email: 'carla@test.com',\n handle: `carla.test`,\n password: 'hunter2',\n displayName: 'Carla',\n description: 'Test user 2',\n },\n {\n email: 'triage@test.com',\n handle: 'triage.test',\n password: 'triage-pass',\n },\n {\n email: 'mod@test.com',\n handle: 'mod.test',\n password: 'mod-pass',\n },\n {\n email: 'admin-mod@test.com',\n handle: 'admin-mod.test',\n password: 'admin-mod-pass',\n },\n {\n email: 'labeler@test.com',\n handle: 'labeler.test',\n password: 'hunter2',\n displayName: 'Test Labeler',\n description: 'Labeling things across the atmosphere',\n },\n ]\n\n const userAgents = await Promise.all(\n users.map(async (user) => {\n const agent: AtpAgent = env.pds.getAgent()\n await agent.createAccount(user)\n agent.assertAuthenticated()\n if (user.displayName || user.description) {\n await agent.app.bsky.actor.profile.create(\n { repo: agent.did },\n {\n displayName: user.displayName,\n description: user.description,\n },\n )\n }\n return agent\n }),\n )\n\n const [alice, bob, carla, triage, mod, adminMod, labeler] = userAgents\n\n // Create chat declarations for all users\n for (const user of userAgents) {\n await user.chat.bsky.actor.declaration.create(\n { repo: user.did },\n { allowIncoming: 'all' },\n )\n }\n\n // Add moderator roles\n await env.ozone.addTriageDid(triage.did)\n await env.ozone.addModeratorDid(mod.did)\n await env.ozone.addAdminDid(adminMod.did)\n\n // Create report queues\n const ozoneAgent = env.ozone.getAgent()\n const adminHeaders = async (nsid: string) =>\n env.ozone.modHeaders(nsid, 'admin')\n\n const createQueue = async (input: {\n name: string\n subjectTypes: string[]\n reportTypes: string[]\n collection?: string\n }): Promise<void> => {\n try {\n await ozoneAgent.tools.ozone.queue.createQueue(input, {\n encoding: 'application/json',\n headers: await adminHeaders('tools.ozone.queue.createQueue'),\n })\n } catch (err) {\n if (!(err instanceof ToolsOzoneQueueCreateQueue.ConflictingQueueError)) {\n throw err\n }\n }\n }\n\n await Promise.all([\n createQueue({\n name: 'Spammy Accounts',\n subjectTypes: ['account'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n }),\n createQueue({\n name: 'Threatening Accounts',\n subjectTypes: ['account'],\n reportTypes: ['tools.ozone.report.defs#reasonViolenceThreats'],\n }),\n createQueue({\n name: 'Spammy Posts',\n subjectTypes: ['record'],\n reportTypes: [COM_ATPROTO_MODERATION.DefsReasonSpam],\n collection: 'app.bsky.feed.post',\n }),\n ])\n\n // Report one user (random)\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: picka(userAgents).did,\n },\n })\n\n // Reports that target queues\n await alice.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This account is spamming',\n subject: { $type: 'com.atproto.admin.defs#repoRef', did: bob.did },\n })\n await bob.com.atproto.moderation.createReport({\n reasonType: 'tools.ozone.report.defs#reasonViolenceThreats',\n reason: 'Threatened me',\n subject: {\n $type: 'com.atproto.admin.defs#repoRef',\n did: carla.did,\n },\n })\n\n // everybody follows everybody\n const follow = async (author: AtpAgent, subject: AtpAgent) => {\n await author.app.bsky.graph.follow.create(\n { repo: author.assertDid },\n {\n subject: subject.assertDid,\n createdAt: date.next().value,\n },\n )\n }\n await follow(alice, bob)\n await follow(alice, carla)\n await follow(bob, alice)\n await follow(bob, carla)\n await follow(carla, alice)\n await follow(carla, bob)\n\n // a set of posts and reposts\n const posts: { uri: string; cid: string }[] = []\n for (let i = 0; i < postTexts.length; i++) {\n const author = picka(userAgents)\n const post = await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: postTexts[i],\n createdAt: date.next().value,\n },\n )\n posts.push(post)\n if (rand(10) === 0) {\n const reposter = picka(userAgents)\n await reposter.app.bsky.feed.repost.create(\n { repo: reposter.did },\n {\n subject: picka(posts),\n createdAt: date.next().value,\n },\n )\n }\n if (rand(6) === 0) {\n const reporter = picka(userAgents)\n await reporter.com.atproto.moderation.createReport({\n reasonType: picka([\n COM_ATPROTO_MODERATION.DefsReasonSpam,\n COM_ATPROTO_MODERATION.DefsReasonOther,\n ]),\n reason: picka([\"Didn't look right to me\", undefined, undefined]),\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: post.uri,\n cid: post.cid,\n },\n })\n }\n }\n\n // Spam post report\n if (posts.length > 0) {\n await carla.com.atproto.moderation.createReport({\n reasonType: COM_ATPROTO_MODERATION.DefsReasonSpam,\n reason: 'This post is spam',\n subject: {\n $type: 'com.atproto.repo.strongRef',\n uri: posts[0].uri,\n cid: posts[0].cid,\n },\n })\n }\n\n // Route all reports to queues\n await env.ozone.daemon.ctx.queueRouter.routeReports()\n\n // make some naughty posts & label them\n const file = Buffer.from(labeledImgB64, 'base64')\n const uploadedImg = await bob.com.atproto.repo.uploadBlob(file, {\n encoding: 'image/png',\n })\n const labeledPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'naughty post',\n embed: {\n $type: 'app.bsky.embed.images',\n images: [\n {\n image: uploadedImg.data.blob,\n alt: 'naughty naughty',\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n\n const filteredPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'really bad post should be deleted',\n createdAt: date.next().value,\n },\n )\n\n await createLabel(env.bsky.db, {\n uri: labeledPost.uri,\n cid: labeledPost.cid,\n val: 'nudity',\n })\n await createLabel(env.bsky.db, {\n uri: filteredPost.uri,\n cid: filteredPost.cid,\n val: 'dmca-violation',\n })\n\n // post with a gallery of images\n const galleryItems: Array<any> = []\n for (let i = 0; i < 10; i++) {\n galleryItems.push({\n $type: 'app.bsky.embed.gallery#image',\n image: uploadedImg.data.blob,\n alt: 'naughty ' + (i + 1),\n aspectRatio: {\n $type: 'app.bsky.embed.defs#aspectRatio',\n width: 10,\n height: 10,\n },\n })\n }\n const galleryPost = await bob.app.bsky.feed.post.create(\n { repo: bob.assertDid },\n {\n text: 'look at my cool pics',\n embed: {\n $type: 'app.bsky.embed.gallery',\n items: galleryItems,\n },\n createdAt: date.next().value,\n },\n )\n posts.push(galleryPost)\n\n // a set of replies\n for (let i = 0; i < 100; i++) {\n const targetUri = picka(posts).uri\n const urip = new AtUri(targetUri)\n const target = await alice.app.bsky.feed.post.get({\n repo: urip.host,\n rkey: urip.rkey,\n })\n const author = picka(userAgents)\n try {\n const post = await author.app.bsky.feed.post.create(\n { repo: author.did },\n {\n text: picka(replyTexts),\n reply: {\n root: target.value.reply?.root ?? target,\n parent: target,\n },\n createdAt: date.next().value,\n },\n )\n\n posts.push(post)\n } catch (err) {\n // @TODO Investigate why this sometimes fails.\n console.error('Failed to create reply', err)\n }\n }\n\n // a set of likes\n for (const post of posts) {\n for (const user of userAgents) {\n if (rand(3) === 0) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: post,\n createdAt: date.next().value,\n },\n )\n }\n }\n }\n\n // a couple feed generators that returns some posts\n const fg1Uri = AtUri.make(\n alice.assertDid,\n 'app.bsky.feed.generator',\n 'alice-favs',\n )\n const fg1 = await env.createFeedGen({\n [fg1Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const avatarImg = Buffer.from(blurHashB64, 'base64')\n const avatarRes = await alice.com.atproto.repo.uploadBlob(avatarImg, {\n encoding: 'image/png',\n })\n const fgAliceRes = await alice.app.bsky.feed.generator.create(\n { repo: alice.assertDid, rkey: fg1Uri.rkey },\n {\n did: fg1.did,\n displayName: 'alices feed',\n description: 'all my fav stuff',\n avatar: avatarRes.data.blob,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: 'check out my algorithm!',\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgAliceRes,\n },\n createdAt: date.next().value,\n },\n )\n for (const user of [alice, bob, carla]) {\n await user.app.bsky.feed.like.create(\n { repo: user.did },\n {\n subject: fgAliceRes,\n createdAt: date.next().value,\n },\n )\n }\n\n const fg2Uri = AtUri.make(\n bob.assertDid,\n 'app.bsky.feed.generator',\n 'bob-redux',\n )\n const fg2 = await env.createFeedGen({\n [fg2Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgBobRes = await bob.app.bsky.feed.generator.create(\n { repo: bob.assertDid, rkey: fg2Uri.rkey },\n {\n did: fg2.did,\n displayName: 'Bobby boy hot new algo',\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `bobs feed is neat too`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgBobRes,\n },\n createdAt: date.next().value,\n },\n )\n\n const fg3Uri = AtUri.make(\n carla.assertDid,\n 'app.bsky.feed.generator',\n 'carla-intr-algo',\n )\n const fg3 = await env.createFeedGen({\n [fg3Uri.toString()]: async () => {\n const feed = posts\n .filter(() => rand(2) === 0)\n .map((post) => ({ post: post.uri as AtUriString }))\n return {\n encoding: 'application/json',\n body: {\n feed,\n },\n }\n },\n })\n const fgCarlaRes = await carla.app.bsky.feed.generator.create(\n { repo: carla.assertDid, rkey: fg3Uri.rkey },\n {\n did: fg3.did,\n displayName: `Acceptin' Generator`,\n acceptsInteractions: true,\n createdAt: date.next().value,\n },\n )\n\n await alice.app.bsky.feed.post.create(\n { repo: alice.assertDid },\n {\n text: `carla accepts interactions on her feed`,\n embed: {\n $type: 'app.bsky.embed.record',\n record: fgCarlaRes,\n },\n createdAt: date.next().value,\n },\n )\n\n // create labeler service\n {\n await labeler.app.bsky.labeler.service.create(\n { repo: labeler.did, rkey: 'self' },\n {\n policies: {\n labelValues: [\n '!hide',\n 'porn',\n 'rude',\n 'spam',\n 'spider',\n 'misinfo',\n 'cool',\n 'curate',\n ],\n labelValueDefinitions: [\n {\n identifier: 'rude',\n blurs: 'content',\n severity: 'alert',\n defaultSetting: 'warn',\n adultOnly: true,\n locales: [\n {\n lang: 'en',\n name: 'Rude',\n description: 'Just such a jerk, you wouldnt believe it.',\n },\n ],\n },\n {\n identifier: 'spam',\n blurs: 'content',\n severity: 'inform',\n defaultSetting: 'hide',\n locales: [\n {\n lang: 'en',\n name: 'Spam',\n description:\n 'Low quality posts that dont add to the conversation.',\n },\n ],\n },\n {\n identifier: 'spider',\n blurs: 'media',\n severity: 'alert',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Spider!',\n description: 'Oh no its a spider.',\n },\n ],\n },\n {\n identifier: 'cool',\n blurs: 'none',\n severity: 'inform',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Cool',\n description: 'The coolest peeps in the atmosphere.',\n },\n ],\n },\n {\n identifier: 'curate',\n blurs: 'none',\n severity: 'none',\n defaultSetting: 'warn',\n locales: [\n {\n lang: 'en',\n name: 'Curation filter',\n description: 'We just dont want to see it as much.',\n },\n ],\n },\n ],\n },\n createdAt: date.next().value,\n },\n )\n await createLabel(env.bsky.db, {\n uri: alice.assertDid,\n cid: '',\n val: 'rude',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: `at://${alice.assertDid}/app.bsky.feed.generator/alice-favs`,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: bob.assertDid,\n cid: '',\n val: 'cool',\n src: labeler.did,\n })\n await createLabel(env.bsky.db, {\n uri: carla.assertDid,\n cid: '',\n val: 'spam',\n src: labeler.did,\n })\n }\n\n // Create lists and add people to the lists\n {\n const flowerLovers = await alice.app.bsky.graph.list.create(\n { repo: alice.assertDid },\n {\n name: 'Flower Lovers',\n purpose: 'app.bsky.graph.defs#curatelist',\n createdAt: new Date().toISOString(),\n description: 'A list of posts about flowers',\n },\n )\n const labelHaters = await bob.app.bsky.graph.list.create(\n { repo: bob.assertDid },\n {\n name: 'Label Haters',\n purpose: 'app.bsky.graph.defs#modlist',\n createdAt: new Date().toISOString(),\n description: 'A list of people who hate labels',\n },\n )\n await alice.app.bsky.graph.listitem.create(\n { repo: alice.assertDid },\n {\n subject: bob.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(flowerLovers.uri, flowerLovers.cid).uriStr,\n },\n )\n await bob.app.bsky.graph.listitem.create(\n { repo: bob.assertDid },\n {\n subject: alice.assertDid,\n createdAt: new Date().toISOString(),\n list: new RecordRef(labelHaters.uri, labelHaters.cid).uriStr,\n },\n )\n }\n\n await setVerifier(env.bsky.db, alice.assertDid)\n\n // @TODO These are useful when testing complex threads, but don't need to be enabled all the time. We could make it configurable.\n // import * as seedThreadV2 from '../seed/thread-v2.js'\n // const sc = env.getSeedClient()\n // await seedThreadV2.simple(sc)\n // await seedThreadV2.long(sc)\n // await seedThreadV2.deep(sc)\n // await seedThreadV2.branchingFactor(sc)\n // await seedThreadV2.annotateMoreReplies(sc)\n // await seedThreadV2.annotateOP(sc)\n // await seedThreadV2.sort(sc)\n // await seedThreadV2.bumpOpAndViewer(sc)\n // await seedThreadV2.bumpGroupSorting(sc)\n // await seedThreadV2.bumpFollows(sc)\n // await seedThreadV2.blockDeletionAuth(sc, env.bsky.ctx.cfg.modServiceDid)\n // await seedThreadV2.mutes(sc)\n // await seedThreadV2.threadgated(sc)\n // await seedThreadV2.tags(sc)\n}\n\nconst createLabel = async (\n db: Database,\n opts: { uri: string; cid: string; val: string; src?: string },\n) => {\n await db.db\n .insertInto('label')\n .values({\n uri: opts.uri,\n cid: opts.cid,\n val: opts.val,\n cts: new Date().toISOString(),\n neg: false,\n src: opts.src ?? EXAMPLE_LABELER,\n })\n .execute()\n}\n\nconst setVerifier = async (db: Database, did: string) => {\n await db.db\n .updateTable('actor')\n .set({ trustedVerifier: true })\n .where('did', '=', did)\n .execute()\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/dev-env",
3
- "version": "0.5.9",
3
+ "version": "0.5.11",
4
4
  "license": "MIT",
5
5
  "description": "Local development environment helper for atproto development",
6
6
  "keywords": [
@@ -12,7 +12,6 @@
12
12
  "url": "https://github.com/bluesky-social/atproto",
13
13
  "directory": "packages/dev-env"
14
14
  },
15
- "bin": "bin.js",
16
15
  "engines": {
17
16
  "node": ">=22"
18
17
  },
@@ -25,19 +24,19 @@
25
24
  "multiformats": "^13.0.0",
26
25
  "uint8arrays": "^5.0.0",
27
26
  "undici": "^6.14.1",
28
- "@atproto/api": "^0.20.12",
29
- "@atproto/bsky": "^0.0.240",
30
- "@atproto/bsync": "^0.0.27",
31
- "@atproto/common-web": "^0.5.0",
27
+ "@atproto/bsky": "^0.0.241",
28
+ "@atproto/api": "^0.20.14",
32
29
  "@atproto/crypto": "^0.5.0",
30
+ "@atproto/common-web": "^0.5.0",
31
+ "@atproto/bsync": "^0.0.27",
33
32
  "@atproto/identity": "^0.5.0",
34
- "@atproto/lexicon": "^0.7.1",
35
33
  "@atproto/lex": "^0.1.3",
36
- "@atproto/sync": "^0.3.1",
34
+ "@atproto/lexicon": "^0.7.1",
35
+ "@atproto/pds": "^0.5.4",
36
+ "@atproto/ozone": "^0.2.3",
37
37
  "@atproto/syntax": "^0.6.1",
38
- "@atproto/pds": "^0.5.2",
39
38
  "@atproto/xrpc-server": "^0.11.1",
40
- "@atproto/ozone": "^0.2.3"
39
+ "@atproto/sync": "^0.3.1"
41
40
  },
42
41
  "devDependencies": {
43
42
  "@types/express": "^4.17.13",
@@ -54,5 +53,8 @@
54
53
  "build": "tsc --build tsconfig.build.json",
55
54
  "start": "../dev-infra/with-test-redis-and-db.sh node --enable-source-maps dist/bin.js",
56
55
  "dev": "../dev-infra/with-test-redis-and-db.sh node --enable-source-maps --watch dist/bin.js"
56
+ },
57
+ "bin": {
58
+ "dev-env": "bin.js"
57
59
  }
58
60
  }
package/src/mock/index.ts CHANGED
@@ -333,19 +333,24 @@ export async function generateMockSetup(env: TestNetwork) {
333
333
  rkey: urip.rkey,
334
334
  })
335
335
  const author = picka(userAgents)
336
- posts.push(
337
- await author.app.bsky.feed.post.create(
336
+ try {
337
+ const post = await author.app.bsky.feed.post.create(
338
338
  { repo: author.did },
339
339
  {
340
340
  text: picka(replyTexts),
341
341
  reply: {
342
- root: target.value.reply ? target.value.reply.root : target,
342
+ root: target.value.reply?.root ?? target,
343
343
  parent: target,
344
344
  },
345
345
  createdAt: date.next().value,
346
346
  },
347
- ),
348
- )
347
+ )
348
+
349
+ posts.push(post)
350
+ } catch (err) {
351
+ // @TODO Investigate why this sometimes fails.
352
+ console.error('Failed to create reply', err)
353
+ }
349
354
  }
350
355
 
351
356
  // a set of likes