Ctrl K
ComunidadGuías…

vercel.json

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "buildCommand": "npm run build",
  "outputDirectory": "build",
  "rewrites": [
    { "source": "/stats/:match*", "destination": "https://cloud.umami.is/:match*" },
    { "source": "/api/(.*)", "destination": "/api/index" },
    { "source": "/((?!api/).*)", "destination": "/index.html" }
  ],
  "headers": [
    {
      "source": "/((?!api/|stats/).*)",
      "headers": [
        {
          "key": "Content-Security-Policy",
          "value": "default-src 'self'; script-src 'self' https://challenges.cloudflare.com https://s3.tradingview.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https://coin-images.coingecko.com; connect-src 'self' https://challenges.cloudflare.com https://fonts.googleapis.com https://gateway.umami.is; frame-src https://challenges.cloudflare.com https://s.tradingview.com https://www.tradingview.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; object-src 'none'"
        },
        { "key": "X-Frame-Options", "value": "DENY" },
        { "key": "X-Content-Type-Options", "value": "nosniff" },
        { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" },
        { "key": "Permissions-Policy", "value": "camera=(), microphone=(), geolocation=(), payment=(), usb=()" },
        { "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains" }
      ]
    }
  ],
  "crons": [
    { "path": "/api/cron/refresh-user-averages", "schedule": "0 3 1 * *" },
    { "path": "/api/cron/delete-users", "schedule": "0 2 * * *" }
  ],
  "functions": {
    "api/index.ts": {
      "maxDuration": 60
    }
  }
}