@atproto/ozone 0.1.173 → 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 +9 -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/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/index.d.ts +5 -0
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +6 -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/index.d.ts +6 -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 +10535 -7389
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +1789 -122
- 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/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/index.d.ts +3 -1
- package/dist/mod-service/index.d.ts.map +1 -1
- package/dist/mod-service/index.js +39 -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 +20 -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/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/index.ts +5 -0
- package/src/db/pagination.ts +85 -0
- package/src/db/schema/index.ts +10 -0
- 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 +1910 -160
- package/src/lexicon/types/app/bsky/embed/external.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/index.ts +45 -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/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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAKxC,eAAO,MAAM,QAAQ,GAAI,KAAK,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAKxC,eAAO,MAAM,QAAQ,GAAI,KAAK,gBAAgB,KAAG,WA6GhD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,aAAa,CAAA;IACtB,EAAE,EAAE,cAAc,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,GAAG,EAAE,SAAS,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,GAAG,EAAE,SAAS,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACnC,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,uBAAuB,EAAE,MAAM,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iCAAiC,CAAC,EAAE,MAAM,CAAA;IAC1C,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA"}
|
package/dist/config/config.js
CHANGED
|
@@ -83,6 +83,13 @@ const envToCfg = (env) => {
|
|
|
83
83
|
issuersToIndex: env.verifierIssuersToIndex,
|
|
84
84
|
}
|
|
85
85
|
: null;
|
|
86
|
+
const assignmentsCfg = {
|
|
87
|
+
queueDurationMs: env.assignmentQueueDurationMs ?? 5 * common_1.MINUTE,
|
|
88
|
+
reportDurationMs: env.assignmentReportDurationMs ?? 5 * common_1.MINUTE,
|
|
89
|
+
};
|
|
90
|
+
const statsCfg = {
|
|
91
|
+
computerIntervalMinutes: env.statsComputerIntervalMinutes ?? 15,
|
|
92
|
+
};
|
|
86
93
|
return {
|
|
87
94
|
service: serviceCfg,
|
|
88
95
|
db: dbCfg,
|
|
@@ -94,6 +101,8 @@ const envToCfg = (env) => {
|
|
|
94
101
|
blobDivert: blobDivertServiceCfg,
|
|
95
102
|
access: accessCfg,
|
|
96
103
|
verifier: verifierCfg,
|
|
104
|
+
assignments: assignmentsCfg,
|
|
105
|
+
stats: statsCfg,
|
|
97
106
|
jetstreamUrl: env.jetstreamUrl,
|
|
98
107
|
};
|
|
99
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { DAY, HOUR, MINUTE } from '@atproto/common'\nimport { OzoneEnvironment } from './env'\n\n// off-config but still from env:\n// logging: LOG_LEVEL, LOG_SYSTEMS, LOG_ENABLED, LOG_DESTINATION\n\nexport const envToCfg = (env: OzoneEnvironment): OzoneConfig => {\n const port = env.port ?? 3000\n assert(env.publicUrl, 'publicUrl is required')\n assert(env.serverDid, 'serverDid is required')\n const serviceCfg: OzoneConfig['service'] = {\n port,\n publicUrl: env.publicUrl,\n did: env.serverDid,\n version: env.version,\n devMode: env.devMode,\n serviceRecordCacheTTL: env.serviceRecordCacheTTL ?? 5 * MINUTE, // default 5 mins\n }\n\n assert(env.dbPostgresUrl, 'dbPostgresUrl is required')\n const dbCfg: OzoneConfig['db'] = {\n postgresUrl: env.dbPostgresUrl,\n postgresSchema: env.dbPostgresSchema,\n poolSize: env.dbPoolSize,\n poolMaxUses: env.dbPoolMaxUses,\n poolIdleTimeoutMs: env.dbPoolIdleTimeoutMs,\n materializedViewRefreshIntervalMs: env.dbMaterializedViewRefreshIntervalMs,\n teamProfileRefreshIntervalMs: env.dbTeamProfileRefreshIntervalMs,\n }\n\n assert(env.appviewUrl, 'appviewUrl is required')\n assert(env.appviewDid, 'appviewDid is required')\n const appviewCfg: OzoneConfig['appview'] = {\n url: env.appviewUrl,\n did: env.appviewDid,\n pushEvents: !!env.appviewPushEvents,\n }\n\n let pdsCfg: OzoneConfig['pds'] = null\n if (env.pdsUrl || env.pdsDid) {\n assert(env.pdsUrl, 'pdsUrl is required')\n assert(env.pdsDid, 'pdsDid is required')\n pdsCfg = {\n url: env.pdsUrl,\n did: env.pdsDid,\n }\n }\n\n let chatCfg: OzoneConfig['chat'] = null\n if (env.chatUrl || env.chatDid) {\n assert(env.chatUrl, 'chatUrl is required when chatDid is provided')\n assert(env.chatDid, 'chatDid is required when chatUrl is provided')\n chatCfg = {\n url: env.chatUrl,\n did: env.chatDid,\n }\n }\n\n const cdnCfg: OzoneConfig['cdn'] = {\n paths: env.cdnPaths,\n }\n\n assert(env.didPlcUrl, 'didPlcUrl is required')\n const identityCfg: OzoneConfig['identity'] = {\n plcUrl: env.didPlcUrl,\n cacheMaxTTL: env.didCacheMaxTTL ?? DAY,\n cacheStaleTTL: env.didCacheStaleTTL ?? HOUR,\n }\n\n const blobDivertServiceCfg =\n env.blobDivertUrl && env.blobDivertAdminPassword\n ? {\n url: env.blobDivertUrl,\n adminPassword: env.blobDivertAdminPassword,\n }\n : null\n const accessCfg: OzoneConfig['access'] = {\n admins: env.adminDids,\n moderators: env.moderatorDids,\n triage: env.triageDids,\n }\n const verifierCfg: OzoneConfig['verifier'] =\n env.verifierUrl && env.verifierDid && env.verifierPassword\n ? {\n url: env.verifierUrl,\n did: env.verifierDid,\n password: env.verifierPassword,\n issuersToIndex: env.verifierIssuersToIndex,\n }\n : null\n\n const assignmentsCfg: OzoneConfig['assignments'] = {\n queueDurationMs: env.assignmentQueueDurationMs ?? 5 * MINUTE,\n reportDurationMs: env.assignmentReportDurationMs ?? 5 * MINUTE,\n }\n\n const statsCfg: OzoneConfig['stats'] = {\n computerIntervalMinutes: env.statsComputerIntervalMinutes ?? 15,\n }\n\n return {\n service: serviceCfg,\n db: dbCfg,\n appview: appviewCfg,\n pds: pdsCfg,\n chat: chatCfg,\n cdn: cdnCfg,\n identity: identityCfg,\n blobDivert: blobDivertServiceCfg,\n access: accessCfg,\n verifier: verifierCfg,\n assignments: assignmentsCfg,\n stats: statsCfg,\n jetstreamUrl: env.jetstreamUrl,\n }\n}\n\nexport type OzoneConfig = {\n service: ServiceConfig\n db: DatabaseConfig\n appview: AppviewConfig\n pds: PdsConfig | null\n chat: ChatConfig | null\n cdn: CdnConfig\n identity: IdentityConfig\n blobDivert: BlobDivertConfig | null\n access: AccessConfig\n assignments: AssignmentsConfig\n stats: StatsConfig\n jetstreamUrl?: string\n verifier: VerifierConfig | null\n}\n\nexport type StatsConfig = {\n /**\n * Minutes between stats computer cycles.\n * Defaults to 15. Minimum is 1.\n * Set to -1 to disable the stats computer.\n */\n computerIntervalMinutes: number\n}\n\nexport type ServiceConfig = {\n port: number\n publicUrl: string\n did: string\n version?: string\n devMode?: boolean\n serviceRecordCacheTTL: number // in ms, default 5 mins\n}\n\nexport type BlobDivertConfig = {\n url: string\n adminPassword: string\n}\n\nexport type DatabaseConfig = {\n postgresUrl: string\n postgresSchema?: string\n poolSize?: number\n poolMaxUses?: number\n poolIdleTimeoutMs?: number\n materializedViewRefreshIntervalMs?: number\n teamProfileRefreshIntervalMs?: number\n}\n\nexport type AppviewConfig = {\n url: string\n did: string\n pushEvents: boolean\n}\n\nexport type PdsConfig = {\n url: string\n did: string\n}\n\nexport type ChatConfig = {\n url: string\n did: string\n}\n\nexport type CdnConfig = {\n paths?: string[]\n}\n\nexport type IdentityConfig = {\n plcUrl: string\n cacheStaleTTL: number\n cacheMaxTTL: number\n}\n\nexport type AccessConfig = {\n admins: string[]\n moderators: string[]\n triage: string[]\n}\n\nexport type VerifierConfig = {\n url: string\n did: string\n password: string\n jetstreamUrl?: string\n issuersToIndex?: string[]\n}\n\nexport type AssignmentsConfig = {\n queueDurationMs: number\n reportDurationMs: number\n}\n"]}
|
package/dist/config/env.d.ts
CHANGED
|
@@ -37,5 +37,8 @@ export type OzoneEnvironment = {
|
|
|
37
37
|
verifierPassword?: string;
|
|
38
38
|
verifierIssuersToIndex?: string[];
|
|
39
39
|
jetstreamUrl?: string;
|
|
40
|
+
assignmentQueueDurationMs?: number;
|
|
41
|
+
assignmentReportDurationMs?: number;
|
|
42
|
+
statsComputerIntervalMinutes?: number;
|
|
40
43
|
};
|
|
41
44
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/config/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAAO,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAAO,gBAiD1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mCAAmC,CAAC,EAAE,MAAM,CAAA;IAC5C,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC,CAAA"}
|
package/dist/config/env.js
CHANGED
|
@@ -41,6 +41,9 @@ const readEnv = () => {
|
|
|
41
41
|
verifierPassword: (0, common_1.envStr)('OZONE_VERIFIER_PASSWORD'),
|
|
42
42
|
verifierIssuersToIndex: (0, common_1.envList)('OZONE_VERIFIER_ISSUERS_TO_INDEX'),
|
|
43
43
|
jetstreamUrl: (0, common_1.envStr)('OZONE_JETSTREAM_URL'),
|
|
44
|
+
assignmentQueueDurationMs: (0, common_1.envInt)('OZONE_ASSIGNMENT_QUEUE_DURATION_MS'),
|
|
45
|
+
assignmentReportDurationMs: (0, common_1.envInt)('OZONE_ASSIGNMENT_REPORT_DURATION_MS'),
|
|
46
|
+
statsComputerIntervalMinutes: (0, common_1.envInt)('OZONE_STATS_COMPUTER_INTERVAL_MINUTES'),
|
|
44
47
|
};
|
|
45
48
|
};
|
|
46
49
|
exports.readEnv = readEnv;
|
package/dist/config/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":";;;AAAA,4CAAkE;AAE3D,MAAM,OAAO,GAAG,GAAqB,EAAE;IAC5C,OAAO;QACL,OAAO,EAAE,IAAA,eAAM,EAAC,UAAU,CAAC;QAC3B,OAAO,EAAE,IAAA,gBAAO,EAAC,gBAAgB,CAAC;QAClC,OAAO,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAChC,IAAI,EAAE,IAAA,eAAM,EAAC,YAAY,CAAC;QAC1B,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,qBAAqB,EAAE,IAAA,eAAM,EAAC,gCAAgC,CAAC;QAC/D,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,iBAAiB,EAAE,IAAA,gBAAO,EAAC,2BAA2B,CAAC;QACvD,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,gBAAgB,EAAE,IAAA,eAAM,EAAC,0BAA0B,CAAC;QACpD,UAAU,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,wBAAwB,CAAC;QAC/C,mBAAmB,EAAE,IAAA,eAAM,EAAC,+BAA+B,CAAC;QAC5D,mCAAmC,EAAE,IAAA,eAAM,EACzC,gDAAgD,CACjD;QACD,8BAA8B,EAAE,IAAA,eAAM,EACpC,2CAA2C,CAC5C;QACD,SAAS,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACtC,gBAAgB,EAAE,IAAA,eAAM,EAAC,2BAA2B,CAAC;QACrD,cAAc,EAAE,IAAA,eAAM,EAAC,yBAAyB,CAAC;QACjD,QAAQ,EAAE,IAAA,gBAAO,EAAC,iBAAiB,CAAC;QACpC,SAAS,EAAE,IAAA,gBAAO,EAAC,kBAAkB,CAAC;QACtC,aAAa,EAAE,IAAA,gBAAO,EAAC,sBAAsB,CAAC;QAC9C,UAAU,EAAE,IAAA,gBAAO,EAAC,mBAAmB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,sBAAsB,CAAC;QAC7C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,uBAAuB,EAAE,IAAA,eAAM,EAAC,kCAAkC,CAAC;QACnE,WAAW,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACzC,WAAW,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACzC,gBAAgB,EAAE,IAAA,eAAM,EAAC,yBAAyB,CAAC;QACnD,sBAAsB,EAAE,IAAA,gBAAO,EAAC,iCAAiC,CAAC;QAClE,YAAY,EAAE,IAAA,eAAM,EAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":";;;AAAA,4CAAkE;AAE3D,MAAM,OAAO,GAAG,GAAqB,EAAE;IAC5C,OAAO;QACL,OAAO,EAAE,IAAA,eAAM,EAAC,UAAU,CAAC;QAC3B,OAAO,EAAE,IAAA,gBAAO,EAAC,gBAAgB,CAAC;QAClC,OAAO,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAChC,IAAI,EAAE,IAAA,eAAM,EAAC,YAAY,CAAC;QAC1B,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,qBAAqB,EAAE,IAAA,eAAM,EAAC,gCAAgC,CAAC;QAC/D,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,iBAAiB,EAAE,IAAA,gBAAO,EAAC,2BAA2B,CAAC;QACvD,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,gBAAgB,EAAE,IAAA,eAAM,EAAC,0BAA0B,CAAC;QACpD,UAAU,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,wBAAwB,CAAC;QAC/C,mBAAmB,EAAE,IAAA,eAAM,EAAC,+BAA+B,CAAC;QAC5D,mCAAmC,EAAE,IAAA,eAAM,EACzC,gDAAgD,CACjD;QACD,8BAA8B,EAAE,IAAA,eAAM,EACpC,2CAA2C,CAC5C;QACD,SAAS,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACtC,gBAAgB,EAAE,IAAA,eAAM,EAAC,2BAA2B,CAAC;QACrD,cAAc,EAAE,IAAA,eAAM,EAAC,yBAAyB,CAAC;QACjD,QAAQ,EAAE,IAAA,gBAAO,EAAC,iBAAiB,CAAC;QACpC,SAAS,EAAE,IAAA,gBAAO,EAAC,kBAAkB,CAAC;QACtC,aAAa,EAAE,IAAA,gBAAO,EAAC,sBAAsB,CAAC;QAC9C,UAAU,EAAE,IAAA,gBAAO,EAAC,mBAAmB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,sBAAsB,CAAC;QAC7C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,uBAAuB,EAAE,IAAA,eAAM,EAAC,kCAAkC,CAAC;QACnE,WAAW,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACzC,WAAW,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACzC,gBAAgB,EAAE,IAAA,eAAM,EAAC,yBAAyB,CAAC;QACnD,sBAAsB,EAAE,IAAA,gBAAO,EAAC,iCAAiC,CAAC;QAClE,YAAY,EAAE,IAAA,eAAM,EAAC,qBAAqB,CAAC;QAC3C,yBAAyB,EAAE,IAAA,eAAM,EAAC,oCAAoC,CAAC;QACvE,0BAA0B,EAAE,IAAA,eAAM,EAAC,qCAAqC,CAAC;QACzE,4BAA4B,EAAE,IAAA,eAAM,EAClC,uCAAuC,CACxC;KACF,CAAA;AACH,CAAC,CAAA;AAjDY,QAAA,OAAO,WAiDnB","sourcesContent":["import { envBool, envInt, envList, envStr } from '@atproto/common'\n\nexport const readEnv = (): OzoneEnvironment => {\n return {\n nodeEnv: envStr('NODE_ENV'),\n devMode: envBool('OZONE_DEV_MODE'),\n version: envStr('OZONE_VERSION'),\n port: envInt('OZONE_PORT'),\n publicUrl: envStr('OZONE_PUBLIC_URL'),\n serverDid: envStr('OZONE_SERVER_DID'),\n serviceRecordCacheTTL: envInt('OZONE_SERVICE_RECORD_CACHE_TTL'),\n appviewUrl: envStr('OZONE_APPVIEW_URL'),\n appviewDid: envStr('OZONE_APPVIEW_DID'),\n appviewPushEvents: envBool('OZONE_APPVIEW_PUSH_EVENTS'),\n pdsUrl: envStr('OZONE_PDS_URL'),\n pdsDid: envStr('OZONE_PDS_DID'),\n chatUrl: envStr('OZONE_CHAT_URL'),\n chatDid: envStr('OZONE_CHAT_DID'),\n dbPostgresUrl: envStr('OZONE_DB_POSTGRES_URL'),\n dbPostgresSchema: envStr('OZONE_DB_POSTGRES_SCHEMA'),\n dbPoolSize: envInt('OZONE_DB_POOL_SIZE'),\n dbPoolMaxUses: envInt('OZONE_DB_POOL_MAX_USES'),\n dbPoolIdleTimeoutMs: envInt('OZONE_DB_POOL_IDLE_TIMEOUT_MS'),\n dbMaterializedViewRefreshIntervalMs: envInt(\n 'OZONE_DB_MATERIALIZED_VIEW_REFRESH_INTERVAL_MS',\n ),\n dbTeamProfileRefreshIntervalMs: envInt(\n 'OZONE_DB_TEAM_PROFILE_REFRESH_INTERVAL_MS',\n ),\n didPlcUrl: envStr('OZONE_DID_PLC_URL'),\n didCacheStaleTTL: envInt('OZONE_DID_CACHE_STALE_TTL'),\n didCacheMaxTTL: envInt('OZONE_DID_CACHE_MAX_TTL'),\n cdnPaths: envList('OZONE_CDN_PATHS'),\n adminDids: envList('OZONE_ADMIN_DIDS'),\n moderatorDids: envList('OZONE_MODERATOR_DIDS'),\n triageDids: envList('OZONE_TRIAGE_DIDS'),\n adminPassword: envStr('OZONE_ADMIN_PASSWORD'),\n signingKeyHex: envStr('OZONE_SIGNING_KEY_HEX'),\n blobDivertUrl: envStr('OZONE_BLOB_DIVERT_URL'),\n blobDivertAdminPassword: envStr('OZONE_BLOB_DIVERT_ADMIN_PASSWORD'),\n verifierUrl: envStr('OZONE_VERIFIER_URL'),\n verifierDid: envStr('OZONE_VERIFIER_DID'),\n verifierPassword: envStr('OZONE_VERIFIER_PASSWORD'),\n verifierIssuersToIndex: envList('OZONE_VERIFIER_ISSUERS_TO_INDEX'),\n jetstreamUrl: envStr('OZONE_JETSTREAM_URL'),\n assignmentQueueDurationMs: envInt('OZONE_ASSIGNMENT_QUEUE_DURATION_MS'),\n assignmentReportDurationMs: envInt('OZONE_ASSIGNMENT_REPORT_DURATION_MS'),\n statsComputerIntervalMinutes: envInt(\n 'OZONE_STATS_COMPUTER_INTERVAL_MINUTES',\n ),\n }\n}\n\nexport type OzoneEnvironment = {\n nodeEnv?: string\n devMode?: boolean\n version?: string\n port?: number\n publicUrl?: string\n serverDid?: string\n serviceRecordCacheTTL?: number\n appviewUrl?: string\n appviewDid?: string\n appviewPushEvents?: boolean\n pdsUrl?: string\n pdsDid?: string\n chatUrl?: string\n chatDid?: string\n dbPostgresUrl?: string\n dbPostgresSchema?: string\n dbPoolSize?: number\n dbPoolMaxUses?: number\n dbPoolIdleTimeoutMs?: number\n dbMaterializedViewRefreshIntervalMs?: number\n dbTeamProfileRefreshIntervalMs?: number\n didPlcUrl?: string\n didCacheStaleTTL?: number\n didCacheMaxTTL?: number\n cdnPaths?: string[]\n adminDids: string[]\n moderatorDids: string[]\n triageDids: string[]\n adminPassword?: string\n signingKeyHex?: string\n blobDivertUrl?: string\n blobDivertAdminPassword?: string\n verifierUrl?: string\n verifierDid?: string\n verifierPassword?: string\n verifierIssuersToIndex?: string[]\n jetstreamUrl?: string\n assignmentQueueDurationMs?: number\n assignmentReportDurationMs?: number\n statsComputerIntervalMinutes?: number\n}\n"]}
|
package/dist/context.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import express from 'express';
|
|
|
3
3
|
import { AtpAgent } from '@atproto/api';
|
|
4
4
|
import { Keypair } from '@atproto/crypto';
|
|
5
5
|
import { DidCache, IdResolver } from '@atproto/identity';
|
|
6
|
+
import { AssignmentService } from './assignment';
|
|
6
7
|
import { AuthVerifier } from './auth-verifier';
|
|
7
8
|
import { BackgroundQueue } from './background';
|
|
8
9
|
import { CommunicationTemplateServiceCreator } from './communication-service/template';
|
|
@@ -13,6 +14,8 @@ import { ImageInvalidator } from './image-invalidator';
|
|
|
13
14
|
import { ModerationServiceCreator } from './mod-service';
|
|
14
15
|
import { ModerationServiceProfileCreator } from './mod-service/profile';
|
|
15
16
|
import { StrikeServiceCreator } from './mod-service/strike';
|
|
17
|
+
import { QueueServiceCreator } from './queue/service';
|
|
18
|
+
import { ReportStatsServiceCreator } from './report/stats';
|
|
16
19
|
import { SafelinkRuleServiceCreator } from './safelink/service';
|
|
17
20
|
import { ScheduledActionServiceCreator } from './scheduled-action/service';
|
|
18
21
|
import { Sequencer } from './sequencer/sequencer';
|
|
@@ -30,6 +33,8 @@ export type AppContextOptions = {
|
|
|
30
33
|
communicationTemplateService: CommunicationTemplateServiceCreator;
|
|
31
34
|
safelinkRuleService: SafelinkRuleServiceCreator;
|
|
32
35
|
scheduledActionService: ScheduledActionServiceCreator;
|
|
36
|
+
queueService: QueueServiceCreator;
|
|
37
|
+
reportStatsService: ReportStatsServiceCreator;
|
|
33
38
|
setService: SetServiceCreator;
|
|
34
39
|
settingService: SettingServiceCreator;
|
|
35
40
|
strikeService: StrikeServiceCreator;
|
|
@@ -45,6 +50,7 @@ export type AppContextOptions = {
|
|
|
45
50
|
imgInvalidator?: ImageInvalidator;
|
|
46
51
|
backgroundQueue: BackgroundQueue;
|
|
47
52
|
sequencer: Sequencer;
|
|
53
|
+
assignmentService: AssignmentService;
|
|
48
54
|
authVerifier: AuthVerifier;
|
|
49
55
|
verificationService: VerificationServiceCreator;
|
|
50
56
|
verificationIssuer: VerificationIssuerCreator;
|
|
@@ -63,6 +69,8 @@ export declare class AppContext {
|
|
|
63
69
|
get safelinkRuleService(): SafelinkRuleServiceCreator;
|
|
64
70
|
get scheduledActionService(): ScheduledActionServiceCreator;
|
|
65
71
|
get teamService(): TeamServiceCreator;
|
|
72
|
+
get queueService(): QueueServiceCreator;
|
|
73
|
+
get reportStatsService(): ReportStatsServiceCreator;
|
|
66
74
|
get setService(): SetServiceCreator;
|
|
67
75
|
get settingService(): SettingServiceCreator;
|
|
68
76
|
get strikeService(): StrikeServiceCreator;
|
|
@@ -79,6 +87,7 @@ export declare class AppContext {
|
|
|
79
87
|
get idResolver(): IdResolver;
|
|
80
88
|
get backgroundQueue(): BackgroundQueue;
|
|
81
89
|
get sequencer(): Sequencer;
|
|
90
|
+
get assignmentService(): AssignmentService;
|
|
82
91
|
get authVerifier(): AuthVerifier;
|
|
83
92
|
serviceAuthHeaders(aud: string, lxm: string): Promise<{
|
|
84
93
|
headers: {
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/context.js
CHANGED
|
@@ -43,6 +43,7 @@ const api_1 = require("@atproto/api");
|
|
|
43
43
|
const crypto_1 = require("@atproto/crypto");
|
|
44
44
|
const identity_1 = require("@atproto/identity");
|
|
45
45
|
const xrpc_server_1 = require("@atproto/xrpc-server");
|
|
46
|
+
const assignment_1 = require("./assignment");
|
|
46
47
|
const auth_verifier_1 = require("./auth-verifier");
|
|
47
48
|
const background_1 = require("./background");
|
|
48
49
|
const template_1 = require("./communication-service/template");
|
|
@@ -52,15 +53,17 @@ const db_1 = require("./db");
|
|
|
52
53
|
const mod_service_1 = require("./mod-service");
|
|
53
54
|
const profile_1 = require("./mod-service/profile");
|
|
54
55
|
const strike_1 = require("./mod-service/strike");
|
|
55
|
-
const service_1 = require("./
|
|
56
|
-
const
|
|
56
|
+
const service_1 = require("./queue/service");
|
|
57
|
+
const stats_1 = require("./report/stats");
|
|
58
|
+
const service_2 = require("./safelink/service");
|
|
59
|
+
const service_3 = require("./scheduled-action/service");
|
|
57
60
|
const sequencer_1 = require("./sequencer/sequencer");
|
|
58
|
-
const
|
|
59
|
-
const
|
|
61
|
+
const service_4 = require("./set/service");
|
|
62
|
+
const service_5 = require("./setting/service");
|
|
60
63
|
const team_1 = require("./team");
|
|
61
64
|
const util_1 = require("./util");
|
|
62
65
|
const issuer_1 = require("./verification/issuer");
|
|
63
|
-
const
|
|
66
|
+
const service_6 = require("./verification/service");
|
|
64
67
|
class AppContext {
|
|
65
68
|
constructor(opts, secrets) {
|
|
66
69
|
Object.defineProperty(this, "opts", {
|
|
@@ -116,16 +119,22 @@ class AppContext {
|
|
|
116
119
|
pds: cfg.pds ?? undefined,
|
|
117
120
|
});
|
|
118
121
|
const communicationTemplateService = template_1.CommunicationTemplateService.creator();
|
|
119
|
-
const safelinkRuleService =
|
|
120
|
-
const scheduledActionService =
|
|
122
|
+
const safelinkRuleService = service_2.SafelinkRuleService.creator();
|
|
123
|
+
const scheduledActionService = service_3.ScheduledActionService.creator();
|
|
121
124
|
const teamService = team_1.TeamService.creator(appviewAgent, cfg.appview.did, createAuthHeaders);
|
|
122
|
-
const
|
|
123
|
-
const
|
|
125
|
+
const queueService = service_1.QueueService.creator();
|
|
126
|
+
const reportStatsService = stats_1.ReportStatsService.creator();
|
|
127
|
+
const setService = service_4.SetService.creator();
|
|
128
|
+
const settingService = service_5.SettingService.creator();
|
|
124
129
|
const strikeService = strike_1.StrikeService.creator();
|
|
125
|
-
const verificationService =
|
|
130
|
+
const verificationService = service_6.VerificationService.creator();
|
|
126
131
|
const verificationIssuer = issuer_1.VerificationIssuer.creator();
|
|
127
132
|
const moderationServiceProfile = profile_1.ModerationServiceProfile.creator(cfg, appviewAgent);
|
|
128
133
|
const modService = mod_service_1.ModerationService.creator(signingKey, signingKeyId, cfg, backgroundQueue, idResolver, eventPusher, appviewAgent, createAuthHeaders, strikeService, overrides?.imgInvalidator);
|
|
134
|
+
const assignmentService = assignment_1.AssignmentService.creator({
|
|
135
|
+
queueDurationMs: cfg.assignments.queueDurationMs,
|
|
136
|
+
reportDurationMs: cfg.assignments.reportDurationMs,
|
|
137
|
+
}, queueService, teamService)(db);
|
|
129
138
|
const sequencer = new sequencer_1.Sequencer(modService(db));
|
|
130
139
|
const authVerifier = new auth_verifier_1.AuthVerifier(idResolver, {
|
|
131
140
|
serviceDid: cfg.service.did,
|
|
@@ -141,6 +150,8 @@ class AppContext {
|
|
|
141
150
|
safelinkRuleService,
|
|
142
151
|
scheduledActionService,
|
|
143
152
|
teamService,
|
|
153
|
+
queueService,
|
|
154
|
+
reportStatsService,
|
|
144
155
|
setService,
|
|
145
156
|
settingService,
|
|
146
157
|
strikeService,
|
|
@@ -153,6 +164,7 @@ class AppContext {
|
|
|
153
164
|
idResolver,
|
|
154
165
|
backgroundQueue,
|
|
155
166
|
sequencer,
|
|
167
|
+
assignmentService,
|
|
156
168
|
authVerifier,
|
|
157
169
|
blobDiverter,
|
|
158
170
|
verificationService,
|
|
@@ -188,6 +200,12 @@ class AppContext {
|
|
|
188
200
|
get teamService() {
|
|
189
201
|
return this.opts.teamService;
|
|
190
202
|
}
|
|
203
|
+
get queueService() {
|
|
204
|
+
return this.opts.queueService;
|
|
205
|
+
}
|
|
206
|
+
get reportStatsService() {
|
|
207
|
+
return this.opts.reportStatsService;
|
|
208
|
+
}
|
|
191
209
|
get setService() {
|
|
192
210
|
return this.opts.setService;
|
|
193
211
|
}
|
|
@@ -236,6 +254,9 @@ class AppContext {
|
|
|
236
254
|
get sequencer() {
|
|
237
255
|
return this.opts.sequencer;
|
|
238
256
|
}
|
|
257
|
+
get assignmentService() {
|
|
258
|
+
return this.opts.assignmentService;
|
|
259
|
+
}
|
|
239
260
|
get authVerifier() {
|
|
240
261
|
return this.opts.authVerifier;
|
|
241
262
|
}
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport * as plc from '@did-plc/lib'\nimport express from 'express'\nimport { AtpAgent } from '@atproto/api'\nimport { Keypair, Secp256k1Keypair } from '@atproto/crypto'\nimport { DidCache, IdResolver, MemoryCache } from '@atproto/identity'\nimport { createServiceAuthHeaders } from '@atproto/xrpc-server'\nimport { AuthVerifier } from './auth-verifier'\nimport { BackgroundQueue } from './background'\nimport {\n CommunicationTemplateService,\n CommunicationTemplateServiceCreator,\n} from './communication-service/template'\nimport { OzoneConfig, OzoneSecrets } from './config'\nimport { EventPusher } from './daemon'\nimport { BlobDiverter } from './daemon/blob-diverter'\nimport { Database } from './db'\nimport { ImageInvalidator } from './image-invalidator'\nimport { ModerationService, ModerationServiceCreator } from './mod-service'\nimport {\n ModerationServiceProfile,\n ModerationServiceProfileCreator,\n} from './mod-service/profile'\nimport { StrikeService, StrikeServiceCreator } from './mod-service/strike'\nimport {\n SafelinkRuleService,\n SafelinkRuleServiceCreator,\n} from './safelink/service'\nimport {\n ScheduledActionService,\n ScheduledActionServiceCreator,\n} from './scheduled-action/service'\nimport { Sequencer } from './sequencer/sequencer'\nimport { SetService, SetServiceCreator } from './set/service'\nimport { SettingService, SettingServiceCreator } from './setting/service'\nimport { TeamService, TeamServiceCreator } from './team'\nimport {\n LABELER_HEADER_NAME,\n ParsedLabelers,\n defaultLabelerHeader,\n getSigningKeyId,\n parseLabelerHeader,\n} from './util'\nimport {\n VerificationIssuer,\n VerificationIssuerCreator,\n} from './verification/issuer'\nimport {\n VerificationService,\n VerificationServiceCreator,\n} from './verification/service'\n\nexport type AppContextOptions = {\n db: Database\n cfg: OzoneConfig\n modService: ModerationServiceCreator\n moderationServiceProfile: ModerationServiceProfileCreator\n communicationTemplateService: CommunicationTemplateServiceCreator\n safelinkRuleService: SafelinkRuleServiceCreator\n scheduledActionService: ScheduledActionServiceCreator\n setService: SetServiceCreator\n settingService: SettingServiceCreator\n strikeService: StrikeServiceCreator\n teamService: TeamServiceCreator\n appviewAgent: AtpAgent\n pdsAgent: AtpAgent | undefined\n chatAgent: AtpAgent | undefined\n blobDiverter?: BlobDiverter\n signingKey: Keypair\n signingKeyId: number\n didCache: DidCache\n idResolver: IdResolver\n imgInvalidator?: ImageInvalidator\n backgroundQueue: BackgroundQueue\n sequencer: Sequencer\n authVerifier: AuthVerifier\n verificationService: VerificationServiceCreator\n verificationIssuer: VerificationIssuerCreator\n}\n\nexport class AppContext {\n constructor(\n private opts: AppContextOptions,\n private secrets: OzoneSecrets,\n ) {}\n\n static async fromConfig(\n cfg: OzoneConfig,\n secrets: OzoneSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<AppContext> {\n const db = new Database({\n url: cfg.db.postgresUrl,\n schema: cfg.db.postgresSchema,\n poolSize: cfg.db.poolSize,\n poolMaxUses: cfg.db.poolMaxUses,\n poolIdleTimeoutMs: cfg.db.poolIdleTimeoutMs,\n })\n const signingKey = await Secp256k1Keypair.import(secrets.signingKeyHex)\n const signingKeyId = await getSigningKeyId(db, signingKey.did())\n const appviewAgent = new AtpAgent({ service: cfg.appview.url })\n const pdsAgent = cfg.pds\n ? new AtpAgent({ service: cfg.pds.url })\n : undefined\n const chatAgent = cfg.chat\n ? new AtpAgent({ service: cfg.chat.url })\n : undefined\n\n const didCache = new MemoryCache(\n cfg.identity.cacheStaleTTL,\n cfg.identity.cacheMaxTTL,\n )\n const idResolver = new IdResolver({\n plcUrl: cfg.identity.plcUrl,\n didCache,\n })\n\n const createAuthHeaders = (aud: string, lxm: string) =>\n createServiceAuthHeaders({\n iss: `${cfg.service.did}#atproto_labeler`,\n aud,\n lxm,\n keypair: signingKey,\n })\n\n const backgroundQueue = new BackgroundQueue(db)\n const blobDiverter = cfg.blobDivert\n ? new BlobDiverter(db, {\n idResolver,\n serviceConfig: cfg.blobDivert,\n })\n : undefined\n const eventPusher = new EventPusher(db, createAuthHeaders, {\n appview: cfg.appview.pushEvents ? cfg.appview : undefined,\n pds: cfg.pds ?? undefined,\n })\n\n const communicationTemplateService = CommunicationTemplateService.creator()\n const safelinkRuleService = SafelinkRuleService.creator()\n const scheduledActionService = ScheduledActionService.creator()\n const teamService = TeamService.creator(\n appviewAgent,\n cfg.appview.did,\n createAuthHeaders,\n )\n const setService = SetService.creator()\n const settingService = SettingService.creator()\n const strikeService = StrikeService.creator()\n const verificationService = VerificationService.creator()\n const verificationIssuer = VerificationIssuer.creator()\n const moderationServiceProfile = ModerationServiceProfile.creator(\n cfg,\n appviewAgent,\n )\n const modService = ModerationService.creator(\n signingKey,\n signingKeyId,\n cfg,\n backgroundQueue,\n idResolver,\n eventPusher,\n appviewAgent,\n createAuthHeaders,\n strikeService,\n overrides?.imgInvalidator,\n )\n\n const sequencer = new Sequencer(modService(db))\n\n const authVerifier = new AuthVerifier(idResolver, {\n serviceDid: cfg.service.did,\n adminPassword: secrets.adminPassword,\n teamService: teamService(db),\n })\n\n return new AppContext(\n {\n db,\n cfg,\n modService,\n moderationServiceProfile,\n communicationTemplateService,\n safelinkRuleService,\n scheduledActionService,\n teamService,\n setService,\n settingService,\n strikeService,\n appviewAgent,\n pdsAgent,\n chatAgent,\n signingKey,\n signingKeyId,\n didCache,\n idResolver,\n backgroundQueue,\n sequencer,\n authVerifier,\n blobDiverter,\n verificationService,\n verificationIssuer,\n ...(overrides ?? {}),\n },\n secrets,\n )\n }\n\n assignPort(port: number) {\n assert(\n !this.cfg.service.port || this.cfg.service.port === port,\n 'Conflicting port in config',\n )\n this.opts.cfg.service.port = port\n }\n\n get db(): Database {\n return this.opts.db\n }\n\n get cfg(): OzoneConfig {\n return this.opts.cfg\n }\n\n get modService(): ModerationServiceCreator {\n return this.opts.modService\n }\n\n get blobDiverter(): BlobDiverter | undefined {\n return this.opts.blobDiverter\n }\n\n get communicationTemplateService(): CommunicationTemplateServiceCreator {\n return this.opts.communicationTemplateService\n }\n\n get safelinkRuleService(): SafelinkRuleServiceCreator {\n return this.opts.safelinkRuleService\n }\n\n get scheduledActionService(): ScheduledActionServiceCreator {\n return this.opts.scheduledActionService\n }\n\n get teamService(): TeamServiceCreator {\n return this.opts.teamService\n }\n\n get setService(): SetServiceCreator {\n return this.opts.setService\n }\n\n get settingService(): SettingServiceCreator {\n return this.opts.settingService\n }\n\n get strikeService(): StrikeServiceCreator {\n return this.opts.strikeService\n }\n\n get verificationService(): VerificationServiceCreator {\n return this.opts.verificationService\n }\n\n get verificationIssuer(): VerificationIssuerCreator {\n return this.opts.verificationIssuer\n }\n\n get moderationServiceProfile(): ModerationServiceProfileCreator {\n return this.opts.moderationServiceProfile\n }\n\n get appviewAgent(): AtpAgent {\n return this.opts.appviewAgent\n }\n\n get pdsAgent(): AtpAgent | undefined {\n return this.opts.pdsAgent\n }\n\n get chatAgent(): AtpAgent | undefined {\n return this.opts.chatAgent\n }\n\n get signingKey(): Keypair {\n return this.opts.signingKey\n }\n\n get signingKeyId(): number {\n return this.opts.signingKeyId\n }\n\n get plcClient(): plc.Client {\n return new plc.Client(this.cfg.identity.plcUrl)\n }\n\n get didCache(): DidCache {\n return this.opts.didCache\n }\n\n get idResolver(): IdResolver {\n return this.opts.idResolver\n }\n\n get backgroundQueue(): BackgroundQueue {\n return this.opts.backgroundQueue\n }\n\n get sequencer(): Sequencer {\n return this.opts.sequencer\n }\n\n get authVerifier(): AuthVerifier {\n return this.opts.authVerifier\n }\n\n async serviceAuthHeaders(aud: string, lxm: string) {\n const iss = `${this.cfg.service.did}#atproto_labeler`\n return createServiceAuthHeaders({\n iss,\n aud,\n lxm,\n keypair: this.signingKey,\n })\n }\n\n async pdsAuth(lxm: string) {\n if (!this.cfg.pds) {\n return undefined\n }\n return this.serviceAuthHeaders(this.cfg.pds.did, lxm)\n }\n\n async appviewAuth(lxm: string) {\n return this.serviceAuthHeaders(this.cfg.appview.did, lxm)\n }\n\n async chatAuth(lxm: string) {\n if (!this.cfg.chat) {\n throw new Error('No chat service configured')\n }\n return this.serviceAuthHeaders(this.cfg.chat.did, lxm)\n }\n\n devOverride(overrides: Partial<AppContextOptions>) {\n this.opts = {\n ...this.opts,\n ...overrides,\n }\n }\n\n reqLabelers(req: express.Request): ParsedLabelers {\n const val = req.header(LABELER_HEADER_NAME)\n let parsed: ParsedLabelers | null\n try {\n parsed = parseLabelerHeader(val, this.cfg.service.did)\n } catch (err) {\n parsed = null\n }\n if (!parsed) return defaultLabelerHeader([])\n return parsed\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport * as plc from '@did-plc/lib'\nimport express from 'express'\nimport { AtpAgent } from '@atproto/api'\nimport { Keypair, Secp256k1Keypair } from '@atproto/crypto'\nimport { DidCache, IdResolver, MemoryCache } from '@atproto/identity'\nimport { createServiceAuthHeaders } from '@atproto/xrpc-server'\nimport { AssignmentService } from './assignment'\nimport { AuthVerifier } from './auth-verifier'\nimport { BackgroundQueue } from './background'\nimport {\n CommunicationTemplateService,\n CommunicationTemplateServiceCreator,\n} from './communication-service/template'\nimport { OzoneConfig, OzoneSecrets } from './config'\nimport { EventPusher } from './daemon'\nimport { BlobDiverter } from './daemon/blob-diverter'\nimport { Database } from './db'\nimport { ImageInvalidator } from './image-invalidator'\nimport { ModerationService, ModerationServiceCreator } from './mod-service'\nimport {\n ModerationServiceProfile,\n ModerationServiceProfileCreator,\n} from './mod-service/profile'\nimport { StrikeService, StrikeServiceCreator } from './mod-service/strike'\nimport { QueueService, QueueServiceCreator } from './queue/service'\nimport { ReportStatsService, ReportStatsServiceCreator } from './report/stats'\nimport {\n SafelinkRuleService,\n SafelinkRuleServiceCreator,\n} from './safelink/service'\nimport {\n ScheduledActionService,\n ScheduledActionServiceCreator,\n} from './scheduled-action/service'\nimport { Sequencer } from './sequencer/sequencer'\nimport { SetService, SetServiceCreator } from './set/service'\nimport { SettingService, SettingServiceCreator } from './setting/service'\nimport { TeamService, TeamServiceCreator } from './team'\nimport {\n LABELER_HEADER_NAME,\n ParsedLabelers,\n defaultLabelerHeader,\n getSigningKeyId,\n parseLabelerHeader,\n} from './util'\nimport {\n VerificationIssuer,\n VerificationIssuerCreator,\n} from './verification/issuer'\nimport {\n VerificationService,\n VerificationServiceCreator,\n} from './verification/service'\n\nexport type AppContextOptions = {\n db: Database\n cfg: OzoneConfig\n modService: ModerationServiceCreator\n moderationServiceProfile: ModerationServiceProfileCreator\n communicationTemplateService: CommunicationTemplateServiceCreator\n safelinkRuleService: SafelinkRuleServiceCreator\n scheduledActionService: ScheduledActionServiceCreator\n queueService: QueueServiceCreator\n reportStatsService: ReportStatsServiceCreator\n setService: SetServiceCreator\n settingService: SettingServiceCreator\n strikeService: StrikeServiceCreator\n teamService: TeamServiceCreator\n appviewAgent: AtpAgent\n pdsAgent: AtpAgent | undefined\n chatAgent: AtpAgent | undefined\n blobDiverter?: BlobDiverter\n signingKey: Keypair\n signingKeyId: number\n didCache: DidCache\n idResolver: IdResolver\n imgInvalidator?: ImageInvalidator\n backgroundQueue: BackgroundQueue\n sequencer: Sequencer\n assignmentService: AssignmentService\n authVerifier: AuthVerifier\n verificationService: VerificationServiceCreator\n verificationIssuer: VerificationIssuerCreator\n}\n\nexport class AppContext {\n constructor(\n private opts: AppContextOptions,\n private secrets: OzoneSecrets,\n ) {}\n\n static async fromConfig(\n cfg: OzoneConfig,\n secrets: OzoneSecrets,\n overrides?: Partial<AppContextOptions>,\n ): Promise<AppContext> {\n const db = new Database({\n url: cfg.db.postgresUrl,\n schema: cfg.db.postgresSchema,\n poolSize: cfg.db.poolSize,\n poolMaxUses: cfg.db.poolMaxUses,\n poolIdleTimeoutMs: cfg.db.poolIdleTimeoutMs,\n })\n const signingKey = await Secp256k1Keypair.import(secrets.signingKeyHex)\n const signingKeyId = await getSigningKeyId(db, signingKey.did())\n const appviewAgent = new AtpAgent({ service: cfg.appview.url })\n const pdsAgent = cfg.pds\n ? new AtpAgent({ service: cfg.pds.url })\n : undefined\n const chatAgent = cfg.chat\n ? new AtpAgent({ service: cfg.chat.url })\n : undefined\n\n const didCache = new MemoryCache(\n cfg.identity.cacheStaleTTL,\n cfg.identity.cacheMaxTTL,\n )\n const idResolver = new IdResolver({\n plcUrl: cfg.identity.plcUrl,\n didCache,\n })\n\n const createAuthHeaders = (aud: string, lxm: string) =>\n createServiceAuthHeaders({\n iss: `${cfg.service.did}#atproto_labeler`,\n aud,\n lxm,\n keypair: signingKey,\n })\n\n const backgroundQueue = new BackgroundQueue(db)\n const blobDiverter = cfg.blobDivert\n ? new BlobDiverter(db, {\n idResolver,\n serviceConfig: cfg.blobDivert,\n })\n : undefined\n const eventPusher = new EventPusher(db, createAuthHeaders, {\n appview: cfg.appview.pushEvents ? cfg.appview : undefined,\n pds: cfg.pds ?? undefined,\n })\n\n const communicationTemplateService = CommunicationTemplateService.creator()\n const safelinkRuleService = SafelinkRuleService.creator()\n const scheduledActionService = ScheduledActionService.creator()\n const teamService = TeamService.creator(\n appviewAgent,\n cfg.appview.did,\n createAuthHeaders,\n )\n const queueService = QueueService.creator()\n const reportStatsService = ReportStatsService.creator()\n const setService = SetService.creator()\n const settingService = SettingService.creator()\n const strikeService = StrikeService.creator()\n const verificationService = VerificationService.creator()\n const verificationIssuer = VerificationIssuer.creator()\n const moderationServiceProfile = ModerationServiceProfile.creator(\n cfg,\n appviewAgent,\n )\n const modService = ModerationService.creator(\n signingKey,\n signingKeyId,\n cfg,\n backgroundQueue,\n idResolver,\n eventPusher,\n appviewAgent,\n createAuthHeaders,\n strikeService,\n overrides?.imgInvalidator,\n )\n const assignmentService = AssignmentService.creator(\n {\n queueDurationMs: cfg.assignments.queueDurationMs,\n reportDurationMs: cfg.assignments.reportDurationMs,\n },\n queueService,\n teamService,\n )(db)\n\n const sequencer = new Sequencer(modService(db))\n\n const authVerifier = new AuthVerifier(idResolver, {\n serviceDid: cfg.service.did,\n adminPassword: secrets.adminPassword,\n teamService: teamService(db),\n })\n\n return new AppContext(\n {\n db,\n cfg,\n modService,\n moderationServiceProfile,\n communicationTemplateService,\n safelinkRuleService,\n scheduledActionService,\n teamService,\n queueService,\n reportStatsService,\n setService,\n settingService,\n strikeService,\n appviewAgent,\n pdsAgent,\n chatAgent,\n signingKey,\n signingKeyId,\n didCache,\n idResolver,\n backgroundQueue,\n sequencer,\n assignmentService,\n authVerifier,\n blobDiverter,\n verificationService,\n verificationIssuer,\n ...(overrides ?? {}),\n },\n secrets,\n )\n }\n\n assignPort(port: number) {\n assert(\n !this.cfg.service.port || this.cfg.service.port === port,\n 'Conflicting port in config',\n )\n this.opts.cfg.service.port = port\n }\n\n get db(): Database {\n return this.opts.db\n }\n\n get cfg(): OzoneConfig {\n return this.opts.cfg\n }\n\n get modService(): ModerationServiceCreator {\n return this.opts.modService\n }\n\n get blobDiverter(): BlobDiverter | undefined {\n return this.opts.blobDiverter\n }\n\n get communicationTemplateService(): CommunicationTemplateServiceCreator {\n return this.opts.communicationTemplateService\n }\n\n get safelinkRuleService(): SafelinkRuleServiceCreator {\n return this.opts.safelinkRuleService\n }\n\n get scheduledActionService(): ScheduledActionServiceCreator {\n return this.opts.scheduledActionService\n }\n\n get teamService(): TeamServiceCreator {\n return this.opts.teamService\n }\n\n get queueService(): QueueServiceCreator {\n return this.opts.queueService\n }\n\n get reportStatsService(): ReportStatsServiceCreator {\n return this.opts.reportStatsService\n }\n\n get setService(): SetServiceCreator {\n return this.opts.setService\n }\n\n get settingService(): SettingServiceCreator {\n return this.opts.settingService\n }\n\n get strikeService(): StrikeServiceCreator {\n return this.opts.strikeService\n }\n\n get verificationService(): VerificationServiceCreator {\n return this.opts.verificationService\n }\n\n get verificationIssuer(): VerificationIssuerCreator {\n return this.opts.verificationIssuer\n }\n\n get moderationServiceProfile(): ModerationServiceProfileCreator {\n return this.opts.moderationServiceProfile\n }\n\n get appviewAgent(): AtpAgent {\n return this.opts.appviewAgent\n }\n\n get pdsAgent(): AtpAgent | undefined {\n return this.opts.pdsAgent\n }\n\n get chatAgent(): AtpAgent | undefined {\n return this.opts.chatAgent\n }\n\n get signingKey(): Keypair {\n return this.opts.signingKey\n }\n\n get signingKeyId(): number {\n return this.opts.signingKeyId\n }\n\n get plcClient(): plc.Client {\n return new plc.Client(this.cfg.identity.plcUrl)\n }\n\n get didCache(): DidCache {\n return this.opts.didCache\n }\n\n get idResolver(): IdResolver {\n return this.opts.idResolver\n }\n\n get backgroundQueue(): BackgroundQueue {\n return this.opts.backgroundQueue\n }\n\n get sequencer(): Sequencer {\n return this.opts.sequencer\n }\n\n get assignmentService(): AssignmentService {\n return this.opts.assignmentService\n }\n\n get authVerifier(): AuthVerifier {\n return this.opts.authVerifier\n }\n\n async serviceAuthHeaders(aud: string, lxm: string) {\n const iss = `${this.cfg.service.did}#atproto_labeler`\n return createServiceAuthHeaders({\n iss,\n aud,\n lxm,\n keypair: this.signingKey,\n })\n }\n\n async pdsAuth(lxm: string) {\n if (!this.cfg.pds) {\n return undefined\n }\n return this.serviceAuthHeaders(this.cfg.pds.did, lxm)\n }\n\n async appviewAuth(lxm: string) {\n return this.serviceAuthHeaders(this.cfg.appview.did, lxm)\n }\n\n async chatAuth(lxm: string) {\n if (!this.cfg.chat) {\n throw new Error('No chat service configured')\n }\n return this.serviceAuthHeaders(this.cfg.chat.did, lxm)\n }\n\n devOverride(overrides: Partial<AppContextOptions>) {\n this.opts = {\n ...this.opts,\n ...overrides,\n }\n }\n\n reqLabelers(req: express.Request): ParsedLabelers {\n const val = req.header(LABELER_HEADER_NAME)\n let parsed: ParsedLabelers | null\n try {\n parsed = parseLabelerHeader(val, this.cfg.service.did)\n } catch (err) {\n parsed = null\n }\n if (!parsed) return defaultLabelerHeader([])\n return parsed\n }\n}\n"]}
|
package/dist/daemon/context.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { Database } from '../db';
|
|
|
5
5
|
import { EventPusher } from './event-pusher';
|
|
6
6
|
import { EventReverser } from './event-reverser';
|
|
7
7
|
import { MaterializedViewRefresher } from './materialized-view-refresher';
|
|
8
|
+
import { QueueRouter } from './queue-router';
|
|
8
9
|
import { ScheduledActionProcessor } from './scheduled-action-processor';
|
|
10
|
+
import { StatsComputer } from './stats-computer';
|
|
9
11
|
import { StrikeExpiryProcessor } from './strike-expiry-processor';
|
|
10
12
|
import { TeamProfileSynchronizer } from './team-profile-synchronizer';
|
|
11
13
|
import { VerificationListener } from './verification-listener';
|
|
@@ -20,7 +22,9 @@ export type DaemonContextOptions = {
|
|
|
20
22
|
teamProfileSynchronizer: TeamProfileSynchronizer;
|
|
21
23
|
scheduledActionProcessor: ScheduledActionProcessor;
|
|
22
24
|
strikeExpiryProcessor: StrikeExpiryProcessor;
|
|
25
|
+
queueRouter: QueueRouter;
|
|
23
26
|
verificationListener?: VerificationListener;
|
|
27
|
+
statsComputer?: StatsComputer;
|
|
24
28
|
};
|
|
25
29
|
export declare class DaemonContext {
|
|
26
30
|
private opts;
|
|
@@ -35,7 +39,9 @@ export declare class DaemonContext {
|
|
|
35
39
|
get teamProfileSynchronizer(): TeamProfileSynchronizer;
|
|
36
40
|
get scheduledActionProcessor(): ScheduledActionProcessor;
|
|
37
41
|
get strikeExpiryProcessor(): StrikeExpiryProcessor;
|
|
42
|
+
get queueRouter(): QueueRouter;
|
|
38
43
|
get verificationListener(): VerificationListener | undefined;
|
|
44
|
+
get statsComputer(): StatsComputer | undefined;
|
|
39
45
|
start(): Promise<void>;
|
|
40
46
|
processAll(): Promise<void>;
|
|
41
47
|
destroy(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAA;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAA;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAShC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,QAAQ,CAAA;IACZ,GAAG,EAAE,WAAW,CAAA;IAChB,eAAe,EAAE,eAAe,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,yBAAyB,EAAE,yBAAyB,CAAA;IACpD,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,wBAAwB,EAAE,wBAAwB,CAAA;IAClD,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,WAAW,EAAE,WAAW,CAAA;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B,CAAA;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,oBAAoB;WAEjC,UAAU,CACrB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC;IA4GzB,IAAI,EAAE,IAAI,QAAQ,CAEjB;IAED,IAAI,GAAG,IAAI,WAAW,CAErB;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,IAAI,yBAAyB,IAAI,yBAAyB,CAEzD;IAED,IAAI,uBAAuB,IAAI,uBAAuB,CAErD;IAED,IAAI,wBAAwB,IAAI,wBAAwB,CAEvD;IAED,IAAI,qBAAqB,IAAI,qBAAqB,CAEjD;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAE3D;IAED,IAAI,aAAa,IAAI,aAAa,GAAG,SAAS,CAE7C;IAEK,KAAK;IAYL,UAAU;IAWV,OAAO;CAkBd"}
|
package/dist/daemon/context.js
CHANGED
|
@@ -10,14 +10,18 @@ const background_1 = require("../background");
|
|
|
10
10
|
const db_1 = require("../db");
|
|
11
11
|
const mod_service_1 = require("../mod-service");
|
|
12
12
|
const strike_1 = require("../mod-service/strike");
|
|
13
|
-
const service_1 = require("../
|
|
14
|
-
const
|
|
13
|
+
const service_1 = require("../queue/service");
|
|
14
|
+
const stats_1 = require("../report/stats");
|
|
15
|
+
const service_2 = require("../scheduled-action/service");
|
|
16
|
+
const service_3 = require("../setting/service");
|
|
15
17
|
const team_1 = require("../team");
|
|
16
18
|
const util_1 = require("../util");
|
|
17
19
|
const event_pusher_1 = require("./event-pusher");
|
|
18
20
|
const event_reverser_1 = require("./event-reverser");
|
|
19
21
|
const materialized_view_refresher_1 = require("./materialized-view-refresher");
|
|
22
|
+
const queue_router_1 = require("./queue-router");
|
|
20
23
|
const scheduled_action_processor_1 = require("./scheduled-action-processor");
|
|
24
|
+
const stats_computer_1 = require("./stats-computer");
|
|
21
25
|
const strike_expiry_processor_1 = require("./strike-expiry-processor");
|
|
22
26
|
const team_profile_synchronizer_1 = require("./team-profile-synchronizer");
|
|
23
27
|
const verification_listener_1 = require("./verification-listener");
|
|
@@ -52,16 +56,20 @@ class DaemonContext {
|
|
|
52
56
|
pds: cfg.pds ?? undefined,
|
|
53
57
|
});
|
|
54
58
|
const backgroundQueue = new background_1.BackgroundQueue(db);
|
|
55
|
-
const settingService =
|
|
59
|
+
const settingService = service_3.SettingService.creator();
|
|
56
60
|
const strikeService = strike_1.StrikeService.creator();
|
|
57
61
|
const modService = mod_service_1.ModerationService.creator(signingKey, signingKeyId, cfg, backgroundQueue, idResolver, eventPusher, appviewAgent, createAuthHeaders, strikeService);
|
|
58
|
-
const scheduledActionService =
|
|
62
|
+
const scheduledActionService = service_2.ScheduledActionService.creator();
|
|
59
63
|
const teamService = team_1.TeamService.creator(appviewAgent, cfg.appview.did, createAuthHeaders);
|
|
60
64
|
const teamProfileSynchronizer = new team_profile_synchronizer_1.TeamProfileSynchronizer(backgroundQueue, teamService(db), cfg.db.teamProfileRefreshIntervalMs);
|
|
61
65
|
const eventReverser = new event_reverser_1.EventReverser(db, modService);
|
|
62
66
|
const materializedViewRefresher = new materialized_view_refresher_1.MaterializedViewRefresher(backgroundQueue, cfg.db.materializedViewRefreshIntervalMs);
|
|
63
67
|
const scheduledActionProcessor = new scheduled_action_processor_1.ScheduledActionProcessor(db, cfg.service.did, settingService, modService, scheduledActionService);
|
|
64
68
|
const strikeExpiryProcessor = new strike_expiry_processor_1.StrikeExpiryProcessor(db, strikeService);
|
|
69
|
+
const queueService = service_1.QueueService.creator();
|
|
70
|
+
const queueRouter = new queue_router_1.QueueRouter(db, queueService);
|
|
71
|
+
const reportStatsService = stats_1.ReportStatsService.creator();
|
|
72
|
+
const statsComputer = new stats_computer_1.StatsComputer(db, reportStatsService, cfg.stats.computerIntervalMinutes);
|
|
65
73
|
// Only spawn the listener if verifier config exists and a jetstream URL is provided
|
|
66
74
|
const verificationListener = cfg.verifier && cfg.jetstreamUrl
|
|
67
75
|
? new verification_listener_1.VerificationListener(db, cfg.jetstreamUrl, cfg.verifier?.issuersToIndex)
|
|
@@ -77,7 +85,9 @@ class DaemonContext {
|
|
|
77
85
|
teamProfileSynchronizer,
|
|
78
86
|
scheduledActionProcessor,
|
|
79
87
|
strikeExpiryProcessor,
|
|
88
|
+
queueRouter,
|
|
80
89
|
verificationListener,
|
|
90
|
+
statsComputer,
|
|
81
91
|
...(overrides ?? {}),
|
|
82
92
|
});
|
|
83
93
|
}
|
|
@@ -108,9 +118,15 @@ class DaemonContext {
|
|
|
108
118
|
get strikeExpiryProcessor() {
|
|
109
119
|
return this.opts.strikeExpiryProcessor;
|
|
110
120
|
}
|
|
121
|
+
get queueRouter() {
|
|
122
|
+
return this.opts.queueRouter;
|
|
123
|
+
}
|
|
111
124
|
get verificationListener() {
|
|
112
125
|
return this.opts.verificationListener;
|
|
113
126
|
}
|
|
127
|
+
get statsComputer() {
|
|
128
|
+
return this.opts.statsComputer;
|
|
129
|
+
}
|
|
114
130
|
async start() {
|
|
115
131
|
this.eventPusher.start();
|
|
116
132
|
this.eventReverser.start();
|
|
@@ -118,11 +134,17 @@ class DaemonContext {
|
|
|
118
134
|
this.teamProfileSynchronizer.start();
|
|
119
135
|
this.scheduledActionProcessor.start();
|
|
120
136
|
this.strikeExpiryProcessor.start();
|
|
137
|
+
this.queueRouter.start();
|
|
121
138
|
this.verificationListener?.start();
|
|
139
|
+
this.statsComputer?.start();
|
|
122
140
|
}
|
|
123
141
|
async processAll() {
|
|
124
142
|
// Sequential because the materialized view values depend on the events.
|
|
125
143
|
await this.eventPusher.processAll();
|
|
144
|
+
// Drain pending modEventReport rows into the report table so test code
|
|
145
|
+
// that calls processAll() after creating reports sees the report rows
|
|
146
|
+
// immediately (in production this happens via the 1-min poll).
|
|
147
|
+
await this.queueRouter.routeReports();
|
|
126
148
|
await this.materializedViewRefresher.run();
|
|
127
149
|
await this.teamProfileSynchronizer.run();
|
|
128
150
|
}
|
|
@@ -135,7 +157,9 @@ class DaemonContext {
|
|
|
135
157
|
this.teamProfileSynchronizer.destroy(),
|
|
136
158
|
this.scheduledActionProcessor.destroy(),
|
|
137
159
|
this.strikeExpiryProcessor.destroy(),
|
|
160
|
+
this.queueRouter.destroy(),
|
|
138
161
|
this.verificationListener?.stop(),
|
|
162
|
+
this.statsComputer?.destroy(),
|
|
139
163
|
]);
|
|
140
164
|
}
|
|
141
165
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { AtpAgent } from '@atproto/api'\nimport { allFulfilled } from '@atproto/common'\nimport { Keypair, Secp256k1Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { createServiceAuthHeaders } from '@atproto/xrpc-server'\nimport { BackgroundQueue } from '../background'\nimport { OzoneConfig, OzoneSecrets } from '../config'\nimport { Database } from '../db'\nimport { ModerationService } from '../mod-service'\nimport { StrikeService } from '../mod-service/strike'\nimport { ScheduledActionService } from '../scheduled-action/service'\nimport { SettingService } from '../setting/service'\nimport { TeamService } from '../team'\nimport { getSigningKeyId } from '../util'\nimport { EventPusher } from './event-pusher'\nimport { EventReverser } from './event-reverser'\nimport { MaterializedViewRefresher } from './materialized-view-refresher'\nimport { ScheduledActionProcessor } from './scheduled-action-processor'\nimport { StrikeExpiryProcessor } from './strike-expiry-processor'\nimport { TeamProfileSynchronizer } from './team-profile-synchronizer'\nimport { VerificationListener } from './verification-listener'\n\nexport type DaemonContextOptions = {\n db: Database\n cfg: OzoneConfig\n backgroundQueue: BackgroundQueue\n signingKey: Keypair\n eventPusher: EventPusher\n eventReverser: EventReverser\n materializedViewRefresher: MaterializedViewRefresher\n teamProfileSynchronizer: TeamProfileSynchronizer\n scheduledActionProcessor: ScheduledActionProcessor\n strikeExpiryProcessor: StrikeExpiryProcessor\n verificationListener?: VerificationListener\n}\n\nexport class DaemonContext {\n constructor(private opts: DaemonContextOptions) {}\n\n static async fromConfig(\n cfg: OzoneConfig,\n secrets: OzoneSecrets,\n overrides?: Partial<DaemonContextOptions>,\n ): Promise<DaemonContext> {\n const db = new Database({\n url: cfg.db.postgresUrl,\n schema: cfg.db.postgresSchema,\n })\n const signingKey = await Secp256k1Keypair.import(secrets.signingKeyHex)\n const signingKeyId = await getSigningKeyId(db, signingKey.did())\n\n const idResolver = new IdResolver({\n plcUrl: cfg.identity.plcUrl,\n })\n\n const appviewAgent = new AtpAgent({ service: cfg.appview.url })\n const createAuthHeaders = (aud: string, lxm: string) =>\n createServiceAuthHeaders({\n iss: `${cfg.service.did}#atproto_labeler`,\n aud,\n lxm,\n keypair: signingKey,\n })\n\n const eventPusher = new EventPusher(db, createAuthHeaders, {\n appview: cfg.appview.pushEvents ? cfg.appview : undefined,\n pds: cfg.pds ?? undefined,\n })\n\n const backgroundQueue = new BackgroundQueue(db)\n\n const settingService = SettingService.creator()\n const strikeService = StrikeService.creator()\n const modService = ModerationService.creator(\n signingKey,\n signingKeyId,\n cfg,\n backgroundQueue,\n idResolver,\n eventPusher,\n appviewAgent,\n createAuthHeaders,\n strikeService,\n )\n const scheduledActionService = ScheduledActionService.creator()\n const teamService = TeamService.creator(\n appviewAgent,\n cfg.appview.did,\n createAuthHeaders,\n )\n const teamProfileSynchronizer = new TeamProfileSynchronizer(\n backgroundQueue,\n teamService(db),\n cfg.db.teamProfileRefreshIntervalMs,\n )\n\n const eventReverser = new EventReverser(db, modService)\n\n const materializedViewRefresher = new MaterializedViewRefresher(\n backgroundQueue,\n cfg.db.materializedViewRefreshIntervalMs,\n )\n\n const scheduledActionProcessor = new ScheduledActionProcessor(\n db,\n cfg.service.did,\n settingService,\n modService,\n scheduledActionService,\n )\n\n const strikeExpiryProcessor = new StrikeExpiryProcessor(db, strikeService)\n\n // Only spawn the listener if verifier config exists and a jetstream URL is provided\n const verificationListener =\n cfg.verifier && cfg.jetstreamUrl\n ? new VerificationListener(\n db,\n cfg.jetstreamUrl,\n cfg.verifier?.issuersToIndex,\n )\n : undefined\n\n return new DaemonContext({\n db,\n cfg,\n backgroundQueue,\n signingKey,\n eventPusher,\n eventReverser,\n materializedViewRefresher,\n teamProfileSynchronizer,\n scheduledActionProcessor,\n strikeExpiryProcessor,\n verificationListener,\n ...(overrides ?? {}),\n })\n }\n\n get db(): Database {\n return this.opts.db\n }\n\n get cfg(): OzoneConfig {\n return this.opts.cfg\n }\n\n get backgroundQueue(): BackgroundQueue {\n return this.opts.backgroundQueue\n }\n\n get eventPusher(): EventPusher {\n return this.opts.eventPusher\n }\n\n get eventReverser(): EventReverser {\n return this.opts.eventReverser\n }\n\n get materializedViewRefresher(): MaterializedViewRefresher {\n return this.opts.materializedViewRefresher\n }\n\n get teamProfileSynchronizer(): TeamProfileSynchronizer {\n return this.opts.teamProfileSynchronizer\n }\n\n get scheduledActionProcessor(): ScheduledActionProcessor {\n return this.opts.scheduledActionProcessor\n }\n\n get strikeExpiryProcessor(): StrikeExpiryProcessor {\n return this.opts.strikeExpiryProcessor\n }\n\n get verificationListener(): VerificationListener | undefined {\n return this.opts.verificationListener\n }\n\n async start() {\n this.eventPusher.start()\n this.eventReverser.start()\n this.materializedViewRefresher.start()\n this.teamProfileSynchronizer.start()\n this.scheduledActionProcessor.start()\n this.strikeExpiryProcessor.start()\n this.verificationListener?.start()\n }\n\n async processAll() {\n // Sequential because the materialized view values depend on the events.\n await this.eventPusher.processAll()\n await this.materializedViewRefresher.run()\n await this.teamProfileSynchronizer.run()\n }\n\n async destroy() {\n try {\n await allFulfilled([\n this.eventReverser.destroy(),\n this.eventPusher.destroy(),\n this.materializedViewRefresher.destroy(),\n this.teamProfileSynchronizer.destroy(),\n this.scheduledActionProcessor.destroy(),\n this.strikeExpiryProcessor.destroy(),\n this.verificationListener?.stop(),\n ])\n } finally {\n await this.backgroundQueue.destroy()\n await this.db.close()\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":";;;AAAA,sCAAuC;AACvC,4CAA8C;AAC9C,4CAA2D;AAC3D,gDAA8C;AAC9C,sDAA+D;AAC/D,8CAA+C;AAE/C,8BAAgC;AAChC,gDAAkD;AAClD,kDAAqD;AACrD,8CAA+C;AAC/C,2CAAoD;AACpD,yDAAoE;AACpE,gDAAmD;AACnD,kCAAqC;AACrC,kCAAyC;AACzC,iDAA4C;AAC5C,qDAAgD;AAChD,+EAAyE;AACzE,iDAA4C;AAC5C,6EAAuE;AACvE,qDAAgD;AAChD,uEAAiE;AACjE,2EAAqE;AACrE,mEAA8D;AAkB9D,MAAa,aAAa;IACxB,YAAoB,IAA0B;QAAlC;;;;mBAAQ,IAAI;WAAsB;IAAG,CAAC;IAElD,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,GAAgB,EAChB,OAAqB,EACrB,SAAyC;QAEzC,MAAM,EAAE,GAAG,IAAI,aAAQ,CAAC;YACtB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW;YACvB,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,cAAc;SAC9B,CAAC,CAAA;QACF,MAAM,UAAU,GAAG,MAAM,yBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACvE,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAe,EAAC,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAEhE,MAAM,UAAU,GAAG,IAAI,qBAAU,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,IAAI,cAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC/D,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CACrD,IAAA,sCAAwB,EAAC;YACvB,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,kBAAkB;YACzC,GAAG;YACH,GAAG;YACH,OAAO,EAAE,UAAU;SACpB,CAAC,CAAA;QAEJ,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,EAAE,EAAE,iBAAiB,EAAE;YACzD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACzD,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,SAAS;SAC1B,CAAC,CAAA;QAEF,MAAM,eAAe,GAAG,IAAI,4BAAe,CAAC,EAAE,CAAC,CAAA;QAE/C,MAAM,cAAc,GAAG,wBAAc,CAAC,OAAO,EAAE,CAAA;QAC/C,MAAM,aAAa,GAAG,sBAAa,CAAC,OAAO,EAAE,CAAA;QAC7C,MAAM,UAAU,GAAG,+BAAiB,CAAC,OAAO,CAC1C,UAAU,EACV,YAAY,EACZ,GAAG,EACH,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,CACd,CAAA;QACD,MAAM,sBAAsB,GAAG,gCAAsB,CAAC,OAAO,EAAE,CAAA;QAC/D,MAAM,WAAW,GAAG,kBAAW,CAAC,OAAO,CACrC,YAAY,EACZ,GAAG,CAAC,OAAO,CAAC,GAAG,EACf,iBAAiB,CAClB,CAAA;QACD,MAAM,uBAAuB,GAAG,IAAI,mDAAuB,CACzD,eAAe,EACf,WAAW,CAAC,EAAE,CAAC,EACf,GAAG,CAAC,EAAE,CAAC,4BAA4B,CACpC,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAEvD,MAAM,yBAAyB,GAAG,IAAI,uDAAyB,CAC7D,eAAe,EACf,GAAG,CAAC,EAAE,CAAC,iCAAiC,CACzC,CAAA;QAED,MAAM,wBAAwB,GAAG,IAAI,qDAAwB,CAC3D,EAAE,EACF,GAAG,CAAC,OAAO,CAAC,GAAG,EACf,cAAc,EACd,UAAU,EACV,sBAAsB,CACvB,CAAA;QAED,MAAM,qBAAqB,GAAG,IAAI,+CAAqB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAA;QAE1E,MAAM,YAAY,GAAG,sBAAY,CAAC,OAAO,EAAE,CAAA;QAC3C,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,EAAE,EAAE,YAAY,CAAC,CAAA;QAErD,MAAM,kBAAkB,GAAG,0BAAkB,CAAC,OAAO,EAAE,CAAA;QACvD,MAAM,aAAa,GAAG,IAAI,8BAAa,CACrC,EAAE,EACF,kBAAkB,EAClB,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAClC,CAAA;QAED,oFAAoF;QACpF,MAAM,oBAAoB,GACxB,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,YAAY;YAC9B,CAAC,CAAC,IAAI,4CAAoB,CACtB,EAAE,EACF,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,QAAQ,EAAE,cAAc,CAC7B;YACH,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,IAAI,aAAa,CAAC;YACvB,EAAE;YACF,GAAG;YACH,eAAe;YACf,UAAU;YACV,WAAW;YACX,aAAa;YACb,yBAAyB;YACzB,uBAAuB;YACvB,wBAAwB;YACxB,qBAAqB;YACrB,WAAW;YACX,oBAAoB;YACpB,aAAa;YACb,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAA;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAA;IAC5C,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAA;IAC1C,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAA;IAC3C,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAA;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAA;IACvC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAA;QACtC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAA;QACpC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAA;QACrC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAA;QAClC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAA;QAClC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,wEAAwE;QACxE,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;QACnC,uEAAuE;QACvE,sEAAsE;QACtE,+DAA+D;QAC/D,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;QACrC,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAA;QAC1C,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,IAAA,qBAAY,EAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC1B,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE;gBACxC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;gBACtC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE;gBACvC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;gBACpC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE;gBACjC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;aAC9B,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAA;YACpC,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;CACF;AA5MD,sCA4MC","sourcesContent":["import { AtpAgent } from '@atproto/api'\nimport { allFulfilled } from '@atproto/common'\nimport { Keypair, Secp256k1Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { createServiceAuthHeaders } from '@atproto/xrpc-server'\nimport { BackgroundQueue } from '../background'\nimport { OzoneConfig, OzoneSecrets } from '../config'\nimport { Database } from '../db'\nimport { ModerationService } from '../mod-service'\nimport { StrikeService } from '../mod-service/strike'\nimport { QueueService } from '../queue/service'\nimport { ReportStatsService } from '../report/stats'\nimport { ScheduledActionService } from '../scheduled-action/service'\nimport { SettingService } from '../setting/service'\nimport { TeamService } from '../team'\nimport { getSigningKeyId } from '../util'\nimport { EventPusher } from './event-pusher'\nimport { EventReverser } from './event-reverser'\nimport { MaterializedViewRefresher } from './materialized-view-refresher'\nimport { QueueRouter } from './queue-router'\nimport { ScheduledActionProcessor } from './scheduled-action-processor'\nimport { StatsComputer } from './stats-computer'\nimport { StrikeExpiryProcessor } from './strike-expiry-processor'\nimport { TeamProfileSynchronizer } from './team-profile-synchronizer'\nimport { VerificationListener } from './verification-listener'\n\nexport type DaemonContextOptions = {\n db: Database\n cfg: OzoneConfig\n backgroundQueue: BackgroundQueue\n signingKey: Keypair\n eventPusher: EventPusher\n eventReverser: EventReverser\n materializedViewRefresher: MaterializedViewRefresher\n teamProfileSynchronizer: TeamProfileSynchronizer\n scheduledActionProcessor: ScheduledActionProcessor\n strikeExpiryProcessor: StrikeExpiryProcessor\n queueRouter: QueueRouter\n verificationListener?: VerificationListener\n statsComputer?: StatsComputer\n}\n\nexport class DaemonContext {\n constructor(private opts: DaemonContextOptions) {}\n\n static async fromConfig(\n cfg: OzoneConfig,\n secrets: OzoneSecrets,\n overrides?: Partial<DaemonContextOptions>,\n ): Promise<DaemonContext> {\n const db = new Database({\n url: cfg.db.postgresUrl,\n schema: cfg.db.postgresSchema,\n })\n const signingKey = await Secp256k1Keypair.import(secrets.signingKeyHex)\n const signingKeyId = await getSigningKeyId(db, signingKey.did())\n\n const idResolver = new IdResolver({\n plcUrl: cfg.identity.plcUrl,\n })\n\n const appviewAgent = new AtpAgent({ service: cfg.appview.url })\n const createAuthHeaders = (aud: string, lxm: string) =>\n createServiceAuthHeaders({\n iss: `${cfg.service.did}#atproto_labeler`,\n aud,\n lxm,\n keypair: signingKey,\n })\n\n const eventPusher = new EventPusher(db, createAuthHeaders, {\n appview: cfg.appview.pushEvents ? cfg.appview : undefined,\n pds: cfg.pds ?? undefined,\n })\n\n const backgroundQueue = new BackgroundQueue(db)\n\n const settingService = SettingService.creator()\n const strikeService = StrikeService.creator()\n const modService = ModerationService.creator(\n signingKey,\n signingKeyId,\n cfg,\n backgroundQueue,\n idResolver,\n eventPusher,\n appviewAgent,\n createAuthHeaders,\n strikeService,\n )\n const scheduledActionService = ScheduledActionService.creator()\n const teamService = TeamService.creator(\n appviewAgent,\n cfg.appview.did,\n createAuthHeaders,\n )\n const teamProfileSynchronizer = new TeamProfileSynchronizer(\n backgroundQueue,\n teamService(db),\n cfg.db.teamProfileRefreshIntervalMs,\n )\n\n const eventReverser = new EventReverser(db, modService)\n\n const materializedViewRefresher = new MaterializedViewRefresher(\n backgroundQueue,\n cfg.db.materializedViewRefreshIntervalMs,\n )\n\n const scheduledActionProcessor = new ScheduledActionProcessor(\n db,\n cfg.service.did,\n settingService,\n modService,\n scheduledActionService,\n )\n\n const strikeExpiryProcessor = new StrikeExpiryProcessor(db, strikeService)\n\n const queueService = QueueService.creator()\n const queueRouter = new QueueRouter(db, queueService)\n\n const reportStatsService = ReportStatsService.creator()\n const statsComputer = new StatsComputer(\n db,\n reportStatsService,\n cfg.stats.computerIntervalMinutes,\n )\n\n // Only spawn the listener if verifier config exists and a jetstream URL is provided\n const verificationListener =\n cfg.verifier && cfg.jetstreamUrl\n ? new VerificationListener(\n db,\n cfg.jetstreamUrl,\n cfg.verifier?.issuersToIndex,\n )\n : undefined\n\n return new DaemonContext({\n db,\n cfg,\n backgroundQueue,\n signingKey,\n eventPusher,\n eventReverser,\n materializedViewRefresher,\n teamProfileSynchronizer,\n scheduledActionProcessor,\n strikeExpiryProcessor,\n queueRouter,\n verificationListener,\n statsComputer,\n ...(overrides ?? {}),\n })\n }\n\n get db(): Database {\n return this.opts.db\n }\n\n get cfg(): OzoneConfig {\n return this.opts.cfg\n }\n\n get backgroundQueue(): BackgroundQueue {\n return this.opts.backgroundQueue\n }\n\n get eventPusher(): EventPusher {\n return this.opts.eventPusher\n }\n\n get eventReverser(): EventReverser {\n return this.opts.eventReverser\n }\n\n get materializedViewRefresher(): MaterializedViewRefresher {\n return this.opts.materializedViewRefresher\n }\n\n get teamProfileSynchronizer(): TeamProfileSynchronizer {\n return this.opts.teamProfileSynchronizer\n }\n\n get scheduledActionProcessor(): ScheduledActionProcessor {\n return this.opts.scheduledActionProcessor\n }\n\n get strikeExpiryProcessor(): StrikeExpiryProcessor {\n return this.opts.strikeExpiryProcessor\n }\n\n get queueRouter(): QueueRouter {\n return this.opts.queueRouter\n }\n\n get verificationListener(): VerificationListener | undefined {\n return this.opts.verificationListener\n }\n\n get statsComputer(): StatsComputer | undefined {\n return this.opts.statsComputer\n }\n\n async start() {\n this.eventPusher.start()\n this.eventReverser.start()\n this.materializedViewRefresher.start()\n this.teamProfileSynchronizer.start()\n this.scheduledActionProcessor.start()\n this.strikeExpiryProcessor.start()\n this.queueRouter.start()\n this.verificationListener?.start()\n this.statsComputer?.start()\n }\n\n async processAll() {\n // Sequential because the materialized view values depend on the events.\n await this.eventPusher.processAll()\n // Drain pending modEventReport rows into the report table so test code\n // that calls processAll() after creating reports sees the report rows\n // immediately (in production this happens via the 1-min poll).\n await this.queueRouter.routeReports()\n await this.materializedViewRefresher.run()\n await this.teamProfileSynchronizer.run()\n }\n\n async destroy() {\n try {\n await allFulfilled([\n this.eventReverser.destroy(),\n this.eventPusher.destroy(),\n this.materializedViewRefresher.destroy(),\n this.teamProfileSynchronizer.destroy(),\n this.scheduledActionProcessor.destroy(),\n this.strikeExpiryProcessor.destroy(),\n this.queueRouter.destroy(),\n this.verificationListener?.stop(),\n this.statsComputer?.destroy(),\n ])\n } finally {\n await this.backgroundQueue.destroy()\n await this.db.close()\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Database } from '../db';
|
|
2
|
+
export declare function initJobCursor(db: Database, job: string): Promise<void>;
|
|
3
|
+
export declare function getJobCursor(db: Database, job: string): Promise<string | null>;
|
|
4
|
+
export declare function updateJobCursor(db: Database, job: string, cursor: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=job-cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-cursor.d.ts","sourceRoot":"","sources":["../../src/daemon/job-cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,wBAAsB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5E;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,EACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAMf"}
|