@atproto/dev-env 0.5.10 → 0.5.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 (49) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/bsky.d.ts.map +1 -1
  3. package/dist/bsky.js.map +1 -1
  4. package/dist/bsync.d.ts.map +1 -1
  5. package/dist/bsync.js.map +1 -1
  6. package/dist/feed-gen.d.ts.map +1 -1
  7. package/dist/introspect.d.ts.map +1 -1
  8. package/dist/introspect.js.map +1 -1
  9. package/dist/mock/img/blur-hash-avatar-b64.d.ts +1 -1
  10. package/dist/mock/img/blur-hash-avatar-b64.d.ts.map +1 -1
  11. package/dist/mock/img/labeled-img-b64.d.ts +1 -1
  12. package/dist/mock/img/labeled-img-b64.d.ts.map +1 -1
  13. package/dist/mock/index.d.ts.map +1 -1
  14. package/dist/mock/index.js +15 -8
  15. package/dist/mock/index.js.map +1 -1
  16. package/dist/moderator-client.d.ts.map +1 -1
  17. package/dist/moderator-client.js.map +1 -1
  18. package/dist/network-no-appview.d.ts.map +1 -1
  19. package/dist/network-no-appview.js.map +1 -1
  20. package/dist/network.d.ts.map +1 -1
  21. package/dist/network.js.map +1 -1
  22. package/dist/ozone.d.ts.map +1 -1
  23. package/dist/ozone.js.map +1 -1
  24. package/dist/pds.d.ts.map +1 -1
  25. package/dist/pds.js.map +1 -1
  26. package/dist/plc.d.ts.map +1 -1
  27. package/dist/plc.js.map +1 -1
  28. package/dist/seed/author-feed.d.ts.map +1 -1
  29. package/dist/seed/basic.d.ts +1 -1
  30. package/dist/seed/basic.d.ts.map +1 -1
  31. package/dist/seed/client.d.ts.map +1 -1
  32. package/dist/seed/client.js.map +1 -1
  33. package/dist/seed/follows.d.ts.map +1 -1
  34. package/dist/seed/likes.d.ts.map +1 -1
  35. package/dist/seed/quotes.d.ts.map +1 -1
  36. package/dist/seed/reposts.d.ts.map +1 -1
  37. package/dist/seed/thread-v2.d.ts +4 -4
  38. package/dist/seed/users-bulk.d.ts.map +1 -1
  39. package/dist/seed/users.d.ts.map +1 -1
  40. package/dist/seed/verifications.d.ts.map +1 -1
  41. package/dist/service-profile-lexicon.d.ts.map +1 -1
  42. package/dist/service-profile-ozone.d.ts.map +1 -1
  43. package/dist/service-profile-ozone.js.map +1 -1
  44. package/dist/service-profile.d.ts.map +1 -1
  45. package/dist/service-profile.js.map +1 -1
  46. package/dist/util.d.ts.map +1 -1
  47. package/package.json +19 -18
  48. package/src/mock/index.ts +10 -5
  49. package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @atproto/dev-env
2
2
 
3
+ ## 0.5.12
4
+
5
+ ### Patch Changes
6
+
7
+ - [#4967](https://github.com/bluesky-social/atproto/pull/4967) [`9fc720c`](https://github.com/bluesky-social/atproto/commit/9fc720ce75f3ee88a5e48a9be919b07c7647f6f5) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Use TypeScript 7 to build package
8
+
9
+ - Updated dependencies [[`9fc720c`](https://github.com/bluesky-social/atproto/commit/9fc720ce75f3ee88a5e48a9be919b07c7647f6f5)]:
10
+ - @atproto/xrpc-server@0.11.2
11
+ - @atproto/common-web@0.5.1
12
+ - @atproto/identity@0.5.1
13
+ - @atproto/lex@0.1.4
14
+ - @atproto/lexicon@0.7.2
15
+ - @atproto/crypto@0.5.1
16
+ - @atproto/syntax@0.6.2
17
+ - @atproto/bsync@0.0.28
18
+ - @atproto/ozone@0.2.4
19
+ - @atproto/bsky@0.0.242
20
+ - @atproto/sync@0.3.2
21
+ - @atproto/api@0.20.16
22
+ - @atproto/pds@0.5.5
23
+
24
+ ## 0.5.11
25
+
26
+ ### Patch Changes
27
+
28
+ - [#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
29
+
30
+ - Updated dependencies [[`7b8a240`](https://github.com/bluesky-social/atproto/commit/7b8a240bcfd91df3465d374d86259477490a0ff4), [`3247279`](https://github.com/bluesky-social/atproto/commit/324727933699bee63a1db3b1fba040e067511ad4)]:
31
+ - @atproto/pds@0.5.4
32
+
3
33
  ## 0.5.10
4
34
 
5
35
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"bsky.d.ts","sourceRoot":"","sources":["../src/bsky.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,cAAc,eAAe,CAAA;AAE7B,qBAAa,QAAQ;IAEV,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI,CAAC,QAAQ;IACjB,MAAM,EAAE,IAAI,CAAC,WAAW;IACxB,SAAS,EAAE,IAAI,CAAC,eAAe;IAC/B,KAAK,EAAE,IAAI,CAAC,SAAS;IACrB,GAAG,EAAE,IAAI,CAAC,gBAAgB;IAC1B,SAAS,EAAE,MAAM;gBAPjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,MAAM,EAAE,IAAI,CAAC,WAAW,EACxB,SAAS,EAAE,IAAI,CAAC,eAAe,EAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,EACrB,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAC1B,SAAS,EAAE,MAAM;WAGb,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0GvD,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAEzB;IAED,QAAQ,IAAI,QAAQ;IAMpB,SAAS,IAAI,MAAM;IAMnB,SAAS,IAAI,MAAM;IAQnB,gBAAgB;;;IAMV,KAAK;CAOZ"}
1
+ {"version":3,"file":"bsky.d.ts","sourceRoot":"","sources":["../src/bsky.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,cAAc,eAAe,CAAA;AAE7B,qBAAa,QAAQ;IAEV,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI,CAAC,QAAQ;IACjB,MAAM,EAAE,IAAI,CAAC,WAAW;IACxB,SAAS,EAAE,IAAI,CAAC,eAAe;IAC/B,KAAK,EAAE,IAAI,CAAC,SAAS;IACrB,GAAG,EAAE,IAAI,CAAC,gBAAgB;IAC1B,SAAS,EAAE,MAAM;IAR1B,YACS,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,MAAM,EAAE,IAAI,CAAC,WAAW,EACxB,SAAS,EAAE,IAAI,CAAC,eAAe,EAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,EACrB,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAC1B,SAAS,EAAE,MAAM,EACtB;IAEJ,OAAa,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwGtD;IAED,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAEzB;IAED,QAAQ,IAAI,QAAQ,CAInB;IAED,SAAS,IAAI,MAAM,CAIlB;IAED,SAAS,IAAI,MAAM,CAMlB;IAED,gBAAgB;QAEZ,aAAa;MAEhB;IAEK,KAAK,kBAMV;CACF"}
package/dist/bsky.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bsky.js","sourceRoot":"","sources":["../src/bsky.ts"],"names":[],"mappings":"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","sourcesContent":["import { Client as PlcClient } from '@did-plc/lib'\nimport getPort from 'get-port'\nimport * as ui8 from 'uint8arrays'\nimport { AtpAgent } from '@atproto/api'\nimport * as bsky from '@atproto/bsky'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport { Client } from '@atproto/lex'\nimport { ADMIN_PASSWORD, EXAMPLE_LABELER } from './const.js'\nimport { BskyConfig } from './types.js'\nexport * from '@atproto/bsky'\n\nexport class TestBsky {\n constructor(\n public url: string,\n public port: number,\n public db: bsky.Database,\n public server: bsky.BskyAppView,\n public dataplane: bsky.DataPlaneServer,\n public bsync: bsky.MockBsync,\n public sub: bsky.RepoSubscription,\n public serverDid: string,\n ) {}\n\n static async create(cfg: BskyConfig): Promise<TestBsky> {\n const serviceKeypair = cfg.privateKey\n ? await Secp256k1Keypair.import(cfg.privateKey)\n : await Secp256k1Keypair.create()\n const plcClient = new PlcClient(cfg.plcUrl)\n\n const port = cfg.port || (await getPort())\n const url = `http://localhost:${port}`\n const serverDid = await plcClient.createDid({\n signingKey: serviceKeypair.did(),\n rotationKeys: [serviceKeypair.did()],\n handle: 'bsky.test',\n pds: `http://localhost:${port}`,\n signer: serviceKeypair,\n })\n\n const endpoint = `http://localhost:${port}`\n\n await plcClient.updateData(serverDid, serviceKeypair, (x) => {\n x.services['bsky_notif'] = {\n type: 'BskyNotificationService',\n endpoint,\n }\n x.services['bsky_appview'] = {\n type: 'BskyAppView',\n endpoint,\n }\n return x\n })\n\n // shared across server, ingester, and indexer in order to share pool, avoid too many pg connections.\n const db = new bsky.Database({\n url: cfg.dbPostgresUrl,\n schema: cfg.dbPostgresSchema,\n poolSize: 10,\n })\n\n const dataplanePort = await getPort()\n const dataplane = await bsky.DataPlaneServer.create(\n db,\n dataplanePort,\n cfg.plcUrl,\n )\n\n const bsyncPort = await getPort()\n const bsync = await bsky.MockBsync.create(db, bsyncPort)\n\n const config = new bsky.ServerConfig({\n version: 'unknown',\n port,\n didPlcUrl: cfg.plcUrl,\n publicUrl: 'https://bsky.public.url',\n serverDid,\n alternateAudienceDids: [],\n dataplaneUrls: [`http://localhost:${dataplanePort}`],\n dataplaneHttpVersion: '1.1',\n bsyncUrl: `http://localhost:${bsyncPort}`,\n bsyncHttpVersion: '1.1',\n modServiceDid: cfg.modServiceDid ?? 'did:example:invalidMod',\n labelsFromIssuerDids: [EXAMPLE_LABELER],\n bigThreadUris: new Set(),\n maxThreadParents: cfg.maxThreadParents ?? 50,\n disableSsrfProtection: true,\n searchTagsHide: new Set(),\n threadTagsBumpDown: new Set(),\n threadTagsHide: new Set(),\n visibilityTagHide: '',\n visibilityTagRankPrefix: '',\n debugFieldAllowedDids: new Set(),\n draftsLimit: 500,\n ...cfg,\n adminPasswords: [ADMIN_PASSWORD],\n etcdHosts: [],\n })\n\n // Separate migration db in case migration changes some connection state that we need in the tests, e.g. \"alter database ... set ...\"\n const migrationDb = new bsky.Database({\n url: cfg.dbPostgresUrl,\n schema: cfg.dbPostgresSchema,\n })\n if (cfg.migration) {\n await migrationDb.migrateToOrThrow(cfg.migration)\n } else {\n await migrationDb.migrateToLatestOrThrow()\n }\n await migrationDb.close()\n\n // api server\n const server = bsky.BskyAppView.create({\n config,\n signingKey: serviceKeypair,\n })\n\n const sub = new bsky.RepoSubscription({\n service: cfg.repoProvider,\n db,\n idResolver: dataplane.idResolver,\n })\n\n await server.start()\n\n sub.start()\n\n return new TestBsky(url, port, db, server, dataplane, bsync, sub, serverDid)\n }\n\n get ctx(): bsky.AppContext {\n return this.server.ctx\n }\n\n getAgent(): AtpAgent {\n const agent = new AtpAgent({ service: this.url })\n agent.configureLabelers([EXAMPLE_LABELER])\n return agent\n }\n\n getClient(): Client {\n const client = new Client({ service: this.url })\n client.setLabelers([EXAMPLE_LABELER])\n return client\n }\n\n adminAuth(): string {\n const [password] = this.ctx.cfg.adminPasswords\n return (\n 'Basic ' +\n ui8.toString(ui8.fromString(`admin:${password}`, 'utf8'), 'base64pad')\n )\n }\n\n adminAuthHeaders() {\n return {\n authorization: this.adminAuth(),\n }\n }\n\n async close() {\n await this.server.destroy()\n await this.bsync.destroy()\n await this.dataplane.destroy()\n await this.sub.destroy()\n await this.db.close()\n }\n}\n"]}
1
+ {"version":3,"file":"bsky.js","sourceRoot":"","sources":["../src/bsky.ts"],"names":[],"mappings":"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","sourcesContent":["import { Client as PlcClient } from '@did-plc/lib'\nimport getPort from 'get-port'\nimport * as ui8 from 'uint8arrays'\nimport { AtpAgent } from '@atproto/api'\nimport * as bsky from '@atproto/bsky'\nimport { Secp256k1Keypair } from '@atproto/crypto'\nimport { Client } from '@atproto/lex'\nimport { ADMIN_PASSWORD, EXAMPLE_LABELER } from './const.js'\nimport { BskyConfig } from './types.js'\nexport * from '@atproto/bsky'\n\nexport class TestBsky {\n constructor(\n public url: string,\n public port: number,\n public db: bsky.Database,\n public server: bsky.BskyAppView,\n public dataplane: bsky.DataPlaneServer,\n public bsync: bsky.MockBsync,\n public sub: bsky.RepoSubscription,\n public serverDid: string,\n ) {}\n\n static async create(cfg: BskyConfig): Promise<TestBsky> {\n const serviceKeypair = cfg.privateKey\n ? await Secp256k1Keypair.import(cfg.privateKey)\n : await Secp256k1Keypair.create()\n const plcClient = new PlcClient(cfg.plcUrl)\n\n const port = cfg.port || (await getPort())\n const url = `http://localhost:${port}`\n const serverDid = await plcClient.createDid({\n signingKey: serviceKeypair.did(),\n rotationKeys: [serviceKeypair.did()],\n handle: 'bsky.test',\n pds: `http://localhost:${port}`,\n signer: serviceKeypair,\n })\n\n const endpoint = `http://localhost:${port}`\n\n await plcClient.updateData(serverDid, serviceKeypair, (x) => {\n x.services['bsky_notif'] = {\n type: 'BskyNotificationService',\n endpoint,\n }\n x.services['bsky_appview'] = {\n type: 'BskyAppView',\n endpoint,\n }\n return x\n })\n\n // shared across server, ingester, and indexer in order to share pool, avoid too many pg connections.\n const db = new bsky.Database({\n url: cfg.dbPostgresUrl,\n schema: cfg.dbPostgresSchema,\n poolSize: 10,\n })\n\n const dataplanePort = await getPort()\n const dataplane = await bsky.DataPlaneServer.create(\n db,\n dataplanePort,\n cfg.plcUrl,\n )\n\n const bsyncPort = await getPort()\n const bsync = await bsky.MockBsync.create(db, bsyncPort)\n\n const config = new bsky.ServerConfig({\n version: 'unknown',\n port,\n didPlcUrl: cfg.plcUrl,\n publicUrl: 'https://bsky.public.url',\n serverDid,\n alternateAudienceDids: [],\n dataplaneUrls: [`http://localhost:${dataplanePort}`],\n dataplaneHttpVersion: '1.1',\n bsyncUrl: `http://localhost:${bsyncPort}`,\n bsyncHttpVersion: '1.1',\n modServiceDid: cfg.modServiceDid ?? 'did:example:invalidMod',\n labelsFromIssuerDids: [EXAMPLE_LABELER],\n bigThreadUris: new Set(),\n maxThreadParents: cfg.maxThreadParents ?? 50,\n disableSsrfProtection: true,\n searchTagsHide: new Set(),\n threadTagsBumpDown: new Set(),\n threadTagsHide: new Set(),\n visibilityTagHide: '',\n visibilityTagRankPrefix: '',\n debugFieldAllowedDids: new Set(),\n draftsLimit: 500,\n ...cfg,\n adminPasswords: [ADMIN_PASSWORD],\n etcdHosts: [],\n })\n\n // Separate migration db in case migration changes some connection state that we need in the tests, e.g. \"alter database ... set ...\"\n const migrationDb = new bsky.Database({\n url: cfg.dbPostgresUrl,\n schema: cfg.dbPostgresSchema,\n })\n if (cfg.migration) {\n await migrationDb.migrateToOrThrow(cfg.migration)\n } else {\n await migrationDb.migrateToLatestOrThrow()\n }\n await migrationDb.close()\n\n // api server\n const server = bsky.BskyAppView.create({\n config,\n signingKey: serviceKeypair,\n })\n\n const sub = new bsky.RepoSubscription({\n service: cfg.repoProvider,\n db,\n idResolver: dataplane.idResolver,\n })\n\n await server.start()\n\n sub.start()\n\n return new TestBsky(url, port, db, server, dataplane, bsync, sub, serverDid)\n }\n\n get ctx(): bsky.AppContext {\n return this.server.ctx\n }\n\n getAgent(): AtpAgent {\n const agent = new AtpAgent({ service: this.url })\n agent.configureLabelers([EXAMPLE_LABELER])\n return agent\n }\n\n getClient(): Client {\n const client = new Client({ service: this.url })\n client.setLabelers([EXAMPLE_LABELER])\n return client\n }\n\n adminAuth(): string {\n const [password] = this.ctx.cfg.adminPasswords\n return (\n 'Basic ' +\n ui8.toString(ui8.fromString(`admin:${password}`, 'utf8'), 'base64pad')\n )\n }\n\n adminAuthHeaders() {\n return {\n authorization: this.adminAuth(),\n }\n }\n\n async close() {\n await this.server.destroy()\n await this.bsync.destroy()\n await this.dataplane.destroy()\n await this.sub.destroy()\n await this.db.close()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bsync.d.ts","sourceRoot":"","sources":["../src/bsync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,qBAAa,SAAS;IAEX,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,KAAK,CAAC,YAAY;gBAF3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,YAAY;WAGvB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAiBzD,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAE1B;IAEK,KAAK;CAGZ"}
1
+ {"version":3,"file":"bsync.d.ts","sourceRoot":"","sources":["../src/bsync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,qBAAa,SAAS;IAEX,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,KAAK,CAAC,YAAY;IAHpC,YACS,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,YAAY,EAChC;IAEJ,OAAa,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAexD;IAED,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAE1B;IAEK,KAAK,kBAEV;CACF"}
package/dist/bsync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bsync.js","sourceRoot":"","sources":["../src/bsync.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAGvC,MAAM,OAAO,SAAS;IACpB,YACS,GAAW,EACX,IAAY,EACZ,OAA2B;QAF3B,QAAG,GAAH,GAAG,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAoB;IACjC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAgB;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAA;QAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5B,IAAI;YACJ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC;YACnC,GAAG,GAAG;SACP,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAA;QAC7C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QAErB,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC;CACF","sourcesContent":["import getPort from 'get-port'\nimport * as bsync from '@atproto/bsync'\nimport { BsyncConfig } from './types.js'\n\nexport class TestBsync {\n constructor(\n public url: string,\n public port: number,\n public service: bsync.BsyncService,\n ) {}\n\n static async create(cfg: BsyncConfig): Promise<TestBsync> {\n const port = cfg.port || (await getPort())\n const url = `http://localhost:${port}`\n\n const config = bsync.envToCfg({\n port,\n apiKeys: cfg.apiKeys ?? ['api-key'],\n ...cfg,\n })\n\n const service = await bsync.BsyncService.create(config)\n await service.ctx.db.migrateToLatestOrThrow()\n await service.start()\n\n return new TestBsync(url, port, service)\n }\n\n get ctx(): bsync.AppContext {\n return this.service.ctx\n }\n\n async close() {\n await this.service.destroy()\n }\n}\n"]}
1
+ {"version":3,"file":"bsync.js","sourceRoot":"","sources":["../src/bsync.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAGvC,MAAM,OAAO,SAAS;IACpB,YACS,GAAW,EACX,IAAY,EACZ,OAA2B;mBAF3B,GAAG;oBACH,IAAI;uBACJ,OAAO;IACb,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAgB;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAA;QAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5B,IAAI;YACJ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC;YACnC,GAAG,GAAG;SACP,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAA;QAC7C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QAErB,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC;CACF","sourcesContent":["import getPort from 'get-port'\nimport * as bsync from '@atproto/bsync'\nimport { BsyncConfig } from './types.js'\n\nexport class TestBsync {\n constructor(\n public url: string,\n public port: number,\n public service: bsync.BsyncService,\n ) {}\n\n static async create(cfg: BsyncConfig): Promise<TestBsync> {\n const port = cfg.port || (await getPort())\n const url = `http://localhost:${port}`\n\n const config = bsync.envToCfg({\n port,\n apiKeys: cfg.apiKeys ?? ['api-key'],\n ...cfg,\n })\n\n const service = await bsync.BsyncService.create(config)\n await service.ctx.db.migrateToLatestOrThrow()\n await service.start()\n\n return new TestBsync(url, port, service)\n }\n\n get ctx(): bsync.AppContext {\n return this.service.ctx\n }\n\n async close() {\n await this.service.destroy()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"feed-gen.d.ts","sourceRoot":"","sources":["../src/feed-gen.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAI5B,OAAO,EAAE,eAAe,EAAO,MAAM,cAAc,CAAA;AAInD,qBAAa,WAAW;IAIb,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,GAAG,EAAE,MAAM;IALpB,SAAS,UAAQ;gBAGR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,GAAG,EAAE,MAAM;WAGP,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC;IA8BvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAUvB"}
1
+ {"version":3,"file":"feed-gen.d.ts","sourceRoot":"","sources":["../src/feed-gen.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAI5B,OAAO,EAAE,eAAe,EAAO,MAAM,cAAc,CAAA;AAInD,qBAAa,WAAW;IAIb,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,GAAG,EAAE,MAAM;IALpB,SAAS,UAAQ;IAEjB,YACS,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,GAAG,EAAE,MAAM,EAChB;IAEJ,OAAa,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC,CA4BtB;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CASrB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,qBAAa,gBAAgB;IAElB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM;gBADnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,MAAM;WAGf,KAAK,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS;IA8BZ,KAAK;CAIZ"}
1
+ {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,qBAAa,gBAAgB;IAElB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM;IAF5B,YACS,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,MAAM,EACxB;IAEJ,OAAa,KAAK,CAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,6BA4BjB;IAEK,KAAK,kBAGV;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"introspect.js","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,OAAO,MAAM,SAAS,CAAA;AAM7B,MAAM,OAAO,gBAAgB;IAC3B,YACS,IAAY,EACZ,MAAmB;QADnB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAa;IACzB,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,IAAY,EACZ,GAAY,EACZ,GAAY,EACZ,IAAc,EACd,KAAgB;QAEhB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;QACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,GAAG,EAAE;oBACH,GAAG,EAAE,GAAG,CAAC,GAAG;iBACb;gBACD,GAAG,EAAE;oBACH,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;iBAC7B;gBACD,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;iBAC5B;gBACD,KAAK,EAAE;oBACL,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;iBAC/B;gBACD,EAAE,EAAE;oBACF,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW;iBAClC;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;CACF","sourcesContent":["import events from 'node:events'\nimport http from 'node:http'\nimport express from 'express'\nimport { TestBsky } from './bsky.js'\nimport { TestOzone } from './ozone.js'\nimport { TestPds } from './pds.js'\nimport { TestPlc } from './plc.js'\n\nexport class IntrospectServer {\n constructor(\n public port: number,\n public server: http.Server,\n ) {}\n\n static async start(\n port: number,\n plc: TestPlc,\n pds: TestPds,\n bsky: TestBsky,\n ozone: TestOzone,\n ) {\n const app = express()\n app.get('/', (_req, res) => {\n res.status(200).send({\n plc: {\n url: plc.url,\n },\n pds: {\n url: pds.url,\n did: pds.ctx.cfg.service.did,\n },\n bsky: {\n url: bsky.url,\n did: bsky.ctx.cfg.serverDid,\n },\n ozone: {\n url: ozone.url,\n did: ozone.ctx.cfg.service.did,\n },\n db: {\n url: ozone.ctx.cfg.db.postgresUrl,\n },\n })\n })\n const server = app.listen(port)\n await events.once(server, 'listening')\n return new IntrospectServer(port, server)\n }\n\n async close() {\n this.server.close()\n await events.once(this.server, 'close')\n }\n}\n"]}
1
+ {"version":3,"file":"introspect.js","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,OAAO,OAAO,MAAM,SAAS,CAAA;AAM7B,MAAM,OAAO,gBAAgB;IAC3B,YACS,IAAY,EACZ,MAAmB;oBADnB,IAAI;sBACJ,MAAM;IACZ,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,IAAY,EACZ,GAAY,EACZ,GAAY,EACZ,IAAc,EACd,KAAgB;QAEhB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;QACrB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,GAAG,EAAE;oBACH,GAAG,EAAE,GAAG,CAAC,GAAG;iBACb;gBACD,GAAG,EAAE;oBACH,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;iBAC7B;gBACD,IAAI,EAAE;oBACJ,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;iBAC5B;gBACD,KAAK,EAAE;oBACL,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;iBAC/B;gBACD,EAAE,EAAE;oBACF,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW;iBAClC;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACtC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;CACF","sourcesContent":["import events from 'node:events'\nimport http from 'node:http'\nimport express from 'express'\nimport { TestBsky } from './bsky.js'\nimport { TestOzone } from './ozone.js'\nimport { TestPds } from './pds.js'\nimport { TestPlc } from './plc.js'\n\nexport class IntrospectServer {\n constructor(\n public port: number,\n public server: http.Server,\n ) {}\n\n static async start(\n port: number,\n plc: TestPlc,\n pds: TestPds,\n bsky: TestBsky,\n ozone: TestOzone,\n ) {\n const app = express()\n app.get('/', (_req, res) => {\n res.status(200).send({\n plc: {\n url: plc.url,\n },\n pds: {\n url: pds.url,\n did: pds.ctx.cfg.service.did,\n },\n bsky: {\n url: bsky.url,\n did: bsky.ctx.cfg.serverDid,\n },\n ozone: {\n url: ozone.url,\n did: ozone.ctx.cfg.service.did,\n },\n db: {\n url: ozone.ctx.cfg.db.postgresUrl,\n },\n })\n })\n const server = app.listen(port)\n await events.once(server, 'listening')\n return new IntrospectServer(port, server)\n }\n\n async close() {\n this.server.close()\n await events.once(this.server, 'close')\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
- declare const _default: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAADMElEQVR4nOzVwQnAIBQFQYXff81RUkQCOyDj1YOPnbXWPmeTRef+/3O/OyBjzh3CD95BfqICMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMO0TAAD//2Anhf4QtqobAAAAAElFTkSuQmCC";
1
+ declare const _default = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAADMElEQVR4nOzVwQnAIBQFQYXff81RUkQCOyDj1YOPnbXWPmeTRef+/3O/OyBjzh3CD95BfqICMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMK0CMO0TAAD//2Anhf4QtqobAAAAAElFTkSuQmCC";
2
2
  export default _default;
3
3
  //# sourceMappingURL=blur-hash-avatar-b64.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blur-hash-avatar-b64.d.ts","sourceRoot":"","sources":["../../../src/mock/img/blur-hash-avatar-b64.ts"],"names":[],"mappings":"wBAAe,8oCAA8oC;AAA7pC,wBAA6pC"}
1
+ {"version":3,"file":"blur-hash-avatar-b64.d.ts","sourceRoot":"","sources":["../../../src/mock/img/blur-hash-avatar-b64.ts"],"names":[],"mappings":""}
@@ -1,3 +1,3 @@
1
- declare const _default: "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AQSsAEHGSlAjgAACCCCAgDoBgoy6LqPBCCCAAAIIIGAFCDJWghoBBBBAAAEE1AkQZNR1GQ1GAAEEEEAAAStAkLES1AgggAACCCCgToAgo67LaDACOgW23HJLs+uuu5pddtkl+G+HHXYIdmTlypVG/vvll1/MokWLzK+//qpzB2k1AgiURIAgUxJ2v41uvfXWpm7dun4z/2+uP/74w6xatcp7/nxnlD9E2267behiGzZsMKtXrw6dJ6mJnTt3NltttZXX6qZPn27WrVvnNW+cmdq2bWsaN24cuoovvvjCfP7556HzRJnYvn17Y8NBruXnzJljli5dmmtyop/vtttupkePHqZdu3amXr16ZrPNNvNav3wfL1u2zMyfP9+88MILZsWKFV7LuWZq3bq12XPPPUNnW7JkiZk7d27oPFEnduzYMXAIW/6jjz4K9j3bPG3atDHNmjXLNknFZ/LzJz+HUho2bGgOO+wwZ7vl50R+XopdjjjiCLPddtuFbnbx4sXB92joTEwsigBBpijM0TZyww03mP3339974f/++8/06dPHrFmzxnuZfGY8//zzTdeuXZ2LDB482CxcuNA5X5wZGjVqZCZNmuS9ismTJxv5r9DlgQceMPIHPKx8/PHHZsSIEWGzRJr25JNPmvr164cuO2XKFDNx4sTQeeJMlCA1cOBAc8ABB+QVwsO2+f3335vnnnvOzJgxI2w257TbbrvNtGjRInQ++aN56aWXhs4TdaKEsjp16oQu/vjjj5unnnoq6zx33HGH2XvvvbNO0/DhX3/9Zbp37x40VfZD9sdV5MDopJNOMvK7rVilZcuWZvTo0c7NSeA+8cQTnfMxQ+EFCDKFN468hXyDjGzo7bff9vohjNIo3yAzZswYM3PmzCib8F7mjDPOCH7B+S7w3XffmUGDBvnOHnm+TTnISJ/IGRjfMy/5Iv/+++/m/vvvjxxoCDL5iic7f+UgI2seO3asad68uXMjU6dONRMmTHDOl9QMjzzyiNlxxx2dq3viiSeMHDxQSi9AkCl9H+RsQZQg888//5iePXsGl5lyrjjihDQFGTmrsNNOO3nviRzRydHg33//7b1MlBk3xSAjR7DDhg1zXnaM4pltmR9++MHccsst5uuvv842OednBJmcNEWZUDXINGjQwDz22GPO4Cu/00455ZSiXBqWy3+XX36500Mu4Z96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FZ/5PglVsUCVf5RLkJFxNeQ1BWEl7j0yBJnqupyRqW7i+kS+T2Vk7rDfbXYdvkM22PmpdQgQZFLcT0kGGdlNCQgSFMKK3CMi94pkK8UIMkOHDjXt27fPtvmKzz744ANz4403Vnzt+49OnTo5X3C4atWq4F0tvuusOl+5BBm5Z0rG6wgrcZ9aIshU1yXIVDfx+WTIkCHmyCOPdM4q8y1YsMA5HzPoEiDIpLi/kg4yPu8uWrZsWXA3fzaWYgQZn3sz5DLZ7NmzszUx9LPatWsHp5RdR27y0jkJNFFKuQSZMWPGmH322SeUIO4j6wSZ6rwEmeomPp906NAh9J1rso587qfy2SbzpEfg/wAAAP//mlRinwAAF9lJREFU7d0HjDVl1QfwBxsIKgpSgoABUUJAjYqKITZiQUVADCoajEGxICUWFGIUsVDEAhYUpNpQsEQsVDFRE0CCJiAaVEjEBhpFQSFWvu/c79t1d9+9M3Puu3f3LP4mMbv3zrkz5/6elft/5848s87WW299V7OUFHj3u9/dHve4x/X2dthhh7Wf/exnvXVR8OEPf7htt912nbVveMMb2vXXX79Gzetf//r2vOc9b43nFz7x/ve/v1122WULn+59vPnmm7czzjijs+6uu+5qe+yxR4ufkyxnn31222STTTpfes4557RPf/rTnTXjVp5yyiltq622Grd69PxVV13VjjrqqM6aSVZ+7nOfaw984AM7X/rFL36x1zg2cPTRR7fHP/7xnduKMRjy9zBuI9/4xjfaOuusM271oOczPZxwwgltxx137Nxu/N3H3/80li9/+cttvfXW69x0/N3F399yLF/72tfaPe95z85dfehDH2qXXHJJZ02FlU95ylPaEUcc0dlK5m+lc0NWlhNYR5ApNyazDU0jyGy//fYt/uPUtdx4443t4IMPXqNk2kHmNa95Tdtrr73W2O/cJ371q1+1V7/61XOfSv1+yCGHtOc85zmdr/n1r3/dDjzwwM6acSvvLkHm8MMPb09/+tPHvc3Z5yNU/vvf/559nPklglffB3vf+syHkyAzf3QEmfkeHq1eAUGm8NhNI8jE2z311FPblltu2fnOX/va17abbrppXs20g8xZZ53VNt1003n7XPjgvPPOa2eeeebCpwc/HhLk4sNx7733bv/4xz8Gb3em8O4SZGL899xzz5m3NfZn5mjg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+amdLkHxkKu14oN03333bXfcccdEe3zxi188OlE2zp9Z6uXWW28dfcBfffXVS73pQduLO6PH14FdNx8dtKFFisI9TvyOu2xnjsLM3ZQgM1ejje4z1ndLEne/nm/mUU0BQabmuIy6ijk44g7Nfcv+++8/usqlr26S9bvuumuLGWEzS1eQGXLZdcw+m91npr9xtbvvvns79NBDx62efT5zGfbsixb8EvePilATk+et7RLnE5166qltpQLM3P4joMVkh3GZdnwtubZfOUWo/cEPfjCaa+fPf/7z3F2lfx/yD4Mrr7xydHQpvfEBLxgS4pdqtucB7Yxubho3Oe1aYtbouJ1G9WXIzNMRhiNsW+5+AoLM3W9MvaNVJBDn5jztaU9rO++88+iDv+9ITfzHOO5iHXOzxBGKb3/72xMfoZg2U8x5ExP2PetZz2pxeXV8aMbRmnHhJt5b3CT05ptvbldccUW78MILUydWT/v92D4BAjUFBJma46Kr/2KB9ddffzRvzCabbNI22GCDUVCJc3Nibpn4oF/tS7ynmA8nwk18RRfBJU7ejauQLAQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgK/A951lPeQIDuUAAAAABJRU5ErkJggg==";
1
+ declare const _default = "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AQSsAEHGSlAjgAACCCCAgDoBgoy6LqPBCCCAAAIIIGAFCDJWghoBBBBAAAEE1AkQZNR1GQ1GAAEEEEAAAStAkLES1AgggAACCCCgToAgo67LaDACOgW23HJLs+uuu5pddtkl+G+HHXYIdmTlypVG/vvll1/MokWLzK+//qpzB2k1AgiURIAgUxJ2v41uvfXWpm7dun4z/2+uP/74w6xatcp7/nxnlD9E2267behiGzZsMKtXrw6dJ6mJnTt3NltttZXX6qZPn27WrVvnNW+cmdq2bWsaN24cuoovvvjCfP7556HzRJnYvn17Y8NBruXnzJljli5dmmtyop/vtttupkePHqZdu3amXr16ZrPNNvNav3wfL1u2zMyfP9+88MILZsWKFV7LuWZq3bq12XPPPUNnW7JkiZk7d27oPFEnduzYMXAIW/6jjz4K9j3bPG3atDHNmjXLNknFZ/LzJz+HUho2bGgOO+wwZ7vl50R+XopdjjjiCLPddtuFbnbx4sXB92joTEwsigBBpijM0TZyww03mP3339974f/++8/06dPHrFmzxnuZfGY8//zzTdeuXZ2LDB482CxcuNA5X5wZGjVqZCZNmuS9ismTJxv5r9DlgQceMPIHPKx8/PHHZsSIEWGzRJr25JNPmvr164cuO2XKFDNx4sTQeeJMlCA1cOBAc8ABB+QVwsO2+f3335vnnnvOzJgxI2w257TbbrvNtGjRInQ++aN56aWXhs4TdaKEsjp16oQu/vjjj5unnnoq6zx33HGH2XvvvbNO0/DhX3/9Zbp37x40VfZD9sdV5MDopJNOMvK7rVilZcuWZvTo0c7NSeA+8cQTnfMxQ+EFCDKFN468hXyDjGzo7bff9vohjNIo3yAzZswYM3PmzCib8F7mjDPOCH7B+S7w3XffmUGDBvnOHnm+TTnISJ/IGRjfMy/5Iv/+++/m/vvvjxxoCDL5iic7f+UgI2seO3asad68uXMjU6dONRMmTHDOl9QMjzzyiNlxxx2dq3viiSeMHDxQSi9AkCl9H+RsQZQg888//5iePXsGl5lyrjjihDQFGTmrsNNOO3nviRzRydHg33//7b1MlBk3xSAjR7DDhg1zXnaM4pltmR9++MHccsst5uuvv842OednBJmcNEWZUDXINGjQwDz22GPO4Cu/00455ZSiXBqWy3+XX36500Mu4Z96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FZ/5PglVsUCVf5RLkJFxNeQ1BWEl7j0yBJnqupyRqW7i+kS+T2Vk7rDfbXYdvkM22PmpdQgQZFLcT0kGGdlNCQgSFMKK3CMi94pkK8UIMkOHDjXt27fPtvmKzz744ANz4403Vnzt+49OnTo5X3C4atWq4F0tvuusOl+5BBm5Z0rG6wgrcZ9aIshU1yXIVDfx+WTIkCHmyCOPdM4q8y1YsMA5HzPoEiDIpLi/kg4yPu8uWrZsWXA3fzaWYgQZn3sz5DLZ7NmzszUx9LPatWsHp5RdR27y0jkJNFFKuQSZMWPGmH322SeUIO4j6wSZ6rwEmeomPp906NAh9J1rso587qfy2SbzpEfg/wAAAP//mlRinwAAF9lJREFU7d0HjDVl1QfwBxsIKgpSgoABUUJAjYqKITZiQUVADCoajEGxICUWFGIUsVDEAhYUpNpQsEQsVDFRE0CCJiAaVEjEBhpFQSFWvu/c79t1d9+9M3Puu3f3LP4mMbv3zrkz5/6elft/5848s87WW299V7OUFHj3u9/dHve4x/X2dthhh7Wf/exnvXVR8OEPf7htt912nbVveMMb2vXXX79Gzetf//r2vOc9b43nFz7x/ve/v1122WULn+59vPnmm7czzjijs+6uu+5qe+yxR4ufkyxnn31222STTTpfes4557RPf/rTnTXjVp5yyiltq622Grd69PxVV13VjjrqqM6aSVZ+7nOfaw984AM7X/rFL36x1zg2cPTRR7fHP/7xnduKMRjy9zBuI9/4xjfaOuusM271oOczPZxwwgltxx137Nxu/N3H3/80li9/+cttvfXW69x0/N3F399yLF/72tfaPe95z85dfehDH2qXXHJJZ02FlU95ylPaEUcc0dlK5m+lc0NWlhNYR5ApNyazDU0jyGy//fYt/uPUtdx4443t4IMPXqNk2kHmNa95Tdtrr73W2O/cJ371q1+1V7/61XOfSv1+yCGHtOc85zmdr/n1r3/dDjzwwM6acSvvLkHm8MMPb09/+tPHvc3Z5yNU/vvf/559nPklglffB3vf+syHkyAzf3QEmfkeHq1eAUGm8NhNI8jE2z311FPblltu2fnOX/va17abbrppXs20g8xZZ53VNt1003n7XPjgvPPOa2eeeebCpwc/HhLk4sNx7733bv/4xz8Gb3em8O4SZGL899xzz5m3NfZn5mjg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+amdLkHxkKu14oN03333bXfcccdEe3zxi188OlE2zp9Z6uXWW28dfcBfffXVS73pQduLO6PH14FdNx8dtKFFisI9TvyOu2xnjsLM3ZQgM1ejje4z1ndLEne/nm/mUU0BQabmuIy6ijk44g7Nfcv+++8/usqlr26S9bvuumuLGWEzS1eQGXLZdcw+m91npr9xtbvvvns79NBDx62efT5zGfbsixb8EvePilATk+et7RLnE5166qltpQLM3P4joMVkh3GZdnwtubZfOUWo/cEPfjCaa+fPf/7z3F2lfx/yD4Mrr7xydHQpvfEBLxgS4pdqtucB7Yxubho3Oe1aYtbouJ1G9WXIzNMRhiNsW+5+AoLM3W9MvaNVJBDn5jztaU9rO++88+iDv+9ITfzHOO5iHXOzxBGKb3/72xMfoZg2U8x5ExP2PetZz2pxeXV8aMbRmnHhJt5b3CT05ptvbldccUW78MILUydWT/v92D4BAjUFBJma46Kr/2KB9ddffzRvzCabbNI22GCDUVCJc3Nibpn4oF/tS7ynmA8nwk18RRfBJU7ejauQLAQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgKCDJZMfUECBAgQIBAGQFBpsxQaIQAAQIECBDICggyWTH1BAgQIECAQBkBQabMUGiEAAECBAgQyAoIMlkx9QQIECBAgEAZAUGmzFBohAABAgQIEMgK/A951lPeQIDuUAAAAABJRU5ErkJggg==";
2
2
  export default _default;
3
3
  //# sourceMappingURL=labeled-img-b64.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"labeled-img-b64.d.ts","sourceRoot":"","sources":["../../../src/mock/img/labeled-img-b64.ts"],"names":[],"mappings":"wBAAe,85sBAA85sB;AAA76sB,wBAA66sB"}
1
+ {"version":3,"file":"labeled-img-b64.d.ts","sourceRoot":"","sources":["../../../src/mock/img/labeled-img-b64.ts"],"names":[],"mappings":""}
@@ -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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"moderator-client.d.ts","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"moderator-client.d.ts","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"moderator-client.js","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n $Typed,\n AtpAgent,\n ChatBskyConvoDefs,\n ComAtprotoAdminDefs,\n ComAtprotoRepoStrongRef,\n ToolsOzoneModerationDefs,\n ToolsOzoneModerationEmitEvent as EmitModerationEvent,\n ToolsOzoneModerationGetReporterStats as _GetReporterStats, // includes types for getReporterStats()\n ToolsOzoneModerationQueryEvents as QueryModerationEvents,\n ToolsOzoneModerationQueryStatuses as QueryModerationStatuses,\n ToolsOzoneReportQueryReports as QueryModerationReports,\n ToolsOzoneSettingRemoveOptions,\n ToolsOzoneSettingUpsertOption,\n} from '@atproto/api'\nimport { TestOzone } from './ozone.js'\n\ntype TakeActionInput = EmitModerationEvent.InputSchema\ntype QueryStatusesParams = QueryModerationStatuses.QueryParams\ntype QueryEventsParams = QueryModerationEvents.QueryParams\ntype QueryReportsParams = QueryModerationReports.QueryParams\ntype ModLevel = 'admin' | 'moderator' | 'triage'\n\nexport class ModeratorClient {\n agent: AtpAgent\n constructor(public ozone: TestOzone) {\n this.agent = ozone.getAgent()\n }\n\n async getEvent(id: number, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.getEvent(\n { id },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async queryStatuses(input: QueryStatusesParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryStatuses(\n input,\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryStatuses',\n role,\n ),\n },\n )\n return result.data\n }\n\n async getReporterStats(dids: string[]) {\n const result = await this.agent.tools.ozone.moderation.getReporterStats(\n { dids },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getReporterStats',\n 'admin',\n ),\n },\n )\n return result.data\n }\n\n async queryEvents(input: QueryEventsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryEvents(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryEvents',\n role,\n ),\n })\n return result.data\n }\n\n async queryReports(input: QueryReportsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.report.queryReports(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.report.queryReports',\n role,\n ),\n })\n return result.data\n }\n\n async emitEvent(\n opts: {\n event: TakeActionInput['event']\n subject:\n | $Typed<ComAtprotoAdminDefs.RepoRef>\n | $Typed<ComAtprotoRepoStrongRef.Main>\n | $Typed<ChatBskyConvoDefs.MessageRef>\n | $Typed<ChatBskyConvoDefs.ConvoRef>\n | { $type: string }\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n createdBy?: string\n meta?: unknown\n modTool?: ToolsOzoneModerationDefs.ModTool\n externalId?: string\n reportAction?: TakeActionInput['reportAction']\n },\n role?: ModLevel,\n ) {\n const {\n event,\n subject,\n subjectBlobCids,\n createdBy = 'did:example:admin',\n modTool,\n externalId,\n reportAction,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n event,\n subject,\n subjectBlobCids,\n createdBy,\n modTool,\n externalId,\n reportAction,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async reverseAction(\n opts: {\n id: number\n subject: TakeActionInput['subject']\n reason?: string\n createdBy?: string\n modTool?: ToolsOzoneModerationDefs.ModTool\n },\n role?: ModLevel,\n ) {\n const {\n subject,\n reason = 'X',\n createdBy = 'did:example:admin',\n modTool,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n subject,\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n comment: reason,\n },\n createdBy,\n modTool,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async performTakedown(\n opts: {\n subject:\n | $Typed<ComAtprotoAdminDefs.RepoRef>\n | $Typed<ComAtprotoRepoStrongRef.Main>\n | $Typed<ChatBskyConvoDefs.MessageRef>\n | $Typed<ChatBskyConvoDefs.ConvoRef>\n | { $type: string }\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n durationInHours?: number\n acknowledgeAccountSubjects?: boolean\n reason?: string\n policies?: string[]\n },\n role?: ModLevel,\n ) {\n const { durationInHours, acknowledgeAccountSubjects, policies, ...rest } =\n opts\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventTakedown',\n acknowledgeAccountSubjects,\n durationInHours,\n policies,\n },\n ...rest,\n },\n role,\n )\n }\n\n async performReverseTakedown(\n opts: {\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n },\n role?: ModLevel,\n ) {\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n },\n ...opts,\n },\n role,\n )\n }\n\n async upsertSettingOption(\n setting: ToolsOzoneSettingUpsertOption.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.upsertOption(\n setting,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.upsertOption',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async removeSettingOptions(\n params: ToolsOzoneSettingRemoveOptions.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.removeOptions(\n params,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.removeOptions',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async computeStats() {\n const db = this.ozone.ctx.db\n const statsService = this.ozone.ctx.reportStatsService(db)\n await statsService.materializeAll({ force: true })\n }\n}\n"]}
1
+ {"version":3,"file":"moderator-client.js","sourceRoot":"","sources":["../src/moderator-client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n $Typed,\n AtpAgent,\n ChatBskyConvoDefs,\n ComAtprotoAdminDefs,\n ComAtprotoRepoStrongRef,\n ToolsOzoneModerationDefs,\n ToolsOzoneModerationEmitEvent as EmitModerationEvent,\n ToolsOzoneModerationGetReporterStats as _GetReporterStats, // includes types for getReporterStats()\n ToolsOzoneModerationQueryEvents as QueryModerationEvents,\n ToolsOzoneModerationQueryStatuses as QueryModerationStatuses,\n ToolsOzoneReportQueryReports as QueryModerationReports,\n ToolsOzoneSettingRemoveOptions,\n ToolsOzoneSettingUpsertOption,\n} from '@atproto/api'\nimport { TestOzone } from './ozone.js'\n\ntype TakeActionInput = EmitModerationEvent.InputSchema\ntype QueryStatusesParams = QueryModerationStatuses.QueryParams\ntype QueryEventsParams = QueryModerationEvents.QueryParams\ntype QueryReportsParams = QueryModerationReports.QueryParams\ntype ModLevel = 'admin' | 'moderator' | 'triage'\n\nexport class ModeratorClient {\n agent: AtpAgent\n constructor(public ozone: TestOzone) {\n this.agent = ozone.getAgent()\n }\n\n async getEvent(id: number, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.getEvent(\n { id },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async queryStatuses(input: QueryStatusesParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryStatuses(\n input,\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryStatuses',\n role,\n ),\n },\n )\n return result.data\n }\n\n async getReporterStats(dids: string[]) {\n const result = await this.agent.tools.ozone.moderation.getReporterStats(\n { dids },\n {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.getReporterStats',\n 'admin',\n ),\n },\n )\n return result.data\n }\n\n async queryEvents(input: QueryEventsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.moderation.queryEvents(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.queryEvents',\n role,\n ),\n })\n return result.data\n }\n\n async queryReports(input: QueryReportsParams, role?: ModLevel) {\n const result = await this.agent.tools.ozone.report.queryReports(input, {\n headers: await this.ozone.modHeaders(\n 'tools.ozone.report.queryReports',\n role,\n ),\n })\n return result.data\n }\n\n async emitEvent(\n opts: {\n event: TakeActionInput['event']\n subject:\n | $Typed<ComAtprotoAdminDefs.RepoRef>\n | $Typed<ComAtprotoRepoStrongRef.Main>\n | $Typed<ChatBskyConvoDefs.MessageRef>\n | $Typed<ChatBskyConvoDefs.ConvoRef>\n | { $type: string }\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n createdBy?: string\n meta?: unknown\n modTool?: ToolsOzoneModerationDefs.ModTool\n externalId?: string\n reportAction?: TakeActionInput['reportAction']\n },\n role?: ModLevel,\n ) {\n const {\n event,\n subject,\n subjectBlobCids,\n createdBy = 'did:example:admin',\n modTool,\n externalId,\n reportAction,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n event,\n subject,\n subjectBlobCids,\n createdBy,\n modTool,\n externalId,\n reportAction,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async reverseAction(\n opts: {\n id: number\n subject: TakeActionInput['subject']\n reason?: string\n createdBy?: string\n modTool?: ToolsOzoneModerationDefs.ModTool\n },\n role?: ModLevel,\n ) {\n const {\n subject,\n reason = 'X',\n createdBy = 'did:example:admin',\n modTool,\n } = opts\n const result = await this.agent.tools.ozone.moderation.emitEvent(\n {\n subject,\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n comment: reason,\n },\n createdBy,\n modTool,\n },\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.moderation.emitEvent',\n role,\n ),\n },\n )\n return result.data\n }\n\n async performTakedown(\n opts: {\n subject:\n | $Typed<ComAtprotoAdminDefs.RepoRef>\n | $Typed<ComAtprotoRepoStrongRef.Main>\n | $Typed<ChatBskyConvoDefs.MessageRef>\n | $Typed<ChatBskyConvoDefs.ConvoRef>\n | { $type: string }\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n durationInHours?: number\n acknowledgeAccountSubjects?: boolean\n reason?: string\n policies?: string[]\n },\n role?: ModLevel,\n ) {\n const { durationInHours, acknowledgeAccountSubjects, policies, ...rest } =\n opts\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventTakedown',\n acknowledgeAccountSubjects,\n durationInHours,\n policies,\n },\n ...rest,\n },\n role,\n )\n }\n\n async performReverseTakedown(\n opts: {\n subject: TakeActionInput['subject']\n subjectBlobCids?: TakeActionInput['subjectBlobCids']\n reason?: string\n },\n role?: ModLevel,\n ) {\n return this.emitEvent(\n {\n event: {\n $type: 'tools.ozone.moderation.defs#modEventReverseTakedown',\n },\n ...opts,\n },\n role,\n )\n }\n\n async upsertSettingOption(\n setting: ToolsOzoneSettingUpsertOption.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.upsertOption(\n setting,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.upsertOption',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async removeSettingOptions(\n params: ToolsOzoneSettingRemoveOptions.InputSchema,\n callerRole: 'admin' | 'moderator' | 'triage' = 'admin',\n ) {\n const { data } = await this.agent.tools.ozone.setting.removeOptions(\n params,\n {\n encoding: 'application/json',\n headers: await this.ozone.modHeaders(\n 'tools.ozone.setting.removeOptions',\n callerRole,\n ),\n },\n )\n\n return data\n }\n\n async computeStats() {\n const db = this.ozone.ctx.db\n const statsService = this.ozone.ctx.reportStatsService(db)\n await statsService.materializeAll({ force: true })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"network-no-appview.d.ts","sourceRoot":"","sources":["../src/network-no-appview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,qBAAa,oBAAoB;IAGtB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IAHrB,QAAQ,EAAE,WAAW,EAAE,CAAK;gBAEnB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO;WAGR,MAAM,CACjB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAY1B,aAAa,CACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC;IAMvB,aAAa,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC;IAMlC,UAAU;IAIV,KAAK;CAKZ"}
1
+ {"version":3,"file":"network-no-appview.d.ts","sourceRoot":"","sources":["../src/network-no-appview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,qBAAa,oBAAoB;IAGtB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IAHrB,QAAQ,EAAE,WAAW,EAAE,CAAK;IAC5B,YACS,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,OAAO,EACjB;IAEJ,OAAa,MAAM,CACjB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAU/B;IAEK,aAAa,CACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC,CAItB;IAED,aAAa,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,CAIvC;IAEK,UAAU,kBAEf;IAEK,KAAK,kBAIV;CACF"}