import { NextResponse } from "next/server";
import client from "prom-client";

// Явный Node.js рантайм — prom-client (perf_hooks, process.*) не работает в
// Edge Runtime, дефолтном для route handlers в Next.js.
export const runtime = "nodejs";

// register — модульный синглтон: Next.js держит один и тот же процесс между
// запросами в проде (не пересоздаёт модуль на каждый вызов), поэтому
// collectDefaultMetrics() должен быть вызван ровно один раз за жизнь
// процесса — глобальный флаг предотвращает повторную регистрацию тех же
// метрик при hot-reload в dev-режиме.
declare global {
  var __prometheusMetricsInitialized: boolean | undefined;
}

if (!global.__prometheusMetricsInitialized) {
  client.collectDefaultMetrics();
  global.__prometheusMetricsInitialized = true;
}

export async function GET() {
  const metrics = await client.register.metrics();
  return new NextResponse(metrics, {
    status: 200,
    headers: { "Content-Type": client.register.contentType },
  });
}
