/**
 * CORS Middleware – läuft vor jedem API-Request.
 *
 * Warum Middleware statt routeRules:
 *   - routeRules mit cors:true + headers:{} setzt den Header doppelt → Browser blockiert
 *   - Nur hier kann OPTIONS-Preflight korrekt mit 204 beantwortet werden
 *
 * Origin-Strategie: echo zurück statt *, damit Capacitor-Webview (capacitor://localhost),
 * iOS-Scheme (rebreakapp://), Android (http://localhost) und alle Staging/Prod-Domains
 * funktionieren – ohne explizite Whitelist pflegen zu müssen.
 * Das API verwendet Bearer-Token-Auth (kein Cookie/credentials), daher ist das sicher.
 */
export default defineEventHandler((event) => {
  if (!event.path.startsWith("/api/")) return;

  const origin = getHeader(event, "origin") ?? "*";

  setHeader(event, "Access-Control-Allow-Origin", origin);
  setHeader(event, "Access-Control-Allow-Credentials", "true");
  setHeader(
    event,
    "Access-Control-Allow-Methods",
    "GET, POST, PUT, PATCH, DELETE, OPTIONS"
  );
  setHeader(
    event,
    "Access-Control-Allow-Headers",
    "Content-Type, Authorization, apikey, x-client-info, x-device-id, x-platform, x-device-name, x-device-model, x-device-os"
  );
  setHeader(event, "Access-Control-Max-Age", "3600");
  setHeader(event, "Vary", "Origin");

  // OPTIONS Preflight → sofort 204 zurück, kein Handler nötig
  if (getMethod(event) === "OPTIONS") {
    event.node.res.statusCode = 204;
    event.node.res.end();
  }
});
