Ctrl K
ComunidadGuías…

scripts/validate-analytics-engine-sql.ts

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

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bun
import {
  lintAnalyticsEngineSql,
  prepareAnalyticsEngineSqlForLiveValidation,
  validateAnalyticsEngineSqlLive,
} from '../supabase/functions/_backend/utils/analyticsEngineSqlLint.ts'
import { collectAnalyticsEngineSqlFixtures } from '../tests/helpers/collectAnalyticsEngineSqlFixtures.ts'

const accountId = process.env.CF_ACCOUNT_ANALYTICS_ID
const token = process.env.CF_ANALYTICS_TOKEN

if (!accountId || !token) {
  console.error('Missing CF_ACCOUNT_ANALYTICS_ID or CF_ANALYTICS_TOKEN')
  process.exit(1)
}

const fixtures = await collectAnalyticsEngineSqlFixtures()
const lintFailures = fixtures.flatMap((fixture) => {
  return lintAnalyticsEngineSql(fixture.query).map(issue => `${fixture.name}: ${issue.rule} - ${issue.message}`)
})

if (lintFailures.length > 0) {
  console.error('Static Analytics Engine SQL lint failures:')
  for (const failure of lintFailures)
    console.error(`- ${failure}`)
  process.exit(1)
}

const liveFailures: string[] = []

for (const fixture of fixtures) {
  const prepared = prepareAnalyticsEngineSqlForLiveValidation(fixture.query)
  if (!prepared)
    continue

  const result = await validateAnalyticsEngineSqlLive(accountId, token, fixture.query, prepared)
  if (!result.ok)
    liveFailures.push(`${fixture.name} (${result.status}): ${result.body.trim()}`)
}

if (liveFailures.length > 0) {
  console.error('Live Analytics Engine SQL validation failures:')
  for (const failure of liveFailures)
    console.error(`- ${failure}`)
  process.exit(1)
}

console.log(`Validated ${fixtures.length} Analytics Engine SQL queries against Cloudflare`)