@atproto/ozone 0.1.174 → 0.1.175
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.
- package/CHANGELOG.md +23 -0
- package/bin/migration-create.ts +1 -1
- package/dist/api/chat/getActorMetadata.d.ts +2 -2
- package/dist/api/chat/getActorMetadata.d.ts.map +1 -1
- package/dist/api/chat/getActorMetadata.js +5 -8
- package/dist/api/chat/getActorMetadata.js.map +1 -1
- package/dist/api/chat/getMessageContext.d.ts +2 -2
- package/dist/api/chat/getMessageContext.d.ts.map +1 -1
- package/dist/api/chat/getMessageContext.js +6 -9
- package/dist/api/chat/getMessageContext.js.map +1 -1
- package/dist/api/chat/index.d.ts +2 -2
- package/dist/api/chat/index.d.ts.map +1 -1
- package/dist/api/chat/index.js +5 -11
- package/dist/api/chat/index.js.map +1 -1
- package/dist/api/communication/createTemplate.d.ts +2 -2
- package/dist/api/communication/createTemplate.d.ts.map +1 -1
- package/dist/api/communication/createTemplate.js +7 -10
- package/dist/api/communication/createTemplate.js.map +1 -1
- package/dist/api/communication/deleteTemplate.d.ts +2 -2
- package/dist/api/communication/deleteTemplate.d.ts.map +1 -1
- package/dist/api/communication/deleteTemplate.js +3 -6
- package/dist/api/communication/deleteTemplate.js.map +1 -1
- package/dist/api/communication/listTemplates.d.ts +2 -2
- package/dist/api/communication/listTemplates.d.ts.map +1 -1
- package/dist/api/communication/listTemplates.js +3 -6
- package/dist/api/communication/listTemplates.js.map +1 -1
- package/dist/api/communication/updateTemplate.d.ts +2 -2
- package/dist/api/communication/updateTemplate.d.ts.map +1 -1
- package/dist/api/communication/updateTemplate.js +8 -11
- package/dist/api/communication/updateTemplate.js.map +1 -1
- package/dist/api/health.d.ts +1 -1
- package/dist/api/health.d.ts.map +1 -1
- package/dist/api/health.js +5 -9
- package/dist/api/health.js.map +1 -1
- package/dist/api/index.d.ts +4 -4
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +137 -177
- package/dist/api/index.js.map +1 -1
- package/dist/api/label/fetchLabels.d.ts +2 -2
- package/dist/api/label/fetchLabels.d.ts.map +1 -1
- package/dist/api/label/fetchLabels.js +1 -4
- package/dist/api/label/fetchLabels.js.map +1 -1
- package/dist/api/label/queryLabels.d.ts +2 -2
- package/dist/api/label/queryLabels.d.ts.map +1 -1
- package/dist/api/label/queryLabels.js +6 -9
- package/dist/api/label/queryLabels.js.map +1 -1
- package/dist/api/label/subscribeLabels.d.ts +2 -2
- package/dist/api/label/subscribeLabels.d.ts.map +1 -1
- package/dist/api/label/subscribeLabels.js +5 -8
- package/dist/api/label/subscribeLabels.js.map +1 -1
- package/dist/api/moderation/cancelScheduledActions.d.ts +2 -2
- package/dist/api/moderation/cancelScheduledActions.d.ts.map +1 -1
- package/dist/api/moderation/cancelScheduledActions.js +8 -11
- package/dist/api/moderation/cancelScheduledActions.js.map +1 -1
- package/dist/api/moderation/emitEvent.d.ts +2 -2
- package/dist/api/moderation/emitEvent.d.ts.map +1 -1
- package/dist/api/moderation/emitEvent.js +62 -66
- package/dist/api/moderation/emitEvent.js.map +1 -1
- package/dist/api/moderation/getAccountTimeline.d.ts +2 -2
- package/dist/api/moderation/getAccountTimeline.d.ts.map +1 -1
- package/dist/api/moderation/getAccountTimeline.js +10 -15
- package/dist/api/moderation/getAccountTimeline.js.map +1 -1
- package/dist/api/moderation/getEvent.d.ts +2 -2
- package/dist/api/moderation/getEvent.d.ts.map +1 -1
- package/dist/api/moderation/getEvent.js +1 -4
- package/dist/api/moderation/getEvent.js.map +1 -1
- package/dist/api/moderation/getRecord.d.ts +2 -2
- package/dist/api/moderation/getRecord.d.ts.map +1 -1
- package/dist/api/moderation/getRecord.js +7 -10
- package/dist/api/moderation/getRecord.js.map +1 -1
- package/dist/api/moderation/getRecords.d.ts +2 -2
- package/dist/api/moderation/getRecords.d.ts.map +1 -1
- package/dist/api/moderation/getRecords.js +5 -8
- package/dist/api/moderation/getRecords.js.map +1 -1
- package/dist/api/moderation/getRepo.d.ts +2 -2
- package/dist/api/moderation/getRepo.d.ts.map +1 -1
- package/dist/api/moderation/getRepo.js +6 -9
- package/dist/api/moderation/getRepo.js.map +1 -1
- package/dist/api/moderation/getReporterStats.d.ts +2 -2
- package/dist/api/moderation/getReporterStats.d.ts.map +1 -1
- package/dist/api/moderation/getReporterStats.js +1 -4
- package/dist/api/moderation/getReporterStats.js.map +1 -1
- package/dist/api/moderation/getRepos.d.ts +2 -2
- package/dist/api/moderation/getRepos.d.ts.map +1 -1
- package/dist/api/moderation/getRepos.js +4 -7
- package/dist/api/moderation/getRepos.js.map +1 -1
- package/dist/api/moderation/getSubjects.d.ts +2 -2
- package/dist/api/moderation/getSubjects.d.ts.map +1 -1
- package/dist/api/moderation/getSubjects.js +7 -10
- package/dist/api/moderation/getSubjects.js.map +1 -1
- package/dist/api/moderation/listScheduledActions.d.ts +2 -2
- package/dist/api/moderation/listScheduledActions.d.ts.map +1 -1
- package/dist/api/moderation/listScheduledActions.js +3 -6
- package/dist/api/moderation/listScheduledActions.js.map +1 -1
- package/dist/api/moderation/queryEvents.d.ts +2 -2
- package/dist/api/moderation/queryEvents.d.ts.map +1 -1
- package/dist/api/moderation/queryEvents.js +3 -6
- package/dist/api/moderation/queryEvents.js.map +1 -1
- package/dist/api/moderation/queryStatuses.d.ts +2 -2
- package/dist/api/moderation/queryStatuses.d.ts.map +1 -1
- package/dist/api/moderation/queryStatuses.js +1 -4
- package/dist/api/moderation/queryStatuses.js.map +1 -1
- package/dist/api/moderation/scheduleAction.d.ts +2 -2
- package/dist/api/moderation/scheduleAction.d.ts.map +1 -1
- package/dist/api/moderation/scheduleAction.js +15 -18
- package/dist/api/moderation/scheduleAction.js.map +1 -1
- package/dist/api/moderation/searchRepos.d.ts +2 -2
- package/dist/api/moderation/searchRepos.d.ts.map +1 -1
- package/dist/api/moderation/searchRepos.js +5 -8
- package/dist/api/moderation/searchRepos.js.map +1 -1
- package/dist/api/moderation/util.d.ts +2 -2
- package/dist/api/moderation/util.d.ts.map +1 -1
- package/dist/api/moderation/util.js +10 -15
- package/dist/api/moderation/util.js.map +1 -1
- package/dist/api/proxied.d.ts +2 -2
- package/dist/api/proxied.d.ts.map +1 -1
- package/dist/api/proxied.js +24 -27
- package/dist/api/proxied.js.map +1 -1
- package/dist/api/queue/assignModerator.d.ts +2 -2
- package/dist/api/queue/assignModerator.d.ts.map +1 -1
- package/dist/api/queue/assignModerator.js +6 -9
- package/dist/api/queue/assignModerator.js.map +1 -1
- package/dist/api/queue/createQueue.d.ts +2 -2
- package/dist/api/queue/createQueue.d.ts.map +1 -1
- package/dist/api/queue/createQueue.js +5 -8
- package/dist/api/queue/createQueue.js.map +1 -1
- package/dist/api/queue/deleteQueue.d.ts +2 -2
- package/dist/api/queue/deleteQueue.d.ts.map +1 -1
- package/dist/api/queue/deleteQueue.js +5 -8
- package/dist/api/queue/deleteQueue.js.map +1 -1
- package/dist/api/queue/getAssignments.d.ts +2 -2
- package/dist/api/queue/getAssignments.d.ts.map +1 -1
- package/dist/api/queue/getAssignments.js +1 -4
- package/dist/api/queue/getAssignments.js.map +1 -1
- package/dist/api/queue/listQueues.d.ts +2 -2
- package/dist/api/queue/listQueues.d.ts.map +1 -1
- package/dist/api/queue/listQueues.js +1 -4
- package/dist/api/queue/listQueues.js.map +1 -1
- package/dist/api/queue/routeReports.d.ts +2 -2
- package/dist/api/queue/routeReports.d.ts.map +1 -1
- package/dist/api/queue/routeReports.js +5 -8
- package/dist/api/queue/routeReports.js.map +1 -1
- package/dist/api/queue/unassignModerator.d.ts +2 -2
- package/dist/api/queue/unassignModerator.d.ts.map +1 -1
- package/dist/api/queue/unassignModerator.js +6 -9
- package/dist/api/queue/unassignModerator.js.map +1 -1
- package/dist/api/queue/updateQueue.d.ts +2 -2
- package/dist/api/queue/updateQueue.d.ts.map +1 -1
- package/dist/api/queue/updateQueue.js +5 -8
- package/dist/api/queue/updateQueue.js.map +1 -1
- package/dist/api/report/assignModerator.d.ts +2 -2
- package/dist/api/report/assignModerator.d.ts.map +1 -1
- package/dist/api/report/assignModerator.js +6 -9
- package/dist/api/report/assignModerator.js.map +1 -1
- package/dist/api/report/createActivity.d.ts +2 -2
- package/dist/api/report/createActivity.d.ts.map +1 -1
- package/dist/api/report/createActivity.js +8 -11
- package/dist/api/report/createActivity.js.map +1 -1
- package/dist/api/report/createReport.d.ts +2 -2
- package/dist/api/report/createReport.d.ts.map +1 -1
- package/dist/api/report/createReport.js +14 -17
- package/dist/api/report/createReport.js.map +1 -1
- package/dist/api/report/getAssignments.d.ts +2 -2
- package/dist/api/report/getAssignments.d.ts.map +1 -1
- package/dist/api/report/getAssignments.js +1 -4
- package/dist/api/report/getAssignments.js.map +1 -1
- package/dist/api/report/getHistoricalStats.d.ts +2 -2
- package/dist/api/report/getHistoricalStats.d.ts.map +1 -1
- package/dist/api/report/getHistoricalStats.js +3 -6
- package/dist/api/report/getHistoricalStats.js.map +1 -1
- package/dist/api/report/getLatestReport.d.ts +2 -2
- package/dist/api/report/getLatestReport.d.ts.map +1 -1
- package/dist/api/report/getLatestReport.js +9 -12
- package/dist/api/report/getLatestReport.js.map +1 -1
- package/dist/api/report/getLiveStats.d.ts +2 -2
- package/dist/api/report/getLiveStats.d.ts.map +1 -1
- package/dist/api/report/getLiveStats.js +3 -6
- package/dist/api/report/getLiveStats.js.map +1 -1
- package/dist/api/report/getReport.d.ts +2 -2
- package/dist/api/report/getReport.d.ts.map +1 -1
- package/dist/api/report/getReport.js +9 -12
- package/dist/api/report/getReport.js.map +1 -1
- package/dist/api/report/listActivities.d.ts +2 -2
- package/dist/api/report/listActivities.d.ts.map +1 -1
- package/dist/api/report/listActivities.js +4 -7
- package/dist/api/report/listActivities.js.map +1 -1
- package/dist/api/report/queryReports.d.ts +2 -2
- package/dist/api/report/queryReports.d.ts.map +1 -1
- package/dist/api/report/queryReports.js +7 -10
- package/dist/api/report/queryReports.js.map +1 -1
- package/dist/api/report/reassignQueue.d.ts +2 -2
- package/dist/api/report/reassignQueue.d.ts.map +1 -1
- package/dist/api/report/reassignQueue.js +12 -15
- package/dist/api/report/reassignQueue.js.map +1 -1
- package/dist/api/report/refreshStats.d.ts +2 -2
- package/dist/api/report/refreshStats.d.ts.map +1 -1
- package/dist/api/report/refreshStats.js +1 -4
- package/dist/api/report/refreshStats.js.map +1 -1
- package/dist/api/report/unassignModerator.d.ts +2 -2
- package/dist/api/report/unassignModerator.d.ts.map +1 -1
- package/dist/api/report/unassignModerator.js +3 -6
- package/dist/api/report/unassignModerator.js.map +1 -1
- package/dist/api/safelink/addRule.d.ts +2 -2
- package/dist/api/safelink/addRule.d.ts.map +1 -1
- package/dist/api/safelink/addRule.js +8 -11
- package/dist/api/safelink/addRule.js.map +1 -1
- package/dist/api/safelink/queryEvents.d.ts +2 -2
- package/dist/api/safelink/queryEvents.d.ts.map +1 -1
- package/dist/api/safelink/queryEvents.js +3 -6
- package/dist/api/safelink/queryEvents.js.map +1 -1
- package/dist/api/safelink/queryRules.d.ts +2 -2
- package/dist/api/safelink/queryRules.d.ts.map +1 -1
- package/dist/api/safelink/queryRules.js +5 -8
- package/dist/api/safelink/queryRules.js.map +1 -1
- package/dist/api/safelink/removeRule.d.ts +2 -2
- package/dist/api/safelink/removeRule.d.ts.map +1 -1
- package/dist/api/safelink/removeRule.js +6 -9
- package/dist/api/safelink/removeRule.js.map +1 -1
- package/dist/api/safelink/updateRule.d.ts +2 -2
- package/dist/api/safelink/updateRule.d.ts.map +1 -1
- package/dist/api/safelink/updateRule.js +8 -11
- package/dist/api/safelink/updateRule.js.map +1 -1
- package/dist/api/server/getConfig.d.ts +2 -2
- package/dist/api/server/getConfig.d.ts.map +1 -1
- package/dist/api/server/getConfig.js +5 -8
- package/dist/api/server/getConfig.js.map +1 -1
- package/dist/api/set/addValues.d.ts +2 -2
- package/dist/api/set/addValues.d.ts.map +1 -1
- package/dist/api/set/addValues.js +4 -7
- package/dist/api/set/addValues.js.map +1 -1
- package/dist/api/set/deleteSet.d.ts +2 -2
- package/dist/api/set/deleteSet.d.ts.map +1 -1
- package/dist/api/set/deleteSet.js +4 -7
- package/dist/api/set/deleteSet.js.map +1 -1
- package/dist/api/set/deleteValues.d.ts +2 -2
- package/dist/api/set/deleteValues.d.ts.map +1 -1
- package/dist/api/set/deleteValues.js +4 -7
- package/dist/api/set/deleteValues.js.map +1 -1
- package/dist/api/set/getValues.d.ts +2 -2
- package/dist/api/set/getValues.d.ts.map +1 -1
- package/dist/api/set/getValues.js +4 -7
- package/dist/api/set/getValues.js.map +1 -1
- package/dist/api/set/querySets.d.ts +2 -2
- package/dist/api/set/querySets.d.ts.map +1 -1
- package/dist/api/set/querySets.js +3 -6
- package/dist/api/set/querySets.js.map +1 -1
- package/dist/api/set/upsertSet.d.ts +2 -2
- package/dist/api/set/upsertSet.d.ts.map +1 -1
- package/dist/api/set/upsertSet.js +4 -7
- package/dist/api/set/upsertSet.js.map +1 -1
- package/dist/api/setting/listOptions.d.ts +2 -2
- package/dist/api/setting/listOptions.d.ts.map +1 -1
- package/dist/api/setting/listOptions.js +3 -6
- package/dist/api/setting/listOptions.js.map +1 -1
- package/dist/api/setting/removeOptions.d.ts +2 -2
- package/dist/api/setting/removeOptions.d.ts.map +1 -1
- package/dist/api/setting/removeOptions.js +3 -6
- package/dist/api/setting/removeOptions.js.map +1 -1
- package/dist/api/setting/upsertOption.d.ts +2 -2
- package/dist/api/setting/upsertOption.d.ts.map +1 -1
- package/dist/api/setting/upsertOption.js +25 -31
- package/dist/api/setting/upsertOption.js.map +1 -1
- package/dist/api/team/addMember.d.ts +2 -2
- package/dist/api/team/addMember.d.ts.map +1 -1
- package/dist/api/team/addMember.js +6 -9
- package/dist/api/team/addMember.js.map +1 -1
- package/dist/api/team/deleteMember.d.ts +2 -2
- package/dist/api/team/deleteMember.d.ts.map +1 -1
- package/dist/api/team/deleteMember.js +4 -7
- package/dist/api/team/deleteMember.js.map +1 -1
- package/dist/api/team/listMembers.d.ts +2 -2
- package/dist/api/team/listMembers.d.ts.map +1 -1
- package/dist/api/team/listMembers.js +1 -4
- package/dist/api/team/listMembers.js.map +1 -1
- package/dist/api/team/updateMember.d.ts +2 -2
- package/dist/api/team/updateMember.d.ts.map +1 -1
- package/dist/api/team/updateMember.js +7 -10
- package/dist/api/team/updateMember.js.map +1 -1
- package/dist/api/util.d.ts +4 -4
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js +39 -56
- package/dist/api/util.js.map +1 -1
- package/dist/api/verification/grantVerifications.d.ts +2 -2
- package/dist/api/verification/grantVerifications.d.ts.map +1 -1
- package/dist/api/verification/grantVerifications.js +6 -9
- package/dist/api/verification/grantVerifications.js.map +1 -1
- package/dist/api/verification/listVerifications.d.ts +2 -2
- package/dist/api/verification/listVerifications.d.ts.map +1 -1
- package/dist/api/verification/listVerifications.js +3 -6
- package/dist/api/verification/listVerifications.js.map +1 -1
- package/dist/api/verification/revokeVerifications.d.ts +2 -2
- package/dist/api/verification/revokeVerifications.d.ts.map +1 -1
- package/dist/api/verification/revokeVerifications.js +4 -7
- package/dist/api/verification/revokeVerifications.js.map +1 -1
- package/dist/api/well-known.d.ts +1 -1
- package/dist/api/well-known.d.ts.map +1 -1
- package/dist/api/well-known.js +3 -7
- package/dist/api/well-known.js.map +1 -1
- package/dist/assignment/index.d.ts +7 -7
- package/dist/assignment/index.d.ts.map +1 -1
- package/dist/assignment/index.js +23 -47
- package/dist/assignment/index.js.map +1 -1
- package/dist/auth-verifier.d.ts +1 -1
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +82 -174
- package/dist/auth-verifier.js.map +1 -1
- package/dist/background.d.ts +1 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +17 -74
- package/dist/background.js.map +1 -1
- package/dist/communication-service/template.d.ts +3 -3
- package/dist/communication-service/template.d.ts.map +1 -1
- package/dist/communication-service/template.js +2 -11
- package/dist/communication-service/template.js.map +1 -1
- package/dist/communication-service/util.js +1 -5
- package/dist/communication-service/util.js.map +1 -1
- package/dist/config/config.d.ts +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +18 -25
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.js +42 -46
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -19
- package/dist/config/index.js.map +1 -1
- package/dist/config/secrets.d.ts +1 -1
- package/dist/config/secrets.d.ts.map +1 -1
- package/dist/config/secrets.js +4 -11
- package/dist/config/secrets.js.map +1 -1
- package/dist/context.d.ts +22 -22
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +63 -113
- package/dist/context.js.map +1 -1
- package/dist/daemon/blob-diverter.d.ts +2 -2
- package/dist/daemon/blob-diverter.d.ts.map +1 -1
- package/dist/daemon/blob-diverter.js +18 -72
- package/dist/daemon/blob-diverter.js.map +1 -1
- package/dist/daemon/context.d.ts +12 -12
- package/dist/daemon/context.d.ts.map +1 -1
- package/dist/daemon/context.js +50 -59
- package/dist/daemon/context.js.map +1 -1
- package/dist/daemon/event-pusher.d.ts +4 -4
- package/dist/daemon/event-pusher.d.ts.map +1 -1
- package/dist/daemon/event-pusher.js +29 -78
- package/dist/daemon/event-pusher.js.map +1 -1
- package/dist/daemon/event-reverser.d.ts +2 -2
- package/dist/daemon/event-reverser.d.ts.map +1 -1
- package/dist/daemon/event-reverser.js +14 -44
- package/dist/daemon/event-reverser.js.map +1 -1
- package/dist/daemon/index.d.ts +8 -8
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +9 -23
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/job-cursor.d.ts +1 -1
- package/dist/daemon/job-cursor.d.ts.map +1 -1
- package/dist/daemon/job-cursor.js +3 -8
- package/dist/daemon/job-cursor.js.map +1 -1
- package/dist/daemon/materialized-view-refresher.d.ts +1 -1
- package/dist/daemon/materialized-view-refresher.d.ts.map +1 -1
- package/dist/daemon/materialized-view-refresher.js +9 -13
- package/dist/daemon/materialized-view-refresher.js.map +1 -1
- package/dist/daemon/queue-router.d.ts +2 -2
- package/dist/daemon/queue-router.d.ts.map +1 -1
- package/dist/daemon/queue-router.js +13 -43
- package/dist/daemon/queue-router.js.map +1 -1
- package/dist/daemon/scheduled-action-processor.d.ts +9 -9
- package/dist/daemon/scheduled-action-processor.d.ts.map +1 -1
- package/dist/daemon/scheduled-action-processor.js +23 -68
- package/dist/daemon/scheduled-action-processor.js.map +1 -1
- package/dist/daemon/stats-computer.d.ts +2 -2
- package/dist/daemon/stats-computer.d.ts.map +1 -1
- package/dist/daemon/stats-computer.js +15 -50
- package/dist/daemon/stats-computer.js.map +1 -1
- package/dist/daemon/strike-expiry-processor.d.ts +2 -2
- package/dist/daemon/strike-expiry-processor.d.ts.map +1 -1
- package/dist/daemon/strike-expiry-processor.js +16 -46
- package/dist/daemon/strike-expiry-processor.js.map +1 -1
- package/dist/daemon/team-profile-synchronizer.d.ts +2 -2
- package/dist/daemon/team-profile-synchronizer.d.ts.map +1 -1
- package/dist/daemon/team-profile-synchronizer.js +4 -8
- package/dist/daemon/team-profile-synchronizer.js.map +1 -1
- package/dist/daemon/verification-listener.d.ts +2 -2
- package/dist/daemon/verification-listener.d.ts.map +1 -1
- package/dist/daemon/verification-listener.js +20 -70
- package/dist/daemon/verification-listener.js.map +1 -1
- package/dist/db/index.d.ts +7 -5
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +27 -107
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations/20231219T205730722Z-init.js +2 -6
- package/dist/db/migrations/20231219T205730722Z-init.js.map +1 -1
- package/dist/db/migrations/20240116T085607200Z-communication-template.js +2 -6
- package/dist/db/migrations/20240116T085607200Z-communication-template.js.map +1 -1
- package/dist/db/migrations/20240201T051104136Z-mod-event-blobs.js +2 -6
- package/dist/db/migrations/20240201T051104136Z-mod-event-blobs.js.map +1 -1
- package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.js +2 -6
- package/dist/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.js.map +1 -1
- package/dist/db/migrations/20240228T003647759Z-add-label-sigs.js +4 -8
- package/dist/db/migrations/20240228T003647759Z-add-label-sigs.js.map +1 -1
- package/dist/db/migrations/20240408T192432676Z-mute-reporting.js +2 -6
- package/dist/db/migrations/20240408T192432676Z-mute-reporting.js.map +1 -1
- package/dist/db/migrations/20240506T225055595Z-message-subject.js +2 -6
- package/dist/db/migrations/20240506T225055595Z-message-subject.js.map +1 -1
- package/dist/db/migrations/20240521T211332580Z-member.js +2 -6
- package/dist/db/migrations/20240521T211332580Z-member.js.map +1 -1
- package/dist/db/migrations/20240814T003647759Z-event-created-at-index.js +2 -6
- package/dist/db/migrations/20240814T003647759Z-event-created-at-index.js.map +1 -1
- package/dist/db/migrations/20240903T205730722Z-add-template-lang.js +2 -6
- package/dist/db/migrations/20240903T205730722Z-add-template-lang.js.map +1 -1
- package/dist/db/migrations/20240904T205730722Z-add-subject-did-index.js +2 -6
- package/dist/db/migrations/20240904T205730722Z-add-subject-did-index.js.map +1 -1
- package/dist/db/migrations/20241001T205730722Z-subject-status-review-state-index.js +2 -6
- package/dist/db/migrations/20241001T205730722Z-subject-status-review-state-index.js.map +1 -1
- package/dist/db/migrations/20241008T205730722Z-sets.js +6 -10
- package/dist/db/migrations/20241008T205730722Z-sets.js.map +1 -1
- package/dist/db/migrations/20241018T205730722Z-setting.js +5 -9
- package/dist/db/migrations/20241018T205730722Z-setting.js.map +1 -1
- package/dist/db/migrations/20241026T205730722Z-add-hosting-status-to-subject-status.js +2 -6
- package/dist/db/migrations/20241026T205730722Z-add-hosting-status-to-subject-status.js.map +1 -1
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts +1 -1
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts.map +1 -1
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js +27 -31
- package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js.map +1 -1
- package/dist/db/migrations/20250204T003647759Z-add-subject-priority-score.js +2 -6
- package/dist/db/migrations/20250204T003647759Z-add-subject-priority-score.js.map +1 -1
- package/dist/db/migrations/20250211T003647759Z-add-reporter-stats-index.js +7 -11
- package/dist/db/migrations/20250211T003647759Z-add-reporter-stats-index.js.map +1 -1
- package/dist/db/migrations/20250211T132135150Z-moderation-event-message-partial-idx.js +4 -8
- package/dist/db/migrations/20250211T132135150Z-moderation-event-message-partial-idx.js.map +1 -1
- package/dist/db/migrations/20250221T132135150Z-member-details.js +2 -6
- package/dist/db/migrations/20250221T132135150Z-member-details.js.map +1 -1
- package/dist/db/migrations/20250404T201720309Z-subject-status-sort-idxs.js +5 -9
- package/dist/db/migrations/20250404T201720309Z-subject-status-sort-idxs.js.map +1 -1
- package/dist/db/migrations/20250415T201720309Z-verification.js +4 -8
- package/dist/db/migrations/20250415T201720309Z-verification.js.map +1 -1
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js +4 -8
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js.map +1 -1
- package/dist/db/migrations/20250609T110704000Z-safelink.js +2 -6
- package/dist/db/migrations/20250609T110704000Z-safelink.js.map +1 -1
- package/dist/db/migrations/20250618T180246000Z-add-mod-tool-to-moderation-event.js +4 -8
- package/dist/db/migrations/20250618T180246000Z-add-mod-tool-to-moderation-event.js.map +1 -1
- package/dist/db/migrations/20250701T000000000Z-add-age-assurance-state.js +2 -6
- package/dist/db/migrations/20250701T000000000Z-add-age-assurance-state.js.map +1 -1
- package/dist/db/migrations/20250715T000000000Z-add-mod-event-external-id.js +2 -6
- package/dist/db/migrations/20250715T000000000Z-add-mod-event-external-id.js.map +1 -1
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.d.ts +1 -1
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.d.ts.map +1 -1
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.js +37 -41
- package/dist/db/migrations/20250718T150931000Z-update-appeal-reason-stats.js.map +1 -1
- package/dist/db/migrations/20250813T000000000Z-mod-tool-batch-id-index.js +4 -8
- package/dist/db/migrations/20250813T000000000Z-mod-tool-batch-id-index.js.map +1 -1
- package/dist/db/migrations/20250923T000000000Z-scheduled-actions.js +4 -8
- package/dist/db/migrations/20250923T000000000Z-scheduled-actions.js.map +1 -1
- package/dist/db/migrations/20251008T120000000Z-add-strike-system.js +5 -9
- package/dist/db/migrations/20251008T120000000Z-add-strike-system.js.map +1 -1
- package/dist/db/migrations/20260210T154806448Z-mod-event-created-by-indexes.js +2 -6
- package/dist/db/migrations/20260210T154806448Z-mod-event-created-by-indexes.js.map +1 -1
- package/dist/db/migrations/20260219T164523000Z-create-report-table.js +19 -23
- package/dist/db/migrations/20260219T164523000Z-create-report-table.js.map +1 -1
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.js +6 -10
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.js.map +1 -1
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.js +5 -9
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.js.map +1 -1
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.js +4 -8
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.js.map +1 -1
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.js +4 -8
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.js.map +1 -1
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js +2 -6
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js.map +1 -1
- package/dist/db/migrations/index.d.ts +38 -38
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +38 -74
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/migrations/provider.js +3 -17
- package/dist/db/migrations/provider.js.map +1 -1
- package/dist/db/pagination.d.ts +1 -1
- package/dist/db/pagination.d.ts.map +1 -1
- package/dist/db/pagination.js +34 -54
- package/dist/db/pagination.js.map +1 -1
- package/dist/db/schema/account_events_stats.js +1 -4
- package/dist/db/schema/account_events_stats.js.map +1 -1
- package/dist/db/schema/account_record_events_stats.js +1 -4
- package/dist/db/schema/account_record_events_stats.js.map +1 -1
- package/dist/db/schema/account_record_status_stats.js +1 -4
- package/dist/db/schema/account_record_status_stats.js.map +1 -1
- package/dist/db/schema/account_strike.js +1 -4
- package/dist/db/schema/account_strike.js.map +1 -1
- package/dist/db/schema/blob_push_event.js +1 -4
- package/dist/db/schema/blob_push_event.js.map +1 -1
- package/dist/db/schema/communication_template.js +1 -4
- package/dist/db/schema/communication_template.js.map +1 -1
- package/dist/db/schema/expiring_tag.js +1 -4
- package/dist/db/schema/expiring_tag.js.map +1 -1
- package/dist/db/schema/firehose_cursor.js +1 -4
- package/dist/db/schema/firehose_cursor.js.map +1 -1
- package/dist/db/schema/index.d.ts +27 -27
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js +1 -2
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/schema/job_cursor.js +1 -4
- package/dist/db/schema/job_cursor.js.map +1 -1
- package/dist/db/schema/label.js +2 -5
- package/dist/db/schema/label.js.map +1 -1
- package/dist/db/schema/member.js +1 -4
- package/dist/db/schema/member.js.map +1 -1
- package/dist/db/schema/moderation_event.js +1 -4
- package/dist/db/schema/moderation_event.js.map +1 -1
- package/dist/db/schema/moderation_subject_status.d.ts +1 -1
- package/dist/db/schema/moderation_subject_status.d.ts.map +1 -1
- package/dist/db/schema/moderation_subject_status.js +1 -4
- package/dist/db/schema/moderation_subject_status.js.map +1 -1
- package/dist/db/schema/moderator_assignment.js +1 -4
- package/dist/db/schema/moderator_assignment.js.map +1 -1
- package/dist/db/schema/ozone_set.js +2 -5
- package/dist/db/schema/ozone_set.js.map +1 -1
- package/dist/db/schema/record_events_stats.js +1 -4
- package/dist/db/schema/record_events_stats.js.map +1 -1
- package/dist/db/schema/record_push_event.js +1 -4
- package/dist/db/schema/record_push_event.js.map +1 -1
- package/dist/db/schema/repo_push_event.js +1 -4
- package/dist/db/schema/repo_push_event.js.map +1 -1
- package/dist/db/schema/report.js +1 -4
- package/dist/db/schema/report.js.map +1 -1
- package/dist/db/schema/report_activity.js +1 -4
- package/dist/db/schema/report_activity.js.map +1 -1
- package/dist/db/schema/report_queue.js +1 -4
- package/dist/db/schema/report_queue.js.map +1 -1
- package/dist/db/schema/report_stat.js +1 -4
- package/dist/db/schema/report_stat.js.map +1 -1
- package/dist/db/schema/safelink.d.ts +1 -1
- package/dist/db/schema/safelink.d.ts.map +1 -1
- package/dist/db/schema/safelink.js +2 -5
- package/dist/db/schema/safelink.js.map +1 -1
- package/dist/db/schema/scheduled-action.js +1 -4
- package/dist/db/schema/scheduled-action.js.map +1 -1
- package/dist/db/schema/setting.d.ts +1 -1
- package/dist/db/schema/setting.d.ts.map +1 -1
- package/dist/db/schema/setting.js +1 -4
- package/dist/db/schema/setting.js.map +1 -1
- package/dist/db/schema/signing_key.js +1 -4
- package/dist/db/schema/signing_key.js.map +1 -1
- package/dist/db/schema/verification.js +1 -4
- package/dist/db/schema/verification.js.map +1 -1
- package/dist/db/types.d.ts +3 -1
- package/dist/db/types.d.ts.map +1 -1
- package/dist/db/types.js +4 -8
- package/dist/db/types.js.map +1 -1
- package/dist/error.js +5 -9
- package/dist/error.js.map +1 -1
- package/dist/image-invalidator.js +1 -2
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -110
- package/dist/index.js.map +1 -1
- package/dist/jetstream/service.d.ts.map +1 -1
- package/dist/jetstream/service.js +4 -26
- package/dist/jetstream/service.js.map +1 -1
- package/dist/lexicon/index.d.ts +2 -2
- package/dist/lexicon/index.js +60 -670
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +992 -28
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +621 -28
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts +34 -34
- package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/defs.js +69 -137
- package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getProfile.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getProfile.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getProfiles.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getProfiles.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/getSuggestions.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/getSuggestions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/profile.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/actor/profile.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/profile.js +6 -11
- package/dist/lexicon/types/app/bsky/actor/profile.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/putPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/putPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/searchActors.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/searchActors.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.js +3 -5
- package/dist/lexicon/types/app/bsky/actor/searchActorsTypeahead.js.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/status.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/actor/status.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/actor/status.js +7 -13
- package/dist/lexicon/types/app/bsky/actor/status.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/begin.js +3 -5
- package/dist/lexicon/types/app/bsky/ageassurance/begin.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/defs.d.ts +13 -13
- package/dist/lexicon/types/app/bsky/ageassurance/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/defs.js +27 -53
- package/dist/lexicon/types/app/bsky/ageassurance/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.js +3 -5
- package/dist/lexicon/types/app/bsky/ageassurance/getConfig.js.map +1 -1
- package/dist/lexicon/types/app/bsky/ageassurance/getState.js +3 -5
- package/dist/lexicon/types/app/bsky/ageassurance/getState.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/createBookmark.js +3 -5
- package/dist/lexicon/types/app/bsky/bookmark/createBookmark.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/defs.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/bookmark/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/defs.js +7 -13
- package/dist/lexicon/types/app/bsky/bookmark/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/deleteBookmark.js +3 -5
- package/dist/lexicon/types/app/bsky/bookmark/deleteBookmark.js.map +1 -1
- package/dist/lexicon/types/app/bsky/bookmark/getBookmarks.js +3 -5
- package/dist/lexicon/types/app/bsky/bookmark/getBookmarks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/defs.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/contact/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/defs.js +9 -17
- package/dist/lexicon/types/app/bsky/contact/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/getMatches.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/getMatches.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/importContacts.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/importContacts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/removeData.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/removeData.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/sendNotification.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/sendNotification.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.js +3 -5
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/createDraft.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/createDraft.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/defs.d.ts +11 -11
- package/dist/lexicon/types/app/bsky/draft/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/defs.js +23 -45
- package/dist/lexicon/types/app/bsky/draft/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/deleteDraft.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/deleteDraft.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/getDrafts.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/getDrafts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/draft/updateDraft.js +3 -5
- package/dist/lexicon/types/app/bsky/draft/updateDraft.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/defs.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/embed/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/defs.js +5 -9
- package/dist/lexicon/types/app/bsky/embed/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.d.ts +6 -5
- package/dist/lexicon/types/app/bsky/embed/external.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.js +11 -21
- package/dist/lexicon/types/app/bsky/embed/external.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/images.d.ts +4 -4
- package/dist/lexicon/types/app/bsky/embed/images.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/images.js +11 -21
- package/dist/lexicon/types/app/bsky/embed/images.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/record.d.ts +7 -7
- package/dist/lexicon/types/app/bsky/embed/record.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/record.js +15 -29
- package/dist/lexicon/types/app/bsky/embed/record.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js +7 -13
- package/dist/lexicon/types/app/bsky/embed/recordWithMedia.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/video.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/embed/video.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/video.js +9 -17
- package/dist/lexicon/types/app/bsky/embed/video.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/defs.d.ts +19 -19
- package/dist/lexicon/types/app/bsky/feed/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/defs.js +53 -92
- package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.js +7 -13
- package/dist/lexicon/types/app/bsky/feed/describeFeedGenerator.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/generator.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/feed/generator.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/generator.js +6 -11
- package/dist/lexicon/types/app/bsky/feed/generator.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getActorFeeds.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getActorFeeds.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getActorLikes.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getActorLikes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeed.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeed.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerator.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeedGenerators.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getFeedSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/getLikes.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getLikes.js +5 -9
- package/dist/lexicon/types/app/bsky/feed/getLikes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getListFeed.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getListFeed.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPostThread.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPostThread.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getPostThread.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getPosts.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getPosts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getQuotes.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getQuotes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getRepostedBy.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getRepostedBy.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getSuggestedFeeds.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/getTimeline.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/getTimeline.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/like.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/like.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/like.js +6 -11
- package/dist/lexicon/types/app/bsky/feed/like.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/post.d.ts +5 -5
- package/dist/lexicon/types/app/bsky/feed/post.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/post.js +12 -23
- package/dist/lexicon/types/app/bsky/feed/post.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/postgate.d.ts +3 -3
- package/dist/lexicon/types/app/bsky/feed/postgate.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/postgate.js +8 -15
- package/dist/lexicon/types/app/bsky/feed/postgate.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/repost.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/feed/repost.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/repost.js +6 -11
- package/dist/lexicon/types/app/bsky/feed/repost.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/searchPosts.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/searchPosts.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/sendInteractions.js +3 -5
- package/dist/lexicon/types/app/bsky/feed/sendInteractions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts +6 -6
- package/dist/lexicon/types/app/bsky/feed/threadgate.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/feed/threadgate.js +14 -27
- package/dist/lexicon/types/app/bsky/feed/threadgate.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/block.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/block.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/block.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/block.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts +8 -8
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/defs.js +22 -41
- package/dist/lexicon/types/app/bsky/graph/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/follow.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/follow.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/follow.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/follow.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getActorStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getActorStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getBlocks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getBlocks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getFollowers.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getFollowers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getFollows.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getFollows.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getKnownFollowers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getList.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getList.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListBlocks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getListBlocks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListMutes.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getListMutes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getLists.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getLists.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.js +5 -9
- package/dist/lexicon/types/app/bsky/graph/getListsWithMembership.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getMutes.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getMutes.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/getRelationships.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getRelationships.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getRelationships.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPack.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getStarterPack.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.js +5 -9
- package/dist/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/list.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/graph/list.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/list.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/list.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listblock.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/listblock.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listblock.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/listblock.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listitem.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/listitem.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/listitem.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/listitem.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/muteActor.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/muteActor.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/muteActorList.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/muteActorList.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/muteThread.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/muteThread.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/searchStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/searchStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/starterpack.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/graph/starterpack.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/starterpack.js +8 -15
- package/dist/lexicon/types/app/bsky/graph/starterpack.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/unmuteActor.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/unmuteActor.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/unmuteActorList.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/unmuteActorList.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/unmuteThread.js +3 -5
- package/dist/lexicon/types/app/bsky/graph/unmuteThread.js.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/verification.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/graph/verification.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/verification.js +6 -11
- package/dist/lexicon/types/app/bsky/graph/verification.js.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/defs.d.ts +4 -4
- package/dist/lexicon/types/app/bsky/labeler/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/defs.js +11 -21
- package/dist/lexicon/types/app/bsky/labeler/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/getServices.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/labeler/getServices.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/getServices.js +3 -5
- package/dist/lexicon/types/app/bsky/labeler/getServices.js.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/service.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/labeler/service.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/labeler/service.js +6 -11
- package/dist/lexicon/types/app/bsky/labeler/service.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/declaration.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/notification/declaration.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/declaration.js +6 -11
- package/dist/lexicon/types/app/bsky/notification/declaration.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/defs.d.ts +7 -7
- package/dist/lexicon/types/app/bsky/notification/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/defs.js +17 -33
- package/dist/lexicon/types/app/bsky/notification/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/getPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/getPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/getUnreadCount.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/getUnreadCount.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listActivitySubscriptions.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/listActivitySubscriptions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/listNotifications.js +5 -9
- package/dist/lexicon/types/app/bsky/notification/listNotifications.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/putActivitySubscription.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/putActivitySubscription.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/putPreferences.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/putPreferences.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/putPreferencesV2.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/putPreferencesV2.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/registerPush.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/registerPush.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/unregisterPush.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/unregisterPush.js.map +1 -1
- package/dist/lexicon/types/app/bsky/notification/updateSeen.js +3 -5
- package/dist/lexicon/types/app/bsky/notification/updateSeen.js.map +1 -1
- package/dist/lexicon/types/app/bsky/richtext/facet.d.ts +6 -6
- package/dist/lexicon/types/app/bsky/richtext/facet.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/richtext/facet.js +13 -25
- package/dist/lexicon/types/app/bsky/richtext/facet.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts +12 -12
- package/dist/lexicon/types/app/bsky/unspecced/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/defs.js +27 -53
- package/dist/lexicon/types/app/bsky/unspecced/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getConfig.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.d.ts +2 -2
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getPostThreadV2.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.js +5 -9
- package/dist/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTrendingTopics.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getTrendingTopics.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTrends.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getTrends.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/initAgeAssurance.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/initAgeAssurance.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.js +3 -5
- package/dist/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/defs.d.ts +1 -1
- package/dist/lexicon/types/app/bsky/video/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/video/defs.js +5 -9
- package/dist/lexicon/types/app/bsky/video/defs.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/getJobStatus.js +3 -5
- package/dist/lexicon/types/app/bsky/video/getJobStatus.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/getUploadLimits.js +3 -5
- package/dist/lexicon/types/app/bsky/video/getUploadLimits.js.map +1 -1
- package/dist/lexicon/types/app/bsky/video/uploadVideo.js +3 -5
- package/dist/lexicon/types/app/bsky/video/uploadVideo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/declaration.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/actor/declaration.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/declaration.js +6 -11
- package/dist/lexicon/types/chat/bsky/actor/declaration.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts +5 -5
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.js +11 -21
- package/dist/lexicon/types/chat/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/deleteAccount.js +3 -5
- package/dist/lexicon/types/chat/bsky/actor/deleteAccount.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/exportAccountData.js +3 -5
- package/dist/lexicon/types/chat/bsky/actor/exportAccountData.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/acceptConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/acceptConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/addReaction.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/addReaction.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts +61 -54
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.js +114 -213
- package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/deleteMessageForSelf.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/deleteMessageForSelf.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoAvailability.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvoAvailability.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvoForMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getLog.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getLog.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getLog.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getLog.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/getMessages.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/leaveConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/leaveConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/listConvoRequests.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvos.d.ts +2 -0
- package/dist/lexicon/types/chat/bsky/convo/listConvos.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/listConvos.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/listConvos.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/lockConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/lockConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/muteConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/muteConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/removeReaction.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/removeReaction.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessage.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/sendMessage.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.js +5 -9
- package/dist/lexicon/types/chat/bsky/convo/sendMessageBatch.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/unlockConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/unlockConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/unmuteConvo.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/unmuteConvo.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/updateAllRead.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/updateAllRead.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/updateRead.js +3 -5
- package/dist/lexicon/types/chat/bsky/convo/updateRead.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/addMembers.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/group/addMembers.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/addMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/addMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/approveJoinRequest.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/approveJoinRequest.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/createGroup.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/group/createGroup.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/createGroup.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/createGroup.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/createJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/createJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/defs.d.ts +8 -6
- package/dist/lexicon/types/chat/bsky/group/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/defs.js +12 -20
- package/dist/lexicon/types/chat/bsky/group/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/disableJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/disableJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/editGroup.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/editGroup.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/editJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/editJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/enableJoinLink.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/enableJoinLink.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/{getGroupPublicInfo.d.ts → getJoinLinkPreview.d.ts} +2 -2
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.d.ts.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.js +5 -0
- package/dist/lexicon/types/chat/bsky/group/getJoinLinkPreview.js.map +1 -0
- package/dist/lexicon/types/chat/bsky/group/listJoinRequests.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/listJoinRequests.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/rejectJoinRequest.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/rejectJoinRequest.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/removeMembers.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/removeMembers.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/group/requestJoin.js +3 -5
- package/dist/lexicon/types/chat/bsky/group/requestJoin.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.js +5 -9
- package/dist/lexicon/types/chat/bsky/moderation/getActorMetadata.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.d.ts +6 -2
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.js +3 -5
- package/dist/lexicon/types/chat/bsky/moderation/getMessageContext.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.d.ts +209 -3
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.js +68 -9
- package/dist/lexicon/types/chat/bsky/moderation/subscribeModEvents.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/moderation/updateActorAccess.js +3 -5
- package/dist/lexicon/types/chat/bsky/moderation/updateActorAccess.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/defs.d.ts +5 -5
- package/dist/lexicon/types/com/atproto/admin/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/defs.js +13 -25
- package/dist/lexicon/types/com/atproto/admin/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/deleteAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/deleteAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/disableAccountInvites.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/disableAccountInvites.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/disableInviteCodes.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/disableInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/enableAccountInvites.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/enableAccountInvites.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getAccountInfo.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getAccountInfo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getAccountInfos.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getAccountInfos.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getInviteCodes.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/getSubjectStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/searchAccounts.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/searchAccounts.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/sendEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/sendEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountPassword.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateAccountSigningKey.js.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/admin/updateSubjectStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/defs.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/identity/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/defs.js +5 -9
- package/dist/lexicon/types/com/atproto/identity/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/refreshIdentity.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/refreshIdentity.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/requestPlcOperationSignature.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/requestPlcOperationSignature.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/resolveDid.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/resolveDid.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/resolveHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/resolveHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/resolveIdentity.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/resolveIdentity.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/signPlcOperation.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/signPlcOperation.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/submitPlcOperation.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/submitPlcOperation.js.map +1 -1
- package/dist/lexicon/types/com/atproto/identity/updateHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/identity/updateHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/label/defs.d.ts +5 -5
- package/dist/lexicon/types/com/atproto/label/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/label/defs.js +13 -25
- package/dist/lexicon/types/com/atproto/label/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/label/queryLabels.js +3 -5
- package/dist/lexicon/types/com/atproto/label/queryLabels.js.map +1 -1
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.d.ts +3 -3
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.js +7 -13
- package/dist/lexicon/types/com/atproto/label/subscribeLabels.js.map +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/resolveLexicon.js +3 -5
- package/dist/lexicon/types/com/atproto/lexicon/resolveLexicon.js.map +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/schema.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/schema.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/lexicon/schema.js +6 -11
- package/dist/lexicon/types/com/atproto/lexicon/schema.js.map +1 -1
- package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts +2 -2
- package/dist/lexicon/types/com/atproto/moderation/createReport.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/moderation/createReport.js +5 -9
- package/dist/lexicon/types/com/atproto/moderation/createReport.js.map +1 -1
- package/dist/lexicon/types/com/atproto/moderation/defs.js +10 -13
- package/dist/lexicon/types/com/atproto/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/applyWrites.d.ts +7 -7
- package/dist/lexicon/types/com/atproto/repo/applyWrites.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/applyWrites.js +15 -29
- package/dist/lexicon/types/com/atproto/repo/applyWrites.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/createRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/createRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/defs.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/defs.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/deleteRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/deleteRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/describeRepo.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/describeRepo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/getRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/getRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/importRepo.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/importRepo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/listMissingBlobs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/listRecords.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/listRecords.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/listRecords.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/putRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/putRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/strongRef.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/repo/strongRef.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/strongRef.js +5 -9
- package/dist/lexicon/types/com/atproto/repo/strongRef.js.map +1 -1
- package/dist/lexicon/types/com/atproto/repo/uploadBlob.js +3 -5
- package/dist/lexicon/types/com/atproto/repo/uploadBlob.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/activateAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/activateAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/checkAccountStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/server/checkAccountStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/confirmEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/server/confirmEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/createAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/createAppPassword.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createAppPassword.js +5 -9
- package/dist/lexicon/types/com/atproto/server/createAppPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCode.js +3 -5
- package/dist/lexicon/types/com/atproto/server/createInviteCode.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.js +5 -9
- package/dist/lexicon/types/com/atproto/server/createInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/createSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/createSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/deactivateAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/deactivateAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/defs.d.ts +2 -2
- package/dist/lexicon/types/com/atproto/server/defs.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/defs.js +7 -13
- package/dist/lexicon/types/com/atproto/server/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/deleteAccount.js +3 -5
- package/dist/lexicon/types/com/atproto/server/deleteAccount.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/deleteSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/deleteSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/describeServer.d.ts +2 -2
- package/dist/lexicon/types/com/atproto/server/describeServer.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/describeServer.js +7 -13
- package/dist/lexicon/types/com/atproto/server/describeServer.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.js +3 -5
- package/dist/lexicon/types/com/atproto/server/getAccountInviteCodes.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.js +3 -5
- package/dist/lexicon/types/com/atproto/server/getServiceAuth.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/getSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/getSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.js +5 -9
- package/dist/lexicon/types/com/atproto/server/listAppPasswords.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/refreshSession.js +3 -5
- package/dist/lexicon/types/com/atproto/server/refreshSession.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestAccountDelete.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestAccountDelete.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestEmailConfirmation.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestEmailUpdate.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/requestPasswordReset.js +3 -5
- package/dist/lexicon/types/com/atproto/server/requestPasswordReset.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/reserveSigningKey.js +3 -5
- package/dist/lexicon/types/com/atproto/server/reserveSigningKey.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/resetPassword.js +3 -5
- package/dist/lexicon/types/com/atproto/server/resetPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/revokeAppPassword.js +3 -5
- package/dist/lexicon/types/com/atproto/server/revokeAppPassword.js.map +1 -1
- package/dist/lexicon/types/com/atproto/server/updateEmail.js +3 -5
- package/dist/lexicon/types/com/atproto/server/updateEmail.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/defs.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/defs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getBlob.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getBlob.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getBlocks.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getBlocks.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getCheckout.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getCheckout.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getHead.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getHead.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getHostStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getHostStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getLatestCommit.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getLatestCommit.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getRecord.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getRecord.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getRepo.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getRepo.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/getRepoStatus.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/getRepoStatus.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listBlobs.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/listBlobs.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listHosts.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/sync/listHosts.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listHosts.js +5 -9
- package/dist/lexicon/types/com/atproto/sync/listHosts.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/sync/listRepos.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listRepos.js +5 -9
- package/dist/lexicon/types/com/atproto/sync/listRepos.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.d.ts +1 -1
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.js +5 -9
- package/dist/lexicon/types/com/atproto/sync/listReposByCollection.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/notifyOfUpdate.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/notifyOfUpdate.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/requestCrawl.js +3 -5
- package/dist/lexicon/types/com/atproto/sync/requestCrawl.js.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.d.ts +7 -7
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.js +15 -29
- package/dist/lexicon/types/com/atproto/sync/subscribeRepos.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/addReservedHandle.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/addReservedHandle.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.d.ts +4 -4
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.d.ts.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.js +9 -17
- package/dist/lexicon/types/com/atproto/temp/checkHandleAvailability.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/checkSignupQueue.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/dereferenceScope.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/dereferenceScope.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/fetchLabels.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/fetchLabels.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/requestPhoneVerification.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/requestPhoneVerification.js.map +1 -1
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js +3 -5
- package/dist/lexicon/types/com/atproto/temp/revokeAccountCredentials.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/createTemplate.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/createTemplate.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/communication/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/communication/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/deleteTemplate.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/deleteTemplate.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/listTemplates.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/listTemplates.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/communication/updateTemplate.js +3 -5
- package/dist/lexicon/types/tools/ozone/communication/updateTemplate.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.d.ts +7 -7
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js +15 -29
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js +7 -13
- package/dist/lexicon/types/tools/ozone/moderation/cancelScheduledActions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +49 -49
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.js +106 -205
- package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js +5 -9
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.js +7 -13
- package/dist/lexicon/types/tools/ozone/moderation/getAccountTimeline.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getEvent.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getEvent.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecord.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRecord.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRecords.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepo.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRepo.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getReporterStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getReporterStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getRepos.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/getSubjects.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/getSubjects.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/listScheduledActions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts +5 -5
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js +11 -21
- package/dist/lexicon/types/tools/ozone/moderation/scheduleAction.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/searchRepos.js +3 -5
- package/dist/lexicon/types/tools/ozone/moderation/searchRepos.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/createQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/createQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/defs.d.ts +3 -3
- package/dist/lexicon/types/tools/ozone/queue/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/defs.js +9 -17
- package/dist/lexicon/types/tools/ozone/queue/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/listQueues.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/listQueues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/routeReports.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/routeReports.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/assignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/assignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/createActivity.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/report/createActivity.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/createActivity.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/createActivity.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/defs.d.ts +13 -13
- package/dist/lexicon/types/tools/ozone/report/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/defs.js +67 -94
- package/dist/lexicon/types/tools/ozone/report/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getAssignments.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getAssignments.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getReport.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/getReport.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/listActivities.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/listActivities.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/queryReports.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/queryReports.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/refreshStats.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/refreshStats.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.js +3 -5
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/addRule.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/addRule.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/defs.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/safelink/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/defs.js +7 -13
- package/dist/lexicon/types/tools/ozone/safelink/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/queryEvents.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/queryEvents.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/queryRules.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/queryRules.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/removeRule.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/removeRule.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/safelink/updateRule.js +3 -5
- package/dist/lexicon/types/tools/ozone/safelink/updateRule.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/server/getConfig.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/server/getConfig.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/server/getConfig.js +7 -13
- package/dist/lexicon/types/tools/ozone/server/getConfig.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/addValues.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/addValues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/defs.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/set/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/defs.js +7 -13
- package/dist/lexicon/types/tools/ozone/set/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/deleteSet.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/deleteSet.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/deleteValues.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/deleteValues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/getValues.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/getValues.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/querySets.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/querySets.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/set/upsertSet.js +3 -5
- package/dist/lexicon/types/tools/ozone/set/upsertSet.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/setting/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/listOptions.js +3 -5
- package/dist/lexicon/types/tools/ozone/setting/listOptions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/removeOptions.js +3 -5
- package/dist/lexicon/types/tools/ozone/setting/removeOptions.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/upsertOption.js +3 -5
- package/dist/lexicon/types/tools/ozone/setting/upsertOption.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/signature/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/signature/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findCorrelation.js +3 -5
- package/dist/lexicon/types/tools/ozone/signature/findCorrelation.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.js +5 -9
- package/dist/lexicon/types/tools/ozone/signature/findRelatedAccounts.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/signature/searchAccounts.js +3 -5
- package/dist/lexicon/types/tools/ozone/signature/searchAccounts.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/addMember.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/addMember.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.js +9 -14
- package/dist/lexicon/types/tools/ozone/team/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/deleteMember.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/deleteMember.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/listMembers.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/listMembers.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/updateMember.js +3 -5
- package/dist/lexicon/types/tools/ozone/team/updateMember.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/defs.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/verification/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/defs.js +5 -9
- package/dist/lexicon/types/tools/ozone/verification/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.d.ts +2 -2
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js +7 -13
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.js +3 -5
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js +5 -9
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js.map +1 -1
- package/dist/lexicon/util.js +3 -8
- package/dist/lexicon/util.js.map +1 -1
- package/dist/logger.js +11 -14
- package/dist/logger.js.map +1 -1
- package/dist/mod-service/expiring-tags.d.ts +2 -2
- package/dist/mod-service/expiring-tags.d.ts.map +1 -1
- package/dist/mod-service/expiring-tags.js +4 -10
- package/dist/mod-service/expiring-tags.js.map +1 -1
- package/dist/mod-service/index.d.ts +15 -15
- package/dist/mod-service/index.d.ts.map +1 -1
- package/dist/mod-service/index.js +126 -190
- package/dist/mod-service/index.js.map +1 -1
- package/dist/mod-service/profile.d.ts +1 -1
- package/dist/mod-service/profile.d.ts.map +1 -1
- package/dist/mod-service/profile.js +53 -78
- package/dist/mod-service/profile.js.map +1 -1
- package/dist/mod-service/report.d.ts +3 -3
- package/dist/mod-service/report.d.ts.map +1 -1
- package/dist/mod-service/report.js +22 -29
- package/dist/mod-service/report.js.map +1 -1
- package/dist/mod-service/status.d.ts +117 -117
- package/dist/mod-service/status.d.ts.map +1 -1
- package/dist/mod-service/status.js +30 -36
- package/dist/mod-service/status.js.map +1 -1
- package/dist/mod-service/strike.d.ts +1 -1
- package/dist/mod-service/strike.d.ts.map +1 -1
- package/dist/mod-service/strike.js +2 -11
- package/dist/mod-service/strike.js.map +1 -1
- package/dist/mod-service/subject.d.ts +7 -7
- package/dist/mod-service/subject.d.ts.map +1 -1
- package/dist/mod-service/subject.js +30 -145
- package/dist/mod-service/subject.js.map +1 -1
- package/dist/mod-service/types.d.ts +4 -4
- package/dist/mod-service/types.d.ts.map +1 -1
- package/dist/mod-service/types.js +1 -2
- package/dist/mod-service/types.js.map +1 -1
- package/dist/mod-service/util.d.ts +3 -3
- package/dist/mod-service/util.d.ts.map +1 -1
- package/dist/mod-service/util.js +18 -31
- package/dist/mod-service/util.js.map +1 -1
- package/dist/mod-service/views.d.ts +10 -10
- package/dist/mod-service/views.d.ts.map +1 -1
- package/dist/mod-service/views.js +76 -116
- package/dist/mod-service/views.js.map +1 -1
- package/dist/queue/service.d.ts +2 -2
- package/dist/queue/service.d.ts.map +1 -1
- package/dist/queue/service.js +23 -33
- package/dist/queue/service.js.map +1 -1
- package/dist/report/activity.d.ts +3 -3
- package/dist/report/activity.d.ts.map +1 -1
- package/dist/report/activity.js +12 -18
- package/dist/report/activity.js.map +1 -1
- package/dist/report/handle-report-update.js +9 -35
- package/dist/report/handle-report-update.js.map +1 -1
- package/dist/report/reassign.d.ts +2 -2
- package/dist/report/reassign.d.ts.map +1 -1
- package/dist/report/reassign.js +7 -10
- package/dist/report/reassign.js.map +1 -1
- package/dist/report/stats.d.ts +2 -2
- package/dist/report/stats.d.ts.map +1 -1
- package/dist/report/stats.js +41 -50
- package/dist/report/stats.js.map +1 -1
- package/dist/report/views.d.ts +20 -17
- package/dist/report/views.d.ts.map +1 -1
- package/dist/report/views.js +8 -15
- package/dist/report/views.js.map +1 -1
- package/dist/safelink/service.d.ts +3 -3
- package/dist/safelink/service.d.ts.map +1 -1
- package/dist/safelink/service.js +6 -15
- package/dist/safelink/service.js.map +1 -1
- package/dist/scheduled-action/service.d.ts +5 -5
- package/dist/scheduled-action/service.d.ts.map +1 -1
- package/dist/scheduled-action/service.js +7 -16
- package/dist/scheduled-action/service.js.map +1 -1
- package/dist/scheduled-action/types.d.ts +1 -1
- package/dist/scheduled-action/types.d.ts.map +1 -1
- package/dist/scheduled-action/types.js +1 -2
- package/dist/scheduled-action/types.js.map +1 -1
- package/dist/sequencer/index.d.ts +2 -2
- package/dist/sequencer/index.d.ts.map +1 -1
- package/dist/sequencer/index.js +2 -18
- package/dist/sequencer/index.js.map +1 -1
- package/dist/sequencer/outbox.d.ts +1 -1
- package/dist/sequencer/outbox.d.ts.map +1 -1
- package/dist/sequencer/outbox.js +9 -40
- package/dist/sequencer/outbox.js.map +1 -1
- package/dist/sequencer/sequencer.d.ts +9 -8
- package/dist/sequencer/sequencer.d.ts.map +1 -1
- package/dist/sequencer/sequencer.js +11 -56
- package/dist/sequencer/sequencer.js.map +1 -1
- package/dist/set/service.d.ts +4 -4
- package/dist/set/service.d.ts.map +1 -1
- package/dist/set/service.js +5 -14
- package/dist/set/service.js.map +1 -1
- package/dist/setting/constants.js +3 -6
- package/dist/setting/constants.js.map +1 -1
- package/dist/setting/service.d.ts +4 -4
- package/dist/setting/service.d.ts.map +1 -1
- package/dist/setting/service.js +6 -18
- package/dist/setting/service.js.map +1 -1
- package/dist/setting/types.js +1 -2
- package/dist/setting/validators.d.ts +1 -1
- package/dist/setting/validators.d.ts.map +1 -1
- package/dist/setting/validators.js +33 -36
- package/dist/setting/validators.js.map +1 -1
- package/dist/tag-service/content-tagger.d.ts +3 -3
- package/dist/tag-service/content-tagger.d.ts.map +1 -1
- package/dist/tag-service/content-tagger.js +4 -23
- package/dist/tag-service/content-tagger.js.map +1 -1
- package/dist/tag-service/embed-tagger.d.ts +1 -1
- package/dist/tag-service/embed-tagger.d.ts.map +1 -1
- package/dist/tag-service/embed-tagger.js +13 -22
- package/dist/tag-service/embed-tagger.js.map +1 -1
- package/dist/tag-service/index.d.ts +3 -3
- package/dist/tag-service/index.d.ts.map +1 -1
- package/dist/tag-service/index.js +12 -42
- package/dist/tag-service/index.js.map +1 -1
- package/dist/tag-service/language-data.js +4 -8
- package/dist/tag-service/language-data.js.map +1 -1
- package/dist/tag-service/language-tagger.d.ts +1 -1
- package/dist/tag-service/language-tagger.d.ts.map +1 -1
- package/dist/tag-service/language-tagger.js +13 -56
- package/dist/tag-service/language-tagger.js.map +1 -1
- package/dist/tag-service/util.d.ts +1 -1
- package/dist/tag-service/util.d.ts.map +1 -1
- package/dist/tag-service/util.js +1 -5
- package/dist/tag-service/util.js.map +1 -1
- package/dist/team/index.d.ts +5 -5
- package/dist/team/index.d.ts.map +1 -1
- package/dist/team/index.js +13 -37
- package/dist/team/index.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +19 -32
- package/dist/util.js.map +1 -1
- package/dist/verification/issuer.d.ts +2 -2
- package/dist/verification/issuer.d.ts.map +1 -1
- package/dist/verification/issuer.js +6 -25
- package/dist/verification/issuer.js.map +1 -1
- package/dist/verification/service.d.ts +2 -2
- package/dist/verification/service.d.ts.map +1 -1
- package/dist/verification/service.js +7 -16
- package/dist/verification/service.js.map +1 -1
- package/dist/verification/util.d.ts +3 -3
- package/dist/verification/util.d.ts.map +1 -1
- package/dist/verification/util.js +4 -8
- package/dist/verification/util.js.map +1 -1
- package/jest.config.cjs +22 -0
- package/package.json +28 -22
- package/src/api/chat/getActorMetadata.ts +3 -3
- package/src/api/chat/getMessageContext.ts +3 -3
- package/src/api/chat/index.ts +4 -4
- package/src/api/communication/createTemplate.ts +3 -3
- package/src/api/communication/deleteTemplate.ts +2 -2
- package/src/api/communication/listTemplates.ts +2 -2
- package/src/api/communication/updateTemplate.ts +3 -3
- package/src/api/health.ts +1 -1
- package/src/api/index.ts +71 -71
- package/src/api/label/fetchLabels.ts +2 -2
- package/src/api/label/queryLabels.ts +2 -2
- package/src/api/label/subscribeLabels.ts +3 -3
- package/src/api/moderation/cancelScheduledActions.ts +4 -4
- package/src/api/moderation/emitEvent.ts +16 -16
- package/src/api/moderation/getAccountTimeline.ts +4 -4
- package/src/api/moderation/getEvent.ts +2 -2
- package/src/api/moderation/getRecord.ts +3 -3
- package/src/api/moderation/getRecords.ts +3 -3
- package/src/api/moderation/getRepo.ts +3 -3
- package/src/api/moderation/getReporterStats.ts +2 -2
- package/src/api/moderation/getRepos.ts +3 -3
- package/src/api/moderation/getSubjects.ts +4 -4
- package/src/api/moderation/listScheduledActions.ts +3 -3
- package/src/api/moderation/queryEvents.ts +3 -3
- package/src/api/moderation/queryStatuses.ts +2 -2
- package/src/api/moderation/scheduleAction.ts +6 -6
- package/src/api/moderation/searchRepos.ts +3 -3
- package/src/api/moderation/util.ts +3 -3
- package/src/api/proxied.ts +3 -3
- package/src/api/queue/assignModerator.ts +3 -3
- package/src/api/queue/createQueue.ts +2 -2
- package/src/api/queue/deleteQueue.ts +2 -2
- package/src/api/queue/getAssignments.ts +2 -2
- package/src/api/queue/listQueues.ts +2 -2
- package/src/api/queue/routeReports.ts +2 -2
- package/src/api/queue/unassignModerator.ts +3 -3
- package/src/api/queue/updateQueue.ts +2 -2
- package/src/api/report/assignModerator.ts +3 -3
- package/src/api/report/createActivity.ts +4 -4
- package/src/api/report/createReport.ts +8 -8
- package/src/api/report/getAssignments.ts +2 -2
- package/src/api/report/getHistoricalStats.ts +3 -3
- package/src/api/report/getLatestReport.ts +5 -5
- package/src/api/report/getLiveStats.ts +3 -3
- package/src/api/report/getReport.ts +5 -5
- package/src/api/report/listActivities.ts +6 -3
- package/src/api/report/queryReports.ts +5 -5
- package/src/api/report/reassignQueue.ts +6 -6
- package/src/api/report/refreshStats.ts +2 -2
- package/src/api/report/unassignModerator.ts +3 -3
- package/src/api/safelink/addRule.ts +3 -3
- package/src/api/safelink/queryEvents.ts +3 -3
- package/src/api/safelink/queryRules.ts +3 -3
- package/src/api/safelink/removeRule.ts +3 -3
- package/src/api/safelink/updateRule.ts +3 -3
- package/src/api/server/getConfig.ts +2 -2
- package/src/api/set/addValues.ts +2 -2
- package/src/api/set/deleteSet.ts +2 -2
- package/src/api/set/deleteValues.ts +2 -2
- package/src/api/set/getValues.ts +2 -2
- package/src/api/set/querySets.ts +2 -2
- package/src/api/set/upsertSet.ts +2 -2
- package/src/api/setting/listOptions.ts +2 -2
- package/src/api/setting/removeOptions.ts +3 -3
- package/src/api/setting/upsertOption.ts +6 -6
- package/src/api/team/addMember.ts +3 -3
- package/src/api/team/deleteMember.ts +2 -2
- package/src/api/team/listMembers.ts +2 -2
- package/src/api/team/updateMember.ts +3 -3
- package/src/api/util.ts +10 -10
- package/src/api/verification/grantVerifications.ts +4 -4
- package/src/api/verification/listVerifications.ts +3 -3
- package/src/api/verification/revokeVerifications.ts +2 -2
- package/src/api/well-known.ts +1 -1
- package/src/assignment/index.ts +9 -9
- package/src/auth-verifier.ts +1 -1
- package/src/background.ts +9 -5
- package/src/communication-service/template.ts +3 -3
- package/src/config/config.ts +1 -1
- package/src/config/index.ts +3 -3
- package/src/config/secrets.ts +1 -1
- package/src/context.ts +29 -23
- package/src/daemon/blob-diverter.ts +3 -3
- package/src/daemon/context.ts +20 -20
- package/src/daemon/event-pusher.ts +7 -7
- package/src/daemon/event-reverser.ts +8 -5
- package/src/daemon/index.ts +8 -8
- package/src/daemon/job-cursor.ts +1 -1
- package/src/daemon/materialized-view-refresher.ts +2 -2
- package/src/daemon/queue-router.ts +4 -4
- package/src/daemon/scheduled-action-processor.ts +14 -11
- package/src/daemon/stats-computer.ts +3 -3
- package/src/daemon/strike-expiry-processor.ts +4 -4
- package/src/daemon/team-profile-synchronizer.ts +2 -2
- package/src/daemon/verification-listener.ts +5 -5
- package/src/db/index.ts +13 -9
- package/src/db/migrations/20241220T144630860Z-stats-materialized-views.ts +6 -6
- package/src/db/migrations/20250718T150931000Z-update-appeal-reason-stats.ts +5 -5
- package/src/db/migrations/index.ts +38 -38
- package/src/db/pagination.ts +1 -1
- package/src/db/schema/index.ts +27 -27
- package/src/db/schema/moderation_subject_status.ts +1 -1
- package/src/db/schema/safelink.ts +1 -1
- package/src/db/schema/setting.ts +1 -1
- package/src/db/types.ts +3 -1
- package/src/error.ts +1 -1
- package/src/index.ts +19 -15
- package/src/jetstream/service.ts +1 -0
- package/src/lexicon/index.ts +6 -6
- package/src/lexicon/lexicons.ts +638 -14
- package/src/lexicon/types/app/bsky/actor/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getProfile.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getProfiles.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/getSuggestions.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/profile.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/putPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/searchActors.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts +2 -2
- package/src/lexicon/types/app/bsky/actor/status.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/begin.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/getConfig.ts +2 -2
- package/src/lexicon/types/app/bsky/ageassurance/getState.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/createBookmark.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/deleteBookmark.ts +2 -2
- package/src/lexicon/types/app/bsky/bookmark/getBookmarks.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/dismissMatch.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/getMatches.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/getSyncStatus.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/importContacts.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/removeData.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/sendNotification.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/startPhoneVerification.ts +2 -2
- package/src/lexicon/types/app/bsky/contact/verifyPhone.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/createDraft.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/deleteDraft.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/getDrafts.ts +2 -2
- package/src/lexicon/types/app/bsky/draft/updateDraft.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/external.ts +4 -3
- package/src/lexicon/types/app/bsky/embed/images.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/record.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/recordWithMedia.ts +2 -2
- package/src/lexicon/types/app/bsky/embed/video.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/generator.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getActorFeeds.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getActorLikes.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeed.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeedGenerator.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeedGenerators.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getLikes.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getListFeed.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getPostThread.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getPosts.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getQuotes.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getRepostedBy.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getSuggestedFeeds.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/getTimeline.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/like.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/post.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/postgate.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/repost.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/searchPosts.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/sendInteractions.ts +2 -2
- package/src/lexicon/types/app/bsky/feed/threadgate.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/block.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/follow.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getActorStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getBlocks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getFollowers.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getFollows.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getKnownFollowers.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getList.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getListBlocks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getListMutes.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getLists.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getListsWithMembership.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getMutes.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getRelationships.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getStarterPack.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getStarterPacksWithMembership.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/list.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/listblock.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/listitem.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/muteActor.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/muteActorList.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/muteThread.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/searchStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/starterpack.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/unmuteActor.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/unmuteActorList.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/unmuteThread.ts +2 -2
- package/src/lexicon/types/app/bsky/graph/verification.ts +2 -2
- package/src/lexicon/types/app/bsky/labeler/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/labeler/getServices.ts +2 -2
- package/src/lexicon/types/app/bsky/labeler/service.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/declaration.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/getPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/getUnreadCount.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/listActivitySubscriptions.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/listNotifications.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/putActivitySubscription.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/putPreferences.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/putPreferencesV2.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/registerPush.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/unregisterPush.ts +2 -2
- package/src/lexicon/types/app/bsky/notification/updateSeen.ts +2 -2
- package/src/lexicon/types/app/bsky/richtext/facet.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getAgeAssuranceState.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getConfig.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedStarterPacksSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getOnboardingSuggestedUsersSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getPopularFeedGenerators.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getPostThreadOtherV2.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getPostThreadV2.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedFeeds.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedFeedsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacks.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscover.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForDiscoverSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExplore.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForExploreSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMore.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersForSeeMoreSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTaggedSuggestions.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTrendingTopics.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTrends.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/getTrendsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/initAgeAssurance.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/searchActorsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/searchPostsSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/unspecced/searchStarterPacksSkeleton.ts +2 -2
- package/src/lexicon/types/app/bsky/video/defs.ts +2 -2
- package/src/lexicon/types/app/bsky/video/getJobStatus.ts +2 -2
- package/src/lexicon/types/app/bsky/video/getUploadLimits.ts +2 -2
- package/src/lexicon/types/app/bsky/video/uploadVideo.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/declaration.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/defs.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/deleteAccount.ts +2 -2
- package/src/lexicon/types/chat/bsky/actor/exportAccountData.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/acceptConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/addReaction.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/defs.ts +19 -3
- package/src/lexicon/types/chat/bsky/convo/deleteMessageForSelf.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvoAvailability.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvoForMembers.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getConvoMembers.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getLog.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/getMessages.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/leaveConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/listConvoRequests.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/listConvos.ts +4 -2
- package/src/lexicon/types/chat/bsky/convo/lockConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/muteConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/removeReaction.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/sendMessage.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/sendMessageBatch.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/unlockConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/unmuteConvo.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/updateAllRead.ts +2 -2
- package/src/lexicon/types/chat/bsky/convo/updateRead.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/addMembers.ts +3 -3
- package/src/lexicon/types/chat/bsky/group/approveJoinRequest.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/createGroup.ts +3 -3
- package/src/lexicon/types/chat/bsky/group/createJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/defs.ts +11 -9
- package/src/lexicon/types/chat/bsky/group/disableJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/editGroup.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/editJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/enableJoinLink.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/{getGroupPublicInfo.ts → getJoinLinkPreview.ts} +4 -4
- package/src/lexicon/types/chat/bsky/group/listJoinRequests.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/rejectJoinRequest.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/removeMembers.ts +2 -2
- package/src/lexicon/types/chat/bsky/group/requestJoin.ts +2 -2
- package/src/lexicon/types/chat/bsky/moderation/getActorMetadata.ts +2 -2
- package/src/lexicon/types/chat/bsky/moderation/getMessageContext.ts +6 -3
- package/src/lexicon/types/chat/bsky/moderation/subscribeModEvents.ts +342 -3
- package/src/lexicon/types/chat/bsky/moderation/updateActorAccess.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/deleteAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/disableAccountInvites.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/disableInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/enableAccountInvites.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getAccountInfo.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getAccountInfos.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/getSubjectStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/searchAccounts.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/sendEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateAccountSigningKey.ts +2 -2
- package/src/lexicon/types/com/atproto/admin/updateSubjectStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/getRecommendedDidCredentials.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/refreshIdentity.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/requestPlcOperationSignature.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/resolveDid.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/resolveHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/resolveIdentity.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/signPlcOperation.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/submitPlcOperation.ts +2 -2
- package/src/lexicon/types/com/atproto/identity/updateHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/label/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/label/queryLabels.ts +2 -2
- package/src/lexicon/types/com/atproto/label/subscribeLabels.ts +2 -2
- package/src/lexicon/types/com/atproto/lexicon/resolveLexicon.ts +2 -2
- package/src/lexicon/types/com/atproto/lexicon/schema.ts +2 -2
- package/src/lexicon/types/com/atproto/moderation/createReport.ts +2 -2
- package/src/lexicon/types/com/atproto/moderation/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/applyWrites.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/createRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/describeRepo.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/getRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/importRepo.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/listMissingBlobs.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/listRecords.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/putRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/strongRef.ts +2 -2
- package/src/lexicon/types/com/atproto/repo/uploadBlob.ts +2 -2
- package/src/lexicon/types/com/atproto/server/activateAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/checkAccountStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/server/confirmEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createAppPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createInviteCode.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/server/createSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/deactivateAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/server/deleteAccount.ts +2 -2
- package/src/lexicon/types/com/atproto/server/deleteSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/describeServer.ts +2 -2
- package/src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts +2 -2
- package/src/lexicon/types/com/atproto/server/getServiceAuth.ts +2 -2
- package/src/lexicon/types/com/atproto/server/getSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/listAppPasswords.ts +2 -2
- package/src/lexicon/types/com/atproto/server/refreshSession.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestAccountDelete.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestEmailConfirmation.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestEmailUpdate.ts +2 -2
- package/src/lexicon/types/com/atproto/server/requestPasswordReset.ts +2 -2
- package/src/lexicon/types/com/atproto/server/reserveSigningKey.ts +2 -2
- package/src/lexicon/types/com/atproto/server/resetPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/server/revokeAppPassword.ts +2 -2
- package/src/lexicon/types/com/atproto/server/updateEmail.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/defs.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getBlob.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getBlocks.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getCheckout.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getHead.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getHostStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getLatestCommit.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getRecord.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getRepo.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/getRepoStatus.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listBlobs.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listHosts.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listRepos.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/listReposByCollection.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/requestCrawl.ts +2 -2
- package/src/lexicon/types/com/atproto/sync/subscribeRepos.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/addReservedHandle.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/checkHandleAvailability.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/checkSignupQueue.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/dereferenceScope.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/fetchLabels.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/requestPhoneVerification.ts +2 -2
- package/src/lexicon/types/com/atproto/temp/revokeAccountCredentials.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/createTemplate.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/deleteTemplate.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/listTemplates.ts +2 -2
- package/src/lexicon/types/tools/ozone/communication/updateTemplate.ts +2 -2
- package/src/lexicon/types/tools/ozone/hosting/getAccountHistory.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/cancelScheduledActions.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/emitEvent.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getAccountTimeline.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getEvent.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRecord.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRecords.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRepo.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getReporterStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getRepos.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/getSubjects.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/listScheduledActions.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/queryEvents.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/queryStatuses.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/scheduleAction.ts +2 -2
- package/src/lexicon/types/tools/ozone/moderation/searchRepos.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/assignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/createQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/deleteQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/getAssignments.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/listQueues.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/routeReports.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/unassignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/queue/updateQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/assignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/createActivity.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getAssignments.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getHistoricalStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getLatestReport.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getLiveStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/getReport.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/listActivities.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/queryReports.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/reassignQueue.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/refreshStats.ts +2 -2
- package/src/lexicon/types/tools/ozone/report/unassignModerator.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/addRule.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/queryEvents.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/queryRules.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/removeRule.ts +2 -2
- package/src/lexicon/types/tools/ozone/safelink/updateRule.ts +2 -2
- package/src/lexicon/types/tools/ozone/server/getConfig.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/addValues.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/deleteSet.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/deleteValues.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/getValues.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/querySets.ts +2 -2
- package/src/lexicon/types/tools/ozone/set/upsertSet.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/listOptions.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/removeOptions.ts +2 -2
- package/src/lexicon/types/tools/ozone/setting/upsertOption.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/findCorrelation.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/findRelatedAccounts.ts +2 -2
- package/src/lexicon/types/tools/ozone/signature/searchAccounts.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/addMember.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/deleteMember.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/listMembers.ts +2 -2
- package/src/lexicon/types/tools/ozone/team/updateMember.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/defs.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/grantVerifications.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/listVerifications.ts +2 -2
- package/src/lexicon/types/tools/ozone/verification/revokeVerifications.ts +2 -2
- package/src/mod-service/expiring-tags.ts +2 -2
- package/src/mod-service/index.ts +30 -27
- package/src/mod-service/profile.ts +3 -3
- package/src/mod-service/report.ts +4 -4
- package/src/mod-service/status.ts +6 -6
- package/src/mod-service/strike.ts +1 -1
- package/src/mod-service/subject.ts +7 -7
- package/src/mod-service/types.ts +4 -4
- package/src/mod-service/util.ts +3 -3
- package/src/mod-service/views.ts +16 -16
- package/src/queue/service.ts +7 -7
- package/src/report/activity.ts +3 -3
- package/src/report/reassign.ts +2 -2
- package/src/report/stats.ts +5 -5
- package/src/report/views.ts +11 -13
- package/src/safelink/service.ts +3 -3
- package/src/scheduled-action/service.ts +6 -6
- package/src/scheduled-action/types.ts +1 -1
- package/src/sequencer/index.ts +2 -2
- package/src/sequencer/outbox.ts +1 -1
- package/src/sequencer/sequencer.ts +11 -9
- package/src/set/service.ts +4 -4
- package/src/setting/service.ts +4 -4
- package/src/setting/validators.ts +2 -2
- package/src/tag-service/content-tagger.ts +3 -3
- package/src/tag-service/embed-tagger.ts +3 -3
- package/src/tag-service/index.ts +7 -7
- package/src/tag-service/language-tagger.ts +4 -5
- package/src/tag-service/util.ts +1 -1
- package/src/team/index.ts +7 -7
- package/src/util.ts +1 -1
- package/src/verification/issuer.ts +2 -2
- package/src/verification/service.ts +3 -3
- package/src/verification/util.ts +7 -4
- package/tests/3p-labeler.test.ts +2 -2
- package/tests/__snapshots__/account-strikes.test.ts.snap +36 -36
- package/tests/__snapshots__/age-assurance.test.ts.snap +13 -13
- package/tests/__snapshots__/blob-divert.test.ts.snap +52 -52
- package/tests/__snapshots__/get-account-timeline.test.ts.snap +8 -8
- package/tests/__snapshots__/get-record.test.ts.snap +68 -68
- package/tests/__snapshots__/get-records.test.ts.snap +46 -46
- package/tests/__snapshots__/get-repo.test.ts.snap +22 -22
- package/tests/__snapshots__/get-repos.test.ts.snap +33 -33
- package/tests/__snapshots__/get-starter-pack.test.ts.snap +141 -141
- package/tests/__snapshots__/get-subjects.test.ts.snap +108 -108
- package/tests/__snapshots__/moderation-events.test.ts.snap +79 -79
- package/tests/__snapshots__/moderation-statuses.test.ts.snap +45 -45
- package/tests/__snapshots__/moderation.test.ts.snap +16 -16
- package/tests/__snapshots__/report-reason.test.ts.snap +3 -3
- package/tests/__snapshots__/safelink.test.ts.snap +19 -19
- package/tests/__snapshots__/scheduled-action.test.ts.snap +11 -11
- package/tests/__snapshots__/sets.test.ts.snap +7 -7
- package/tests/__snapshots__/settings.test.ts.snap +10 -10
- package/tests/__snapshots__/team.test.ts.snap +64 -64
- package/tests/__snapshots__/verification-listener.test.ts.snap +35 -35
- package/tests/__snapshots__/verification.test.ts.snap +71 -71
- package/tests/_util.ts +3 -3
- package/tests/account-strikes.test.ts +3 -3
- package/tests/ack-all-subjects-of-account.test.ts +3 -3
- package/tests/age-assurance.test.ts +1 -1
- package/tests/blob-divert.test.ts +2 -1
- package/tests/communication-templates.test.ts +1 -1
- package/tests/content-tagger.test.ts +2 -2
- package/tests/db.test.ts +1 -1
- package/tests/expiring-label.test.ts +1 -1
- package/tests/expiring-tags.test.ts +2 -2
- package/tests/get-account-timeline.test.ts +3 -3
- package/tests/get-config.test.ts +2 -2
- package/tests/get-lists.test.ts +2 -2
- package/tests/get-record.test.ts +3 -3
- package/tests/get-records.test.ts +3 -3
- package/tests/get-repo.test.ts +3 -3
- package/tests/get-report.test.ts +2 -2
- package/tests/get-repos.test.ts +3 -3
- package/tests/get-starter-pack.test.ts +3 -3
- package/tests/get-subjects.test.ts +3 -3
- package/tests/moderation-appeals.test.ts +2 -2
- package/tests/moderation-events.test.ts +4 -4
- package/tests/moderation-status-tags.test.ts +1 -1
- package/tests/moderation-statuses.test.ts +5 -5
- package/tests/moderation.test.ts +7 -7
- package/tests/protected-tags.test.ts +2 -2
- package/tests/query-labels.test.ts +5 -5
- package/tests/query-reports.test.ts +2 -2
- package/tests/queue-assignment.test.ts +1 -1
- package/tests/queue-router.test.ts +1 -1
- package/tests/queues.test.ts +1 -1
- package/tests/record-and-account-events.test.ts +5 -5
- package/tests/repo-search.test.ts +3 -3
- package/tests/report-action.test.ts +1 -1
- package/tests/report-activity.test.ts +2 -2
- package/tests/report-assignment.test.ts +1 -1
- package/tests/report-muting.test.ts +1 -1
- package/tests/report-reason.test.ts +3 -3
- package/tests/report-reassign-queue.test.ts +2 -2
- package/tests/report-routing.test.ts +1 -1
- package/tests/report-stats.test.ts +2 -2
- package/tests/safelink.test.ts +2 -2
- package/tests/scheduled-action-processor.test.ts +3 -3
- package/tests/scheduled-action.test.ts +2 -2
- package/tests/sequencer.test.ts +3 -3
- package/tests/server.test.ts +2 -2
- package/tests/sets.test.ts +2 -2
- package/tests/settings.test.ts +3 -3
- package/tests/strike-expiry-processor.test.ts +2 -2
- package/tests/subject-priority-score.test.ts +1 -1
- package/tests/team.test.ts +1 -1
- package/tests/verification-listener.test.ts +1 -1
- package/tests/verification.test.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/lexicon/types/chat/bsky/group/getGroupPublicInfo.d.ts.map +0 -1
- package/dist/lexicon/types/chat/bsky/group/getGroupPublicInfo.js +0 -7
- package/dist/lexicon/types/chat/bsky/group/getGroupPublicInfo.js.map +0 -1
- package/jest.config.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/mod-service/views.ts"],"names":[],"mappings":"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","sourcesContent":["import { sql } from 'kysely'\nimport {\n AppBskyActorDefs,\n AtpAgent,\n ComAtprotoRepoGetRecord,\n} from '@atproto/api'\nimport { chunkArray, dedupeStrs } from '@atproto/common'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { BlobRef } from '@atproto/lexicon'\nimport { AtUri, INVALID_HANDLE, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { Database } from '../db'\nimport { LabelRow } from '../db/schema/label'\nimport { ids } from '../lexicon/lexicons'\nimport { FeedViewPost } from '../lexicon/types/app/bsky/feed/defs'\nimport { AccountView } from '../lexicon/types/com/atproto/admin/defs'\nimport {\n Label,\n validateSelfLabels,\n} from '../lexicon/types/com/atproto/label/defs'\nimport { OutputSchema as ReportOutput } from '../lexicon/types/com/atproto/moderation/createReport'\nimport { REASONOTHER } from '../lexicon/types/com/atproto/moderation/defs'\nimport {\n BlobView,\n ModEventView,\n ModEventViewDetail,\n RecordView,\n RecordViewDetail,\n RepoView,\n SubjectStatusView,\n isAccountEvent,\n isAgeAssuranceEvent,\n isAgeAssuranceOverrideEvent,\n isIdentityEvent,\n isModEventAcknowledge,\n isModEventComment,\n isModEventEmail,\n isModEventEscalate,\n isModEventLabel,\n isModEventMute,\n isModEventMuteReporter,\n isModEventPriorityScore,\n isModEventReport,\n isModEventReverseTakedown,\n isModEventTag,\n isModEventTakedown,\n isRecordEvent,\n isScheduleTakedownEvent,\n} from '../lexicon/types/tools/ozone/moderation/defs'\nimport { Un$Typed, asPredicate } from '../lexicon/util'\nimport { dbLogger, httpLogger } from '../logger'\nimport { ParsedLabelers } from '../util'\nimport { moderationSubjectStatusQueryBuilder } from './status'\nimport { subjectFromEventRow, subjectFromStatusRow } from './subject'\nimport {\n ModerationEventRowWithHandle,\n ModerationSubjectStatusRowWithHandle,\n} from './types'\nimport { formatLabel, getPdsAgentForRepo, signLabel } from './util'\n\nconst isValidSelfLabels = asPredicate(validateSelfLabels)\n\nconst ifString = (val: unknown): string | undefined =>\n typeof val === 'string' ? val : undefined\nconst ifBoolean = (val: unknown): boolean | undefined =>\n typeof val === 'boolean' ? val : undefined\nconst ifNumber = (val: unknown): number | undefined =>\n typeof val === 'number' ? val : undefined\n\nexport type AuthHeaders = {\n headers: {\n authorization: string\n 'atproto-accept-labelers'?: string\n }\n}\n\nexport class ModerationViews {\n constructor(\n private db: Database,\n private signingKey: Keypair,\n private signingKeyId: number,\n private appviewAgent: AtpAgent,\n private appviewAuth: (method: string) => Promise<AuthHeaders>,\n public idResolver: IdResolver,\n public devMode?: boolean,\n ) {}\n\n async getAccoutInfosByDid(dids: string[]): Promise<Map<string, AccountView>> {\n if (dids.length === 0) return new Map()\n const auth = await this.appviewAuth(ids.ComAtprotoAdminGetAccountInfos)\n if (!auth) return new Map()\n try {\n const res = await this.appviewAgent.com.atproto.admin.getAccountInfos(\n {\n dids: dedupeStrs(dids),\n },\n auth,\n )\n return res.data.infos.reduce((acc, cur) => {\n return acc.set(cur.did, cur)\n }, new Map<string, AccountView>())\n } catch (err) {\n httpLogger.error(\n { err, dids },\n 'failed to resolve account infos from appview',\n )\n return new Map()\n }\n }\n\n async repos(dids: string[]): Promise<Map<string, RepoView>> {\n if (dids.length === 0) return new Map()\n const [infos, subjectStatuses] = await Promise.all([\n this.getAccoutInfosByDid(dids),\n this.getSubjectStatus(dids),\n ])\n\n return dids.reduce((acc, did) => {\n const info = infos.get(did)\n if (!info) return acc\n const status = subjectStatuses.get(did)\n return acc.set(did, {\n // No email or invite info on appview\n did,\n handle: info.handle,\n relatedRecords: info.relatedRecords ?? [],\n indexedAt: info.indexedAt,\n moderation: {\n subjectStatus: status ? this.formatSubjectStatus(status) : undefined,\n },\n })\n }, new Map<string, RepoView>())\n }\n\n formatEvent(row: ModerationEventRowWithHandle): Un$Typed<ModEventView> {\n const eventView: Un$Typed<ModEventView> = {\n id: row.id,\n event: {\n $type: row.action,\n comment: row.comment ?? undefined,\n },\n subject: subjectFromEventRow(row).lex(),\n subjectBlobCids: row.subjectBlobCids ?? [],\n createdBy: row.createdBy,\n createdAt: row.createdAt,\n subjectHandle: row.subjectHandle ?? undefined,\n creatorHandle: row.creatorHandle ?? undefined,\n modTool: row.modTool\n ? {\n name: row.modTool.name,\n meta: row.modTool.meta,\n }\n : undefined,\n }\n\n const { event } = eventView\n const meta = row.meta || {}\n\n if (\n isModEventMuteReporter(event) ||\n isModEventTakedown(event) ||\n isModEventLabel(event) ||\n isModEventMute(event)\n ) {\n event.durationInHours = row.durationInHours ?? undefined\n }\n\n if (\n (isModEventTakedown(event) || isModEventAcknowledge(event)) &&\n meta.acknowledgeAccountSubjects\n ) {\n event.acknowledgeAccountSubjects = ifBoolean(\n meta.acknowledgeAccountSubjects,\n )!\n }\n\n if (isModEventPriorityScore(event)) {\n event.score = ifNumber(meta?.priorityScore) ?? 0\n }\n\n if (\n isModEventTakedown(event) ||\n isModEventEmail(event) ||\n isModEventReverseTakedown(event)\n ) {\n if (typeof meta.policies === 'string' && meta.policies.length > 0) {\n event.policies = meta.policies.split(',')\n }\n\n event.strikeCount = ifNumber(row.strikeCount)\n event.severityLevel = ifString(row.severityLevel)\n\n if (isModEventTakedown(event) || isModEventEmail(event)) {\n event.strikeExpiresAt = ifString(row.strikeExpiresAt)\n }\n }\n\n if (isModEventTakedown(event)) {\n if (\n typeof meta.targetServices === 'string' &&\n meta.targetServices.length > 0\n ) {\n event.targetServices = meta.targetServices.split(',')\n }\n }\n\n if (isModEventLabel(event)) {\n event.createLabelVals = row.createLabelVals?.length\n ? row.createLabelVals.split(' ')\n : []\n event.negateLabelVals = row.negateLabelVals?.length\n ? row.negateLabelVals.split(' ')\n : []\n } else if (\n isModEventAcknowledge(event) ||\n isModEventTakedown(event) ||\n isModEventEscalate(event)\n ) {\n // This is for legacy data only, for new events, these types of events\n // won't have labels attached:\n\n if (row.createLabelVals?.length) {\n // @ts-expect-error legacy\n event.createLabelVals = row.createLabelVals.split(' ')\n }\n\n if (row.negateLabelVals?.length) {\n // @ts-expect-error legacy\n event.negateLabelVals = row.negateLabelVals.split(' ')\n }\n }\n\n if (isModEventReport(event)) {\n event.isReporterMuted = !!meta.isReporterMuted\n event.reportType = ifString(meta.reportType)!\n }\n\n if (isModEventEmail(event)) {\n event.content = ifString(meta.content)!\n event.subjectLine = ifString(meta.subjectLine)!\n event.isDelivered = ifBoolean(meta.isDelivered)\n }\n\n if (isModEventComment(event) && meta.sticky) {\n event.sticky = true\n }\n\n if (isModEventTag(event)) {\n event.add = row.addedTags || []\n event.remove = row.removedTags || []\n }\n\n if (isAccountEvent(event)) {\n event.active = !!meta.active\n event.timestamp = ifString(meta.timestamp)!\n event.status = ifString(meta.status)!\n }\n\n if (isIdentityEvent(event)) {\n event.timestamp = ifString(meta.timestamp)!\n event.handle = ifString(meta.handle)!\n event.pdsHost = ifString(meta.pdsHost)!\n event.tombstone = !!meta.tombstone\n }\n\n if (isRecordEvent(event)) {\n event.op = ifString(meta.op)!\n event.cid = ifString(meta.cid)!\n event.timestamp = ifString(meta.timestamp)!\n }\n\n if (isAgeAssuranceEvent(event)) {\n event.status = ifString(meta.status)!\n event.access = ifString(meta.access)!\n event.createdAt = ifString(meta.createdAt)!\n event.attemptId = ifString(meta.attemptId)!\n event.initIp = ifString(meta.initIp)\n event.initUa = ifString(meta.initUa)\n event.completeIp = ifString(meta.completeIp)\n event.completeUa = ifString(meta.completeUa)\n }\n\n if (isAgeAssuranceOverrideEvent(event)) {\n event.status = ifString(meta.status)!\n event.access = ifString(meta.access)!\n }\n\n if (isScheduleTakedownEvent(event)) {\n event.executeAt = ifString(meta.executeAt)\n event.executeAfter = ifString(meta.executeAfter)\n event.executeUntil = ifString(meta.executeUntil)\n }\n\n return eventView\n }\n\n async eventDetail(\n result: ModerationEventRowWithHandle,\n ): Promise<ModEventViewDetail> {\n const subjectId =\n result.subjectType === 'com.atproto.admin.defs#repoRef'\n ? result.subjectDid\n : result.subjectUri\n if (!subjectId) {\n throw new Error(`Bad subject: ${result.id}`)\n }\n const subject = await this.subject(subjectId)\n const eventView = this.formatEvent(result)\n const allBlobs = 'value' in subject ? findBlobRefs(subject.value) : []\n const subjectBlobs = await this.blob(\n allBlobs.filter((blob) =>\n eventView.subjectBlobCids.includes(blob.ref.toString()),\n ),\n )\n return {\n ...eventView,\n subject,\n subjectBlobs,\n }\n }\n\n async repoDetails(\n dids: string[],\n labelers?: ParsedLabelers,\n ): Promise<Map<string, RepoView>> {\n const results = new Map<string, RepoView>()\n if (!dids.length) {\n return results\n }\n\n const [repos, localLabels, externalLabels] = await Promise.all([\n this.repos(dids),\n this.labels(dids),\n this.getExternalLabels(dids, labelers),\n ])\n\n repos.forEach((repo, did) => {\n const labels = [\n ...(localLabels.get(did) || []),\n ...(externalLabels.get(did) || []),\n ]\n const repoView = {\n ...repo,\n labels,\n moderation: {\n ...repo.moderation,\n },\n }\n results.set(did, repoView)\n })\n\n return results\n }\n\n async fetchRecord(\n params: ComAtprotoRepoGetRecord.QueryParams,\n appviewAuth: AuthHeaders,\n ) {\n try {\n const record = await this.appviewAgent.com.atproto.repo.getRecord(\n params,\n appviewAuth,\n )\n return record\n } catch (err) {\n if (err instanceof ComAtprotoRepoGetRecord.RecordNotFoundError) {\n // If pds fetch fails, just return null regardless of the error\n try {\n const { agent: pdsAgent } = await getPdsAgentForRepo(\n this.idResolver,\n params.repo,\n this.devMode,\n )\n if (!pdsAgent) {\n return null\n }\n\n const record = await pdsAgent.com.atproto.repo.getRecord(params)\n return record\n } catch (error) {\n return null\n }\n }\n\n return null\n }\n }\n\n async fetchRecords(\n subjects: RecordSubject[],\n ): Promise<Map<string, RecordInfo>> {\n const appviewAuth = await this.appviewAuth(ids.ComAtprotoRepoGetRecord)\n if (!appviewAuth) return new Map()\n\n const fetched = await Promise.all(\n subjects.map(async (subject) => {\n const uri = new AtUri(subject.uri)\n const params = {\n repo: uri.hostname,\n collection: uri.collection,\n rkey: uri.rkey,\n cid: subject.cid,\n }\n return this.fetchRecord(params, appviewAuth)\n }),\n )\n return fetched.reduce((acc, cur) => {\n if (!cur) return acc\n const data = cur.data\n const indexedAt = new Date().toISOString()\n return acc.set(data.uri, { ...data, cid: data.cid ?? '', indexedAt })\n }, new Map<string, RecordInfo>())\n }\n\n async records(subjects: RecordSubject[]) {\n const uris = subjects.map((record) => new AtUri(record.uri))\n const dids = uris.map((u) => u.hostname)\n\n const [repos, subjectStatuses, records] = await Promise.all([\n this.repos(dids),\n this.getSubjectStatus(subjects.map((s) => s.uri)),\n this.fetchRecords(subjects),\n ])\n\n const map = new Map<\n string,\n // Because the result of this function is used to build RecordViewDetail,\n // we explicitly type the result without the $type field, so can be used\n // as both RecordView and RecordViewDetail, without having to cast or\n // override the $type field.\n RecordView & {\n $type?: undefined\n moderation: { $type?: undefined; subjectStatus?: SubjectStatusView }\n }\n >()\n\n for (const uri of uris) {\n const repo = repos.get(uri.hostname)\n if (!repo) continue\n const record = records.get(uri.toString())\n if (!record) continue\n const subjectStatus = subjectStatuses.get(uri.toString())\n\n map.set(uri.toString(), {\n uri: uri.toString(),\n cid: record.cid,\n value: record.value,\n blobCids: findBlobRefs(record.value).map((blob) => blob.ref.toString()),\n indexedAt: record.indexedAt,\n repo,\n moderation: {\n subjectStatus: subjectStatus\n ? this.formatSubjectStatus(subjectStatus)\n : undefined,\n },\n })\n }\n\n return map\n }\n\n async recordDetails(\n subjects: RecordSubject[],\n labelers?: ParsedLabelers,\n ): Promise<Map<string, RecordViewDetail>> {\n const results = new Map<string, RecordViewDetail>()\n if (!subjects.length) {\n return results\n }\n\n const subjectUris = subjects.map((s) => s.uri)\n const [records, subjectStatusesResult, localLabels, externalLabels] =\n await Promise.all([\n this.records(subjects),\n this.getSubjectStatus(subjectUris),\n this.labels(subjectUris),\n this.getExternalLabels(subjectUris, labelers),\n ])\n\n await Promise.all(\n Array.from(records.entries()).map(async ([uri, record]) => {\n const selfLabels = getSelfLabels({\n uri: record.uri,\n cid: record.cid,\n record: record.value,\n })\n\n const status = subjectStatusesResult.get(uri)\n const blobs = await this.blob(findBlobRefs(record.value))\n\n results.set(uri, {\n ...record,\n blobs,\n moderation: {\n ...record.moderation,\n subjectStatus: status\n ? this.formatSubjectStatus(status)\n : undefined,\n },\n labels: [\n ...(localLabels.get(uri) || []),\n ...selfLabels,\n ...(externalLabels.get(uri) || []),\n ],\n })\n }),\n )\n\n return results\n }\n\n async getExternalLabels(\n subjects: string[],\n labelers?: ParsedLabelers,\n ): Promise<Map<string, Label[]>> {\n const results = new Map<string, Label[]>()\n if (!labelers?.dids.length && !labelers?.redact.size) return results\n try {\n const {\n data: { labels },\n } = await this.appviewAgent.com.atproto.label.queryLabels({\n uriPatterns: subjects,\n sources: labelers.dids,\n })\n labels.forEach((label) => {\n if (!results.has(label.uri)) {\n results.set(label.uri, [label])\n return\n }\n results.get(label.uri)?.push(label)\n })\n return results\n } catch (err) {\n httpLogger.error(\n { err, subjects, labelers },\n 'failed to resolve labels from appview',\n )\n return results\n }\n }\n\n formatReport(report: ModerationEventRowWithHandle): ReportOutput {\n return {\n id: report.id,\n createdAt: report.createdAt,\n // Ideally, we would never have a report entry that does not have a reasonType but at the schema level\n // we are not guarantying that so in whatever case, if we end up with such entries, default to 'other'\n reasonType: report.meta?.reportType\n ? (report.meta?.reportType as string)\n : REASONOTHER,\n reason: report.comment ?? undefined,\n reportedBy: report.createdBy,\n subject: subjectFromEventRow(report).lex() as ReportOutput['subject'],\n }\n }\n // Partial view for subjects\n\n async subject(subject: string): Promise<SubjectView> {\n if (subject.startsWith('did:')) {\n const repos = await this.repos([subject])\n const repo = repos.get(subject)\n if (repo) {\n return {\n ...repo,\n $type: 'tools.ozone.moderation.defs#repoView',\n }\n } else {\n return {\n $type: 'tools.ozone.moderation.defs#repoViewNotFound',\n did: subject,\n }\n }\n } else {\n const records = await this.records([{ uri: subject }])\n const record = records.get(subject)\n if (record) {\n return {\n ...record,\n $type: 'tools.ozone.moderation.defs#recordView',\n }\n } else {\n return {\n $type: 'tools.ozone.moderation.defs#recordViewNotFound',\n uri: subject,\n }\n }\n }\n }\n\n // Partial view for blobs\n\n async blob(blobs: BlobRef[]): Promise<BlobView[]> {\n if (!blobs.length) return []\n const { ref } = this.db.db.dynamic\n const modStatusResults = await moderationSubjectStatusQueryBuilder(\n this.db.db,\n )\n .where(\n sql<string>`${ref(\n 'moderation_subject_status.blobCids',\n )} @> ${JSON.stringify(blobs.map((blob) => blob.ref.toString()))}`,\n )\n .executeTakeFirst()\n\n const statusByCid = (modStatusResults?.blobCids || [])?.reduce(\n (acc, cur) => Object.assign(acc, { [cur]: modStatusResults }),\n {},\n )\n // Intentionally missing details field, since we don't have any on appview.\n // We also don't know when the blob was created, so we use a canned creation time.\n const unknownTime = new Date(0).toISOString()\n return blobs.map((blob) => {\n const cid = blob.ref.toString()\n const subjectStatus = statusByCid[cid]\n ? this.formatSubjectStatus(statusByCid[cid])\n : undefined\n\n return {\n cid,\n mimeType: blob.mimeType,\n size: blob.size,\n createdAt: unknownTime,\n moderation: {\n subjectStatus,\n },\n }\n })\n }\n\n async labels(\n subjects: string[],\n includeNeg?: boolean,\n ): Promise<Map<string, Label[]>> {\n const now = new Date().toISOString()\n const labels = new Map<string, Label[]>()\n const res = await this.db.db\n .selectFrom('label')\n .where('label.uri', 'in', subjects)\n .where((qb) =>\n qb.where('label.exp', 'is', null).orWhere('label.exp', '>', now),\n )\n .if(!includeNeg, (qb) => qb.where('neg', '=', false))\n .selectAll()\n .execute()\n\n await Promise.all(\n res.map(async (labelRow) => {\n const signedLabel = await this.formatLabelAndEnsureSig(labelRow)\n\n const current = labels.get(labelRow.uri)\n if (current) current.push(signedLabel)\n else labels.set(labelRow.uri, [signedLabel])\n }),\n )\n return labels\n }\n\n async formatLabelAndEnsureSig(row: LabelRow) {\n const formatted = formatLabel(row)\n if (!!row.sig && row.signingKeyId === this.signingKeyId) {\n return formatted\n }\n const signed = await signLabel(formatted, this.signingKey)\n try {\n await this.db.db\n .updateTable('label')\n .set({ sig: Buffer.from(signed.sig), signingKeyId: this.signingKeyId })\n .where('id', '=', row.id)\n .execute()\n } catch (err) {\n dbLogger.error({ err, label: row }, 'failed to update resigned label')\n }\n return signed\n }\n\n async getSubjectStatus(\n subjects: string[],\n ): Promise<Map<string, ModerationSubjectStatusRowWithHandle>> {\n if (!subjects.length) return new Map()\n\n const parsedSubjects = subjects.map(parseSubjectId)\n\n const builder = moderationSubjectStatusQueryBuilder(this.db.db)\n //\n .where((qb) => {\n for (const sub of parsedSubjects) {\n qb = qb.orWhere((qb) =>\n qb\n .where('moderation_subject_status.did', '=', sub.did)\n .where(\n 'moderation_subject_status.recordPath',\n '=',\n sub.recordPath ?? '',\n ),\n )\n }\n return qb\n })\n\n const [statusRes, accountsByDid] = await Promise.all([\n builder.execute(),\n this.getAccoutInfosByDid(parsedSubjects.map((s) => s.did)),\n ])\n\n return new Map(\n statusRes.map((row): [string, ModerationSubjectStatusRowWithHandle] => {\n const subjectId = formatSubjectId(row.did, row.recordPath)\n const handle = accountsByDid.get(row.did)?.handle ?? INVALID_HANDLE\n return [subjectId, { ...row, handle }]\n }),\n )\n }\n\n formatSubjectStatus(\n status: ModerationSubjectStatusRowWithHandle,\n ): SubjectStatusView {\n const statusView: SubjectStatusView = {\n id: status.id,\n reviewState: status.reviewState,\n createdAt: status.createdAt,\n updatedAt: status.updatedAt,\n comment: status.comment ?? undefined,\n lastReviewedBy: status.lastReviewedBy ?? undefined,\n lastReviewedAt: status.lastReviewedAt ?? undefined,\n lastReportedAt: status.lastReportedAt ?? undefined,\n lastAppealedAt: status.lastAppealedAt ?? undefined,\n muteUntil: status.muteUntil ?? undefined,\n muteReportingUntil: status.muteReportingUntil ?? undefined,\n suspendUntil: status.suspendUntil ?? undefined,\n takendown: status.takendown ?? undefined,\n appealed: status.appealed ?? undefined,\n subjectRepoHandle: status.handle ?? undefined,\n subjectBlobCids: status.blobCids || [],\n tags: status.tags || [],\n priorityScore: status.priorityScore,\n ageAssuranceState: status.ageAssuranceState ?? undefined,\n ageAssuranceUpdatedBy: status.ageAssuranceUpdatedBy ?? undefined,\n subject: subjectFromStatusRow(\n status,\n ).lex() as SubjectStatusView['subject'],\n\n accountStats: {\n // Explicitly typing to allow for easy manipulation (e.g. to strip from tests snapshots)\n $type: 'tools.ozone.moderation.defs#accountStats',\n\n // account_events_stats\n reportCount: status.reportCount ?? undefined,\n appealCount: status.appealCount ?? undefined,\n suspendCount: status.suspendCount ?? undefined,\n takedownCount: status.takedownCount ?? undefined,\n escalateCount: status.escalateCount ?? undefined,\n },\n\n recordsStats: {\n // Explicitly typing to allow for easy manipulation (e.g. to strip from tests snapshots)\n $type: 'tools.ozone.moderation.defs#recordsStats',\n\n // account_record_events_stats\n totalReports: status.totalReports ?? undefined,\n reportedCount: status.reportedCount ?? undefined,\n escalatedCount: status.escalatedCount ?? undefined,\n appealedCount: status.appealedCount ?? undefined,\n\n // account_record_status_stats\n subjectCount: status.subjectCount ?? undefined,\n pendingCount: status.pendingCount ?? undefined,\n processedCount: status.processedCount ?? undefined,\n takendownCount: status.takendownCount ?? undefined,\n },\n\n accountStrike:\n status.strikeCount !== null || status.totalStrikeCount !== null\n ? {\n $type: 'tools.ozone.moderation.defs#accountStrike',\n activeStrikeCount: status.strikeCount ?? undefined,\n totalStrikeCount: status.totalStrikeCount ?? undefined,\n firstStrikeAt: status.firstStrikeAt ?? undefined,\n lastStrikeAt: status.lastStrikeAt ?? undefined,\n }\n : undefined,\n }\n\n if (status.recordPath !== '') {\n statusView.hosting = {\n $type: 'tools.ozone.moderation.defs#recordHosting',\n updatedAt: status.hostingUpdatedAt ?? undefined,\n deletedAt: status.hostingDeletedAt ?? undefined,\n status: status.hostingStatus ?? 'unknown',\n }\n } else {\n statusView.hosting = {\n $type: 'tools.ozone.moderation.defs#accountHosting',\n updatedAt: status.hostingUpdatedAt ?? undefined,\n deletedAt: status.hostingDeletedAt ?? undefined,\n status: status.hostingStatus ?? 'unknown',\n deactivatedAt: status.hostingDeactivatedAt ?? undefined,\n reactivatedAt: status.hostingReactivatedAt ?? undefined,\n }\n }\n\n return statusView\n }\n\n async fetchAuthorFeed(actor: string): Promise<FeedViewPost[]> {\n const auth = await this.appviewAuth(ids.AppBskyFeedGetAuthorFeed)\n if (!auth) return []\n const {\n data: { feed },\n } = await this.appviewAgent.app.bsky.feed.getAuthorFeed({ actor }, auth)\n\n return feed\n }\n\n async getProfiles(dids: string[]) {\n const profiles = new Map<string, AppBskyActorDefs.ProfileViewDetailed>()\n\n const auth = await this.appviewAuth(ids.AppBskyActorGetProfiles)\n if (!auth) return profiles\n\n for (const actors of chunkArray(dids, 25)) {\n const { data } = await this.appviewAgent.getProfiles({ actors }, auth)\n\n data.profiles.forEach((profile) => {\n profiles.set(profile.did, profile)\n })\n }\n\n return profiles\n }\n}\n\ntype RecordSubject = { uri: string; cid?: string }\n\ntype SubjectView = ModEventViewDetail['subject']\n// @TODO tidy\n// type SubjectView = ModEventViewDetail['subject'] & ReportViewDetail['subject']\n\ntype RecordInfo = {\n uri: string\n cid: string\n value: Record<string, unknown>\n indexedAt: string\n}\n\nfunction parseSubjectId(subject: string): { did: string; recordPath?: string } {\n if (subject.startsWith('did:')) {\n return { did: subject }\n }\n const uri = new AtUri(subject)\n return { did: uri.hostname, recordPath: `${uri.collection}/${uri.rkey}` }\n}\n\nfunction formatSubjectId(did: string, recordPath?: string) {\n return recordPath ? `at://${did}/${recordPath}` : did\n}\n\nfunction findBlobRefs(value: unknown, refs: BlobRef[] = []) {\n if (value instanceof BlobRef) {\n refs.push(value)\n } else if (Array.isArray(value)) {\n value.forEach((val) => findBlobRefs(val, refs))\n } else if (value && typeof value === 'object') {\n Object.values(value).forEach((val) => findBlobRefs(val, refs))\n }\n return refs\n}\n\nexport function getSelfLabels(details: {\n uri: string | null\n cid: string | null\n record: Record<string, unknown> | null\n}): Label[] {\n const { uri, cid, record } = details\n if (!uri || !cid || !record) return []\n if (!isValidSelfLabels(record.labels)) return []\n const src = new AtUri(uri).host // record creator\n const cts =\n typeof record.createdAt === 'string'\n ? normalizeDatetimeAlways(record.createdAt)\n : new Date(0).toISOString()\n return record.labels.values.map(({ val }) => {\n return { src, uri, cid, val, cts }\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/mod-service/views.ts"],"names":[],"mappings":"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","sourcesContent":["import { sql } from 'kysely'\nimport {\n AppBskyActorDefs,\n AtpAgent,\n ComAtprotoRepoGetRecord,\n} from '@atproto/api'\nimport { chunkArray, dedupeStrs } from '@atproto/common'\nimport { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { BlobRef } from '@atproto/lexicon'\nimport { AtUri, INVALID_HANDLE, normalizeDatetimeAlways } from '@atproto/syntax'\nimport { Database } from '../db/index.js'\nimport { LabelRow } from '../db/schema/label.js'\nimport { ids } from '../lexicon/lexicons.js'\nimport { FeedViewPost } from '../lexicon/types/app/bsky/feed/defs.js'\nimport { AccountView } from '../lexicon/types/com/atproto/admin/defs.js'\nimport {\n Label,\n validateSelfLabels,\n} from '../lexicon/types/com/atproto/label/defs.js'\nimport { OutputSchema as ReportOutput } from '../lexicon/types/com/atproto/moderation/createReport.js'\nimport { REASONOTHER } from '../lexicon/types/com/atproto/moderation/defs.js'\nimport {\n BlobView,\n ModEventView,\n ModEventViewDetail,\n RecordView,\n RecordViewDetail,\n RepoView,\n SubjectStatusView,\n isAccountEvent,\n isAgeAssuranceEvent,\n isAgeAssuranceOverrideEvent,\n isIdentityEvent,\n isModEventAcknowledge,\n isModEventComment,\n isModEventEmail,\n isModEventEscalate,\n isModEventLabel,\n isModEventMute,\n isModEventMuteReporter,\n isModEventPriorityScore,\n isModEventReport,\n isModEventReverseTakedown,\n isModEventTag,\n isModEventTakedown,\n isRecordEvent,\n isScheduleTakedownEvent,\n} from '../lexicon/types/tools/ozone/moderation/defs.js'\nimport { Un$Typed, asPredicate } from '../lexicon/util.js'\nimport { dbLogger, httpLogger } from '../logger.js'\nimport { ParsedLabelers } from '../util.js'\nimport { moderationSubjectStatusQueryBuilder } from './status.js'\nimport { subjectFromEventRow, subjectFromStatusRow } from './subject.js'\nimport {\n ModerationEventRowWithHandle,\n ModerationSubjectStatusRowWithHandle,\n} from './types.js'\nimport { formatLabel, getPdsAgentForRepo, signLabel } from './util.js'\n\nconst isValidSelfLabels = asPredicate(validateSelfLabels)\n\nconst ifString = (val: unknown): string | undefined =>\n typeof val === 'string' ? val : undefined\nconst ifBoolean = (val: unknown): boolean | undefined =>\n typeof val === 'boolean' ? val : undefined\nconst ifNumber = (val: unknown): number | undefined =>\n typeof val === 'number' ? val : undefined\n\nexport type AuthHeaders = {\n headers: {\n authorization: string\n 'atproto-accept-labelers'?: string\n }\n}\n\nexport class ModerationViews {\n constructor(\n private db: Database,\n private signingKey: Keypair,\n private signingKeyId: number,\n private appviewAgent: AtpAgent,\n private appviewAuth: (method: string) => Promise<AuthHeaders>,\n public idResolver: IdResolver,\n public devMode?: boolean,\n ) {}\n\n async getAccoutInfosByDid(dids: string[]): Promise<Map<string, AccountView>> {\n if (dids.length === 0) return new Map()\n const auth = await this.appviewAuth(ids.ComAtprotoAdminGetAccountInfos)\n if (!auth) return new Map()\n try {\n const res = await this.appviewAgent.com.atproto.admin.getAccountInfos(\n {\n dids: dedupeStrs(dids),\n },\n auth,\n )\n return res.data.infos.reduce((acc, cur) => {\n return acc.set(cur.did, cur)\n }, new Map<string, AccountView>())\n } catch (err) {\n httpLogger.error(\n { err, dids },\n 'failed to resolve account infos from appview',\n )\n return new Map()\n }\n }\n\n async repos(dids: string[]): Promise<Map<string, RepoView>> {\n if (dids.length === 0) return new Map()\n const [infos, subjectStatuses] = await Promise.all([\n this.getAccoutInfosByDid(dids),\n this.getSubjectStatus(dids),\n ])\n\n return dids.reduce((acc, did) => {\n const info = infos.get(did)\n if (!info) return acc\n const status = subjectStatuses.get(did)\n return acc.set(did, {\n // No email or invite info on appview\n did,\n handle: info.handle,\n relatedRecords: info.relatedRecords ?? [],\n indexedAt: info.indexedAt,\n moderation: {\n subjectStatus: status ? this.formatSubjectStatus(status) : undefined,\n },\n })\n }, new Map<string, RepoView>())\n }\n\n formatEvent(row: ModerationEventRowWithHandle): Un$Typed<ModEventView> {\n const eventView: Un$Typed<ModEventView> = {\n id: row.id,\n event: {\n $type: row.action,\n comment: row.comment ?? undefined,\n },\n subject: subjectFromEventRow(row).lex(),\n subjectBlobCids: row.subjectBlobCids ?? [],\n createdBy: row.createdBy,\n createdAt: row.createdAt,\n subjectHandle: row.subjectHandle ?? undefined,\n creatorHandle: row.creatorHandle ?? undefined,\n modTool: row.modTool\n ? {\n name: row.modTool.name,\n meta: row.modTool.meta,\n }\n : undefined,\n }\n\n const { event } = eventView\n const meta = row.meta || {}\n\n if (\n isModEventMuteReporter(event) ||\n isModEventTakedown(event) ||\n isModEventLabel(event) ||\n isModEventMute(event)\n ) {\n event.durationInHours = row.durationInHours ?? undefined\n }\n\n if (\n (isModEventTakedown(event) || isModEventAcknowledge(event)) &&\n meta.acknowledgeAccountSubjects\n ) {\n event.acknowledgeAccountSubjects = ifBoolean(\n meta.acknowledgeAccountSubjects,\n )!\n }\n\n if (isModEventPriorityScore(event)) {\n event.score = ifNumber(meta?.priorityScore) ?? 0\n }\n\n if (\n isModEventTakedown(event) ||\n isModEventEmail(event) ||\n isModEventReverseTakedown(event)\n ) {\n if (typeof meta.policies === 'string' && meta.policies.length > 0) {\n event.policies = meta.policies.split(',')\n }\n\n event.strikeCount = ifNumber(row.strikeCount)\n event.severityLevel = ifString(row.severityLevel)\n\n if (isModEventTakedown(event) || isModEventEmail(event)) {\n event.strikeExpiresAt = ifString(row.strikeExpiresAt)\n }\n }\n\n if (isModEventTakedown(event)) {\n if (\n typeof meta.targetServices === 'string' &&\n meta.targetServices.length > 0\n ) {\n event.targetServices = meta.targetServices.split(',')\n }\n }\n\n if (isModEventLabel(event)) {\n event.createLabelVals = row.createLabelVals?.length\n ? row.createLabelVals.split(' ')\n : []\n event.negateLabelVals = row.negateLabelVals?.length\n ? row.negateLabelVals.split(' ')\n : []\n } else if (\n isModEventAcknowledge(event) ||\n isModEventTakedown(event) ||\n isModEventEscalate(event)\n ) {\n // This is for legacy data only, for new events, these types of events\n // won't have labels attached:\n\n if (row.createLabelVals?.length) {\n // @ts-expect-error legacy\n event.createLabelVals = row.createLabelVals.split(' ')\n }\n\n if (row.negateLabelVals?.length) {\n // @ts-expect-error legacy\n event.negateLabelVals = row.negateLabelVals.split(' ')\n }\n }\n\n if (isModEventReport(event)) {\n event.isReporterMuted = !!meta.isReporterMuted\n event.reportType = ifString(meta.reportType)!\n }\n\n if (isModEventEmail(event)) {\n event.content = ifString(meta.content)!\n event.subjectLine = ifString(meta.subjectLine)!\n event.isDelivered = ifBoolean(meta.isDelivered)\n }\n\n if (isModEventComment(event) && meta.sticky) {\n event.sticky = true\n }\n\n if (isModEventTag(event)) {\n event.add = row.addedTags || []\n event.remove = row.removedTags || []\n }\n\n if (isAccountEvent(event)) {\n event.active = !!meta.active\n event.timestamp = ifString(meta.timestamp)!\n event.status = ifString(meta.status)!\n }\n\n if (isIdentityEvent(event)) {\n event.timestamp = ifString(meta.timestamp)!\n event.handle = ifString(meta.handle)!\n event.pdsHost = ifString(meta.pdsHost)!\n event.tombstone = !!meta.tombstone\n }\n\n if (isRecordEvent(event)) {\n event.op = ifString(meta.op)!\n event.cid = ifString(meta.cid)!\n event.timestamp = ifString(meta.timestamp)!\n }\n\n if (isAgeAssuranceEvent(event)) {\n event.status = ifString(meta.status)!\n event.access = ifString(meta.access)!\n event.createdAt = ifString(meta.createdAt)!\n event.attemptId = ifString(meta.attemptId)!\n event.initIp = ifString(meta.initIp)\n event.initUa = ifString(meta.initUa)\n event.completeIp = ifString(meta.completeIp)\n event.completeUa = ifString(meta.completeUa)\n }\n\n if (isAgeAssuranceOverrideEvent(event)) {\n event.status = ifString(meta.status)!\n event.access = ifString(meta.access)!\n }\n\n if (isScheduleTakedownEvent(event)) {\n event.executeAt = ifString(meta.executeAt)\n event.executeAfter = ifString(meta.executeAfter)\n event.executeUntil = ifString(meta.executeUntil)\n }\n\n return eventView\n }\n\n async eventDetail(\n result: ModerationEventRowWithHandle,\n ): Promise<ModEventViewDetail> {\n const subjectId =\n result.subjectType === 'com.atproto.admin.defs#repoRef'\n ? result.subjectDid\n : result.subjectUri\n if (!subjectId) {\n throw new Error(`Bad subject: ${result.id}`)\n }\n const subject = await this.subject(subjectId)\n const eventView = this.formatEvent(result)\n const allBlobs = 'value' in subject ? findBlobRefs(subject.value) : []\n const subjectBlobs = await this.blob(\n allBlobs.filter((blob) =>\n eventView.subjectBlobCids.includes(blob.ref.toString()),\n ),\n )\n return {\n ...eventView,\n subject,\n subjectBlobs,\n }\n }\n\n async repoDetails(\n dids: string[],\n labelers?: ParsedLabelers,\n ): Promise<Map<string, RepoView>> {\n const results = new Map<string, RepoView>()\n if (!dids.length) {\n return results\n }\n\n const [repos, localLabels, externalLabels] = await Promise.all([\n this.repos(dids),\n this.labels(dids),\n this.getExternalLabels(dids, labelers),\n ])\n\n repos.forEach((repo, did) => {\n const labels = [\n ...(localLabels.get(did) || []),\n ...(externalLabels.get(did) || []),\n ]\n const repoView = {\n ...repo,\n labels,\n moderation: {\n ...repo.moderation,\n },\n }\n results.set(did, repoView)\n })\n\n return results\n }\n\n async fetchRecord(\n params: ComAtprotoRepoGetRecord.QueryParams,\n appviewAuth: AuthHeaders,\n ) {\n try {\n const record = await this.appviewAgent.com.atproto.repo.getRecord(\n params,\n appviewAuth,\n )\n return record\n } catch (err) {\n if (err instanceof ComAtprotoRepoGetRecord.RecordNotFoundError) {\n // If pds fetch fails, just return null regardless of the error\n try {\n const { agent: pdsAgent } = await getPdsAgentForRepo(\n this.idResolver,\n params.repo,\n this.devMode,\n )\n if (!pdsAgent) {\n return null\n }\n\n const record = await pdsAgent.com.atproto.repo.getRecord(params)\n return record\n } catch (error) {\n return null\n }\n }\n\n return null\n }\n }\n\n async fetchRecords(\n subjects: RecordSubject[],\n ): Promise<Map<string, RecordInfo>> {\n const appviewAuth = await this.appviewAuth(ids.ComAtprotoRepoGetRecord)\n if (!appviewAuth) return new Map()\n\n const fetched = await Promise.all(\n subjects.map(async (subject) => {\n const uri = new AtUri(subject.uri)\n const params = {\n repo: uri.hostname,\n collection: uri.collection,\n rkey: uri.rkey,\n cid: subject.cid,\n }\n return this.fetchRecord(params, appviewAuth)\n }),\n )\n return fetched.reduce((acc, cur) => {\n if (!cur) return acc\n const data = cur.data\n const indexedAt = new Date().toISOString()\n return acc.set(data.uri, { ...data, cid: data.cid ?? '', indexedAt })\n }, new Map<string, RecordInfo>())\n }\n\n async records(subjects: RecordSubject[]) {\n const uris = subjects.map((record) => new AtUri(record.uri))\n const dids = uris.map((u) => u.hostname)\n\n const [repos, subjectStatuses, records] = await Promise.all([\n this.repos(dids),\n this.getSubjectStatus(subjects.map((s) => s.uri)),\n this.fetchRecords(subjects),\n ])\n\n const map = new Map<\n string,\n // Because the result of this function is used to build RecordViewDetail,\n // we explicitly type the result without the $type field, so can be used\n // as both RecordView and RecordViewDetail, without having to cast or\n // override the $type field.\n RecordView & {\n $type?: undefined\n moderation: { $type?: undefined; subjectStatus?: SubjectStatusView }\n }\n >()\n\n for (const uri of uris) {\n const repo = repos.get(uri.hostname)\n if (!repo) continue\n const record = records.get(uri.toString())\n if (!record) continue\n const subjectStatus = subjectStatuses.get(uri.toString())\n\n map.set(uri.toString(), {\n uri: uri.toString(),\n cid: record.cid,\n value: record.value,\n blobCids: findBlobRefs(record.value).map((blob) => blob.ref.toString()),\n indexedAt: record.indexedAt,\n repo,\n moderation: {\n subjectStatus: subjectStatus\n ? this.formatSubjectStatus(subjectStatus)\n : undefined,\n },\n })\n }\n\n return map\n }\n\n async recordDetails(\n subjects: RecordSubject[],\n labelers?: ParsedLabelers,\n ): Promise<Map<string, RecordViewDetail>> {\n const results = new Map<string, RecordViewDetail>()\n if (!subjects.length) {\n return results\n }\n\n const subjectUris = subjects.map((s) => s.uri)\n const [records, subjectStatusesResult, localLabels, externalLabels] =\n await Promise.all([\n this.records(subjects),\n this.getSubjectStatus(subjectUris),\n this.labels(subjectUris),\n this.getExternalLabels(subjectUris, labelers),\n ])\n\n await Promise.all(\n Array.from(records.entries()).map(async ([uri, record]) => {\n const selfLabels = getSelfLabels({\n uri: record.uri,\n cid: record.cid,\n record: record.value,\n })\n\n const status = subjectStatusesResult.get(uri)\n const blobs = await this.blob(findBlobRefs(record.value))\n\n results.set(uri, {\n ...record,\n blobs,\n moderation: {\n ...record.moderation,\n subjectStatus: status\n ? this.formatSubjectStatus(status)\n : undefined,\n },\n labels: [\n ...(localLabels.get(uri) || []),\n ...selfLabels,\n ...(externalLabels.get(uri) || []),\n ],\n })\n }),\n )\n\n return results\n }\n\n async getExternalLabels(\n subjects: string[],\n labelers?: ParsedLabelers,\n ): Promise<Map<string, Label[]>> {\n const results = new Map<string, Label[]>()\n if (!labelers?.dids.length && !labelers?.redact.size) return results\n try {\n const {\n data: { labels },\n } = await this.appviewAgent.com.atproto.label.queryLabels({\n uriPatterns: subjects,\n sources: labelers.dids,\n })\n labels.forEach((label) => {\n if (!results.has(label.uri)) {\n results.set(label.uri, [label])\n return\n }\n results.get(label.uri)?.push(label)\n })\n return results\n } catch (err) {\n httpLogger.error(\n { err, subjects, labelers },\n 'failed to resolve labels from appview',\n )\n return results\n }\n }\n\n formatReport(report: ModerationEventRowWithHandle): ReportOutput {\n return {\n id: report.id,\n createdAt: report.createdAt,\n // Ideally, we would never have a report entry that does not have a reasonType but at the schema level\n // we are not guarantying that so in whatever case, if we end up with such entries, default to 'other'\n reasonType: report.meta?.reportType\n ? (report.meta?.reportType as string)\n : REASONOTHER,\n reason: report.comment ?? undefined,\n reportedBy: report.createdBy,\n subject: subjectFromEventRow(report).lex() as ReportOutput['subject'],\n }\n }\n // Partial view for subjects\n\n async subject(subject: string): Promise<SubjectView> {\n if (subject.startsWith('did:')) {\n const repos = await this.repos([subject])\n const repo = repos.get(subject)\n if (repo) {\n return {\n ...repo,\n $type: 'tools.ozone.moderation.defs#repoView',\n }\n } else {\n return {\n $type: 'tools.ozone.moderation.defs#repoViewNotFound',\n did: subject,\n }\n }\n } else {\n const records = await this.records([{ uri: subject }])\n const record = records.get(subject)\n if (record) {\n return {\n ...record,\n $type: 'tools.ozone.moderation.defs#recordView',\n }\n } else {\n return {\n $type: 'tools.ozone.moderation.defs#recordViewNotFound',\n uri: subject,\n }\n }\n }\n }\n\n // Partial view for blobs\n\n async blob(blobs: BlobRef[]): Promise<BlobView[]> {\n if (!blobs.length) return []\n const { ref } = this.db.db.dynamic\n const modStatusResults = await moderationSubjectStatusQueryBuilder(\n this.db.db,\n )\n .where(\n sql<string>`${ref(\n 'moderation_subject_status.blobCids',\n )} @> ${JSON.stringify(blobs.map((blob) => blob.ref.toString()))}`,\n )\n .executeTakeFirst()\n\n const statusByCid = (modStatusResults?.blobCids || [])?.reduce(\n (acc, cur) => Object.assign(acc, { [cur]: modStatusResults }),\n {},\n )\n // Intentionally missing details field, since we don't have any on appview.\n // We also don't know when the blob was created, so we use a canned creation time.\n const unknownTime = new Date(0).toISOString()\n return blobs.map((blob) => {\n const cid = blob.ref.toString()\n const subjectStatus = statusByCid[cid]\n ? this.formatSubjectStatus(statusByCid[cid])\n : undefined\n\n return {\n cid,\n mimeType: blob.mimeType,\n size: blob.size,\n createdAt: unknownTime,\n moderation: {\n subjectStatus,\n },\n }\n })\n }\n\n async labels(\n subjects: string[],\n includeNeg?: boolean,\n ): Promise<Map<string, Label[]>> {\n const now = new Date().toISOString()\n const labels = new Map<string, Label[]>()\n const res = await this.db.db\n .selectFrom('label')\n .where('label.uri', 'in', subjects)\n .where((qb) =>\n qb.where('label.exp', 'is', null).orWhere('label.exp', '>', now),\n )\n .if(!includeNeg, (qb) => qb.where('neg', '=', false))\n .selectAll()\n .execute()\n\n await Promise.all(\n res.map(async (labelRow) => {\n const signedLabel = await this.formatLabelAndEnsureSig(labelRow)\n\n const current = labels.get(labelRow.uri)\n if (current) current.push(signedLabel)\n else labels.set(labelRow.uri, [signedLabel])\n }),\n )\n return labels\n }\n\n async formatLabelAndEnsureSig(row: LabelRow) {\n const formatted = formatLabel(row)\n if (!!row.sig && row.signingKeyId === this.signingKeyId) {\n return formatted\n }\n const signed = await signLabel(formatted, this.signingKey)\n try {\n await this.db.db\n .updateTable('label')\n .set({ sig: Buffer.from(signed.sig), signingKeyId: this.signingKeyId })\n .where('id', '=', row.id)\n .execute()\n } catch (err) {\n dbLogger.error({ err, label: row }, 'failed to update resigned label')\n }\n return signed\n }\n\n async getSubjectStatus(\n subjects: string[],\n ): Promise<Map<string, ModerationSubjectStatusRowWithHandle>> {\n if (!subjects.length) return new Map()\n\n const parsedSubjects = subjects.map(parseSubjectId)\n\n const builder = moderationSubjectStatusQueryBuilder(this.db.db)\n //\n .where((qb) => {\n for (const sub of parsedSubjects) {\n qb = qb.orWhere((qb) =>\n qb\n .where('moderation_subject_status.did', '=', sub.did)\n .where(\n 'moderation_subject_status.recordPath',\n '=',\n sub.recordPath ?? '',\n ),\n )\n }\n return qb\n })\n\n const [statusRes, accountsByDid] = await Promise.all([\n builder.execute(),\n this.getAccoutInfosByDid(parsedSubjects.map((s) => s.did)),\n ])\n\n return new Map(\n statusRes.map((row): [string, ModerationSubjectStatusRowWithHandle] => {\n const subjectId = formatSubjectId(row.did, row.recordPath)\n const handle = accountsByDid.get(row.did)?.handle ?? INVALID_HANDLE\n return [subjectId, { ...row, handle }]\n }),\n )\n }\n\n formatSubjectStatus(\n status: ModerationSubjectStatusRowWithHandle,\n ): SubjectStatusView {\n const statusView: SubjectStatusView = {\n id: status.id,\n reviewState: status.reviewState,\n createdAt: status.createdAt,\n updatedAt: status.updatedAt,\n comment: status.comment ?? undefined,\n lastReviewedBy: status.lastReviewedBy ?? undefined,\n lastReviewedAt: status.lastReviewedAt ?? undefined,\n lastReportedAt: status.lastReportedAt ?? undefined,\n lastAppealedAt: status.lastAppealedAt ?? undefined,\n muteUntil: status.muteUntil ?? undefined,\n muteReportingUntil: status.muteReportingUntil ?? undefined,\n suspendUntil: status.suspendUntil ?? undefined,\n takendown: status.takendown ?? undefined,\n appealed: status.appealed ?? undefined,\n subjectRepoHandle: status.handle ?? undefined,\n subjectBlobCids: status.blobCids || [],\n tags: status.tags || [],\n priorityScore: status.priorityScore,\n ageAssuranceState: status.ageAssuranceState ?? undefined,\n ageAssuranceUpdatedBy: status.ageAssuranceUpdatedBy ?? undefined,\n subject: subjectFromStatusRow(\n status,\n ).lex() as SubjectStatusView['subject'],\n\n accountStats: {\n // Explicitly typing to allow for easy manipulation (e.g. to strip from tests snapshots)\n $type: 'tools.ozone.moderation.defs#accountStats',\n\n // account_events_stats\n reportCount: status.reportCount ?? undefined,\n appealCount: status.appealCount ?? undefined,\n suspendCount: status.suspendCount ?? undefined,\n takedownCount: status.takedownCount ?? undefined,\n escalateCount: status.escalateCount ?? undefined,\n },\n\n recordsStats: {\n // Explicitly typing to allow for easy manipulation (e.g. to strip from tests snapshots)\n $type: 'tools.ozone.moderation.defs#recordsStats',\n\n // account_record_events_stats\n totalReports: status.totalReports ?? undefined,\n reportedCount: status.reportedCount ?? undefined,\n escalatedCount: status.escalatedCount ?? undefined,\n appealedCount: status.appealedCount ?? undefined,\n\n // account_record_status_stats\n subjectCount: status.subjectCount ?? undefined,\n pendingCount: status.pendingCount ?? undefined,\n processedCount: status.processedCount ?? undefined,\n takendownCount: status.takendownCount ?? undefined,\n },\n\n accountStrike:\n status.strikeCount !== null || status.totalStrikeCount !== null\n ? {\n $type: 'tools.ozone.moderation.defs#accountStrike',\n activeStrikeCount: status.strikeCount ?? undefined,\n totalStrikeCount: status.totalStrikeCount ?? undefined,\n firstStrikeAt: status.firstStrikeAt ?? undefined,\n lastStrikeAt: status.lastStrikeAt ?? undefined,\n }\n : undefined,\n }\n\n if (status.recordPath !== '') {\n statusView.hosting = {\n $type: 'tools.ozone.moderation.defs#recordHosting',\n updatedAt: status.hostingUpdatedAt ?? undefined,\n deletedAt: status.hostingDeletedAt ?? undefined,\n status: status.hostingStatus ?? 'unknown',\n }\n } else {\n statusView.hosting = {\n $type: 'tools.ozone.moderation.defs#accountHosting',\n updatedAt: status.hostingUpdatedAt ?? undefined,\n deletedAt: status.hostingDeletedAt ?? undefined,\n status: status.hostingStatus ?? 'unknown',\n deactivatedAt: status.hostingDeactivatedAt ?? undefined,\n reactivatedAt: status.hostingReactivatedAt ?? undefined,\n }\n }\n\n return statusView\n }\n\n async fetchAuthorFeed(actor: string): Promise<FeedViewPost[]> {\n const auth = await this.appviewAuth(ids.AppBskyFeedGetAuthorFeed)\n if (!auth) return []\n const {\n data: { feed },\n } = await this.appviewAgent.app.bsky.feed.getAuthorFeed({ actor }, auth)\n\n return feed\n }\n\n async getProfiles(dids: string[]) {\n const profiles = new Map<string, AppBskyActorDefs.ProfileViewDetailed>()\n\n const auth = await this.appviewAuth(ids.AppBskyActorGetProfiles)\n if (!auth) return profiles\n\n for (const actors of chunkArray(dids, 25)) {\n const { data } = await this.appviewAgent.getProfiles({ actors }, auth)\n\n data.profiles.forEach((profile) => {\n profiles.set(profile.did, profile)\n })\n }\n\n return profiles\n }\n}\n\ntype RecordSubject = { uri: string; cid?: string }\n\ntype SubjectView = ModEventViewDetail['subject']\n// @TODO tidy\n// type SubjectView = ModEventViewDetail['subject'] & ReportViewDetail['subject']\n\ntype RecordInfo = {\n uri: string\n cid: string\n value: Record<string, unknown>\n indexedAt: string\n}\n\nfunction parseSubjectId(subject: string): { did: string; recordPath?: string } {\n if (subject.startsWith('did:')) {\n return { did: subject }\n }\n const uri = new AtUri(subject)\n return { did: uri.hostname, recordPath: `${uri.collection}/${uri.rkey}` }\n}\n\nfunction formatSubjectId(did: string, recordPath?: string) {\n return recordPath ? `at://${did}/${recordPath}` : did\n}\n\nfunction findBlobRefs(value: unknown, refs: BlobRef[] = []) {\n if (value instanceof BlobRef) {\n refs.push(value)\n } else if (Array.isArray(value)) {\n value.forEach((val) => findBlobRefs(val, refs))\n } else if (value && typeof value === 'object') {\n Object.values(value).forEach((val) => findBlobRefs(val, refs))\n }\n return refs\n}\n\nexport function getSelfLabels(details: {\n uri: string | null\n cid: string | null\n record: Record<string, unknown> | null\n}): Label[] {\n const { uri, cid, record } = details\n if (!uri || !cid || !record) return []\n if (!isValidSelfLabels(record.labels)) return []\n const src = new AtUri(uri).host // record creator\n const cts =\n typeof record.createdAt === 'string'\n ? normalizeDatetimeAlways(record.createdAt)\n : new Date(0).toISOString()\n return record.labels.values.map(({ val }) => {\n return { src, uri, cid, val, cts }\n })\n}\n"]}
|
package/dist/queue/service.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Selectable } from 'kysely';
|
|
2
2
|
import { ToolsOzoneQueueDefs } from '@atproto/api';
|
|
3
|
-
import { Database } from '../db';
|
|
4
|
-
import { ReportQueue } from '../db/schema/report_queue';
|
|
3
|
+
import { Database } from '../db/index.js';
|
|
4
|
+
import { ReportQueue } from '../db/schema/report_queue.js';
|
|
5
5
|
export type QueueServiceCreator = (db: Database) => QueueService;
|
|
6
6
|
export declare class QueueService {
|
|
7
7
|
db: Database;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/queue/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/queue/service.ts"],"names":[],"mappings":"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"}
|
package/dist/queue/service.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const types_1 = require("../db/types");
|
|
10
|
-
const handle_report_update_1 = require("../report/handle-report-update");
|
|
11
|
-
const stats_1 = require("../report/stats");
|
|
12
|
-
const views_1 = require("../report/views");
|
|
1
|
+
import { sql } from 'kysely';
|
|
2
|
+
import { AtUri } from '@atproto/syntax';
|
|
3
|
+
import { InvalidRequestError } from '@atproto/xrpc-server';
|
|
4
|
+
import { TimeIdKeyset, paginate } from '../db/pagination.js';
|
|
5
|
+
import { jsonb } from '../db/types.js';
|
|
6
|
+
import { handleReportUpdate } from '../report/handle-report-update.js';
|
|
7
|
+
import { ReportStatsService } from '../report/stats.js';
|
|
8
|
+
import { viewQueueStats } from '../report/views.js';
|
|
13
9
|
const MOD_EVENT_REPORT_ACTION = 'tools.ozone.moderation.defs#modEventReport';
|
|
14
10
|
const REASON_OTHER = 'com.atproto.moderation.defs#reasonOther';
|
|
15
11
|
function resolveAssignment(subjectType, collection, reportType, queues, now) {
|
|
@@ -18,14 +14,9 @@ function resolveAssignment(subjectType, collection, reportType, queues, now) {
|
|
|
18
14
|
return { queueId: matched.id, queuedAt: now, status: 'queued' };
|
|
19
15
|
return { queueId: -1, queuedAt: null, status: 'open' };
|
|
20
16
|
}
|
|
21
|
-
class QueueService {
|
|
17
|
+
export class QueueService {
|
|
22
18
|
constructor(db) {
|
|
23
|
-
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true,
|
|
27
|
-
value: db
|
|
28
|
-
});
|
|
19
|
+
this.db = db;
|
|
29
20
|
}
|
|
30
21
|
static creator() {
|
|
31
22
|
return (db) => new QueueService(db);
|
|
@@ -46,7 +37,7 @@ class QueueService {
|
|
|
46
37
|
const collectionMatch = (collection ?? null) === existing.collection;
|
|
47
38
|
const reportTypesOverlap = reportTypes.some((rt) => existing.reportTypes.includes(rt));
|
|
48
39
|
if (subjectTypesOverlap && collectionMatch && reportTypesOverlap) {
|
|
49
|
-
throw new
|
|
40
|
+
throw new InvalidRequestError(`Queue configuration conflicts with existing queue: ${existing.name}`, 'ConflictingQueue');
|
|
50
41
|
}
|
|
51
42
|
}
|
|
52
43
|
}
|
|
@@ -56,9 +47,9 @@ class QueueService {
|
|
|
56
47
|
.insertInto('report_queue')
|
|
57
48
|
.values({
|
|
58
49
|
name,
|
|
59
|
-
subjectTypes:
|
|
50
|
+
subjectTypes: jsonb(subjectTypes),
|
|
60
51
|
collection: collection ?? null,
|
|
61
|
-
reportTypes:
|
|
52
|
+
reportTypes: jsonb(reportTypes),
|
|
62
53
|
description: description ?? null,
|
|
63
54
|
createdBy,
|
|
64
55
|
enabled: true,
|
|
@@ -127,17 +118,17 @@ class QueueService {
|
|
|
127
118
|
qb = qb.where('enabled', '=', enabled);
|
|
128
119
|
}
|
|
129
120
|
if (subjectType !== undefined) {
|
|
130
|
-
qb = qb.where(
|
|
121
|
+
qb = qb.where(sql `"subjectTypes" @> ${jsonb([subjectType])}`);
|
|
131
122
|
}
|
|
132
123
|
if (collection !== undefined) {
|
|
133
124
|
qb = qb.where('collection', '=', collection);
|
|
134
125
|
}
|
|
135
126
|
if (reportTypes && reportTypes.length > 0) {
|
|
136
|
-
const conditions = reportTypes.map((t) =>
|
|
137
|
-
qb = qb.where(
|
|
127
|
+
const conditions = reportTypes.map((t) => sql `"reportTypes" @> ${jsonb([t])}`);
|
|
128
|
+
qb = qb.where(sql `(${sql.join(conditions, sql ` OR `)})`);
|
|
138
129
|
}
|
|
139
|
-
const keyset = new
|
|
140
|
-
const paginatedBuilder =
|
|
130
|
+
const keyset = new TimeIdKeyset(ref('createdAt'), ref('id'));
|
|
131
|
+
const paginatedBuilder = paginate(qb, {
|
|
141
132
|
limit,
|
|
142
133
|
cursor,
|
|
143
134
|
keyset,
|
|
@@ -173,12 +164,12 @@ class QueueService {
|
|
|
173
164
|
};
|
|
174
165
|
}
|
|
175
166
|
async viewsWithStats(queues) {
|
|
176
|
-
const statsService = new
|
|
167
|
+
const statsService = new ReportStatsService(this.db);
|
|
177
168
|
const queueIds = queues.map((q) => q.id);
|
|
178
169
|
const statsMap = await statsService.getLiveStatsForQueues(queueIds);
|
|
179
170
|
return queues.map((queue) => {
|
|
180
171
|
const view = this.view(queue);
|
|
181
|
-
view.stats =
|
|
172
|
+
view.stats = viewQueueStats(statsMap.get(queue.id));
|
|
182
173
|
return view;
|
|
183
174
|
});
|
|
184
175
|
}
|
|
@@ -237,7 +228,7 @@ class QueueService {
|
|
|
237
228
|
// Existing-row UPDATE path uses handleReportUpdate so that already
|
|
238
229
|
// escalated/closed/etc. reports keep their status — only open → queued
|
|
239
230
|
// transitions emit a status change and an activity row.
|
|
240
|
-
const result =
|
|
231
|
+
const result = handleReportUpdate(report.status, { type: 'queue' });
|
|
241
232
|
const group = matchedByQueue.get(assignment.queueId) ?? [];
|
|
242
233
|
group.push({
|
|
243
234
|
id: report.id,
|
|
@@ -361,7 +352,7 @@ class QueueService {
|
|
|
361
352
|
let collection = null;
|
|
362
353
|
let recordPath = '';
|
|
363
354
|
if (event.subjectUri) {
|
|
364
|
-
const uri = new
|
|
355
|
+
const uri = new AtUri(event.subjectUri);
|
|
365
356
|
collection = uri.collection;
|
|
366
357
|
recordPath = `${uri.collection}/${uri.rkey}`;
|
|
367
358
|
}
|
|
@@ -411,8 +402,7 @@ class QueueService {
|
|
|
411
402
|
};
|
|
412
403
|
}
|
|
413
404
|
}
|
|
414
|
-
|
|
415
|
-
function findMatchingQueue(queues, subjectType, collection, reportType) {
|
|
405
|
+
export function findMatchingQueue(queues, subjectType, collection, reportType) {
|
|
416
406
|
if (!reportType)
|
|
417
407
|
return null;
|
|
418
408
|
for (const queue of queues) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/queue/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Selectable, sql } from 'kysely'\nimport { ToolsOzoneQueueDefs } from '@atproto/api'\nimport { AtUri } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { Database } from '../db'\nimport { TimeIdKeyset, paginate } from '../db/pagination'\nimport { ReportQueue } from '../db/schema/report_queue'\nimport { jsonb } from '../db/types'\nimport { handleReportUpdate } from '../report/handle-report-update'\nimport { ReportStatsService } from '../report/stats'\nimport { viewQueueStats } from '../report/views'\n\nconst MOD_EVENT_REPORT_ACTION = 'tools.ozone.moderation.defs#modEventReport'\nconst REASON_OTHER = 'com.atproto.moderation.defs#reasonOther'\n\ntype SubjectType = 'account' | 'record' | 'message'\n\ntype ResolvedAssignment = {\n queueId: number\n queuedAt: string | null\n status: 'queued' | 'open'\n}\n\nfunction resolveAssignment(\n subjectType: SubjectType,\n collection: string | null,\n reportType: string,\n queues: Selectable<ReportQueue>[],\n now: string,\n): ResolvedAssignment {\n const matched = findMatchingQueue(queues, subjectType, collection, reportType)\n if (matched) return { queueId: matched.id, queuedAt: now, status: 'queued' }\n return { queueId: -1, queuedAt: null, status: 'open' }\n}\n\nexport type QueueServiceCreator = (db: Database) => QueueService\n\nexport class QueueService {\n constructor(public db: Database) {}\n\n static creator() {\n return (db: Database) => new QueueService(db)\n }\n\n async checkConflict({\n subjectTypes,\n collection,\n reportTypes,\n excludeId,\n }: {\n subjectTypes: string[]\n collection?: string | null\n reportTypes: string[]\n excludeId?: number\n }): Promise<void> {\n // It's not ideal to load all rows and perform in memory checks in case we end up with a LOT of queues\n // but we are not foreseeing a lot of queue rows so this should be fine for the\n let qb = this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('deletedAt', 'is', null)\n\n if (excludeId !== undefined) {\n qb = qb.where('id', '!=', excludeId)\n }\n\n const existingQueues = await qb.execute()\n\n for (const existing of existingQueues) {\n const subjectTypesOverlap = subjectTypes.some((st) =>\n existing.subjectTypes.includes(st),\n )\n const collectionMatch = (collection ?? null) === existing.collection\n const reportTypesOverlap = reportTypes.some((rt) =>\n existing.reportTypes.includes(rt),\n )\n\n if (subjectTypesOverlap && collectionMatch && reportTypesOverlap) {\n throw new InvalidRequestError(\n `Queue configuration conflicts with existing queue: ${existing.name}`,\n 'ConflictingQueue',\n )\n }\n }\n }\n\n async create({\n name,\n subjectTypes,\n collection,\n reportTypes,\n description,\n createdBy,\n }: {\n name: string\n subjectTypes: string[]\n collection?: string | null\n reportTypes: string[]\n description?: string | null\n createdBy: string\n }): Promise<Selectable<ReportQueue>> {\n const now = new Date().toISOString()\n return await this.db.db\n .insertInto('report_queue')\n .values({\n name,\n subjectTypes: jsonb(subjectTypes),\n collection: collection ?? null,\n reportTypes: jsonb(reportTypes),\n description: description ?? null,\n createdBy,\n enabled: true,\n createdAt: now,\n updatedAt: now,\n })\n .returningAll()\n .executeTakeFirstOrThrow()\n }\n\n async getById(id: number): Promise<Selectable<ReportQueue> | undefined> {\n return await this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('id', '=', id)\n .where('deletedAt', 'is', null)\n .executeTakeFirst()\n }\n\n async getViewsByIds(\n ids: number[],\n ): Promise<Map<number, ToolsOzoneQueueDefs.QueueView>> {\n if (!ids.length) return new Map()\n const rows = await this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('id', 'in', ids)\n .execute()\n return new Map(rows.map((r) => [r.id, this.view(r)]))\n }\n\n async update(\n id: number,\n updates: { name?: string; enabled?: boolean; description?: string },\n ): Promise<Selectable<ReportQueue>> {\n const now = new Date().toISOString()\n return await this.db.db\n .updateTable('report_queue')\n .set({ ...updates, updatedAt: now })\n .where('id', '=', id)\n .returningAll()\n .executeTakeFirstOrThrow()\n }\n\n async delete(id: number): Promise<void> {\n const now = new Date().toISOString()\n await this.db.db\n .updateTable('report_queue')\n .set({ deletedAt: now })\n .where('id', '=', id)\n .execute()\n }\n\n async migrateReports(\n fromQueueId: number,\n toQueueId?: number,\n ): Promise<number> {\n const now = new Date().toISOString()\n const results = await this.db.db\n .updateTable('report')\n .set({\n queueId: toQueueId ?? -1,\n queuedAt: toQueueId ? now : null,\n updatedAt: now,\n })\n .where('queueId', '=', fromQueueId)\n .where('status', '!=', 'closed')\n .execute()\n return results.reduce((sum, r) => sum + Number(r.numUpdatedRows), 0)\n }\n\n async list({\n limit,\n cursor,\n enabled,\n subjectType,\n collection,\n reportTypes,\n }: {\n limit: number\n cursor?: string\n enabled?: boolean\n subjectType?: string\n collection?: string\n reportTypes?: string[]\n }): Promise<{ queues: Selectable<ReportQueue>[]; cursor?: string }> {\n const { ref } = this.db.db.dynamic\n let qb = this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('deletedAt', 'is', null)\n\n if (enabled !== undefined) {\n qb = qb.where('enabled', '=', enabled)\n }\n\n if (subjectType !== undefined) {\n qb = qb.where(sql`\"subjectTypes\" @> ${jsonb([subjectType])}`)\n }\n\n if (collection !== undefined) {\n qb = qb.where('collection', '=', collection)\n }\n\n if (reportTypes && reportTypes.length > 0) {\n const conditions = reportTypes.map(\n (t) => sql`\"reportTypes\" @> ${jsonb([t])}`,\n )\n qb = qb.where(sql`(${sql.join(conditions, sql` OR `)})`)\n }\n\n const keyset = new TimeIdKeyset(ref('createdAt'), ref('id'))\n const paginatedBuilder = paginate(qb, {\n limit,\n cursor,\n keyset,\n direction: 'asc',\n tryIndex: true,\n })\n\n const queues = await paginatedBuilder.execute()\n\n return {\n queues,\n cursor: keyset.packFromResult(queues),\n }\n }\n\n view(queue: Selectable<ReportQueue>): ToolsOzoneQueueDefs.QueueView {\n return {\n id: queue.id,\n name: queue.name,\n subjectTypes: queue.subjectTypes,\n collection: queue.collection ?? undefined,\n reportTypes: queue.reportTypes,\n description: queue.description ?? undefined,\n createdBy: queue.createdBy,\n createdAt: queue.createdAt,\n updatedAt: queue.updatedAt,\n enabled: queue.enabled,\n deletedAt: queue.deletedAt ?? undefined,\n stats: {\n pendingCount: 0,\n actionedCount: 0,\n escalatedCount: 0,\n inboundCount: 0,\n actionRate: 0,\n },\n }\n }\n\n async viewsWithStats(\n queues: Selectable<ReportQueue>[],\n ): Promise<ToolsOzoneQueueDefs.QueueView[]> {\n const statsService = new ReportStatsService(this.db)\n const queueIds = queues.map((q) => q.id)\n const statsMap = await statsService.getLiveStatsForQueues(queueIds)\n\n return queues.map((queue) => {\n const view = this.view(queue)\n view.stats = viewQueueStats(statsMap.get(queue.id))\n return view\n })\n }\n\n /**\n * Re-route a range of existing reports against the current queue config.\n * Used by the manual `tools.ozone.queue.routeReports` endpoint to pick up\n * reports after queues are created or modified. New reports are inserted\n * by the daemon via `insertReportsFromEvents`, not here.\n */\n async assignReportBatch(\n params: { start: number; end: number; limit: number },\n opts?: { includeUnmatched?: boolean; serviceDid?: string },\n ): Promise<{\n processed: number\n assigned: number\n unmatched: number\n maxId: number\n }> {\n const { queues } = await this.list({ limit: 1000, enabled: true })\n\n if (!queues.length) {\n return { processed: 0, assigned: 0, unmatched: 0, maxId: 0 }\n }\n\n let query = this.db.db\n .selectFrom('report as r')\n .select([\n 'r.id',\n 'r.status',\n 'r.reportType',\n 'r.recordPath',\n 'r.subjectMessageId',\n ])\n .where('r.status', '!=', 'closed')\n .where('r.id', '>=', params.start)\n .where('r.id', '<=', params.end)\n .orderBy('r.id', 'asc')\n .limit(params.limit)\n\n if (opts?.includeUnmatched) {\n query = query.where((qb) => {\n return qb.orWhere('r.queueId', 'is', null).orWhere('r.queueId', '=', -1)\n })\n } else {\n query = query.where('r.queueId', 'is', null)\n }\n\n const reports = await query.execute()\n\n if (!reports.length) {\n return { processed: 0, assigned: 0, unmatched: 0, maxId: 0 }\n }\n\n const now = new Date().toISOString()\n\n // Resolve each report's destination in memory — no DB calls in this loop\n type MatchedEntry = {\n id: number\n queueId: number\n nextStatus: string | null\n activity: { activityType: string; previousStatus: string } | null\n }\n\n const matchedByQueue = new Map<number, MatchedEntry[]>()\n const unmatchedIds: number[] = []\n let maxReportId = 0\n\n for (const report of reports) {\n const subjectType: SubjectType = report.subjectMessageId\n ? 'message'\n : report.recordPath\n ? 'record'\n : 'account'\n\n // recordPath is 'collection/rkey' for records, '' for accounts\n const slashIdx = report.recordPath.indexOf('/')\n const collection =\n slashIdx > 0 ? report.recordPath.slice(0, slashIdx) : null\n\n const assignment = resolveAssignment(\n subjectType,\n collection,\n report.reportType,\n queues,\n now,\n )\n\n if (assignment.queueId !== -1) {\n // Existing-row UPDATE path uses handleReportUpdate so that already\n // escalated/closed/etc. reports keep their status — only open → queued\n // transitions emit a status change and an activity row.\n const result = handleReportUpdate(report.status, { type: 'queue' })\n const group = matchedByQueue.get(assignment.queueId) ?? []\n group.push({\n id: report.id,\n queueId: assignment.queueId,\n nextStatus: result.nextStatus,\n activity: result.activity,\n })\n matchedByQueue.set(assignment.queueId, group)\n } else {\n unmatchedIds.push(report.id)\n }\n\n if (report.id > maxReportId) maxReportId = report.id\n }\n\n // Bulk UPDATE matched reports — split by whether status should change.\n // handleReportUpdate returns nextStatus only for open → queued;\n // other statuses keep their current status but still get routed.\n for (const [queueId, group] of matchedByQueue) {\n const withTransition = group\n .filter((r) => r.nextStatus !== null)\n .map((r) => r.id)\n const withoutTransition = group\n .filter((r) => r.nextStatus === null)\n .map((r) => r.id)\n\n if (withTransition.length) {\n await this.db.db\n .updateTable('report')\n .set({ queueId, queuedAt: now, status: 'queued', updatedAt: now })\n .where('id', 'in', withTransition)\n .execute()\n }\n if (withoutTransition.length) {\n await this.db.db\n .updateTable('report')\n .set({ queueId, queuedAt: now, updatedAt: now })\n .where('id', 'in', withoutTransition)\n .execute()\n }\n }\n\n // Bulk UPDATE unmatched reports — status stays unchanged\n if (unmatchedIds.length) {\n await this.db.db\n .updateTable('report')\n .set({ queueId: -1, queuedAt: null, updatedAt: now })\n .where('id', 'in', unmatchedIds)\n .execute()\n }\n\n // Bulk INSERT activities for matched reports that changed status.\n if (opts?.serviceDid) {\n const withActivities = [...matchedByQueue.values()]\n .flat()\n .filter((r) => r.activity !== null)\n if (withActivities.length) {\n await this.db.db\n .insertInto('report_activity')\n .values(\n withActivities.map((r) => ({\n reportId: r.id,\n activityType: r.activity!.activityType,\n previousStatus: r.activity!.previousStatus,\n internalNote: null,\n publicNote: null,\n meta: null,\n isAutomated: true,\n createdBy: opts.serviceDid!,\n createdAt: now,\n })),\n )\n .execute()\n }\n }\n\n const assigned = [...matchedByQueue.values()].reduce(\n (sum, g) => sum + g.length,\n 0,\n )\n\n return {\n processed: reports.length,\n assigned,\n unmatched: unmatchedIds.length,\n maxId: maxReportId,\n }\n }\n\n /**\n * Read newly-created modEventReport rows from `moderation_event` and\n * insert corresponding `report` rows with `queueId` already resolved.\n * Used by the queue-router daemon. Idempotent via `ON CONFLICT (eventId)\n * DO NOTHING` — safe to re-run on the same range.\n *\n * Even when no queues are configured, report rows are still inserted with\n * `queueId = -1` so the invariant \"every modEventReport has a `report` row\"\n * holds.\n */\n async insertReportsFromEvents(params: {\n cursor: number | null\n limit: number\n }): Promise<{\n processed: number\n assigned: number\n unmatched: number\n maxEventId: number\n }> {\n const { queues } = await this.list({ limit: 1000, enabled: true })\n\n let query = this.db.db\n .selectFrom('moderation_event')\n .select([\n 'id',\n 'subjectDid',\n 'subjectUri',\n 'subjectMessageId',\n 'meta',\n 'createdAt',\n ])\n .where('action', '=', MOD_EVENT_REPORT_ACTION)\n .orderBy('id', 'asc')\n .limit(params.limit)\n\n if (params.cursor !== null) {\n query = query.where('id', '>', params.cursor)\n }\n\n const events = await query.execute()\n\n if (!events.length) {\n return { processed: 0, assigned: 0, unmatched: 0, maxEventId: 0 }\n }\n\n const now = new Date().toISOString()\n let maxEventId = 0\n let assigned = 0\n let unmatched = 0\n\n const rows = events.map((event) => {\n const subjectType: SubjectType = event.subjectMessageId\n ? 'message'\n : event.subjectUri\n ? 'record'\n : 'account'\n\n let collection: string | null = null\n let recordPath = ''\n if (event.subjectUri) {\n const uri = new AtUri(event.subjectUri)\n collection = uri.collection\n recordPath = `${uri.collection}/${uri.rkey}`\n }\n\n const reportType =\n (event.meta?.reportType as string | undefined) ?? REASON_OTHER\n\n const assignment = resolveAssignment(\n subjectType,\n collection,\n reportType,\n queues,\n now,\n )\n\n if (assignment.queueId === -1) unmatched++\n else assigned++\n if (event.id > maxEventId) maxEventId = event.id\n\n const isMuted =\n !!event.meta?.isReporterMuted || !!event.meta?.isSubjectMuted\n\n return {\n eventId: event.id,\n queueId: assignment.queueId,\n queuedAt: assignment.queuedAt,\n actionEventIds: null,\n actionNote: null,\n isMuted,\n status: assignment.status,\n reportType,\n did: event.subjectDid,\n recordPath,\n subjectMessageId: event.subjectMessageId,\n createdAt: now,\n updatedAt: now,\n }\n })\n\n // ON CONFLICT (eventId) DO NOTHING covers any race where a report row\n // already exists for the event (e.g. transitional code paths or retries\n // after a crash mid-batch).\n await this.db.db\n .insertInto('report')\n .values(rows)\n .onConflict((oc) => oc.column('eventId').doNothing())\n .execute()\n\n // Activity rows are intentionally not emitted: a freshly-inserted report\n // has no prior state to \"transition\" from. Activity rows record state\n // changes, and being born already-queued is not a state change. This\n // matches `handleReportUpdate`'s design where activity is only emitted\n // on real transitions.\n\n return {\n processed: events.length,\n assigned,\n unmatched,\n maxEventId,\n }\n }\n}\n\nexport function findMatchingQueue(\n queues: Selectable<ReportQueue>[],\n subjectType: string,\n collection: string | null,\n reportType: string | undefined,\n): Selectable<ReportQueue> | null {\n if (!reportType) return null\n\n for (const queue of queues) {\n const subjectTypeMatch = queue.subjectTypes.includes(subjectType)\n const collectionMatch =\n subjectType === 'record' && queue.collection !== null\n ? (collection ?? null) === queue.collection\n : true\n const reportTypeMatch = queue.reportTypes.includes(reportType)\n\n if (subjectTypeMatch && collectionMatch && reportTypeMatch) {\n return queue\n }\n }\n\n return null\n}\n"]}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/queue/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Selectable, sql } from 'kysely'\nimport { ToolsOzoneQueueDefs } from '@atproto/api'\nimport { AtUri } from '@atproto/syntax'\nimport { InvalidRequestError } from '@atproto/xrpc-server'\nimport { Database } from '../db/index.js'\nimport { TimeIdKeyset, paginate } from '../db/pagination.js'\nimport { ReportQueue } from '../db/schema/report_queue.js'\nimport { jsonb } from '../db/types.js'\nimport { handleReportUpdate } from '../report/handle-report-update.js'\nimport { ReportStatsService } from '../report/stats.js'\nimport { viewQueueStats } from '../report/views.js'\n\nconst MOD_EVENT_REPORT_ACTION = 'tools.ozone.moderation.defs#modEventReport'\nconst REASON_OTHER = 'com.atproto.moderation.defs#reasonOther'\n\ntype SubjectType = 'account' | 'record' | 'message'\n\ntype ResolvedAssignment = {\n queueId: number\n queuedAt: string | null\n status: 'queued' | 'open'\n}\n\nfunction resolveAssignment(\n subjectType: SubjectType,\n collection: string | null,\n reportType: string,\n queues: Selectable<ReportQueue>[],\n now: string,\n): ResolvedAssignment {\n const matched = findMatchingQueue(queues, subjectType, collection, reportType)\n if (matched) return { queueId: matched.id, queuedAt: now, status: 'queued' }\n return { queueId: -1, queuedAt: null, status: 'open' }\n}\n\nexport type QueueServiceCreator = (db: Database) => QueueService\n\nexport class QueueService {\n constructor(public db: Database) {}\n\n static creator() {\n return (db: Database) => new QueueService(db)\n }\n\n async checkConflict({\n subjectTypes,\n collection,\n reportTypes,\n excludeId,\n }: {\n subjectTypes: string[]\n collection?: string | null\n reportTypes: string[]\n excludeId?: number\n }): Promise<void> {\n // It's not ideal to load all rows and perform in memory checks in case we end up with a LOT of queues\n // but we are not foreseeing a lot of queue rows so this should be fine for the\n let qb = this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('deletedAt', 'is', null)\n\n if (excludeId !== undefined) {\n qb = qb.where('id', '!=', excludeId)\n }\n\n const existingQueues = await qb.execute()\n\n for (const existing of existingQueues) {\n const subjectTypesOverlap = subjectTypes.some((st) =>\n existing.subjectTypes.includes(st),\n )\n const collectionMatch = (collection ?? null) === existing.collection\n const reportTypesOverlap = reportTypes.some((rt) =>\n existing.reportTypes.includes(rt),\n )\n\n if (subjectTypesOverlap && collectionMatch && reportTypesOverlap) {\n throw new InvalidRequestError(\n `Queue configuration conflicts with existing queue: ${existing.name}`,\n 'ConflictingQueue',\n )\n }\n }\n }\n\n async create({\n name,\n subjectTypes,\n collection,\n reportTypes,\n description,\n createdBy,\n }: {\n name: string\n subjectTypes: string[]\n collection?: string | null\n reportTypes: string[]\n description?: string | null\n createdBy: string\n }): Promise<Selectable<ReportQueue>> {\n const now = new Date().toISOString()\n return await this.db.db\n .insertInto('report_queue')\n .values({\n name,\n subjectTypes: jsonb(subjectTypes),\n collection: collection ?? null,\n reportTypes: jsonb(reportTypes),\n description: description ?? null,\n createdBy,\n enabled: true,\n createdAt: now,\n updatedAt: now,\n })\n .returningAll()\n .executeTakeFirstOrThrow()\n }\n\n async getById(id: number): Promise<Selectable<ReportQueue> | undefined> {\n return await this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('id', '=', id)\n .where('deletedAt', 'is', null)\n .executeTakeFirst()\n }\n\n async getViewsByIds(\n ids: number[],\n ): Promise<Map<number, ToolsOzoneQueueDefs.QueueView>> {\n if (!ids.length) return new Map()\n const rows = await this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('id', 'in', ids)\n .execute()\n return new Map(rows.map((r) => [r.id, this.view(r)]))\n }\n\n async update(\n id: number,\n updates: { name?: string; enabled?: boolean; description?: string },\n ): Promise<Selectable<ReportQueue>> {\n const now = new Date().toISOString()\n return await this.db.db\n .updateTable('report_queue')\n .set({ ...updates, updatedAt: now })\n .where('id', '=', id)\n .returningAll()\n .executeTakeFirstOrThrow()\n }\n\n async delete(id: number): Promise<void> {\n const now = new Date().toISOString()\n await this.db.db\n .updateTable('report_queue')\n .set({ deletedAt: now })\n .where('id', '=', id)\n .execute()\n }\n\n async migrateReports(\n fromQueueId: number,\n toQueueId?: number,\n ): Promise<number> {\n const now = new Date().toISOString()\n const results = await this.db.db\n .updateTable('report')\n .set({\n queueId: toQueueId ?? -1,\n queuedAt: toQueueId ? now : null,\n updatedAt: now,\n })\n .where('queueId', '=', fromQueueId)\n .where('status', '!=', 'closed')\n .execute()\n return results.reduce((sum, r) => sum + Number(r.numUpdatedRows), 0)\n }\n\n async list({\n limit,\n cursor,\n enabled,\n subjectType,\n collection,\n reportTypes,\n }: {\n limit: number\n cursor?: string\n enabled?: boolean\n subjectType?: string\n collection?: string\n reportTypes?: string[]\n }): Promise<{ queues: Selectable<ReportQueue>[]; cursor?: string }> {\n const { ref } = this.db.db.dynamic\n let qb = this.db.db\n .selectFrom('report_queue')\n .selectAll()\n .where('deletedAt', 'is', null)\n\n if (enabled !== undefined) {\n qb = qb.where('enabled', '=', enabled)\n }\n\n if (subjectType !== undefined) {\n qb = qb.where(sql`\"subjectTypes\" @> ${jsonb([subjectType])}`)\n }\n\n if (collection !== undefined) {\n qb = qb.where('collection', '=', collection)\n }\n\n if (reportTypes && reportTypes.length > 0) {\n const conditions = reportTypes.map(\n (t) => sql`\"reportTypes\" @> ${jsonb([t])}`,\n )\n qb = qb.where(sql`(${sql.join(conditions, sql` OR `)})`)\n }\n\n const keyset = new TimeIdKeyset(ref('createdAt'), ref('id'))\n const paginatedBuilder = paginate(qb, {\n limit,\n cursor,\n keyset,\n direction: 'asc',\n tryIndex: true,\n })\n\n const queues = await paginatedBuilder.execute()\n\n return {\n queues,\n cursor: keyset.packFromResult(queues),\n }\n }\n\n view(queue: Selectable<ReportQueue>): ToolsOzoneQueueDefs.QueueView {\n return {\n id: queue.id,\n name: queue.name,\n subjectTypes: queue.subjectTypes,\n collection: queue.collection ?? undefined,\n reportTypes: queue.reportTypes,\n description: queue.description ?? undefined,\n createdBy: queue.createdBy,\n createdAt: queue.createdAt,\n updatedAt: queue.updatedAt,\n enabled: queue.enabled,\n deletedAt: queue.deletedAt ?? undefined,\n stats: {\n pendingCount: 0,\n actionedCount: 0,\n escalatedCount: 0,\n inboundCount: 0,\n actionRate: 0,\n },\n }\n }\n\n async viewsWithStats(\n queues: Selectable<ReportQueue>[],\n ): Promise<ToolsOzoneQueueDefs.QueueView[]> {\n const statsService = new ReportStatsService(this.db)\n const queueIds = queues.map((q) => q.id)\n const statsMap = await statsService.getLiveStatsForQueues(queueIds)\n\n return queues.map((queue) => {\n const view = this.view(queue)\n view.stats = viewQueueStats(statsMap.get(queue.id))\n return view\n })\n }\n\n /**\n * Re-route a range of existing reports against the current queue config.\n * Used by the manual `tools.ozone.queue.routeReports` endpoint to pick up\n * reports after queues are created or modified. New reports are inserted\n * by the daemon via `insertReportsFromEvents`, not here.\n */\n async assignReportBatch(\n params: { start: number; end: number; limit: number },\n opts?: { includeUnmatched?: boolean; serviceDid?: string },\n ): Promise<{\n processed: number\n assigned: number\n unmatched: number\n maxId: number\n }> {\n const { queues } = await this.list({ limit: 1000, enabled: true })\n\n if (!queues.length) {\n return { processed: 0, assigned: 0, unmatched: 0, maxId: 0 }\n }\n\n let query = this.db.db\n .selectFrom('report as r')\n .select([\n 'r.id',\n 'r.status',\n 'r.reportType',\n 'r.recordPath',\n 'r.subjectMessageId',\n ])\n .where('r.status', '!=', 'closed')\n .where('r.id', '>=', params.start)\n .where('r.id', '<=', params.end)\n .orderBy('r.id', 'asc')\n .limit(params.limit)\n\n if (opts?.includeUnmatched) {\n query = query.where((qb) => {\n return qb.orWhere('r.queueId', 'is', null).orWhere('r.queueId', '=', -1)\n })\n } else {\n query = query.where('r.queueId', 'is', null)\n }\n\n const reports = await query.execute()\n\n if (!reports.length) {\n return { processed: 0, assigned: 0, unmatched: 0, maxId: 0 }\n }\n\n const now = new Date().toISOString()\n\n // Resolve each report's destination in memory — no DB calls in this loop\n type MatchedEntry = {\n id: number\n queueId: number\n nextStatus: string | null\n activity: { activityType: string; previousStatus: string } | null\n }\n\n const matchedByQueue = new Map<number, MatchedEntry[]>()\n const unmatchedIds: number[] = []\n let maxReportId = 0\n\n for (const report of reports) {\n const subjectType: SubjectType = report.subjectMessageId\n ? 'message'\n : report.recordPath\n ? 'record'\n : 'account'\n\n // recordPath is 'collection/rkey' for records, '' for accounts\n const slashIdx = report.recordPath.indexOf('/')\n const collection =\n slashIdx > 0 ? report.recordPath.slice(0, slashIdx) : null\n\n const assignment = resolveAssignment(\n subjectType,\n collection,\n report.reportType,\n queues,\n now,\n )\n\n if (assignment.queueId !== -1) {\n // Existing-row UPDATE path uses handleReportUpdate so that already\n // escalated/closed/etc. reports keep their status — only open → queued\n // transitions emit a status change and an activity row.\n const result = handleReportUpdate(report.status, { type: 'queue' })\n const group = matchedByQueue.get(assignment.queueId) ?? []\n group.push({\n id: report.id,\n queueId: assignment.queueId,\n nextStatus: result.nextStatus,\n activity: result.activity,\n })\n matchedByQueue.set(assignment.queueId, group)\n } else {\n unmatchedIds.push(report.id)\n }\n\n if (report.id > maxReportId) maxReportId = report.id\n }\n\n // Bulk UPDATE matched reports — split by whether status should change.\n // handleReportUpdate returns nextStatus only for open → queued;\n // other statuses keep their current status but still get routed.\n for (const [queueId, group] of matchedByQueue) {\n const withTransition = group\n .filter((r) => r.nextStatus !== null)\n .map((r) => r.id)\n const withoutTransition = group\n .filter((r) => r.nextStatus === null)\n .map((r) => r.id)\n\n if (withTransition.length) {\n await this.db.db\n .updateTable('report')\n .set({ queueId, queuedAt: now, status: 'queued', updatedAt: now })\n .where('id', 'in', withTransition)\n .execute()\n }\n if (withoutTransition.length) {\n await this.db.db\n .updateTable('report')\n .set({ queueId, queuedAt: now, updatedAt: now })\n .where('id', 'in', withoutTransition)\n .execute()\n }\n }\n\n // Bulk UPDATE unmatched reports — status stays unchanged\n if (unmatchedIds.length) {\n await this.db.db\n .updateTable('report')\n .set({ queueId: -1, queuedAt: null, updatedAt: now })\n .where('id', 'in', unmatchedIds)\n .execute()\n }\n\n // Bulk INSERT activities for matched reports that changed status.\n if (opts?.serviceDid) {\n const withActivities = [...matchedByQueue.values()]\n .flat()\n .filter((r) => r.activity !== null)\n if (withActivities.length) {\n await this.db.db\n .insertInto('report_activity')\n .values(\n withActivities.map((r) => ({\n reportId: r.id,\n activityType: r.activity!.activityType,\n previousStatus: r.activity!.previousStatus,\n internalNote: null,\n publicNote: null,\n meta: null,\n isAutomated: true,\n createdBy: opts.serviceDid!,\n createdAt: now,\n })),\n )\n .execute()\n }\n }\n\n const assigned = [...matchedByQueue.values()].reduce(\n (sum, g) => sum + g.length,\n 0,\n )\n\n return {\n processed: reports.length,\n assigned,\n unmatched: unmatchedIds.length,\n maxId: maxReportId,\n }\n }\n\n /**\n * Read newly-created modEventReport rows from `moderation_event` and\n * insert corresponding `report` rows with `queueId` already resolved.\n * Used by the queue-router daemon. Idempotent via `ON CONFLICT (eventId)\n * DO NOTHING` — safe to re-run on the same range.\n *\n * Even when no queues are configured, report rows are still inserted with\n * `queueId = -1` so the invariant \"every modEventReport has a `report` row\"\n * holds.\n */\n async insertReportsFromEvents(params: {\n cursor: number | null\n limit: number\n }): Promise<{\n processed: number\n assigned: number\n unmatched: number\n maxEventId: number\n }> {\n const { queues } = await this.list({ limit: 1000, enabled: true })\n\n let query = this.db.db\n .selectFrom('moderation_event')\n .select([\n 'id',\n 'subjectDid',\n 'subjectUri',\n 'subjectMessageId',\n 'meta',\n 'createdAt',\n ])\n .where('action', '=', MOD_EVENT_REPORT_ACTION)\n .orderBy('id', 'asc')\n .limit(params.limit)\n\n if (params.cursor !== null) {\n query = query.where('id', '>', params.cursor)\n }\n\n const events = await query.execute()\n\n if (!events.length) {\n return { processed: 0, assigned: 0, unmatched: 0, maxEventId: 0 }\n }\n\n const now = new Date().toISOString()\n let maxEventId = 0\n let assigned = 0\n let unmatched = 0\n\n const rows = events.map((event) => {\n const subjectType: SubjectType = event.subjectMessageId\n ? 'message'\n : event.subjectUri\n ? 'record'\n : 'account'\n\n let collection: string | null = null\n let recordPath = ''\n if (event.subjectUri) {\n const uri = new AtUri(event.subjectUri)\n collection = uri.collection\n recordPath = `${uri.collection}/${uri.rkey}`\n }\n\n const reportType =\n (event.meta?.reportType as string | undefined) ?? REASON_OTHER\n\n const assignment = resolveAssignment(\n subjectType,\n collection,\n reportType,\n queues,\n now,\n )\n\n if (assignment.queueId === -1) unmatched++\n else assigned++\n if (event.id > maxEventId) maxEventId = event.id\n\n const isMuted =\n !!event.meta?.isReporterMuted || !!event.meta?.isSubjectMuted\n\n return {\n eventId: event.id,\n queueId: assignment.queueId,\n queuedAt: assignment.queuedAt,\n actionEventIds: null,\n actionNote: null,\n isMuted,\n status: assignment.status,\n reportType,\n did: event.subjectDid,\n recordPath,\n subjectMessageId: event.subjectMessageId,\n createdAt: now,\n updatedAt: now,\n }\n })\n\n // ON CONFLICT (eventId) DO NOTHING covers any race where a report row\n // already exists for the event (e.g. transitional code paths or retries\n // after a crash mid-batch).\n await this.db.db\n .insertInto('report')\n .values(rows)\n .onConflict((oc) => oc.column('eventId').doNothing())\n .execute()\n\n // Activity rows are intentionally not emitted: a freshly-inserted report\n // has no prior state to \"transition\" from. Activity rows record state\n // changes, and being born already-queued is not a state change. This\n // matches `handleReportUpdate`'s design where activity is only emitted\n // on real transitions.\n\n return {\n processed: events.length,\n assigned,\n unmatched,\n maxEventId,\n }\n }\n}\n\nexport function findMatchingQueue(\n queues: Selectable<ReportQueue>[],\n subjectType: string,\n collection: string | null,\n reportType: string | undefined,\n): Selectable<ReportQueue> | null {\n if (!reportType) return null\n\n for (const queue of queues) {\n const subjectTypeMatch = queue.subjectTypes.includes(subjectType)\n const collectionMatch =\n subjectType === 'record' && queue.collection !== null\n ? (collection ?? null) === queue.collection\n : true\n const reportTypeMatch = queue.reportTypes.includes(reportType)\n\n if (subjectTypeMatch && collectionMatch && reportTypeMatch) {\n return queue\n }\n }\n\n return null\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Database } from '../db';
|
|
2
|
-
import { Member } from '../lexicon/types/tools/ozone/team/defs';
|
|
1
|
+
import { Database } from '../db/index.js';
|
|
2
|
+
import { Member } from '../lexicon/types/tools/ozone/team/defs.js';
|
|
3
3
|
export type ActivityType = 'queueActivity' | 'assignmentActivity' | 'escalationActivity' | 'closeActivity' | 'reopenActivity' | 'noteActivity';
|
|
4
4
|
export type CreateActivityParams = {
|
|
5
5
|
reportId: number;
|
|
@@ -11,7 +11,7 @@ export type CreateActivityParams = {
|
|
|
11
11
|
isAutomated?: boolean;
|
|
12
12
|
createdBy: string;
|
|
13
13
|
};
|
|
14
|
-
export declare function createReportActivity(db: Database, params: CreateActivityParams): Promise<import("kysely").Selectable<import("../db/schema/report_activity").ReportActivity>>;
|
|
14
|
+
export declare function createReportActivity(db: Database, params: CreateActivityParams): Promise<import("kysely").Selectable<import("../db/schema/report_activity.js").ReportActivity>>;
|
|
15
15
|
export type BulkActivityInsert = {
|
|
16
16
|
reportId: number;
|
|
17
17
|
activityType: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/report/activity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/report/activity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAOlE,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,cAAc,CAAA;AAElB,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,oBAAoB,kGAkF7B;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,kBAAkB,EAAE,iBAmBjC;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,oBAAoB;;;;;;;;;;;;;;GA6B7B;AAaD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE;IACR,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,EACD,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;eArBvB,MAAM;;;;;;;;;EAsCjB"}
|