1.0.0 • Published 4 months ago

cloudflare-analytics v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

cloudflare-analytics

Cloudflare Analytics wrapper for Node.js

npm i cloudflare-analytics

https://developers.cloudflare.com/analytics/graphql-api/

Usage

const CloudflareAnalytics = require('cloudflare-analytics')

const cfa = new CloudflareAnalytics()

const zones = await cfa.zones()
const sites = await cfa.sites()

const zone = zones.find(zone => zone.name === 'example.com')
const site = sites.find(site => site.host.includes(zone.name))

const traffic = await cfa.httpTraffic(zone.id)
const analytics = await cfa.webAnalytics(site.site_tag)

console.log(traffic)
console.log(analytics)

API

cfa = new CloudflareAnalytics([options])

Create a Cloudflare Analytics instance.

Options:

{
  accountId: process.env.CF_ACCOUNT_ID,
  token: process.env.CF_TOKEN
}

out = await cfa.api(pathname[, options])

Make any request to Cloudflare.

Options:

{
  method: 'GET',
  query,
  body
}

data = await cfa.graphql(query[, options])

Execute a custom GraphQL query.

Options:

{
  operationName,
  variables
}

zones = await cfa.zones()

List zones.

sites = await cfa.sites()

List sites.

traffic = await cfa.httpTraffic(zoneId[, options])

Get the HTTP Traffic details of a zone.

Options:

{
  since, // ISO time e.g. '2025-02-24T17:00:00.000Z'
  until // ISO time e.g.: '2025-02-25T17:00:00.000Z'
}

Returns:

[..., {
  dimensions: { datetime },
  sum: {
    browserMap,
    bytes,
    cachedBytes,
    cachedRequests,
    clientSSLMap,
    contentTypeMap,
    countryMap,
    encryptedBytes,
    encryptedRequests,
    ipClassMap,
    pageViews,
    requests,
    responseStatusMap,
    threatPathingMap,
    threats
  },
  uniq: { uniques }
}]

analytics = await cfa.webAnalytics(siteTag)

Get the Web Analytics details of a site.

Options:

{
  since, // ISO time e.g. '2025-02-24T17:13:37.133Z'
  until // ISO time e.g.: '2025-02-25T17:13:37.133Z'
}

Returns:

{
  countries: [
    {
      avg: { sampleInterval },
      count,
      dimensions: { metric },
      sum: { visits }
    },
    { avg, count, dimensions, sum }
  ],
  topBrowsers: [
    { avg, count, dimensions, sum },
    { avg, count, dimensions, sum }
  ],
  topDeviceTypes: [
    { avg, count, dimensions, sum },
    { avg, count, dimensions, sum }
  ],
  topHosts: [ { avg, count, dimensions, sum } ],
  topOSs: [
    { avg, count, dimensions, sum },
    { avg, count, dimensions, sum }
  ],
  topPaths: [ { avg, count, dimensions, sum } ],
  topReferers: [ { avg, count, dimensions, sum } ],
  total: [ { count, sum } ]
}

Notes

https://developers.cloudflare.com/analytics/graphql-api/migration-guides/zone-analytics/

https://developers.cloudflare.com/analytics/graphql-api/getting-started/querying-basics/

https://pages.johnspurlock.com/graphql-schema-docs/cloudflare.html

License

MIT

1.0.0

4 months ago