@atproto/ozone 0.2.1 → 0.2.2

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 (50) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/api/chat/getConvos.d.ts +4 -0
  3. package/dist/api/chat/getConvos.d.ts.map +1 -0
  4. package/dist/api/chat/getConvos.js +18 -0
  5. package/dist/api/chat/getConvos.js.map +1 -0
  6. package/dist/lexicon/lexicons.d.ts +290 -42
  7. package/dist/lexicon/lexicons.d.ts.map +1 -1
  8. package/dist/lexicon/lexicons.js +154 -16
  9. package/dist/lexicon/lexicons.js.map +1 -1
  10. package/dist/lexicon/types/app/bsky/draft/defs.d.ts +10 -0
  11. package/dist/lexicon/types/app/bsky/draft/defs.d.ts.map +1 -1
  12. package/dist/lexicon/types/app/bsky/draft/defs.js +7 -0
  13. package/dist/lexicon/types/app/bsky/draft/defs.js.map +1 -1
  14. package/dist/lexicon/types/app/bsky/embed/gallery.d.ts +45 -0
  15. package/dist/lexicon/types/app/bsky/embed/gallery.d.ts.map +1 -0
  16. package/dist/lexicon/types/app/bsky/embed/gallery.js +33 -0
  17. package/dist/lexicon/types/app/bsky/embed/gallery.js.map +1 -0
  18. package/dist/lexicon/types/app/bsky/embed/record.d.ts +2 -1
  19. package/dist/lexicon/types/app/bsky/embed/record.d.ts.map +1 -1
  20. package/dist/lexicon/types/app/bsky/embed/record.js.map +1 -1
  21. package/dist/lexicon/types/app/bsky/embed/recordWithMedia.d.ts +3 -2
  22. package/dist/lexicon/types/app/bsky/embed/recordWithMedia.d.ts.map +1 -1
  23. package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js.map +1 -1
  24. package/dist/lexicon/types/app/bsky/feed/defs.d.ts +2 -1
  25. package/dist/lexicon/types/app/bsky/feed/defs.d.ts.map +1 -1
  26. package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
  27. package/dist/lexicon/types/app/bsky/feed/post.d.ts +2 -1
  28. package/dist/lexicon/types/app/bsky/feed/post.d.ts.map +1 -1
  29. package/dist/lexicon/types/app/bsky/feed/post.js.map +1 -1
  30. package/dist/lexicon/types/chat/bsky/embed/joinLink.d.ts +4 -1
  31. package/dist/lexicon/types/chat/bsky/embed/joinLink.d.ts.map +1 -1
  32. package/dist/lexicon/types/chat/bsky/embed/joinLink.js.map +1 -1
  33. package/dist/lexicon/types/chat/bsky/group/defs.d.ts +19 -2
  34. package/dist/lexicon/types/chat/bsky/group/defs.d.ts.map +1 -1
  35. package/dist/lexicon/types/chat/bsky/group/defs.js +14 -0
  36. package/dist/lexicon/types/chat/bsky/group/defs.js.map +1 -1
  37. package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreviews.d.ts +4 -1
  38. package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreviews.d.ts.map +1 -1
  39. package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreviews.js.map +1 -1
  40. package/dist/mod-service/subject.d.ts +5 -0
  41. package/dist/mod-service/subject.d.ts.map +1 -1
  42. package/dist/mod-service/subject.js +5 -0
  43. package/dist/mod-service/subject.js.map +1 -1
  44. package/package.json +4 -4
  45. package/src/api/chat/getConvos.ts +23 -0
  46. package/src/mod-service/subject.ts +5 -0
  47. package/tsconfig.build.json +2 -2
  48. package/tsconfig.build.tsbuildinfo +1 -1
  49. package/tsconfig.json +2 -2
  50. package/tsconfig.tests.json +2 -2
@@ -6,6 +6,7 @@ import type * as ChatBskyActorDefs from '../actor/defs.js';
6
6
  import type * as ChatBskyConvoDefs from '../convo/defs.js';
7
7
  export type LinkEnabledStatus = 'enabled' | 'disabled' | (string & {});
8
8
  export type JoinRule = 'anyone' | 'followedByOwner' | (string & {});
9
+ /** Join link view to be used within a group view, so the convo is surrounding, not specified inside this view. */
9
10
  export interface JoinLinkView {
10
11
  $type?: 'chat.bsky.group.defs#joinLinkView';
11
12
  code: string;
@@ -16,8 +17,10 @@ export interface JoinLinkView {
16
17
  }
17
18
  export declare function isJoinLinkView<V>(v: V): v is import("../../../../util.js").$TypedObject<V, "chat.bsky.group.defs", "joinLinkView">;
18
19
  export declare function validateJoinLinkView<V>(v: V): ValidationResult<JoinLinkView & V>;
20
+ /** Preview that can be shown in feeds, including to unauthenticated viewers. */
19
21
  export interface JoinLinkPreviewView {
20
22
  $type?: 'chat.bsky.group.defs#joinLinkPreviewView';
23
+ convoId: string;
21
24
  code: string;
22
25
  name: string;
23
26
  owner: ChatBskyActorDefs.ProfileViewBasic;
@@ -25,18 +28,32 @@ export interface JoinLinkPreviewView {
25
28
  memberLimit: number;
26
29
  requireApproval: boolean;
27
30
  joinRule: JoinRule;
28
- enabledStatus: LinkEnabledStatus;
29
31
  convo?: ChatBskyConvoDefs.ConvoView;
30
32
  viewer?: JoinLinkViewerState;
31
33
  }
32
34
  export declare function isJoinLinkPreviewView<V>(v: V): v is import("../../../../util.js").$TypedObject<V, "chat.bsky.group.defs", "joinLinkPreviewView">;
33
35
  export declare function validateJoinLinkPreviewView<V>(v: V): ValidationResult<JoinLinkPreviewView & V>;
36
+ /** Preview for a disabled join link. Carries only the code so clients can correlate with the input and render a disabled state. */
37
+ export interface DisabledJoinLinkPreviewView {
38
+ $type?: 'chat.bsky.group.defs#disabledJoinLinkPreviewView';
39
+ code: string;
40
+ }
41
+ export declare function isDisabledJoinLinkPreviewView<V>(v: V): v is import("../../../../util.js").$TypedObject<V, "chat.bsky.group.defs", "disabledJoinLinkPreviewView">;
42
+ export declare function validateDisabledJoinLinkPreviewView<V>(v: V): ValidationResult<DisabledJoinLinkPreviewView & V>;
43
+ /** Preview for a join link code that does not map to an existing link. Carries only the code so clients can correlate with the input and render an invalid state. */
44
+ export interface InvalidJoinLinkPreviewView {
45
+ $type?: 'chat.bsky.group.defs#invalidJoinLinkPreviewView';
46
+ code: string;
47
+ }
48
+ export declare function isInvalidJoinLinkPreviewView<V>(v: V): v is import("../../../../util.js").$TypedObject<V, "chat.bsky.group.defs", "invalidJoinLinkPreviewView">;
49
+ export declare function validateInvalidJoinLinkPreviewView<V>(v: V): ValidationResult<InvalidJoinLinkPreviewView & V>;
34
50
  export interface JoinLinkViewerState {
35
51
  $type?: 'chat.bsky.group.defs#joinLinkViewerState';
36
52
  requestedAt?: string;
37
53
  }
38
54
  export declare function isJoinLinkViewerState<V>(v: V): v is import("../../../../util.js").$TypedObject<V, "chat.bsky.group.defs", "joinLinkViewerState">;
39
55
  export declare function validateJoinLinkViewerState<V>(v: V): ValidationResult<JoinLinkViewerState & V>;
56
+ /** A join request from the perspective of the group owner. */
40
57
  export interface JoinRequestView {
41
58
  $type?: 'chat.bsky.group.defs#joinRequestView';
42
59
  convoId: string;
@@ -53,7 +70,7 @@ export interface JoinRequestConvoView {
53
70
  owner: ChatBskyActorDefs.ProfileViewBasic;
54
71
  memberCount: number;
55
72
  memberLimit: number;
56
- requestedAt: string;
73
+ viewer: JoinLinkViewerState;
57
74
  }
58
75
  export declare function isJoinRequestConvoView<V>(v: V): v is import("../../../../util.js").$TypedObject<V, "chat.bsky.group.defs", "joinRequestConvoView">;
59
76
  export declare function validateJoinRequestConvoView<V>(v: V): ValidationResult<JoinRequestConvoView & V>;
@@ -1 +1 @@
1
- {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAQjE,OAAO,KAAK,KAAK,iBAAiB,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,KAAK,iBAAiB,MAAM,kBAAkB,CAAA;AAM1D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AACtE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,mCAAmC,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,iBAAiB,CAAA;IAChC,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8FAErC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sCAE3C;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,0CAA0C,CAAA;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;IAClB,aAAa,EAAE,iBAAiB,CAAA;IAChC,KAAK,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAA;IACnC,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qGAE5C;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6CAElD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,0CAA0C,CAAA;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qGAE5C;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6CAElD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,sCAAsC,CAAA;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAA;CACpB;AAID,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iGAExC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yCAE9C;AAED,mKAAmK;AACnK,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,2CAA2C,CAAA;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB;AAID,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sGAE7C;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8CAEnD"}
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAQjE,OAAO,KAAK,KAAK,iBAAiB,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,KAAK,iBAAiB,MAAM,kBAAkB,CAAA;AAM1D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AACtE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEnE,kHAAkH;AAClH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,mCAAmC,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,iBAAiB,CAAA;IAChC,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8FAErC;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sCAE3C;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,0CAA0C,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAA;IACnC,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qGAE5C;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6CAElD;AAED,mIAAmI;AACnI,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,kDAAkD,CAAA;IAC1D,IAAI,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6GAEpD;AAED,wBAAgB,mCAAmC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qDAM1D;AAED,qKAAqK;AACrK,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,iDAAiD,CAAA;IACzD,IAAI,EAAE,MAAM,CAAA;CACb;AAID,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,4GAEnD;AAED,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,oDAMzD;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,0CAA0C,CAAA;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qGAE5C;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,6CAElD;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,sCAAsC,CAAA;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAA;CACpB;AAID,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iGAExC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yCAE9C;AAED,mKAAmK;AACnK,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,2CAA2C,CAAA;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,CAAA;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,mBAAmB,CAAA;CAC5B;AAID,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sGAE7C;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8CAEnD"}
@@ -16,6 +16,20 @@ export function isJoinLinkPreviewView(v) {
16
16
  export function validateJoinLinkPreviewView(v) {
17
17
  return validate(v, id, hashJoinLinkPreviewView);
18
18
  }
19
+ const hashDisabledJoinLinkPreviewView = 'disabledJoinLinkPreviewView';
20
+ export function isDisabledJoinLinkPreviewView(v) {
21
+ return is$typed(v, id, hashDisabledJoinLinkPreviewView);
22
+ }
23
+ export function validateDisabledJoinLinkPreviewView(v) {
24
+ return validate(v, id, hashDisabledJoinLinkPreviewView);
25
+ }
26
+ const hashInvalidJoinLinkPreviewView = 'invalidJoinLinkPreviewView';
27
+ export function isInvalidJoinLinkPreviewView(v) {
28
+ return is$typed(v, id, hashInvalidJoinLinkPreviewView);
29
+ }
30
+ export function validateInvalidJoinLinkPreviewView(v) {
31
+ return validate(v, id, hashInvalidJoinLinkPreviewView);
32
+ }
19
33
  const hashJoinLinkViewerState = 'joinLinkViewerState';
20
34
  export function isJoinLinkViewerState(v) {
21
35
  return is$typed(v, id, hashJoinLinkViewerState);
@@ -1 +1 @@
1
- {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/defs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAEL,QAAQ,IAAI,SAAS,GAEtB,MAAM,qBAAqB,CAAA;AAI5B,MAAM,QAAQ,GAAG,SAAS,EACxB,QAAQ,GAAG,SAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sBAAsB,CAAA;AAcjC,MAAM,gBAAgB,GAAG,cAAc,CAAA;AAEvC,MAAM,UAAU,cAAc,CAAI,CAAI;IACpC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,CAAI;IAC1C,OAAO,QAAQ,CAAmB,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC5D,CAAC;AAgBD,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAErD,MAAM,UAAU,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAA0B,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AAC1E,CAAC;AAOD,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAErD,MAAM,UAAU,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAA0B,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AAC1E,CAAC;AASD,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAE7C,MAAM,UAAU,iBAAiB,CAAI,CAAI;IACvC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAI,CAAI;IAC7C,OAAO,QAAQ,CAAsB,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;AAClE,CAAC;AAaD,MAAM,wBAAwB,GAAG,sBAAsB,CAAA;AAEvD,MAAM,UAAU,sBAAsB,CAAI,CAAI;IAC5C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAI,CAAI;IAClD,OAAO,QAAQ,CAA2B,CAAC,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAA;AAC5E,CAAC","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons.js'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util.js'\nimport type * as ChatBskyActorDefs from '../actor/defs.js'\nimport type * as ChatBskyConvoDefs from '../convo/defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'chat.bsky.group.defs'\n\nexport type LinkEnabledStatus = 'enabled' | 'disabled' | (string & {})\nexport type JoinRule = 'anyone' | 'followedByOwner' | (string & {})\n\nexport interface JoinLinkView {\n $type?: 'chat.bsky.group.defs#joinLinkView'\n code: string\n enabledStatus: LinkEnabledStatus\n requireApproval: boolean\n joinRule: JoinRule\n createdAt: string\n}\n\nconst hashJoinLinkView = 'joinLinkView'\n\nexport function isJoinLinkView<V>(v: V) {\n return is$typed(v, id, hashJoinLinkView)\n}\n\nexport function validateJoinLinkView<V>(v: V) {\n return validate<JoinLinkView & V>(v, id, hashJoinLinkView)\n}\n\nexport interface JoinLinkPreviewView {\n $type?: 'chat.bsky.group.defs#joinLinkPreviewView'\n code: string\n name: string\n owner: ChatBskyActorDefs.ProfileViewBasic\n memberCount: number\n memberLimit: number\n requireApproval: boolean\n joinRule: JoinRule\n enabledStatus: LinkEnabledStatus\n convo?: ChatBskyConvoDefs.ConvoView\n viewer?: JoinLinkViewerState\n}\n\nconst hashJoinLinkPreviewView = 'joinLinkPreviewView'\n\nexport function isJoinLinkPreviewView<V>(v: V) {\n return is$typed(v, id, hashJoinLinkPreviewView)\n}\n\nexport function validateJoinLinkPreviewView<V>(v: V) {\n return validate<JoinLinkPreviewView & V>(v, id, hashJoinLinkPreviewView)\n}\n\nexport interface JoinLinkViewerState {\n $type?: 'chat.bsky.group.defs#joinLinkViewerState'\n requestedAt?: string\n}\n\nconst hashJoinLinkViewerState = 'joinLinkViewerState'\n\nexport function isJoinLinkViewerState<V>(v: V) {\n return is$typed(v, id, hashJoinLinkViewerState)\n}\n\nexport function validateJoinLinkViewerState<V>(v: V) {\n return validate<JoinLinkViewerState & V>(v, id, hashJoinLinkViewerState)\n}\n\nexport interface JoinRequestView {\n $type?: 'chat.bsky.group.defs#joinRequestView'\n convoId: string\n requestedBy: ChatBskyActorDefs.ProfileViewBasic\n requestedAt: string\n}\n\nconst hashJoinRequestView = 'joinRequestView'\n\nexport function isJoinRequestView<V>(v: V) {\n return is$typed(v, id, hashJoinRequestView)\n}\n\nexport function validateJoinRequestView<V>(v: V) {\n return validate<JoinRequestView & V>(v, id, hashJoinRequestView)\n}\n\n/** A join request from the perspective of the requester, including enough group context to render the request in a list (e.g. group name, owner, member count). */\nexport interface JoinRequestConvoView {\n $type?: 'chat.bsky.group.defs#joinRequestConvoView'\n convoId: string\n name: string\n owner: ChatBskyActorDefs.ProfileViewBasic\n memberCount: number\n memberLimit: number\n requestedAt: string\n}\n\nconst hashJoinRequestConvoView = 'joinRequestConvoView'\n\nexport function isJoinRequestConvoView<V>(v: V) {\n return is$typed(v, id, hashJoinRequestConvoView)\n}\n\nexport function validateJoinRequestConvoView<V>(v: V) {\n return validate<JoinRequestConvoView & V>(v, id, hashJoinRequestConvoView)\n}\n"]}
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/defs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAEL,QAAQ,IAAI,SAAS,GAEtB,MAAM,qBAAqB,CAAA;AAI5B,MAAM,QAAQ,GAAG,SAAS,EACxB,QAAQ,GAAG,SAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sBAAsB,CAAA;AAejC,MAAM,gBAAgB,GAAG,cAAc,CAAA;AAEvC,MAAM,UAAU,cAAc,CAAI,CAAI;IACpC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAI,CAAI;IAC1C,OAAO,QAAQ,CAAmB,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC5D,CAAC;AAiBD,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAErD,MAAM,UAAU,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAA0B,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AAC1E,CAAC;AAQD,MAAM,+BAA+B,GAAG,6BAA6B,CAAA;AAErE,MAAM,UAAU,6BAA6B,CAAI,CAAI;IACnD,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,+BAA+B,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAI,CAAI;IACzD,OAAO,QAAQ,CACb,CAAC,EACD,EAAE,EACF,+BAA+B,CAChC,CAAA;AACH,CAAC;AAQD,MAAM,8BAA8B,GAAG,4BAA4B,CAAA;AAEnE,MAAM,UAAU,4BAA4B,CAAI,CAAI;IAClD,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,8BAA8B,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAI,CAAI;IACxD,OAAO,QAAQ,CACb,CAAC,EACD,EAAE,EACF,8BAA8B,CAC/B,CAAA;AACH,CAAC;AAOD,MAAM,uBAAuB,GAAG,qBAAqB,CAAA;AAErD,MAAM,UAAU,qBAAqB,CAAI,CAAI;IAC3C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAI,CAAI;IACjD,OAAO,QAAQ,CAA0B,CAAC,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAA;AAC1E,CAAC;AAUD,MAAM,mBAAmB,GAAG,iBAAiB,CAAA;AAE7C,MAAM,UAAU,iBAAiB,CAAI,CAAI;IACvC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAI,CAAI;IAC7C,OAAO,QAAQ,CAAsB,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAA;AAClE,CAAC;AAaD,MAAM,wBAAwB,GAAG,sBAAsB,CAAA;AAEvD,MAAM,UAAU,sBAAsB,CAAI,CAAI;IAC5C,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAI,CAAI;IAClD,OAAO,QAAQ,CAA2B,CAAC,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAA;AAC5E,CAAC","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons.js'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util.js'\nimport type * as ChatBskyActorDefs from '../actor/defs.js'\nimport type * as ChatBskyConvoDefs from '../convo/defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'chat.bsky.group.defs'\n\nexport type LinkEnabledStatus = 'enabled' | 'disabled' | (string & {})\nexport type JoinRule = 'anyone' | 'followedByOwner' | (string & {})\n\n/** Join link view to be used within a group view, so the convo is surrounding, not specified inside this view. */\nexport interface JoinLinkView {\n $type?: 'chat.bsky.group.defs#joinLinkView'\n code: string\n enabledStatus: LinkEnabledStatus\n requireApproval: boolean\n joinRule: JoinRule\n createdAt: string\n}\n\nconst hashJoinLinkView = 'joinLinkView'\n\nexport function isJoinLinkView<V>(v: V) {\n return is$typed(v, id, hashJoinLinkView)\n}\n\nexport function validateJoinLinkView<V>(v: V) {\n return validate<JoinLinkView & V>(v, id, hashJoinLinkView)\n}\n\n/** Preview that can be shown in feeds, including to unauthenticated viewers. */\nexport interface JoinLinkPreviewView {\n $type?: 'chat.bsky.group.defs#joinLinkPreviewView'\n convoId: string\n code: string\n name: string\n owner: ChatBskyActorDefs.ProfileViewBasic\n memberCount: number\n memberLimit: number\n requireApproval: boolean\n joinRule: JoinRule\n convo?: ChatBskyConvoDefs.ConvoView\n viewer?: JoinLinkViewerState\n}\n\nconst hashJoinLinkPreviewView = 'joinLinkPreviewView'\n\nexport function isJoinLinkPreviewView<V>(v: V) {\n return is$typed(v, id, hashJoinLinkPreviewView)\n}\n\nexport function validateJoinLinkPreviewView<V>(v: V) {\n return validate<JoinLinkPreviewView & V>(v, id, hashJoinLinkPreviewView)\n}\n\n/** Preview for a disabled join link. Carries only the code so clients can correlate with the input and render a disabled state. */\nexport interface DisabledJoinLinkPreviewView {\n $type?: 'chat.bsky.group.defs#disabledJoinLinkPreviewView'\n code: string\n}\n\nconst hashDisabledJoinLinkPreviewView = 'disabledJoinLinkPreviewView'\n\nexport function isDisabledJoinLinkPreviewView<V>(v: V) {\n return is$typed(v, id, hashDisabledJoinLinkPreviewView)\n}\n\nexport function validateDisabledJoinLinkPreviewView<V>(v: V) {\n return validate<DisabledJoinLinkPreviewView & V>(\n v,\n id,\n hashDisabledJoinLinkPreviewView,\n )\n}\n\n/** Preview for a join link code that does not map to an existing link. Carries only the code so clients can correlate with the input and render an invalid state. */\nexport interface InvalidJoinLinkPreviewView {\n $type?: 'chat.bsky.group.defs#invalidJoinLinkPreviewView'\n code: string\n}\n\nconst hashInvalidJoinLinkPreviewView = 'invalidJoinLinkPreviewView'\n\nexport function isInvalidJoinLinkPreviewView<V>(v: V) {\n return is$typed(v, id, hashInvalidJoinLinkPreviewView)\n}\n\nexport function validateInvalidJoinLinkPreviewView<V>(v: V) {\n return validate<InvalidJoinLinkPreviewView & V>(\n v,\n id,\n hashInvalidJoinLinkPreviewView,\n )\n}\n\nexport interface JoinLinkViewerState {\n $type?: 'chat.bsky.group.defs#joinLinkViewerState'\n requestedAt?: string\n}\n\nconst hashJoinLinkViewerState = 'joinLinkViewerState'\n\nexport function isJoinLinkViewerState<V>(v: V) {\n return is$typed(v, id, hashJoinLinkViewerState)\n}\n\nexport function validateJoinLinkViewerState<V>(v: V) {\n return validate<JoinLinkViewerState & V>(v, id, hashJoinLinkViewerState)\n}\n\n/** A join request from the perspective of the group owner. */\nexport interface JoinRequestView {\n $type?: 'chat.bsky.group.defs#joinRequestView'\n convoId: string\n requestedBy: ChatBskyActorDefs.ProfileViewBasic\n requestedAt: string\n}\n\nconst hashJoinRequestView = 'joinRequestView'\n\nexport function isJoinRequestView<V>(v: V) {\n return is$typed(v, id, hashJoinRequestView)\n}\n\nexport function validateJoinRequestView<V>(v: V) {\n return validate<JoinRequestView & V>(v, id, hashJoinRequestView)\n}\n\n/** A join request from the perspective of the requester, including enough group context to render the request in a list (e.g. group name, owner, member count). */\nexport interface JoinRequestConvoView {\n $type?: 'chat.bsky.group.defs#joinRequestConvoView'\n convoId: string\n name: string\n owner: ChatBskyActorDefs.ProfileViewBasic\n memberCount: number\n memberLimit: number\n viewer: JoinLinkViewerState\n}\n\nconst hashJoinRequestConvoView = 'joinRequestConvoView'\n\nexport function isJoinRequestConvoView<V>(v: V) {\n return is$typed(v, id, hashJoinRequestConvoView)\n}\n\nexport function validateJoinRequestConvoView<V>(v: V) {\n return validate<JoinRequestConvoView & V>(v, id, hashJoinRequestConvoView)\n}\n"]}
@@ -1,10 +1,13 @@
1
+ import { type $Typed } from '../../../../util.js';
1
2
  import type * as ChatBskyGroupDefs from './defs.js';
2
3
  export type QueryParams = {
3
4
  codes: string[];
4
5
  };
5
6
  export type InputSchema = undefined;
6
7
  export interface OutputSchema {
7
- joinLinkPreviews: ChatBskyGroupDefs.JoinLinkPreviewView[];
8
+ joinLinkPreviews: ($Typed<ChatBskyGroupDefs.JoinLinkPreviewView> | $Typed<ChatBskyGroupDefs.DisabledJoinLinkPreviewView> | $Typed<ChatBskyGroupDefs.InvalidJoinLinkPreviewView> | {
9
+ $type: string;
10
+ })[];
8
11
  }
9
12
  export type HandlerInput = void;
10
13
  export interface HandlerSuccess {
@@ -1 +1 @@
1
- {"version":3,"file":"getJoinLinkPreviews.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/getJoinLinkPreviews.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,iBAAiB,MAAM,WAAW,CAAA;AAMnD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,CAAA;CAC1D;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,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,CAAA"}
1
+ {"version":3,"file":"getJoinLinkPreviews.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/getJoinLinkPreviews.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,KAAK,iBAAiB,MAAM,WAAW,CAAA;AAMnD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,CACd,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAC7C,MAAM,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,GACrD,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,GACpD;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CACpB,EAAE,CAAA;CACJ;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,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,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getJoinLinkPreviews.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/getJoinLinkPreviews.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAEL,QAAQ,IAAI,SAAS,GAEtB,MAAM,qBAAqB,CAAA;AAG5B,MAAM,QAAQ,GAAG,SAAS,EACxB,QAAQ,GAAG,SAAS,CAAA;AACtB,MAAM,EAAE,GAAG,qCAAqC,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons.js'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util.js'\nimport type * as ChatBskyGroupDefs from './defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'chat.bsky.group.getJoinLinkPreviews'\n\nexport type QueryParams = {\n codes: string[]\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n joinLinkPreviews: ChatBskyGroupDefs.JoinLinkPreviewView[]\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
1
+ {"version":3,"file":"getJoinLinkPreviews.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/chat/bsky/group/getJoinLinkPreviews.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAEL,QAAQ,IAAI,SAAS,GAEtB,MAAM,qBAAqB,CAAA;AAG5B,MAAM,QAAQ,GAAG,SAAS,EACxB,QAAQ,GAAG,SAAS,CAAA;AACtB,MAAM,EAAE,GAAG,qCAAqC,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons.js'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util.js'\nimport type * as ChatBskyGroupDefs from './defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'chat.bsky.group.getJoinLinkPreviews'\n\nexport type QueryParams = {\n codes: string[]\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n joinLinkPreviews: (\n | $Typed<ChatBskyGroupDefs.JoinLinkPreviewView>\n | $Typed<ChatBskyGroupDefs.DisabledJoinLinkPreviewView>\n | $Typed<ChatBskyGroupDefs.InvalidJoinLinkPreviewView>\n | { $type: string }\n )[]\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
@@ -10,6 +10,11 @@ type SubjectInput = ReportInput['subject'] | ActionInput['subject'];
10
10
  type StrongRef = ComAtprotoRepoStrongRef.Main;
11
11
  type MessageRef = ChatBskyConvoDefs.MessageRef;
12
12
  type ConvoRef = ChatBskyConvoDefs.ConvoRef;
13
+ /**
14
+ * Cast subject input into ModSubject.
15
+ * @description Represents the subject types that can appear in the moderation event stream.
16
+ * NOTE: Downstream services should be updated to handle new subject types including appview.
17
+ */
13
18
  export declare const subjectFromInput: (subject: SubjectInput, blobs?: string[]) => ModSubject;
14
19
  export declare const subjectFromEventRow: (row: ModerationEventRow) => ModSubject;
15
20
  export declare const subjectFromStatusRow: (row: ModerationSubjectStatusRow) => ModSubject;
@@ -1 +1 @@
1
- {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/mod-service/subject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../src/mod-service/subject.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,11 @@ const isValidConvoRef = asPredicate(ChatBskyConvoDefs.validateConvoRef);
10
10
  const isMessageRefWithoutConvoId = (subject) => subject != null &&
11
11
  typeof subject === 'object' &&
12
12
  isValidMessageRef({ convoId: '', ...subject });
13
+ /**
14
+ * Cast subject input into ModSubject.
15
+ * @description Represents the subject types that can appear in the moderation event stream.
16
+ * NOTE: Downstream services should be updated to handle new subject types including appview.
17
+ */
13
18
  export const subjectFromInput = (subject, blobs) => {
14
19
  if (isRepoRef(subject)) {
15
20
  if (blobs && blobs.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/mod-service/subject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUri } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport * as ChatBskyConvoDefs from '../lexicon/types/chat/bsky/convo/defs.js'\nimport { RepoRef, isRepoRef } from '../lexicon/types/com/atproto/admin/defs.js'\nimport { InputSchema as ReportInput } from '../lexicon/types/com/atproto/moderation/createReport.js'\nimport * as ComAtprotoRepoStrongRef from '../lexicon/types/com/atproto/repo/strongRef.js'\nimport { InputSchema as ActionInput } from '../lexicon/types/tools/ozone/moderation/emitEvent.js'\nimport { $Typed, asPredicate } from '../lexicon/util.js'\nimport { ModerationEventRow, ModerationSubjectStatusRow } from './types.js'\n\ntype SubjectInput = ReportInput['subject'] | ActionInput['subject']\n\ntype StrongRef = ComAtprotoRepoStrongRef.Main\nconst isStrongRef = asPredicate(ComAtprotoRepoStrongRef.validateMain)\n\ntype MessageRef = ChatBskyConvoDefs.MessageRef\nconst isValidMessageRef = asPredicate(ChatBskyConvoDefs.validateMessageRef)\n\ntype ConvoRef = ChatBskyConvoDefs.ConvoRef\nconst isValidConvoRef = asPredicate(ChatBskyConvoDefs.validateConvoRef)\n\nconst isMessageRefWithoutConvoId = (\n subject: unknown,\n): subject is $Typed<Omit<MessageRef, 'convoId'> & { convoId?: string }> =>\n subject != null &&\n typeof subject === 'object' &&\n isValidMessageRef({ convoId: '', ...subject })\n\nexport const subjectFromInput = (\n subject: SubjectInput,\n blobs?: string[],\n): ModSubject => {\n if (isRepoRef(subject)) {\n if (blobs && blobs.length > 0) {\n throw new InvalidRequestError('Blobs do not apply to repo subjects')\n }\n return new RepoSubject(subject.did)\n }\n if (isStrongRef(subject)) {\n return new RecordSubject(subject.uri, subject.cid, blobs)\n }\n // @NOTE #messageRef is not a report input for com.atproto.moderation.createReport.\n // we are taking advantage of the open union in order for bsky.chat to interoperate here.\n if (isValidMessageRef(subject)) {\n return new MessageSubject(subject.did, subject.convoId, subject.messageId)\n }\n // @NOTE #convoRef is a new type for reporting entire conversations.\n // Similar to messageRef, we take advantage of the open union to support this.\n if (isValidConvoRef(subject)) {\n return new ConvoSubject(subject.did, subject.convoId)\n }\n // @TODO we should start to require subject.convoId is a string in order to properly validate\n // the #messageRef. temporarily allowing it to be optional as a stopgap for rollout.\n // The next \"if\" can be removed once convoId is consistently provided.\n if (isMessageRefWithoutConvoId(subject)) {\n return new MessageSubject(\n subject.did,\n subject.convoId ?? '',\n subject.messageId,\n )\n }\n\n throw new InvalidRequestError('Invalid subject')\n}\n\nexport const subjectFromEventRow = (row: ModerationEventRow): ModSubject => {\n if (\n row.subjectType === 'com.atproto.repo.strongRef' &&\n row.subjectUri &&\n row.subjectCid\n ) {\n return new RecordSubject(\n row.subjectUri,\n row.subjectCid,\n row.subjectBlobCids ?? [],\n )\n } else if (\n row.subjectType === 'chat.bsky.convo.defs#messageRef' &&\n row.subjectMessageId\n ) {\n const convoId =\n typeof row.meta?.['convoId'] === 'string' ? row.meta['convoId'] : ''\n return new MessageSubject(row.subjectDid, convoId, row.subjectMessageId)\n } else if (\n row.subjectType === 'chat.bsky.convo.defs#convoRef' &&\n row.subjectConvoId\n ) {\n return new ConvoSubject(row.subjectDid, row.subjectConvoId)\n } else {\n return new RepoSubject(row.subjectDid)\n }\n}\n\nexport const subjectFromStatusRow = (\n row: ModerationSubjectStatusRow,\n): ModSubject => {\n if (row.recordPath && row.recordCid) {\n // Not too intuitive but the recordpath is basically <collection>/<rkey>\n // which is what the last 2 params of .make() arguments are\n const uri = AtUri.make(row.did, ...row.recordPath.split('/')).toString()\n return new RecordSubject(uri.toString(), row.recordCid, row.blobCids ?? [])\n } else if (row.convoId) {\n // Conversation subject - restore from subject status row\n return new ConvoSubject(row.did, row.convoId)\n } else {\n return new RepoSubject(row.did)\n }\n}\n\ntype SubjectInfo = {\n subjectType:\n | 'com.atproto.admin.defs#repoRef'\n | 'com.atproto.repo.strongRef'\n | 'chat.bsky.convo.defs#messageRef'\n | 'chat.bsky.convo.defs#convoRef'\n subjectDid: string\n subjectUri: string | null\n subjectCid: string | null\n subjectBlobCids: string[] | null\n subjectMessageId: string | null\n subjectConvoId: string | null\n meta: Record<string, string | undefined> | null\n}\n\nexport interface ModSubject {\n did: string\n recordPath: string | undefined\n convoId: string | undefined\n blobCids?: string[]\n isRepo(): this is RepoSubject\n isRecord(): this is RecordSubject\n isMessage(): this is MessageSubject\n isConvo(): this is ConvoSubject\n info(): SubjectInfo\n lex():\n | $Typed<RepoRef>\n | $Typed<StrongRef>\n | $Typed<MessageRef>\n | $Typed<ConvoRef>\n}\n\nexport class RepoSubject implements ModSubject {\n blobCids = undefined\n recordPath = undefined\n convoId = undefined\n constructor(public did: string) {}\n isRepo(): this is RepoSubject {\n return true\n }\n isRecord(): this is RecordSubject {\n return false\n }\n isMessage(): this is MessageSubject {\n return false\n }\n isConvo(): this is ConvoSubject {\n return false\n }\n info() {\n return {\n subjectType: 'com.atproto.admin.defs#repoRef' as const,\n subjectDid: this.did,\n subjectUri: null,\n subjectCid: null,\n subjectBlobCids: null,\n subjectMessageId: null,\n subjectConvoId: null,\n meta: null,\n }\n }\n lex(): $Typed<RepoRef> {\n return {\n $type: 'com.atproto.admin.defs#repoRef',\n did: this.did,\n }\n }\n}\n\nexport class RecordSubject implements ModSubject {\n parsedUri: AtUri\n did: string\n recordPath: string\n convoId = undefined\n constructor(\n public uri: string,\n public cid: string,\n public blobCids?: string[],\n ) {\n this.parsedUri = new AtUri(uri)\n this.did = this.parsedUri.hostname\n this.recordPath = `${this.parsedUri.collection}/${this.parsedUri.rkey}`\n }\n isRepo(): this is RepoSubject {\n return false\n }\n isRecord(): this is RecordSubject {\n return true\n }\n isMessage(): this is MessageSubject {\n return false\n }\n isConvo(): this is ConvoSubject {\n return false\n }\n info() {\n return {\n subjectType: 'com.atproto.repo.strongRef' as const,\n subjectDid: this.did,\n subjectUri: this.uri,\n subjectCid: this.cid,\n subjectBlobCids: this.blobCids ?? [],\n subjectMessageId: null,\n subjectConvoId: null,\n meta: null,\n }\n }\n lex(): $Typed<StrongRef> {\n return {\n $type: 'com.atproto.repo.strongRef',\n uri: this.uri,\n cid: this.cid,\n }\n }\n}\n\nexport class MessageSubject implements ModSubject {\n blobCids = undefined\n recordPath = undefined\n constructor(\n public did: string,\n public convoId: string,\n public messageId: string,\n ) {}\n isRepo(): this is RepoSubject {\n return false\n }\n isRecord(): this is RecordSubject {\n return false\n }\n isMessage(): this is MessageSubject {\n return true\n }\n isConvo(): this is ConvoSubject {\n return false\n }\n info() {\n return {\n subjectType: 'chat.bsky.convo.defs#messageRef' as const,\n subjectDid: this.did,\n subjectUri: null,\n subjectCid: null,\n subjectBlobCids: null,\n subjectMessageId: this.messageId,\n subjectConvoId: this.convoId,\n meta: { convoId: this.convoId || undefined },\n }\n }\n lex(): $Typed<MessageRef> {\n return {\n $type: 'chat.bsky.convo.defs#messageRef',\n did: this.did,\n convoId: this.convoId,\n messageId: this.messageId,\n }\n }\n}\n\nexport class ConvoSubject implements ModSubject {\n blobCids = undefined\n recordPath = undefined\n constructor(\n public did: string,\n public convoId: string,\n ) {}\n isRepo(): this is RepoSubject {\n return false\n }\n isRecord(): this is RecordSubject {\n return false\n }\n isMessage(): this is MessageSubject {\n return false\n }\n isConvo(): this is ConvoSubject {\n return true\n }\n info() {\n return {\n subjectType: 'chat.bsky.convo.defs#convoRef' as const,\n subjectDid: this.did,\n subjectUri: null,\n subjectCid: null,\n subjectBlobCids: null,\n subjectMessageId: null,\n subjectConvoId: this.convoId,\n meta: { convoId: this.convoId || undefined },\n }\n }\n lex(): $Typed<ConvoRef> {\n return {\n $type: 'chat.bsky.convo.defs#convoRef',\n did: this.did,\n convoId: this.convoId,\n }\n }\n}\n"]}
1
+ {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../src/mod-service/subject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtUri } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport * as ChatBskyConvoDefs from '../lexicon/types/chat/bsky/convo/defs.js'\nimport { RepoRef, isRepoRef } from '../lexicon/types/com/atproto/admin/defs.js'\nimport { InputSchema as ReportInput } from '../lexicon/types/com/atproto/moderation/createReport.js'\nimport * as ComAtprotoRepoStrongRef from '../lexicon/types/com/atproto/repo/strongRef.js'\nimport { InputSchema as ActionInput } from '../lexicon/types/tools/ozone/moderation/emitEvent.js'\nimport { $Typed, asPredicate } from '../lexicon/util.js'\nimport { ModerationEventRow, ModerationSubjectStatusRow } from './types.js'\n\ntype SubjectInput = ReportInput['subject'] | ActionInput['subject']\n\ntype StrongRef = ComAtprotoRepoStrongRef.Main\nconst isStrongRef = asPredicate(ComAtprotoRepoStrongRef.validateMain)\n\ntype MessageRef = ChatBskyConvoDefs.MessageRef\nconst isValidMessageRef = asPredicate(ChatBskyConvoDefs.validateMessageRef)\n\ntype ConvoRef = ChatBskyConvoDefs.ConvoRef\nconst isValidConvoRef = asPredicate(ChatBskyConvoDefs.validateConvoRef)\n\nconst isMessageRefWithoutConvoId = (\n subject: unknown,\n): subject is $Typed<Omit<MessageRef, 'convoId'> & { convoId?: string }> =>\n subject != null &&\n typeof subject === 'object' &&\n isValidMessageRef({ convoId: '', ...subject })\n\n/**\n * Cast subject input into ModSubject.\n * @description Represents the subject types that can appear in the moderation event stream.\n * NOTE: Downstream services should be updated to handle new subject types including appview.\n */\nexport const subjectFromInput = (\n subject: SubjectInput,\n blobs?: string[],\n): ModSubject => {\n if (isRepoRef(subject)) {\n if (blobs && blobs.length > 0) {\n throw new InvalidRequestError('Blobs do not apply to repo subjects')\n }\n return new RepoSubject(subject.did)\n }\n if (isStrongRef(subject)) {\n return new RecordSubject(subject.uri, subject.cid, blobs)\n }\n // @NOTE #messageRef is not a report input for com.atproto.moderation.createReport.\n // we are taking advantage of the open union in order for bsky.chat to interoperate here.\n if (isValidMessageRef(subject)) {\n return new MessageSubject(subject.did, subject.convoId, subject.messageId)\n }\n // @NOTE #convoRef is a new type for reporting entire conversations.\n // Similar to messageRef, we take advantage of the open union to support this.\n if (isValidConvoRef(subject)) {\n return new ConvoSubject(subject.did, subject.convoId)\n }\n // @TODO we should start to require subject.convoId is a string in order to properly validate\n // the #messageRef. temporarily allowing it to be optional as a stopgap for rollout.\n // The next \"if\" can be removed once convoId is consistently provided.\n if (isMessageRefWithoutConvoId(subject)) {\n return new MessageSubject(\n subject.did,\n subject.convoId ?? '',\n subject.messageId,\n )\n }\n\n throw new InvalidRequestError('Invalid subject')\n}\n\nexport const subjectFromEventRow = (row: ModerationEventRow): ModSubject => {\n if (\n row.subjectType === 'com.atproto.repo.strongRef' &&\n row.subjectUri &&\n row.subjectCid\n ) {\n return new RecordSubject(\n row.subjectUri,\n row.subjectCid,\n row.subjectBlobCids ?? [],\n )\n } else if (\n row.subjectType === 'chat.bsky.convo.defs#messageRef' &&\n row.subjectMessageId\n ) {\n const convoId =\n typeof row.meta?.['convoId'] === 'string' ? row.meta['convoId'] : ''\n return new MessageSubject(row.subjectDid, convoId, row.subjectMessageId)\n } else if (\n row.subjectType === 'chat.bsky.convo.defs#convoRef' &&\n row.subjectConvoId\n ) {\n return new ConvoSubject(row.subjectDid, row.subjectConvoId)\n } else {\n return new RepoSubject(row.subjectDid)\n }\n}\n\nexport const subjectFromStatusRow = (\n row: ModerationSubjectStatusRow,\n): ModSubject => {\n if (row.recordPath && row.recordCid) {\n // Not too intuitive but the recordpath is basically <collection>/<rkey>\n // which is what the last 2 params of .make() arguments are\n const uri = AtUri.make(row.did, ...row.recordPath.split('/')).toString()\n return new RecordSubject(uri.toString(), row.recordCid, row.blobCids ?? [])\n } else if (row.convoId) {\n // Conversation subject - restore from subject status row\n return new ConvoSubject(row.did, row.convoId)\n } else {\n return new RepoSubject(row.did)\n }\n}\n\ntype SubjectInfo = {\n subjectType:\n | 'com.atproto.admin.defs#repoRef'\n | 'com.atproto.repo.strongRef'\n | 'chat.bsky.convo.defs#messageRef'\n | 'chat.bsky.convo.defs#convoRef'\n subjectDid: string\n subjectUri: string | null\n subjectCid: string | null\n subjectBlobCids: string[] | null\n subjectMessageId: string | null\n subjectConvoId: string | null\n meta: Record<string, string | undefined> | null\n}\n\nexport interface ModSubject {\n did: string\n recordPath: string | undefined\n convoId: string | undefined\n blobCids?: string[]\n isRepo(): this is RepoSubject\n isRecord(): this is RecordSubject\n isMessage(): this is MessageSubject\n isConvo(): this is ConvoSubject\n info(): SubjectInfo\n lex():\n | $Typed<RepoRef>\n | $Typed<StrongRef>\n | $Typed<MessageRef>\n | $Typed<ConvoRef>\n}\n\nexport class RepoSubject implements ModSubject {\n blobCids = undefined\n recordPath = undefined\n convoId = undefined\n constructor(public did: string) {}\n isRepo(): this is RepoSubject {\n return true\n }\n isRecord(): this is RecordSubject {\n return false\n }\n isMessage(): this is MessageSubject {\n return false\n }\n isConvo(): this is ConvoSubject {\n return false\n }\n info() {\n return {\n subjectType: 'com.atproto.admin.defs#repoRef' as const,\n subjectDid: this.did,\n subjectUri: null,\n subjectCid: null,\n subjectBlobCids: null,\n subjectMessageId: null,\n subjectConvoId: null,\n meta: null,\n }\n }\n lex(): $Typed<RepoRef> {\n return {\n $type: 'com.atproto.admin.defs#repoRef',\n did: this.did,\n }\n }\n}\n\nexport class RecordSubject implements ModSubject {\n parsedUri: AtUri\n did: string\n recordPath: string\n convoId = undefined\n constructor(\n public uri: string,\n public cid: string,\n public blobCids?: string[],\n ) {\n this.parsedUri = new AtUri(uri)\n this.did = this.parsedUri.hostname\n this.recordPath = `${this.parsedUri.collection}/${this.parsedUri.rkey}`\n }\n isRepo(): this is RepoSubject {\n return false\n }\n isRecord(): this is RecordSubject {\n return true\n }\n isMessage(): this is MessageSubject {\n return false\n }\n isConvo(): this is ConvoSubject {\n return false\n }\n info() {\n return {\n subjectType: 'com.atproto.repo.strongRef' as const,\n subjectDid: this.did,\n subjectUri: this.uri,\n subjectCid: this.cid,\n subjectBlobCids: this.blobCids ?? [],\n subjectMessageId: null,\n subjectConvoId: null,\n meta: null,\n }\n }\n lex(): $Typed<StrongRef> {\n return {\n $type: 'com.atproto.repo.strongRef',\n uri: this.uri,\n cid: this.cid,\n }\n }\n}\n\nexport class MessageSubject implements ModSubject {\n blobCids = undefined\n recordPath = undefined\n constructor(\n public did: string,\n public convoId: string,\n public messageId: string,\n ) {}\n isRepo(): this is RepoSubject {\n return false\n }\n isRecord(): this is RecordSubject {\n return false\n }\n isMessage(): this is MessageSubject {\n return true\n }\n isConvo(): this is ConvoSubject {\n return false\n }\n info() {\n return {\n subjectType: 'chat.bsky.convo.defs#messageRef' as const,\n subjectDid: this.did,\n subjectUri: null,\n subjectCid: null,\n subjectBlobCids: null,\n subjectMessageId: this.messageId,\n subjectConvoId: this.convoId,\n meta: { convoId: this.convoId || undefined },\n }\n }\n lex(): $Typed<MessageRef> {\n return {\n $type: 'chat.bsky.convo.defs#messageRef',\n did: this.did,\n convoId: this.convoId,\n messageId: this.messageId,\n }\n }\n}\n\nexport class ConvoSubject implements ModSubject {\n blobCids = undefined\n recordPath = undefined\n constructor(\n public did: string,\n public convoId: string,\n ) {}\n isRepo(): this is RepoSubject {\n return false\n }\n isRecord(): this is RecordSubject {\n return false\n }\n isMessage(): this is MessageSubject {\n return false\n }\n isConvo(): this is ConvoSubject {\n return true\n }\n info() {\n return {\n subjectType: 'chat.bsky.convo.defs#convoRef' as const,\n subjectDid: this.did,\n subjectUri: null,\n subjectCid: null,\n subjectBlobCids: null,\n subjectMessageId: null,\n subjectConvoId: this.convoId,\n meta: { convoId: this.convoId || undefined },\n }\n }\n lex(): $Typed<ConvoRef> {\n return {\n $type: 'chat.bsky.convo.defs#convoRef',\n did: this.did,\n convoId: this.convoId,\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/ozone",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "license": "MIT",
5
5
  "description": "Backend service for moderating the Bluesky network.",
6
6
  "keywords": [
@@ -33,13 +33,13 @@
33
33
  "uint8arrays": "^5.0.0",
34
34
  "undici": "^6.14.1",
35
35
  "ws": "^8.12.0",
36
+ "@atproto/api": "^0.20.11",
36
37
  "@atproto/common": "^0.6.1",
37
38
  "@atproto/crypto": "^0.5.0",
38
39
  "@atproto/identity": "^0.5.0",
39
40
  "@atproto/lexicon": "^0.7.1",
40
- "@atproto/api": "^0.20.8",
41
- "@atproto/syntax": "^0.6.1",
42
41
  "@atproto/ws-client": "^0.1.0",
42
+ "@atproto/syntax": "^0.6.1",
43
43
  "@atproto/xrpc": "^0.8.0",
44
44
  "@atproto/xrpc-server": "^0.11.1"
45
45
  },
@@ -55,7 +55,7 @@
55
55
  "ts-node": "^10.8.2",
56
56
  "typescript": "^6.0.3",
57
57
  "@atproto/lex-cli": "^0.10.0",
58
- "@atproto/pds": "^0.5.1"
58
+ "@atproto/pds": "^0.5.2"
59
59
  },
60
60
  "type": "module",
61
61
  "exports": {
@@ -0,0 +1,23 @@
1
+ import { InvalidRequestError } from '@atproto/xrpc-server'
2
+ import { AppContext } from '../../context.js'
3
+ import { Server } from '../../lexicon/index.js'
4
+ import { ids } from '../../lexicon/lexicons.js'
5
+
6
+ export default function (server: Server, ctx: AppContext) {
7
+ server.chat.bsky.moderation.getConvos({
8
+ auth: ctx.authVerifier.modOrAdminToken,
9
+ handler: async ({ params }) => {
10
+ if (!ctx.chatAgent) {
11
+ throw new InvalidRequestError('No chat agent configured')
12
+ }
13
+ const res = await ctx.chatAgent.api.chat.bsky.moderation.getConvos(
14
+ params,
15
+ await ctx.chatAuth(ids.ChatBskyModerationGetConvos),
16
+ )
17
+ return {
18
+ encoding: 'application/json',
19
+ body: res.data,
20
+ }
21
+ },
22
+ })
23
+ }
@@ -26,6 +26,11 @@ const isMessageRefWithoutConvoId = (
26
26
  typeof subject === 'object' &&
27
27
  isValidMessageRef({ convoId: '', ...subject })
28
28
 
29
+ /**
30
+ * Cast subject input into ModSubject.
31
+ * @description Represents the subject types that can appear in the moderation event stream.
32
+ * NOTE: Downstream services should be updated to handle new subject types including appview.
33
+ */
29
34
  export const subjectFromInput = (
30
35
  subject: SubjectInput,
31
36
  blobs?: string[],
@@ -3,7 +3,7 @@
3
3
  "compilerOptions": {
4
4
  "rootDir": "./src",
5
5
  "outDir": "./dist",
6
- "noUnusedLocals": false
6
+ "noUnusedLocals": false,
7
7
  },
8
- "include": ["./src"]
8
+ "include": ["./src"],
9
9
  }