Files
NightSpire/web-next/next.config.ts
T
Inna 65f6776969 Armería: búsqueda insensible a mayúsculas, autocompletar y proxy del visor 3D
Tres arreglos:

1) Búsqueda insensible a mayúsculas/minúsculas. Las consultas usaban LIKE directo
   (sensible según la colación de la tabla), así que 'test' no encontraba 'Test'.
   Ahora comparan con LOWER(col) LIKE LOWER(?).

2) Autocompletar tipo wowhead. Nuevo /api/armory/suggest + ArmorySearchBox
   reescrito: al teclear (≥1 carácter, con debounce) muestra un desplegable con
   personajes, ítems y hermandades que coinciden; clic va directo a la ficha/wowhead.
   Enter o el botón siguen haciendo la búsqueda completa.

3) Visor 3D «no disponible». Causa: el contenido de wow.zamimg.com/modelviewer no
   envía cabeceras CORS (el propio README de wow-model-viewer pide un proxy). Se
   añade un rewrite en next.config (/modelviewer/* -> zamimg) para servirlo
   same-origin, y el visor usa esas rutas. Además, si falla la resolución de ítems
   se renderiza el personaje sin equipo, y los errores se registran en consola para
   diagnóstico.

Verificado: 'test' encuentra 'Test'; el autocompletar responde; el proxy
/modelviewer/live/viewer/viewer.min.js sirve 200 same-origin.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 14:41:06 +00:00

22 lines
953 B
TypeScript

import type { NextConfig } from 'next'
import createNextIntlPlugin from 'next-intl/plugin'
const withNextIntl = createNextIntlPlugin('./i18n/request.ts')
const nextConfig: NextConfig = {
// Barra final SOLO en la raíz de idioma (/es/, /en/); el resto de rutas SIN
// barra (/es/content-creators). Desactivamos el auto-redirect de Next: la
// normalización la hace el middleware con lógica estricta de pathname.
skipTrailingSlashRedirect: true,
// Proxy same-origin del visor de modelos de wowhead. El contenido de
// wow.zamimg.com/modelviewer no envía cabeceras CORS, así que el navegador
// bloquea el visor 3D si se pide cross-origin. Sirviéndolo bajo nuestro dominio
// (/modelviewer/*) es same-origin y no hay bloqueo. Ver components/ArmoryModel3D.
async rewrites() {
return [{ source: '/modelviewer/:path*', destination: 'https://wow.zamimg.com/modelviewer/:path*' }]
},
}
export default withNextIntl(nextConfig)