From def8b375621c5c9c90f4c6787b88275603514d28 Mon Sep 17 00:00:00 2001 From: Jarmo Isotalo Date: Thu, 1 Oct 2020 11:23:37 +0300 Subject: [PATCH] Add siteHash and userAgent (#27170) * Add siteHash and userAgent * Track user-agent * capture siteHash --- packages/gatsby-telemetry/src/index.ts | 8 +++++--- packages/gatsby-telemetry/src/telemetry.ts | 23 +++++++++++++++++++--- yarn.lock | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/packages/gatsby-telemetry/src/index.ts b/packages/gatsby-telemetry/src/index.ts index b5a9c6993aac4..807a090dc6f83 100644 --- a/packages/gatsby-telemetry/src/index.ts +++ b/packages/gatsby-telemetry/src/index.ts @@ -38,7 +38,7 @@ export function trackCli( tags?: ITelemetryTagsPayload, opts?: ITelemetryOptsPayload ): void { - instance.captureEvent(input, tags, opts) + instance.trackCli(input, tags, opts) } export function captureEvent( @@ -92,9 +92,11 @@ export function addSiteMeasurement(event: string, obj): void { } export function expressMiddleware(source: string) { - return function (_req: Request, _res: Response, next): void { + return function (req: Request, _res: Response, next): void { try { - instance.trackActivity(`${source}_ACTIVE`) + instance.trackActivity(`${source}_ACTIVE`, { + userAgent: req.headers[`user-agent`], + }) } catch (e) { // ignore } diff --git a/packages/gatsby-telemetry/src/telemetry.ts b/packages/gatsby-telemetry/src/telemetry.ts index aa1d7cfc15256..8c05655df27af 100644 --- a/packages/gatsby-telemetry/src/telemetry.ts +++ b/packages/gatsby-telemetry/src/telemetry.ts @@ -1,6 +1,6 @@ import uuidv4 from "uuid/v4" import os from "os" -import { isCI, getCIName } from "gatsby-core-utils" +import { isCI, getCIName, createContentDigest } from "gatsby-core-utils" import { getRepositoryId as _getRepositoryId, IRepositoryId, @@ -73,6 +73,8 @@ export interface ITelemetryTagsPayload { name?: string starterName?: string siteName?: string + siteHash?: string + userAgent?: string pluginName?: string exitCode?: number duration?: number @@ -118,6 +120,7 @@ export class AnalyticsTracker { repositoryId?: IRepositoryId features = new Set() machineId: string + siteHash?: string = createContentDigest(process.cwd()) constructor({ componentId, @@ -202,6 +205,20 @@ export class AnalyticsTracker { return `-0.0.0` } + trackCli( + type: string | Array = ``, + tags: ITelemetryTagsPayload = {}, + opts: ITelemetryOptsPayload = { debounce: false } + ): void { + if (!this.isTrackingEnabled()) { + return + } + if (typeof tags.siteHash === `undefined`) { + tags.siteHash = this.siteHash + } + this.captureEvent(type, tags, opts) + } + captureEvent( type: string | Array = ``, tags: ITelemetryTagsPayload = {}, @@ -369,7 +386,7 @@ export class AnalyticsTracker { return osInfo } - trackActivity(source: string): void { + trackActivity(source: string, tags: ITelemetryTagsPayload = {}): void { if (!this.isTrackingEnabled()) { return } @@ -379,7 +396,7 @@ export class AnalyticsTracker { const debounceTime = 5 * 1000 // 5 sec if (now - last > debounceTime) { - this.captureEvent(source) + this.captureEvent(source, tags) } this.debouncer[source] = now } diff --git a/yarn.lock b/yarn.lock index bb5e07f54ab21..b792d8fbe3a15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20725,7 +20725,7 @@ remark-mdx@1.6.16: remark-parse "8.0.3" unified "9.1.0" -remark-mdx@^1.6.18, remark-mdx@^1.6.6: +remark-mdx@^1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.18.tgz#d8c76017c95824cc7fb853bb2759add8ba0cf319" integrity sha512-xNhjv4kJZ8L6RV68yK8fQ6XWlvSIFOE5VPmM7wMKSwkvwBu6tlUJy0gRF2WiZ4fPPOj6jpqlVB9QakipvZuEqg==