@atproto/pds 0.5.2 → 0.5.4

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 (131) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/account-manager/account-manager.d.ts.map +1 -1
  3. package/dist/account-manager/account-manager.js +16 -19
  4. package/dist/account-manager/account-manager.js.map +1 -1
  5. package/dist/account-manager/oauth-store.d.ts.map +1 -1
  6. package/dist/account-manager/oauth-store.js +46 -26
  7. package/dist/account-manager/oauth-store.js.map +1 -1
  8. package/dist/api/com/atproto/admin/deleteAccount.d.ts.map +1 -1
  9. package/dist/api/com/atproto/admin/deleteAccount.js +9 -4
  10. package/dist/api/com/atproto/admin/deleteAccount.js.map +1 -1
  11. package/dist/api/com/atproto/admin/updateSubjectStatus.js +1 -1
  12. package/dist/api/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  13. package/dist/api/com/atproto/identity/submitPlcOperation.js +1 -1
  14. package/dist/api/com/atproto/identity/submitPlcOperation.js.map +1 -1
  15. package/dist/api/com/atproto/server/activateAccount.js +1 -3
  16. package/dist/api/com/atproto/server/activateAccount.js.map +1 -1
  17. package/dist/api/com/atproto/server/createAccount.d.ts.map +1 -1
  18. package/dist/api/com/atproto/server/createAccount.js +61 -45
  19. package/dist/api/com/atproto/server/createAccount.js.map +1 -1
  20. package/dist/api/com/atproto/server/deactivateAccount.js +1 -1
  21. package/dist/api/com/atproto/server/deactivateAccount.js.map +1 -1
  22. package/dist/api/com/atproto/server/deleteAccount.d.ts.map +1 -1
  23. package/dist/api/com/atproto/server/deleteAccount.js +9 -4
  24. package/dist/api/com/atproto/server/deleteAccount.js.map +1 -1
  25. package/dist/api/com/atproto/sync/getRepo.d.ts.map +1 -1
  26. package/dist/api/com/atproto/sync/getRepo.js +21 -9
  27. package/dist/api/com/atproto/sync/getRepo.js.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +4 -39
  30. package/dist/index.js.map +1 -1
  31. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts +4 -0
  32. package/dist/lexicons/chat/bsky/convo/defs.defs.d.ts.map +1 -1
  33. package/dist/lexicons/chat/bsky/convo/defs.defs.js +1 -0
  34. package/dist/lexicons/chat/bsky/convo/defs.defs.js.map +1 -1
  35. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.d.ts +3 -0
  36. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.d.ts.map +1 -0
  37. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts +23 -0
  38. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.d.ts.map +1 -0
  39. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js +19 -0
  40. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.defs.js.map +1 -0
  41. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.js +6 -0
  42. package/dist/lexicons/chat/bsky/convo/getUnreadCounts.js.map +1 -0
  43. package/dist/lexicons/chat/bsky/convo/unlockConvo.defs.d.ts +1 -1
  44. package/dist/lexicons/chat/bsky/convo/unlockConvo.defs.d.ts.map +1 -1
  45. package/dist/lexicons/chat/bsky/convo/unlockConvo.defs.js +1 -0
  46. package/dist/lexicons/chat/bsky/convo/unlockConvo.defs.js.map +1 -1
  47. package/dist/lexicons/chat/bsky/convo.d.ts +1 -0
  48. package/dist/lexicons/chat/bsky/convo.d.ts.map +1 -1
  49. package/dist/lexicons/chat/bsky/convo.js +1 -0
  50. package/dist/lexicons/chat/bsky/convo.js.map +1 -1
  51. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts +1 -1
  52. package/dist/lexicons/chat/bsky/embed/joinLink.defs.d.ts.map +1 -1
  53. package/dist/lexicons/chat/bsky/embed/joinLink.defs.js +5 -1
  54. package/dist/lexicons/chat/bsky/embed/joinLink.defs.js.map +1 -1
  55. package/dist/lexicons/chat/bsky/group/createGroup.defs.d.ts +5 -5
  56. package/dist/lexicons/chat/bsky/group/createGroup.defs.js +3 -3
  57. package/dist/lexicons/chat/bsky/group/createGroup.defs.js.map +1 -1
  58. package/dist/lexicons/chat/bsky/group/defs.defs.d.ts +26 -2
  59. package/dist/lexicons/chat/bsky/group/defs.defs.d.ts.map +1 -1
  60. package/dist/lexicons/chat/bsky/group/defs.defs.js +15 -2
  61. package/dist/lexicons/chat/bsky/group/defs.defs.js.map +1 -1
  62. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.d.ts +3 -3
  63. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.d.ts.map +1 -1
  64. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.js +6 -2
  65. package/dist/lexicons/chat/bsky/group/getJoinLinkPreviews.defs.js.map +1 -1
  66. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.d.ts +1 -1
  67. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.d.ts.map +1 -1
  68. package/dist/lexicons/chat/bsky/moderation/subscribeModEvents.defs.js.map +1 -1
  69. package/dist/lexicons/index.d.ts +1 -0
  70. package/dist/lexicons/index.d.ts.map +1 -1
  71. package/dist/lexicons/index.js +1 -0
  72. package/dist/lexicons/index.js.map +1 -1
  73. package/dist/lexicons/internal/bsky/actor/getProfiles.d.ts +3 -0
  74. package/dist/lexicons/internal/bsky/actor/getProfiles.d.ts.map +1 -0
  75. package/dist/lexicons/internal/bsky/actor/getProfiles.defs.d.ts +38 -0
  76. package/dist/lexicons/internal/bsky/actor/getProfiles.defs.d.ts.map +1 -0
  77. package/dist/lexicons/internal/bsky/actor/getProfiles.defs.js +26 -0
  78. package/dist/lexicons/internal/bsky/actor/getProfiles.defs.js.map +1 -0
  79. package/dist/lexicons/internal/bsky/actor/getProfiles.js +6 -0
  80. package/dist/lexicons/internal/bsky/actor/getProfiles.js.map +1 -0
  81. package/dist/lexicons/internal/bsky/actor.d.ts +2 -0
  82. package/dist/lexicons/internal/bsky/actor.d.ts.map +1 -0
  83. package/dist/lexicons/internal/bsky/actor.js +5 -0
  84. package/dist/lexicons/internal/bsky/actor.js.map +1 -0
  85. package/dist/lexicons/internal/bsky.d.ts +2 -0
  86. package/dist/lexicons/internal/bsky.d.ts.map +1 -0
  87. package/dist/lexicons/internal/bsky.js +5 -0
  88. package/dist/lexicons/internal/bsky.js.map +1 -0
  89. package/dist/lexicons/internal.d.ts +2 -0
  90. package/dist/lexicons/internal.d.ts.map +1 -0
  91. package/dist/lexicons/internal.js +5 -0
  92. package/dist/lexicons/internal.js.map +1 -0
  93. package/dist/rate-limits.d.ts +7 -0
  94. package/dist/rate-limits.d.ts.map +1 -0
  95. package/dist/rate-limits.js +50 -0
  96. package/dist/rate-limits.js.map +1 -0
  97. package/dist/scripts/publish-identity.js +1 -1
  98. package/dist/scripts/publish-identity.js.map +1 -1
  99. package/dist/scripts/rebuild-repo.js +1 -1
  100. package/dist/scripts/rebuild-repo.js.map +1 -1
  101. package/dist/scripts/rotate-keys.js +2 -2
  102. package/dist/scripts/rotate-keys.js.map +1 -1
  103. package/dist/scripts/sequencer-recovery/recoverer.js +7 -5
  104. package/dist/scripts/sequencer-recovery/recoverer.js.map +1 -1
  105. package/dist/sequencer/sequencer.d.ts +8 -6
  106. package/dist/sequencer/sequencer.d.ts.map +1 -1
  107. package/dist/sequencer/sequencer.js +40 -21
  108. package/dist/sequencer/sequencer.js.map +1 -1
  109. package/package.json +10 -10
  110. package/src/account-manager/account-manager.ts +26 -23
  111. package/src/account-manager/oauth-store.ts +55 -36
  112. package/src/api/com/atproto/admin/deleteAccount.ts +9 -7
  113. package/src/api/com/atproto/admin/updateSubjectStatus.ts +1 -1
  114. package/src/api/com/atproto/identity/submitPlcOperation.ts +1 -1
  115. package/src/api/com/atproto/server/activateAccount.ts +3 -3
  116. package/src/api/com/atproto/server/createAccount.ts +72 -63
  117. package/src/api/com/atproto/server/deactivateAccount.ts +1 -1
  118. package/src/api/com/atproto/server/deleteAccount.ts +9 -7
  119. package/src/api/com/atproto/sync/getRepo.ts +26 -9
  120. package/src/index.ts +3 -42
  121. package/src/rate-limits.ts +59 -0
  122. package/src/scripts/publish-identity.ts +1 -1
  123. package/src/scripts/rebuild-repo.ts +1 -1
  124. package/src/scripts/rotate-keys.ts +2 -2
  125. package/src/scripts/sequencer-recovery/recoverer.ts +9 -5
  126. package/src/sequencer/sequencer.ts +52 -23
  127. package/tests/account-manager.test.ts +78 -0
  128. package/tsconfig.build.json +2 -2
  129. package/tsconfig.build.tsbuildinfo +1 -1
  130. package/tsconfig.json +2 -2
  131. package/tsconfig.tests.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"subscribeModEvents.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/chat/bsky/moderation/subscribeModEvents.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\n\nconst $nsid = 'chat.bsky.moderation.subscribeModEvents'\n\nexport { $nsid }\n\nexport const $params = /*#__PURE__*/ l.params({\n cursor: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n})\n\nexport type $Params = l.InferOutput<typeof $params>\n\nexport const $message = /*#__PURE__*/ l.typedUnion(\n [\n /*#__PURE__*/ l.typedRef<EventConvoFirstMessage>(\n (() => eventConvoFirstMessage) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatCreated>(\n (() => eventGroupChatCreated) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatMemberAdded>(\n (() => eventGroupChatMemberAdded) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatMemberJoined>(\n (() => eventGroupChatMemberJoined) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatJoinRequest>(\n (() => eventGroupChatJoinRequest) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatJoinRequestApproved>(\n (() => eventGroupChatJoinRequestApproved) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatJoinRequestRejected>(\n (() => eventGroupChatJoinRequestRejected) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventChatAccepted>(\n (() => eventChatAccepted) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatMemberLeft>(\n (() => eventGroupChatMemberLeft) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatUpdated>(\n (() => eventGroupChatUpdated) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventRateLimitExceeded>(\n (() => eventRateLimitExceeded) as any,\n ),\n ],\n false,\n)\n\nexport type $Message = l.InferOutput<typeof $message>\n\n/** Subscribe to stream of chat events targeted to moderation. Private endpoint. */\nconst main = /*#__PURE__*/ l.subscription($nsid, $params, $message, [\n 'FutureCursor',\n 'ConsumerTooSlow',\n])\n\nexport { main }\n\nexport const $lxm = $nsid\n\n/** Fired when the first message was sent on a convo. */\ntype EventConvoFirstMessage = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventConvoFirstMessage'\n convoId: string\n createdAt: l.DatetimeString\n messageId?: string\n\n /**\n * The list of DIDs message recipients. Does not include the sender, which is in the `user` field\n */\n recipients: l.DidString[]\n rev: string\n\n /**\n * The DID of the message author.\n */\n user: l.DidString\n}\n\nexport type { EventConvoFirstMessage }\n\n/** Fired when the first message was sent on a convo. */\nconst eventConvoFirstMessage =\n /*#__PURE__*/ l.typedObject<EventConvoFirstMessage>(\n $nsid,\n 'eventConvoFirstMessage',\n /*#__PURE__*/ l.object({\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n messageId: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n recipients: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n rev: /*#__PURE__*/ l.string(),\n user: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventConvoFirstMessage }\n\n/** Fire when a group chat is created. */\ntype EventGroupChatCreated = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatCreated'\n\n /**\n * The DID of the actor performing the action. For this event, same as ownerDid.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n\n /**\n * The name set at creation time.\n */\n groupName: string\n\n /**\n * DIDs of everyone added at creation time.\n */\n initialMemberDids: l.DidString[]\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n}\n\nexport type { EventGroupChatCreated }\n\n/** Fire when a group chat is created. */\nconst eventGroupChatCreated =\n /*#__PURE__*/ l.typedObject<EventGroupChatCreated>(\n $nsid,\n 'eventGroupChatCreated',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n initialMemberDids: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n }),\n )\n\nexport { eventGroupChatCreated }\n\n/** Fired when a member is added to a group chat. Note that members are added in the 'request' state. */\ntype EventGroupChatMemberAdded = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberAdded'\n\n /**\n * The DID of the actor performing the action. For this event, same as ownerDid.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n\n /**\n * The number of members who have not yet accepted the convo.\n */\n requestMembersCount: number\n rev: string\n\n /**\n * The DID of the member who was added.\n */\n subjectDid: l.DidString\n\n /**\n * Whether the added member follows the group owner.\n */\n subjectFollowsOwner: boolean\n}\n\nexport type { EventGroupChatMemberAdded }\n\n/** Fired when a member is added to a group chat. Note that members are added in the 'request' state. */\nconst eventGroupChatMemberAdded =\n /*#__PURE__*/ l.typedObject<EventGroupChatMemberAdded>(\n $nsid,\n 'eventGroupChatMemberAdded',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n requestMembersCount: /*#__PURE__*/ l.integer(),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n subjectFollowsOwner: /*#__PURE__*/ l.boolean(),\n }),\n )\n\nexport { eventGroupChatMemberAdded }\n\n/** Fired when a member joins a group chat via an join link that does not require approval. */\ntype EventGroupChatMemberJoined = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberJoined'\n\n /**\n * The DID of the person joining.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The code of the join link used to join.\n */\n joinLinkCode: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * Whether the joining member follows the group owner.\n */\n subjectFollowsOwner: boolean\n}\n\nexport type { EventGroupChatMemberJoined }\n\n/** Fired when a member joins a group chat via an join link that does not require approval. */\nconst eventGroupChatMemberJoined =\n /*#__PURE__*/ l.typedObject<EventGroupChatMemberJoined>(\n $nsid,\n 'eventGroupChatMemberJoined',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n joinLinkCode: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectFollowsOwner: /*#__PURE__*/ l.boolean(),\n }),\n )\n\nexport { eventGroupChatMemberJoined }\n\n/** Fired when a user requests to join a group chat via an join link that requires approval. */\ntype EventGroupChatJoinRequest = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequest'\n\n /**\n * The DID of the person requesting to join.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The code of the join link used to request joining.\n */\n joinLinkCode: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * Whether the requesting member follows the group owner.\n */\n subjectFollowsOwner: boolean\n}\n\nexport type { EventGroupChatJoinRequest }\n\n/** Fired when a user requests to join a group chat via an join link that requires approval. */\nconst eventGroupChatJoinRequest =\n /*#__PURE__*/ l.typedObject<EventGroupChatJoinRequest>(\n $nsid,\n 'eventGroupChatJoinRequest',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n joinLinkCode: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectFollowsOwner: /*#__PURE__*/ l.boolean(),\n }),\n )\n\nexport { eventGroupChatJoinRequest }\n\n/** Fired when a join request is approved by the group owner. */\ntype EventGroupChatJoinRequestApproved = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestApproved'\n\n /**\n * The DID of the owner approving the request.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * The DID of the member whose request was approved.\n */\n subjectDid: l.DidString\n}\n\nexport type { EventGroupChatJoinRequestApproved }\n\n/** Fired when a join request is approved by the group owner. */\nconst eventGroupChatJoinRequestApproved =\n /*#__PURE__*/ l.typedObject<EventGroupChatJoinRequestApproved>(\n $nsid,\n 'eventGroupChatJoinRequestApproved',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventGroupChatJoinRequestApproved }\n\n/** Fired when a join request is rejected by the group owner. */\ntype EventGroupChatJoinRequestRejected = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestRejected'\n\n /**\n * The DID of the owner rejecting the request.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * The DID of the member whose request was rejected.\n */\n subjectDid: l.DidString\n}\n\nexport type { EventGroupChatJoinRequestRejected }\n\n/** Fired when a join request is rejected by the group owner. */\nconst eventGroupChatJoinRequestRejected =\n /*#__PURE__*/ l.typedObject<EventGroupChatJoinRequestRejected>(\n $nsid,\n 'eventGroupChatJoinRequestRejected',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventGroupChatJoinRequestRejected }\n\n/** Fired when a user accepts a chat convo, either explicitly or by sending a message. */\ntype EventChatAccepted = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventChatAccepted'\n\n /**\n * The DID of the person accepting the convo.\n */\n actorDid: l.DidString\n\n /**\n * When the convo was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event. Only present for group convos.\n */\n groupMemberCount?: number\n\n /**\n * The name of the group chat. Only present for group convos.\n */\n groupName?: string\n\n /**\n * How the convo was accepted.\n */\n method: 'explicit' | 'message' | l.UnknownString\n\n /**\n * The DID of the group chat owner. Only present for group convos.\n */\n ownerDid?: l.DidString\n rev: string\n}\n\nexport type { EventChatAccepted }\n\n/** Fired when a user accepts a chat convo, either explicitly or by sending a message. */\nconst eventChatAccepted = /*#__PURE__*/ l.typedObject<EventChatAccepted>(\n $nsid,\n 'eventChatAccepted',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n groupName: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n method: /*#__PURE__*/ l.string<{ knownValues: ['explicit', 'message'] }>(),\n ownerDid: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n rev: /*#__PURE__*/ l.string(),\n }),\n)\n\nexport { eventChatAccepted }\n\n/** Fired when a member leaves or is removed from a group chat. */\ntype EventGroupChatMemberLeft = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberLeft'\n\n /**\n * The DID of the actor. For voluntary: the person leaving. For kicked: the owner.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * How the member left.\n */\n leaveMethod: 'voluntary' | 'kicked' | l.UnknownString\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * The DID of the member who left or was removed.\n */\n subjectDid: l.DidString\n}\n\nexport type { EventGroupChatMemberLeft }\n\n/** Fired when a member leaves or is removed from a group chat. */\nconst eventGroupChatMemberLeft =\n /*#__PURE__*/ l.typedObject<EventGroupChatMemberLeft>(\n $nsid,\n 'eventGroupChatMemberLeft',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n leaveMethod: /*#__PURE__*/ l.string<{\n knownValues: ['voluntary', 'kicked']\n }>(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventGroupChatMemberLeft }\n\n/** Fired when a group chat's metadata or status changes. */\ntype EventGroupChatUpdated = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatUpdated'\n\n /**\n * The DID of the actor performing the action (the owner).\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n\n /**\n * Current group name.\n */\n groupName: string\n\n /**\n * The code of the join link. Only present when updateType is join-link-related.\n */\n joinLinkCode?: string\n\n /**\n * Whether the join link is restricted to followers of the owner. Only present when updateType is join-link-related.\n */\n joinLinkFollowersOnly?: boolean\n\n /**\n * Whether the join link requires owner approval to join. Only present when updateType is join-link-related.\n */\n joinLinkRequiresApproval?: boolean\n\n /**\n * Why the group was locked. Only present when updateType is 'locked'.\n */\n lockReason?:\n | 'owner_action'\n | 'owner_left'\n | 'owner_deactivated'\n | 'owner_deleted'\n | 'owner_suspended'\n | 'owner_taken_down'\n | 'label_applied'\n | l.UnknownString\n\n /**\n * The new group name. Only present when updateType is 'name_changed'.\n */\n newName?: string\n\n /**\n * The previous group name. Only present when updateType is 'name_changed'.\n */\n oldName?: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * What changed.\n */\n updateType:\n | 'name_changed'\n | 'locked'\n | 'locked_permanently'\n | 'unlocked'\n | 'join_link_created'\n | 'join_link_disabled'\n | 'join_link_settings_changed'\n | l.UnknownString\n}\n\nexport type { EventGroupChatUpdated }\n\n/** Fired when a group chat's metadata or status changes. */\nconst eventGroupChatUpdated =\n /*#__PURE__*/ l.typedObject<EventGroupChatUpdated>(\n $nsid,\n 'eventGroupChatUpdated',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n joinLinkCode: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n joinLinkFollowersOnly: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.boolean(),\n ),\n joinLinkRequiresApproval: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.boolean(),\n ),\n lockReason: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: [\n 'owner_action',\n 'owner_left',\n 'owner_deactivated',\n 'owner_deleted',\n 'owner_suspended',\n 'owner_taken_down',\n 'label_applied',\n ]\n }>(),\n ),\n newName: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n oldName: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n updateType: /*#__PURE__*/ l.string<{\n knownValues: [\n 'name_changed',\n 'locked',\n 'locked_permanently',\n 'unlocked',\n 'join_link_created',\n 'join_link_disabled',\n 'join_link_settings_changed',\n ]\n }>(),\n }),\n )\n\nexport { eventGroupChatUpdated }\n\n/** Fired when a user exceeds a rate limit. */\ntype EventRateLimitExceeded = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventRateLimitExceeded'\n\n /**\n * The DID of the user who hit the rate limit.\n */\n actorDid: l.DidString\n createdAt: l.DatetimeString\n\n /**\n * The NSID of the endpoint that was rate limited.\n */\n endpoint: string\n rev: string\n}\n\nexport type { EventRateLimitExceeded }\n\n/** Fired when a user exceeds a rate limit. */\nconst eventRateLimitExceeded =\n /*#__PURE__*/ l.typedObject<EventRateLimitExceeded>(\n $nsid,\n 'eventRateLimitExceeded',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n endpoint: /*#__PURE__*/ l.string(),\n rev: /*#__PURE__*/ l.string(),\n }),\n )\n\nexport { eventRateLimitExceeded }\n"]}
1
+ {"version":3,"file":"subscribeModEvents.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/chat/bsky/moderation/subscribeModEvents.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\n\nconst $nsid = 'chat.bsky.moderation.subscribeModEvents'\n\nexport { $nsid }\n\nexport const $params = /*#__PURE__*/ l.params({\n cursor: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n})\n\nexport type $Params = l.InferOutput<typeof $params>\n\nexport const $message = /*#__PURE__*/ l.typedUnion(\n [\n /*#__PURE__*/ l.typedRef<EventConvoFirstMessage>(\n (() => eventConvoFirstMessage) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatCreated>(\n (() => eventGroupChatCreated) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatMemberAdded>(\n (() => eventGroupChatMemberAdded) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatMemberJoined>(\n (() => eventGroupChatMemberJoined) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatJoinRequest>(\n (() => eventGroupChatJoinRequest) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatJoinRequestApproved>(\n (() => eventGroupChatJoinRequestApproved) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatJoinRequestRejected>(\n (() => eventGroupChatJoinRequestRejected) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventChatAccepted>(\n (() => eventChatAccepted) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatMemberLeft>(\n (() => eventGroupChatMemberLeft) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventGroupChatUpdated>(\n (() => eventGroupChatUpdated) as any,\n ),\n /*#__PURE__*/ l.typedRef<EventRateLimitExceeded>(\n (() => eventRateLimitExceeded) as any,\n ),\n ],\n false,\n)\n\nexport type $Message = l.InferOutput<typeof $message>\n\n/** Subscribe to stream of chat events targeted to moderation. Private endpoint. */\nconst main = /*#__PURE__*/ l.subscription($nsid, $params, $message, [\n 'FutureCursor',\n 'ConsumerTooSlow',\n])\n\nexport { main }\n\nexport const $lxm = $nsid\n\n/** Fired when the first message was sent on a convo. */\ntype EventConvoFirstMessage = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventConvoFirstMessage'\n convoId: string\n createdAt: l.DatetimeString\n messageId?: string\n\n /**\n * The list of DIDs message recipients. Does not include the sender, which is in the `user` field\n */\n recipients: l.DidString[]\n rev: string\n\n /**\n * The DID of the message author.\n */\n user: l.DidString\n}\n\nexport type { EventConvoFirstMessage }\n\n/** Fired when the first message was sent on a convo. */\nconst eventConvoFirstMessage =\n /*#__PURE__*/ l.typedObject<EventConvoFirstMessage>(\n $nsid,\n 'eventConvoFirstMessage',\n /*#__PURE__*/ l.object({\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n messageId: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n recipients: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n rev: /*#__PURE__*/ l.string(),\n user: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventConvoFirstMessage }\n\n/** Fire when a group chat is created. */\ntype EventGroupChatCreated = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatCreated'\n\n /**\n * The DID of the actor performing the action. For this event, same as ownerDid.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n\n /**\n * The name set at creation time.\n */\n groupName: string\n\n /**\n * DIDs of everyone added at creation time.\n */\n initialMemberDids: l.DidString[]\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n}\n\nexport type { EventGroupChatCreated }\n\n/** Fire when a group chat is created. */\nconst eventGroupChatCreated =\n /*#__PURE__*/ l.typedObject<EventGroupChatCreated>(\n $nsid,\n 'eventGroupChatCreated',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n initialMemberDids: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n }),\n )\n\nexport { eventGroupChatCreated }\n\n/** Fired when a member is added to a group chat. Note that members are added in the 'request' state. */\ntype EventGroupChatMemberAdded = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberAdded'\n\n /**\n * The DID of the actor performing the action. For this event, same as ownerDid.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n\n /**\n * The number of members who have not yet accepted the convo.\n */\n requestMembersCount: number\n rev: string\n\n /**\n * The DID of the member who was added.\n */\n subjectDid: l.DidString\n\n /**\n * Whether the added member follows the group owner.\n */\n subjectFollowsOwner: boolean\n}\n\nexport type { EventGroupChatMemberAdded }\n\n/** Fired when a member is added to a group chat. Note that members are added in the 'request' state. */\nconst eventGroupChatMemberAdded =\n /*#__PURE__*/ l.typedObject<EventGroupChatMemberAdded>(\n $nsid,\n 'eventGroupChatMemberAdded',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n requestMembersCount: /*#__PURE__*/ l.integer(),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n subjectFollowsOwner: /*#__PURE__*/ l.boolean(),\n }),\n )\n\nexport { eventGroupChatMemberAdded }\n\n/** Fired when a member joins a group chat via an join link that does not require approval. */\ntype EventGroupChatMemberJoined = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberJoined'\n\n /**\n * The DID of the person joining.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The code of the join link used to join.\n */\n joinLinkCode: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * Whether the joining member follows the group owner.\n */\n subjectFollowsOwner: boolean\n}\n\nexport type { EventGroupChatMemberJoined }\n\n/** Fired when a member joins a group chat via an join link that does not require approval. */\nconst eventGroupChatMemberJoined =\n /*#__PURE__*/ l.typedObject<EventGroupChatMemberJoined>(\n $nsid,\n 'eventGroupChatMemberJoined',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n joinLinkCode: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectFollowsOwner: /*#__PURE__*/ l.boolean(),\n }),\n )\n\nexport { eventGroupChatMemberJoined }\n\n/** Fired when a user requests to join a group chat via an join link that requires approval. */\ntype EventGroupChatJoinRequest = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequest'\n\n /**\n * The DID of the person requesting to join.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The code of the join link used to request joining.\n */\n joinLinkCode: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * Whether the requesting member follows the group owner.\n */\n subjectFollowsOwner: boolean\n}\n\nexport type { EventGroupChatJoinRequest }\n\n/** Fired when a user requests to join a group chat via an join link that requires approval. */\nconst eventGroupChatJoinRequest =\n /*#__PURE__*/ l.typedObject<EventGroupChatJoinRequest>(\n $nsid,\n 'eventGroupChatJoinRequest',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n joinLinkCode: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectFollowsOwner: /*#__PURE__*/ l.boolean(),\n }),\n )\n\nexport { eventGroupChatJoinRequest }\n\n/** Fired when a join request is approved by the group owner. */\ntype EventGroupChatJoinRequestApproved = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestApproved'\n\n /**\n * The DID of the owner approving the request.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * The DID of the member whose request was approved.\n */\n subjectDid: l.DidString\n}\n\nexport type { EventGroupChatJoinRequestApproved }\n\n/** Fired when a join request is approved by the group owner. */\nconst eventGroupChatJoinRequestApproved =\n /*#__PURE__*/ l.typedObject<EventGroupChatJoinRequestApproved>(\n $nsid,\n 'eventGroupChatJoinRequestApproved',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventGroupChatJoinRequestApproved }\n\n/** Fired when a join request is rejected by the group owner. */\ntype EventGroupChatJoinRequestRejected = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatJoinRequestRejected'\n\n /**\n * The DID of the owner rejecting the request.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * The DID of the member whose request was rejected.\n */\n subjectDid: l.DidString\n}\n\nexport type { EventGroupChatJoinRequestRejected }\n\n/** Fired when a join request is rejected by the group owner. */\nconst eventGroupChatJoinRequestRejected =\n /*#__PURE__*/ l.typedObject<EventGroupChatJoinRequestRejected>(\n $nsid,\n 'eventGroupChatJoinRequestRejected',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventGroupChatJoinRequestRejected }\n\n/** Fired when a user accepts a chat convo, either explicitly or by sending a message. */\ntype EventChatAccepted = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventChatAccepted'\n\n /**\n * The DID of the person accepting the convo.\n */\n actorDid: l.DidString\n\n /**\n * When the convo was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event. Only present for group convos.\n */\n groupMemberCount?: number\n\n /**\n * The name of the group chat. Only present for group convos.\n */\n groupName?: string\n\n /**\n * How the convo was accepted.\n */\n method: 'explicit' | 'message' | l.UnknownString\n\n /**\n * The DID of the group chat owner. Only present for group convos.\n */\n ownerDid?: l.DidString\n rev: string\n}\n\nexport type { EventChatAccepted }\n\n/** Fired when a user accepts a chat convo, either explicitly or by sending a message. */\nconst eventChatAccepted = /*#__PURE__*/ l.typedObject<EventChatAccepted>(\n $nsid,\n 'eventChatAccepted',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\n groupName: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n method: /*#__PURE__*/ l.string<{ knownValues: ['explicit', 'message'] }>(),\n ownerDid: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string({ format: 'did' }),\n ),\n rev: /*#__PURE__*/ l.string(),\n }),\n)\n\nexport { eventChatAccepted }\n\n/** Fired when a member leaves or is removed from a group chat. */\ntype EventGroupChatMemberLeft = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatMemberLeft'\n\n /**\n * The DID of the actor. For voluntary: the person leaving. For kicked: the owner.\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n groupName: string\n\n /**\n * How the member left.\n */\n leaveMethod: 'voluntary' | 'kicked' | l.UnknownString\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * The DID of the member who left or was removed.\n */\n subjectDid: l.DidString\n}\n\nexport type { EventGroupChatMemberLeft }\n\n/** Fired when a member leaves or is removed from a group chat. */\nconst eventGroupChatMemberLeft =\n /*#__PURE__*/ l.typedObject<EventGroupChatMemberLeft>(\n $nsid,\n 'eventGroupChatMemberLeft',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n leaveMethod: /*#__PURE__*/ l.string<{\n knownValues: ['voluntary', 'kicked']\n }>(),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n subjectDid: /*#__PURE__*/ l.string({ format: 'did' }),\n }),\n )\n\nexport { eventGroupChatMemberLeft }\n\n/** Fired when a group chat's metadata or status changes. */\ntype EventGroupChatUpdated = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventGroupChatUpdated'\n\n /**\n * The DID of the actor performing the action (the owner).\n */\n actorDid: l.DidString\n\n /**\n * When the group was originally created.\n */\n convoCreatedAt: l.DatetimeString\n convoId: string\n createdAt: l.DatetimeString\n\n /**\n * Current member count at the time of the event.\n */\n groupMemberCount: number\n\n /**\n * Current group name.\n */\n groupName: string\n\n /**\n * The code of the join link. Only present when updateType is join-link-related.\n */\n joinLinkCode?: string\n\n /**\n * Whether the join link is restricted to followers of the owner. Only present when updateType is join-link-related.\n */\n joinLinkFollowersOnly?: boolean\n\n /**\n * Whether the join link requires owner approval to join. Only present when updateType is join-link-related.\n */\n joinLinkRequiresApproval?: boolean\n\n /**\n * Why the group was locked. Only present when updateType is 'locked'.\n */\n lockReason?:\n | 'owner_action'\n | 'owner_left'\n | 'owner_deactivated'\n | 'owner_deleted'\n | 'owner_suspended'\n | 'owner_taken_down'\n | 'label_applied'\n | 'convo_taken_down'\n | l.UnknownString\n\n /**\n * The new group name. Only present when updateType is 'name_changed'.\n */\n newName?: string\n\n /**\n * The previous group name. Only present when updateType is 'name_changed'.\n */\n oldName?: string\n\n /**\n * The DID of the group chat owner.\n */\n ownerDid: l.DidString\n rev: string\n\n /**\n * What changed.\n */\n updateType:\n | 'name_changed'\n | 'locked'\n | 'locked_permanently'\n | 'unlocked'\n | 'join_link_created'\n | 'join_link_disabled'\n | 'join_link_settings_changed'\n | l.UnknownString\n}\n\nexport type { EventGroupChatUpdated }\n\n/** Fired when a group chat's metadata or status changes. */\nconst eventGroupChatUpdated =\n /*#__PURE__*/ l.typedObject<EventGroupChatUpdated>(\n $nsid,\n 'eventGroupChatUpdated',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n convoCreatedAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n convoId: /*#__PURE__*/ l.string(),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n groupMemberCount: /*#__PURE__*/ l.integer(),\n groupName: /*#__PURE__*/ l.string(),\n joinLinkCode: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n joinLinkFollowersOnly: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.boolean(),\n ),\n joinLinkRequiresApproval: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.boolean(),\n ),\n lockReason: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.string<{\n knownValues: [\n 'owner_action',\n 'owner_left',\n 'owner_deactivated',\n 'owner_deleted',\n 'owner_suspended',\n 'owner_taken_down',\n 'label_applied',\n 'convo_taken_down',\n ]\n }>(),\n ),\n newName: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n oldName: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\n ownerDid: /*#__PURE__*/ l.string({ format: 'did' }),\n rev: /*#__PURE__*/ l.string(),\n updateType: /*#__PURE__*/ l.string<{\n knownValues: [\n 'name_changed',\n 'locked',\n 'locked_permanently',\n 'unlocked',\n 'join_link_created',\n 'join_link_disabled',\n 'join_link_settings_changed',\n ]\n }>(),\n }),\n )\n\nexport { eventGroupChatUpdated }\n\n/** Fired when a user exceeds a rate limit. */\ntype EventRateLimitExceeded = {\n $type?: 'chat.bsky.moderation.subscribeModEvents#eventRateLimitExceeded'\n\n /**\n * The DID of the user who hit the rate limit.\n */\n actorDid: l.DidString\n createdAt: l.DatetimeString\n\n /**\n * The NSID of the endpoint that was rate limited.\n */\n endpoint: string\n rev: string\n}\n\nexport type { EventRateLimitExceeded }\n\n/** Fired when a user exceeds a rate limit. */\nconst eventRateLimitExceeded =\n /*#__PURE__*/ l.typedObject<EventRateLimitExceeded>(\n $nsid,\n 'eventRateLimitExceeded',\n /*#__PURE__*/ l.object({\n actorDid: /*#__PURE__*/ l.string({ format: 'did' }),\n createdAt: /*#__PURE__*/ l.string({ format: 'datetime' }),\n endpoint: /*#__PURE__*/ l.string(),\n rev: /*#__PURE__*/ l.string(),\n }),\n )\n\nexport { eventRateLimitExceeded }\n"]}
@@ -1,5 +1,6 @@
1
1
  export * as app from './app.js';
2
2
  export * as com from './com.js';
3
+ export * as internal from './internal.js';
3
4
  export * as site from './site.js';
4
5
  export * as tools from './tools.js';
5
6
  export * as chat from './chat.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexicons/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexicons/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export * as app from './app.js';
5
5
  export * as com from './com.js';
6
+ export * as internal from './internal.js';
6
7
  export * as site from './site.js';
7
8
  export * as tools from './tools.js';
8
9
  export * as chat from './chat.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lexicons/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nexport * as app from './app.js'\nexport * as com from './com.js'\nexport * as site from './site.js'\nexport * as tools from './tools.js'\nexport * as chat from './chat.js'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lexicons/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nexport * as app from './app.js'\nexport * as com from './com.js'\nexport * as internal from './internal.js'\nexport * as site from './site.js'\nexport * as tools from './tools.js'\nexport * as chat from './chat.js'\n"]}
@@ -0,0 +1,3 @@
1
+ export * from './getProfiles.defs.js';
2
+ export { main as default } from './getProfiles.defs.js';
3
+ //# sourceMappingURL=getProfiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProfiles.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/internal/bsky/actor/getProfiles.ts"],"names":[],"mappings":"AAIA,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { l } from '@atproto/lex';
2
+ import * as ActorDefs from '../../../app/bsky/actor/defs.defs.js';
3
+ declare const $nsid = "internal.bsky.actor.getProfiles";
4
+ export { $nsid };
5
+ export declare const $params: l.ParamsSchema<{
6
+ readonly dids: l.ArraySchema<l.StringSchema<{
7
+ readonly format: "did";
8
+ }>>;
9
+ readonly viewer: l.OptionalSchema<l.StringSchema<{
10
+ readonly format: "did";
11
+ }>>;
12
+ readonly socialProof: l.OptionalSchema<l.ArraySchema<l.StringSchema<{
13
+ readonly format: "did";
14
+ }>>>;
15
+ }>;
16
+ export type $Params = l.InferOutput<typeof $params>;
17
+ export declare const $output: l.Payload<"application/json", l.ObjectSchema<{
18
+ profiles: l.ArraySchema<l.RefSchema<l.Validator<ActorDefs.ProfileViewDetailed, ActorDefs.ProfileViewDetailed>>>;
19
+ }>>;
20
+ export type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;
21
+ export type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;
22
+ /** Get detailed profile views of multiple actors, hydrating social proof (known followers) only for a subset of them. Intended for internal service-to-service use. */
23
+ declare const main: l.Query<"internal.bsky.actor.getProfiles", l.ParamsSchema<{
24
+ readonly dids: l.ArraySchema<l.StringSchema<{
25
+ readonly format: "did";
26
+ }>>;
27
+ readonly viewer: l.OptionalSchema<l.StringSchema<{
28
+ readonly format: "did";
29
+ }>>;
30
+ readonly socialProof: l.OptionalSchema<l.ArraySchema<l.StringSchema<{
31
+ readonly format: "did";
32
+ }>>>;
33
+ }>, l.Payload<"application/json", l.ObjectSchema<{
34
+ profiles: l.ArraySchema<l.RefSchema<l.Validator<ActorDefs.ProfileViewDetailed, ActorDefs.ProfileViewDetailed>>>;
35
+ }>>, undefined>;
36
+ export { main };
37
+ export declare const $lxm = "internal.bsky.actor.getProfiles";
38
+ //# sourceMappingURL=getProfiles.defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProfiles.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/internal/bsky/actor/getProfiles.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAChC,OAAO,KAAK,SAAS,MAAM,sCAAsC,CAAA;AAEjE,QAAA,MAAM,KAAK,oCAAoC,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,eAAO,MAAM,OAAO;;;;;;;;;;EAUlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAA;AAEnD,eAAO,MAAM,OAAO;;GAMlB,CAAA;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAA;AACzE,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAC5D,OAAO,OAAO,EACd,CAAC,CACF,CAAA;AAED,uKAAuK;AACvK,QAAA,MAAM,IAAI;;;;;;;;;;;;eAAiD,CAAA;AAE3D,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,eAAO,MAAM,IAAI,oCAAQ,CAAA"}
@@ -0,0 +1,26 @@
1
+ /*
2
+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
3
+ */
4
+ import { l } from '@atproto/lex';
5
+ import * as ActorDefs from '../../../app/bsky/actor/defs.defs.js';
6
+ const $nsid = 'internal.bsky.actor.getProfiles';
7
+ export { $nsid };
8
+ export const $params = /*#__PURE__*/ l.params({
9
+ dids: /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'did' }), {
10
+ maxLength: 200,
11
+ }),
12
+ viewer: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ format: 'did' })),
13
+ socialProof: /*#__PURE__*/ l.optional(
14
+ /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'did' }), {
15
+ maxLength: 200,
16
+ })),
17
+ });
18
+ export const $output = /*#__PURE__*/ l.jsonPayload({
19
+ profiles: /*#__PURE__*/ l.array(
20
+ /*#__PURE__*/ l.ref((() => ActorDefs.profileViewDetailed))),
21
+ });
22
+ /** Get detailed profile views of multiple actors, hydrating social proof (known followers) only for a subset of them. Intended for internal service-to-service use. */
23
+ const main = /*#__PURE__*/ l.query($nsid, $params, $output);
24
+ export { main };
25
+ export const $lxm = $nsid;
26
+ //# sourceMappingURL=getProfiles.defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProfiles.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/internal/bsky/actor/getProfiles.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAChC,OAAO,KAAK,SAAS,MAAM,sCAAsC,CAAA;AAEjE,MAAM,KAAK,GAAG,iCAAiC,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,CAAA;AAEhB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;QACrE,SAAS,EAAE,GAAG;KACf,CAAC;IACF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ;IACnC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;QAC/D,SAAS,EAAE,GAAG;KACf,CAAC,CACH;CACF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;IACjD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK;IAC7B,aAAa,CAAC,CAAC,CAAC,GAAG,CACjB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,mBAAmB,CAAQ,CAC7C,CACF;CACF,CAAC,CAAA;AAQF,uKAAuK;AACvK,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAE3D,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from '@atproto/lex'\nimport * as ActorDefs from '../../../app/bsky/actor/defs.defs.js'\n\nconst $nsid = 'internal.bsky.actor.getProfiles'\n\nexport { $nsid }\n\nexport const $params = /*#__PURE__*/ l.params({\n dids: /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'did' }), {\n maxLength: 200,\n }),\n viewer: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ format: 'did' })),\n socialProof: /*#__PURE__*/ l.optional(\n /*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ format: 'did' }), {\n maxLength: 200,\n }),\n ),\n})\n\nexport type $Params = l.InferOutput<typeof $params>\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\n profiles: /*#__PURE__*/ l.array(\n /*#__PURE__*/ l.ref<ActorDefs.ProfileViewDetailed>(\n (() => ActorDefs.profileViewDetailed) as any,\n ),\n ),\n})\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<\n typeof $output,\n B\n>\n\n/** Get detailed profile views of multiple actors, hydrating social proof (known followers) only for a subset of them. Intended for internal service-to-service use. */\nconst main = /*#__PURE__*/ l.query($nsid, $params, $output)\n\nexport { main }\n\nexport const $lxm = $nsid\n"]}
@@ -0,0 +1,6 @@
1
+ /*
2
+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
3
+ */
4
+ export * from './getProfiles.defs.js';
5
+ export { main as default } from './getProfiles.defs.js';
6
+ //# sourceMappingURL=getProfiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProfiles.js","sourceRoot":"","sources":["../../../../../src/lexicons/internal/bsky/actor/getProfiles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nexport * from './getProfiles.defs.js'\nexport { main as default } from './getProfiles.defs.js'\n"]}
@@ -0,0 +1,2 @@
1
+ export * as getProfiles from './actor/getProfiles.js';
2
+ //# sourceMappingURL=actor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../../../src/lexicons/internal/bsky/actor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
3
+ */
4
+ export * as getProfiles from './actor/getProfiles.js';
5
+ //# sourceMappingURL=actor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor.js","sourceRoot":"","sources":["../../../../src/lexicons/internal/bsky/actor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nexport * as getProfiles from './actor/getProfiles.js'\n"]}
@@ -0,0 +1,2 @@
1
+ export * as actor from './bsky/actor.js';
2
+ //# sourceMappingURL=bsky.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bsky.d.ts","sourceRoot":"","sources":["../../../src/lexicons/internal/bsky.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
3
+ */
4
+ export * as actor from './bsky/actor.js';
5
+ //# sourceMappingURL=bsky.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bsky.js","sourceRoot":"","sources":["../../../src/lexicons/internal/bsky.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nexport * as actor from './bsky/actor.js'\n"]}
@@ -0,0 +1,2 @@
1
+ export * as bsky from './internal/bsky.js';
2
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/lexicons/internal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /*
2
+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
3
+ */
4
+ export * as bsky from './internal/bsky.js';
5
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/lexicons/internal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nexport * as bsky from './internal/bsky.js'\n"]}
@@ -0,0 +1,7 @@
1
+ import type { Redis } from 'ioredis';
2
+ import type { Options } from '@atproto/xrpc-server';
3
+ import type { RateLimitsConfig } from './config/index.js';
4
+ type RateLimitDescriptions = NonNullable<Options['rateLimits']>;
5
+ export declare const buildRateLimitsConfig: (rateLimits: RateLimitsConfig, redisScratch?: Redis) => RateLimitDescriptions | undefined;
6
+ export {};
7
+ //# sourceMappingURL=rate-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limits.d.ts","sourceRoot":"","sources":["../src/rate-limits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,KAAK,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;AAI/D,eAAO,MAAM,qBAAqB,GAChC,YAAY,gBAAgB,EAC5B,eAAe,KAAK,KACnB,qBAAqB,GAAG,SA6C1B,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { DAY, HOUR, MINUTE } from '@atproto/common';
2
+ import { MemoryRateLimiter, RedisRateLimiter } from '@atproto/xrpc-server';
3
+ const SYNC_GET_REPO_PATH = '/xrpc/com.atproto.sync.getRepo';
4
+ export const buildRateLimitsConfig = (rateLimits, redisScratch) => {
5
+ if (!rateLimits.enabled)
6
+ return undefined;
7
+ return {
8
+ creator: redisScratch
9
+ ? (opts) => new RedisRateLimiter(redisScratch, opts)
10
+ : (opts) => new MemoryRateLimiter(opts),
11
+ bypass: ({ req }) => {
12
+ const { bypassKey, bypassIps } = rateLimits;
13
+ if (bypassKey && bypassKey === req.headers['x-ratelimit-bypass']) {
14
+ return true;
15
+ }
16
+ if (bypassIps && bypassIps.includes(req.ip)) {
17
+ return true;
18
+ }
19
+ return false;
20
+ },
21
+ global: [
22
+ {
23
+ name: 'global-ip',
24
+ durationMs: 5 * MINUTE,
25
+ points: 3000,
26
+ // getRepo can be a high-volume sync path, so it has its own endpoint
27
+ // limit and should not consume the shared global read bucket.
28
+ calcKey: ({ req }) => {
29
+ if (req.path === SYNC_GET_REPO_PATH) {
30
+ return null;
31
+ }
32
+ return req.ip;
33
+ },
34
+ },
35
+ ],
36
+ shared: [
37
+ {
38
+ name: 'repo-write-hour',
39
+ durationMs: HOUR,
40
+ points: 5000, // creates=3, puts=2, deletes=1
41
+ },
42
+ {
43
+ name: 'repo-write-day',
44
+ durationMs: DAY,
45
+ points: 35000, // creates=3, puts=2, deletes=1
46
+ },
47
+ ],
48
+ };
49
+ };
50
+ //# sourceMappingURL=rate-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limits.js","sourceRoot":"","sources":["../src/rate-limits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAM1E,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;AAE3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,UAA4B,EAC5B,YAAoB,EACe,EAAE;IACrC,IAAI,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAEzC,OAAO;QACL,OAAO,EAAE,YAAY;YACnB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC;YACpD,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC;QACzC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YAClB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;YAC3C,IAAI,SAAS,IAAI,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACjE,OAAO,IAAI,CAAA;YACb,CAAC;YACD,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,CAAC,GAAG,MAAM;gBACtB,MAAM,EAAE,IAAI;gBACZ,qEAAqE;gBACrE,8DAA8D;gBAC9D,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;oBACnB,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;wBACpC,OAAO,IAAI,CAAA;oBACb,CAAC;oBACD,OAAO,GAAG,CAAC,EAAE,CAAA;gBACf,CAAC;aACF;SACF;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI,EAAE,+BAA+B;aAC9C;YACD;gBACE,IAAI,EAAE,gBAAgB;gBACtB,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,KAAK,EAAE,+BAA+B;aAC/C;SACF;KACF,CAAA;AACH,CAAC,CAAA","sourcesContent":["import type { Redis } from 'ioredis'\nimport { DAY, HOUR, MINUTE } from '@atproto/common'\nimport { MemoryRateLimiter, RedisRateLimiter } from '@atproto/xrpc-server'\nimport type { Options } from '@atproto/xrpc-server'\nimport type { RateLimitsConfig } from './config/index.js'\n\ntype RateLimitDescriptions = NonNullable<Options['rateLimits']>\n\nconst SYNC_GET_REPO_PATH = '/xrpc/com.atproto.sync.getRepo'\n\nexport const buildRateLimitsConfig = (\n rateLimits: RateLimitsConfig,\n redisScratch?: Redis,\n): RateLimitDescriptions | undefined => {\n if (!rateLimits.enabled) return undefined\n\n return {\n creator: redisScratch\n ? (opts) => new RedisRateLimiter(redisScratch, opts)\n : (opts) => new MemoryRateLimiter(opts),\n bypass: ({ req }) => {\n const { bypassKey, bypassIps } = rateLimits\n if (bypassKey && bypassKey === req.headers['x-ratelimit-bypass']) {\n return true\n }\n if (bypassIps && bypassIps.includes(req.ip)) {\n return true\n }\n return false\n },\n global: [\n {\n name: 'global-ip',\n durationMs: 5 * MINUTE,\n points: 3000,\n // getRepo can be a high-volume sync path, so it has its own endpoint\n // limit and should not consume the shared global read bucket.\n calcKey: ({ req }) => {\n if (req.path === SYNC_GET_REPO_PATH) {\n return null\n }\n return req.ip\n },\n },\n ],\n shared: [\n {\n name: 'repo-write-hour',\n durationMs: HOUR,\n points: 5000, // creates=3, puts=2, deletes=1\n },\n {\n name: 'repo-write-day',\n durationMs: DAY,\n points: 35000, // creates=3, puts=2, deletes=1\n },\n ],\n }\n}\n"]}
@@ -27,7 +27,7 @@ export const publishIdentityFromFile = async (ctx, args) => {
27
27
  export const publishIdentityEvtForDids = async (ctx, dids, timeBetween = 0) => {
28
28
  for (const did of dids) {
29
29
  try {
30
- await ctx.sequencer.sequenceIdentityEvt(did);
30
+ await ctx.sequencer.sequenceIdentity(did);
31
31
  console.log(`published identity evt for ${did}`);
32
32
  }
33
33
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"publish-identity.js","sourceRoot":"","sources":["../../src/scripts/publish-identity.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC,CAAA;IAC7D,MAAM,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,IAAI;SACd,QAAQ,EAAE;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAE3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC,CAAA;IAE7D,MAAM,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAA2B,EAC3B,IAAiB,EACjB,WAAW,GAAG,CAAC,EACf,EAAE;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;YAC5C,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;AACH,CAAC,CAAA","sourcesContent":["import assert from 'node:assert'\nimport fs from 'node:fs/promises'\nimport { wait } from '@atproto/common'\nimport { isDidString } from '@atproto/lex'\nimport { DidString } from '@atproto/syntax'\nimport { Sequencer } from '../sequencer/index.js'\nimport { parseIntArg } from './util.js'\n\nexport type PublishIdentityContext = {\n sequencer: Sequencer\n}\n\nexport const publishIdentity = async (\n ctx: PublishIdentityContext,\n args: string[],\n) => {\n const dids = args\n assert(dids.every(isDidString), 'All arguments must be DIDs')\n await publishIdentityEvtForDids(ctx, dids)\n console.log('DONE')\n}\n\nexport const publishIdentityFromFile = async (\n ctx: PublishIdentityContext,\n args: string[],\n) => {\n const filepath = args[0]\n if (!filepath) {\n throw new Error('Expected filepath as argument')\n }\n const timeBetween = args[1] ? parseIntArg(args[1]) : 5\n const file = await fs.readFile(filepath)\n const dids = file\n .toString()\n .split('\\n')\n .map((did) => did.trim())\n\n assert(dids.every(isDidString), 'File contains invalid DIDs')\n\n await publishIdentityEvtForDids(ctx, dids, timeBetween)\n console.log('DONE')\n}\n\nexport const publishIdentityEvtForDids = async (\n ctx: PublishIdentityContext,\n dids: DidString[],\n timeBetween = 0,\n) => {\n for (const did of dids) {\n try {\n await ctx.sequencer.sequenceIdentityEvt(did)\n console.log(`published identity evt for ${did}`)\n } catch (err) {\n console.error(`failed to sequence new identity evt for ${did}: ${err}`)\n }\n if (timeBetween > 0) {\n await wait(timeBetween)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"publish-identity.js","sourceRoot":"","sources":["../../src/scripts/publish-identity.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMvC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,CAAA;IACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC,CAAA;IAC7D,MAAM,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,GAA2B,EAC3B,IAAc,EACd,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,IAAI,GAAG,IAAI;SACd,QAAQ,EAAE;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAE3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,4BAA4B,CAAC,CAAA;IAE7D,MAAM,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAC5C,GAA2B,EAC3B,IAAiB,EACjB,WAAW,GAAG,CAAC,EACf,EAAE;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YACzC,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,WAAW,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;AACH,CAAC,CAAA","sourcesContent":["import assert from 'node:assert'\nimport fs from 'node:fs/promises'\nimport { wait } from '@atproto/common'\nimport { isDidString } from '@atproto/lex'\nimport { DidString } from '@atproto/syntax'\nimport { Sequencer } from '../sequencer/index.js'\nimport { parseIntArg } from './util.js'\n\nexport type PublishIdentityContext = {\n sequencer: Sequencer\n}\n\nexport const publishIdentity = async (\n ctx: PublishIdentityContext,\n args: string[],\n) => {\n const dids = args\n assert(dids.every(isDidString), 'All arguments must be DIDs')\n await publishIdentityEvtForDids(ctx, dids)\n console.log('DONE')\n}\n\nexport const publishIdentityFromFile = async (\n ctx: PublishIdentityContext,\n args: string[],\n) => {\n const filepath = args[0]\n if (!filepath) {\n throw new Error('Expected filepath as argument')\n }\n const timeBetween = args[1] ? parseIntArg(args[1]) : 5\n const file = await fs.readFile(filepath)\n const dids = file\n .toString()\n .split('\\n')\n .map((did) => did.trim())\n\n assert(dids.every(isDidString), 'File contains invalid DIDs')\n\n await publishIdentityEvtForDids(ctx, dids, timeBetween)\n console.log('DONE')\n}\n\nexport const publishIdentityEvtForDids = async (\n ctx: PublishIdentityContext,\n dids: DidString[],\n timeBetween = 0,\n) => {\n for (const did of dids) {\n try {\n await ctx.sequencer.sequenceIdentity(did)\n console.log(`published identity evt for ${did}`)\n } catch (err) {\n console.error(`failed to sequence new identity evt for ${did}: ${err}`)\n }\n if (timeBetween > 0) {\n await wait(timeBetween)\n }\n }\n}\n"]}
@@ -69,7 +69,7 @@ export const rebuildRepo = async (ctx, did, promptUser) => {
69
69
  });
70
70
  await ctx.accountManager.updateRepoRoot(did, commit.cid, commit.rev);
71
71
  const syncData = await ctx.actorStore.read(did, (store) => store.repo.getSyncEventData());
72
- await ctx.sequencer.sequenceSyncEvt(did, syncData);
72
+ await ctx.sequencer.sequenceSync(did, syncData);
73
73
  };
74
74
  const promptContinue = async () => {
75
75
  const rl = readline.createInterface({
@@ -1 +1 @@
1
- {"version":3,"file":"rebuild-repo.js","sourceRoot":"","sources":["../../src/scripts/rebuild-repo.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport readline from 'node:readline/promises'\nimport { TID } from '@atproto/common'\nimport { DidString, isDidString } from '@atproto/lex'\nimport {\n BlockMap,\n CidSet,\n MST,\n MemoryBlockstore,\n signCommit,\n} from '@atproto/repo'\nimport { AccountManager } from '../account-manager/account-manager.js'\nimport { ActorStore } from '../actor-store/actor-store.js'\nimport { Sequencer } from '../sequencer/index.js'\n\nexport interface RebuildContext {\n sequencer: Sequencer\n accountManager: AccountManager\n actorStore: ActorStore\n}\n\nexport const rebuildRepoScript = async (\n ctx: RebuildContext,\n args: string[],\n) => {\n const did = args[0]\n assert(isDidString(did), 'Expected DID as argument')\n return rebuildRepo(ctx, did, true)\n}\n\nexport const rebuildRepo = async (\n ctx: RebuildContext,\n did: DidString,\n promptUser: boolean,\n) => {\n const memoryStore = new MemoryBlockstore()\n const commit = await ctx.actorStore.transact(did, async (store) => {\n const rootDetails = await store.repo.storage.getRootDetailed()\n const records = await store.record.listAll()\n const existingCids = await store.record.listExistingBlocks()\n\n // increment existing rev by 1 ms\n const revTid = TID.fromStr(rootDetails.rev)\n const rev = TID.fromTime(\n revTid.timestamp() + 1,\n revTid.clockid(),\n ).toString()\n\n let mst = await MST.create(memoryStore)\n for (const record of records) {\n mst = await mst.add(record.path, record.cid)\n }\n const newBlocks = new BlockMap()\n for await (const node of mst.walk()) {\n if (node.isTree()) {\n const pointer = await node.getPointer()\n if (!existingCids.has(pointer)) {\n const serialized = await node.serialize()\n newBlocks.set(serialized.cid, serialized.bytes)\n }\n }\n }\n const mstCids = await mst.allCids()\n const toDelete = new CidSet(existingCids.toList()).subtractSet(mstCids)\n const newCommit = await signCommit(\n {\n did,\n version: 3,\n rev,\n prev: null,\n data: await mst.getPointer(),\n },\n store.repo.signingKey,\n )\n const commitCid = await newBlocks.add(newCommit)\n\n if (promptUser) {\n console.log('Record count: ', records.length)\n console.log('Existing blocks: ', existingCids.toList().length)\n console.log('Deleting blocks:', toDelete.toList().length)\n console.log('Adding blocks: ', newBlocks.size)\n\n const shouldContinue = await promptContinue()\n if (!shouldContinue) {\n throw new Error('Aborted')\n }\n }\n\n await store.repo.storage.deleteMany(toDelete.toList())\n await store.repo.storage.putMany(newBlocks, rev)\n await store.repo.storage.updateRoot(commitCid, rev)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: toDelete,\n ops: [],\n blobs: new CidSet(),\n prevData: null,\n }\n })\n await ctx.accountManager.updateRepoRoot(did, commit.cid, commit.rev)\n const syncData = await ctx.actorStore.read(did, (store) =>\n store.repo.getSyncEventData(),\n )\n await ctx.sequencer.sequenceSyncEvt(did, syncData)\n}\n\nconst promptContinue = async (): Promise<boolean> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n const answer = await rl.question('Continue? y/n ')\n return answer === ''\n}\n"]}
1
+ {"version":3,"file":"rebuild-repo.js","sourceRoot":"","sources":["../../src/scripts/rebuild-repo.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport readline from 'node:readline/promises'\nimport { TID } from '@atproto/common'\nimport { DidString, isDidString } from '@atproto/lex'\nimport {\n BlockMap,\n CidSet,\n MST,\n MemoryBlockstore,\n signCommit,\n} from '@atproto/repo'\nimport { AccountManager } from '../account-manager/account-manager.js'\nimport { ActorStore } from '../actor-store/actor-store.js'\nimport { Sequencer } from '../sequencer/index.js'\n\nexport interface RebuildContext {\n sequencer: Sequencer\n accountManager: AccountManager\n actorStore: ActorStore\n}\n\nexport const rebuildRepoScript = async (\n ctx: RebuildContext,\n args: string[],\n) => {\n const did = args[0]\n assert(isDidString(did), 'Expected DID as argument')\n return rebuildRepo(ctx, did, true)\n}\n\nexport const rebuildRepo = async (\n ctx: RebuildContext,\n did: DidString,\n promptUser: boolean,\n) => {\n const memoryStore = new MemoryBlockstore()\n const commit = await ctx.actorStore.transact(did, async (store) => {\n const rootDetails = await store.repo.storage.getRootDetailed()\n const records = await store.record.listAll()\n const existingCids = await store.record.listExistingBlocks()\n\n // increment existing rev by 1 ms\n const revTid = TID.fromStr(rootDetails.rev)\n const rev = TID.fromTime(\n revTid.timestamp() + 1,\n revTid.clockid(),\n ).toString()\n\n let mst = await MST.create(memoryStore)\n for (const record of records) {\n mst = await mst.add(record.path, record.cid)\n }\n const newBlocks = new BlockMap()\n for await (const node of mst.walk()) {\n if (node.isTree()) {\n const pointer = await node.getPointer()\n if (!existingCids.has(pointer)) {\n const serialized = await node.serialize()\n newBlocks.set(serialized.cid, serialized.bytes)\n }\n }\n }\n const mstCids = await mst.allCids()\n const toDelete = new CidSet(existingCids.toList()).subtractSet(mstCids)\n const newCommit = await signCommit(\n {\n did,\n version: 3,\n rev,\n prev: null,\n data: await mst.getPointer(),\n },\n store.repo.signingKey,\n )\n const commitCid = await newBlocks.add(newCommit)\n\n if (promptUser) {\n console.log('Record count: ', records.length)\n console.log('Existing blocks: ', existingCids.toList().length)\n console.log('Deleting blocks:', toDelete.toList().length)\n console.log('Adding blocks: ', newBlocks.size)\n\n const shouldContinue = await promptContinue()\n if (!shouldContinue) {\n throw new Error('Aborted')\n }\n }\n\n await store.repo.storage.deleteMany(toDelete.toList())\n await store.repo.storage.putMany(newBlocks, rev)\n await store.repo.storage.updateRoot(commitCid, rev)\n return {\n cid: commitCid,\n rev,\n since: null,\n prev: null,\n newBlocks,\n relevantBlocks: newBlocks,\n removedCids: toDelete,\n ops: [],\n blobs: new CidSet(),\n prevData: null,\n }\n })\n await ctx.accountManager.updateRepoRoot(did, commit.cid, commit.rev)\n const syncData = await ctx.actorStore.read(did, (store) =>\n store.repo.getSyncEventData(),\n )\n await ctx.sequencer.sequenceSync(did, syncData)\n}\n\nconst promptContinue = async (): Promise<boolean> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n const answer = await rl.question('Continue? y/n ')\n return answer === ''\n}\n"]}
@@ -65,14 +65,14 @@ const rotateKeysForRepos = async (ctx, dids, concurrency, onSuccess) => {
65
65
  return;
66
66
  }
67
67
  try {
68
- await ctx.sequencer.sequenceIdentityEvt(did);
68
+ await ctx.sequencer.sequenceIdentity(did);
69
69
  }
70
70
  catch (err) {
71
71
  console.error(`failed to sequence new identity evt for ${did}: ${err}`);
72
72
  return;
73
73
  }
74
74
  try {
75
- await ctx.sequencer.sequenceSyncEvt(did, syncData);
75
+ await ctx.sequencer.sequenceSync(did, syncData);
76
76
  }
77
77
  catch (err) {
78
78
  console.error(`failed to sequence for ${did}: ${err}`);
@@ -1 +1 @@
1
- {"version":3,"file":"rotate-keys.js","sourceRoot":"","sources":["../../src/scripts/rotate-keys.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport fs from 'node:fs/promises'\nimport * as plc from '@did-plc/lib'\nimport PQueue from 'p-queue'\nimport AtpAgent from '@atproto/api'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { DidString, isDidString } from '@atproto/lex'\nimport { ActorStore } from '../actor-store/actor-store.js'\nimport { SyncEvtData } from '../repo/index.js'\nimport { Sequencer } from '../sequencer/index.js'\nimport { getRecoveryDbFromSequencerLoc } from './sequencer-recovery/recovery-db.js'\nimport { parseIntArg } from './util.js'\n\nexport type RotateKeysContext = {\n sequencer: Sequencer\n actorStore: ActorStore\n idResolver: IdResolver\n plcClient: plc.Client\n plcRotationKey: Keypair\n entrywayAdminAgent?: AtpAgent\n}\n\nexport const rotateKeys = async (ctx: RotateKeysContext, args: string[]) => {\n const dids = args\n assert(dids.every(isDidString), 'All arguments must be DIDs')\n await rotateKeysForRepos(ctx, dids, 10)\n}\n\nexport const rotateKeysFromFile = async (\n ctx: RotateKeysContext,\n args: string[],\n) => {\n const filepath = args[0]\n if (!filepath) {\n throw new Error('Expected filepath as argument')\n }\n const concurrency = args[1] ? parseIntArg(args[1]) : 25\n const file = await fs.readFile(filepath)\n const dids = file\n .toString()\n .split('\\n')\n .map((did) => did.trim())\n .filter((did) => did.startsWith('did:plc'))\n\n assert(dids.every(isDidString), 'File contains invalid DIDs')\n\n await rotateKeysForRepos(ctx, dids, concurrency)\n}\n\nexport const rotateKeysRecovery = async (\n ctx: RotateKeysContext,\n args: string[],\n) => {\n const concurrency = args[1] ? parseIntArg(args[0]) : 10\n\n const recoveryDb = await getRecoveryDbFromSequencerLoc(\n ctx.sequencer.dbLocation,\n )\n const rows = await recoveryDb.db\n .selectFrom('new_account')\n .select('did')\n .where('new_account.published', '=', 0)\n .execute()\n const dids = rows.map((r) => r.did as DidString)\n\n await rotateKeysForRepos(ctx, dids, concurrency, async (did) => {\n await recoveryDb.db\n .updateTable('new_account')\n .set({ published: 1 })\n .where('did', '=', did)\n .execute()\n })\n}\n\nconst rotateKeysForRepos = async (\n ctx: RotateKeysContext,\n dids: DidString[],\n concurrency: number,\n onSuccess?: (did: DidString) => Promise<void>,\n) => {\n const queue = new PQueue({ concurrency })\n let completed = 0\n for (const did of dids) {\n queue.add(async () => {\n try {\n await updatePlcSigningKey(ctx, did)\n } catch (err) {\n console.error(`failed to update key for ${did}: ${err}`)\n return\n }\n let syncData: SyncEvtData\n try {\n syncData = await ctx.actorStore.transact(did, async (actorTxn) => {\n await actorTxn.repo.processWrites([])\n return actorTxn.repo.getSyncEventData()\n })\n } catch (err) {\n console.error(`failed to write new commit for ${did}: ${err}`)\n return\n }\n try {\n await ctx.sequencer.sequenceIdentityEvt(did)\n } catch (err) {\n console.error(`failed to sequence new identity evt for ${did}: ${err}`)\n return\n }\n try {\n await ctx.sequencer.sequenceSyncEvt(did, syncData)\n } catch (err) {\n console.error(`failed to sequence for ${did}: ${err}`)\n return\n }\n if (onSuccess) {\n await onSuccess(did)\n }\n completed++\n if (completed % 10 === 0) {\n console.log(`${completed}/${dids.length}`)\n }\n })\n }\n await queue.onIdle()\n console.log('DONE')\n}\n\nconst updatePlcSigningKey = async (ctx: RotateKeysContext, did: DidString) => {\n const updateTo = await ctx.actorStore.keypair(did)\n const currSigningKey = await ctx.idResolver.did.resolveAtprotoKey(did, true)\n if (updateTo.did() === currSigningKey) {\n // already up to date\n return\n }\n if (ctx.entrywayAdminAgent) {\n await ctx.entrywayAdminAgent.api.com.atproto.admin.updateAccountSigningKey({\n did,\n signingKey: updateTo.did(),\n })\n } else {\n await ctx.plcClient.updateAtprotoKey(\n did,\n ctx.plcRotationKey,\n updateTo.did(),\n )\n }\n}\n"]}
1
+ {"version":3,"file":"rotate-keys.js","sourceRoot":"","sources":["../../src/scripts/rotate-keys.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport fs from 'node:fs/promises'\nimport * as plc from '@did-plc/lib'\nimport PQueue from 'p-queue'\nimport AtpAgent from '@atproto/api'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { DidString, isDidString } from '@atproto/lex'\nimport { ActorStore } from '../actor-store/actor-store.js'\nimport { SyncEvtData } from '../repo/index.js'\nimport { Sequencer } from '../sequencer/index.js'\nimport { getRecoveryDbFromSequencerLoc } from './sequencer-recovery/recovery-db.js'\nimport { parseIntArg } from './util.js'\n\nexport type RotateKeysContext = {\n sequencer: Sequencer\n actorStore: ActorStore\n idResolver: IdResolver\n plcClient: plc.Client\n plcRotationKey: Keypair\n entrywayAdminAgent?: AtpAgent\n}\n\nexport const rotateKeys = async (ctx: RotateKeysContext, args: string[]) => {\n const dids = args\n assert(dids.every(isDidString), 'All arguments must be DIDs')\n await rotateKeysForRepos(ctx, dids, 10)\n}\n\nexport const rotateKeysFromFile = async (\n ctx: RotateKeysContext,\n args: string[],\n) => {\n const filepath = args[0]\n if (!filepath) {\n throw new Error('Expected filepath as argument')\n }\n const concurrency = args[1] ? parseIntArg(args[1]) : 25\n const file = await fs.readFile(filepath)\n const dids = file\n .toString()\n .split('\\n')\n .map((did) => did.trim())\n .filter((did) => did.startsWith('did:plc'))\n\n assert(dids.every(isDidString), 'File contains invalid DIDs')\n\n await rotateKeysForRepos(ctx, dids, concurrency)\n}\n\nexport const rotateKeysRecovery = async (\n ctx: RotateKeysContext,\n args: string[],\n) => {\n const concurrency = args[1] ? parseIntArg(args[0]) : 10\n\n const recoveryDb = await getRecoveryDbFromSequencerLoc(\n ctx.sequencer.dbLocation,\n )\n const rows = await recoveryDb.db\n .selectFrom('new_account')\n .select('did')\n .where('new_account.published', '=', 0)\n .execute()\n const dids = rows.map((r) => r.did as DidString)\n\n await rotateKeysForRepos(ctx, dids, concurrency, async (did) => {\n await recoveryDb.db\n .updateTable('new_account')\n .set({ published: 1 })\n .where('did', '=', did)\n .execute()\n })\n}\n\nconst rotateKeysForRepos = async (\n ctx: RotateKeysContext,\n dids: DidString[],\n concurrency: number,\n onSuccess?: (did: DidString) => Promise<void>,\n) => {\n const queue = new PQueue({ concurrency })\n let completed = 0\n for (const did of dids) {\n queue.add(async () => {\n try {\n await updatePlcSigningKey(ctx, did)\n } catch (err) {\n console.error(`failed to update key for ${did}: ${err}`)\n return\n }\n let syncData: SyncEvtData\n try {\n syncData = await ctx.actorStore.transact(did, async (actorTxn) => {\n await actorTxn.repo.processWrites([])\n return actorTxn.repo.getSyncEventData()\n })\n } catch (err) {\n console.error(`failed to write new commit for ${did}: ${err}`)\n return\n }\n try {\n await ctx.sequencer.sequenceIdentity(did)\n } catch (err) {\n console.error(`failed to sequence new identity evt for ${did}: ${err}`)\n return\n }\n try {\n await ctx.sequencer.sequenceSync(did, syncData)\n } catch (err) {\n console.error(`failed to sequence for ${did}: ${err}`)\n return\n }\n if (onSuccess) {\n await onSuccess(did)\n }\n completed++\n if (completed % 10 === 0) {\n console.log(`${completed}/${dids.length}`)\n }\n })\n }\n await queue.onIdle()\n console.log('DONE')\n}\n\nconst updatePlcSigningKey = async (ctx: RotateKeysContext, did: DidString) => {\n const updateTo = await ctx.actorStore.keypair(did)\n const currSigningKey = await ctx.idResolver.did.resolveAtprotoKey(did, true)\n if (updateTo.did() === currSigningKey) {\n // already up to date\n return\n }\n if (ctx.entrywayAdminAgent) {\n await ctx.entrywayAdminAgent.api.com.atproto.admin.updateAccountSigningKey({\n did,\n signingKey: updateTo.did(),\n })\n } else {\n await ctx.plcClient.updateAtprotoKey(\n did,\n ctx.plcRotationKey,\n updateTo.did(),\n )\n }\n}\n"]}
@@ -119,12 +119,14 @@ const processRepoCreation = async (ctx, evt, writes, blocks) => {
119
119
  };
120
120
  const processAccountEvt = async (ctx, evt) => {
121
121
  // do not need to process deactivation/takedowns because we backup account DB as well
122
- if (evt.status !== AccountStatus.Deleted) {
123
- return;
122
+ if (evt.status === AccountStatus.Deleted) {
123
+ // In case an account deletion was sequenced, let's make sure to (first)
124
+ // delete the accounts database, and (then) unlink the actor store from the
125
+ // file system. Order matters here.
126
+ await ctx.accountManager.deleteAccount(evt.did);
127
+ const { directory } = await ctx.actorStore.getLocation(evt.did);
128
+ await rmIfExists(directory, true);
124
129
  }
125
- const { directory } = await ctx.actorStore.getLocation(evt.did);
126
- await rmIfExists(directory, true);
127
- await ctx.accountManager.deleteAccount(evt.did);
128
130
  };
129
131
  const trackBlobs = async (store, writes) => {
130
132
  await store.repo.blob.deleteDereferencedBlobs(writes);