import * as Sentry from '@sentry/nextjs';

/**
 * Next.js will call this on boot for the active runtime.
 *
 * NEXT_RUNTIME is an environment variable automatically set by Next.js:
 * - 'nodejs' when running in the standard Node.js runtime
 * - 'edge' when running in the Edge runtime (e.g. Middleware, Edge API Routes)
 */
export async function register() {
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    await import('./sentry.server.config');
    
    // Initialize server services on boot
    // We do this AFTER Sentry to ensure errors during service init are caught
    const { getConfig } = await import('@/lib/config');
    getConfig(); // Trigger validation
    
    const { getServerAppServices } = await import('@/lib/services/create-services.server');
    getServerAppServices();
  }

  if (process.env.NEXT_RUNTIME === 'edge') {
    await import('./sentry.edge.config');
  }
}

// Capture errors from Server Components, middleware and route handlers.
export const onRequestError = Sentry.captureRequestError;

