@atproto/ozone 0.1.146 → 0.1.147

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 (566) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/api/chat/getActorMetadata.js.map +1 -1
  3. package/dist/api/chat/getMessageContext.js.map +1 -1
  4. package/dist/api/chat/index.js.map +1 -1
  5. package/dist/api/communication/createTemplate.js.map +1 -1
  6. package/dist/api/communication/deleteTemplate.js.map +1 -1
  7. package/dist/api/communication/listTemplates.js.map +1 -1
  8. package/dist/api/communication/updateTemplate.js.map +1 -1
  9. package/dist/api/health.js.map +1 -1
  10. package/dist/api/index.d.ts.map +1 -1
  11. package/dist/api/index.js +6 -0
  12. package/dist/api/index.js.map +1 -1
  13. package/dist/api/label/fetchLabels.js.map +1 -1
  14. package/dist/api/label/queryLabels.js.map +1 -1
  15. package/dist/api/label/subscribeLabels.js.map +1 -1
  16. package/dist/api/moderation/cancelScheduledActions.d.ts +4 -0
  17. package/dist/api/moderation/cancelScheduledActions.d.ts.map +1 -0
  18. package/dist/api/moderation/cancelScheduledActions.js +62 -0
  19. package/dist/api/moderation/cancelScheduledActions.js.map +1 -0
  20. package/dist/api/moderation/emitEvent.d.ts.map +1 -1
  21. package/dist/api/moderation/emitEvent.js +11 -47
  22. package/dist/api/moderation/emitEvent.js.map +1 -1
  23. package/dist/api/moderation/getAccountTimeline.js.map +1 -1
  24. package/dist/api/moderation/getEvent.js.map +1 -1
  25. package/dist/api/moderation/getRecord.js.map +1 -1
  26. package/dist/api/moderation/getRecords.js.map +1 -1
  27. package/dist/api/moderation/getRepo.js.map +1 -1
  28. package/dist/api/moderation/getReporterStats.js.map +1 -1
  29. package/dist/api/moderation/getRepos.js.map +1 -1
  30. package/dist/api/moderation/getSubjects.js.map +1 -1
  31. package/dist/api/moderation/listScheduledActions.d.ts +4 -0
  32. package/dist/api/moderation/listScheduledActions.d.ts.map +1 -0
  33. package/dist/api/moderation/listScheduledActions.js +31 -0
  34. package/dist/api/moderation/listScheduledActions.js.map +1 -0
  35. package/dist/api/moderation/queryEvents.js.map +1 -1
  36. package/dist/api/moderation/queryStatuses.js.map +1 -1
  37. package/dist/api/moderation/scheduleAction.d.ts +4 -0
  38. package/dist/api/moderation/scheduleAction.d.ts.map +1 -0
  39. package/dist/api/moderation/scheduleAction.js +115 -0
  40. package/dist/api/moderation/scheduleAction.js.map +1 -0
  41. package/dist/api/moderation/searchRepos.js.map +1 -1
  42. package/dist/api/moderation/util.d.ts +13 -0
  43. package/dist/api/moderation/util.d.ts.map +1 -0
  44. package/dist/api/moderation/util.js +52 -0
  45. package/dist/api/moderation/util.js.map +1 -0
  46. package/dist/api/proxied.js.map +1 -1
  47. package/dist/api/report/createReport.js.map +1 -1
  48. package/dist/api/safelink/addRule.js.map +1 -1
  49. package/dist/api/safelink/queryEvents.js.map +1 -1
  50. package/dist/api/safelink/queryRules.js.map +1 -1
  51. package/dist/api/safelink/removeRule.js.map +1 -1
  52. package/dist/api/safelink/updateRule.js.map +1 -1
  53. package/dist/api/server/getConfig.js.map +1 -1
  54. package/dist/api/set/addValues.js.map +1 -1
  55. package/dist/api/set/deleteSet.js.map +1 -1
  56. package/dist/api/set/deleteValues.js.map +1 -1
  57. package/dist/api/set/getValues.js.map +1 -1
  58. package/dist/api/set/querySets.js.map +1 -1
  59. package/dist/api/set/upsertSet.js.map +1 -1
  60. package/dist/api/setting/listOptions.js.map +1 -1
  61. package/dist/api/setting/removeOptions.js.map +1 -1
  62. package/dist/api/setting/upsertOption.js.map +1 -1
  63. package/dist/api/team/addMember.js.map +1 -1
  64. package/dist/api/team/deleteMember.js.map +1 -1
  65. package/dist/api/team/listMembers.js.map +1 -1
  66. package/dist/api/team/updateMember.js.map +1 -1
  67. package/dist/api/util.d.ts +4 -0
  68. package/dist/api/util.d.ts.map +1 -1
  69. package/dist/api/util.js +24 -1
  70. package/dist/api/util.js.map +1 -1
  71. package/dist/api/verification/grantVerifications.js.map +1 -1
  72. package/dist/api/verification/listVerifications.js.map +1 -1
  73. package/dist/api/verification/revokeVerifications.js.map +1 -1
  74. package/dist/api/well-known.js.map +1 -1
  75. package/dist/auth-verifier.js.map +1 -1
  76. package/dist/background.js.map +1 -1
  77. package/dist/communication-service/template.js.map +1 -1
  78. package/dist/communication-service/util.js.map +1 -1
  79. package/dist/config/config.js.map +1 -1
  80. package/dist/config/env.js.map +1 -1
  81. package/dist/config/index.js.map +1 -1
  82. package/dist/config/secrets.js.map +1 -1
  83. package/dist/context.d.ts +3 -0
  84. package/dist/context.d.ts.map +1 -1
  85. package/dist/context.js +12 -6
  86. package/dist/context.js.map +1 -1
  87. package/dist/daemon/blob-diverter.js.map +1 -1
  88. package/dist/daemon/context.d.ts +3 -0
  89. package/dist/daemon/context.d.ts.map +1 -1
  90. package/dist/daemon/context.js +12 -0
  91. package/dist/daemon/context.js.map +1 -1
  92. package/dist/daemon/event-pusher.js.map +1 -1
  93. package/dist/daemon/event-reverser.js.map +1 -1
  94. package/dist/daemon/index.d.ts +1 -0
  95. package/dist/daemon/index.d.ts.map +1 -1
  96. package/dist/daemon/index.js +3 -1
  97. package/dist/daemon/index.js.map +1 -1
  98. package/dist/daemon/materialized-view-refresher.js.map +1 -1
  99. package/dist/daemon/scheduled-action-processor.d.ts +35 -0
  100. package/dist/daemon/scheduled-action-processor.d.ts.map +1 -0
  101. package/dist/daemon/scheduled-action-processor.js +211 -0
  102. package/dist/daemon/scheduled-action-processor.js.map +1 -0
  103. package/dist/daemon/team-profile-synchronizer.js.map +1 -1
  104. package/dist/daemon/verification-listener.js.map +1 -1
  105. package/dist/db/index.js.map +1 -1
  106. package/dist/db/migrations/20231219T205730722Z-init.js.map +1 -1
  107. package/dist/db/migrations/20240116T085607200Z-communication-template.js.map +1 -1
  108. package/dist/db/migrations/20240201T051104136Z-mod-event-blobs.js.map +1 -1
  109. package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.js.map +1 -1
  110. package/dist/db/migrations/20240228T003647759Z-add-label-sigs.js.map +1 -1
  111. package/dist/db/migrations/20240408T192432676Z-mute-reporting.js.map +1 -1
  112. package/dist/db/migrations/20240506T225055595Z-message-subject.js.map +1 -1
  113. package/dist/db/migrations/20240521T211332580Z-member.js.map +1 -1
  114. package/dist/db/migrations/20240814T003647759Z-event-created-at-index.js.map +1 -1
  115. package/dist/db/migrations/20240903T205730722Z-add-template-lang.js.map +1 -1
  116. package/dist/db/migrations/20240904T205730722Z-add-subject-did-index.js.map +1 -1
  117. package/dist/db/migrations/20241001T205730722Z-subject-status-review-state-index.js.map +1 -1
  118. package/dist/db/migrations/20241008T205730722Z-sets.js.map +1 -1
  119. package/dist/db/migrations/20241018T205730722Z-setting.js.map +1 -1
  120. package/dist/db/migrations/20241026T205730722Z-add-hosting-status-to-subject-status.js.map +1 -1
  121. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js.map +1 -1
  122. package/dist/db/migrations/20250204T003647759Z-add-subject-priority-score.js.map +1 -1
  123. package/dist/db/migrations/20250211T003647759Z-add-reporter-stats-index.js.map +1 -1
  124. package/dist/db/migrations/20250211T132135150Z-moderation-event-message-partial-idx.js.map +1 -1
  125. package/dist/db/migrations/20250221T132135150Z-member-details.js.map +1 -1
  126. package/dist/db/migrations/20250404T201720309Z-subject-status-sort-idxs.js.map +1 -1
  127. package/dist/db/migrations/20250415T201720309Z-verification.js.map +1 -1
  128. package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js.map +1 -1
  129. package/dist/db/migrations/20250609T110704000Z-safelink.js.map +1 -1
  130. package/dist/db/migrations/20250618T180246000Z-add-mod-tool-to-moderation-event.js.map +1 -1
  131. package/dist/db/migrations/20250701T000000000Z-add-age-assurance-state.js.map +1 -1
  132. package/dist/db/migrations/20250715T000000000Z-add-mod-event-external-id.js.map +1 -1
  133. package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.js.map +1 -1
  134. package/dist/db/migrations/20250813T000000000Z-mod-tool-batch-id-index.js.map +1 -1
  135. package/dist/db/migrations/20250923T000000000Z-scheduled-actions.d.ts +4 -0
  136. package/dist/db/migrations/20250923T000000000Z-scheduled-actions.d.ts.map +1 -0
  137. package/dist/db/migrations/20250923T000000000Z-scheduled-actions.js +53 -0
  138. package/dist/db/migrations/20250923T000000000Z-scheduled-actions.js.map +1 -0
  139. package/dist/db/migrations/index.d.ts +2 -0
  140. package/dist/db/migrations/index.d.ts.map +1 -1
  141. package/dist/db/migrations/index.js +3 -1
  142. package/dist/db/migrations/index.js.map +1 -1
  143. package/dist/db/migrations/provider.js.map +1 -1
  144. package/dist/db/pagination.js.map +1 -1
  145. package/dist/db/schema/account_events_stats.js.map +1 -1
  146. package/dist/db/schema/account_record_events_stats.js.map +1 -1
  147. package/dist/db/schema/account_record_status_stats.js.map +1 -1
  148. package/dist/db/schema/blob_push_event.js.map +1 -1
  149. package/dist/db/schema/communication_template.js.map +1 -1
  150. package/dist/db/schema/firehose_cursor.js.map +1 -1
  151. package/dist/db/schema/index.d.ts +2 -1
  152. package/dist/db/schema/index.d.ts.map +1 -1
  153. package/dist/db/schema/index.js.map +1 -1
  154. package/dist/db/schema/label.js.map +1 -1
  155. package/dist/db/schema/member.js.map +1 -1
  156. package/dist/db/schema/moderation_event.js.map +1 -1
  157. package/dist/db/schema/moderation_subject_status.js.map +1 -1
  158. package/dist/db/schema/ozone_set.js.map +1 -1
  159. package/dist/db/schema/record_events_stats.js.map +1 -1
  160. package/dist/db/schema/record_push_event.js.map +1 -1
  161. package/dist/db/schema/repo_push_event.js.map +1 -1
  162. package/dist/db/schema/safelink.js.map +1 -1
  163. package/dist/db/schema/scheduled-action.d.ts +23 -0
  164. package/dist/db/schema/scheduled-action.d.ts.map +1 -0
  165. package/dist/db/schema/scheduled-action.js +5 -0
  166. package/dist/db/schema/scheduled-action.js.map +1 -0
  167. package/dist/db/schema/setting.js.map +1 -1
  168. package/dist/db/schema/signing_key.js.map +1 -1
  169. package/dist/db/schema/verification.js.map +1 -1
  170. package/dist/db/types.js.map +1 -1
  171. package/dist/error.js.map +1 -1
  172. package/dist/image-invalidator.js.map +1 -1
  173. package/dist/index.js.map +1 -1
  174. package/dist/jetstream/service.js.map +1 -1
  175. package/dist/lexicon/index.d.ts +6 -0
  176. package/dist/lexicon/index.d.ts.map +1 -1
  177. package/dist/lexicon/index.js +12 -0
  178. package/dist/lexicon/index.js.map +1 -1
  179. package/dist/lexicon/lexicons.d.ts +835 -43
  180. package/dist/lexicon/lexicons.d.ts.map +1 -1
  181. package/dist/lexicon/lexicons.js +407 -0
  182. package/dist/lexicon/lexicons.js.map +1 -1
  183. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  184. package/dist/lexicon/types/app/bsky/actor/getPreferences.js.map +1 -1
  185. package/dist/lexicon/types/app/bsky/actor/getProfile.js.map +1 -1
  186. package/dist/lexicon/types/app/bsky/actor/getProfiles.js.map +1 -1
  187. package/dist/lexicon/types/app/bsky/actor/getSuggestions.js.map +1 -1
  188. package/dist/lexicon/types/app/bsky/actor/profile.js.map +1 -1
  189. package/dist/lexicon/types/app/bsky/actor/putPreferences.js.map +1 -1
  190. package/dist/lexicon/types/app/bsky/actor/searchActors.js.map +1 -1
  191. package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
  192. package/dist/lexicon/types/app/bsky/actor/status.js.map +1 -1
  193. package/dist/lexicon/types/app/bsky/bookmark/createBookmark.js.map +1 -1
  194. package/dist/lexicon/types/app/bsky/bookmark/defs.js.map +1 -1
  195. package/dist/lexicon/types/app/bsky/bookmark/deleteBookmark.js.map +1 -1
  196. package/dist/lexicon/types/app/bsky/bookmark/getBookmarks.js.map +1 -1
  197. package/dist/lexicon/types/app/bsky/embed/defs.js.map +1 -1
  198. package/dist/lexicon/types/app/bsky/embed/external.js.map +1 -1
  199. package/dist/lexicon/types/app/bsky/embed/images.js.map +1 -1
  200. package/dist/lexicon/types/app/bsky/embed/record.js.map +1 -1
  201. package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js.map +1 -1
  202. package/dist/lexicon/types/app/bsky/embed/video.js.map +1 -1
  203. package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
  204. package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.js.map +1 -1
  205. package/dist/lexicon/types/app/bsky/feed/generator.js.map +1 -1
  206. package/dist/lexicon/types/app/bsky/feed/getActorFeeds.js.map +1 -1
  207. package/dist/lexicon/types/app/bsky/feed/getActorLikes.js.map +1 -1
  208. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.js.map +1 -1
  209. package/dist/lexicon/types/app/bsky/feed/getFeed.js.map +1 -1
  210. package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.js.map +1 -1
  211. package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.js.map +1 -1
  212. package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.js.map +1 -1
  213. package/dist/lexicon/types/app/bsky/feed/getLikes.js.map +1 -1
  214. package/dist/lexicon/types/app/bsky/feed/getListFeed.js.map +1 -1
  215. package/dist/lexicon/types/app/bsky/feed/getPostThread.js.map +1 -1
  216. package/dist/lexicon/types/app/bsky/feed/getPosts.js.map +1 -1
  217. package/dist/lexicon/types/app/bsky/feed/getQuotes.js.map +1 -1
  218. package/dist/lexicon/types/app/bsky/feed/getRepostedBy.js.map +1 -1
  219. package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
  220. package/dist/lexicon/types/app/bsky/feed/getTimeline.js.map +1 -1
  221. package/dist/lexicon/types/app/bsky/feed/like.js.map +1 -1
  222. package/dist/lexicon/types/app/bsky/feed/post.js.map +1 -1
  223. package/dist/lexicon/types/app/bsky/feed/postgate.js.map +1 -1
  224. package/dist/lexicon/types/app/bsky/feed/repost.js.map +1 -1
  225. package/dist/lexicon/types/app/bsky/feed/searchPosts.js.map +1 -1
  226. package/dist/lexicon/types/app/bsky/feed/sendInteractions.js.map +1 -1
  227. package/dist/lexicon/types/app/bsky/feed/threadgate.js.map +1 -1
  228. package/dist/lexicon/types/app/bsky/graph/block.js.map +1 -1
  229. package/dist/lexicon/types/app/bsky/graph/defs.js.map +1 -1
  230. package/dist/lexicon/types/app/bsky/graph/follow.js.map +1 -1
  231. package/dist/lexicon/types/app/bsky/graph/getActorStarterPacks.js.map +1 -1
  232. package/dist/lexicon/types/app/bsky/graph/getBlocks.js.map +1 -1
  233. package/dist/lexicon/types/app/bsky/graph/getFollowers.js.map +1 -1
  234. package/dist/lexicon/types/app/bsky/graph/getFollows.js.map +1 -1
  235. package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js.map +1 -1
  236. package/dist/lexicon/types/app/bsky/graph/getList.js.map +1 -1
  237. package/dist/lexicon/types/app/bsky/graph/getListBlocks.js.map +1 -1
  238. package/dist/lexicon/types/app/bsky/graph/getListMutes.js.map +1 -1
  239. package/dist/lexicon/types/app/bsky/graph/getLists.js.map +1 -1
  240. package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.js.map +1 -1
  241. package/dist/lexicon/types/app/bsky/graph/getMutes.js.map +1 -1
  242. package/dist/lexicon/types/app/bsky/graph/getRelationships.js.map +1 -1
  243. package/dist/lexicon/types/app/bsky/graph/getStarterPack.js.map +1 -1
  244. package/dist/lexicon/types/app/bsky/graph/getStarterPacks.js.map +1 -1
  245. package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.js.map +1 -1
  246. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  247. package/dist/lexicon/types/app/bsky/graph/list.js.map +1 -1
  248. package/dist/lexicon/types/app/bsky/graph/listblock.js.map +1 -1
  249. package/dist/lexicon/types/app/bsky/graph/listitem.js.map +1 -1
  250. package/dist/lexicon/types/app/bsky/graph/muteActor.js.map +1 -1
  251. package/dist/lexicon/types/app/bsky/graph/muteActorList.js.map +1 -1
  252. package/dist/lexicon/types/app/bsky/graph/muteThread.js.map +1 -1
  253. package/dist/lexicon/types/app/bsky/graph/searchStarterPacks.js.map +1 -1
  254. package/dist/lexicon/types/app/bsky/graph/starterpack.js.map +1 -1
  255. package/dist/lexicon/types/app/bsky/graph/unmuteActor.js.map +1 -1
  256. package/dist/lexicon/types/app/bsky/graph/unmuteActorList.js.map +1 -1
  257. package/dist/lexicon/types/app/bsky/graph/unmuteThread.js.map +1 -1
  258. package/dist/lexicon/types/app/bsky/graph/verification.js.map +1 -1
  259. package/dist/lexicon/types/app/bsky/labeler/defs.js.map +1 -1
  260. package/dist/lexicon/types/app/bsky/labeler/getServices.js.map +1 -1
  261. package/dist/lexicon/types/app/bsky/labeler/service.js.map +1 -1
  262. package/dist/lexicon/types/app/bsky/notification/declaration.js.map +1 -1
  263. package/dist/lexicon/types/app/bsky/notification/defs.js.map +1 -1
  264. package/dist/lexicon/types/app/bsky/notification/getPreferences.js.map +1 -1
  265. package/dist/lexicon/types/app/bsky/notification/getUnreadCount.js.map +1 -1
  266. package/dist/lexicon/types/app/bsky/notification/listActivitySubscriptions.js.map +1 -1
  267. package/dist/lexicon/types/app/bsky/notification/listNotifications.js.map +1 -1
  268. package/dist/lexicon/types/app/bsky/notification/putActivitySubscription.js.map +1 -1
  269. package/dist/lexicon/types/app/bsky/notification/putPreferences.js.map +1 -1
  270. package/dist/lexicon/types/app/bsky/notification/putPreferencesV2.js.map +1 -1
  271. package/dist/lexicon/types/app/bsky/notification/registerPush.js.map +1 -1
  272. package/dist/lexicon/types/app/bsky/notification/unregisterPush.js.map +1 -1
  273. package/dist/lexicon/types/app/bsky/notification/updateSeen.js.map +1 -1
  274. package/dist/lexicon/types/app/bsky/richtext/facet.js.map +1 -1
  275. package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
  276. package/dist/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.js.map +1 -1
  277. package/dist/lexicon/types/app/bsky/unspecced/getConfig.js.map +1 -1
  278. package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
  279. package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.js.map +1 -1
  280. package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
  281. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.js.map +1 -1
  282. package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
  283. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
  284. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js.map +1 -1
  285. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
  286. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js.map +1 -1
  287. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
  288. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js.map +1 -1
  289. package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.js.map +1 -1
  290. package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.js.map +1 -1
  291. package/dist/lexicon/types/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
  292. package/dist/lexicon/types/app/bsky/unspecced/getTrends.js.map +1 -1
  293. package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js.map +1 -1
  294. package/dist/lexicon/types/app/bsky/unspecced/initAgeAssurance.js.map +1 -1
  295. package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.js.map +1 -1
  296. package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.js.map +1 -1
  297. package/dist/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.js.map +1 -1
  298. package/dist/lexicon/types/app/bsky/video/defs.js.map +1 -1
  299. package/dist/lexicon/types/app/bsky/video/getJobStatus.js.map +1 -1
  300. package/dist/lexicon/types/app/bsky/video/getUploadLimits.js.map +1 -1
  301. package/dist/lexicon/types/app/bsky/video/uploadVideo.js.map +1 -1
  302. package/dist/lexicon/types/chat/bsky/actor/declaration.js.map +1 -1
  303. package/dist/lexicon/types/chat/bsky/actor/defs.js.map +1 -1
  304. package/dist/lexicon/types/chat/bsky/actor/deleteAccount.js.map +1 -1
  305. package/dist/lexicon/types/chat/bsky/actor/exportAccountData.js.map +1 -1
  306. package/dist/lexicon/types/chat/bsky/convo/acceptConvo.js.map +1 -1
  307. package/dist/lexicon/types/chat/bsky/convo/addReaction.js.map +1 -1
  308. package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
  309. package/dist/lexicon/types/chat/bsky/convo/deleteMessageForSelf.js.map +1 -1
  310. package/dist/lexicon/types/chat/bsky/convo/getConvo.js.map +1 -1
  311. package/dist/lexicon/types/chat/bsky/convo/getConvoAvailability.js.map +1 -1
  312. package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js.map +1 -1
  313. package/dist/lexicon/types/chat/bsky/convo/getLog.js.map +1 -1
  314. package/dist/lexicon/types/chat/bsky/convo/getMessages.js.map +1 -1
  315. package/dist/lexicon/types/chat/bsky/convo/leaveConvo.js.map +1 -1
  316. package/dist/lexicon/types/chat/bsky/convo/listConvos.js.map +1 -1
  317. package/dist/lexicon/types/chat/bsky/convo/muteConvo.js.map +1 -1
  318. package/dist/lexicon/types/chat/bsky/convo/removeReaction.js.map +1 -1
  319. package/dist/lexicon/types/chat/bsky/convo/sendMessage.js.map +1 -1
  320. package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.js.map +1 -1
  321. package/dist/lexicon/types/chat/bsky/convo/unmuteConvo.js.map +1 -1
  322. package/dist/lexicon/types/chat/bsky/convo/updateAllRead.js.map +1 -1
  323. package/dist/lexicon/types/chat/bsky/convo/updateRead.js.map +1 -1
  324. package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.js.map +1 -1
  325. package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.js.map +1 -1
  326. package/dist/lexicon/types/chat/bsky/moderation/updateActorAccess.js.map +1 -1
  327. package/dist/lexicon/types/com/atproto/admin/defs.js.map +1 -1
  328. package/dist/lexicon/types/com/atproto/admin/deleteAccount.js.map +1 -1
  329. package/dist/lexicon/types/com/atproto/admin/disableAccountInvites.js.map +1 -1
  330. package/dist/lexicon/types/com/atproto/admin/disableInviteCodes.js.map +1 -1
  331. package/dist/lexicon/types/com/atproto/admin/enableAccountInvites.js.map +1 -1
  332. package/dist/lexicon/types/com/atproto/admin/getAccountInfo.js.map +1 -1
  333. package/dist/lexicon/types/com/atproto/admin/getAccountInfos.js.map +1 -1
  334. package/dist/lexicon/types/com/atproto/admin/getInviteCodes.js.map +1 -1
  335. package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.js.map +1 -1
  336. package/dist/lexicon/types/com/atproto/admin/searchAccounts.js.map +1 -1
  337. package/dist/lexicon/types/com/atproto/admin/sendEmail.js.map +1 -1
  338. package/dist/lexicon/types/com/atproto/admin/updateAccountEmail.js.map +1 -1
  339. package/dist/lexicon/types/com/atproto/admin/updateAccountHandle.js.map +1 -1
  340. package/dist/lexicon/types/com/atproto/admin/updateAccountPassword.js.map +1 -1
  341. package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js.map +1 -1
  342. package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.js.map +1 -1
  343. package/dist/lexicon/types/com/atproto/identity/defs.js.map +1 -1
  344. package/dist/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
  345. package/dist/lexicon/types/com/atproto/identity/refreshIdentity.js.map +1 -1
  346. package/dist/lexicon/types/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
  347. package/dist/lexicon/types/com/atproto/identity/resolveDid.js.map +1 -1
  348. package/dist/lexicon/types/com/atproto/identity/resolveHandle.js.map +1 -1
  349. package/dist/lexicon/types/com/atproto/identity/resolveIdentity.js.map +1 -1
  350. package/dist/lexicon/types/com/atproto/identity/signPlcOperation.js.map +1 -1
  351. package/dist/lexicon/types/com/atproto/identity/submitPlcOperation.js.map +1 -1
  352. package/dist/lexicon/types/com/atproto/identity/updateHandle.js.map +1 -1
  353. package/dist/lexicon/types/com/atproto/label/defs.js.map +1 -1
  354. package/dist/lexicon/types/com/atproto/label/queryLabels.js.map +1 -1
  355. package/dist/lexicon/types/com/atproto/label/subscribeLabels.js.map +1 -1
  356. package/dist/lexicon/types/com/atproto/lexicon/schema.js.map +1 -1
  357. package/dist/lexicon/types/com/atproto/moderation/createReport.js.map +1 -1
  358. package/dist/lexicon/types/com/atproto/moderation/defs.js.map +1 -1
  359. package/dist/lexicon/types/com/atproto/repo/applyWrites.js.map +1 -1
  360. package/dist/lexicon/types/com/atproto/repo/createRecord.js.map +1 -1
  361. package/dist/lexicon/types/com/atproto/repo/defs.js.map +1 -1
  362. package/dist/lexicon/types/com/atproto/repo/deleteRecord.js.map +1 -1
  363. package/dist/lexicon/types/com/atproto/repo/describeRepo.js.map +1 -1
  364. package/dist/lexicon/types/com/atproto/repo/getRecord.js.map +1 -1
  365. package/dist/lexicon/types/com/atproto/repo/importRepo.js.map +1 -1
  366. package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.js.map +1 -1
  367. package/dist/lexicon/types/com/atproto/repo/listRecords.js.map +1 -1
  368. package/dist/lexicon/types/com/atproto/repo/putRecord.js.map +1 -1
  369. package/dist/lexicon/types/com/atproto/repo/strongRef.js.map +1 -1
  370. package/dist/lexicon/types/com/atproto/repo/uploadBlob.js.map +1 -1
  371. package/dist/lexicon/types/com/atproto/server/activateAccount.js.map +1 -1
  372. package/dist/lexicon/types/com/atproto/server/checkAccountStatus.js.map +1 -1
  373. package/dist/lexicon/types/com/atproto/server/confirmEmail.js.map +1 -1
  374. package/dist/lexicon/types/com/atproto/server/createAccount.js.map +1 -1
  375. package/dist/lexicon/types/com/atproto/server/createAppPassword.js.map +1 -1
  376. package/dist/lexicon/types/com/atproto/server/createInviteCode.js.map +1 -1
  377. package/dist/lexicon/types/com/atproto/server/createInviteCodes.js.map +1 -1
  378. package/dist/lexicon/types/com/atproto/server/createSession.js.map +1 -1
  379. package/dist/lexicon/types/com/atproto/server/deactivateAccount.js.map +1 -1
  380. package/dist/lexicon/types/com/atproto/server/defs.js.map +1 -1
  381. package/dist/lexicon/types/com/atproto/server/deleteAccount.js.map +1 -1
  382. package/dist/lexicon/types/com/atproto/server/deleteSession.js.map +1 -1
  383. package/dist/lexicon/types/com/atproto/server/describeServer.js.map +1 -1
  384. package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.js.map +1 -1
  385. package/dist/lexicon/types/com/atproto/server/getServiceAuth.js.map +1 -1
  386. package/dist/lexicon/types/com/atproto/server/getSession.js.map +1 -1
  387. package/dist/lexicon/types/com/atproto/server/listAppPasswords.js.map +1 -1
  388. package/dist/lexicon/types/com/atproto/server/refreshSession.js.map +1 -1
  389. package/dist/lexicon/types/com/atproto/server/requestAccountDelete.js.map +1 -1
  390. package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.js.map +1 -1
  391. package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.js.map +1 -1
  392. package/dist/lexicon/types/com/atproto/server/requestPasswordReset.js.map +1 -1
  393. package/dist/lexicon/types/com/atproto/server/reserveSigningKey.js.map +1 -1
  394. package/dist/lexicon/types/com/atproto/server/resetPassword.js.map +1 -1
  395. package/dist/lexicon/types/com/atproto/server/revokeAppPassword.js.map +1 -1
  396. package/dist/lexicon/types/com/atproto/server/updateEmail.js.map +1 -1
  397. package/dist/lexicon/types/com/atproto/sync/defs.js.map +1 -1
  398. package/dist/lexicon/types/com/atproto/sync/getBlob.js.map +1 -1
  399. package/dist/lexicon/types/com/atproto/sync/getBlocks.js.map +1 -1
  400. package/dist/lexicon/types/com/atproto/sync/getCheckout.js.map +1 -1
  401. package/dist/lexicon/types/com/atproto/sync/getHead.js.map +1 -1
  402. package/dist/lexicon/types/com/atproto/sync/getHostStatus.js.map +1 -1
  403. package/dist/lexicon/types/com/atproto/sync/getLatestCommit.js.map +1 -1
  404. package/dist/lexicon/types/com/atproto/sync/getRecord.js.map +1 -1
  405. package/dist/lexicon/types/com/atproto/sync/getRepo.js.map +1 -1
  406. package/dist/lexicon/types/com/atproto/sync/getRepoStatus.js.map +1 -1
  407. package/dist/lexicon/types/com/atproto/sync/listBlobs.js.map +1 -1
  408. package/dist/lexicon/types/com/atproto/sync/listHosts.js.map +1 -1
  409. package/dist/lexicon/types/com/atproto/sync/listRepos.js.map +1 -1
  410. package/dist/lexicon/types/com/atproto/sync/listReposByCollection.js.map +1 -1
  411. package/dist/lexicon/types/com/atproto/sync/notifyOfUpdate.js.map +1 -1
  412. package/dist/lexicon/types/com/atproto/sync/requestCrawl.js.map +1 -1
  413. package/dist/lexicon/types/com/atproto/sync/subscribeRepos.js.map +1 -1
  414. package/dist/lexicon/types/com/atproto/temp/addReservedHandle.js.map +1 -1
  415. package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.js.map +1 -1
  416. package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.js.map +1 -1
  417. package/dist/lexicon/types/com/atproto/temp/dereferenceScope.js.map +1 -1
  418. package/dist/lexicon/types/com/atproto/temp/fetchLabels.js.map +1 -1
  419. package/dist/lexicon/types/com/atproto/temp/requestPhoneVerification.js.map +1 -1
  420. package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js.map +1 -1
  421. package/dist/lexicon/types/tools/ozone/communication/createTemplate.js.map +1 -1
  422. package/dist/lexicon/types/tools/ozone/communication/defs.js.map +1 -1
  423. package/dist/lexicon/types/tools/ozone/communication/deleteTemplate.js.map +1 -1
  424. package/dist/lexicon/types/tools/ozone/communication/listTemplates.js.map +1 -1
  425. package/dist/lexicon/types/tools/ozone/communication/updateTemplate.js.map +1 -1
  426. package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js.map +1 -1
  427. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts +46 -0
  428. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts.map +1 -0
  429. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js +25 -0
  430. package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js.map +1 -0
  431. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +57 -2
  432. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
  433. package/dist/lexicon/types/tools/ozone/moderation/defs.js +27 -0
  434. package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
  435. package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts +1 -1
  436. package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts.map +1 -1
  437. package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js.map +1 -1
  438. package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts +1 -1
  439. package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts.map +1 -1
  440. package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.js.map +1 -1
  441. package/dist/lexicon/types/tools/ozone/moderation/getEvent.js.map +1 -1
  442. package/dist/lexicon/types/tools/ozone/moderation/getRecord.js.map +1 -1
  443. package/dist/lexicon/types/tools/ozone/moderation/getRecords.js.map +1 -1
  444. package/dist/lexicon/types/tools/ozone/moderation/getRepo.js.map +1 -1
  445. package/dist/lexicon/types/tools/ozone/moderation/getReporterStats.js.map +1 -1
  446. package/dist/lexicon/types/tools/ozone/moderation/getRepos.js.map +1 -1
  447. package/dist/lexicon/types/tools/ozone/moderation/getSubjects.js.map +1 -1
  448. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.d.ts +38 -0
  449. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.d.ts.map +1 -0
  450. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js +7 -0
  451. package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js.map +1 -0
  452. package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js.map +1 -1
  453. package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
  454. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts +75 -0
  455. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts.map +1 -0
  456. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js +43 -0
  457. package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js.map +1 -0
  458. package/dist/lexicon/types/tools/ozone/moderation/searchRepos.js.map +1 -1
  459. package/dist/lexicon/types/tools/ozone/report/defs.js.map +1 -1
  460. package/dist/lexicon/types/tools/ozone/safelink/addRule.js.map +1 -1
  461. package/dist/lexicon/types/tools/ozone/safelink/defs.js.map +1 -1
  462. package/dist/lexicon/types/tools/ozone/safelink/queryEvents.js.map +1 -1
  463. package/dist/lexicon/types/tools/ozone/safelink/queryRules.js.map +1 -1
  464. package/dist/lexicon/types/tools/ozone/safelink/removeRule.js.map +1 -1
  465. package/dist/lexicon/types/tools/ozone/safelink/updateRule.js.map +1 -1
  466. package/dist/lexicon/types/tools/ozone/server/getConfig.js.map +1 -1
  467. package/dist/lexicon/types/tools/ozone/set/addValues.js.map +1 -1
  468. package/dist/lexicon/types/tools/ozone/set/defs.js.map +1 -1
  469. package/dist/lexicon/types/tools/ozone/set/deleteSet.js.map +1 -1
  470. package/dist/lexicon/types/tools/ozone/set/deleteValues.js.map +1 -1
  471. package/dist/lexicon/types/tools/ozone/set/getValues.js.map +1 -1
  472. package/dist/lexicon/types/tools/ozone/set/querySets.js.map +1 -1
  473. package/dist/lexicon/types/tools/ozone/set/upsertSet.js.map +1 -1
  474. package/dist/lexicon/types/tools/ozone/setting/defs.js.map +1 -1
  475. package/dist/lexicon/types/tools/ozone/setting/listOptions.js.map +1 -1
  476. package/dist/lexicon/types/tools/ozone/setting/removeOptions.js.map +1 -1
  477. package/dist/lexicon/types/tools/ozone/setting/upsertOption.js.map +1 -1
  478. package/dist/lexicon/types/tools/ozone/signature/defs.js.map +1 -1
  479. package/dist/lexicon/types/tools/ozone/signature/findCorrelation.js.map +1 -1
  480. package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.js.map +1 -1
  481. package/dist/lexicon/types/tools/ozone/signature/searchAccounts.js.map +1 -1
  482. package/dist/lexicon/types/tools/ozone/team/addMember.js.map +1 -1
  483. package/dist/lexicon/types/tools/ozone/team/defs.js.map +1 -1
  484. package/dist/lexicon/types/tools/ozone/team/deleteMember.js.map +1 -1
  485. package/dist/lexicon/types/tools/ozone/team/listMembers.js.map +1 -1
  486. package/dist/lexicon/types/tools/ozone/team/updateMember.js.map +1 -1
  487. package/dist/lexicon/types/tools/ozone/verification/defs.js.map +1 -1
  488. package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js.map +1 -1
  489. package/dist/lexicon/types/tools/ozone/verification/listVerifications.js.map +1 -1
  490. package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js.map +1 -1
  491. package/dist/lexicon/util.js.map +1 -1
  492. package/dist/logger.js.map +1 -1
  493. package/dist/mod-service/index.d.ts.map +1 -1
  494. package/dist/mod-service/index.js +11 -0
  495. package/dist/mod-service/index.js.map +1 -1
  496. package/dist/mod-service/profile.js.map +1 -1
  497. package/dist/mod-service/status.d.ts +3 -0
  498. package/dist/mod-service/status.d.ts.map +1 -1
  499. package/dist/mod-service/status.js.map +1 -1
  500. package/dist/mod-service/subject.js.map +1 -1
  501. package/dist/mod-service/types.js.map +1 -1
  502. package/dist/mod-service/util.js.map +1 -1
  503. package/dist/mod-service/views.d.ts.map +1 -1
  504. package/dist/mod-service/views.js +5 -0
  505. package/dist/mod-service/views.js.map +1 -1
  506. package/dist/safelink/service.js.map +1 -1
  507. package/dist/scheduled-action/service.d.ts +39 -0
  508. package/dist/scheduled-action/service.d.ts.map +1 -0
  509. package/dist/scheduled-action/service.js +208 -0
  510. package/dist/scheduled-action/service.js.map +1 -0
  511. package/dist/scheduled-action/types.d.ts +14 -0
  512. package/dist/scheduled-action/types.d.ts.map +1 -0
  513. package/dist/scheduled-action/types.js +3 -0
  514. package/dist/scheduled-action/types.js.map +1 -0
  515. package/dist/sequencer/index.js.map +1 -1
  516. package/dist/sequencer/outbox.js.map +1 -1
  517. package/dist/sequencer/sequencer.js.map +1 -1
  518. package/dist/set/service.js.map +1 -1
  519. package/dist/setting/constants.js.map +1 -1
  520. package/dist/setting/service.js.map +1 -1
  521. package/dist/setting/types.js.map +1 -1
  522. package/dist/setting/validators.js.map +1 -1
  523. package/dist/tag-service/content-tagger.js.map +1 -1
  524. package/dist/tag-service/embed-tagger.js.map +1 -1
  525. package/dist/tag-service/index.js.map +1 -1
  526. package/dist/tag-service/language-data.js.map +1 -1
  527. package/dist/tag-service/language-tagger.js.map +1 -1
  528. package/dist/tag-service/util.js.map +1 -1
  529. package/dist/team/index.js.map +1 -1
  530. package/dist/util.js.map +1 -1
  531. package/dist/verification/issuer.js.map +1 -1
  532. package/dist/verification/service.js.map +1 -1
  533. package/dist/verification/util.js.map +1 -1
  534. package/package.json +3 -3
  535. package/src/api/index.ts +6 -0
  536. package/src/api/moderation/cancelScheduledActions.ts +72 -0
  537. package/src/api/moderation/emitEvent.ts +9 -84
  538. package/src/api/moderation/listScheduledActions.ts +45 -0
  539. package/src/api/moderation/scheduleAction.ts +129 -0
  540. package/src/api/moderation/util.ts +96 -0
  541. package/src/api/util.ts +33 -0
  542. package/src/context.ts +11 -0
  543. package/src/daemon/context.ts +21 -0
  544. package/src/daemon/index.ts +1 -0
  545. package/src/daemon/scheduled-action-processor.ts +243 -0
  546. package/src/db/migrations/20250923T000000000Z-scheduled-actions.ts +56 -0
  547. package/src/db/migrations/index.ts +2 -0
  548. package/src/db/schema/index.ts +3 -1
  549. package/src/db/schema/scheduled-action.ts +25 -0
  550. package/src/lexicon/index.ts +39 -0
  551. package/src/lexicon/lexicons.ts +430 -0
  552. package/src/lexicon/types/tools/ozone/moderation/cancelScheduledActions.ts +79 -0
  553. package/src/lexicon/types/tools/ozone/moderation/defs.ts +88 -0
  554. package/src/lexicon/types/tools/ozone/moderation/emitEvent.ts +2 -0
  555. package/src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts +2 -0
  556. package/src/lexicon/types/tools/ozone/moderation/listScheduledActions.ts +57 -0
  557. package/src/lexicon/types/tools/ozone/moderation/scheduleAction.ts +123 -0
  558. package/src/mod-service/index.ts +13 -0
  559. package/src/mod-service/views.ts +7 -0
  560. package/src/scheduled-action/service.ts +279 -0
  561. package/src/scheduled-action/types.ts +17 -0
  562. package/tests/__snapshots__/scheduled-action.test.ts.snap +61 -0
  563. package/tests/scheduled-action-processor.test.ts +464 -0
  564. package/tests/scheduled-action.test.ts +334 -0
  565. package/tsconfig.build.tsbuildinfo +1 -1
  566. package/tsconfig.tests.tsbuildinfo +1 -1
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.up = up;
4
+ exports.down = down;
5
+ const kysely_1 = require("kysely");
6
+ async function up(db) {
7
+ await db.schema
8
+ .createTable('scheduled_action')
9
+ .addColumn('id', 'bigserial', (col) => col.primaryKey())
10
+ .addColumn('action', 'varchar', (col) => col.notNull())
11
+ .addColumn('eventData', 'jsonb')
12
+ .addColumn('did', 'varchar', (col) => col.notNull())
13
+ .addColumn('executeAt', 'varchar')
14
+ .addColumn('executeAfter', 'varchar')
15
+ .addColumn('executeUntil', 'varchar')
16
+ .addColumn('randomizeExecution', 'boolean', (col) => col.notNull().defaultTo(false))
17
+ .addColumn('createdBy', 'varchar', (col) => col.notNull())
18
+ .addColumn('createdAt', 'varchar', (col) => col.notNull())
19
+ .addColumn('updatedAt', 'varchar', (col) => col.notNull())
20
+ .addColumn('status', 'varchar', (col) => col.notNull().defaultTo('pending'))
21
+ .addColumn('lastExecutedAt', 'varchar')
22
+ .addColumn('lastFailureReason', 'text')
23
+ .addColumn('executionEventId', 'bigint')
24
+ .execute();
25
+ // Unique constraint to prevent multiple pending actions for the same subject
26
+ await (0, kysely_1.sql) `
27
+ CREATE UNIQUE INDEX scheduled_action_unique_pending_subject
28
+ ON scheduled_action (did, action)
29
+ WHERE status = 'pending'
30
+ `.execute(db);
31
+ // for task runner to query pending actions efficiently
32
+ await db.schema
33
+ .createIndex('scheduled_action_execute_time_idx')
34
+ .on('scheduled_action')
35
+ .columns(['executeAt', 'executeAfter', 'status'])
36
+ .execute();
37
+ // for querying actions by subject
38
+ await db.schema
39
+ .createIndex('scheduled_action_did_idx')
40
+ .on('scheduled_action')
41
+ .column('did')
42
+ .execute();
43
+ // we require status to be always passed when listing scheduled actions and use createdAt for pagination
44
+ await db.schema
45
+ .createIndex('scheduled_action_status_created_at_idx')
46
+ .on('scheduled_action')
47
+ .columns(['status', 'createdAt'])
48
+ .execute();
49
+ }
50
+ async function down(db) {
51
+ await db.schema.dropTable('scheduled_action').execute();
52
+ }
53
+ //# sourceMappingURL=20250923T000000000Z-scheduled-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20250923T000000000Z-scheduled-actions.js","sourceRoot":"","sources":["../../../src/db/migrations/20250923T000000000Z-scheduled-actions.ts"],"names":[],"mappings":";;AAEA,gBAiDC;AAED,oBAEC;AAvDD,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACvD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACtD,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;SAC/B,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;SACjC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC;SACpC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC;SACpC,SAAS,CAAC,oBAAoB,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAClD,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAC/B;SACA,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;SAC3E,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACtC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACtC,SAAS,CAAC,kBAAkB,EAAE,QAAQ,CAAC;SACvC,OAAO,EAAE,CAAA;IAEZ,6EAA6E;IAC7E,MAAM,IAAA,YAAG,EAAA;;;;GAIR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEb,uDAAuD;IACvD,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,mCAAmC,CAAC;SAChD,EAAE,CAAC,kBAAkB,CAAC;SACtB,OAAO,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;SAChD,OAAO,EAAE,CAAA;IAEZ,kCAAkC;IAClC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,0BAA0B,CAAC;SACvC,EAAE,CAAC,kBAAkB,CAAC;SACtB,MAAM,CAAC,KAAK,CAAC;SACb,OAAO,EAAE,CAAA;IAEZ,wGAAwG;IACxG,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,wCAAwC,CAAC;SACrD,EAAE,CAAC,kBAAkB,CAAC;SACtB,OAAO,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SAChC,OAAO,EAAE,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAA;AACzD,CAAC","sourcesContent":["import { Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('scheduled_action')\n .addColumn('id', 'bigserial', (col) => col.primaryKey())\n .addColumn('action', 'varchar', (col) => col.notNull())\n .addColumn('eventData', 'jsonb')\n .addColumn('did', 'varchar', (col) => col.notNull())\n .addColumn('executeAt', 'varchar')\n .addColumn('executeAfter', 'varchar')\n .addColumn('executeUntil', 'varchar')\n .addColumn('randomizeExecution', 'boolean', (col) =>\n col.notNull().defaultTo(false),\n )\n .addColumn('createdBy', 'varchar', (col) => col.notNull())\n .addColumn('createdAt', 'varchar', (col) => col.notNull())\n .addColumn('updatedAt', 'varchar', (col) => col.notNull())\n .addColumn('status', 'varchar', (col) => col.notNull().defaultTo('pending'))\n .addColumn('lastExecutedAt', 'varchar')\n .addColumn('lastFailureReason', 'text')\n .addColumn('executionEventId', 'bigint')\n .execute()\n\n // Unique constraint to prevent multiple pending actions for the same subject\n await sql`\n CREATE UNIQUE INDEX scheduled_action_unique_pending_subject\n ON scheduled_action (did, action)\n WHERE status = 'pending'\n `.execute(db)\n\n // for task runner to query pending actions efficiently\n await db.schema\n .createIndex('scheduled_action_execute_time_idx')\n .on('scheduled_action')\n .columns(['executeAt', 'executeAfter', 'status'])\n .execute()\n\n // for querying actions by subject\n await db.schema\n .createIndex('scheduled_action_did_idx')\n .on('scheduled_action')\n .column('did')\n .execute()\n\n // we require status to be always passed when listing scheduled actions and use createdAt for pagination\n await db.schema\n .createIndex('scheduled_action_status_created_at_idx')\n .on('scheduled_action')\n .columns(['status', 'createdAt'])\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('scheduled_action').execute()\n}\n"]}
@@ -26,4 +26,6 @@ export * as _20250618T180246000Z from './20250618T180246000Z-add-mod-tool-to-mod
26
26
  export * as _20250701T000000000Z from './20250701T000000000Z-add-age-assurance-state';
27
27
  export * as _20250715T000000000Z from './20250715T000000000Z-add-mod-event-external-id';
28
28
  export * as _20250718T150931000Z from './20250718T150931000Z-update-appeal-reason-stats';
29
+ export * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-index';
30
+ export * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions';
29
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6DAA6D,CAAA;AACnG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,oBAAoB,MAAM,yDAAyD,CAAA;AAC/F,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,oBAAoB,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6DAA6D,CAAA;AACnG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,oBAAoB,MAAM,yDAAyD,CAAA;AAC/F,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,oBAAoB,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA"}
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports._20250718T150931000Z = exports._20250715T000000000Z = exports._20250701T000000000Z = exports._20250618T180246000Z = exports._20250609T110704000Z = exports._20250417T201720309Z = exports._20250415T201720309Z = exports._20250404T201720309Z = exports._20250221T132135150Z = exports._20250211T132135150Z = exports._20250211T003647759Z = exports._20250204T003647759Z = exports._20241220T144630860Z = exports._20241026T205730722Z = exports._20241018T205730722Z = exports._20241008T205730722Z = exports._20241001T205730722Z = exports._20240904T205730722Z = exports._20240903T205730722Z = exports._20240814T003647759Z = exports._20240430T211332580Z = exports._20240506T225055595Z = exports._20240408T192432676Z = exports._20240228T003647759Z = exports._20240208T213404429Z = exports._20240201T051104136Z = exports._20240116T085607200Z = exports._20231219T205730722Z = void 0;
39
+ exports._20250923T000000000Z = exports._20250813T000000000Z = exports._20250718T150931000Z = exports._20250715T000000000Z = exports._20250701T000000000Z = exports._20250618T180246000Z = exports._20250609T110704000Z = exports._20250417T201720309Z = exports._20250415T201720309Z = exports._20250404T201720309Z = exports._20250221T132135150Z = exports._20250211T132135150Z = exports._20250211T003647759Z = exports._20250204T003647759Z = exports._20241220T144630860Z = exports._20241026T205730722Z = exports._20241018T205730722Z = exports._20241008T205730722Z = exports._20241001T205730722Z = exports._20240904T205730722Z = exports._20240903T205730722Z = exports._20240814T003647759Z = exports._20240430T211332580Z = exports._20240506T225055595Z = exports._20240408T192432676Z = exports._20240228T003647759Z = exports._20240208T213404429Z = exports._20240201T051104136Z = exports._20240116T085607200Z = exports._20231219T205730722Z = void 0;
40
40
  exports._20231219T205730722Z = __importStar(require("./20231219T205730722Z-init"));
41
41
  exports._20240116T085607200Z = __importStar(require("./20240116T085607200Z-communication-template"));
42
42
  exports._20240201T051104136Z = __importStar(require("./20240201T051104136Z-mod-event-blobs"));
@@ -65,4 +65,6 @@ exports._20250618T180246000Z = __importStar(require("./20250618T180246000Z-add-m
65
65
  exports._20250701T000000000Z = __importStar(require("./20250701T000000000Z-add-age-assurance-state"));
66
66
  exports._20250715T000000000Z = __importStar(require("./20250715T000000000Z-add-mod-event-external-id"));
67
67
  exports._20250718T150931000Z = __importStar(require("./20250718T150931000Z-update-appeal-reason-stats"));
68
+ exports._20250813T000000000Z = __importStar(require("./20250813T000000000Z-mod-tool-batch-id-index"));
69
+ exports._20250923T000000000Z = __importStar(require("./20250923T000000000Z-scheduled-actions"));
68
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE;AAClE,qGAAoF;AACpF,8FAA6E;AAC7E,oHAAmG;AACnG,6FAA4E;AAC5E,6FAA4E;AAC5E,8FAA6E;AAC7E,qFAAoE;AACpE,qGAAoF;AACpF,gGAA+E;AAC/E,oGAAmF;AACnF,gHAA+F;AAC/F,mFAAkE;AAClE,sFAAqE;AACrE,mHAAkG;AAClG,uGAAsF;AACtF,yGAAwF;AACxF,uGAAsF;AACtF,mHAAkG;AAClG,6FAA4E;AAC5E,uGAAsF;AACtF,2FAA0E;AAC1E,8FAA6E;AAC7E,uFAAsE;AACtE,+GAA8F;AAC9F,sGAAqF;AACrF,wGAAuF;AACvF,yGAAwF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE;AAClE,qGAAoF;AACpF,8FAA6E;AAC7E,oHAAmG;AACnG,6FAA4E;AAC5E,6FAA4E;AAC5E,8FAA6E;AAC7E,qFAAoE;AACpE,qGAAoF;AACpF,gGAA+E;AAC/E,oGAAmF;AACnF,gHAA+F;AAC/F,mFAAkE;AAClE,sFAAqE;AACrE,mHAAkG;AAClG,uGAAsF;AACtF,yGAAwF;AACxF,uGAAsF;AACtF,mHAAkG;AAClG,6FAA4E;AAC5E,uGAAsF;AACtF,2FAA0E;AAC1E,8FAA6E;AAC7E,uFAAsE;AACtE,+GAA8F;AAC9F,sGAAqF;AACrF,wGAAuF;AACvF,yGAAwF;AACxF,sGAAqF;AACrF,gGAA+E","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20231219T205730722Z from './20231219T205730722Z-init'\nexport * as _20240116T085607200Z from './20240116T085607200Z-communication-template'\nexport * as _20240201T051104136Z from './20240201T051104136Z-mod-event-blobs'\nexport * as _20240208T213404429Z from './20240208T213404429Z-add-tags-column-to-moderation-subject'\nexport * as _20240228T003647759Z from './20240228T003647759Z-add-label-sigs'\nexport * as _20240408T192432676Z from './20240408T192432676Z-mute-reporting'\nexport * as _20240506T225055595Z from './20240506T225055595Z-message-subject'\nexport * as _20240430T211332580Z from './20240521T211332580Z-member'\nexport * as _20240814T003647759Z from './20240814T003647759Z-event-created-at-index'\nexport * as _20240903T205730722Z from './20240903T205730722Z-add-template-lang'\nexport * as _20240904T205730722Z from './20240904T205730722Z-add-subject-did-index'\nexport * as _20241001T205730722Z from './20241001T205730722Z-subject-status-review-state-index'\nexport * as _20241008T205730722Z from './20241008T205730722Z-sets'\nexport * as _20241018T205730722Z from './20241018T205730722Z-setting'\nexport * as _20241026T205730722Z from './20241026T205730722Z-add-hosting-status-to-subject-status'\nexport * as _20241220T144630860Z from './20241220T144630860Z-stats-materialized-views'\nexport * as _20250204T003647759Z from './20250204T003647759Z-add-subject-priority-score'\nexport * as _20250211T003647759Z from './20250211T003647759Z-add-reporter-stats-index'\nexport * as _20250211T132135150Z from './20250211T132135150Z-moderation-event-message-partial-idx'\nexport * as _20250221T132135150Z from './20250221T132135150Z-member-details'\nexport * as _20250404T201720309Z from './20250404T201720309Z-subject-status-sort-idxs'\nexport * as _20250415T201720309Z from './20250415T201720309Z-verification'\nexport * as _20250417T201720309Z from './20250417T201720309Z-firehose-cursor'\nexport * as _20250609T110704000Z from './20250609T110704000Z-safelink'\nexport * as _20250618T180246000Z from './20250618T180246000Z-add-mod-tool-to-moderation-event'\nexport * as _20250701T000000000Z from './20250701T000000000Z-add-age-assurance-state'\nexport * as _20250715T000000000Z from './20250715T000000000Z-add-mod-event-external-id'\nexport * as _20250718T150931000Z from './20250718T150931000Z-update-appeal-reason-stats'\nexport * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-index'\nexport * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/db/migrations/provider.ts"],"names":[],"mappings":";;;AAEA,6FAA6F;AAE7F,MAAa,oBAAoB;IAC/B,YACU,UAA2C,EAC3C,GAAM;QADd;;;;mBAAQ,UAAU;WAAiC;QACnD;;;;mBAAQ,GAAG;WAAG;IACb,CAAC;IACJ,KAAK,CAAC,aAAa;QACjB,MAAM,aAAa,GAA8B,EAAE,CAAA;QACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;YAC5D,aAAa,CAAC,IAAI,CAAC,GAAG;gBACpB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;gBAClD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;aACzD,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AAfD,oDAeC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/db/migrations/provider.ts"],"names":[],"mappings":";;;AAEA,6FAA6F;AAE7F,MAAa,oBAAoB;IAC/B,YACU,UAA2C,EAC3C,GAAM;QADd;;;;mBAAQ,UAAU;WAAiC;QACnD;;;;mBAAQ,GAAG;WAAG;IACb,CAAC;IACJ,KAAK,CAAC,aAAa;QACjB,MAAM,aAAa,GAA8B,EAAE,CAAA;QACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;YAC5D,aAAa,CAAC,IAAI,CAAC,GAAG;gBACpB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;gBAClD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;aACzD,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AAfD,oDAeC","sourcesContent":["import { Kysely, Migration, MigrationProvider } from 'kysely'\n\n// Passes a context argument to migrations. We use this to thread the dialect into migrations\n\nexport class CtxMigrationProvider<T> implements MigrationProvider {\n constructor(\n private migrations: Record<string, CtxMigration<T>>,\n private ctx: T,\n ) {}\n async getMigrations(): Promise<Record<string, Migration>> {\n const ctxMigrations: Record<string, Migration> = {}\n Object.entries(this.migrations).forEach(([name, migration]) => {\n ctxMigrations[name] = {\n up: async (db) => await migration.up(db, this.ctx),\n down: async (db) => await migration.down?.(db, this.ctx),\n }\n })\n return ctxMigrations\n }\n}\n\nexport interface CtxMigration<T> {\n up(db: Kysely<unknown>, ctx: T): Promise<void>\n down?(db: Kysely<unknown>, ctx: T): Promise<void>\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/db/pagination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/db/pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import { DynamicModule, sql } from 'kysely'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { AnyQb, DbRef } from './types'\n\nexport type Cursor = { primary: string; secondary: string }\nexport type LabeledResult = {\n primary: string | number\n secondary: string | number\n}\n\n/**\n * The GenericKeyset is an abstract class that sets-up the interface and partial implementation\n * of a keyset-paginated cursor with two parts. There are three types involved:\n * - Result: a raw result (i.e. a row from the db) containing data that will make-up a cursor.\n * - E.g. { createdAt: '2022-01-01T12:00:00Z', cid: 'bafyx' }\n * - LabeledResult: a Result processed such that the \"primary\" and \"secondary\" parts of the cursor are labeled.\n * - E.g. { primary: '2022-01-01T12:00:00Z', secondary: 'bafyx' }\n * - Cursor: the two string parts that make-up the packed/string cursor.\n * - E.g. packed cursor '1641038400000::bafyx' in parts { primary: '1641038400000', secondary: 'bafyx' }\n *\n * These types relate as such. Implementers define the relations marked with a *:\n * Result -*-> LabeledResult <-*-> Cursor <--> packed/string cursor\n * ↳ SQL Condition\n */\nexport abstract class GenericKeyset<R, LR extends LabeledResult> {\n constructor(\n public primary: DbRef,\n public secondary: DbRef,\n ) {}\n abstract labelResult(result: R): LR\n abstract labeledResultToCursor(labeled: LR): Cursor\n abstract cursorToLabeledResult(cursor: Cursor): LR\n packFromResult(results: R | R[]): string | undefined {\n const result = Array.isArray(results) ? results.at(-1) : results\n if (!result) return\n return this.pack(this.labelResult(result))\n }\n pack(labeled?: LR): string | undefined {\n if (!labeled) return\n const cursor = this.labeledResultToCursor(labeled)\n return this.packCursor(cursor)\n }\n unpack(cursorStr?: string): LR | undefined {\n const cursor = this.unpackCursor(cursorStr)\n if (!cursor) return\n return this.cursorToLabeledResult(cursor)\n }\n packCursor(cursor?: Cursor): string | undefined {\n if (!cursor) return\n return `${cursor.primary}::${cursor.secondary}`\n }\n unpackCursor(cursorStr?: string): Cursor | undefined {\n if (!cursorStr) return\n const result = cursorStr.split('::')\n const [primary, secondary, ...others] = result\n if (!primary || !secondary || others.length > 0) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary,\n secondary,\n }\n }\n getSql(labeled?: LR, direction?: 'asc' | 'desc', tryIndex?: boolean) {\n if (labeled === undefined) return\n if (tryIndex) {\n // The tryIndex param will likely disappear and become the default implementation: here for now for gradual rollout query-by-query.\n if (direction === 'asc') {\n return sql`((${this.primary}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}))`\n } else {\n return sql`((${this.primary}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}))`\n }\n } else {\n // @NOTE this implementation can struggle to use an index on (primary, secondary) for pagination due to the \"or\" usage.\n if (direction === 'asc') {\n return sql`((${this.primary} > ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} > ${labeled.secondary}))`\n } else {\n return sql`((${this.primary} < ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} < ${labeled.secondary}))`\n }\n }\n }\n}\n\ntype StatusKeysetParam = {\n lastReviewedAt: string | null\n lastReportedAt: string | null\n id: number\n}\n\nexport class StatusKeyset extends GenericKeyset<StatusKeysetParam, Cursor> {\n labelResult(result: StatusKeysetParam): Cursor\n labelResult(result: StatusKeysetParam) {\n const primaryField = (\n this.primary as ReturnType<DynamicModule['ref']>\n ).dynamicReference.includes('lastReviewedAt')\n ? 'lastReviewedAt'\n : 'lastReportedAt'\n\n return {\n primary: result[primaryField]\n ? new Date(`${result[primaryField]}`).getTime().toString()\n : '',\n secondary: result.id.toString(),\n }\n }\n labeledResultToCursor(labeled: Cursor) {\n return {\n primary: labeled.primary,\n secondary: labeled.secondary,\n }\n }\n cursorToLabeledResult(cursor: Cursor) {\n return {\n primary: cursor.primary\n ? new Date(parseInt(cursor.primary, 10)).toISOString()\n : '',\n secondary: cursor.secondary,\n }\n }\n unpackCursor(cursorStr?: string): Cursor | undefined {\n if (!cursorStr) return\n const result = cursorStr.split('::')\n const [primary, secondary, ...others] = result\n if (!secondary || others.length > 0) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary,\n secondary,\n }\n }\n // This is specifically built to handle nullable columns as primary sorting column\n getSql(labeled?: Cursor, direction?: 'asc' | 'desc') {\n if (labeled === undefined) return\n if (direction === 'asc') {\n return !labeled.primary\n ? sql`(${this.primary} IS NULL AND ${this.secondary} > ${labeled.secondary})`\n : sql`((${this.primary}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}) OR (${this.primary} is null))`\n } else {\n return !labeled.primary\n ? sql`(${this.primary} IS NULL AND ${this.secondary} < ${labeled.secondary})`\n : sql`((${this.primary}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}) OR (${this.primary} is null))`\n }\n }\n}\n\ntype TimeIdKeysetParam = {\n id: number\n createdAt: string | Date\n}\ntype TimeIdResult = TimeIdKeysetParam\n\nexport class TimeIdKeyset extends GenericKeyset<TimeIdKeysetParam, Cursor> {\n labelResult(result: TimeIdResult): Cursor\n labelResult(result: TimeIdResult) {\n return { primary: result.createdAt, secondary: result.id.toString() }\n }\n labeledResultToCursor(labeled: Cursor) {\n return {\n primary: new Date(labeled.primary).getTime().toString(),\n secondary: labeled.secondary,\n }\n }\n cursorToLabeledResult(cursor: Cursor) {\n const primaryDate = new Date(parseInt(cursor.primary, 10))\n if (isNaN(primaryDate.getTime())) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary: primaryDate.toISOString(),\n secondary: cursor.secondary,\n }\n }\n}\n\ntype CreatedAtUriKeysetParam = {\n createdAt: string\n uri: string\n}\n\nexport class CreatedAtUriKeyset extends GenericKeyset<\n CreatedAtUriKeysetParam,\n Cursor\n> {\n labelResult(result: CreatedAtUriKeysetParam): Cursor\n labelResult(result: CreatedAtUriKeysetParam) {\n return { primary: result.createdAt, secondary: result.uri }\n }\n labeledResultToCursor(labeled: Cursor) {\n return {\n primary: new Date(labeled.primary).getTime().toString(),\n secondary: labeled.secondary,\n }\n }\n cursorToLabeledResult(cursor: Cursor) {\n const primaryDate = new Date(parseInt(cursor.primary, 10))\n if (isNaN(primaryDate.getTime())) {\n throw new InvalidRequestError('Malformed cursor')\n }\n return {\n primary: primaryDate.toISOString(),\n secondary: cursor.secondary,\n }\n }\n}\n\nexport const paginate = <\n QB extends AnyQb,\n K extends GenericKeyset<unknown, any>,\n>(\n qb: QB,\n opts: {\n limit?: number\n cursor?: string\n direction?: 'asc' | 'desc'\n keyset: K\n tryIndex?: boolean\n // By default, pg does nullsFirst\n nullsLast?: boolean\n },\n): QB => {\n const {\n limit,\n cursor,\n keyset,\n direction = 'desc',\n tryIndex,\n nullsLast,\n } = opts\n const keysetSql = keyset.getSql(keyset.unpack(cursor), direction, tryIndex)\n return qb\n .if(!!limit, (q) => q.limit(limit as number))\n .if(!nullsLast, (q) =>\n q.orderBy(keyset.primary, direction).orderBy(keyset.secondary, direction),\n )\n .if(!!nullsLast, (q) =>\n q\n .orderBy(\n direction === 'asc'\n ? sql`${keyset.primary} asc nulls last`\n : sql`${keyset.primary} desc nulls last`,\n )\n .orderBy(\n direction === 'asc'\n ? sql`${keyset.secondary} asc nulls last`\n : sql`${keyset.secondary} desc nulls last`,\n ),\n )\n .if(!!keysetSql, (qb) => (keysetSql ? qb.where(keysetSql) : qb)) as QB\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"account_events_stats.js","sourceRoot":"","sources":["../../../src/db/schema/account_events_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,sBAAsB,CAAA"}
1
+ {"version":3,"file":"account_events_stats.js","sourceRoot":"","sources":["../../../src/db/schema/account_events_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,sBAAsB,CAAA","sourcesContent":["import { GeneratedAlways, Selectable } from 'kysely'\n\nexport const tableName = 'account_events_stats'\n\nexport type AccountEventsStats = {\n subjectDid: GeneratedAlways<string>\n takedownCount: GeneratedAlways<number>\n suspendCount: GeneratedAlways<number>\n escalateCount: GeneratedAlways<number>\n reportCount: GeneratedAlways<number>\n appealCount: GeneratedAlways<number>\n}\n\nexport type AccountEventsStatsRow = Selectable<AccountEventsStats>\n\nexport type PartialDB = { [tableName]: AccountEventsStats }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"account_record_events_stats.js","sourceRoot":"","sources":["../../../src/db/schema/account_record_events_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,6BAA6B,CAAA"}
1
+ {"version":3,"file":"account_record_events_stats.js","sourceRoot":"","sources":["../../../src/db/schema/account_record_events_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,6BAA6B,CAAA","sourcesContent":["import { GeneratedAlways, Selectable } from 'kysely'\n\nexport const tableName = 'account_record_events_stats'\n\ntype AccountRecordEventsStats = {\n subjectDid: GeneratedAlways<string>\n totalReports: GeneratedAlways<number>\n reportedCount: GeneratedAlways<number>\n escalatedCount: GeneratedAlways<number>\n appealedCount: GeneratedAlways<number>\n}\n\nexport type AccountRecordEventsStatsRow = Selectable<AccountRecordEventsStats>\n\nexport type PartialDB = { [tableName]: AccountRecordEventsStats }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"account_record_status_stats.js","sourceRoot":"","sources":["../../../src/db/schema/account_record_status_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,6BAA6B,CAAA"}
1
+ {"version":3,"file":"account_record_status_stats.js","sourceRoot":"","sources":["../../../src/db/schema/account_record_status_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,6BAA6B,CAAA","sourcesContent":["import { GeneratedAlways, Selectable } from 'kysely'\n\nexport const tableName = 'account_record_status_stats'\n\ntype AccountRecordStatusStats = {\n did: GeneratedAlways<string>\n subjectCount: GeneratedAlways<number>\n pendingCount: GeneratedAlways<number>\n processedCount: GeneratedAlways<number>\n takendownCount: GeneratedAlways<number>\n}\n\nexport type AccountRecordStatusStatsRow = Selectable<AccountRecordStatusStats>\n\nexport type PartialDB = { [tableName]: AccountRecordStatusStats }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"blob_push_event.js","sourceRoot":"","sources":["../../../src/db/schema/blob_push_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,iBAAiB,CAAA"}
1
+ {"version":3,"file":"blob_push_event.js","sourceRoot":"","sources":["../../../src/db/schema/blob_push_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,iBAAiB,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const eventTableName = 'blob_push_event'\n\nexport type BlobPushEventType = 'pds_takedown' | 'appview_takedown'\n\nexport interface BlobPushEvent {\n id: Generated<number>\n eventType: BlobPushEventType\n subjectDid: string\n subjectBlobCid: string\n subjectUri: string | null\n takedownRef: string | null\n confirmedAt: Date | null\n lastAttempted: Date | null\n attempts: Generated<number>\n}\n\nexport type PartialDB = {\n [eventTableName]: BlobPushEvent\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"communication_template.js","sourceRoot":"","sources":["../../../src/db/schema/communication_template.ts"],"names":[],"mappings":";;;AAEa,QAAA,8BAA8B,GAAG,wBAAwB,CAAA"}
1
+ {"version":3,"file":"communication_template.js","sourceRoot":"","sources":["../../../src/db/schema/communication_template.ts"],"names":[],"mappings":";;;AAEa,QAAA,8BAA8B,GAAG,wBAAwB,CAAA","sourcesContent":["import { Generated, GeneratedAlways } from 'kysely'\n\nexport const communicationTemplateTableName = 'communication_template'\n\nexport interface CommunicationTemplate {\n id: GeneratedAlways<number>\n name: string\n contentMarkdown: string\n subject: string | null\n lang: string | null\n disabled: Generated<boolean>\n createdAt: Date\n updatedAt: Date\n lastUpdatedBy: string\n}\n\nexport type PartialDB = {\n [communicationTemplateTableName]: CommunicationTemplate\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"firehose_cursor.js","sourceRoot":"","sources":["../../../src/db/schema/firehose_cursor.ts"],"names":[],"mappings":";;;AAEa,QAAA,uBAAuB,GAAG,iBAAiB,CAAA"}
1
+ {"version":3,"file":"firehose_cursor.js","sourceRoot":"","sources":["../../../src/db/schema/firehose_cursor.ts"],"names":[],"mappings":";;;AAEa,QAAA,uBAAuB,GAAG,iBAAiB,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const firehoseCursorTableName = 'firehose_cursor'\n\nexport interface FirehoseCursor {\n service: string\n cursor: number | null\n updatedAt: Generated<string>\n}\n\nexport type PartialDB = {\n [firehoseCursorTableName]: FirehoseCursor\n}\n"]}
@@ -14,10 +14,11 @@ import * as recordEventsStats from './record_events_stats';
14
14
  import * as recordPushEvent from './record_push_event';
15
15
  import * as repoPushEvent from './repo_push_event';
16
16
  import * as safelink from './safelink';
17
+ import * as scheduledAction from './scheduled-action';
17
18
  import * as setting from './setting';
18
19
  import * as signingKey from './signing_key';
19
20
  import * as verification from './verification';
20
- export type DatabaseSchemaType = modEvent.PartialDB & modSubjectStatus.PartialDB & label.PartialDB & signingKey.PartialDB & repoPushEvent.PartialDB & recordPushEvent.PartialDB & blobPushEvent.PartialDB & communicationTemplate.PartialDB & set.PartialDB & member.PartialDB & setting.PartialDB & accountEventsStats.PartialDB & recordEventsStats.PartialDB & accountRecordEventsStats.PartialDB & accountRecordStatusStats.PartialDB & verification.PartialDB & firehoseCursor.PartialDB & safelink.PartialDB;
21
+ export type DatabaseSchemaType = modEvent.PartialDB & modSubjectStatus.PartialDB & label.PartialDB & signingKey.PartialDB & repoPushEvent.PartialDB & recordPushEvent.PartialDB & blobPushEvent.PartialDB & communicationTemplate.PartialDB & set.PartialDB & member.PartialDB & setting.PartialDB & accountEventsStats.PartialDB & recordEventsStats.PartialDB & accountRecordEventsStats.PartialDB & accountRecordStatusStats.PartialDB & verification.PartialDB & firehoseCursor.PartialDB & safelink.PartialDB & scheduledAction.PartialDB;
21
22
  export type DatabaseSchema = Kysely<DatabaseSchemaType>;
22
23
  export default DatabaseSchema;
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,qBAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,GACjD,gBAAgB,CAAC,SAAS,GAC1B,KAAK,CAAC,SAAS,GACf,UAAU,CAAC,SAAS,GACpB,aAAa,CAAC,SAAS,GACvB,eAAe,CAAC,SAAS,GACzB,aAAa,CAAC,SAAS,GACvB,qBAAqB,CAAC,SAAS,GAC/B,GAAG,CAAC,SAAS,GACb,MAAM,CAAC,SAAS,GAChB,OAAO,CAAC,SAAS,GACjB,kBAAkB,CAAC,SAAS,GAC5B,iBAAiB,CAAC,SAAS,GAC3B,wBAAwB,CAAC,SAAS,GAClC,wBAAwB,CAAC,SAAS,GAClC,YAAY,CAAC,SAAS,GACtB,cAAc,CAAC,SAAS,GACxB,QAAQ,CAAC,SAAS,CAAA;AAEpB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEvD,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,qBAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,GACjD,gBAAgB,CAAC,SAAS,GAC1B,KAAK,CAAC,SAAS,GACf,UAAU,CAAC,SAAS,GACpB,aAAa,CAAC,SAAS,GACvB,eAAe,CAAC,SAAS,GACzB,aAAa,CAAC,SAAS,GACvB,qBAAqB,CAAC,SAAS,GAC/B,GAAG,CAAC,SAAS,GACb,MAAM,CAAC,SAAS,GAChB,OAAO,CAAC,SAAS,GACjB,kBAAkB,CAAC,SAAS,GAC5B,iBAAiB,CAAC,SAAS,GAC3B,wBAAwB,CAAC,SAAS,GAClC,wBAAwB,CAAC,SAAS,GAClC,YAAY,CAAC,SAAS,GACtB,cAAc,CAAC,SAAS,GACxB,QAAQ,CAAC,SAAS,GAClB,eAAe,CAAC,SAAS,CAAA;AAE3B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEvD,eAAe,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"","sourcesContent":["import { Kysely } from 'kysely'\nimport * as accountEventsStats from './account_events_stats'\nimport * as accountRecordEventsStats from './account_record_events_stats'\nimport * as accountRecordStatusStats from './account_record_status_stats'\nimport * as blobPushEvent from './blob_push_event'\nimport * as communicationTemplate from './communication_template'\nimport * as firehoseCursor from './firehose_cursor'\nimport * as label from './label'\nimport * as member from './member'\nimport * as modEvent from './moderation_event'\nimport * as modSubjectStatus from './moderation_subject_status'\nimport * as set from './ozone_set'\nimport * as recordEventsStats from './record_events_stats'\nimport * as recordPushEvent from './record_push_event'\nimport * as repoPushEvent from './repo_push_event'\nimport * as safelink from './safelink'\nimport * as scheduledAction from './scheduled-action'\nimport * as setting from './setting'\nimport * as signingKey from './signing_key'\nimport * as verification from './verification'\n\nexport type DatabaseSchemaType = modEvent.PartialDB &\n modSubjectStatus.PartialDB &\n label.PartialDB &\n signingKey.PartialDB &\n repoPushEvent.PartialDB &\n recordPushEvent.PartialDB &\n blobPushEvent.PartialDB &\n communicationTemplate.PartialDB &\n set.PartialDB &\n member.PartialDB &\n setting.PartialDB &\n accountEventsStats.PartialDB &\n recordEventsStats.PartialDB &\n accountRecordEventsStats.PartialDB &\n accountRecordStatusStats.PartialDB &\n verification.PartialDB &\n firehoseCursor.PartialDB &\n safelink.PartialDB &\n scheduledAction.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n\nexport default DatabaseSchema\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../src/db/schema/label.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,OAAO,CAAA;AAmBnB,QAAA,YAAY,GAAG,eAAe,CAAA,CAAC,0BAA0B"}
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../../src/db/schema/label.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,OAAO,CAAA;AAmBnB,QAAA,YAAY,GAAG,eAAe,CAAA,CAAC,0BAA0B","sourcesContent":["import { Generated, Selectable } from 'kysely'\n\nexport const tableName = 'label'\n\nexport interface Label {\n id: Generated<number>\n src: string\n uri: string\n cid: string\n val: string\n neg: boolean\n cts: string\n exp: string | null\n sig: Buffer | null\n signingKeyId: number | null\n}\n\nexport type LabelRow = Selectable<Label>\n\nexport type PartialDB = { [tableName]: Label }\n\nexport const LabelChannel = 'label_channel' // used with notify/listen\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"member.js","sourceRoot":"","sources":["../../../src/db/schema/member.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"member.js","sourceRoot":"","sources":["../../../src/db/schema/member.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG,QAAQ,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const memberTableName = 'member'\n\nexport interface Member {\n did: string\n role:\n | 'tools.ozone.team.defs#roleAdmin'\n | 'tools.ozone.team.defs#roleTriage'\n | 'tools.ozone.team.defs#roleVerifier'\n | 'tools.ozone.team.defs#roleModerator'\n disabled: Generated<boolean>\n handle: string | null\n displayName: string | null\n createdAt: Date\n updatedAt: Date\n lastUpdatedBy: string\n}\n\nexport type PartialDB = {\n [memberTableName]: Member\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"moderation_event.js","sourceRoot":"","sources":["../../../src/db/schema/moderation_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,kBAAkB,CAAA"}
1
+ {"version":3,"file":"moderation_event.js","sourceRoot":"","sources":["../../../src/db/schema/moderation_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,kBAAkB,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const eventTableName = 'moderation_event'\n\nexport interface ModerationEvent {\n id: Generated<number>\n action:\n | 'tools.ozone.moderation.defs#modEventTakedown'\n | 'tools.ozone.moderation.defs#modEventAcknowledge'\n | 'tools.ozone.moderation.defs#modEventEscalate'\n | 'tools.ozone.moderation.defs#modEventComment'\n | 'tools.ozone.moderation.defs#modEventLabel'\n | 'tools.ozone.moderation.defs#modEventReport'\n | 'tools.ozone.moderation.defs#modEventMute'\n | 'tools.ozone.moderation.defs#modEventUnmute'\n | 'tools.ozone.moderation.defs#modEventMuteReporter'\n | 'tools.ozone.moderation.defs#modEventUnmuteReporter'\n | 'tools.ozone.moderation.defs#modEventReverseTakedown'\n | 'tools.ozone.moderation.defs#modEventEmail'\n | 'tools.ozone.moderation.defs#modEventResolveAppeal'\n | 'tools.ozone.moderation.defs#modEventTag'\n | 'tools.ozone.moderation.defs#accountEvent'\n | 'tools.ozone.moderation.defs#identityEvent'\n | 'tools.ozone.moderation.defs#recordEvent'\n | 'tools.ozone.moderation.defs#modEventPriorityScore'\n | 'tools.ozone.moderation.defs#ageAssuranceEvent'\n | 'tools.ozone.moderation.defs#ageAssuranceOverrideEvent'\n | 'tools.ozone.moderation.defs#revokeAccountCredentialsEvent'\n subjectType:\n | 'com.atproto.admin.defs#repoRef'\n | 'com.atproto.repo.strongRef'\n | 'chat.bsky.convo.defs#messageRef'\n subjectDid: string\n subjectUri: string | null\n subjectCid: string | null\n subjectBlobCids: string[] | null\n subjectMessageId: string | null\n createLabelVals: string | null\n negateLabelVals: string | null\n comment: string | null\n createdAt: string\n createdBy: string\n durationInHours: number | null\n expiresAt: string | null\n meta: Record<string, string | boolean | number> | null\n addedTags: string[] | null\n removedTags: string[] | null\n legacyRefId: number | null\n modTool: { name: string; meta?: { [_ in string]: unknown } } | null\n externalId: string | null\n}\n\nexport type PartialDB = {\n [eventTableName]: ModerationEvent\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"moderation_subject_status.js","sourceRoot":"","sources":["../../../src/db/schema/moderation_subject_status.ts"],"names":[],"mappings":";;;AAQa,QAAA,sBAAsB,GAAG,2BAA2B,CAAA"}
1
+ {"version":3,"file":"moderation_subject_status.js","sourceRoot":"","sources":["../../../src/db/schema/moderation_subject_status.ts"],"names":[],"mappings":";;;AAQa,QAAA,sBAAsB,GAAG,2BAA2B,CAAA","sourcesContent":["import { Generated } from 'kysely'\nimport {\n REVIEWCLOSED,\n REVIEWESCALATED,\n REVIEWNONE,\n REVIEWOPEN,\n} from '../../lexicon/types/tools/ozone/moderation/defs'\n\nexport const subjectStatusTableName = 'moderation_subject_status'\n\nexport interface ModerationSubjectStatus {\n id: Generated<number>\n did: string\n recordPath: string\n recordCid: string | null\n blobCids: string[] | null\n reviewState:\n | typeof REVIEWCLOSED\n | typeof REVIEWOPEN\n | typeof REVIEWESCALATED\n | typeof REVIEWNONE\n createdAt: string\n updatedAt: string\n lastReviewedBy: string | null\n lastReviewedAt: string | null\n lastReportedAt: string | null\n lastAppealedAt: string | null\n hostingUpdatedAt: string | null\n hostingDeletedAt: string | null\n hostingCreatedAt: string | null\n hostingDeactivatedAt: string | null\n hostingReactivatedAt: string | null\n hostingStatus: string | null\n muteUntil: string | null\n muteReportingUntil: string | null\n suspendUntil: string | null\n takendown: boolean\n appealed: boolean | null\n comment: string | null\n tags: string[] | null\n priorityScore?: number\n ageAssuranceState: string\n ageAssuranceUpdatedBy?: string | null\n}\n\nexport type PartialDB = {\n [subjectStatusTableName]: ModerationSubjectStatus\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ozone_set.js","sourceRoot":"","sources":["../../../src/db/schema/ozone_set.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,YAAY,CAAA;AAChC,QAAA,sBAAsB,GAAG,WAAW,CAAA"}
1
+ {"version":3,"file":"ozone_set.js","sourceRoot":"","sources":["../../../src/db/schema/ozone_set.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,YAAY,CAAA;AAChC,QAAA,sBAAsB,GAAG,WAAW,CAAA","sourcesContent":["import { Generated, GeneratedAlways } from 'kysely'\n\nexport const ozoneSetTableName = 'set_detail'\nexport const ozoneSetValueTableName = 'set_value'\n\nexport interface SetDetail {\n id: GeneratedAlways<number>\n name: string\n description: string | null\n createdAt: Generated<Date>\n updatedAt: Generated<Date>\n}\n\nexport interface SetValue {\n id: GeneratedAlways<number>\n setId: number\n value: string\n createdAt: Generated<Date>\n}\n\nexport type PartialDB = {\n [ozoneSetTableName]: SetDetail\n [ozoneSetValueTableName]: SetValue\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"record_events_stats.js","sourceRoot":"","sources":["../../../src/db/schema/record_events_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,qBAAqB,CAAA"}
1
+ {"version":3,"file":"record_events_stats.js","sourceRoot":"","sources":["../../../src/db/schema/record_events_stats.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,qBAAqB,CAAA","sourcesContent":["import { GeneratedAlways, Selectable } from 'kysely'\n\nexport const tableName = 'record_events_stats'\n\nexport type RecordEventsStats = {\n subjectDid: GeneratedAlways<string>\n subjectUri: GeneratedAlways<string>\n escalateCount: GeneratedAlways<number>\n reportCount: GeneratedAlways<number>\n appealCount: GeneratedAlways<number>\n}\n\nexport type RecordEventsStatsRow = Selectable<RecordEventsStats>\n\nexport type PartialDB = { [tableName]: RecordEventsStats }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"record_push_event.js","sourceRoot":"","sources":["../../../src/db/schema/record_push_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,mBAAmB,CAAA"}
1
+ {"version":3,"file":"record_push_event.js","sourceRoot":"","sources":["../../../src/db/schema/record_push_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,mBAAmB,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const eventTableName = 'record_push_event'\n\nexport type RecordPushEventType = 'pds_takedown' | 'appview_takedown'\n\nexport interface RecordPushEvent {\n id: Generated<number>\n eventType: RecordPushEventType\n subjectDid: string\n subjectUri: string\n subjectCid: string\n takedownRef: string | null\n confirmedAt: Date | null\n lastAttempted: Date | null\n attempts: Generated<number>\n}\n\nexport type PartialDB = {\n [eventTableName]: RecordPushEvent\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"repo_push_event.js","sourceRoot":"","sources":["../../../src/db/schema/repo_push_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,iBAAiB,CAAA"}
1
+ {"version":3,"file":"repo_push_event.js","sourceRoot":"","sources":["../../../src/db/schema/repo_push_event.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG,iBAAiB,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const eventTableName = 'repo_push_event'\n\nexport type RepoPushEventType = 'pds_takedown' | 'appview_takedown'\n\nexport interface RepoPushEvent {\n id: Generated<number>\n eventType: RepoPushEventType\n subjectDid: string\n takedownRef: string | null\n confirmedAt: Date | null\n lastAttempted: Date | null\n attempts: Generated<number>\n}\n\nexport type PartialDB = {\n [eventTableName]: RepoPushEvent\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"safelink.js","sourceRoot":"","sources":["../../../src/db/schema/safelink.ts"],"names":[],"mappings":";;;AAQa,QAAA,qBAAqB,GAAG,eAAe,CAAA;AACvC,QAAA,sBAAsB,GAAG,gBAAgB,CAAA"}
1
+ {"version":3,"file":"safelink.js","sourceRoot":"","sources":["../../../src/db/schema/safelink.ts"],"names":[],"mappings":";;;AAQa,QAAA,qBAAqB,GAAG,eAAe,CAAA;AACvC,QAAA,sBAAsB,GAAG,gBAAgB,CAAA","sourcesContent":["import { GeneratedAlways } from 'kysely'\nimport {\n SafelinkActionType,\n SafelinkEventType,\n SafelinkPatternType,\n SafelinkReasonType,\n} from '../../api/util'\n\nexport const safelinkRuleTableName = 'safelink_rule'\nexport const safelinkEventTableName = 'safelink_event'\n\nexport interface SafelinkRule {\n id: GeneratedAlways<number>\n url: string\n pattern: SafelinkPatternType\n action: SafelinkActionType\n reason: SafelinkReasonType\n createdBy: string\n createdAt: string\n updatedAt: string\n comment: string | null\n}\n\nexport interface SafelinkEvent {\n id: GeneratedAlways<number>\n eventType: SafelinkEventType\n url: string\n pattern: SafelinkPatternType\n action: SafelinkActionType\n reason: SafelinkReasonType\n createdBy: string\n createdAt: string\n comment: string | null\n}\n\nexport type PartialDB = {\n [safelinkRuleTableName]: SafelinkRule\n [safelinkEventTableName]: SafelinkEvent\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import { GeneratedAlways } from 'kysely';
2
+ export declare const scheduledActionTableName = "scheduled_action";
3
+ export interface ScheduledAction {
4
+ id: GeneratedAlways<number>;
5
+ action: string;
6
+ eventData: unknown | null;
7
+ did: string;
8
+ executeAt: string | null;
9
+ executeAfter: string | null;
10
+ executeUntil: string | null;
11
+ randomizeExecution: boolean;
12
+ createdBy: string;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ status: string;
16
+ lastExecutedAt: string | null;
17
+ lastFailureReason: string | null;
18
+ executionEventId: number | null;
19
+ }
20
+ export type PartialDB = {
21
+ [scheduledActionTableName]: ScheduledAction;
22
+ };
23
+ //# sourceMappingURL=scheduled-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-action.d.ts","sourceRoot":"","sources":["../../../src/db/schema/scheduled-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,eAAO,MAAM,wBAAwB,qBAAqB,CAAA;AAE1D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,GAAG,IAAI,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,wBAAwB,CAAC,EAAE,eAAe,CAAA;CAC5C,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scheduledActionTableName = void 0;
4
+ exports.scheduledActionTableName = 'scheduled_action';
5
+ //# sourceMappingURL=scheduled-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-action.js","sourceRoot":"","sources":["../../../src/db/schema/scheduled-action.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,kBAAkB,CAAA","sourcesContent":["import { GeneratedAlways } from 'kysely'\n\nexport const scheduledActionTableName = 'scheduled_action'\n\nexport interface ScheduledAction {\n id: GeneratedAlways<number>\n action: string\n eventData: unknown | null\n did: string\n executeAt: string | null\n executeAfter: string | null\n executeUntil: string | null\n randomizeExecution: boolean\n createdBy: string\n createdAt: string\n updatedAt: string\n status: string\n lastExecutedAt: string | null\n lastFailureReason: string | null\n executionEventId: number | null\n}\n\nexport type PartialDB = {\n [scheduledActionTableName]: ScheduledAction\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"setting.js","sourceRoot":"","sources":["../../../src/db/schema/setting.ts"],"names":[],"mappings":";;;AAGa,QAAA,gBAAgB,GAAG,SAAS,CAAA"}
1
+ {"version":3,"file":"setting.js","sourceRoot":"","sources":["../../../src/db/schema/setting.ts"],"names":[],"mappings":";;;AAGa,QAAA,gBAAgB,GAAG,SAAS,CAAA","sourcesContent":["import { Generated, GeneratedAlways } from 'kysely'\nimport { Member } from './member'\n\nexport const settingTableName = 'setting'\n\nexport type SettingScope = 'personal' | 'instance'\n\nexport interface Setting {\n id: GeneratedAlways<number>\n key: string\n value: Record<string, unknown>\n managerRole: Member['role'] | null\n description: string | null\n did: string\n scope: SettingScope\n lastUpdatedBy: string\n createdBy: string\n createdAt: Generated<Date>\n updatedAt: Generated<Date>\n}\n\nexport type PartialDB = {\n [settingTableName]: Setting\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"signing_key.js","sourceRoot":"","sources":["../../../src/db/schema/signing_key.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,aAAa,CAAA"}
1
+ {"version":3,"file":"signing_key.js","sourceRoot":"","sources":["../../../src/db/schema/signing_key.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,aAAa,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const tableName = 'signing_key'\n\nexport interface SigningKey {\n id: Generated<number>\n key: string\n}\n\nexport type PartialDB = { [tableName]: SigningKey }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/db/schema/verification.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAG,cAAc,CAAA"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/db/schema/verification.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAG,cAAc,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const verificationTableName = 'verification'\n\nexport interface Verification {\n uri: string\n cid: string\n issuer: string\n subject: string\n handle: string\n displayName: string\n revokeReason: string | null\n revokedBy: string | null\n revokedAt: string | null\n createdAt: string\n updatedAt: Generated<string>\n}\n\nexport type PartialDB = {\n [verificationTableName]: Verification\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":";;;AAAA,mCAA2E;AAgBpE,MAAM,KAAK,GAAG,CAAI,GAAM,EAAE,EAAE;IACjC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAA,YAAG,EAAG,MAAM,CAAA;IACrC,OAAO,IAAA,YAAG,EAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAA;AAC9C,CAAC,CAAA;AAHY,QAAA,KAAK,SAGjB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":";;;AAAA,mCAA2E;AAgBpE,MAAM,KAAK,GAAG,CAAI,GAAM,EAAE,EAAE;IACjC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAA,YAAG,EAAG,MAAM,CAAA;IACrC,OAAO,IAAA,YAAG,EAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAA;AAC9C,CAAC,CAAA;AAHY,QAAA,KAAK,SAGjB","sourcesContent":["import { DynamicModule, RawBuilder, SelectQueryBuilder, sql } from 'kysely'\nimport { Pool as PgPool } from 'pg'\n\nexport type DbRef = RawBuilder | ReturnType<DynamicModule['ref']>\n\nexport type AnyQb = SelectQueryBuilder<any, any, any>\n\nexport type PgOptions = {\n url: string\n pool?: PgPool\n schema?: string\n poolSize?: number\n poolMaxUses?: number\n poolIdleTimeoutMs?: number\n}\n\nexport const jsonb = <T>(val: T) => {\n if (val === null) return sql<T>`null`\n return sql<T>`${JSON.stringify(val)}::jsonb`\n}\n"]}
package/dist/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AACA,sDAAgD;AAChD,qCAA4C;AAErC,MAAM,OAAO,GAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACnE,mBAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAA;IACtD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,uBAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC5C,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACxD,CAAC,CAAA;AAPY,QAAA,OAAO,WAOnB"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AACA,sDAAgD;AAChD,qCAA4C;AAErC,MAAM,OAAO,GAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IACnE,mBAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAA;IACtD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,uBAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC5C,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACxD,CAAC,CAAA;AAPY,QAAA,OAAO,WAOnB","sourcesContent":["import { ErrorRequestHandler } from 'express'\nimport { XRPCError } from '@atproto/xrpc-server'\nimport { httpLogger as log } from './logger'\n\nexport const handler: ErrorRequestHandler = (err, _req, res, next) => {\n log.error({ err }, 'unexpected internal server error')\n if (res.headersSent) {\n return next(err)\n }\n const serverError = XRPCError.fromError(err)\n res.status(serverError.type).json(serverError.payload)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"image-invalidator.js","sourceRoot":"","sources":["../src/image-invalidator.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"image-invalidator.js","sourceRoot":"","sources":["../src/image-invalidator.ts"],"names":[],"mappings":"","sourcesContent":["// Invalidation is a general interface for propagating an image blob\n// takedown through any caches where a representation of it may be stored.\n// @NOTE this does not remove the blob from storage: just invalidates it from caches.\n// @NOTE keep in sync with same interface in aws/src/cloudfront.ts\nexport interface ImageInvalidator {\n invalidate(subject: string, paths: string[]): Promise<void>\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import events from 'node:events'\nimport http from 'node:http'\nimport { AddressInfo } from 'node:net'\nimport compression from 'compression'\nimport cors from 'cors'\nimport express from 'express'\nimport { HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport API, { health, wellKnown } from './api'\nimport { OzoneConfig, OzoneSecrets } from './config'\nimport { AppContext, AppContextOptions } from './context'\nimport { Member } from './db/schema/member'\nimport * as error from './error'\nimport { createServer } from './lexicon'\nimport { dbLogger, loggerMiddleware } from './logger'\n\nexport * from './config'\nexport { type ImageInvalidator } from './image-invalidator'\nexport { Database } from './db'\nexport { EventPusher, EventReverser, OzoneDaemon } from './daemon'\nexport { AppContext } from './context'\nexport { httpLogger } from './logger'\n\nexport class OzoneService {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n private dbStatsInterval?: NodeJS.Timeout\n\n constructor(opts: { ctx: AppContext; app: express.Application }) {\n this.ctx = opts.ctx\n this.app = opts.app\n }\n\n static async create(\n cfg: OzoneConfig,\n secrets: OzoneSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<OzoneService> {\n const app = express()\n app.set('trust proxy', true)\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(loggerMiddleware)\n app.use(compression())\n\n const ctx = await AppContext.fromConfig(cfg, secrets, overrides)\n\n let server = createServer({\n validateResponse: false,\n payload: {\n jsonLimit: 100 * 1024, // 100kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: 5 * 1024 * 1024, // 5mb\n },\n })\n\n server = API(server, ctx)\n\n app.use(health.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(server.xrpc.router)\n app.use(error.handler)\n\n return new OzoneService({ ctx, app })\n }\n\n async seedInitialMembers() {\n const members: Array<{ role: Member['role']; did: string }> = []\n this.ctx.cfg.access.admins.forEach((did) =>\n members.push({\n role: 'tools.ozone.team.defs#roleAdmin',\n did,\n }),\n )\n this.ctx.cfg.access.triage.forEach((did) =>\n members.push({\n role: 'tools.ozone.team.defs#roleTriage',\n did,\n }),\n )\n this.ctx.cfg.access.moderators.forEach((did) =>\n members.push({\n role: 'tools.ozone.team.defs#roleModerator',\n did,\n }),\n )\n\n for (const member of members) {\n const service = this.ctx.teamService(this.ctx.db)\n await service.upsert({\n ...member,\n lastUpdatedBy: this.ctx.cfg.service.did,\n })\n }\n }\n\n async start(): Promise<http.Server> {\n if (this.dbStatsInterval) {\n throw new Error(`${this.constructor.name} already started`)\n }\n\n // Any moderator that are configured via env var may not exist in the database\n // so we need to sync them from env var to the database\n await this.seedInitialMembers()\n\n const { db, backgroundQueue } = this.ctx\n this.dbStatsInterval = setInterval(() => {\n dbLogger.info(\n {\n idleCount: db.pool.idleCount,\n totalCount: db.pool.totalCount,\n waitingCount: db.pool.waitingCount,\n },\n 'db pool stats',\n )\n dbLogger.info(backgroundQueue.getStats(), 'background queue stats')\n }, 10000)\n await this.ctx.sequencer.start()\n const server = this.app.listen(this.ctx.cfg.service.port)\n this.server = server\n server.keepAliveTimeout = 90000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n const { port } = server.address() as AddressInfo\n this.ctx.assignPort(port)\n return server\n }\n\n async destroy(): Promise<void> {\n await this.terminator?.terminate()\n await this.ctx.backgroundQueue.destroy()\n await this.ctx.sequencer.destroy()\n await this.ctx.db.close()\n clearInterval(this.dbStatsInterval)\n this.dbStatsInterval = undefined\n }\n}\n\nexport default OzoneService\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/jetstream/service.ts"],"names":[],"mappings":";;;AAAA,sDAAyD;AAoDzD,MAAa,SAAS;IAMpB,YAAY,IAAsB;QAL3B;;;;;WAAuB;QACvB;;;;;WAAQ;QACf,0BAA0B;QACnB;;;;;WAAe;QAGpB,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC7C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAGX;QACC,IAAI,CAAC,EAAE,GAAG,IAAI,gCAAkB,CAAC;YAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,IAAI,IAAI,CAAC,MAAM;oBACb,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC5B,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpD,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,IAAI,EAAE,CAAA;gBAEpE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAC9B,aAAiD,CAClD,CAAA;gBACH,CAAC;qBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAClC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,aAAkC,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IACtB,CAAC;CACF;AAnDD,8BAmDC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/jetstream/service.ts"],"names":[],"mappings":";;;AAAA,sDAAyD;AAoDzD,MAAa,SAAS;IAMpB,YAAY,IAAsB;QAL3B;;;;;WAAuB;QACvB;;;;;WAAQ;QACf,0BAA0B;QACnB;;;;;WAAe;QAGpB,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAC7C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAGX;QACC,IAAI,CAAC,EAAE,GAAG,IAAI,gCAAkB,CAAC;YAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,IAAI,IAAI,CAAC,MAAM;oBACb,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC5B,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpD,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,IAAI,EAAE,CAAA;gBAEpE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC3B,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAC9B,aAAiD,CAClD,CAAA;gBACH,CAAC;qBAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAClC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,aAAkC,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IACtB,CAAC;CACF;AAnDD,8BAmDC","sourcesContent":["import { WebSocketKeepAlive } from '@atproto/xrpc-server'\n\ntype JetstreamRecord = Record<string, unknown>\ntype OnCreateCallback<T extends JetstreamRecord> = (\n e: CommitCreateEvent<T>,\n) => Promise<void>\n\nexport type JetstreamOptions = {\n endpoint: string\n /**\n * The record collections that you want to receive updates for.\n * Leave this empty to receive updates for all record collections.\n */\n wantedCollections?: string[]\n /**\n * The DIDs that you want to receive updates for.\n * Leave this empty to receive updates for all DIDs.\n */\n wantedDids?: string[]\n\n /**\n * The Unix timestamp in microseconds that you want to receive updates from.\n */\n cursor?: number\n}\nexport type EventBase = {\n did: string\n time_us: number\n // @TODO: Limited to just commit events for now\n kind: 'commit'\n}\nexport type CommitBase = {\n collection: string\n rkey: string\n cid: string\n}\nexport interface CommitCreateEvent<RecordType extends JetstreamRecord>\n extends EventBase {\n kind: 'commit'\n commit: {\n operation: 'create'\n record: RecordType\n } & CommitBase\n}\n\nexport interface CommitDeleteEvent extends EventBase {\n kind: 'commit'\n commit: {\n operation: 'delete'\n } & CommitBase\n}\n\nexport class Jetstream {\n public ws?: WebSocketKeepAlive\n public url: URL\n /** The current cursor. */\n public cursor?: number\n\n constructor(opts: JetstreamOptions) {\n this.url = new URL(opts.endpoint)\n opts.wantedCollections?.forEach((collection) => {\n this.url.searchParams.append('wantedCollections', collection)\n })\n opts.wantedDids?.forEach((did) => {\n this.url.searchParams.append('wantedDids', did)\n })\n if (opts.cursor) this.cursor = opts.cursor\n }\n\n async start(options: {\n onCreate?: Record<string, OnCreateCallback<any>>\n onDelete?: Record<string, (e: CommitDeleteEvent) => Promise<void>>\n }) {\n this.ws = new WebSocketKeepAlive({\n getUrl: async () => {\n if (this.cursor)\n this.url.searchParams.set('cursor', this.cursor.toString())\n return this.url.toString()\n },\n })\n\n for await (const message of this.ws) {\n const parsedMessage = JSON.parse(message.toString())\n if (parsedMessage.kind === 'commit') {\n const { collection, operation, record } = parsedMessage.commit || {}\n\n if (operation === 'create') {\n options.onCreate?.[collection]?.(\n parsedMessage as CommitCreateEvent<typeof record>,\n )\n } else if (operation === 'delete') {\n options.onDelete?.[collection]?.(parsedMessage as CommitDeleteEvent)\n }\n }\n }\n }\n\n /**\n * Closes the WebSocket connection.\n */\n close() {\n this.ws?.ws?.close()\n }\n}\n"]}
@@ -201,6 +201,7 @@ import * as ToolsOzoneCommunicationDeleteTemplate from './types/tools/ozone/comm
201
201
  import * as ToolsOzoneCommunicationListTemplates from './types/tools/ozone/communication/listTemplates.js';
202
202
  import * as ToolsOzoneCommunicationUpdateTemplate from './types/tools/ozone/communication/updateTemplate.js';
203
203
  import * as ToolsOzoneHostingGetAccountHistory from './types/tools/ozone/hosting/getAccountHistory.js';
204
+ import * as ToolsOzoneModerationCancelScheduledActions from './types/tools/ozone/moderation/cancelScheduledActions.js';
204
205
  import * as ToolsOzoneModerationEmitEvent from './types/tools/ozone/moderation/emitEvent.js';
205
206
  import * as ToolsOzoneModerationGetAccountTimeline from './types/tools/ozone/moderation/getAccountTimeline.js';
206
207
  import * as ToolsOzoneModerationGetEvent from './types/tools/ozone/moderation/getEvent.js';
@@ -210,8 +211,10 @@ import * as ToolsOzoneModerationGetRepo from './types/tools/ozone/moderation/get
210
211
  import * as ToolsOzoneModerationGetReporterStats from './types/tools/ozone/moderation/getReporterStats.js';
211
212
  import * as ToolsOzoneModerationGetRepos from './types/tools/ozone/moderation/getRepos.js';
212
213
  import * as ToolsOzoneModerationGetSubjects from './types/tools/ozone/moderation/getSubjects.js';
214
+ import * as ToolsOzoneModerationListScheduledActions from './types/tools/ozone/moderation/listScheduledActions.js';
213
215
  import * as ToolsOzoneModerationQueryEvents from './types/tools/ozone/moderation/queryEvents.js';
214
216
  import * as ToolsOzoneModerationQueryStatuses from './types/tools/ozone/moderation/queryStatuses.js';
217
+ import * as ToolsOzoneModerationScheduleAction from './types/tools/ozone/moderation/scheduleAction.js';
215
218
  import * as ToolsOzoneModerationSearchRepos from './types/tools/ozone/moderation/searchRepos.js';
216
219
  import * as ToolsOzoneSafelinkAddRule from './types/tools/ozone/safelink/addRule.js';
217
220
  import * as ToolsOzoneSafelinkQueryEvents from './types/tools/ozone/safelink/queryEvents.js';
@@ -708,6 +711,7 @@ export declare class ToolsOzoneHostingNS {
708
711
  export declare class ToolsOzoneModerationNS {
709
712
  _server: Server;
710
713
  constructor(server: Server);
714
+ cancelScheduledActions<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationCancelScheduledActions.QueryParams, ToolsOzoneModerationCancelScheduledActions.HandlerInput, ToolsOzoneModerationCancelScheduledActions.HandlerOutput>): void;
711
715
  emitEvent<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationEmitEvent.QueryParams, ToolsOzoneModerationEmitEvent.HandlerInput, ToolsOzoneModerationEmitEvent.HandlerOutput>): void;
712
716
  getAccountTimeline<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationGetAccountTimeline.QueryParams, ToolsOzoneModerationGetAccountTimeline.HandlerInput, ToolsOzoneModerationGetAccountTimeline.HandlerOutput>): void;
713
717
  getEvent<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationGetEvent.QueryParams, ToolsOzoneModerationGetEvent.HandlerInput, ToolsOzoneModerationGetEvent.HandlerOutput>): void;
@@ -717,8 +721,10 @@ export declare class ToolsOzoneModerationNS {
717
721
  getReporterStats<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationGetReporterStats.QueryParams, ToolsOzoneModerationGetReporterStats.HandlerInput, ToolsOzoneModerationGetReporterStats.HandlerOutput>): void;
718
722
  getRepos<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationGetRepos.QueryParams, ToolsOzoneModerationGetRepos.HandlerInput, ToolsOzoneModerationGetRepos.HandlerOutput>): void;
719
723
  getSubjects<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationGetSubjects.QueryParams, ToolsOzoneModerationGetSubjects.HandlerInput, ToolsOzoneModerationGetSubjects.HandlerOutput>): void;
724
+ listScheduledActions<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationListScheduledActions.QueryParams, ToolsOzoneModerationListScheduledActions.HandlerInput, ToolsOzoneModerationListScheduledActions.HandlerOutput>): void;
720
725
  queryEvents<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationQueryEvents.QueryParams, ToolsOzoneModerationQueryEvents.HandlerInput, ToolsOzoneModerationQueryEvents.HandlerOutput>): void;
721
726
  queryStatuses<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationQueryStatuses.QueryParams, ToolsOzoneModerationQueryStatuses.HandlerInput, ToolsOzoneModerationQueryStatuses.HandlerOutput>): void;
727
+ scheduleAction<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationScheduleAction.QueryParams, ToolsOzoneModerationScheduleAction.HandlerInput, ToolsOzoneModerationScheduleAction.HandlerOutput>): void;
722
728
  searchRepos<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ToolsOzoneModerationSearchRepos.QueryParams, ToolsOzoneModerationSearchRepos.HandlerInput, ToolsOzoneModerationSearchRepos.HandlerOutput>): void;
723
729
  }
724
730
  export declare class ToolsOzoneSafelinkNS {