import { deliverQueue } from '@/queue/queues'; import { URL } from 'url'; import define from '../../../define'; export const meta = { tags: ['admin'], requireCredential: true, requireModerator: true, res: { type: 'array', optional: false, nullable: false, items: { type: 'array', optional: false, nullable: false, items: { anyOf: [ { type: 'string', }, { type: 'number', }, ], }, }, example: [[ 'example.com', 12, ]], }, } as const; const paramDef = { type: 'object', properties: {}, required: [], } as const; // eslint-disable-next-line import/no-default-export export default define(meta, paramDef, async (ps) => { const jobs = await deliverQueue.getJobs(['delayed']); const res = [] as [string, number][]; for (const job of jobs) { const host = new URL(job.data.to).host; if (res.find(x => x[0] === host)) { res.find(x => x[0] === host)![1]++; } else { res.push([host, 1]); } } res.sort((a, b) => b[1] - a[1]); return res; });