@atproto/ozone 0.0.8 → 0.0.10

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 (267) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/api/moderation/util.d.ts +1 -1
  3. package/dist/db/index.js +300 -16
  4. package/dist/db/index.js.map +3 -3
  5. package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.d.ts +3 -0
  6. package/dist/db/migrations/index.d.ts +1 -0
  7. package/dist/db/schema/moderation_event.d.ts +3 -1
  8. package/dist/db/schema/moderation_subject_status.d.ts +1 -0
  9. package/dist/index.js +1193 -453
  10. package/dist/index.js.map +3 -3
  11. package/dist/lexicon/lexicons.d.ts +153 -5
  12. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +1 -0
  13. package/dist/lexicon/types/app/bsky/actor/getPreferences.d.ts +2 -2
  14. package/dist/lexicon/types/app/bsky/actor/getProfile.d.ts +2 -2
  15. package/dist/lexicon/types/app/bsky/actor/getProfiles.d.ts +2 -2
  16. package/dist/lexicon/types/app/bsky/actor/getSuggestions.d.ts +2 -2
  17. package/dist/lexicon/types/app/bsky/actor/searchActors.d.ts +2 -2
  18. package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.d.ts +2 -2
  19. package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts +2 -2
  20. package/dist/lexicon/types/app/bsky/feed/getActorFeeds.d.ts +2 -2
  21. package/dist/lexicon/types/app/bsky/feed/getActorLikes.d.ts +2 -2
  22. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.d.ts +2 -2
  23. package/dist/lexicon/types/app/bsky/feed/getFeed.d.ts +2 -2
  24. package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.d.ts +2 -2
  25. package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.d.ts +2 -2
  26. package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.d.ts +2 -2
  27. package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts +2 -2
  28. package/dist/lexicon/types/app/bsky/feed/getListFeed.d.ts +2 -2
  29. package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts +2 -2
  30. package/dist/lexicon/types/app/bsky/feed/getPosts.d.ts +2 -2
  31. package/dist/lexicon/types/app/bsky/feed/getRepostedBy.d.ts +2 -2
  32. package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.d.ts +2 -2
  33. package/dist/lexicon/types/app/bsky/feed/getTimeline.d.ts +2 -2
  34. package/dist/lexicon/types/app/bsky/feed/searchPosts.d.ts +2 -2
  35. package/dist/lexicon/types/app/bsky/graph/getBlocks.d.ts +2 -2
  36. package/dist/lexicon/types/app/bsky/graph/getFollowers.d.ts +2 -2
  37. package/dist/lexicon/types/app/bsky/graph/getFollows.d.ts +2 -2
  38. package/dist/lexicon/types/app/bsky/graph/getList.d.ts +2 -2
  39. package/dist/lexicon/types/app/bsky/graph/getListBlocks.d.ts +2 -2
  40. package/dist/lexicon/types/app/bsky/graph/getListMutes.d.ts +2 -2
  41. package/dist/lexicon/types/app/bsky/graph/getLists.d.ts +2 -2
  42. package/dist/lexicon/types/app/bsky/graph/getMutes.d.ts +2 -2
  43. package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts +2 -2
  44. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts +2 -2
  45. package/dist/lexicon/types/app/bsky/notification/getUnreadCount.d.ts +2 -2
  46. package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts +2 -2
  47. package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.d.ts +2 -2
  48. package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts +2 -2
  49. package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.d.ts +2 -2
  50. package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.d.ts +2 -2
  51. package/dist/lexicon/types/com/atproto/admin/createCommunicationTemplate.d.ts +2 -2
  52. package/dist/lexicon/types/com/atproto/admin/defs.d.ts +9 -0
  53. package/dist/lexicon/types/com/atproto/admin/emitModerationEvent.d.ts +3 -3
  54. package/dist/lexicon/types/com/atproto/admin/getAccountInfo.d.ts +2 -2
  55. package/dist/lexicon/types/com/atproto/admin/getAccountInfos.d.ts +2 -2
  56. package/dist/lexicon/types/com/atproto/admin/getInviteCodes.d.ts +2 -2
  57. package/dist/lexicon/types/com/atproto/admin/getModerationEvent.d.ts +2 -2
  58. package/dist/lexicon/types/com/atproto/admin/getRecord.d.ts +2 -2
  59. package/dist/lexicon/types/com/atproto/admin/getRepo.d.ts +2 -2
  60. package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts +2 -2
  61. package/dist/lexicon/types/com/atproto/admin/listCommunicationTemplates.d.ts +2 -2
  62. package/dist/lexicon/types/com/atproto/admin/queryModerationEvents.d.ts +4 -2
  63. package/dist/lexicon/types/com/atproto/admin/queryModerationStatuses.d.ts +4 -2
  64. package/dist/lexicon/types/com/atproto/admin/searchRepos.d.ts +2 -2
  65. package/dist/lexicon/types/com/atproto/admin/sendEmail.d.ts +2 -2
  66. package/dist/lexicon/types/com/atproto/admin/updateCommunicationTemplate.d.ts +2 -2
  67. package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts +2 -2
  68. package/dist/lexicon/types/com/atproto/identity/resolveHandle.d.ts +2 -2
  69. package/dist/lexicon/types/com/atproto/label/queryLabels.d.ts +2 -2
  70. package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts +2 -2
  71. package/dist/lexicon/types/com/atproto/repo/createRecord.d.ts +2 -2
  72. package/dist/lexicon/types/com/atproto/repo/describeRepo.d.ts +2 -2
  73. package/dist/lexicon/types/com/atproto/repo/getRecord.d.ts +2 -2
  74. package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts +2 -2
  75. package/dist/lexicon/types/com/atproto/repo/putRecord.d.ts +2 -2
  76. package/dist/lexicon/types/com/atproto/repo/uploadBlob.d.ts +2 -2
  77. package/dist/lexicon/types/com/atproto/server/createAccount.d.ts +2 -2
  78. package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts +2 -2
  79. package/dist/lexicon/types/com/atproto/server/createInviteCode.d.ts +2 -2
  80. package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts +2 -2
  81. package/dist/lexicon/types/com/atproto/server/createSession.d.ts +2 -2
  82. package/dist/lexicon/types/com/atproto/server/describeServer.d.ts +2 -2
  83. package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.d.ts +2 -2
  84. package/dist/lexicon/types/com/atproto/server/getSession.d.ts +2 -2
  85. package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts +2 -2
  86. package/dist/lexicon/types/com/atproto/server/refreshSession.d.ts +2 -2
  87. package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.d.ts +2 -2
  88. package/dist/lexicon/types/com/atproto/server/reserveSigningKey.d.ts +2 -2
  89. package/dist/lexicon/types/com/atproto/sync/getBlob.d.ts +2 -2
  90. package/dist/lexicon/types/com/atproto/sync/getBlocks.d.ts +2 -2
  91. package/dist/lexicon/types/com/atproto/sync/getCheckout.d.ts +2 -2
  92. package/dist/lexicon/types/com/atproto/sync/getHead.d.ts +2 -2
  93. package/dist/lexicon/types/com/atproto/sync/getLatestCommit.d.ts +2 -2
  94. package/dist/lexicon/types/com/atproto/sync/getRecord.d.ts +2 -2
  95. package/dist/lexicon/types/com/atproto/sync/getRepo.d.ts +2 -2
  96. package/dist/lexicon/types/com/atproto/sync/listBlobs.d.ts +2 -2
  97. package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts +2 -2
  98. package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.d.ts +2 -2
  99. package/dist/lexicon/types/com/atproto/temp/fetchLabels.d.ts +2 -2
  100. package/dist/lexicon/types/com/atproto/temp/importRepo.d.ts +2 -2
  101. package/dist/lexicon/types/com/atproto/temp/transferAccount.d.ts +2 -2
  102. package/dist/logger.d.ts +1 -0
  103. package/dist/mod-service/index.d.ts +18 -4
  104. package/dist/mod-service/lang.d.ts +15 -0
  105. package/dist/mod-service/status.d.ts +1 -1
  106. package/dist/mod-service/types.d.ts +1 -1
  107. package/dist/mod-service/views.d.ts +2 -1
  108. package/package.json +6 -6
  109. package/src/api/admin/emitModerationEvent.ts +22 -10
  110. package/src/api/admin/queryModerationEvents.ts +4 -0
  111. package/src/api/admin/queryModerationStatuses.ts +4 -0
  112. package/src/api/moderation/createReport.ts +15 -4
  113. package/src/api/moderation/util.ts +1 -0
  114. package/src/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.ts +31 -0
  115. package/src/db/migrations/index.ts +1 -0
  116. package/src/db/schema/moderation_event.ts +3 -0
  117. package/src/db/schema/moderation_subject_status.ts +1 -0
  118. package/src/lexicon/lexicons.ts +401 -123
  119. package/src/lexicon/types/app/bsky/actor/defs.ts +2 -0
  120. package/src/lexicon/types/app/bsky/actor/getPreferences.ts +2 -2
  121. package/src/lexicon/types/app/bsky/actor/getProfile.ts +3 -2
  122. package/src/lexicon/types/app/bsky/actor/getProfiles.ts +2 -2
  123. package/src/lexicon/types/app/bsky/actor/getSuggestions.ts +2 -2
  124. package/src/lexicon/types/app/bsky/actor/profile.ts +3 -0
  125. package/src/lexicon/types/app/bsky/actor/putPreferences.ts +1 -1
  126. package/src/lexicon/types/app/bsky/actor/searchActors.ts +2 -2
  127. package/src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts +2 -2
  128. package/src/lexicon/types/app/bsky/embed/external.ts +1 -0
  129. package/src/lexicon/types/app/bsky/embed/images.ts +4 -0
  130. package/src/lexicon/types/app/bsky/embed/record.ts +1 -0
  131. package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
  132. package/src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts +2 -2
  133. package/src/lexicon/types/app/bsky/feed/getActorFeeds.ts +2 -2
  134. package/src/lexicon/types/app/bsky/feed/getActorLikes.ts +2 -2
  135. package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +3 -2
  136. package/src/lexicon/types/app/bsky/feed/getFeed.ts +2 -2
  137. package/src/lexicon/types/app/bsky/feed/getFeedGenerator.ts +5 -2
  138. package/src/lexicon/types/app/bsky/feed/getFeedGenerators.ts +2 -2
  139. package/src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts +3 -2
  140. package/src/lexicon/types/app/bsky/feed/getLikes.ts +4 -2
  141. package/src/lexicon/types/app/bsky/feed/getListFeed.ts +3 -2
  142. package/src/lexicon/types/app/bsky/feed/getPostThread.ts +5 -2
  143. package/src/lexicon/types/app/bsky/feed/getPosts.ts +3 -2
  144. package/src/lexicon/types/app/bsky/feed/getRepostedBy.ts +4 -2
  145. package/src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts +2 -2
  146. package/src/lexicon/types/app/bsky/feed/getTimeline.ts +3 -2
  147. package/src/lexicon/types/app/bsky/feed/post.ts +5 -1
  148. package/src/lexicon/types/app/bsky/feed/searchPosts.ts +2 -2
  149. package/src/lexicon/types/app/bsky/feed/threadgate.ts +1 -0
  150. package/src/lexicon/types/app/bsky/graph/block.ts +1 -0
  151. package/src/lexicon/types/app/bsky/graph/getBlocks.ts +2 -2
  152. package/src/lexicon/types/app/bsky/graph/getFollowers.ts +2 -2
  153. package/src/lexicon/types/app/bsky/graph/getFollows.ts +2 -2
  154. package/src/lexicon/types/app/bsky/graph/getList.ts +3 -2
  155. package/src/lexicon/types/app/bsky/graph/getListBlocks.ts +2 -2
  156. package/src/lexicon/types/app/bsky/graph/getListMutes.ts +2 -2
  157. package/src/lexicon/types/app/bsky/graph/getLists.ts +3 -2
  158. package/src/lexicon/types/app/bsky/graph/getMutes.ts +2 -2
  159. package/src/lexicon/types/app/bsky/graph/getRelationships.ts +4 -2
  160. package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +2 -2
  161. package/src/lexicon/types/app/bsky/graph/list.ts +1 -0
  162. package/src/lexicon/types/app/bsky/graph/listblock.ts +1 -0
  163. package/src/lexicon/types/app/bsky/graph/listitem.ts +2 -0
  164. package/src/lexicon/types/app/bsky/graph/muteActor.ts +1 -1
  165. package/src/lexicon/types/app/bsky/graph/muteActorList.ts +1 -1
  166. package/src/lexicon/types/app/bsky/graph/unmuteActor.ts +1 -1
  167. package/src/lexicon/types/app/bsky/graph/unmuteActorList.ts +1 -1
  168. package/src/lexicon/types/app/bsky/notification/getUnreadCount.ts +2 -2
  169. package/src/lexicon/types/app/bsky/notification/listNotifications.ts +2 -2
  170. package/src/lexicon/types/app/bsky/notification/registerPush.ts +1 -1
  171. package/src/lexicon/types/app/bsky/notification/updateSeen.ts +1 -1
  172. package/src/lexicon/types/app/bsky/richtext/facet.ts +5 -4
  173. package/src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts +2 -2
  174. package/src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts +2 -2
  175. package/src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts +2 -2
  176. package/src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts +2 -2
  177. package/src/lexicon/types/com/atproto/admin/createCommunicationTemplate.ts +2 -2
  178. package/src/lexicon/types/com/atproto/admin/defs.ts +24 -0
  179. package/src/lexicon/types/com/atproto/admin/deleteAccount.ts +1 -1
  180. package/src/lexicon/types/com/atproto/admin/deleteCommunicationTemplate.ts +1 -1
  181. package/src/lexicon/types/com/atproto/admin/disableAccountInvites.ts +1 -1
  182. package/src/lexicon/types/com/atproto/admin/disableInviteCodes.ts +1 -1
  183. package/src/lexicon/types/com/atproto/admin/emitModerationEvent.ts +3 -2
  184. package/src/lexicon/types/com/atproto/admin/enableAccountInvites.ts +1 -1
  185. package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +2 -2
  186. package/src/lexicon/types/com/atproto/admin/getAccountInfos.ts +2 -2
  187. package/src/lexicon/types/com/atproto/admin/getInviteCodes.ts +2 -2
  188. package/src/lexicon/types/com/atproto/admin/getModerationEvent.ts +2 -2
  189. package/src/lexicon/types/com/atproto/admin/getRecord.ts +2 -2
  190. package/src/lexicon/types/com/atproto/admin/getRepo.ts +2 -2
  191. package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +2 -2
  192. package/src/lexicon/types/com/atproto/admin/listCommunicationTemplates.ts +2 -2
  193. package/src/lexicon/types/com/atproto/admin/queryModerationEvents.ts +6 -2
  194. package/src/lexicon/types/com/atproto/admin/queryModerationStatuses.ts +4 -2
  195. package/src/lexicon/types/com/atproto/admin/searchRepos.ts +2 -2
  196. package/src/lexicon/types/com/atproto/admin/sendEmail.ts +2 -2
  197. package/src/lexicon/types/com/atproto/admin/updateAccountEmail.ts +1 -1
  198. package/src/lexicon/types/com/atproto/admin/updateAccountHandle.ts +1 -1
  199. package/src/lexicon/types/com/atproto/admin/updateCommunicationTemplate.ts +2 -2
  200. package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +2 -2
  201. package/src/lexicon/types/com/atproto/identity/resolveHandle.ts +2 -2
  202. package/src/lexicon/types/com/atproto/identity/updateHandle.ts +2 -1
  203. package/src/lexicon/types/com/atproto/label/queryLabels.ts +2 -2
  204. package/src/lexicon/types/com/atproto/label/subscribeLabels.ts +1 -1
  205. package/src/lexicon/types/com/atproto/moderation/createReport.ts +3 -2
  206. package/src/lexicon/types/com/atproto/repo/applyWrites.ts +7 -6
  207. package/src/lexicon/types/com/atproto/repo/createRecord.ts +6 -6
  208. package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +3 -3
  209. package/src/lexicon/types/com/atproto/repo/describeRepo.ts +5 -2
  210. package/src/lexicon/types/com/atproto/repo/getRecord.ts +3 -3
  211. package/src/lexicon/types/com/atproto/repo/listRecords.ts +2 -2
  212. package/src/lexicon/types/com/atproto/repo/putRecord.ts +6 -6
  213. package/src/lexicon/types/com/atproto/repo/uploadBlob.ts +2 -2
  214. package/src/lexicon/types/com/atproto/server/confirmEmail.ts +1 -1
  215. package/src/lexicon/types/com/atproto/server/createAccount.ts +10 -2
  216. package/src/lexicon/types/com/atproto/server/createAppPassword.ts +3 -2
  217. package/src/lexicon/types/com/atproto/server/createInviteCode.ts +2 -2
  218. package/src/lexicon/types/com/atproto/server/createInviteCodes.ts +2 -2
  219. package/src/lexicon/types/com/atproto/server/createSession.ts +2 -2
  220. package/src/lexicon/types/com/atproto/server/deleteAccount.ts +1 -1
  221. package/src/lexicon/types/com/atproto/server/deleteSession.ts +1 -1
  222. package/src/lexicon/types/com/atproto/server/describeServer.ts +5 -2
  223. package/src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts +3 -2
  224. package/src/lexicon/types/com/atproto/server/getSession.ts +2 -2
  225. package/src/lexicon/types/com/atproto/server/listAppPasswords.ts +2 -2
  226. package/src/lexicon/types/com/atproto/server/refreshSession.ts +2 -2
  227. package/src/lexicon/types/com/atproto/server/requestAccountDelete.ts +1 -1
  228. package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +1 -1
  229. package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +2 -2
  230. package/src/lexicon/types/com/atproto/server/requestPasswordReset.ts +1 -1
  231. package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +4 -4
  232. package/src/lexicon/types/com/atproto/server/resetPassword.ts +1 -1
  233. package/src/lexicon/types/com/atproto/server/revokeAppPassword.ts +1 -1
  234. package/src/lexicon/types/com/atproto/server/updateEmail.ts +1 -1
  235. package/src/lexicon/types/com/atproto/sync/getBlob.ts +3 -3
  236. package/src/lexicon/types/com/atproto/sync/getBlocks.ts +2 -2
  237. package/src/lexicon/types/com/atproto/sync/getCheckout.ts +2 -2
  238. package/src/lexicon/types/com/atproto/sync/getHead.ts +2 -2
  239. package/src/lexicon/types/com/atproto/sync/getLatestCommit.ts +2 -2
  240. package/src/lexicon/types/com/atproto/sync/getRecord.ts +3 -2
  241. package/src/lexicon/types/com/atproto/sync/getRepo.ts +3 -3
  242. package/src/lexicon/types/com/atproto/sync/listBlobs.ts +2 -2
  243. package/src/lexicon/types/com/atproto/sync/listRepos.ts +3 -2
  244. package/src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts +2 -2
  245. package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +2 -2
  246. package/src/lexicon/types/com/atproto/sync/subscribeRepos.ts +17 -5
  247. package/src/lexicon/types/com/atproto/temp/checkSignupQueue.ts +2 -2
  248. package/src/lexicon/types/com/atproto/temp/fetchLabels.ts +2 -2
  249. package/src/lexicon/types/com/atproto/temp/importRepo.ts +2 -2
  250. package/src/lexicon/types/com/atproto/temp/pushBlob.ts +1 -1
  251. package/src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts +1 -1
  252. package/src/lexicon/types/com/atproto/temp/transferAccount.ts +2 -2
  253. package/src/logger.ts +2 -0
  254. package/src/mod-service/index.ts +60 -10
  255. package/src/mod-service/lang.ts +82 -0
  256. package/src/mod-service/status.ts +18 -4
  257. package/src/mod-service/types.ts +1 -0
  258. package/src/mod-service/views.ts +21 -2
  259. package/tests/__snapshots__/get-record.test.ts.snap +6 -0
  260. package/tests/__snapshots__/get-repo.test.ts.snap +3 -0
  261. package/tests/__snapshots__/moderation-events.test.ts.snap +45 -4
  262. package/tests/__snapshots__/moderation-statuses.test.ts.snap +59 -3
  263. package/tests/__snapshots__/moderation.test.ts.snap +3 -3
  264. package/tests/get-record.test.ts +0 -8
  265. package/tests/moderation-events.test.ts +57 -5
  266. package/tests/moderation-status-tags.test.ts +92 -0
  267. package/tests/moderation-statuses.test.ts +20 -3
@@ -148,7 +148,7 @@ describe('moderation-events', () => {
148
148
 
149
149
  expect(
150
150
  [...new Set(allEvents.data.events.map((e) => e.event.$type))].length,
151
- ).toEqual(3)
151
+ ).toEqual(4)
152
152
  })
153
153
 
154
154
  it('returns events for all content by user', async () => {
@@ -203,10 +203,11 @@ describe('moderation-events', () => {
203
203
  const defaultEvents = await getPaginatedEvents()
204
204
  const reversedEvents = await getPaginatedEvents('asc')
205
205
 
206
- expect(allEvents.data.events.length).toEqual(5)
206
+ expect(allEvents.data.events.length).toEqual(7)
207
207
  expect(defaultEvents.length).toEqual(allEvents.data.events.length)
208
208
  expect(reversedEvents.length).toEqual(allEvents.data.events.length)
209
- expect(reversedEvents[0].id).toEqual(defaultEvents[4].id)
209
+ // First event in the reversed list is the last item in the default list
210
+ expect(reversedEvents[0].id).toEqual(defaultEvents[6].id)
210
211
  })
211
212
 
212
213
  it('returns report events matching reportType filters', async () => {
@@ -242,7 +243,7 @@ describe('moderation-events', () => {
242
243
  expect(eventsWithComment.data.events.length).toEqual(12)
243
244
  })
244
245
 
245
- it('returns events matching filter params for columns', async () => {
246
+ it('returns events matching filter params for labels', async () => {
246
247
  const [negatedLabelEvent, createdLabelEvent] = await Promise.all([
247
248
  emitModerationEvent({
248
249
  event: {
@@ -301,6 +302,54 @@ describe('moderation-events', () => {
301
302
  withoutOneLabel.data.events[0].id,
302
303
  )
303
304
  })
305
+ it('returns events matching filter params for tags', async () => {
306
+ const tagEvent = async ({
307
+ add,
308
+ remove,
309
+ }: {
310
+ add: string[]
311
+ remove: string[]
312
+ }) =>
313
+ emitModerationEvent({
314
+ event: {
315
+ $type: 'com.atproto.admin.defs#modEventTag',
316
+ comment: 'X',
317
+ add,
318
+ remove,
319
+ },
320
+ subject: {
321
+ $type: 'com.atproto.admin.defs#repoRef',
322
+ did: sc.dids.carol,
323
+ },
324
+ createdBy: sc.dids.bob,
325
+ })
326
+ const addEvent = await tagEvent({ add: ['L1', 'L2'], remove: [] })
327
+ const addAndRemoveEvent = await tagEvent({ add: ['L3'], remove: ['L2'] })
328
+ const [addFinder, addAndRemoveFinder, removeFinder] = await Promise.all([
329
+ queryModerationEvents({
330
+ addedTags: ['L1'],
331
+ }),
332
+ queryModerationEvents({
333
+ addedTags: ['L3'],
334
+ removedTags: ['L2'],
335
+ }),
336
+ queryModerationEvents({
337
+ removedTags: ['L2'],
338
+ }),
339
+ ])
340
+
341
+ expect(addFinder.data.events.length).toEqual(1)
342
+ expect(addEvent.data.id).toEqual(addFinder.data.events[0].id)
343
+
344
+ expect(addAndRemoveEvent.data.id).toEqual(
345
+ addAndRemoveFinder.data.events[0].id,
346
+ )
347
+ expect(addAndRemoveEvent.data.id).toEqual(
348
+ addAndRemoveFinder.data.events[0].id,
349
+ )
350
+ expect(addAndRemoveEvent.data.event.add).toEqual(['L3'])
351
+ expect(addAndRemoveEvent.data.event.remove).toEqual(['L2'])
352
+ })
304
353
  })
305
354
 
306
355
  describe('get event', () => {
@@ -331,7 +380,10 @@ describe('moderation-events', () => {
331
380
  })
332
381
  const { data: result } =
333
382
  await pdsAgent.api.com.atproto.admin.queryModerationEvents(
334
- { subject: post.ref.uriStr },
383
+ {
384
+ subject: post.ref.uriStr,
385
+ types: ['com.atproto.admin.defs#modEventTakedown'],
386
+ },
335
387
  { headers: network.ozone.adminAuthHeaders('moderator') },
336
388
  )
337
389
  expect(result.events[0]).toMatchObject({
@@ -0,0 +1,92 @@
1
+ import { TestNetwork, SeedClient, basicSeed } from '@atproto/dev-env'
2
+ import AtpAgent from '@atproto/api'
3
+ import { REASONSPAM } from '../src/lexicon/types/com/atproto/moderation/defs'
4
+
5
+ describe('moderation-status-tags', () => {
6
+ let network: TestNetwork
7
+ let agent: AtpAgent
8
+ let pdsAgent: AtpAgent
9
+ let sc: SeedClient
10
+
11
+ const emitModerationEvent = async (eventData) => {
12
+ return pdsAgent.api.com.atproto.admin.emitModerationEvent(eventData, {
13
+ encoding: 'application/json',
14
+ headers: network.bsky.adminAuthHeaders('moderator'),
15
+ })
16
+ }
17
+
18
+ const queryModerationStatuses = (statusQuery) =>
19
+ agent.api.com.atproto.admin.queryModerationStatuses(statusQuery, {
20
+ headers: network.bsky.adminAuthHeaders('moderator'),
21
+ })
22
+
23
+ beforeAll(async () => {
24
+ network = await TestNetwork.create({
25
+ dbPostgresSchema: 'ozone_moderation_status_tags',
26
+ })
27
+ agent = network.ozone.getClient()
28
+ pdsAgent = network.pds.getClient()
29
+ sc = network.getSeedClient()
30
+ await basicSeed(sc)
31
+ await network.processAll()
32
+ })
33
+
34
+ afterAll(async () => {
35
+ await network.close()
36
+ })
37
+
38
+ describe('manage tags on subject status', () => {
39
+ it('adds and removes tags on a subject', async () => {
40
+ const bobsAccount = {
41
+ $type: 'com.atproto.admin.defs#repoRef',
42
+ did: sc.dids.bob,
43
+ }
44
+ await emitModerationEvent({
45
+ subject: bobsAccount,
46
+ event: {
47
+ $type: 'com.atproto.admin.defs#modEventReport',
48
+ comment: 'X',
49
+ reportType: REASONSPAM,
50
+ },
51
+ createdBy: sc.dids.alice,
52
+ })
53
+ await emitModerationEvent({
54
+ subject: bobsAccount,
55
+ event: {
56
+ $type: 'com.atproto.admin.defs#modEventTag',
57
+ add: ['interaction-churn'],
58
+ remove: [],
59
+ },
60
+ createdBy: sc.dids.alice,
61
+ })
62
+ const { data: statusAfterInteractionTag } = await queryModerationStatuses(
63
+ {
64
+ subject: bobsAccount.did,
65
+ },
66
+ )
67
+ expect(statusAfterInteractionTag.subjectStatuses[0].tags).toContain(
68
+ 'interaction-churn',
69
+ )
70
+
71
+ await emitModerationEvent({
72
+ subject: bobsAccount,
73
+ event: {
74
+ $type: 'com.atproto.admin.defs#modEventTag',
75
+ remove: ['interaction-churn'],
76
+ add: ['follow-churn'],
77
+ },
78
+ createdBy: sc.dids.alice,
79
+ })
80
+ const { data: statusAfterFollowTag } = await queryModerationStatuses({
81
+ subject: bobsAccount.did,
82
+ })
83
+
84
+ expect(statusAfterFollowTag.subjectStatuses[0].tags).not.toContain(
85
+ 'interaction-churn',
86
+ )
87
+ expect(statusAfterFollowTag.subjectStatuses[0].tags).toContain(
88
+ 'follow-churn',
89
+ )
90
+ })
91
+ })
92
+ })
@@ -39,8 +39,8 @@ describe('moderation-statuses', () => {
39
39
  }
40
40
  const bobsPost = {
41
41
  $type: 'com.atproto.repo.strongRef',
42
- uri: sc.posts[sc.dids.bob][1].ref.uriStr,
43
- cid: sc.posts[sc.dids.bob][1].ref.cidStr,
42
+ uri: sc.posts[sc.dids.bob][0].ref.uriStr,
43
+ cid: sc.posts[sc.dids.bob][0].ref.cidStr,
44
44
  }
45
45
  const alicesPost = {
46
46
  $type: 'com.atproto.repo.strongRef',
@@ -95,6 +95,23 @@ describe('moderation-statuses', () => {
95
95
  expect(forSnapshot(response.data.subjectStatuses)).toMatchSnapshot()
96
96
  })
97
97
 
98
+ it('returns statuses filtered by subject language', async () => {
99
+ const klingonQueue = await queryModerationStatuses({
100
+ tags: ['lang:i'],
101
+ })
102
+
103
+ expect(forSnapshot(klingonQueue.data.subjectStatuses)).toMatchSnapshot()
104
+
105
+ const nonKlingonQueue = await queryModerationStatuses({
106
+ excludeTags: ['lang:i'],
107
+ })
108
+
109
+ // Verify that the klingon tagged subject is not returned when excluding klingon
110
+ expect(
111
+ nonKlingonQueue.data.subjectStatuses.map((s) => s.id),
112
+ ).not.toContain(klingonQueue.data.subjectStatuses[0].id)
113
+ })
114
+
98
115
  it('returns paginated statuses', async () => {
99
116
  // We know there will be exactly 4 statuses in db
100
117
  const getPaginatedStatuses = async (
@@ -119,7 +136,7 @@ describe('moderation-statuses', () => {
119
136
  }
120
137
 
121
138
  const list = await getPaginatedStatuses({})
122
- expect(list[0].id).toEqual(4)
139
+ expect(list[0].id).toEqual(7)
123
140
  expect(list[list.length - 1].id).toEqual(1)
124
141
 
125
142
  await emitModerationEvent({