import { withPayload } from '@payloadcms/next/withPayload'
import type { NextConfig } from 'next'
import { existsSync } from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'

const __filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(__filename)
// Local monorepo: apps/cms → repo root. Standalone host deploy: cms folder is the root.
const candidateMonorepoRoot = path.resolve(dirname, '../..')
const projectRoot = existsSync(path.join(candidateMonorepoRoot, 'pnpm-workspace.yaml'))
  ? candidateMonorepoRoot
  : dirname

const nextConfig: NextConfig = {
  images: {
    localPatterns: [
      {
        pathname: '/api/media/file/**',
      },
    ],
  },
  webpack: (webpackConfig) => {
    webpackConfig.resolve.extensionAlias = {
      '.cjs': ['.cts', '.cjs'],
      '.js': ['.ts', '.tsx', '.js', '.jsx'],
      '.mjs': ['.mts', '.mjs'],
    }

    return webpackConfig
  },
  turbopack: {
    root: projectRoot,
  },
  outputFileTracingRoot: projectRoot,
}

export default withPayload(nextConfig, { devBundleServerPackages: false })
