import type { NextConfig } from 'next';

const imageHosts = (process.env.NEXT_PUBLIC_IMAGE_HOSTS ?? '')
  .split(',')
  .map((host) => host.trim())
  .map((host) => {
    try {
      return new URL(host).hostname;
    } catch {
      return host;
    }
  })
  .filter(Boolean);

const nextConfig: NextConfig = {
  distDir: process.env.NEXT_DIST_DIR || '.next',
  typescript: {
    tsconfigPath: process.env.NEXT_TS_CONFIG_PATH || 'tsconfig.json',
  },
  allowedDevOrigins: ['127.0.0.1', 'localhost'],
  images: {
    remotePatterns: [
      ...imageHosts.map((hostname) => ({
        protocol: 'https' as const,
        hostname,
      })),
      ...(process.env.NODE_ENV !== 'production'
        ? [
            {
              protocol: 'http' as const,
              hostname: 'localhost',
            },
            {
              protocol: 'http' as const,
              hostname: '127.0.0.1',
            },
          ]
        : []),
    ],
  },
};

export default nextConfig;
