import createMiddleware from 'next-intl/middleware'
import { NextResponse, type NextRequest } from 'next/server'
import { routing } from './i18n/routing'

const intlMiddleware = createMiddleware(routing)

// Raíces de idioma: «/es», «/en». Estas SÍ llevan barra final; el resto NO.
const LOCALE_ROOTS = new Set(routing.locales.map((l) => `/${l}`))

export default function middleware(request: NextRequest) {
  const { pathname } = request.nextUrl

  // 1) Raíz de idioma sin barra → con barra: /es → /es/
  if (LOCALE_ROOTS.has(pathname)) {
    const url = new URL(request.url)
    url.pathname = `${pathname}/`
    return NextResponse.redirect(url)
  }

  // 2) Sub-ruta con barra final → sin barra (la raíz /es/ se conserva): /es/x/ → /es/x
  if (pathname.length > 1 && pathname.endsWith('/') && !LOCALE_ROOTS.has(pathname.slice(0, -1))) {
    const url = new URL(request.url)
    url.pathname = pathname.replace(/\/+$/, '')
    return NextResponse.redirect(url)
  }

  return intlMiddleware(request)
}

export const config = {
  // Aplica a todo salvo /api, estáticos de Next e ipas con extensión.
  matcher: ['/((?!api|_next|_vercel|.*\\..*).*)'],
}
