@atproto/ozone 0.1.172 → 0.1.174
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 +18 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +40 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/moderation/emitEvent.d.ts.map +1 -1
- package/dist/api/moderation/emitEvent.js +31 -0
- package/dist/api/moderation/emitEvent.js.map +1 -1
- package/dist/api/queue/assignModerator.d.ts +4 -0
- package/dist/api/queue/assignModerator.d.ts.map +1 -0
- package/dist/api/queue/assignModerator.js +28 -0
- package/dist/api/queue/assignModerator.js.map +1 -0
- package/dist/api/queue/createQueue.d.ts +4 -0
- package/dist/api/queue/createQueue.d.ts.map +1 -0
- package/dist/api/queue/createQueue.js +44 -0
- package/dist/api/queue/createQueue.js.map +1 -0
- package/dist/api/queue/deleteQueue.d.ts +4 -0
- package/dist/api/queue/deleteQueue.d.ts.map +1 -0
- package/dist/api/queue/deleteQueue.js +40 -0
- package/dist/api/queue/deleteQueue.js.map +1 -0
- package/dist/api/queue/getAssignments.d.ts +4 -0
- package/dist/api/queue/getAssignments.d.ts.map +1 -0
- package/dist/api/queue/getAssignments.js +19 -0
- package/dist/api/queue/getAssignments.js.map +1 -0
- package/dist/api/queue/listQueues.d.ts +4 -0
- package/dist/api/queue/listQueues.d.ts.map +1 -0
- package/dist/api/queue/listQueues.js +29 -0
- package/dist/api/queue/listQueues.js.map +1 -0
- package/dist/api/queue/routeReports.d.ts +4 -0
- package/dist/api/queue/routeReports.d.ts.map +1 -0
- package/dist/api/queue/routeReports.js +33 -0
- package/dist/api/queue/routeReports.js.map +1 -0
- package/dist/api/queue/unassignModerator.d.ts +4 -0
- package/dist/api/queue/unassignModerator.d.ts.map +1 -0
- package/dist/api/queue/unassignModerator.js +24 -0
- package/dist/api/queue/unassignModerator.js.map +1 -0
- package/dist/api/queue/updateQueue.d.ts +4 -0
- package/dist/api/queue/updateQueue.d.ts.map +1 -0
- package/dist/api/queue/updateQueue.js +39 -0
- package/dist/api/queue/updateQueue.js.map +1 -0
- package/dist/api/report/assignModerator.d.ts +4 -0
- package/dist/api/report/assignModerator.d.ts.map +1 -0
- package/dist/api/report/assignModerator.js +33 -0
- package/dist/api/report/assignModerator.js.map +1 -0
- package/dist/api/report/createActivity.d.ts +4 -0
- package/dist/api/report/createActivity.d.ts.map +1 -0
- package/dist/api/report/createActivity.js +44 -0
- package/dist/api/report/createActivity.js.map +1 -0
- package/dist/api/report/getAssignments.d.ts +4 -0
- package/dist/api/report/getAssignments.d.ts.map +1 -0
- package/dist/api/report/getAssignments.js +19 -0
- package/dist/api/report/getAssignments.js.map +1 -0
- package/dist/api/report/getHistoricalStats.d.ts +4 -0
- package/dist/api/report/getHistoricalStats.d.ts.map +1 -0
- package/dist/api/report/getHistoricalStats.js +32 -0
- package/dist/api/report/getHistoricalStats.js.map +1 -0
- package/dist/api/report/getLatestReport.d.ts +4 -0
- package/dist/api/report/getLatestReport.d.ts.map +1 -0
- package/dist/api/report/getLatestReport.js +31 -0
- package/dist/api/report/getLatestReport.js.map +1 -0
- package/dist/api/report/getLiveStats.d.ts +4 -0
- package/dist/api/report/getLiveStats.d.ts.map +1 -0
- package/dist/api/report/getLiveStats.js +25 -0
- package/dist/api/report/getLiveStats.js.map +1 -0
- package/dist/api/report/getReport.d.ts +4 -0
- package/dist/api/report/getReport.d.ts.map +1 -0
- package/dist/api/report/getReport.js +35 -0
- package/dist/api/report/getReport.js.map +1 -0
- package/dist/api/report/listActivities.d.ts +4 -0
- package/dist/api/report/listActivities.d.ts.map +1 -0
- package/dist/api/report/listActivities.js +25 -0
- package/dist/api/report/listActivities.js.map +1 -0
- package/dist/api/report/queryReports.d.ts +4 -0
- package/dist/api/report/queryReports.d.ts.map +1 -0
- package/dist/api/report/queryReports.js +29 -0
- package/dist/api/report/queryReports.js.map +1 -0
- package/dist/api/report/reassignQueue.d.ts +4 -0
- package/dist/api/report/reassignQueue.d.ts.map +1 -0
- package/dist/api/report/reassignQueue.js +45 -0
- package/dist/api/report/reassignQueue.js.map +1 -0
- package/dist/api/report/refreshStats.d.ts +4 -0
- package/dist/api/report/refreshStats.d.ts.map +1 -0
- package/dist/api/report/refreshStats.js +26 -0
- package/dist/api/report/refreshStats.js.map +1 -0
- package/dist/api/report/unassignModerator.d.ts +4 -0
- package/dist/api/report/unassignModerator.d.ts.map +1 -0
- package/dist/api/report/unassignModerator.js +21 -0
- package/dist/api/report/unassignModerator.js.map +1 -0
- package/dist/api/util.d.ts +2 -0
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js +9 -1
- package/dist/api/util.js.map +1 -1
- package/dist/assignment/index.d.ts +89 -0
- package/dist/assignment/index.d.ts.map +1 -0
- package/dist/assignment/index.js +537 -0
- package/dist/assignment/index.js.map +1 -0
- package/dist/config/config.d.ts +14 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +9 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts +3 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +3 -0
- package/dist/config/env.js.map +1 -1
- package/dist/context.d.ts +9 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +31 -10
- package/dist/context.js.map +1 -1
- package/dist/daemon/context.d.ts +6 -0
- package/dist/daemon/context.d.ts.map +1 -1
- package/dist/daemon/context.js +28 -4
- package/dist/daemon/context.js.map +1 -1
- package/dist/daemon/event-reverser.d.ts +1 -0
- package/dist/daemon/event-reverser.d.ts.map +1 -1
- package/dist/daemon/event-reverser.js +42 -1
- package/dist/daemon/event-reverser.js.map +1 -1
- package/dist/daemon/job-cursor.d.ts +5 -0
- package/dist/daemon/job-cursor.d.ts.map +1 -0
- package/dist/daemon/job-cursor.js +28 -0
- package/dist/daemon/job-cursor.js.map +1 -0
- package/dist/daemon/queue-router.d.ts +17 -0
- package/dist/daemon/queue-router.d.ts.map +1 -0
- package/dist/daemon/queue-router.js +114 -0
- package/dist/daemon/queue-router.js.map +1 -0
- package/dist/daemon/stats-computer.d.ts +51 -0
- package/dist/daemon/stats-computer.d.ts.map +1 -0
- package/dist/daemon/stats-computer.js +117 -0
- package/dist/daemon/stats-computer.js.map +1 -0
- package/dist/daemon/strike-expiry-processor.d.ts.map +1 -1
- package/dist/daemon/strike-expiry-processor.js +4 -19
- package/dist/daemon/strike-expiry-processor.js.map +1 -1
- package/dist/db/migrations/20260219T164523000Z-create-report-table.d.ts +4 -0
- package/dist/db/migrations/20260219T164523000Z-create-report-table.d.ts.map +1 -0
- package/dist/db/migrations/20260219T164523000Z-create-report-table.js +126 -0
- package/dist/db/migrations/20260219T164523000Z-create-report-table.js.map +1 -0
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.d.ts +4 -0
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.d.ts.map +1 -0
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.js +35 -0
- package/dist/db/migrations/20260219T165302248Z-moderator-assignment.js.map +1 -0
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.d.ts +4 -0
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.d.ts.map +1 -0
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.js +36 -0
- package/dist/db/migrations/20260225T000000000Z-add-report-queue-table.js.map +1 -0
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.d.ts +4 -0
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.d.ts.map +1 -0
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.js +39 -0
- package/dist/db/migrations/20260313T000000000Z-add-report-activity-table.js.map +1 -0
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.d.ts +4 -0
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.d.ts.map +1 -0
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.js +34 -0
- package/dist/db/migrations/20260318T152058935Z-add-report-stat.js.map +1 -0
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.d.ts +4 -0
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.d.ts.map +1 -0
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js +32 -0
- package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js.map +1 -0
- package/dist/db/migrations/index.d.ts +6 -0
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +7 -1
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/pagination.d.ts +31 -0
- package/dist/db/pagination.d.ts.map +1 -1
- package/dist/db/pagination.js +74 -1
- package/dist/db/pagination.js.map +1 -1
- package/dist/db/schema/expiring_tag.d.ts +15 -0
- package/dist/db/schema/expiring_tag.d.ts.map +1 -0
- package/dist/db/schema/expiring_tag.js +5 -0
- package/dist/db/schema/expiring_tag.js.map +1 -0
- package/dist/db/schema/index.d.ts +7 -1
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/schema/moderator_assignment.d.ts +14 -0
- package/dist/db/schema/moderator_assignment.d.ts.map +1 -0
- package/dist/db/schema/moderator_assignment.js +5 -0
- package/dist/db/schema/moderator_assignment.js.map +1 -0
- package/dist/db/schema/report.d.ts +25 -0
- package/dist/db/schema/report.d.ts.map +1 -0
- package/dist/db/schema/report.js +5 -0
- package/dist/db/schema/report.js.map +1 -0
- package/dist/db/schema/report_activity.d.ts +18 -0
- package/dist/db/schema/report_activity.d.ts.map +1 -0
- package/dist/db/schema/report_activity.js +5 -0
- package/dist/db/schema/report_activity.js.map +1 -0
- package/dist/db/schema/report_queue.d.ts +19 -0
- package/dist/db/schema/report_queue.d.ts.map +1 -0
- package/dist/db/schema/report_queue.js +5 -0
- package/dist/db/schema/report_queue.js.map +1 -0
- package/dist/db/schema/report_stat.d.ts +20 -0
- package/dist/db/schema/report_stat.d.ts.map +1 -0
- package/dist/db/schema/report_stat.js +5 -0
- package/dist/db/schema/report_stat.js.map +1 -0
- package/dist/lexicon/index.d.ts +50 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +120 -2
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +11255 -7885
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +1900 -120
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.d.ts +2 -0
- package/dist/lexicon/types/app/bsky/embed/external.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/embed/external.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts +8 -2
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.js +9 -0
- package/dist/lexicon/types/chat/bsky/actor/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts +37 -10
- package/dist/lexicon/types/chat/bsky/convo/defs.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/defs.js +9 -0
- package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts +3 -0
- package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts.map +1 -1
- package/dist/lexicon/types/chat/bsky/convo/getMessages.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +2 -0
- package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts +19 -0
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js +9 -0
- package/dist/lexicon/types/tools/ozone/moderation/emitEvent.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.d.ts +27 -0
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/assignModerator.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/createQueue.d.ts +35 -0
- package/dist/lexicon/types/tools/ozone/queue/createQueue.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/createQueue.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/createQueue.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/defs.d.ts +62 -0
- package/dist/lexicon/types/tools/ozone/queue/defs.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/defs.js +34 -0
- package/dist/lexicon/types/tools/ozone/queue/defs.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.d.ts +29 -0
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/deleteQueue.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.d.ts +30 -0
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/getAssignments.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/listQueues.d.ts +32 -0
- package/dist/lexicon/types/tools/ozone/queue/listQueues.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/listQueues.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/listQueues.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/routeReports.d.ts +31 -0
- package/dist/lexicon/types/tools/ozone/queue/routeReports.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/routeReports.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/routeReports.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.d.ts +18 -0
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/unassignModerator.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.d.ts +32 -0
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.js +7 -0
- package/dist/lexicon/types/tools/ozone/queue/updateQueue.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/assignModerator.d.ts +31 -0
- package/dist/lexicon/types/tools/ozone/report/assignModerator.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/assignModerator.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/assignModerator.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/createActivity.d.ts +37 -0
- package/dist/lexicon/types/tools/ozone/report/createActivity.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/createActivity.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/createActivity.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/defs.d.ts +185 -0
- package/dist/lexicon/types/tools/ozone/report/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/defs.js +108 -0
- package/dist/lexicon/types/tools/ozone/report/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/report/getAssignments.d.ts +30 -0
- package/dist/lexicon/types/tools/ozone/report/getAssignments.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getAssignments.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/getAssignments.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.d.ts +36 -0
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/getHistoricalStats.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.d.ts +21 -0
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/getLatestReport.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.d.ts +27 -0
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/getLiveStats.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getReport.d.ts +22 -0
- package/dist/lexicon/types/tools/ozone/report/getReport.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/getReport.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/getReport.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/listActivities.d.ts +26 -0
- package/dist/lexicon/types/tools/ozone/report/listActivities.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/listActivities.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/listActivities.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/queryReports.d.ts +48 -0
- package/dist/lexicon/types/tools/ozone/report/queryReports.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/queryReports.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/queryReports.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.d.ts +31 -0
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/reassignQueue.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/refreshStats.d.ts +28 -0
- package/dist/lexicon/types/tools/ozone/report/refreshStats.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/refreshStats.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/refreshStats.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.d.ts +25 -0
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.js +7 -0
- package/dist/lexicon/types/tools/ozone/report/unassignModerator.js.map +1 -0
- package/dist/mod-service/expiring-tags.d.ts +27 -0
- package/dist/mod-service/expiring-tags.d.ts.map +1 -0
- package/dist/mod-service/expiring-tags.js +62 -0
- package/dist/mod-service/expiring-tags.js.map +1 -0
- package/dist/mod-service/index.d.ts +3 -1
- package/dist/mod-service/index.d.ts.map +1 -1
- package/dist/mod-service/index.js +61 -2
- package/dist/mod-service/index.js.map +1 -1
- package/dist/mod-service/report.d.ts +64 -0
- package/dist/mod-service/report.d.ts.map +1 -0
- package/dist/mod-service/report.js +282 -0
- package/dist/mod-service/report.js.map +1 -0
- package/dist/mod-service/status.d.ts +24 -0
- package/dist/mod-service/status.d.ts.map +1 -1
- package/dist/queue/service.d.ts +86 -0
- package/dist/queue/service.d.ts.map +1 -0
- package/dist/queue/service.js +430 -0
- package/dist/queue/service.js.map +1 -0
- package/dist/report/activity.d.ts +77 -0
- package/dist/report/activity.d.ts.map +1 -0
- package/dist/report/activity.js +141 -0
- package/dist/report/activity.js.map +1 -0
- package/dist/report/handle-report-update.d.ts +47 -0
- package/dist/report/handle-report-update.d.ts.map +1 -0
- package/dist/report/handle-report-update.js +178 -0
- package/dist/report/handle-report-update.js.map +1 -0
- package/dist/report/reassign.d.ts +10 -0
- package/dist/report/reassign.d.ts.map +1 -0
- package/dist/report/reassign.js +75 -0
- package/dist/report/reassign.js.map +1 -0
- package/dist/report/stats.d.ts +105 -0
- package/dist/report/stats.d.ts.map +1 -0
- package/dist/report/stats.js +619 -0
- package/dist/report/stats.js.map +1 -0
- package/dist/report/views.d.ts +111 -0
- package/dist/report/views.d.ts.map +1 -0
- package/dist/report/views.js +156 -0
- package/dist/report/views.js.map +1 -0
- package/dist/team/index.d.ts +1 -0
- package/dist/team/index.d.ts.map +1 -1
- package/dist/team/index.js +11 -0
- package/dist/team/index.js.map +1 -1
- package/package.json +3 -3
- package/src/api/index.ts +40 -0
- package/src/api/moderation/emitEvent.ts +38 -0
- package/src/api/queue/assignModerator.ts +31 -0
- package/src/api/queue/createQueue.ts +62 -0
- package/src/api/queue/deleteQueue.ts +56 -0
- package/src/api/queue/getAssignments.ts +19 -0
- package/src/api/queue/listQueues.ts +39 -0
- package/src/api/queue/routeReports.ts +44 -0
- package/src/api/queue/unassignModerator.ts +26 -0
- package/src/api/queue/updateQueue.ts +54 -0
- package/src/api/report/assignModerator.ts +36 -0
- package/src/api/report/createActivity.ts +57 -0
- package/src/api/report/getAssignments.ts +20 -0
- package/src/api/report/getHistoricalStats.ts +41 -0
- package/src/api/report/getLatestReport.ts +44 -0
- package/src/api/report/getLiveStats.ts +26 -0
- package/src/api/report/getReport.ts +55 -0
- package/src/api/report/listActivities.ts +34 -0
- package/src/api/report/queryReports.ts +44 -0
- package/src/api/report/reassignQueue.ts +68 -0
- package/src/api/report/refreshStats.ts +27 -0
- package/src/api/report/unassignModerator.ts +21 -0
- package/src/api/util.ts +12 -0
- package/src/assignment/index.ts +731 -0
- package/src/config/config.ts +27 -0
- package/src/config/env.ts +8 -0
- package/src/context.ts +31 -0
- package/src/daemon/context.ts +34 -0
- package/src/daemon/event-reverser.ts +50 -1
- package/src/daemon/job-cursor.ts +33 -0
- package/src/daemon/queue-router.ts +101 -0
- package/src/daemon/stats-computer.ts +101 -0
- package/src/daemon/strike-expiry-processor.ts +4 -20
- package/src/db/migrations/20260219T164523000Z-create-report-table.ts +155 -0
- package/src/db/migrations/20260219T165302248Z-moderator-assignment.ts +42 -0
- package/src/db/migrations/20260225T000000000Z-add-report-queue-table.ts +41 -0
- package/src/db/migrations/20260313T000000000Z-add-report-activity-table.ts +48 -0
- package/src/db/migrations/20260318T152058935Z-add-report-stat.ts +35 -0
- package/src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts +32 -0
- package/src/db/migrations/index.ts +6 -0
- package/src/db/pagination.ts +85 -0
- package/src/db/schema/expiring_tag.ts +17 -0
- package/src/db/schema/index.ts +13 -1
- package/src/db/schema/moderator_assignment.ts +16 -0
- package/src/db/schema/report.ts +27 -0
- package/src/db/schema/report_activity.ts +22 -0
- package/src/db/schema/report_queue.ts +21 -0
- package/src/db/schema/report_stat.ts +27 -0
- package/src/lexicon/index.ts +280 -0
- package/src/lexicon/lexicons.ts +2083 -214
- package/src/lexicon/types/app/bsky/embed/external.ts +2 -0
- package/src/lexicon/types/chat/bsky/actor/defs.ts +17 -1
- package/src/lexicon/types/chat/bsky/convo/defs.ts +50 -10
- package/src/lexicon/types/chat/bsky/convo/getMessages.ts +3 -0
- package/src/lexicon/types/tools/ozone/moderation/defs.ts +2 -0
- package/src/lexicon/types/tools/ozone/moderation/emitEvent.ts +24 -0
- package/src/lexicon/types/tools/ozone/queue/assignModerator.ts +46 -0
- package/src/lexicon/types/tools/ozone/queue/createQueue.ts +54 -0
- package/src/lexicon/types/tools/ozone/queue/defs.ts +99 -0
- package/src/lexicon/types/tools/ozone/queue/deleteQueue.ts +48 -0
- package/src/lexicon/types/tools/ozone/queue/getAssignments.ts +48 -0
- package/src/lexicon/types/tools/ozone/queue/listQueues.ts +50 -0
- package/src/lexicon/types/tools/ozone/queue/routeReports.ts +50 -0
- package/src/lexicon/types/tools/ozone/queue/unassignModerator.ts +37 -0
- package/src/lexicon/types/tools/ozone/queue/updateQueue.ts +51 -0
- package/src/lexicon/types/tools/ozone/report/assignModerator.ts +50 -0
- package/src/lexicon/types/tools/ozone/report/createActivity.ts +60 -0
- package/src/lexicon/types/tools/ozone/report/defs.ts +327 -0
- package/src/lexicon/types/tools/ozone/report/getAssignments.ts +48 -0
- package/src/lexicon/types/tools/ozone/report/getHistoricalStats.ts +54 -0
- package/src/lexicon/types/tools/ozone/report/getLatestReport.ts +39 -0
- package/src/lexicon/types/tools/ozone/report/getLiveStats.ts +45 -0
- package/src/lexicon/types/tools/ozone/report/getReport.ts +38 -0
- package/src/lexicon/types/tools/ozone/report/listActivities.ts +44 -0
- package/src/lexicon/types/tools/ozone/report/queryReports.ts +72 -0
- package/src/lexicon/types/tools/ozone/report/reassignQueue.ts +55 -0
- package/src/lexicon/types/tools/ozone/report/refreshStats.ts +46 -0
- package/src/lexicon/types/tools/ozone/report/unassignModerator.ts +44 -0
- package/src/mod-service/expiring-tags.ts +98 -0
- package/src/mod-service/index.ts +71 -3
- package/src/mod-service/report.ts +408 -0
- package/src/queue/service.ts +599 -0
- package/src/report/activity.ts +234 -0
- package/src/report/handle-report-update.ts +209 -0
- package/src/report/reassign.ts +109 -0
- package/src/report/stats.ts +850 -0
- package/src/report/views.ts +241 -0
- package/src/team/index.ts +11 -0
- package/tests/expiring-tags.test.ts +231 -0
- package/tests/get-report.test.ts +136 -0
- package/tests/query-reports.test.ts +608 -0
- package/tests/queue-assignment.test.ts +428 -0
- package/tests/queue-router.test.ts +306 -0
- package/tests/queues.test.ts +690 -0
- package/tests/report-action.test.ts +308 -0
- package/tests/report-activity.test.ts +567 -0
- package/tests/report-assignment.test.ts +517 -0
- package/tests/report-reassign-queue.test.ts +340 -0
- package/tests/report-routing.test.ts +245 -0
- package/tests/report-stats.test.ts +545 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.up = up;
|
|
4
|
+
exports.down = down;
|
|
5
|
+
const kysely_1 = require("kysely");
|
|
6
|
+
async function up(db) {
|
|
7
|
+
// Report table - bridges report events to action events
|
|
8
|
+
await db.schema
|
|
9
|
+
.createTable('report')
|
|
10
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
11
|
+
// Core link to report event (display data still comes from moderation_event via JOIN)
|
|
12
|
+
.addColumn('eventId', 'integer', (col) => col.notNull().unique())
|
|
13
|
+
// Queue assignment (computed by background job in future iteration)
|
|
14
|
+
.addColumn('queueId', 'integer') // NULL = not yet assigned, -1 = no matching queue
|
|
15
|
+
.addColumn('queuedAt', 'varchar')
|
|
16
|
+
// Action linkage (sorted DESC, most recent first)
|
|
17
|
+
.addColumn('actionEventIds', 'jsonb') // Array of event IDs: [newest_id, ..., oldest_id]
|
|
18
|
+
// Reporter communication
|
|
19
|
+
.addColumn('actionNote', 'text')
|
|
20
|
+
// Whether the report is muted (reporter was muted or subject was muted at creation time)
|
|
21
|
+
.addColumn('isMuted', 'boolean', (col) => col.notNull().defaultTo(false))
|
|
22
|
+
// Status of the ticket/report
|
|
23
|
+
.addColumn('status', 'varchar', (col) => col.notNull().defaultTo('open')) // "open", "closed", "escalated"
|
|
24
|
+
// Denormalized from moderation_event for filtering without JOIN
|
|
25
|
+
.addColumn('reportType', 'varchar', (col) => col.notNull())
|
|
26
|
+
.addColumn('did', 'varchar', (col) => col.notNull())
|
|
27
|
+
.addColumn('recordPath', 'varchar', (col) => col.notNull().defaultTo('')) // '' = account/message, 'collection/rkey' = record
|
|
28
|
+
.addColumn('subjectMessageId', 'varchar') // NULL for non-message subjects
|
|
29
|
+
// Timestamps
|
|
30
|
+
.addColumn('createdAt', 'varchar', (col) => col.notNull())
|
|
31
|
+
.addColumn('updatedAt', 'varchar', (col) => col.notNull())
|
|
32
|
+
.addColumn('assignedTo', 'varchar') // DID of permanently assigned moderator
|
|
33
|
+
.addColumn('assignedAt', 'varchar') // When the permanent assignment was created
|
|
34
|
+
.addColumn('closedAt', 'varchar')
|
|
35
|
+
.execute();
|
|
36
|
+
// ─── Indexes ───
|
|
37
|
+
// Primary JOIN index - critical for every query that fetches display data from moderation_event
|
|
38
|
+
await db.schema
|
|
39
|
+
.createIndex('idx_report_event')
|
|
40
|
+
.on('report')
|
|
41
|
+
.column('eventId')
|
|
42
|
+
.execute();
|
|
43
|
+
// ─── Hot path: active reports (status != 'closed') ───
|
|
44
|
+
// Partial filter keeps these tight even as closed reports accumulate (~90% of table long-term).
|
|
45
|
+
// No isMuted in key (low cardinality, rarely filtered) and no INCLUDE columns
|
|
46
|
+
// (display data comes from moderation_event JOIN anyway).
|
|
47
|
+
// queryReports: queueId + status, paginated by createdAt
|
|
48
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_active_queue_created ON report
|
|
49
|
+
("queueId", status, "createdAt" DESC, id DESC)
|
|
50
|
+
WHERE status != 'closed'`.execute(db);
|
|
51
|
+
// queryReports: queueId + status, paginated by updatedAt
|
|
52
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_active_queue_updated ON report
|
|
53
|
+
("queueId", status, "updatedAt" DESC, id DESC)
|
|
54
|
+
WHERE status != 'closed'`.execute(db);
|
|
55
|
+
// queryReports: status only, paginated by createdAt
|
|
56
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_active_status_created ON report
|
|
57
|
+
(status, "createdAt" DESC, id DESC)
|
|
58
|
+
WHERE status != 'closed'`.execute(db);
|
|
59
|
+
// queryReports: status only, paginated by updatedAt
|
|
60
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_active_status_updated ON report
|
|
61
|
+
(status, "updatedAt" DESC, id DESC)
|
|
62
|
+
WHERE status != 'closed'`.execute(db);
|
|
63
|
+
// Active reports for a specific account (with optional queueId post-filter)
|
|
64
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_active_did_created ON report
|
|
65
|
+
(did, status, "createdAt" DESC, id DESC)
|
|
66
|
+
WHERE status != 'closed'`.execute(db);
|
|
67
|
+
// A moderator's active workload (with optional queueId post-filter)
|
|
68
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_active_assigned_created ON report
|
|
69
|
+
("assignedTo", status, "createdAt" DESC, id DESC)
|
|
70
|
+
WHERE status != 'closed'`.execute(db);
|
|
71
|
+
// findReportsForSubject hot path — always filters NOT IN ('closed').
|
|
72
|
+
// did + recordPath identify the subject (account or specific record).
|
|
73
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_subject_active ON report
|
|
74
|
+
(did, "recordPath", "createdAt" DESC, id DESC)
|
|
75
|
+
WHERE status != 'closed'`.execute(db);
|
|
76
|
+
// ─── Closed history (status = 'closed') ───
|
|
77
|
+
// Closed reports are terminal; only sort by createdAt.
|
|
78
|
+
// Closed pagination per queue
|
|
79
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_closed_queue_created ON report
|
|
80
|
+
("queueId", "createdAt" DESC, id DESC)
|
|
81
|
+
WHERE status = 'closed'`.execute(db);
|
|
82
|
+
// Closed history for an account
|
|
83
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_closed_did_created ON report
|
|
84
|
+
(did, "createdAt" DESC, id DESC)
|
|
85
|
+
WHERE status = 'closed'`.execute(db);
|
|
86
|
+
// Moderator's closed-report history
|
|
87
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_closed_assigned_created ON report
|
|
88
|
+
("assignedTo", "createdAt" DESC, id DESC)
|
|
89
|
+
WHERE status = 'closed'`.execute(db);
|
|
90
|
+
// ─── Other access patterns ───
|
|
91
|
+
// Collection prefix queries: left-anchored LIKE 'app.bsky.feed.post/%' or 'app.bsky.%'
|
|
92
|
+
// text_pattern_ops enables btree-scannable prefix matching (supported since Postgres 8.x)
|
|
93
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_record_path_pattern ON report
|
|
94
|
+
("recordPath" text_pattern_ops)`.execute(db);
|
|
95
|
+
// Queue-router covering partial: index-only scan over unrouted, non-closed rows.
|
|
96
|
+
// Selects exactly the columns the router reads, eliminating heap fetches per batch.
|
|
97
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_unassigned_id ON report (id)
|
|
98
|
+
INCLUDE (status, "reportType", "recordPath", "subjectMessageId")
|
|
99
|
+
WHERE "queueId" IS NULL AND status != 'closed'`.execute(db);
|
|
100
|
+
// Index for report statistics
|
|
101
|
+
await db.schema
|
|
102
|
+
.createIndex('idx_report_queue_created_id')
|
|
103
|
+
.on('report')
|
|
104
|
+
.columns(['queueId', 'createdAt', 'id'])
|
|
105
|
+
.execute();
|
|
106
|
+
// aggregate pending count query
|
|
107
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_pending ON report (id) WHERE status != 'closed'`.execute(db);
|
|
108
|
+
// per-queue pending count query
|
|
109
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_queue_pending ON report ("queueId") WHERE status != 'closed'`.execute(db);
|
|
110
|
+
// Queue-router event-source partial: scans new modEventReport rows by id
|
|
111
|
+
// for the daemon that inserts report rows from moderation_event.
|
|
112
|
+
await (0, kysely_1.sql) `CREATE INDEX moderation_event_report_id_idx
|
|
113
|
+
ON moderation_event (id)
|
|
114
|
+
WHERE action = 'tools.ozone.moderation.defs#modEventReport'`.execute(db);
|
|
115
|
+
// Stats windowed queries: aggregate/typeWindow filter by createdAt range and
|
|
116
|
+
// include both open and closed reports, so they cannot use the partial indexes
|
|
117
|
+
// above. (createdAt, reportType) ordering serves the date-range scan and
|
|
118
|
+
// satisfies GROUP BY reportType from the index without a heap fetch.
|
|
119
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_created_type
|
|
120
|
+
ON report ("createdAt", "reportType")`.execute(db);
|
|
121
|
+
}
|
|
122
|
+
async function down(db) {
|
|
123
|
+
await db.schema.dropIndex('moderation_event_report_id_idx').execute();
|
|
124
|
+
await db.schema.dropTable('report').execute();
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=20260219T164523000Z-create-report-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260219T164523000Z-create-report-table.js","sourceRoot":"","sources":["../../../src/db/migrations/20260219T164523000Z-create-report-table.ts"],"names":[],"mappings":";;AAEA,gBAmJC;AAED,oBAGC;AA1JD,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,wDAAwD;IACxD,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,QAAQ,CAAC;SACrB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAErD,sFAAsF;SACrF,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;QAEjE,oEAAoE;SACnE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,kDAAkD;SAClF,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;QAEjC,kDAAkD;SACjD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,kDAAkD;QAExF,yBAAyB;SACxB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;QAEhC,yFAAyF;SACxF,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEzE,8BAA8B;SAC7B,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,gCAAgC;QAE1G,gEAAgE;SAC/D,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC1D,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD;SAC5H,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,gCAAgC;QAE1E,aAAa;SACZ,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,wCAAwC;SAC3E,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,4CAA4C;SAC/E,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;SAChC,OAAO,EAAE,CAAA;IAEZ,kBAAkB;IAClB,gGAAgG;IAChG,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kBAAkB,CAAC;SAC/B,EAAE,CAAC,QAAQ,CAAC;SACZ,MAAM,CAAC,SAAS,CAAC;SACjB,OAAO,EAAE,CAAA;IAEZ,wDAAwD;IACxD,gGAAgG;IAChG,8EAA8E;IAC9E,0DAA0D;IAE1D,yDAAyD;IACzD,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,yDAAyD;IACzD,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,oDAAoD;IACpD,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,oDAAoD;IACpD,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,4EAA4E;IAC5E,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,oEAAoE;IACpE,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,qEAAqE;IACrE,sEAAsE;IACtE,MAAM,IAAA,YAAG,EAAA;;6BAEkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvC,6CAA6C;IAC7C,uDAAuD;IAEvD,8BAA8B;IAC9B,MAAM,IAAA,YAAG,EAAA;;4BAEiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEtC,gCAAgC;IAChC,MAAM,IAAA,YAAG,EAAA;;4BAEiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEtC,oCAAoC;IACpC,MAAM,IAAA,YAAG,EAAA;;4BAEiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAEtC,gCAAgC;IAEhC,uFAAuF;IACvF,0FAA0F;IAC1F,MAAM,IAAA,YAAG,EAAA;oCACyB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAE9C,iFAAiF;IACjF,oFAAoF;IACpF,MAAM,IAAA,YAAG,EAAA;;mDAEwC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAE7D,8BAA8B;IAC9B,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,6BAA6B,CAAC;SAC1C,EAAE,CAAC,QAAQ,CAAC;SACZ,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;SACvC,OAAO,EAAE,CAAA;IAEZ,gCAAgC;IAChC,MAAM,IAAA,YAAG,EAAA,yEAAyE,CAAC,OAAO,CACxF,EAAE,CACH,CAAA;IACD,gCAAgC;IAChC,MAAM,IAAA,YAAG,EAAA,sFAAsF,CAAC,OAAO,CACrG,EAAE,CACH,CAAA;IAED,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,IAAA,YAAG,EAAA;;gEAEqD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAE1E,6EAA6E;IAC7E,+EAA+E;IAC/E,yEAAyE;IACzE,qEAAqE;IACrE,MAAM,IAAA,YAAG,EAAA;0CAC+B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AACtD,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC,OAAO,EAAE,CAAA;IACrE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;AAC/C,CAAC","sourcesContent":["import { Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n // Report table - bridges report events to action events\n await db.schema\n .createTable('report')\n .addColumn('id', 'serial', (col) => col.primaryKey())\n\n // Core link to report event (display data still comes from moderation_event via JOIN)\n .addColumn('eventId', 'integer', (col) => col.notNull().unique())\n\n // Queue assignment (computed by background job in future iteration)\n .addColumn('queueId', 'integer') // NULL = not yet assigned, -1 = no matching queue\n .addColumn('queuedAt', 'varchar')\n\n // Action linkage (sorted DESC, most recent first)\n .addColumn('actionEventIds', 'jsonb') // Array of event IDs: [newest_id, ..., oldest_id]\n\n // Reporter communication\n .addColumn('actionNote', 'text')\n\n // Whether the report is muted (reporter was muted or subject was muted at creation time)\n .addColumn('isMuted', 'boolean', (col) => col.notNull().defaultTo(false))\n\n // Status of the ticket/report\n .addColumn('status', 'varchar', (col) => col.notNull().defaultTo('open')) // \"open\", \"closed\", \"escalated\"\n\n // Denormalized from moderation_event for filtering without JOIN\n .addColumn('reportType', 'varchar', (col) => col.notNull())\n .addColumn('did', 'varchar', (col) => col.notNull())\n .addColumn('recordPath', 'varchar', (col) => col.notNull().defaultTo('')) // '' = account/message, 'collection/rkey' = record\n .addColumn('subjectMessageId', 'varchar') // NULL for non-message subjects\n\n // Timestamps\n .addColumn('createdAt', 'varchar', (col) => col.notNull())\n .addColumn('updatedAt', 'varchar', (col) => col.notNull())\n .addColumn('assignedTo', 'varchar') // DID of permanently assigned moderator\n .addColumn('assignedAt', 'varchar') // When the permanent assignment was created\n .addColumn('closedAt', 'varchar')\n .execute()\n\n // ─── Indexes ───\n // Primary JOIN index - critical for every query that fetches display data from moderation_event\n await db.schema\n .createIndex('idx_report_event')\n .on('report')\n .column('eventId')\n .execute()\n\n // ─── Hot path: active reports (status != 'closed') ───\n // Partial filter keeps these tight even as closed reports accumulate (~90% of table long-term).\n // No isMuted in key (low cardinality, rarely filtered) and no INCLUDE columns\n // (display data comes from moderation_event JOIN anyway).\n\n // queryReports: queueId + status, paginated by createdAt\n await sql`CREATE INDEX idx_report_active_queue_created ON report\n (\"queueId\", status, \"createdAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // queryReports: queueId + status, paginated by updatedAt\n await sql`CREATE INDEX idx_report_active_queue_updated ON report\n (\"queueId\", status, \"updatedAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // queryReports: status only, paginated by createdAt\n await sql`CREATE INDEX idx_report_active_status_created ON report\n (status, \"createdAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // queryReports: status only, paginated by updatedAt\n await sql`CREATE INDEX idx_report_active_status_updated ON report\n (status, \"updatedAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // Active reports for a specific account (with optional queueId post-filter)\n await sql`CREATE INDEX idx_report_active_did_created ON report\n (did, status, \"createdAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // A moderator's active workload (with optional queueId post-filter)\n await sql`CREATE INDEX idx_report_active_assigned_created ON report\n (\"assignedTo\", status, \"createdAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // findReportsForSubject hot path — always filters NOT IN ('closed').\n // did + recordPath identify the subject (account or specific record).\n await sql`CREATE INDEX idx_report_subject_active ON report\n (did, \"recordPath\", \"createdAt\" DESC, id DESC)\n WHERE status != 'closed'`.execute(db)\n\n // ─── Closed history (status = 'closed') ───\n // Closed reports are terminal; only sort by createdAt.\n\n // Closed pagination per queue\n await sql`CREATE INDEX idx_report_closed_queue_created ON report\n (\"queueId\", \"createdAt\" DESC, id DESC)\n WHERE status = 'closed'`.execute(db)\n\n // Closed history for an account\n await sql`CREATE INDEX idx_report_closed_did_created ON report\n (did, \"createdAt\" DESC, id DESC)\n WHERE status = 'closed'`.execute(db)\n\n // Moderator's closed-report history\n await sql`CREATE INDEX idx_report_closed_assigned_created ON report\n (\"assignedTo\", \"createdAt\" DESC, id DESC)\n WHERE status = 'closed'`.execute(db)\n\n // ─── Other access patterns ───\n\n // Collection prefix queries: left-anchored LIKE 'app.bsky.feed.post/%' or 'app.bsky.%'\n // text_pattern_ops enables btree-scannable prefix matching (supported since Postgres 8.x)\n await sql`CREATE INDEX idx_report_record_path_pattern ON report\n (\"recordPath\" text_pattern_ops)`.execute(db)\n\n // Queue-router covering partial: index-only scan over unrouted, non-closed rows.\n // Selects exactly the columns the router reads, eliminating heap fetches per batch.\n await sql`CREATE INDEX idx_report_unassigned_id ON report (id)\n INCLUDE (status, \"reportType\", \"recordPath\", \"subjectMessageId\")\n WHERE \"queueId\" IS NULL AND status != 'closed'`.execute(db)\n\n // Index for report statistics\n await db.schema\n .createIndex('idx_report_queue_created_id')\n .on('report')\n .columns(['queueId', 'createdAt', 'id'])\n .execute()\n\n // aggregate pending count query\n await sql`CREATE INDEX idx_report_pending ON report (id) WHERE status != 'closed'`.execute(\n db,\n )\n // per-queue pending count query\n await sql`CREATE INDEX idx_report_queue_pending ON report (\"queueId\") WHERE status != 'closed'`.execute(\n db,\n )\n\n // Queue-router event-source partial: scans new modEventReport rows by id\n // for the daemon that inserts report rows from moderation_event.\n await sql`CREATE INDEX moderation_event_report_id_idx\n ON moderation_event (id)\n WHERE action = 'tools.ozone.moderation.defs#modEventReport'`.execute(db)\n\n // Stats windowed queries: aggregate/typeWindow filter by createdAt range and\n // include both open and closed reports, so they cannot use the partial indexes\n // above. (createdAt, reportType) ordering serves the date-range scan and\n // satisfies GROUP BY reportType from the index without a heap fetch.\n await sql`CREATE INDEX idx_report_created_type\n ON report (\"createdAt\", \"reportType\")`.execute(db)\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropIndex('moderation_event_report_id_idx').execute()\n await db.schema.dropTable('report').execute()\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260219T165302248Z-moderator-assignment.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20260219T165302248Z-moderator-assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAA;AAEpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.up = up;
|
|
4
|
+
exports.down = down;
|
|
5
|
+
const kysely_1 = require("kysely");
|
|
6
|
+
async function up(db) {
|
|
7
|
+
await db.schema
|
|
8
|
+
.createTable('moderator_assignment')
|
|
9
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
10
|
+
// assignee
|
|
11
|
+
.addColumn('did', 'text', (col) => col.notNull())
|
|
12
|
+
// assigned over
|
|
13
|
+
.addColumn('reportId', 'integer')
|
|
14
|
+
.addColumn('queueId', 'integer')
|
|
15
|
+
// validity
|
|
16
|
+
.addColumn('startAt', 'varchar', (col) => col.notNull())
|
|
17
|
+
.addColumn('endAt', 'varchar')
|
|
18
|
+
.execute();
|
|
19
|
+
// Partial index for getting active queue assignments
|
|
20
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_assignment_queue_active ON moderator_assignment ("endAt") WHERE "reportId" IS NULL`.execute(db);
|
|
21
|
+
// Partial index for getting active report assignments for queue
|
|
22
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_assignment_report_by_queue ON moderator_assignment ("queueId", "endAt") WHERE "reportId" IS NOT NULL`.execute(db);
|
|
23
|
+
// Index for checking active report assignment
|
|
24
|
+
await db.schema
|
|
25
|
+
.createIndex('idx_assignment_report_active')
|
|
26
|
+
.on('moderator_assignment')
|
|
27
|
+
.columns(['reportId', 'endAt'])
|
|
28
|
+
.execute();
|
|
29
|
+
// Partial index for permanent report assignments by moderator
|
|
30
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_assignment_permanent_did ON moderator_assignment (did, "reportId") WHERE "endAt" IS NULL`.execute(db);
|
|
31
|
+
}
|
|
32
|
+
async function down(db) {
|
|
33
|
+
await db.schema.dropTable('moderator_assignment').ifExists().execute();
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=20260219T165302248Z-moderator-assignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260219T165302248Z-moderator-assignment.js","sourceRoot":"","sources":["../../../src/db/migrations/20260219T165302248Z-moderator-assignment.ts"],"names":[],"mappings":";;AAEA,gBAmCC;AAED,oBAEC;AAzCD,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,sBAAsB,CAAC;SACnC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACrD,WAAW;SACV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjD,gBAAgB;SACf,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;SAChC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;QAChC,WAAW;SACV,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;SAC7B,OAAO,EAAE,CAAA;IAEZ,qDAAqD;IACrD,MAAM,IAAA,YAAG,EAAA,qGAAqG,CAAC,OAAO,CACpH,EAAE,CACH,CAAA;IAED,gEAAgE;IAChE,MAAM,IAAA,YAAG,EAAA,uHAAuH,CAAC,OAAO,CACtI,EAAE,CACH,CAAA;IAED,8CAA8C;IAC9C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,8BAA8B,CAAC;SAC3C,EAAE,CAAC,sBAAsB,CAAC;SAC1B,OAAO,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAC9B,OAAO,EAAE,CAAA;IAEZ,8DAA8D;IAC9D,MAAM,IAAA,YAAG,EAAA,2GAA2G,CAAC,OAAO,CAC1H,EAAE,CACH,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAA;AACxE,CAAC","sourcesContent":["import { Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('moderator_assignment')\n .addColumn('id', 'serial', (col) => col.primaryKey())\n // assignee\n .addColumn('did', 'text', (col) => col.notNull())\n // assigned over\n .addColumn('reportId', 'integer')\n .addColumn('queueId', 'integer')\n // validity\n .addColumn('startAt', 'varchar', (col) => col.notNull())\n .addColumn('endAt', 'varchar')\n .execute()\n\n // Partial index for getting active queue assignments\n await sql`CREATE INDEX idx_assignment_queue_active ON moderator_assignment (\"endAt\") WHERE \"reportId\" IS NULL`.execute(\n db,\n )\n\n // Partial index for getting active report assignments for queue\n await sql`CREATE INDEX idx_assignment_report_by_queue ON moderator_assignment (\"queueId\", \"endAt\") WHERE \"reportId\" IS NOT NULL`.execute(\n db,\n )\n\n // Index for checking active report assignment\n await db.schema\n .createIndex('idx_assignment_report_active')\n .on('moderator_assignment')\n .columns(['reportId', 'endAt'])\n .execute()\n\n // Partial index for permanent report assignments by moderator\n await sql`CREATE INDEX idx_assignment_permanent_did ON moderator_assignment (did, \"reportId\") WHERE \"endAt\" IS NULL`.execute(\n db,\n )\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('moderator_assignment').ifExists().execute()\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260225T000000000Z-add-report-queue-table.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20260225T000000000Z-add-report-queue-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAA;AAEpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.up = up;
|
|
4
|
+
exports.down = down;
|
|
5
|
+
const kysely_1 = require("kysely");
|
|
6
|
+
async function up(db) {
|
|
7
|
+
// Report queue configuration table
|
|
8
|
+
await db.schema
|
|
9
|
+
.createTable('report_queue')
|
|
10
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
11
|
+
.addColumn('name', 'varchar', (col) => col.notNull()) // uniqueness enforced via partial index below
|
|
12
|
+
.addColumn('description', 'varchar') // Optional description of the queue
|
|
13
|
+
// Queue filters (determine assignment)
|
|
14
|
+
.addColumn('subjectTypes', 'jsonb', (col) => col.notNull()) // Array: ['account'] or ['record'] or both
|
|
15
|
+
.addColumn('collection', 'varchar') // Collection name (e.g., 'app.bsky.feed.post'), NULL for accounts
|
|
16
|
+
.addColumn('reportTypes', 'jsonb', (col) => col.notNull()) // Array: report reason types
|
|
17
|
+
// Metadata
|
|
18
|
+
.addColumn('createdBy', 'varchar', (col) => col.notNull()) // DID of mod who created queue
|
|
19
|
+
.addColumn('createdAt', 'varchar', (col) => col.notNull())
|
|
20
|
+
.addColumn('updatedAt', 'varchar', (col) => col.notNull())
|
|
21
|
+
.addColumn('enabled', 'boolean', (col) => col.notNull().defaultTo(true))
|
|
22
|
+
.addColumn('deletedAt', 'varchar') // NULL = active, timestamp = soft-deleted
|
|
23
|
+
.execute();
|
|
24
|
+
// Partial unique index on name — only enforces uniqueness for non-deleted queues,
|
|
25
|
+
// so a soft-deleted queue's name can be reused by a new queue.
|
|
26
|
+
await (0, kysely_1.sql) `CREATE UNIQUE INDEX idx_queue_name_unique ON report_queue (name) WHERE "deletedAt" IS NULL`.execute(db);
|
|
27
|
+
// Partial composite index covers all list queries on active queues: filter by enabled,
|
|
28
|
+
// sort by createdAt/id. The WHERE clause keeps the index small (deleted rows excluded).
|
|
29
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_queue_active ON report_queue (enabled, "createdAt", id) WHERE "deletedAt" IS NULL`.execute(db);
|
|
30
|
+
}
|
|
31
|
+
async function down(db) {
|
|
32
|
+
await db.schema.dropIndex('idx_queue_name_unique').execute();
|
|
33
|
+
await db.schema.dropIndex('idx_queue_active').execute();
|
|
34
|
+
await db.schema.dropTable('report_queue').execute();
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=20260225T000000000Z-add-report-queue-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260225T000000000Z-add-report-queue-table.js","sourceRoot":"","sources":["../../../src/db/migrations/20260225T000000000Z-add-report-queue-table.ts"],"names":[],"mappings":";;AAEA,gBAgCC;AAED,oBAIC;AAxCD,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,mCAAmC;IACnC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,cAAc,CAAC;SAC3B,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACpD,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,8CAA8C;SACnG,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,oCAAoC;QAEzE,uCAAuC;SACtC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,2CAA2C;SACtG,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,kEAAkE;SACrG,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,6BAA6B;QAExF,WAAW;SACV,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,+BAA+B;SACzF,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACvE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,0CAA0C;SAC5E,OAAO,EAAE,CAAA;IAEZ,kFAAkF;IAClF,+DAA+D;IAC/D,MAAM,IAAA,YAAG,EAAA,4FAA4F,CAAC,OAAO,CAC3G,EAAE,CACH,CAAA;IAED,uFAAuF;IACvF,wFAAwF;IACxF,MAAM,IAAA,YAAG,EAAA,oGAAoG,CAAC,OAAO,CACnH,EAAE,CACH,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAA;IAC5D,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAA;IACvD,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAA;AACrD,CAAC","sourcesContent":["import { Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n // Report queue configuration table\n await db.schema\n .createTable('report_queue')\n .addColumn('id', 'serial', (col) => col.primaryKey())\n .addColumn('name', 'varchar', (col) => col.notNull()) // uniqueness enforced via partial index below\n .addColumn('description', 'varchar') // Optional description of the queue\n\n // Queue filters (determine assignment)\n .addColumn('subjectTypes', 'jsonb', (col) => col.notNull()) // Array: ['account'] or ['record'] or both\n .addColumn('collection', 'varchar') // Collection name (e.g., 'app.bsky.feed.post'), NULL for accounts\n .addColumn('reportTypes', 'jsonb', (col) => col.notNull()) // Array: report reason types\n\n // Metadata\n .addColumn('createdBy', 'varchar', (col) => col.notNull()) // DID of mod who created queue\n .addColumn('createdAt', 'varchar', (col) => col.notNull())\n .addColumn('updatedAt', 'varchar', (col) => col.notNull())\n .addColumn('enabled', 'boolean', (col) => col.notNull().defaultTo(true))\n .addColumn('deletedAt', 'varchar') // NULL = active, timestamp = soft-deleted\n .execute()\n\n // Partial unique index on name — only enforces uniqueness for non-deleted queues,\n // so a soft-deleted queue's name can be reused by a new queue.\n await sql`CREATE UNIQUE INDEX idx_queue_name_unique ON report_queue (name) WHERE \"deletedAt\" IS NULL`.execute(\n db,\n )\n\n // Partial composite index covers all list queries on active queues: filter by enabled,\n // sort by createdAt/id. The WHERE clause keeps the index small (deleted rows excluded).\n await sql`CREATE INDEX idx_queue_active ON report_queue (enabled, \"createdAt\", id) WHERE \"deletedAt\" IS NULL`.execute(\n db,\n )\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropIndex('idx_queue_name_unique').execute()\n await db.schema.dropIndex('idx_queue_active').execute()\n await db.schema.dropTable('report_queue').execute()\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260313T000000000Z-add-report-activity-table.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20260313T000000000Z-add-report-activity-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAA;AAEpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.up = up;
|
|
4
|
+
exports.down = down;
|
|
5
|
+
const kysely_1 = require("kysely");
|
|
6
|
+
async function up(db) {
|
|
7
|
+
await db.schema
|
|
8
|
+
.createTable('report_activity')
|
|
9
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
10
|
+
.addColumn('reportId', 'integer', (col) => col.notNull())
|
|
11
|
+
// Discriminator: one of queueActivity | assignmentActivity | escalationActivity
|
|
12
|
+
// | closeActivity | internalNoteActivity | publicNoteActivity
|
|
13
|
+
.addColumn('activityType', 'varchar', (col) => col.notNull())
|
|
14
|
+
// The report's status at the moment this activity was recorded.
|
|
15
|
+
// Populated for state-change activity types; null for note-only activities.
|
|
16
|
+
.addColumn('previousStatus', 'varchar')
|
|
17
|
+
// Note fields — separated by audience
|
|
18
|
+
.addColumn('internalNote', 'text') // moderator-only
|
|
19
|
+
.addColumn('publicNote', 'text') // potentially reporter-visible
|
|
20
|
+
// Free-form JSON for loose activity-specific metadata (e.g. { assignmentId: 42 })
|
|
21
|
+
.addColumn('meta', 'jsonb')
|
|
22
|
+
// True when created by an automated process (e.g. queue router)
|
|
23
|
+
.addColumn('isAutomated', 'boolean', (col) => col.notNull().defaultTo(false))
|
|
24
|
+
.addColumn('createdBy', 'text', (col) => col.notNull())
|
|
25
|
+
.addColumn('createdAt', 'varchar', (col) => col.notNull())
|
|
26
|
+
.execute();
|
|
27
|
+
// Primary filter: all activities for a given report, sorted most-recent-first
|
|
28
|
+
await db.schema
|
|
29
|
+
.createIndex('idx_report_activity_report_created')
|
|
30
|
+
.on('report_activity')
|
|
31
|
+
.columns(['reportId', 'createdAt', 'id'])
|
|
32
|
+
.execute();
|
|
33
|
+
// Partial index to efficiently find automated activities per report
|
|
34
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_activity_automated ON report_activity ("reportId", "createdAt", id) WHERE "isAutomated" = true`.execute(db);
|
|
35
|
+
}
|
|
36
|
+
async function down(db) {
|
|
37
|
+
await db.schema.dropTable('report_activity').execute();
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=20260313T000000000Z-add-report-activity-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260313T000000000Z-add-report-activity-table.js","sourceRoot":"","sources":["../../../src/db/migrations/20260313T000000000Z-add-report-activity-table.ts"],"names":[],"mappings":";;AAEA,gBAyCC;AAED,oBAEC;AA/CD,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,iBAAiB,CAAC;SAC9B,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACpD,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEzD,gFAAgF;QAChF,qFAAqF;SACpF,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAE7D,gEAAgE;QAChE,4EAA4E;SAC3E,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC;QAEvC,sCAAsC;SACrC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,iBAAiB;SACnD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,+BAA+B;QAEhE,kFAAkF;SACjF,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;QAE3B,gEAAgE;SAC/D,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAC3C,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAC/B;SAEA,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACtD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,OAAO,EAAE,CAAA;IAEZ,8EAA8E;IAC9E,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,oCAAoC,CAAC;SACjD,EAAE,CAAC,iBAAiB,CAAC;SACrB,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;SACxC,OAAO,EAAE,CAAA;IAEZ,oEAAoE;IACpE,MAAM,IAAA,YAAG,EAAA,wHAAwH,CAAC,OAAO,CACvI,EAAE,CACH,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAA;AACxD,CAAC","sourcesContent":["import { Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('report_activity')\n .addColumn('id', 'serial', (col) => col.primaryKey())\n .addColumn('reportId', 'integer', (col) => col.notNull())\n\n // Discriminator: one of queueActivity | assignmentActivity | escalationActivity\n // | closeActivity | internalNoteActivity | publicNoteActivity\n .addColumn('activityType', 'varchar', (col) => col.notNull())\n\n // The report's status at the moment this activity was recorded.\n // Populated for state-change activity types; null for note-only activities.\n .addColumn('previousStatus', 'varchar')\n\n // Note fields — separated by audience\n .addColumn('internalNote', 'text') // moderator-only\n .addColumn('publicNote', 'text') // potentially reporter-visible\n\n // Free-form JSON for loose activity-specific metadata (e.g. { assignmentId: 42 })\n .addColumn('meta', 'jsonb')\n\n // True when created by an automated process (e.g. queue router)\n .addColumn('isAutomated', 'boolean', (col) =>\n col.notNull().defaultTo(false),\n )\n\n .addColumn('createdBy', 'text', (col) => col.notNull())\n .addColumn('createdAt', 'varchar', (col) => col.notNull())\n .execute()\n\n // Primary filter: all activities for a given report, sorted most-recent-first\n await db.schema\n .createIndex('idx_report_activity_report_created')\n .on('report_activity')\n .columns(['reportId', 'createdAt', 'id'])\n .execute()\n\n // Partial index to efficiently find automated activities per report\n await sql`CREATE INDEX idx_report_activity_automated ON report_activity (\"reportId\", \"createdAt\", id) WHERE \"isAutomated\" = true`.execute(\n db,\n )\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('report_activity').execute()\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260318T152058935Z-add-report-stat.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20260318T152058935Z-add-report-stat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAA;AAEpC,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.up = up;
|
|
4
|
+
exports.down = down;
|
|
5
|
+
const kysely_1 = require("kysely");
|
|
6
|
+
async function up(db) {
|
|
7
|
+
await db.schema
|
|
8
|
+
.createTable('report_stat')
|
|
9
|
+
// metadata
|
|
10
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
11
|
+
.addColumn('computedAt', 'varchar', (col) => col.notNull())
|
|
12
|
+
// group
|
|
13
|
+
.addColumn('date', 'varchar', (col) => col.notNull()) // ISO date e.g. '2026-04-15'
|
|
14
|
+
.addColumn('queueId', 'integer') // NULL = aggregate across all queues
|
|
15
|
+
.addColumn('reportTypes', 'jsonb') // NULL = aggregate across all report types
|
|
16
|
+
.addColumn('moderatorDid', 'varchar') // NULL = aggregate across all moderators
|
|
17
|
+
// stats
|
|
18
|
+
.addColumn('inboundCount', 'integer')
|
|
19
|
+
.addColumn('pendingCount', 'integer')
|
|
20
|
+
.addColumn('actionedCount', 'integer')
|
|
21
|
+
.addColumn('escalatedCount', 'integer')
|
|
22
|
+
.addColumn('actionRate', 'integer')
|
|
23
|
+
.addColumn('avgHandlingTimeSec', 'integer')
|
|
24
|
+
.execute();
|
|
25
|
+
// Lookup by date + group dimensions (covers getLiveStats and getHistoricalStats queries)
|
|
26
|
+
await (0, kysely_1.sql) `CREATE INDEX idx_report_stat_lookup ON report_stat (
|
|
27
|
+
date, "queueId", "moderatorDid", "reportTypes", "computedAt"
|
|
28
|
+
)`.execute(db);
|
|
29
|
+
}
|
|
30
|
+
async function down(db) {
|
|
31
|
+
await db.schema.dropIndex('idx_report_stat_lookup').ifExists().execute();
|
|
32
|
+
await db.schema.dropTable('report_stat').ifExists().execute();
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=20260318T152058935Z-add-report-stat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260318T152058935Z-add-report-stat.js","sourceRoot":"","sources":["../../../src/db/migrations/20260318T152058935Z-add-report-stat.ts"],"names":[],"mappings":";;AAEA,gBA2BC;AAED,oBAGC;AAlCD,mCAAoC;AAE7B,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,aAAa,CAAC;QAE3B,WAAW;SACV,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACpD,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAE3D,QAAQ;SACP,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,6BAA6B;SAClF,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,qCAAqC;SACrE,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,2CAA2C;SAC7E,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,yCAAyC;QAE/E,QAAQ;SACP,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC;SACpC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC;SACpC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC;SACrC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACtC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC;SAClC,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC;SAC1C,OAAO,EAAE,CAAA;IAEZ,yFAAyF;IACzF,MAAM,IAAA,YAAG,EAAA;;IAEP,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAChB,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAA;IACxE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAA;AAC/D,CAAC","sourcesContent":["import { Kysely, sql } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('report_stat')\n\n // metadata\n .addColumn('id', 'serial', (col) => col.primaryKey())\n .addColumn('computedAt', 'varchar', (col) => col.notNull())\n\n // group\n .addColumn('date', 'varchar', (col) => col.notNull()) // ISO date e.g. '2026-04-15'\n .addColumn('queueId', 'integer') // NULL = aggregate across all queues\n .addColumn('reportTypes', 'jsonb') // NULL = aggregate across all report types\n .addColumn('moderatorDid', 'varchar') // NULL = aggregate across all moderators\n\n // stats\n .addColumn('inboundCount', 'integer')\n .addColumn('pendingCount', 'integer')\n .addColumn('actionedCount', 'integer')\n .addColumn('escalatedCount', 'integer')\n .addColumn('actionRate', 'integer')\n .addColumn('avgHandlingTimeSec', 'integer')\n .execute()\n\n // Lookup by date + group dimensions (covers getLiveStats and getHistoricalStats queries)\n await sql`CREATE INDEX idx_report_stat_lookup ON report_stat (\n date, \"queueId\", \"moderatorDid\", \"reportTypes\", \"computedAt\"\n )`.execute(db)\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropIndex('idx_report_stat_lookup').ifExists().execute()\n await db.schema.dropTable('report_stat').ifExists().execute()\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260428T000000000Z-add-expiring-tag-table.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.up = up;
|
|
4
|
+
exports.down = down;
|
|
5
|
+
async function up(db) {
|
|
6
|
+
await db.schema
|
|
7
|
+
.createTable('expiring_tag')
|
|
8
|
+
.addColumn('id', 'serial', (col) => col.primaryKey())
|
|
9
|
+
.addColumn('eventId', 'integer', (col) => col.notNull())
|
|
10
|
+
.addColumn('did', 'varchar', (col) => col.notNull())
|
|
11
|
+
.addColumn('recordPath', 'varchar', (col) => col.notNull())
|
|
12
|
+
.addColumn('tag', 'varchar', (col) => col.notNull())
|
|
13
|
+
.addColumn('expiresAt', 'varchar', (col) => col.notNull())
|
|
14
|
+
.addColumn('createdBy', 'varchar', (col) => col.notNull())
|
|
15
|
+
.execute();
|
|
16
|
+
// Daemon polls for expired tags
|
|
17
|
+
await db.schema
|
|
18
|
+
.createIndex('idx_expiring_tag_expires_at')
|
|
19
|
+
.on('expiring_tag')
|
|
20
|
+
.column('expiresAt')
|
|
21
|
+
.execute();
|
|
22
|
+
// Cleanup queries when tags are manually removed
|
|
23
|
+
await db.schema
|
|
24
|
+
.createIndex('idx_expiring_tag_did_record_path')
|
|
25
|
+
.on('expiring_tag')
|
|
26
|
+
.columns(['did', 'recordPath'])
|
|
27
|
+
.execute();
|
|
28
|
+
}
|
|
29
|
+
async function down(db) {
|
|
30
|
+
await db.schema.dropTable('expiring_tag').execute();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=20260428T000000000Z-add-expiring-tag-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260428T000000000Z-add-expiring-tag-table.js","sourceRoot":"","sources":["../../../src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts"],"names":[],"mappings":";;AAEA,gBAyBC;AAED,oBAEC;AA7BM,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,cAAc,CAAC;SAC3B,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACpD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC1D,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,OAAO,EAAE,CAAA;IAEZ,gCAAgC;IAChC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,6BAA6B,CAAC;SAC1C,EAAE,CAAC,cAAc,CAAC;SAClB,MAAM,CAAC,WAAW,CAAC;SACnB,OAAO,EAAE,CAAA;IAEZ,iDAAiD;IACjD,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kCAAkC,CAAC;SAC/C,EAAE,CAAC,cAAc,CAAC;SAClB,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SAC9B,OAAO,EAAE,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAA;AACrD,CAAC","sourcesContent":["import { Kysely } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('expiring_tag')\n .addColumn('id', 'serial', (col) => col.primaryKey())\n .addColumn('eventId', 'integer', (col) => col.notNull())\n .addColumn('did', 'varchar', (col) => col.notNull())\n .addColumn('recordPath', 'varchar', (col) => col.notNull())\n .addColumn('tag', 'varchar', (col) => col.notNull())\n .addColumn('expiresAt', 'varchar', (col) => col.notNull())\n .addColumn('createdBy', 'varchar', (col) => col.notNull())\n .execute()\n\n // Daemon polls for expired tags\n await db.schema\n .createIndex('idx_expiring_tag_expires_at')\n .on('expiring_tag')\n .column('expiresAt')\n .execute()\n\n // Cleanup queries when tags are manually removed\n await db.schema\n .createIndex('idx_expiring_tag_did_record_path')\n .on('expiring_tag')\n .columns(['did', 'recordPath'])\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('expiring_tag').execute()\n}\n"]}
|
|
@@ -30,4 +30,10 @@ export * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-i
|
|
|
30
30
|
export * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions';
|
|
31
31
|
export * as _20251008T120000000Z from './20251008T120000000Z-add-strike-system';
|
|
32
32
|
export * as _20260210T154806448Z from './20260210T154806448Z-mod-event-created-by-indexes';
|
|
33
|
+
export * as _20260219T164523000Z from './20260219T164523000Z-create-report-table';
|
|
34
|
+
export * as _20260219T165302248Z from './20260219T165302248Z-moderator-assignment';
|
|
35
|
+
export * as _20260225T000000000Z from './20260225T000000000Z-add-report-queue-table';
|
|
36
|
+
export * as _20260313T000000000Z from './20260313T000000000Z-add-report-activity-table';
|
|
37
|
+
export * as _20260318T152058935Z from './20260318T152058935Z-add-report-stat';
|
|
38
|
+
export * as _20260428T000000000Z from './20260428T000000000Z-add-expiring-tag-table';
|
|
33
39
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6DAA6D,CAAA;AACnG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,oBAAoB,MAAM,yDAAyD,CAAA;AAC/F,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,oBAAoB,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,oDAAoD,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6DAA6D,CAAA;AACnG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,oBAAoB,MAAM,yDAAyD,CAAA;AAC/F,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,oBAAoB,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,oDAAoD,CAAA;AAC1F,OAAO,KAAK,oBAAoB,MAAM,2CAA2C,CAAA;AACjF,OAAO,KAAK,oBAAoB,MAAM,4CAA4C,CAAA;AAClF,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA"}
|
|
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports._20260210T154806448Z = exports._20251008T120000000Z = exports._20250923T000000000Z = exports._20250813T000000000Z = exports._20250718T150931000Z = exports._20250715T000000000Z = exports._20250701T000000000Z = exports._20250618T180246000Z = exports._20250609T110704000Z = exports._20250417T201720309Z = exports._20250415T201720309Z = exports._20250404T201720309Z = exports._20250221T132135150Z = exports._20250211T132135150Z = exports._20250211T003647759Z = exports._20250204T003647759Z = exports._20241220T144630860Z = exports._20241026T205730722Z = exports._20241018T205730722Z = exports._20241008T205730722Z = exports._20241001T205730722Z = exports._20240904T205730722Z = exports._20240903T205730722Z = exports._20240814T003647759Z = exports._20240430T211332580Z = exports._20240506T225055595Z = exports._20240408T192432676Z = exports._20240228T003647759Z = exports._20240208T213404429Z = exports._20240201T051104136Z = exports._20240116T085607200Z = exports._20231219T205730722Z = void 0;
|
|
39
|
+
exports._20260428T000000000Z = exports._20260318T152058935Z = exports._20260313T000000000Z = exports._20260225T000000000Z = exports._20260219T165302248Z = exports._20260219T164523000Z = exports._20260210T154806448Z = exports._20251008T120000000Z = exports._20250923T000000000Z = exports._20250813T000000000Z = exports._20250718T150931000Z = exports._20250715T000000000Z = exports._20250701T000000000Z = exports._20250618T180246000Z = exports._20250609T110704000Z = exports._20250417T201720309Z = exports._20250415T201720309Z = exports._20250404T201720309Z = exports._20250221T132135150Z = exports._20250211T132135150Z = exports._20250211T003647759Z = exports._20250204T003647759Z = exports._20241220T144630860Z = exports._20241026T205730722Z = exports._20241018T205730722Z = exports._20241008T205730722Z = exports._20241001T205730722Z = exports._20240904T205730722Z = exports._20240903T205730722Z = exports._20240814T003647759Z = exports._20240430T211332580Z = exports._20240506T225055595Z = exports._20240408T192432676Z = exports._20240228T003647759Z = exports._20240208T213404429Z = exports._20240201T051104136Z = exports._20240116T085607200Z = exports._20231219T205730722Z = void 0;
|
|
40
40
|
exports._20231219T205730722Z = __importStar(require("./20231219T205730722Z-init"));
|
|
41
41
|
exports._20240116T085607200Z = __importStar(require("./20240116T085607200Z-communication-template"));
|
|
42
42
|
exports._20240201T051104136Z = __importStar(require("./20240201T051104136Z-mod-event-blobs"));
|
|
@@ -69,4 +69,10 @@ exports._20250813T000000000Z = __importStar(require("./20250813T000000000Z-mod-t
|
|
|
69
69
|
exports._20250923T000000000Z = __importStar(require("./20250923T000000000Z-scheduled-actions"));
|
|
70
70
|
exports._20251008T120000000Z = __importStar(require("./20251008T120000000Z-add-strike-system"));
|
|
71
71
|
exports._20260210T154806448Z = __importStar(require("./20260210T154806448Z-mod-event-created-by-indexes"));
|
|
72
|
+
exports._20260219T164523000Z = __importStar(require("./20260219T164523000Z-create-report-table"));
|
|
73
|
+
exports._20260219T165302248Z = __importStar(require("./20260219T165302248Z-moderator-assignment"));
|
|
74
|
+
exports._20260225T000000000Z = __importStar(require("./20260225T000000000Z-add-report-queue-table"));
|
|
75
|
+
exports._20260313T000000000Z = __importStar(require("./20260313T000000000Z-add-report-activity-table"));
|
|
76
|
+
exports._20260318T152058935Z = __importStar(require("./20260318T152058935Z-add-report-stat"));
|
|
77
|
+
exports._20260428T000000000Z = __importStar(require("./20260428T000000000Z-add-expiring-tag-table"));
|
|
72
78
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE;AAClE,qGAAoF;AACpF,8FAA6E;AAC7E,oHAAmG;AACnG,6FAA4E;AAC5E,6FAA4E;AAC5E,8FAA6E;AAC7E,qFAAoE;AACpE,qGAAoF;AACpF,gGAA+E;AAC/E,oGAAmF;AACnF,gHAA+F;AAC/F,mFAAkE;AAClE,sFAAqE;AACrE,mHAAkG;AAClG,uGAAsF;AACtF,yGAAwF;AACxF,uGAAsF;AACtF,mHAAkG;AAClG,6FAA4E;AAC5E,uGAAsF;AACtF,2FAA0E;AAC1E,8FAA6E;AAC7E,uFAAsE;AACtE,+GAA8F;AAC9F,sGAAqF;AACrF,wGAAuF;AACvF,yGAAwF;AACxF,sGAAqF;AACrF,gGAA+E;AAC/E,gGAA+E;AAC/E,2GAA0F","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20231219T205730722Z from './20231219T205730722Z-init'\nexport * as _20240116T085607200Z from './20240116T085607200Z-communication-template'\nexport * as _20240201T051104136Z from './20240201T051104136Z-mod-event-blobs'\nexport * as _20240208T213404429Z from './20240208T213404429Z-add-tags-column-to-moderation-subject'\nexport * as _20240228T003647759Z from './20240228T003647759Z-add-label-sigs'\nexport * as _20240408T192432676Z from './20240408T192432676Z-mute-reporting'\nexport * as _20240506T225055595Z from './20240506T225055595Z-message-subject'\nexport * as _20240430T211332580Z from './20240521T211332580Z-member'\nexport * as _20240814T003647759Z from './20240814T003647759Z-event-created-at-index'\nexport * as _20240903T205730722Z from './20240903T205730722Z-add-template-lang'\nexport * as _20240904T205730722Z from './20240904T205730722Z-add-subject-did-index'\nexport * as _20241001T205730722Z from './20241001T205730722Z-subject-status-review-state-index'\nexport * as _20241008T205730722Z from './20241008T205730722Z-sets'\nexport * as _20241018T205730722Z from './20241018T205730722Z-setting'\nexport * as _20241026T205730722Z from './20241026T205730722Z-add-hosting-status-to-subject-status'\nexport * as _20241220T144630860Z from './20241220T144630860Z-stats-materialized-views'\nexport * as _20250204T003647759Z from './20250204T003647759Z-add-subject-priority-score'\nexport * as _20250211T003647759Z from './20250211T003647759Z-add-reporter-stats-index'\nexport * as _20250211T132135150Z from './20250211T132135150Z-moderation-event-message-partial-idx'\nexport * as _20250221T132135150Z from './20250221T132135150Z-member-details'\nexport * as _20250404T201720309Z from './20250404T201720309Z-subject-status-sort-idxs'\nexport * as _20250415T201720309Z from './20250415T201720309Z-verification'\nexport * as _20250417T201720309Z from './20250417T201720309Z-firehose-cursor'\nexport * as _20250609T110704000Z from './20250609T110704000Z-safelink'\nexport * as _20250618T180246000Z from './20250618T180246000Z-add-mod-tool-to-moderation-event'\nexport * as _20250701T000000000Z from './20250701T000000000Z-add-age-assurance-state'\nexport * as _20250715T000000000Z from './20250715T000000000Z-add-mod-event-external-id'\nexport * as _20250718T150931000Z from './20250718T150931000Z-update-appeal-reason-stats'\nexport * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-index'\nexport * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions'\nexport * as _20251008T120000000Z from './20251008T120000000Z-add-strike-system'\nexport * as _20260210T154806448Z from './20260210T154806448Z-mod-event-created-by-indexes'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE;AAClE,qGAAoF;AACpF,8FAA6E;AAC7E,oHAAmG;AACnG,6FAA4E;AAC5E,6FAA4E;AAC5E,8FAA6E;AAC7E,qFAAoE;AACpE,qGAAoF;AACpF,gGAA+E;AAC/E,oGAAmF;AACnF,gHAA+F;AAC/F,mFAAkE;AAClE,sFAAqE;AACrE,mHAAkG;AAClG,uGAAsF;AACtF,yGAAwF;AACxF,uGAAsF;AACtF,mHAAkG;AAClG,6FAA4E;AAC5E,uGAAsF;AACtF,2FAA0E;AAC1E,8FAA6E;AAC7E,uFAAsE;AACtE,+GAA8F;AAC9F,sGAAqF;AACrF,wGAAuF;AACvF,yGAAwF;AACxF,sGAAqF;AACrF,gGAA+E;AAC/E,gGAA+E;AAC/E,2GAA0F;AAC1F,kGAAiF;AACjF,mGAAkF;AAClF,qGAAoF;AACpF,wGAAuF;AACvF,8FAA6E;AAC7E,qGAAoF","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20231219T205730722Z from './20231219T205730722Z-init'\nexport * as _20240116T085607200Z from './20240116T085607200Z-communication-template'\nexport * as _20240201T051104136Z from './20240201T051104136Z-mod-event-blobs'\nexport * as _20240208T213404429Z from './20240208T213404429Z-add-tags-column-to-moderation-subject'\nexport * as _20240228T003647759Z from './20240228T003647759Z-add-label-sigs'\nexport * as _20240408T192432676Z from './20240408T192432676Z-mute-reporting'\nexport * as _20240506T225055595Z from './20240506T225055595Z-message-subject'\nexport * as _20240430T211332580Z from './20240521T211332580Z-member'\nexport * as _20240814T003647759Z from './20240814T003647759Z-event-created-at-index'\nexport * as _20240903T205730722Z from './20240903T205730722Z-add-template-lang'\nexport * as _20240904T205730722Z from './20240904T205730722Z-add-subject-did-index'\nexport * as _20241001T205730722Z from './20241001T205730722Z-subject-status-review-state-index'\nexport * as _20241008T205730722Z from './20241008T205730722Z-sets'\nexport * as _20241018T205730722Z from './20241018T205730722Z-setting'\nexport * as _20241026T205730722Z from './20241026T205730722Z-add-hosting-status-to-subject-status'\nexport * as _20241220T144630860Z from './20241220T144630860Z-stats-materialized-views'\nexport * as _20250204T003647759Z from './20250204T003647759Z-add-subject-priority-score'\nexport * as _20250211T003647759Z from './20250211T003647759Z-add-reporter-stats-index'\nexport * as _20250211T132135150Z from './20250211T132135150Z-moderation-event-message-partial-idx'\nexport * as _20250221T132135150Z from './20250221T132135150Z-member-details'\nexport * as _20250404T201720309Z from './20250404T201720309Z-subject-status-sort-idxs'\nexport * as _20250415T201720309Z from './20250415T201720309Z-verification'\nexport * as _20250417T201720309Z from './20250417T201720309Z-firehose-cursor'\nexport * as _20250609T110704000Z from './20250609T110704000Z-safelink'\nexport * as _20250618T180246000Z from './20250618T180246000Z-add-mod-tool-to-moderation-event'\nexport * as _20250701T000000000Z from './20250701T000000000Z-add-age-assurance-state'\nexport * as _20250715T000000000Z from './20250715T000000000Z-add-mod-event-external-id'\nexport * as _20250718T150931000Z from './20250718T150931000Z-update-appeal-reason-stats'\nexport * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-index'\nexport * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions'\nexport * as _20251008T120000000Z from './20251008T120000000Z-add-strike-system'\nexport * as _20260210T154806448Z from './20260210T154806448Z-mod-event-created-by-indexes'\nexport * as _20260219T164523000Z from './20260219T164523000Z-create-report-table'\nexport * as _20260219T165302248Z from './20260219T165302248Z-moderator-assignment'\nexport * as _20260225T000000000Z from './20260225T000000000Z-add-report-queue-table'\nexport * as _20260313T000000000Z from './20260313T000000000Z-add-report-activity-table'\nexport * as _20260318T152058935Z from './20260318T152058935Z-add-report-stat'\nexport * as _20260428T000000000Z from './20260428T000000000Z-add-expiring-tag-table'\n"]}
|
package/dist/db/pagination.d.ts
CHANGED
|
@@ -84,6 +84,37 @@ export declare class CreatedAtUriKeyset extends GenericKeyset<CreatedAtUriKeyset
|
|
|
84
84
|
secondary: string;
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
|
+
type EndAtIdKeysetParam = {
|
|
88
|
+
id: number;
|
|
89
|
+
endAt: string | null;
|
|
90
|
+
};
|
|
91
|
+
export declare class EndAtIdKeyset extends GenericKeyset<EndAtIdKeysetParam, Cursor> {
|
|
92
|
+
labelResult(result: EndAtIdKeysetParam): Cursor;
|
|
93
|
+
labeledResultToCursor(labeled: Cursor): {
|
|
94
|
+
primary: string;
|
|
95
|
+
secondary: string;
|
|
96
|
+
};
|
|
97
|
+
cursorToLabeledResult(cursor: Cursor): {
|
|
98
|
+
primary: string;
|
|
99
|
+
secondary: string;
|
|
100
|
+
};
|
|
101
|
+
getSql(labeled?: Cursor, direction?: 'asc' | 'desc', tryIndex?: boolean): import("kysely").RawBuilder<unknown> | undefined;
|
|
102
|
+
}
|
|
103
|
+
type ComputedAtIdKeysetParam = {
|
|
104
|
+
id: number;
|
|
105
|
+
computedAt: string | Date;
|
|
106
|
+
};
|
|
107
|
+
export declare class ComputedAtIdKeyset extends GenericKeyset<ComputedAtIdKeysetParam, Cursor> {
|
|
108
|
+
labelResult(result: ComputedAtIdKeysetParam): Cursor;
|
|
109
|
+
labeledResultToCursor(labeled: Cursor): {
|
|
110
|
+
primary: string;
|
|
111
|
+
secondary: string;
|
|
112
|
+
};
|
|
113
|
+
cursorToLabeledResult(cursor: Cursor): {
|
|
114
|
+
primary: string;
|
|
115
|
+
secondary: string;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
87
118
|
export declare const paginate: <QB extends AnyQb, K extends GenericKeyset<unknown, any>>(qb: QB, opts: {
|
|
88
119
|
limit?: number;
|
|
89
120
|
cursor?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/db/pagination.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/db/pagination.ts"],"names":[],"mappings":"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"}
|