const { withSentryConfig } = require('@sentry/nextjs')
const createNextIntlPlugin = require('next-intl/plugin')

const withNextIntl = createNextIntlPlugin('./src/i18n/request.ts')

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  transpilePackages: ['@awoooi/lewooogo-core'],
  output: 'standalone',
  experimental: {
    typedRoutes: true,
  },
  // CI/CD: ESLint 在獨立 lint job 執行，build 時跳過
  eslint: {
    ignoreDuringBuilds: true,
  },
  // CI/CD: TypeScript 錯誤在獨立 type-check job 處理
  typescript: {
    ignoreBuildErrors: true,
  },
  // Sprint 5: 舊路由暫不 redirect
  // 原因: 整合頁面用 lazy import 載入原始頁面，redirect 會造成循環
  // 策略: 舊路由保持獨立可用，新路由是整合入口
  // 未來: 統帥確認無問題後，可逐步加入 redirect
}

// Sentry 配置 (Self-Hosted 內部來源（僅 runtime）)
const sentryWebpackPluginOptions = {
  // 只在有 AUTH_TOKEN 時上傳 source maps
  silent: true,
  // 組織與專案 (Self-Hosted 設定)
  org: process.env.SENTRY_ORG || 'awoooi',
  project: process.env.SENTRY_PROJECT || 'awoooi-web',
  // 禁用自動 source map 上傳 (Self-Hosted 需手動配置)
  disableServerWebpackPlugin: !process.env.SENTRY_AUTH_TOKEN,
  disableClientWebpackPlugin: !process.env.SENTRY_AUTH_TOKEN,
}

// 組合: next-intl → sentry
module.exports = withSentryConfig(withNextIntl(nextConfig), sentryWebpackPluginOptions)
