From f56ae52fc4a575d1a99b2ab450b24a625ad62223 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Tue, 29 Oct 2024 03:59:47 +0530 Subject: [PATCH] feat: v0.0.1 analytics --- server/src/utils/analytics.ts | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 server/src/utils/analytics.ts diff --git a/server/src/utils/analytics.ts b/server/src/utils/analytics.ts new file mode 100644 index 00000000..b9b86bb1 --- /dev/null +++ b/server/src/utils/analytics.ts @@ -0,0 +1,48 @@ +import { PostHog } from 'posthog-node' +import { execSync } from 'child_process' +import os from 'os' +import fs from 'fs' +import path from 'path' +import { ANALYTICS_ID } from '../constants/config' + +const posthogClient = new PostHog( + 'phc_19FEaqf2nfrvPoNcw6H7YjhERoiXJ7kamkQrvvFnQhw', + { host: 'https://us.i.posthog.com' } +) + +const DEFAULT_DISTINCT_ID = "oss"; + +function getOssVersion() { + try { + const packageJsonPath = path.resolve(process.cwd(), 'package.json'); + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); + + return packageJson.version || 'unknown'; + } catch { + return 'unknown'; + } +} + +function analyticsMetadata() { + return { + os: os.type().toLowerCase(), + oss_version: getOssVersion(), + machine: os.arch(), + platform: os.platform(), + node_version: process.version, + environment: process.env.ENV || 'production', + }; +} + +export function capture(event: any, data = {}) { + if (process.env.MAXUN_TELEMETRY !== 'true') return; + + const distinctId = ANALYTICS_ID || DEFAULT_DISTINCT_ID; + const payload = { ...data, ...analyticsMetadata() }; + + posthogClient.capture({ + distinctId, + event, + properties: payload, + }); +}