@atproto/ozone 0.1.80 → 0.1.81

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.
@@ -5,6 +5,8 @@ import express from 'express';
5
5
  import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
6
  import type * as ToolsOzoneTeamDefs from './defs.js';
7
7
  export interface QueryParams {
8
+ disabled?: boolean;
9
+ roles?: string[];
8
10
  limit: number;
9
11
  cursor?: string;
10
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"listMembers.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/tools/ozone/team/listMembers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,kBAAkB,MAAM,WAAW,CAAA;AAMpD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
1
+ {"version":3,"file":"listMembers.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/tools/ozone/team/listMembers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,KAAK,kBAAkB,MAAM,WAAW,CAAA;AAMpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,CAAA;AAEpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;IACrB,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -9,9 +9,11 @@ export declare class TeamService {
9
9
  db: Database;
10
10
  constructor(db: Database);
11
11
  static creator(): (db: Database) => TeamService;
12
- list({ cursor, limit, }: {
12
+ list({ cursor, limit, roles, disabled, }: {
13
13
  cursor?: string;
14
14
  limit?: number;
15
+ disabled?: boolean;
16
+ roles?: string[];
15
17
  }): Promise<{
16
18
  members: Selectable<Member>[];
17
19
  cursor?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAG7E,MAAM,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,WAAW,CAAA;AAE9D,qBAAa,WAAW;IACH,EAAE,EAAE,QAAQ;gBAAZ,EAAE,EAAE,QAAQ;IAE/B,MAAM,CAAC,OAAO,SACA,QAAQ;IAGhB,IAAI,CAAC,EACT,MAAM,EACN,KAAU,GACX,EAAE;QACD,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAazD,MAAM,CAAC,EACX,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,GACd,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;QACvD,SAAS,CAAC,EAAE,IAAI,CAAA;QAChB,SAAS,CAAC,EAAE,IAAI,CAAA;KACjB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAkBzB,MAAM,CAAC,EACX,IAAI,EACJ,GAAG,EACH,aAAa,GACd,EAAE,IAAI,CACL,UAAU,CAAC,MAAM,CAAC,EAClB,MAAM,GAAG,KAAK,GAAG,eAAe,CACjC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBX,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,CACd,IAAI,CACF,UAAU,CAAC,MAAM,CAAC,EAClB,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,WAAW,CACpD,CACF,GACA,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAiBxB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAUrE,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC;;;;;IAenC,WAAW,CACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IA0BtC,IAAI,CACR,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,EAC7B,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,UAAU,EAAE,CAAC;CAiBzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAG7E,MAAM,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,WAAW,CAAA;AAE9D,qBAAa,WAAW;IACH,EAAE,EAAE,QAAQ;gBAAZ,EAAE,EAAE,QAAQ;IAE/B,MAAM,CAAC,OAAO,SACA,QAAQ;IAGhB,IAAI,CAAC,EACT,MAAM,EACN,KAAU,EACV,KAAK,EACL,QAAQ,GACT,EAAE;QACD,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KACjB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BzD,MAAM,CAAC,EACX,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,GACd,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG;QACvD,SAAS,CAAC,EAAE,IAAI,CAAA;QAChB,SAAS,CAAC,EAAE,IAAI,CAAA;KACjB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAkBzB,MAAM,CAAC,EACX,IAAI,EACJ,GAAG,EACH,aAAa,GACd,EAAE,IAAI,CACL,UAAU,CAAC,MAAM,CAAC,EAClB,MAAM,GAAG,KAAK,GAAG,eAAe,CACjC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBX,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,CACd,IAAI,CACF,UAAU,CAAC,MAAM,CAAC,EAClB,MAAM,GAAG,UAAU,GAAG,eAAe,GAAG,WAAW,CACpD,CACF,GACA,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAiBxB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAUrE,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC;;;;;IAenC,WAAW,CACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IA0BtC,IAAI,CACR,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,EAC7B,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,UAAU,EAAE,CAAC;CAiBzB"}
@@ -17,11 +17,23 @@ class TeamService {
17
17
  static creator() {
18
18
  return (db) => new TeamService(db);
19
19
  }
20
- async list({ cursor, limit = 25, }) {
20
+ async list({ cursor, limit = 25, roles, disabled, }) {
21
21
  let builder = this.db.db.selectFrom('member').selectAll();
22
22
  if (cursor) {
23
23
  builder = builder.where('createdAt', '>', new Date(cursor));
24
24
  }
25
+ if (roles !== undefined) {
26
+ const knownRoles = roles.filter((r) => r === 'tools.ozone.team.defs#roleAdmin' ||
27
+ r === 'tools.ozone.team.defs#roleModerator' ||
28
+ r === 'tools.ozone.team.defs#roleTriage');
29
+ // Optimization: no need to query to know that no values will be returned
30
+ if (!knownRoles.length)
31
+ return { members: [] };
32
+ builder = builder.where('role', 'in', knownRoles);
33
+ }
34
+ if (disabled !== undefined) {
35
+ builder = builder.where('disabled', disabled ? 'is' : 'is not', true);
36
+ }
25
37
  const members = await builder
26
38
  .limit(limit)
27
39
  .orderBy('createdAt', 'asc')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/ozone",
3
- "version": "0.1.80",
3
+ "version": "0.1.81",
4
4
  "license": "MIT",
5
5
  "description": "Backend service for moderating the Bluesky network.",
6
6
  "keywords": [
@@ -13953,6 +13953,15 @@ export const schemaDict = {
13953
13953
  parameters: {
13954
13954
  type: 'params',
13955
13955
  properties: {
13956
+ disabled: {
13957
+ type: 'boolean',
13958
+ },
13959
+ roles: {
13960
+ type: 'array',
13961
+ items: {
13962
+ type: 'string',
13963
+ },
13964
+ },
13956
13965
  limit: {
13957
13966
  type: 'integer',
13958
13967
  minimum: 1,
@@ -14,6 +14,8 @@ const is$typed = _is$typed,
14
14
  const id = 'tools.ozone.team.listMembers'
15
15
 
16
16
  export interface QueryParams {
17
+ disabled?: boolean
18
+ roles?: string[]
17
19
  limit: number
18
20
  cursor?: string
19
21
  }
package/src/team/index.ts CHANGED
@@ -21,14 +21,34 @@ export class TeamService {
21
21
  async list({
22
22
  cursor,
23
23
  limit = 25,
24
+ roles,
25
+ disabled,
24
26
  }: {
25
27
  cursor?: string
26
28
  limit?: number
29
+ disabled?: boolean
30
+ roles?: string[]
27
31
  }): Promise<{ members: Selectable<Member>[]; cursor?: string }> {
28
32
  let builder = this.db.db.selectFrom('member').selectAll()
29
33
  if (cursor) {
30
34
  builder = builder.where('createdAt', '>', new Date(cursor))
31
35
  }
36
+ if (roles !== undefined) {
37
+ const knownRoles = roles.filter(
38
+ (r) =>
39
+ r === 'tools.ozone.team.defs#roleAdmin' ||
40
+ r === 'tools.ozone.team.defs#roleModerator' ||
41
+ r === 'tools.ozone.team.defs#roleTriage',
42
+ )
43
+
44
+ // Optimization: no need to query to know that no values will be returned
45
+ if (!knownRoles.length) return { members: [] }
46
+
47
+ builder = builder.where('role', 'in', knownRoles)
48
+ }
49
+ if (disabled !== undefined) {
50
+ builder = builder.where('disabled', disabled ? 'is' : 'is not', true)
51
+ }
32
52
  const members = await builder
33
53
  .limit(limit)
34
54
  .orderBy('createdAt', 'asc')
@@ -348,341 +348,3 @@ Array [
348
348
  },
349
349
  ]
350
350
  `;
351
-
352
- exports[`team management listMembers allows all members to list all members 3`] = `
353
- Array [
354
- Object {
355
- "createdAt": "1970-01-01T00:00:00.000Z",
356
- "did": "user(0)",
357
- "disabled": false,
358
- "lastUpdatedBy": "user(1)",
359
- "role": "tools.ozone.team.defs#roleAdmin",
360
- "updatedAt": "1970-01-01T00:00:00.000Z",
361
- },
362
- Object {
363
- "createdAt": "1970-01-01T00:00:00.000Z",
364
- "did": "user(2)",
365
- "disabled": false,
366
- "lastUpdatedBy": "user(1)",
367
- "role": "tools.ozone.team.defs#roleTriage",
368
- "updatedAt": "1970-01-01T00:00:00.000Z",
369
- },
370
- Object {
371
- "createdAt": "1970-01-01T00:00:00.000Z",
372
- "did": "user(3)",
373
- "disabled": false,
374
- "lastUpdatedBy": "user(1)",
375
- "role": "tools.ozone.team.defs#roleModerator",
376
- "updatedAt": "1970-01-01T00:00:00.000Z",
377
- },
378
- Object {
379
- "createdAt": "1970-01-01T00:00:00.000Z",
380
- "did": "user(4)",
381
- "disabled": false,
382
- "lastUpdatedBy": "user(1)",
383
- "role": "tools.ozone.team.defs#roleModerator",
384
- "updatedAt": "1970-01-01T00:00:00.000Z",
385
- },
386
- Object {
387
- "createdAt": "1970-01-01T00:00:00.000Z",
388
- "did": "user(1)",
389
- "disabled": false,
390
- "lastUpdatedBy": "user(1)",
391
- "profile": Object {
392
- "associated": Object {
393
- "feedgens": 0,
394
- "labeler": true,
395
- "lists": 0,
396
- "starterPacks": 0,
397
- },
398
- "description": "The pretend version of mod.bsky.app",
399
- "did": "user(1)",
400
- "displayName": "Dev-env Moderation",
401
- "followersCount": 0,
402
- "followsCount": 0,
403
- "handle": "mod-authority.test",
404
- "indexedAt": "1970-01-01T00:00:00.000Z",
405
- "labels": Array [],
406
- "postsCount": 0,
407
- "viewer": Object {
408
- "blockedBy": false,
409
- "muted": false,
410
- },
411
- },
412
- "role": "tools.ozone.team.defs#roleAdmin",
413
- "updatedAt": "1970-01-01T00:00:00.000Z",
414
- },
415
- Object {
416
- "createdAt": "1970-01-01T00:00:00.000Z",
417
- "did": "user(5)",
418
- "disabled": false,
419
- "lastUpdatedBy": "user(1)",
420
- "profile": Object {
421
- "associated": Object {
422
- "feedgens": 0,
423
- "labeler": false,
424
- "lists": 0,
425
- "starterPacks": 0,
426
- },
427
- "avatar": "https://bsky.public.url/img/avatar/plain/user(6)/cids(0)@jpeg",
428
- "createdAt": "1970-01-01T00:00:00.000Z",
429
- "description": "its me!",
430
- "did": "user(5)",
431
- "displayName": "ali",
432
- "followersCount": 2,
433
- "followsCount": 3,
434
- "handle": "alice.test",
435
- "indexedAt": "1970-01-01T00:00:00.000Z",
436
- "labels": Array [
437
- Object {
438
- "cid": "cids(1)",
439
- "cts": "1970-01-01T00:00:00.000Z",
440
- "src": "user(5)",
441
- "uri": "record(0)",
442
- "val": "self-label-a",
443
- },
444
- Object {
445
- "cid": "cids(1)",
446
- "cts": "1970-01-01T00:00:00.000Z",
447
- "src": "user(5)",
448
- "uri": "record(0)",
449
- "val": "self-label-b",
450
- },
451
- ],
452
- "postsCount": 4,
453
- "viewer": Object {
454
- "blockedBy": false,
455
- "muted": false,
456
- },
457
- },
458
- "role": "tools.ozone.team.defs#roleAdmin",
459
- "updatedAt": "1970-01-01T00:00:00.000Z",
460
- },
461
- Object {
462
- "createdAt": "1970-01-01T00:00:00.000Z",
463
- "did": "user(7)",
464
- "disabled": false,
465
- "lastUpdatedBy": "user(1)",
466
- "profile": Object {
467
- "associated": Object {
468
- "feedgens": 0,
469
- "labeler": false,
470
- "lists": 0,
471
- "starterPacks": 0,
472
- },
473
- "avatar": "https://bsky.public.url/img/avatar/plain/user(8)/cids(0)@jpeg",
474
- "createdAt": "1970-01-01T00:00:00.000Z",
475
- "description": "hi im bob label_me",
476
- "did": "user(7)",
477
- "displayName": "bobby",
478
- "followersCount": 2,
479
- "followsCount": 2,
480
- "handle": "bob.test",
481
- "indexedAt": "1970-01-01T00:00:00.000Z",
482
- "labels": Array [],
483
- "postsCount": 3,
484
- "viewer": Object {
485
- "blockedBy": false,
486
- "muted": false,
487
- },
488
- },
489
- "role": "tools.ozone.team.defs#roleModerator",
490
- "updatedAt": "1970-01-01T00:00:00.000Z",
491
- },
492
- Object {
493
- "createdAt": "1970-01-01T00:00:00.000Z",
494
- "did": "user(9)",
495
- "disabled": false,
496
- "lastUpdatedBy": "user(1)",
497
- "profile": Object {
498
- "associated": Object {
499
- "feedgens": 0,
500
- "labeler": false,
501
- "lists": 0,
502
- "starterPacks": 0,
503
- },
504
- "did": "user(9)",
505
- "followersCount": 2,
506
- "followsCount": 1,
507
- "handle": "carol.test",
508
- "labels": Array [],
509
- "postsCount": 2,
510
- "viewer": Object {
511
- "blockedBy": false,
512
- "muted": false,
513
- },
514
- },
515
- "role": "tools.ozone.team.defs#roleTriage",
516
- "updatedAt": "1970-01-01T00:00:00.000Z",
517
- },
518
- ]
519
- `;
520
-
521
- exports[`team management listMembers allows all members to list all members 4`] = `
522
- Array [
523
- Object {
524
- "createdAt": "1970-01-01T00:00:00.000Z",
525
- "did": "user(0)",
526
- "disabled": false,
527
- "lastUpdatedBy": "user(1)",
528
- "role": "tools.ozone.team.defs#roleAdmin",
529
- "updatedAt": "1970-01-01T00:00:00.000Z",
530
- },
531
- Object {
532
- "createdAt": "1970-01-01T00:00:00.000Z",
533
- "did": "user(2)",
534
- "disabled": false,
535
- "lastUpdatedBy": "user(1)",
536
- "role": "tools.ozone.team.defs#roleTriage",
537
- "updatedAt": "1970-01-01T00:00:00.000Z",
538
- },
539
- Object {
540
- "createdAt": "1970-01-01T00:00:00.000Z",
541
- "did": "user(3)",
542
- "disabled": false,
543
- "lastUpdatedBy": "user(1)",
544
- "role": "tools.ozone.team.defs#roleModerator",
545
- "updatedAt": "1970-01-01T00:00:00.000Z",
546
- },
547
- Object {
548
- "createdAt": "1970-01-01T00:00:00.000Z",
549
- "did": "user(4)",
550
- "disabled": false,
551
- "lastUpdatedBy": "user(1)",
552
- "role": "tools.ozone.team.defs#roleModerator",
553
- "updatedAt": "1970-01-01T00:00:00.000Z",
554
- },
555
- Object {
556
- "createdAt": "1970-01-01T00:00:00.000Z",
557
- "did": "user(1)",
558
- "disabled": false,
559
- "lastUpdatedBy": "user(1)",
560
- "profile": Object {
561
- "associated": Object {
562
- "feedgens": 0,
563
- "labeler": true,
564
- "lists": 0,
565
- "starterPacks": 0,
566
- },
567
- "description": "The pretend version of mod.bsky.app",
568
- "did": "user(1)",
569
- "displayName": "Dev-env Moderation",
570
- "followersCount": 0,
571
- "followsCount": 0,
572
- "handle": "mod-authority.test",
573
- "indexedAt": "1970-01-01T00:00:00.000Z",
574
- "labels": Array [],
575
- "postsCount": 0,
576
- "viewer": Object {
577
- "blockedBy": false,
578
- "muted": false,
579
- },
580
- },
581
- "role": "tools.ozone.team.defs#roleAdmin",
582
- "updatedAt": "1970-01-01T00:00:00.000Z",
583
- },
584
- Object {
585
- "createdAt": "1970-01-01T00:00:00.000Z",
586
- "did": "user(5)",
587
- "disabled": false,
588
- "lastUpdatedBy": "user(1)",
589
- "profile": Object {
590
- "associated": Object {
591
- "feedgens": 0,
592
- "labeler": false,
593
- "lists": 0,
594
- "starterPacks": 0,
595
- },
596
- "avatar": "https://bsky.public.url/img/avatar/plain/user(6)/cids(0)@jpeg",
597
- "createdAt": "1970-01-01T00:00:00.000Z",
598
- "description": "its me!",
599
- "did": "user(5)",
600
- "displayName": "ali",
601
- "followersCount": 2,
602
- "followsCount": 3,
603
- "handle": "alice.test",
604
- "indexedAt": "1970-01-01T00:00:00.000Z",
605
- "labels": Array [
606
- Object {
607
- "cid": "cids(1)",
608
- "cts": "1970-01-01T00:00:00.000Z",
609
- "src": "user(5)",
610
- "uri": "record(0)",
611
- "val": "self-label-a",
612
- },
613
- Object {
614
- "cid": "cids(1)",
615
- "cts": "1970-01-01T00:00:00.000Z",
616
- "src": "user(5)",
617
- "uri": "record(0)",
618
- "val": "self-label-b",
619
- },
620
- ],
621
- "postsCount": 4,
622
- "viewer": Object {
623
- "blockedBy": false,
624
- "muted": false,
625
- },
626
- },
627
- "role": "tools.ozone.team.defs#roleAdmin",
628
- "updatedAt": "1970-01-01T00:00:00.000Z",
629
- },
630
- Object {
631
- "createdAt": "1970-01-01T00:00:00.000Z",
632
- "did": "user(7)",
633
- "disabled": false,
634
- "lastUpdatedBy": "user(1)",
635
- "profile": Object {
636
- "associated": Object {
637
- "feedgens": 0,
638
- "labeler": false,
639
- "lists": 0,
640
- "starterPacks": 0,
641
- },
642
- "avatar": "https://bsky.public.url/img/avatar/plain/user(8)/cids(0)@jpeg",
643
- "createdAt": "1970-01-01T00:00:00.000Z",
644
- "description": "hi im bob label_me",
645
- "did": "user(7)",
646
- "displayName": "bobby",
647
- "followersCount": 2,
648
- "followsCount": 2,
649
- "handle": "bob.test",
650
- "indexedAt": "1970-01-01T00:00:00.000Z",
651
- "labels": Array [],
652
- "postsCount": 3,
653
- "viewer": Object {
654
- "blockedBy": false,
655
- "muted": false,
656
- },
657
- },
658
- "role": "tools.ozone.team.defs#roleModerator",
659
- "updatedAt": "1970-01-01T00:00:00.000Z",
660
- },
661
- Object {
662
- "createdAt": "1970-01-01T00:00:00.000Z",
663
- "did": "user(9)",
664
- "disabled": false,
665
- "lastUpdatedBy": "user(1)",
666
- "profile": Object {
667
- "associated": Object {
668
- "feedgens": 0,
669
- "labeler": false,
670
- "lists": 0,
671
- "starterPacks": 0,
672
- },
673
- "did": "user(9)",
674
- "followersCount": 2,
675
- "followsCount": 1,
676
- "handle": "carol.test",
677
- "labels": Array [],
678
- "postsCount": 2,
679
- "viewer": Object {
680
- "blockedBy": false,
681
- "muted": false,
682
- },
683
- },
684
- "role": "tools.ozone.team.defs#roleTriage",
685
- "updatedAt": "1970-01-01T00:00:00.000Z",
686
- },
687
- ]
688
- `;
@@ -1,4 +1,4 @@
1
- import { AtpAgent } from '@atproto/api'
1
+ import { AtpAgent, ToolsOzoneTeamDefs } from '@atproto/api'
2
2
  import { SeedClient, TestNetwork, basicSeed } from '@atproto/dev-env'
3
3
  import { forSnapshot } from './_util'
4
4
 
@@ -38,8 +38,8 @@ describe('team management', () => {
38
38
  describe('listMembers', () => {
39
39
  it('allows all members to list all members', async () => {
40
40
  const [{ data: forAdmin }, { data: forTriage }] = await Promise.all([
41
- adminAgent.api.tools.ozone.team.listMembers({}),
42
- triageAgent.api.tools.ozone.team.listMembers({}),
41
+ adminAgent.tools.ozone.team.listMembers({}),
42
+ triageAgent.tools.ozone.team.listMembers({}),
43
43
  ])
44
44
  expect(forSnapshot(forAdmin.members)).toMatchSnapshot()
45
45
  expect(forSnapshot(forTriage.members)).toMatchSnapshot()
@@ -47,20 +47,50 @@ describe('team management', () => {
47
47
 
48
48
  expect(forAdmin.members.length).toEqual(forTriage.members.length)
49
49
  })
50
- })
51
- describe('listMembers', () => {
52
- it('allows all members to list all members', async () => {
53
- const [{ data: forAdmin }, { data: forTriage }] = await Promise.all([
54
- adminAgent.api.tools.ozone.team.listMembers({}),
55
- triageAgent.api.tools.ozone.team.listMembers({}),
50
+ it('allows filtering members by role', async () => {
51
+ const [{ data: onlyAdmins }, { data: onlyTriage }] = await Promise.all([
52
+ adminAgent.tools.ozone.team.listMembers({
53
+ roles: [ToolsOzoneTeamDefs.ROLEADMIN],
54
+ }),
55
+ adminAgent.tools.ozone.team.listMembers({
56
+ roles: [ToolsOzoneTeamDefs.ROLETRIAGE],
57
+ }),
56
58
  ])
57
- expect(forSnapshot(forAdmin.members)).toMatchSnapshot()
58
- expect(forSnapshot(forTriage.members)).toMatchSnapshot()
59
- // Validate that the list looks the same to both admin and triage members
60
59
 
61
- expect(forAdmin.members.length).toEqual(forTriage.members.length)
60
+ expect(
61
+ onlyAdmins.members.find(
62
+ ({ role }) => role !== ToolsOzoneTeamDefs.ROLEADMIN,
63
+ ),
64
+ ).toBeUndefined()
65
+
66
+ expect(
67
+ onlyTriage.members.find(
68
+ ({ role }) => role !== ToolsOzoneTeamDefs.ROLETRIAGE,
69
+ ),
70
+ ).toBeUndefined()
71
+ })
72
+ it('allows filtering members by disabled status', async () => {
73
+ const [{ data: onlyDisabled }, { data: onlyEnabled }] = await Promise.all(
74
+ [
75
+ adminAgent.tools.ozone.team.listMembers({
76
+ disabled: true,
77
+ }),
78
+ adminAgent.tools.ozone.team.listMembers({
79
+ disabled: false,
80
+ }),
81
+ ],
82
+ )
83
+
84
+ expect(
85
+ onlyDisabled.members.find(({ disabled }) => !disabled),
86
+ ).toBeUndefined()
87
+
88
+ expect(
89
+ onlyEnabled.members.find(({ disabled }) => disabled),
90
+ ).toBeUndefined()
62
91
  })
63
92
  })
93
+
64
94
  describe('addMember', () => {
65
95
  const newMemberData = {
66
96
  did: 'did:plc:newMember',
@@ -69,15 +99,15 @@ describe('team management', () => {
69
99
  }
70
100
  it('only allows admins to add member', async () => {
71
101
  await expect(
72
- triageAgent.api.tools.ozone.team.addMember(newMemberData),
102
+ triageAgent.tools.ozone.team.addMember(newMemberData),
73
103
  ).rejects.toThrow('Must be an admin to add a member')
74
104
  const { data: newMember } =
75
- await adminAgent.api.tools.ozone.team.addMember(newMemberData)
105
+ await adminAgent.tools.ozone.team.addMember(newMemberData)
76
106
  expect(forSnapshot(newMember)).toMatchSnapshot()
77
107
  })
78
108
  it('throws error when trying to add existing member', async () => {
79
109
  await expect(
80
- adminAgent.api.tools.ozone.team.addMember(newMemberData),
110
+ adminAgent.tools.ozone.team.addMember(newMemberData),
81
111
  ).rejects.toThrow('member already exists')
82
112
  })
83
113
  })
@@ -85,19 +115,19 @@ describe('team management', () => {
85
115
  it('only allows admins to delete members', async () => {
86
116
  const {
87
117
  data: { members: initialMembers },
88
- } = await adminAgent.api.tools.ozone.team.listMembers({})
118
+ } = await adminAgent.tools.ozone.team.listMembers({})
89
119
  await expect(
90
- triageAgent.api.tools.ozone.team.deleteMember({
120
+ triageAgent.tools.ozone.team.deleteMember({
91
121
  did: sc.dids.bob,
92
122
  }),
93
123
  ).rejects.toThrow('Must be an admin to delete a member')
94
124
 
95
- await adminAgent.api.tools.ozone.team.deleteMember({
125
+ await adminAgent.tools.ozone.team.deleteMember({
96
126
  did: sc.dids.bob,
97
127
  })
98
128
  const {
99
129
  data: { members: membersAfterDelete },
100
- } = await adminAgent.api.tools.ozone.team.listMembers({})
130
+ } = await adminAgent.tools.ozone.team.listMembers({})
101
131
 
102
132
  expect(membersAfterDelete.length).toEqual(initialMembers.length - 1)
103
133
  expect(membersAfterDelete.map(({ did }) => did)).not.toContain(
@@ -107,7 +137,7 @@ describe('team management', () => {
107
137
 
108
138
  it('throws error when trying to remove non-existent member', async () => {
109
139
  await expect(
110
- adminAgent.api.tools.ozone.team.deleteMember({
140
+ adminAgent.tools.ozone.team.deleteMember({
111
141
  did: 'did:plc:test',
112
142
  }),
113
143
  ).rejects.toThrow('member not found')
@@ -118,19 +148,19 @@ describe('team management', () => {
118
148
  const getCarol = async () => {
119
149
  const {
120
150
  data: { members },
121
- } = await adminAgent.api.tools.ozone.team.listMembers({})
151
+ } = await adminAgent.tools.ozone.team.listMembers({})
122
152
 
123
153
  return members.find(({ did }) => did === sc.dids.carol)
124
154
  }
125
155
  await expect(
126
- triageAgent.api.tools.ozone.team.updateMember({
156
+ triageAgent.tools.ozone.team.updateMember({
127
157
  disabled: false,
128
158
  did: sc.dids.carol,
129
159
  role: 'tools.ozone.team.defs#roleAdmin',
130
160
  }),
131
161
  ).rejects.toThrow('Must be an admin to update a member')
132
162
 
133
- await adminAgent.api.tools.ozone.team.updateMember({
163
+ await adminAgent.tools.ozone.team.updateMember({
134
164
  did: sc.dids.carol,
135
165
  role: 'tools.ozone.team.defs#roleAdmin',
136
166
  })
@@ -141,7 +171,7 @@ describe('team management', () => {
141
171
  // Verify that params that we didn't send did not get updated
142
172
  expect(carolAfterRoleChange?.disabled).toEqual(false)
143
173
 
144
- await adminAgent.api.tools.ozone.team.updateMember({
174
+ await adminAgent.tools.ozone.team.updateMember({
145
175
  did: sc.dids.carol,
146
176
  disabled: true,
147
177
  })
@@ -152,7 +182,7 @@ describe('team management', () => {
152
182
  })
153
183
  it('throws error when trying to update non-existent member', async () => {
154
184
  await expect(
155
- adminAgent.api.tools.ozone.team.updateMember({
185
+ adminAgent.tools.ozone.team.updateMember({
156
186
  disabled: false,
157
187
  did: 'did:plc:test',
158
188
  role: 'tools.ozone.team.defs#roleAdmin',