import { d as defineEventHandler, I as Instance, l as APUser } from '../../nitro/nitro.mjs';
import { fn, col } from '@sequelize/core';
import { r as requireAdminSession } from '../../_/session.mjs';
import 'luxon';
import 'html-to-text';
import 'zod';
import 'crypto';
import 'node:fs';
import 'sharp';
import 'path';
import 'node:stream';
import 'jsdom';
import 'dompurify';
import 'mime-types';
import 'fs';
import 'fs/promises';
import 'linkify-html';
import '@peertube/http-signature';
import 'jsonld';
import 'lodash.intersection';
import 'email-templates';
import 'node:http';
import 'node:https';
import 'node:crypto';
import 'node:events';
import 'node:buffer';
import 'node:path';
import 'vue';
import 'vue-router';
import 'dotenv';
import 'url';
import 'bcryptjs';
import 'slugify';
import 'umzug';
import 'consola';
import '@sequelize/core/decorators-legacy';
import 'util';
import 'mitt';
import 'ical.js';
import 'node:url';
import 'fast-xml-parser';
import '../../_/getUser.mjs';
import '../../_/jwt.mjs';
import 'jose';

const index_get = defineEventHandler(async (event) => {
  await requireAdminSession(event);
  const instances = await Instance.findAll({
    attributes: [
      "domain",
      "name",
      "blocked",
      "data",
      [fn("COUNT", col("APUsers.ap_id")), "users"]
    ],
    order: [["users", "DESC"]],
    group: ["domain"],
    include: [
      { model: APUser, attributes: [] }
    ]
  });
  return instances.map((i) => {
    const { data, ...instance } = i.get({ plain: true });
    return {
      ...instance,
      usage: data.usage
    };
  });
});

export { index_get as default };
