@atproto/ozone 0.1.74 → 0.1.75

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 (331) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/bin/migration-create.ts +2 -2
  3. package/dist/api/chat/getActorMetadata.d.ts +1 -1
  4. package/dist/api/chat/getActorMetadata.d.ts.map +1 -1
  5. package/dist/api/chat/getActorMetadata.js.map +1 -1
  6. package/dist/api/chat/getMessageContext.d.ts +1 -1
  7. package/dist/api/chat/getMessageContext.d.ts.map +1 -1
  8. package/dist/api/chat/getMessageContext.js.map +1 -1
  9. package/dist/api/chat/index.d.ts +1 -1
  10. package/dist/api/chat/index.d.ts.map +1 -1
  11. package/dist/api/communication/createTemplate.d.ts +1 -1
  12. package/dist/api/communication/createTemplate.d.ts.map +1 -1
  13. package/dist/api/communication/createTemplate.js.map +1 -1
  14. package/dist/api/communication/deleteTemplate.d.ts +1 -1
  15. package/dist/api/communication/deleteTemplate.d.ts.map +1 -1
  16. package/dist/api/communication/listTemplates.d.ts +1 -1
  17. package/dist/api/communication/listTemplates.d.ts.map +1 -1
  18. package/dist/api/communication/updateTemplate.d.ts +1 -1
  19. package/dist/api/communication/updateTemplate.d.ts.map +1 -1
  20. package/dist/api/communication/updateTemplate.js.map +1 -1
  21. package/dist/api/health.d.ts +3 -3
  22. package/dist/api/health.d.ts.map +1 -1
  23. package/dist/api/health.js +2 -5
  24. package/dist/api/health.js.map +1 -1
  25. package/dist/api/index.d.ts +1 -1
  26. package/dist/api/index.d.ts.map +1 -1
  27. package/dist/api/index.js +20 -20
  28. package/dist/api/index.js.map +1 -1
  29. package/dist/api/label/fetchLabels.d.ts +1 -1
  30. package/dist/api/label/fetchLabels.d.ts.map +1 -1
  31. package/dist/api/label/queryLabels.d.ts +1 -1
  32. package/dist/api/label/queryLabels.d.ts.map +1 -1
  33. package/dist/api/label/queryLabels.js +1 -1
  34. package/dist/api/label/queryLabels.js.map +1 -1
  35. package/dist/api/label/subscribeLabels.d.ts +1 -1
  36. package/dist/api/label/subscribeLabels.d.ts.map +1 -1
  37. package/dist/api/label/subscribeLabels.js +2 -5
  38. package/dist/api/label/subscribeLabels.js.map +1 -1
  39. package/dist/api/moderation/emitEvent.d.ts +1 -1
  40. package/dist/api/moderation/emitEvent.d.ts.map +1 -1
  41. package/dist/api/moderation/emitEvent.js +5 -5
  42. package/dist/api/moderation/emitEvent.js.map +1 -1
  43. package/dist/api/moderation/getEvent.d.ts +1 -1
  44. package/dist/api/moderation/getEvent.d.ts.map +1 -1
  45. package/dist/api/moderation/getRecord.d.ts +1 -1
  46. package/dist/api/moderation/getRecord.d.ts.map +1 -1
  47. package/dist/api/moderation/getRecord.js +1 -1
  48. package/dist/api/moderation/getRecord.js.map +1 -1
  49. package/dist/api/moderation/getRecords.d.ts +1 -1
  50. package/dist/api/moderation/getRecords.d.ts.map +1 -1
  51. package/dist/api/moderation/getRecords.js +1 -1
  52. package/dist/api/moderation/getRecords.js.map +1 -1
  53. package/dist/api/moderation/getRepo.d.ts +1 -1
  54. package/dist/api/moderation/getRepo.d.ts.map +1 -1
  55. package/dist/api/moderation/getRepos.d.ts +1 -1
  56. package/dist/api/moderation/getRepos.d.ts.map +1 -1
  57. package/dist/api/moderation/queryEvents.d.ts +1 -1
  58. package/dist/api/moderation/queryEvents.d.ts.map +1 -1
  59. package/dist/api/moderation/queryStatuses.d.ts +1 -1
  60. package/dist/api/moderation/queryStatuses.d.ts.map +1 -1
  61. package/dist/api/moderation/searchRepos.d.ts +1 -1
  62. package/dist/api/moderation/searchRepos.d.ts.map +1 -1
  63. package/dist/api/moderation/searchRepos.js.map +1 -1
  64. package/dist/api/proxied.d.ts +1 -1
  65. package/dist/api/proxied.d.ts.map +1 -1
  66. package/dist/api/report/createReport.d.ts +1 -1
  67. package/dist/api/report/createReport.d.ts.map +1 -1
  68. package/dist/api/report/createReport.js +6 -6
  69. package/dist/api/report/createReport.js.map +1 -1
  70. package/dist/api/server/getConfig.d.ts +1 -1
  71. package/dist/api/server/getConfig.d.ts.map +1 -1
  72. package/dist/api/server/getConfig.js.map +1 -1
  73. package/dist/api/set/addValues.d.ts +1 -1
  74. package/dist/api/set/addValues.d.ts.map +1 -1
  75. package/dist/api/set/deleteSet.d.ts +1 -1
  76. package/dist/api/set/deleteSet.d.ts.map +1 -1
  77. package/dist/api/set/deleteValues.d.ts +1 -1
  78. package/dist/api/set/deleteValues.d.ts.map +1 -1
  79. package/dist/api/set/getValues.d.ts +1 -1
  80. package/dist/api/set/getValues.d.ts.map +1 -1
  81. package/dist/api/set/querySets.d.ts +1 -1
  82. package/dist/api/set/querySets.d.ts.map +1 -1
  83. package/dist/api/set/upsertSet.d.ts +1 -1
  84. package/dist/api/set/upsertSet.d.ts.map +1 -1
  85. package/dist/api/setting/listOptions.d.ts +1 -1
  86. package/dist/api/setting/listOptions.d.ts.map +1 -1
  87. package/dist/api/setting/removeOptions.d.ts +1 -1
  88. package/dist/api/setting/removeOptions.d.ts.map +1 -1
  89. package/dist/api/setting/upsertOption.d.ts +1 -1
  90. package/dist/api/setting/upsertOption.d.ts.map +1 -1
  91. package/dist/api/setting/upsertOption.js +2 -2
  92. package/dist/api/setting/upsertOption.js.map +1 -1
  93. package/dist/api/team/addMember.d.ts +1 -1
  94. package/dist/api/team/addMember.d.ts.map +1 -1
  95. package/dist/api/team/deleteMember.d.ts +1 -1
  96. package/dist/api/team/deleteMember.d.ts.map +1 -1
  97. package/dist/api/team/listMembers.d.ts +1 -1
  98. package/dist/api/team/listMembers.d.ts.map +1 -1
  99. package/dist/api/team/updateMember.d.ts +1 -1
  100. package/dist/api/team/updateMember.d.ts.map +1 -1
  101. package/dist/api/util.d.ts +4 -4
  102. package/dist/api/util.d.ts.map +1 -1
  103. package/dist/api/util.js +1 -1
  104. package/dist/api/util.js.map +1 -1
  105. package/dist/api/well-known.d.ts +3 -3
  106. package/dist/api/well-known.d.ts.map +1 -1
  107. package/dist/api/well-known.js +2 -5
  108. package/dist/api/well-known.js.map +1 -1
  109. package/dist/communication-service/template.d.ts +1 -1
  110. package/dist/communication-service/template.d.ts.map +1 -1
  111. package/dist/config/config.d.ts.map +1 -1
  112. package/dist/config/config.js.map +1 -1
  113. package/dist/config/secrets.js +3 -3
  114. package/dist/config/secrets.js.map +1 -1
  115. package/dist/context.d.ts +9 -10
  116. package/dist/context.d.ts.map +1 -1
  117. package/dist/context.js +11 -12
  118. package/dist/context.js.map +1 -1
  119. package/dist/daemon/blob-diverter.d.ts +2 -2
  120. package/dist/daemon/blob-diverter.d.ts.map +1 -1
  121. package/dist/daemon/blob-diverter.js +3 -3
  122. package/dist/daemon/blob-diverter.js.map +1 -1
  123. package/dist/daemon/context.d.ts +1 -2
  124. package/dist/daemon/context.d.ts.map +1 -1
  125. package/dist/daemon/context.js +6 -7
  126. package/dist/daemon/context.js.map +1 -1
  127. package/dist/daemon/event-pusher.d.ts +3 -3
  128. package/dist/daemon/event-pusher.d.ts.map +1 -1
  129. package/dist/daemon/event-pusher.js +2 -2
  130. package/dist/daemon/event-pusher.js.map +1 -1
  131. package/dist/daemon/event-reverser.d.ts +1 -1
  132. package/dist/daemon/event-reverser.d.ts.map +1 -1
  133. package/dist/daemon/event-reverser.js.map +1 -1
  134. package/dist/daemon/index.d.ts +1 -1
  135. package/dist/daemon/index.d.ts.map +1 -1
  136. package/dist/daemon/index.js +2 -5
  137. package/dist/daemon/index.js.map +1 -1
  138. package/dist/daemon/materialized-view-refresher.js +1 -1
  139. package/dist/daemon/materialized-view-refresher.js.map +1 -1
  140. package/dist/db/index.d.ts +2 -2
  141. package/dist/db/index.d.ts.map +1 -1
  142. package/dist/db/index.js +5 -5
  143. package/dist/db/index.js.map +1 -1
  144. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts.map +1 -1
  145. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js.map +1 -1
  146. package/dist/db/schema/index.d.ts +11 -11
  147. package/dist/db/schema/index.d.ts.map +1 -1
  148. package/dist/db/schema/moderation_subject_status.d.ts +1 -1
  149. package/dist/db/schema/moderation_subject_status.d.ts.map +1 -1
  150. package/dist/db/types.d.ts +1 -1
  151. package/dist/db/types.d.ts.map +1 -1
  152. package/dist/db/types.js.map +1 -1
  153. package/dist/error.d.ts.map +1 -1
  154. package/dist/error.js.map +1 -1
  155. package/dist/index.d.ts +3 -3
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +9 -9
  158. package/dist/index.js.map +1 -1
  159. package/dist/lexicon/lexicons.d.ts +56 -2
  160. package/dist/lexicon/lexicons.d.ts.map +1 -1
  161. package/dist/lexicon/lexicons.js +32 -0
  162. package/dist/lexicon/lexicons.js.map +1 -1
  163. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +19 -1
  164. package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
  165. package/dist/lexicon/types/app/bsky/actor/defs.js +10 -0
  166. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  167. package/dist/lexicon/types/app/bsky/feed/postgate.d.ts +1 -0
  168. package/dist/lexicon/types/app/bsky/feed/postgate.d.ts.map +1 -1
  169. package/dist/lexicon/types/app/bsky/feed/postgate.js.map +1 -1
  170. package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts +1 -0
  171. package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts.map +1 -1
  172. package/dist/lexicon/types/app/bsky/feed/threadgate.js.map +1 -1
  173. package/dist/logger.js +2 -25
  174. package/dist/logger.js.map +1 -1
  175. package/dist/mod-service/index.d.ts +31 -31
  176. package/dist/mod-service/index.d.ts.map +1 -1
  177. package/dist/mod-service/index.js +14 -14
  178. package/dist/mod-service/index.js.map +1 -1
  179. package/dist/mod-service/status.d.ts +24 -24
  180. package/dist/mod-service/status.d.ts.map +1 -1
  181. package/dist/mod-service/subject.d.ts +3 -3
  182. package/dist/mod-service/subject.d.ts.map +1 -1
  183. package/dist/mod-service/subject.js.map +1 -1
  184. package/dist/mod-service/types.d.ts +2 -2
  185. package/dist/mod-service/types.d.ts.map +1 -1
  186. package/dist/mod-service/views.d.ts +6 -6
  187. package/dist/mod-service/views.d.ts.map +1 -1
  188. package/dist/mod-service/views.js +6 -7
  189. package/dist/mod-service/views.js.map +1 -1
  190. package/dist/sequencer/outbox.d.ts +1 -2
  191. package/dist/sequencer/outbox.d.ts.map +1 -1
  192. package/dist/sequencer/outbox.js +0 -1
  193. package/dist/sequencer/outbox.js.map +1 -1
  194. package/dist/sequencer/sequencer.d.ts +3 -4
  195. package/dist/sequencer/sequencer.d.ts.map +1 -1
  196. package/dist/sequencer/sequencer.js +3 -4
  197. package/dist/sequencer/sequencer.js.map +1 -1
  198. package/dist/set/service.d.ts +2 -2
  199. package/dist/set/service.d.ts.map +1 -1
  200. package/dist/set/service.js.map +1 -1
  201. package/dist/setting/service.d.ts +3 -3
  202. package/dist/setting/service.d.ts.map +1 -1
  203. package/dist/setting/service.js.map +1 -1
  204. package/dist/setting/validators.d.ts.map +1 -1
  205. package/dist/setting/validators.js +1 -1
  206. package/dist/setting/validators.js.map +1 -1
  207. package/dist/tag-service/embed-tagger.d.ts.map +1 -1
  208. package/dist/tag-service/embed-tagger.js +1 -1
  209. package/dist/tag-service/embed-tagger.js.map +1 -1
  210. package/dist/tag-service/index.d.ts.map +1 -1
  211. package/dist/tag-service/index.js +1 -1
  212. package/dist/tag-service/index.js.map +1 -1
  213. package/dist/tag-service/language-tagger.d.ts.map +1 -1
  214. package/dist/tag-service/language-tagger.js +1 -1
  215. package/dist/tag-service/language-tagger.js.map +1 -1
  216. package/dist/team/index.d.ts +3 -3
  217. package/dist/team/index.d.ts.map +1 -1
  218. package/dist/team/index.js +2 -2
  219. package/dist/team/index.js.map +1 -1
  220. package/dist/util.d.ts +1 -1
  221. package/dist/util.d.ts.map +1 -1
  222. package/dist/util.js +1 -1
  223. package/dist/util.js.map +1 -1
  224. package/package.json +14 -11
  225. package/src/api/chat/getActorMetadata.ts +2 -2
  226. package/src/api/chat/getMessageContext.ts +2 -2
  227. package/src/api/chat/index.ts +1 -1
  228. package/src/api/communication/createTemplate.ts +2 -2
  229. package/src/api/communication/deleteTemplate.ts +1 -1
  230. package/src/api/communication/listTemplates.ts +1 -1
  231. package/src/api/communication/updateTemplate.ts +2 -2
  232. package/src/api/health.ts +4 -4
  233. package/src/api/index.ts +21 -21
  234. package/src/api/label/fetchLabels.ts +1 -1
  235. package/src/api/label/queryLabels.ts +3 -3
  236. package/src/api/label/subscribeLabels.ts +3 -3
  237. package/src/api/moderation/emitEvent.ts +6 -6
  238. package/src/api/moderation/getEvent.ts +1 -1
  239. package/src/api/moderation/getRecord.ts +2 -2
  240. package/src/api/moderation/getRecords.ts +2 -2
  241. package/src/api/moderation/getRepo.ts +1 -1
  242. package/src/api/moderation/getRepos.ts +1 -1
  243. package/src/api/moderation/queryEvents.ts +1 -1
  244. package/src/api/moderation/queryStatuses.ts +1 -1
  245. package/src/api/moderation/searchRepos.ts +2 -2
  246. package/src/api/proxied.ts +1 -1
  247. package/src/api/report/createReport.ts +5 -5
  248. package/src/api/server/getConfig.ts +1 -1
  249. package/src/api/set/addValues.ts +1 -1
  250. package/src/api/set/deleteSet.ts +1 -1
  251. package/src/api/set/deleteValues.ts +1 -1
  252. package/src/api/set/getValues.ts +1 -1
  253. package/src/api/set/querySets.ts +1 -1
  254. package/src/api/set/upsertSet.ts +1 -1
  255. package/src/api/setting/listOptions.ts +1 -1
  256. package/src/api/setting/removeOptions.ts +2 -2
  257. package/src/api/setting/upsertOption.ts +5 -5
  258. package/src/api/team/addMember.ts +1 -1
  259. package/src/api/team/deleteMember.ts +1 -1
  260. package/src/api/team/listMembers.ts +1 -1
  261. package/src/api/team/updateMember.ts +1 -1
  262. package/src/api/util.ts +11 -11
  263. package/src/api/well-known.ts +4 -4
  264. package/src/communication-service/template.ts +1 -1
  265. package/src/config/config.ts +1 -1
  266. package/src/config/secrets.ts +1 -1
  267. package/src/context.ts +13 -14
  268. package/src/daemon/blob-diverter.ts +7 -8
  269. package/src/daemon/context.ts +6 -8
  270. package/src/daemon/event-pusher.ts +6 -6
  271. package/src/daemon/event-reverser.ts +1 -1
  272. package/src/daemon/index.ts +1 -1
  273. package/src/daemon/materialized-view-refresher.ts +1 -1
  274. package/src/db/index.ts +8 -8
  275. package/src/db/migrations/20241220T144630860Z-stats-materialized-views.ts +1 -3
  276. package/src/db/pagination.ts +1 -1
  277. package/src/db/schema/index.ts +11 -12
  278. package/src/db/schema/moderation_subject_status.ts +1 -1
  279. package/src/db/types.ts +1 -1
  280. package/src/error.ts +1 -1
  281. package/src/index.ts +11 -11
  282. package/src/lexicon/lexicons.ts +37 -0
  283. package/src/lexicon/types/app/bsky/actor/defs.ts +36 -0
  284. package/src/lexicon/types/app/bsky/feed/postgate.ts +1 -0
  285. package/src/lexicon/types/app/bsky/feed/threadgate.ts +1 -0
  286. package/src/logger.ts +1 -1
  287. package/src/mod-service/index.ts +33 -33
  288. package/src/mod-service/status.ts +1 -1
  289. package/src/mod-service/subject.ts +4 -4
  290. package/src/mod-service/types.ts +2 -2
  291. package/src/mod-service/views.ts +16 -17
  292. package/src/sequencer/outbox.ts +1 -3
  293. package/src/sequencer/sequencer.ts +5 -7
  294. package/src/set/service.ts +2 -2
  295. package/src/setting/service.ts +5 -5
  296. package/src/setting/validators.ts +1 -1
  297. package/src/tag-service/embed-tagger.ts +3 -3
  298. package/src/tag-service/index.ts +3 -3
  299. package/src/tag-service/language-tagger.ts +1 -2
  300. package/src/team/index.ts +6 -6
  301. package/src/util.ts +2 -2
  302. package/tests/3p-labeler.test.ts +5 -5
  303. package/tests/_util.ts +4 -4
  304. package/tests/ack-all-subjects-of-account.test.ts +4 -4
  305. package/tests/blob-divert.test.ts +1 -1
  306. package/tests/communication-templates.test.ts +1 -1
  307. package/tests/content-tagger.test.ts +1 -1
  308. package/tests/get-config.test.ts +1 -1
  309. package/tests/get-lists.test.ts +4 -4
  310. package/tests/get-profiles.test.ts +2 -3
  311. package/tests/get-record.test.ts +4 -4
  312. package/tests/get-records.test.ts +4 -4
  313. package/tests/get-repo.test.ts +3 -3
  314. package/tests/get-repos.test.ts +3 -3
  315. package/tests/get-starter-pack.test.ts +5 -5
  316. package/tests/moderation-appeals.test.ts +6 -6
  317. package/tests/moderation-events.test.ts +4 -4
  318. package/tests/moderation-status-tags.test.ts +2 -2
  319. package/tests/moderation-statuses.test.ts +8 -8
  320. package/tests/moderation.test.ts +9 -9
  321. package/tests/protected-tags.test.ts +3 -3
  322. package/tests/query-labels.test.ts +3 -3
  323. package/tests/record-and-account-events.test.ts +8 -7
  324. package/tests/repo-search.test.ts +2 -2
  325. package/tests/report-muting.test.ts +6 -6
  326. package/tests/sequencer.test.ts +3 -3
  327. package/tests/server.test.ts +1 -1
  328. package/tests/sets.test.ts +2 -2
  329. package/tests/settings.test.ts +2 -2
  330. package/tests/takedown.test.ts +3 -12
  331. package/tests/team.test.ts +1 -1
@@ -8,6 +8,8 @@ import { CID } from 'multiformats/cid'
8
8
  import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs'
9
9
  import * as AppBskyGraphDefs from '../graph/defs'
10
10
  import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef'
11
+ import * as AppBskyFeedThreadgate from '../feed/threadgate'
12
+ import * as AppBskyFeedPostgate from '../feed/postgate'
11
13
 
12
14
  export interface ProfileViewBasic {
13
15
  did: string
@@ -188,6 +190,7 @@ export type Preferences = (
188
190
  | HiddenPostsPref
189
191
  | BskyAppStatePref
190
192
  | LabelersPref
193
+ | PostInteractionSettingsPref
191
194
  | { $type: string; [k: string]: unknown }
192
195
  )[]
193
196
 
@@ -532,3 +535,36 @@ export function isNux(v: unknown): v is Nux {
532
535
  export function validateNux(v: unknown): ValidationResult {
533
536
  return lexicons.validate('app.bsky.actor.defs#nux', v)
534
537
  }
538
+
539
+ /** Default post interaction settings for the account. These values should be applied as default values when creating new posts. These refs should mirror the threadgate and postgate records exactly. */
540
+ export interface PostInteractionSettingsPref {
541
+ /** Matches threadgate record. List of rules defining who can reply to this users posts. If value is an empty array, no one can reply. If value is undefined, anyone can reply. */
542
+ threadgateAllowRules?: (
543
+ | AppBskyFeedThreadgate.MentionRule
544
+ | AppBskyFeedThreadgate.FollowingRule
545
+ | AppBskyFeedThreadgate.ListRule
546
+ | { $type: string; [k: string]: unknown }
547
+ )[]
548
+ /** Matches postgate record. List of rules defining who can embed this users posts. If value is an empty array or is undefined, no particular rules apply and anyone can embed. */
549
+ postgateEmbeddingRules?: (
550
+ | AppBskyFeedPostgate.DisableRule
551
+ | { $type: string; [k: string]: unknown }
552
+ )[]
553
+ [k: string]: unknown
554
+ }
555
+
556
+ export function isPostInteractionSettingsPref(
557
+ v: unknown,
558
+ ): v is PostInteractionSettingsPref {
559
+ return (
560
+ isObj(v) &&
561
+ hasProp(v, '$type') &&
562
+ v.$type === 'app.bsky.actor.defs#postInteractionSettingsPref'
563
+ )
564
+ }
565
+
566
+ export function validatePostInteractionSettingsPref(
567
+ v: unknown,
568
+ ): ValidationResult {
569
+ return lexicons.validate('app.bsky.actor.defs#postInteractionSettingsPref', v)
570
+ }
@@ -12,6 +12,7 @@ export interface Record {
12
12
  post: string
13
13
  /** List of AT-URIs embedding this post that the author has detached from. */
14
14
  detachedEmbeddingUris?: string[]
15
+ /** List of rules defining who can embed this post. If value is an empty array or is undefined, no particular rules apply and anyone can embed. */
15
16
  embeddingRules?: (DisableRule | { $type: string; [k: string]: unknown })[]
16
17
  [k: string]: unknown
17
18
  }
@@ -9,6 +9,7 @@ import { CID } from 'multiformats/cid'
9
9
  export interface Record {
10
10
  /** Reference (AT-URI) to the post record. */
11
11
  post: string
12
+ /** List of rules defining who can reply to this post. If value is an empty array, no one can reply. If value is undefined, anyone can reply. */
12
13
  allow?: (
13
14
  | MentionRule
14
15
  | FollowingRule
package/src/logger.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type IncomingMessage } from 'node:http'
2
- import pinoHttp, { stdSerializers } from 'pino-http'
2
+ import { pinoHttp, stdSerializers } from 'pino-http'
3
3
  import { obfuscateHeaders, subsystemLogger } from '@atproto/common'
4
4
 
5
5
  export const dbLogger: ReturnType<typeof subsystemLogger> =
@@ -1,36 +1,56 @@
1
1
  import net from 'node:net'
2
2
  import { Insertable, sql } from 'kysely'
3
3
  import { CID } from 'multiformats/cid'
4
- import { AtUri, INVALID_HANDLE } from '@atproto/syntax'
5
- import { InvalidRequestError } from '@atproto/xrpc-server'
4
+ import { AtpAgent } from '@atproto/api'
6
5
  import { addHoursToDate, chunkArray } from '@atproto/common'
7
6
  import { Keypair } from '@atproto/crypto'
8
7
  import { IdResolver } from '@atproto/identity'
9
- import { AtpAgent } from '@atproto/api'
8
+ import { AtUri, INVALID_HANDLE } from '@atproto/syntax'
9
+ import { InvalidRequestError } from '@atproto/xrpc-server'
10
+ import { getReviewState } from '../api/util'
11
+ import { BackgroundQueue } from '../background'
12
+ import { OzoneConfig } from '../config'
13
+ import { EventPusher } from '../daemon'
10
14
  import { Database } from '../db'
11
- import { AuthHeaders, ModerationViews } from './views'
15
+ import { StatusKeyset, TimeIdKeyset, paginate } from '../db/pagination'
16
+ import { BlobPushEvent } from '../db/schema/blob_push_event'
17
+ import { LabelChannel } from '../db/schema/label'
18
+ import { ModerationEvent } from '../db/schema/moderation_event'
19
+ import { jsonb } from '../db/types'
20
+ import { ImageInvalidator } from '../image-invalidator'
21
+ import { ids } from '../lexicon/lexicons'
22
+ import { RepoBlobRef, RepoRef } from '../lexicon/types/com/atproto/admin/defs'
23
+ import { Label } from '../lexicon/types/com/atproto/label/defs'
12
24
  import { Main as StrongRef } from '../lexicon/types/com/atproto/repo/strongRef'
13
25
  import {
26
+ REVIEWESCALATED,
27
+ REVIEWOPEN,
28
+ isAccountEvent,
29
+ isIdentityEvent,
30
+ isModEventAcknowledge,
14
31
  isModEventComment,
32
+ isModEventEmail,
15
33
  isModEventLabel,
16
34
  isModEventMute,
17
35
  isModEventReport,
18
- isModEventTakedown,
19
- isModEventEmail,
20
36
  isModEventTag,
21
- isAccountEvent,
22
- isIdentityEvent,
37
+ isModEventTakedown,
23
38
  isRecordEvent,
24
- REVIEWESCALATED,
25
- REVIEWOPEN,
26
- isModEventAcknowledge,
27
39
  } from '../lexicon/types/tools/ozone/moderation/defs'
28
- import { RepoRef, RepoBlobRef } from '../lexicon/types/com/atproto/admin/defs'
40
+ import { QueryParams as QueryStatusParams } from '../lexicon/types/tools/ozone/moderation/queryStatuses'
41
+ import { httpLogger as log } from '../logger'
42
+ import { LABELER_HEADER_NAME, ParsedLabelers } from '../util'
29
43
  import {
30
44
  adjustModerationSubjectStatus,
31
45
  getStatusIdentifierFromSubject,
32
46
  moderationSubjectStatusQueryBuilder,
33
47
  } from './status'
48
+ import {
49
+ ModSubject,
50
+ RecordSubject,
51
+ RepoSubject,
52
+ subjectFromStatusRow,
53
+ } from './subject'
34
54
  import {
35
55
  ModEventType,
36
56
  ModerationEventRow,
@@ -38,28 +58,8 @@ import {
38
58
  ModerationSubjectStatusRowWithHandle,
39
59
  ReversibleModerationEvent,
40
60
  } from './types'
41
- import { ModerationEvent } from '../db/schema/moderation_event'
42
- import { StatusKeyset, TimeIdKeyset, paginate } from '../db/pagination'
43
- import { Label } from '../lexicon/types/com/atproto/label/defs'
44
- import { QueryParams as QueryStatusParams } from '../lexicon/types/tools/ozone/moderation/queryStatuses'
45
- import {
46
- ModSubject,
47
- RecordSubject,
48
- RepoSubject,
49
- subjectFromStatusRow,
50
- } from './subject'
51
- import { jsonb } from '../db/types'
52
- import { LabelChannel } from '../db/schema/label'
53
- import { BlobPushEvent } from '../db/schema/blob_push_event'
54
- import { BackgroundQueue } from '../background'
55
- import { EventPusher } from '../daemon'
56
61
  import { formatLabel, formatLabelRow, signLabel } from './util'
57
- import { ImageInvalidator } from '../image-invalidator'
58
- import { httpLogger as log } from '../logger'
59
- import { OzoneConfig } from '../config'
60
- import { LABELER_HEADER_NAME, ParsedLabelers } from '../util'
61
- import { ids } from '../lexicon/lexicons'
62
- import { getReviewState } from '../api/util'
62
+ import { AuthHeaders, ModerationViews } from './views'
63
63
 
64
64
  export type ModerationServiceCreator = (db: Database) => ModerationService
65
65
 
@@ -3,7 +3,7 @@
3
3
  import { HOUR } from '@atproto/common'
4
4
  import { AtUri } from '@atproto/syntax'
5
5
  import { Database } from '../db'
6
- import DatabaseSchema from '../db/schema'
6
+ import { DatabaseSchema } from '../db/schema'
7
7
  import { jsonb } from '../db/types'
8
8
  import { REASONAPPEAL } from '../lexicon/types/com/atproto/moderation/defs'
9
9
  import {
@@ -1,11 +1,11 @@
1
1
  import { AtUri } from '@atproto/syntax'
2
- import { InputSchema as ReportInput } from '../lexicon/types/com/atproto/moderation/createReport'
3
- import { InputSchema as ActionInput } from '../lexicon/types/tools/ozone/moderation/emitEvent'
4
2
  import { InvalidRequestError } from '@atproto/xrpc-server'
5
- import { ModerationEventRow, ModerationSubjectStatusRow } from './types'
3
+ import { MessageRef } from '../lexicon/types/chat/bsky/convo/defs'
6
4
  import { RepoRef } from '../lexicon/types/com/atproto/admin/defs'
5
+ import { InputSchema as ReportInput } from '../lexicon/types/com/atproto/moderation/createReport'
7
6
  import { Main as StrongRef } from '../lexicon/types/com/atproto/repo/strongRef'
8
- import { MessageRef } from '../lexicon/types/chat/bsky/convo/defs'
7
+ import { InputSchema as ActionInput } from '../lexicon/types/tools/ozone/moderation/emitEvent'
8
+ import { ModerationEventRow, ModerationSubjectStatusRow } from './types'
9
9
 
10
10
  type SubjectInput = ReportInput['subject'] | ActionInput['subject']
11
11
 
@@ -1,7 +1,7 @@
1
- import { Selectable } from 'kysely'
1
+ import { type Selectable } from 'kysely'
2
+ import { ToolsOzoneModerationDefs } from '@atproto/api'
2
3
  import { ModerationEvent } from '../db/schema/moderation_event'
3
4
  import { ModerationSubjectStatus } from '../db/schema/moderation_subject_status'
4
- import { ToolsOzoneModerationDefs } from '@atproto/api'
5
5
  import { ModSubject } from './subject'
6
6
 
7
7
  export type ModerationEventRow = Selectable<ModerationEvent>
@@ -1,35 +1,34 @@
1
1
  import { sql } from 'kysely'
2
- import { AtUri, INVALID_HANDLE, normalizeDatetimeAlways } from '@atproto/syntax'
3
- import { AtpAgent, AppBskyFeedDefs } from '@atproto/api'
2
+ import { AppBskyFeedDefs, AtpAgent } from '@atproto/api'
4
3
  import { dedupeStrs } from '@atproto/common'
5
- import { BlobRef } from '@atproto/lexicon'
6
4
  import { Keypair } from '@atproto/crypto'
5
+ import { BlobRef } from '@atproto/lexicon'
6
+ import { AtUri, INVALID_HANDLE, normalizeDatetimeAlways } from '@atproto/syntax'
7
7
  import { Database } from '../db'
8
+ import { LabelRow } from '../db/schema/label'
9
+ import { ids } from '../lexicon/lexicons'
10
+ import { AccountView } from '../lexicon/types/com/atproto/admin/defs'
11
+ import { Label, isSelfLabels } from '../lexicon/types/com/atproto/label/defs'
12
+ import { OutputSchema as ReportOutput } from '../lexicon/types/com/atproto/moderation/createReport'
13
+ import { REASONOTHER } from '../lexicon/types/com/atproto/moderation/defs'
8
14
  import {
15
+ BlobView,
9
16
  ModEventView,
10
- RepoView,
17
+ ModEventViewDetail,
11
18
  RecordView,
12
19
  RecordViewDetail,
13
- BlobView,
20
+ RepoView,
14
21
  SubjectStatusView,
15
- ModEventViewDetail,
16
22
  } from '../lexicon/types/tools/ozone/moderation/defs'
17
- import { AccountView } from '../lexicon/types/com/atproto/admin/defs'
18
- import { OutputSchema as ReportOutput } from '../lexicon/types/com/atproto/moderation/createReport'
19
- import { Label, isSelfLabels } from '../lexicon/types/com/atproto/label/defs'
23
+ import { dbLogger, httpLogger } from '../logger'
24
+ import { ParsedLabelers } from '../util'
25
+ import { moderationSubjectStatusQueryBuilder } from './status'
26
+ import { subjectFromEventRow, subjectFromStatusRow } from './subject'
20
27
  import {
21
28
  ModerationEventRowWithHandle,
22
29
  ModerationSubjectStatusRowWithHandle,
23
30
  } from './types'
24
- import { REASONOTHER } from '../lexicon/types/com/atproto/moderation/defs'
25
- import { subjectFromEventRow, subjectFromStatusRow } from './subject'
26
31
  import { formatLabel, signLabel } from './util'
27
- import { LabelRow } from '../db/schema/label'
28
- import { dbLogger } from '../logger'
29
- import { httpLogger } from '../logger'
30
- import { ParsedLabelers } from '../util'
31
- import { ids } from '../lexicon/lexicons'
32
- import { moderationSubjectStatusQueryBuilder } from './status'
33
32
 
34
33
  export type AuthHeaders = {
35
34
  headers: {
@@ -1,6 +1,6 @@
1
1
  import { AsyncBuffer, AsyncBufferFullError } from '@atproto/common'
2
2
  import { InvalidRequestError } from '@atproto/xrpc-server'
3
- import { Sequencer, LabelsEvt } from './sequencer'
3
+ import { LabelsEvt, Sequencer } from './sequencer'
4
4
 
5
5
  export type OutboxOpts = {
6
6
  maxBufferSize: number
@@ -121,5 +121,3 @@ export class Outbox {
121
121
  }
122
122
  }
123
123
  }
124
-
125
- export default Outbox
@@ -1,11 +1,11 @@
1
- import EventEmitter from 'events'
2
- import TypedEmitter from 'typed-emitter'
1
+ import EventEmitter from 'node:events'
3
2
  import { Selectable } from 'kysely'
4
3
  import { PoolClient } from 'pg'
5
- import { seqLogger as log } from '../logger'
6
- import Database from '../db'
4
+ import TypedEmitter from 'typed-emitter'
5
+ import { Database } from '../db'
6
+ import { Label as LabelTable, LabelChannel } from '../db/schema/label'
7
7
  import { Labels as LabelsEvt } from '../lexicon/types/com/atproto/label/subscribeLabels'
8
- import { LabelChannel, Label as LabelTable } from '../db/schema/label'
8
+ import { seqLogger as log } from '../logger'
9
9
  import { ModerationService } from '../mod-service'
10
10
 
11
11
  export type { Labels as LabelsEvt } from '../lexicon/types/com/atproto/label/subscribeLabels'
@@ -143,5 +143,3 @@ type SequencerEvents = {
143
143
  }
144
144
 
145
145
  export type SequencerEmitter = TypedEmitter<SequencerEvents>
146
-
147
- export default Sequencer
@@ -1,8 +1,8 @@
1
- import Database from '../db'
2
1
  import { Selectable } from 'kysely'
2
+ import { Database } from '../db'
3
+ import { TimeIdKeyset, paginate } from '../db/pagination'
3
4
  import { SetDetail } from '../db/schema/ozone_set'
4
5
  import { SetView } from '../lexicon/types/tools/ozone/set/defs'
5
- import { paginate, TimeIdKeyset } from '../db/pagination'
6
6
 
7
7
  export type SetServiceCreator = (db: Database) => SetService
8
8
 
@@ -1,10 +1,10 @@
1
- import Database from '../db'
2
- import { Selectable } from 'kysely'
3
- import { Option } from '../lexicon/types/tools/ozone/setting/defs'
4
- import { Setting, SettingScope } from '../db/schema/setting'
5
- import { Member } from '../db/schema/member'
6
1
  import assert from 'node:assert'
2
+ import { Selectable } from 'kysely'
7
3
  import { InvalidRequestError } from '@atproto/xrpc-server'
4
+ import { Database } from '../db'
5
+ import { Member } from '../db/schema/member'
6
+ import { Setting, SettingScope } from '../db/schema/setting'
7
+ import { Option } from '../lexicon/types/tools/ozone/setting/defs'
8
8
 
9
9
  export type SettingServiceCreator = (db: Database) => SettingService
10
10
 
@@ -1,7 +1,7 @@
1
1
  import { Selectable } from 'kysely'
2
+ import { InvalidRequestError } from '@atproto/xrpc-server'
2
3
  import { Setting } from '../db/schema/setting'
3
4
  import { PolicyListSettingKey, ProtectedTagSettingKey } from './constants'
4
- import { InvalidRequestError } from '@atproto/xrpc-server'
5
5
 
6
6
  export const settingValidators = new Map<
7
7
  string,
@@ -1,13 +1,13 @@
1
1
  import {
2
+ AppBskyEmbedExternal,
2
3
  AppBskyEmbedImages,
3
4
  AppBskyEmbedRecordWithMedia,
4
- AppBskyFeedPost,
5
5
  AppBskyEmbedVideo,
6
- AppBskyEmbedExternal,
6
+ AppBskyFeedPost,
7
7
  } from '@atproto/api'
8
+ import { ids } from '../lexicon/lexicons'
8
9
  import { langLogger as log } from '../logger'
9
10
  import { ContentTagger } from './content-tagger'
10
- import { ids } from '../lexicon/lexicons'
11
11
 
12
12
  export class EmbedTagger extends ContentTagger {
13
13
  tagPrefix = 'embed:'
@@ -1,10 +1,10 @@
1
+ import { langLogger as log } from '../logger'
1
2
  import { ModerationService } from '../mod-service'
2
3
  import { ModSubject } from '../mod-service/subject'
3
- import { langLogger as log } from '../logger'
4
+ import { ModerationSubjectStatusRow } from '../mod-service/types'
4
5
  import { ContentTagger } from './content-tagger'
5
- import { LanguageTagger } from './language-tagger'
6
6
  import { EmbedTagger } from './embed-tagger'
7
- import { ModerationSubjectStatusRow } from '../mod-service/types'
7
+ import { LanguageTagger } from './language-tagger'
8
8
 
9
9
  export class TagService {
10
10
  private taggers: ContentTagger[]
@@ -4,10 +4,9 @@ import {
4
4
  AppBskyFeedPost,
5
5
  AppBskyGraphList,
6
6
  } from '@atproto/api'
7
-
8
7
  import { langLogger as log } from '../logger'
9
- import { code3ToCode2 } from './language-data'
10
8
  import { ContentTagger } from './content-tagger'
9
+ import { code3ToCode2 } from './language-data'
11
10
 
12
11
  export class LanguageTagger extends ContentTagger {
13
12
  tagPrefix = 'lang:'
package/src/team/index.ts CHANGED
@@ -1,13 +1,13 @@
1
- import Database from '../db'
2
1
  import { Selectable } from 'kysely'
2
+ import { chunkArray } from '@atproto/common'
3
+ import { InvalidRequestError } from '@atproto/xrpc-server'
4
+ import { AppContext } from '../context'
5
+ import { Database } from '../db'
3
6
  import { Member } from '../db/schema/member'
4
- import { Member as TeamMember } from '../lexicon/types/tools/ozone/team/defs'
7
+ import { ids } from '../lexicon/lexicons'
5
8
  import { ProfileViewDetailed } from '../lexicon/types/app/bsky/actor/defs'
6
- import { InvalidRequestError } from '@atproto/xrpc-server'
7
- import { chunkArray } from '@atproto/common'
8
- import AppContext from '../context'
9
+ import { Member as TeamMember } from '../lexicon/types/tools/ozone/team/defs'
9
10
  import { httpLogger } from '../logger'
10
- import { ids } from '../lexicon/lexicons'
11
11
 
12
12
  export type TeamServiceCreator = (db: Database) => TeamService
13
13
 
package/src/util.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import assert from 'node:assert'
2
+ import { parseList } from 'structured-headers'
2
3
  import { createRetryable } from '@atproto/common'
3
4
  import { ResponseType, XRPCError } from '@atproto/xrpc'
4
- import { parseList } from 'structured-headers'
5
- import Database from './db'
5
+ import { Database } from './db'
6
6
 
7
7
  export const getSigningKeyId = async (
8
8
  db: Database,
@@ -1,15 +1,15 @@
1
+ import { AtpAgent } from '@atproto/api'
2
+ import { Secp256k1Keypair } from '@atproto/crypto'
1
3
  import {
4
+ ModeratorClient,
2
5
  SeedClient,
3
6
  TestNetwork,
4
- basicSeed,
5
7
  TestOzone,
6
- ModeratorClient,
8
+ basicSeed,
7
9
  createOzoneDid,
8
10
  } from '@atproto/dev-env'
9
- import { AtpAgent } from '@atproto/api'
10
- import { Secp256k1Keypair } from '@atproto/crypto'
11
- import { LABELER_HEADER_NAME } from '../src/util'
12
11
  import { ids } from '../src/lexicon/lexicons'
12
+ import { LABELER_HEADER_NAME } from '../src/util'
13
13
 
14
14
  describe('labels from 3p labelers', () => {
15
15
  let network: TestNetwork
package/tests/_util.ts CHANGED
@@ -1,16 +1,16 @@
1
- import { type Express } from 'express'
2
1
  import { Server } from 'node:http'
3
2
  import { AddressInfo } from 'node:net'
4
- import { AtUri } from '@atproto/syntax'
5
- import { lexToJson } from '@atproto/lexicon'
3
+ import { type Express } from 'express'
6
4
  import { CID } from 'multiformats/cid'
5
+ import { lexToJson } from '@atproto/lexicon'
6
+ import { AtUri } from '@atproto/syntax'
7
+ import { isViewRecord } from '../src/lexicon/types/app/bsky/embed/record'
7
8
  import {
8
9
  FeedViewPost,
9
10
  PostView,
10
11
  isPostView,
11
12
  isThreadViewPost,
12
13
  } from '../src/lexicon/types/app/bsky/feed/defs'
13
- import { isViewRecord } from '../src/lexicon/types/app/bsky/embed/record'
14
14
 
15
15
  // Swap out identifiers and dates with stable
16
16
  // values for the purpose of snapshot testing
@@ -1,10 +1,12 @@
1
+ import { ComAtprotoRepoStrongRef } from '@atproto/api'
1
2
  import {
2
- TestNetwork,
3
+ ModeratorClient,
3
4
  RecordRef,
4
5
  SeedClient,
6
+ TestNetwork,
5
7
  basicSeed,
6
- ModeratorClient,
7
8
  } from '@atproto/dev-env'
9
+ import { isRepoRef } from '../src/lexicon/types/com/atproto/admin/defs'
8
10
  import {
9
11
  REASONAPPEAL,
10
12
  REASONOTHER,
@@ -16,8 +18,6 @@ import {
16
18
  REVIEWOPEN,
17
19
  SubjectStatusView,
18
20
  } from '../src/lexicon/types/tools/ozone/moderation/defs'
19
- import { isRepoRef } from '../src/lexicon/types/com/atproto/admin/defs'
20
- import { ComAtprotoRepoStrongRef } from '@atproto/api'
21
21
 
22
22
  describe('acknowledge all subjects of account', () => {
23
23
  let network: TestNetwork
@@ -1,3 +1,4 @@
1
+ import assert from 'node:assert'
1
2
  import {
2
3
  ModeratorClient,
3
4
  SeedClient,
@@ -5,7 +6,6 @@ import {
5
6
  basicSeed,
6
7
  } from '@atproto/dev-env'
7
8
  import { ResponseType, XRPCError } from '@atproto/xrpc'
8
- import assert from 'node:assert'
9
9
  import { forSnapshot } from './_util'
10
10
 
11
11
  describe('blob divert', () => {
@@ -1,5 +1,5 @@
1
- import { TestNetwork, SeedClient, basicSeed } from '@atproto/dev-env'
2
1
  import { AtpAgent } from '@atproto/api'
2
+ import { SeedClient, TestNetwork, basicSeed } from '@atproto/dev-env'
3
3
  import { ids } from '../src/lexicon/lexicons'
4
4
 
5
5
  describe('communication-templates', () => {
@@ -4,8 +4,8 @@ import {
4
4
  TestNetwork,
5
5
  basicSeed,
6
6
  } from '@atproto/dev-env'
7
- import { REASONSPAM } from '../src/lexicon/types/com/atproto/moderation/defs'
8
7
  import { REASONMISLEADING } from '../dist/lexicon/types/com/atproto/moderation/defs'
8
+ import { REASONSPAM } from '../src/lexicon/types/com/atproto/moderation/defs'
9
9
 
10
10
  describe('moderation subject content tagging', () => {
11
11
  let network: TestNetwork
@@ -1,5 +1,5 @@
1
- import { TestNetwork, SeedClient, basicSeed } from '@atproto/dev-env'
2
1
  import { AtpAgent } from '@atproto/api'
2
+ import { SeedClient, TestNetwork, basicSeed } from '@atproto/dev-env'
3
3
  import { TOOLS_OZONE_TEAM } from '../src/lexicon'
4
4
  import { ids } from '../src/lexicon/lexicons'
5
5
 
@@ -1,14 +1,14 @@
1
+ import { AtpAgent, BSKY_LABELER_DID } from '@atproto/api'
1
2
  import {
3
+ ModeratorClient,
4
+ RecordRef,
2
5
  SeedClient,
3
6
  TestNetwork,
4
7
  TestOzone,
5
8
  basicSeed,
6
- ModeratorClient,
7
- RecordRef,
8
9
  } from '@atproto/dev-env'
9
- import { AtpAgent, BSKY_LABELER_DID } from '@atproto/api'
10
- import { TAKEDOWN_LABEL } from '../src/mod-service'
11
10
  import { ids } from '../src/lexicon/lexicons'
11
+ import { TAKEDOWN_LABEL } from '../src/mod-service'
12
12
 
13
13
  describe('admin get lists', () => {
14
14
  let network: TestNetwork
@@ -1,10 +1,9 @@
1
1
  import {
2
- TestNetwork,
2
+ ModeratorClient,
3
3
  SeedClient,
4
+ TestNetwork,
4
5
  basicSeed,
5
- ModeratorClient,
6
6
  } from '@atproto/dev-env'
7
- import { ids } from '../src/lexicon/lexicons'
8
7
 
9
8
  describe('get profiles through ozone', () => {
10
9
  let network: TestNetwork
@@ -1,18 +1,18 @@
1
+ import { AtpAgent } from '@atproto/api'
1
2
  import {
3
+ ModeratorClient,
2
4
  SeedClient,
3
5
  TestNetwork,
4
- basicSeed,
5
6
  TestOzone,
6
- ModeratorClient,
7
+ basicSeed,
7
8
  } from '@atproto/dev-env'
8
- import { AtpAgent } from '@atproto/api'
9
9
  import { AtUri } from '@atproto/syntax'
10
+ import { ids } from '../src/lexicon/lexicons'
10
11
  import {
11
12
  REASONOTHER,
12
13
  REASONSPAM,
13
14
  } from '../src/lexicon/types/com/atproto/moderation/defs'
14
15
  import { forSnapshot } from './_util'
15
- import { ids } from '../src/lexicon/lexicons'
16
16
 
17
17
  describe('admin get record view', () => {
18
18
  let network: TestNetwork
@@ -1,17 +1,17 @@
1
+ import { AtpAgent } from '@atproto/api'
1
2
  import {
3
+ ModeratorClient,
2
4
  SeedClient,
3
5
  TestNetwork,
4
- basicSeed,
5
6
  TestOzone,
6
- ModeratorClient,
7
+ basicSeed,
7
8
  } from '@atproto/dev-env'
8
- import { AtpAgent } from '@atproto/api'
9
+ import { ids } from '../src/lexicon/lexicons'
9
10
  import {
10
11
  REASONOTHER,
11
12
  REASONSPAM,
12
13
  } from '../src/lexicon/types/com/atproto/moderation/defs'
13
14
  import { forSnapshot } from './_util'
14
- import { ids } from '../src/lexicon/lexicons'
15
15
 
16
16
  describe('admin get records view', () => {
17
17
  let network: TestNetwork
@@ -1,17 +1,17 @@
1
+ import { AtpAgent } from '@atproto/api'
1
2
  import {
3
+ ModeratorClient,
2
4
  SeedClient,
3
5
  TestNetwork,
4
6
  TestOzone,
5
7
  basicSeed,
6
- ModeratorClient,
7
8
  } from '@atproto/dev-env'
8
- import { AtpAgent } from '@atproto/api'
9
+ import { ids } from '../src/lexicon/lexicons'
9
10
  import {
10
11
  REASONOTHER,
11
12
  REASONSPAM,
12
13
  } from '../src/lexicon/types/com/atproto/moderation/defs'
13
14
  import { forSnapshot } from './_util'
14
- import { ids } from '../src/lexicon/lexicons'
15
15
 
16
16
  describe('admin get repo view', () => {
17
17
  let network: TestNetwork