diff --git a/apps/cli/package.json b/apps/cli/package.json index ba909e2..d8d906a 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -62,7 +62,6 @@ "handlebars": "^4.7.8", "jsonc-parser": "^3.3.1", "picocolors": "^1.1.1", - "posthog-node": "^5.6.0", "trpc-cli": "^0.10.2", "ts-morph": "^26.0.0", "zod": "^4.0.14" diff --git a/apps/cli/src/utils/analytics.ts b/apps/cli/src/utils/analytics.ts index 94bbb96..5738898 100644 --- a/apps/cli/src/utils/analytics.ts +++ b/apps/cli/src/utils/analytics.ts @@ -1,4 +1,3 @@ -import { PostHog } from "posthog-node"; import type { ProjectConfig } from "../types"; import { getLatestCLIVersion } from "./get-latest-cli-version"; import { isTelemetryEnabled } from "./telemetry"; @@ -7,35 +6,30 @@ const POSTHOG_API_KEY = process.env.POSTHOG_API_KEY || ""; const POSTHOG_HOST = process.env.POSTHOG_HOST; export async function trackProjectCreation(config: ProjectConfig) { - const posthog = new PostHog(POSTHOG_API_KEY, { - host: POSTHOG_HOST, - flushAt: 1, - flushInterval: 0, - privacyMode: true, - disableGeoip: true, - disabled: !isTelemetryEnabled(), - }); + if (!isTelemetryEnabled()) return; + + const sessionId = `cli_${crypto.randomUUID().replace(/-/g, "")}`; + // biome-ignore lint/correctness/noUnusedVariables: `projectName`, `projectDir`, and `relativePath` are not used in the event properties + const { projectName, projectDir, relativePath, ...safeConfig } = config; + + const payload = { + api_key: POSTHOG_API_KEY, + event: "project_created", + properties: { + ...safeConfig, + cli_version: getLatestCLIVersion(), + node_version: process.version, + platform: process.platform, + $ip: null, + }, + distinct_id: sessionId, + }; try { - const sessionId = `cli_${crypto.randomUUID().replace(/-/g, "")}`; - - // biome-ignore lint/correctness/noUnusedVariables: `projectName`, `projectDir`, and `relativePath` are not used in the event properties - const { projectName, projectDir, relativePath, ...safeConfig } = config; - - posthog.capture({ - distinctId: sessionId, - event: "project_created", - properties: { - ...safeConfig, - cli_version: getLatestCLIVersion(), - node_version: process.version, - platform: process.platform, - $ip: null, - }, + await fetch(`${POSTHOG_HOST}/capture`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), }); - } catch (_error) { - // consola.debug("Analytics tracking failed:", error); - } finally { - await posthog.shutdown(); - } + } catch (_error) {} } diff --git a/bun.lock b/bun.lock index 3fe1242..b428c91 100644 --- a/bun.lock +++ b/bun.lock @@ -28,7 +28,6 @@ "handlebars": "^4.7.8", "jsonc-parser": "^3.3.1", "picocolors": "^1.1.1", - "posthog-node": "^5.6.0", "trpc-cli": "^0.10.2", "ts-morph": "^26.0.0", "zod": "^4.0.14", @@ -2115,8 +2114,6 @@ "posthog-js": ["posthog-js@1.258.5", "", { "dependencies": { "core-js": "^3.38.1", "fflate": "^0.4.8", "preact": "^10.19.3", "web-vitals": "^4.2.4" }, "peerDependencies": { "@rrweb/types": "2.0.0-alpha.17", "rrweb-snapshot": "2.0.0-alpha.17" }, "optionalPeers": ["@rrweb/types", "rrweb-snapshot"] }, "sha512-Tx6CzS8MsGAQGPrQth5TbkGxGQgAY01SktNW773/KDmVOWiRVZq/WQF/MRJRiuFxJ7qjethZQi3aBWfWKdr1RA=="], - "posthog-node": ["posthog-node@5.6.0", "", {}, "sha512-MVXxKmqAYp2cPBrN1YMhnhYsJYIu6yc6wumbHz1dbo67wZBf2WtMm67Uh+4VCrp07049qierWlxQqz1W5zGDeg=="], - "preact": ["preact@10.27.0", "", {}, "sha512-/DTYoB6mwwgPytiqQTh/7SFRL98ZdiD8Sk8zIUVOxtwq4oWcwrcd1uno9fE/zZmUaUrFNYzbH14CPebOz9tZQw=="], "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],