From 1a82978f2cde65978ea773674b7bafd7d846c95e Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Dec 2023 10:37:19 +0530 Subject: [PATCH] chore: Use manual page tracking to avoid sending hash. --- .env | 2 + .vscode/settings.json | 2 + package.json | 3 +- src/lib/components/Navbar.svelte | 6 +- src/lib/util/stats.ts | 42 +++++------ src/lib/util/util.ts | 4 +- yarn.lock | 119 +------------------------------ 7 files changed, 32 insertions(+), 146 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..5d946ab4 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ + MERMAID_DOMAIN="mermaid.live" + MERMAID_ANALYTICS_URL="https://p.mermaid.live" diff --git a/.vscode/settings.json b/.vscode/settings.json index 71acc20d..e1731904 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,10 +9,12 @@ "cssnano", "daisyui", "esserializer", + "gantt", "KROKI", "localstorage", "mermaidchart", "mindmap", + "Pageview", "pako", "Serde", "serdes", diff --git a/package.json b/package.json index d1d76c50..37592fa9 100644 --- a/package.json +++ b/package.json @@ -68,14 +68,13 @@ "vitest": "^0.34.0" }, "dependencies": { - "analytics": "0.8.9", - "analytics-plugin-plausible": "0.0.6", "daisyui": "2.52.0", "dayjs": "^1.11.7", "js-base64": "3.7.5", "mermaid": "10.6.1", "monaco-editor": "0.45.0", "pako": "2.1.0", + "plausible-tracker": "^0.3.8", "random-word-slugs": "0.1.7", "svg-pan-zoom": "3.6.1", "uuid": "9.0.1" diff --git a/src/lib/components/Navbar.svelte b/src/lib/components/Navbar.svelte index 2c54e9da..775db8a3 100644 --- a/src/lib/components/Navbar.svelte +++ b/src/lib/components/Navbar.svelte @@ -1,7 +1,7 @@ @@ -51,7 +51,7 @@ let activePromotion = getActivePromotion(); const trackBannerClick = () => { - if (!analytics || !activePromotion) { + if (!plausible || !activePromotion) { return; } logEvent('bannerClick', { diff --git a/src/lib/util/stats.ts b/src/lib/util/stats.ts index 7a5030b1..4e70e64c 100644 --- a/src/lib/util/stats.ts +++ b/src/lib/util/stats.ts @@ -1,25 +1,17 @@ import { browser } from '$app/environment'; -import type { AnalyticsInstance } from 'analytics'; import { env } from './env'; -export let analytics: AnalyticsInstance | undefined; +import type PlausibleInstance from 'plausible-tracker'; +export let plausible: ReturnType | undefined; export const initAnalytics = async (): Promise => { - if (browser && !analytics) { + if (browser && !plausible) { try { - const [{ Analytics }, { default: plausible }] = await Promise.all([ - import('analytics'), - import('analytics-plugin-plausible') - ]); - analytics = Analytics({ - app: 'mermaid-live-editor', - plugins: [ - plausible({ - domain: env.domain, - hashMode: false, - // All tracked stats are public and available at https://p.mermaid.live/mermaid.live - apiHost: env.analyticsUrl - }) - ] + const { default: Plausible } = await import('plausible-tracker'); + plausible = Plausible({ + domain: env.domain, + hashMode: false, + // All tracked stats are public and available at https://p.mermaid.live/mermaid.live + apiHost: env.analyticsUrl }); } catch (error) { console.log(error); @@ -101,20 +93,28 @@ const delaysPerEvent = { history: defaultDelay, migration: defaultDelay, themeChange: defaultDelay, - bannerClick: defaultDelay + bannerClick: defaultDelay, + version: defaultDelay }; export type AnalyticsEvent = keyof typeof delaysPerEvent; const timeouts: Map = new Map(); // manual debounce to reduce the number of events sent to analytics -export const logEvent = (name: AnalyticsEvent, data?: unknown): void => { - if (!analytics) { +export const logEvent = ( + name: AnalyticsEvent, + data?: Record +): void => { + if (!plausible) { return; } const key = data ? JSON.stringify({ name, data }) : name; if (timeouts.has(key)) { clearTimeout(timeouts.get(key)); } else { - void analytics.track(name, data); + plausible.trackEvent( + name, + { props: data }, + { url: window.location.origin + window.location.pathname } + ); } timeouts.set( key, diff --git a/src/lib/util/util.ts b/src/lib/util/util.ts index ad8f3719..d082a703 100644 --- a/src/lib/util/util.ts +++ b/src/lib/util/util.ts @@ -1,5 +1,5 @@ import { initURLSubscription, loadState, updateCodeStore } from './state'; -import { analytics, initAnalytics } from './stats'; +import { plausible, initAnalytics } from './stats'; import { loadDataFromUrl } from './fileLoaders/loader'; import { initLoading } from './loading'; import { applyMigrations } from './migrations'; @@ -21,7 +21,7 @@ export const initHandler = async (): Promise => { syncDiagram(); initURLSubscription(); await initAnalytics(); - await analytics?.page(); + plausible?.trackPageview({ url: window.location.origin + window.location.pathname }); }; export const isMac = navigator.platform.toUpperCase().includes('MAC'); diff --git a/yarn.lock b/yarn.lock index 74147a8e..e72ceef7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,91 +17,6 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== -"@analytics/cookie-utils@^0.2.12", "@analytics/cookie-utils@^0.2.9": - version "0.2.12" - resolved "https://registry.yarnpkg.com/@analytics/cookie-utils/-/cookie-utils-0.2.12.tgz#acc38dd76ead968050776fb8e57e571e6d37cbc7" - integrity sha512-2h/yuIu3kmu+ZJlKmlT6GoRvUEY2k1BbQBezEv5kGhnn9KpmzPz715Y3GmM2i+m7Y0QmBdVUoA260dQZkofs2A== - dependencies: - "@analytics/global-storage-utils" "^0.1.7" - -"@analytics/core@^0.10.23": - version "0.10.23" - resolved "https://registry.yarnpkg.com/@analytics/core/-/core-0.10.23.tgz#869218c28bae4948bdecfd76415064e83bb8ca8d" - integrity sha512-crOJ7tNA5xak5YGiiX8IvPyqf4Hy3tMmTH4dTvQiOapO6BiBJcxBUkjtJNPwZlhS4nmsWh0skeTBr4Kv92RzeA== - dependencies: - "@analytics/global-storage-utils" "^0.1.4" - "@analytics/type-utils" "^0.5.4" - analytics-utils "^1.0.9" - -"@analytics/core@^0.12.7": - version "0.12.7" - resolved "https://registry.yarnpkg.com/@analytics/core/-/core-0.12.7.tgz#118b25f1753796a7c73ffabd4b789219d511e050" - integrity sha512-etmIPCoxWLoUZ/o1o2zvIk4cdVHa8I1xUQtTuLA+YXQ4SsFbm75ZoMXJBqWrNSENpqCJgoL6hizl5uTbkNN+1Q== - dependencies: - "@analytics/global-storage-utils" "^0.1.7" - "@analytics/type-utils" "^0.6.2" - analytics-utils "^1.0.12" - -"@analytics/global-storage-utils@^0.1.4", "@analytics/global-storage-utils@^0.1.7": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@analytics/global-storage-utils/-/global-storage-utils-0.1.7.tgz#c6a12eb133a6e44101b7c3529c82e3e89ac9ce46" - integrity sha512-V+spzGLZYm4biZT4uefaylm80SrLXf8WOTv9hCgA46cLcyxx3LD4GCpssp1lj+RcWLl/uXJQBRO4Mnn/o1x6Gw== - dependencies: - "@analytics/type-utils" "^0.6.2" - -"@analytics/localstorage-utils@^0.1.10", "@analytics/localstorage-utils@^0.1.7": - version "0.1.10" - resolved "https://registry.yarnpkg.com/@analytics/localstorage-utils/-/localstorage-utils-0.1.10.tgz#8e9b03604e79a530e9a5ab6748c8ceb96153b95c" - integrity sha512-uJS+Jp1yLG5VFCgA5T82ZODYBS0xuDQx0NtAZrgbqt9j51BX3TcgmOez5LVkrUNu/lpbxjCLq35I4TKj78VmOQ== - dependencies: - "@analytics/global-storage-utils" "^0.1.7" - -"@analytics/session-storage-utils@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@analytics/session-storage-utils/-/session-storage-utils-0.0.4.tgz#6aefe0eb012038f3722433c411485a2b7f540a15" - integrity sha512-HPVIUMpL9ua8uBj5kLsTOLbxUNP0GVYQowC9AwX1S/T39Eg8RKwbV/GYaDAqeCjEi8BGYOEguqI9kFGqxIt1iA== - dependencies: - "@analytics/global-storage-utils" "^0.1.4" - -"@analytics/session-storage-utils@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@analytics/session-storage-utils/-/session-storage-utils-0.0.7.tgz#e355c60b14d4fbcf20983e5cfcb7cb838b4c57ab" - integrity sha512-PSv40UxG96HVcjY15e3zOqU2n8IqXnH8XvTkg1X43uXNTKVSebiI2kUjA3Q7ESFbw5DPwcLbJhV7GforpuBLDw== - dependencies: - "@analytics/global-storage-utils" "^0.1.7" - -"@analytics/storage-utils@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@analytics/storage-utils/-/storage-utils-0.3.0.tgz#7a9795af6b73e13194edb03eb27402c4877d9d96" - integrity sha512-uxOz5wdZkuxc7RaWlNsj/7iFr0GkkFqmxyIYY4oFk91E3/hyosny59lb8DEC/MpdUUAoNI+clU+I/PYcv3p1WA== - dependencies: - "@analytics/cookie-utils" "^0.2.9" - "@analytics/global-storage-utils" "^0.1.4" - "@analytics/localstorage-utils" "^0.1.7" - "@analytics/session-storage-utils" "^0.0.4" - "@analytics/type-utils" "^0.5.4" - -"@analytics/storage-utils@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@analytics/storage-utils/-/storage-utils-0.4.2.tgz#222717832a533a1a2516aa3a22d5db80d14a881b" - integrity sha512-AXObwyVQw9h2uJh1t2hUgabtVxzYpW+7uKVbdHQK80vr3Td5rrmCxrCxarh7HUuAgSDZ0bZWqmYxVgmwKceaLg== - dependencies: - "@analytics/cookie-utils" "^0.2.12" - "@analytics/global-storage-utils" "^0.1.7" - "@analytics/localstorage-utils" "^0.1.10" - "@analytics/session-storage-utils" "^0.0.7" - "@analytics/type-utils" "^0.6.2" - -"@analytics/type-utils@^0.5.4": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@analytics/type-utils/-/type-utils-0.5.4.tgz#1fcaa6d1d557c0377d1fbd8615624ac918d1727d" - integrity sha512-2CT5YTsvif3gYPYp5hPIhh66mUo/Cu+k5OiHbX3k5p+YsZ5Bggcp/wLEFnrdKG4tKgGn5SOKkEtL63VYhGXX7g== - -"@analytics/type-utils@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@analytics/type-utils/-/type-utils-0.6.2.tgz#60d706603a98a95681d4b1e9726c703fdd541a9e" - integrity sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg== - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" @@ -1003,38 +918,6 @@ am-i-a-dependency@1.1.2: resolved "https://registry.yarnpkg.com/am-i-a-dependency/-/am-i-a-dependency-1.1.2.tgz#f9d3422304d6f642f821e4c407565035f6167f1f" integrity sha512-h9Wm0GBuTJVKbtwDHBzdJr932O9iTR5lAgebGSke1b3V4pqzbwOsa1R3bYhff89Ch3+v3A4EgbX3vem+5Rl6Zg== -analytics-plugin-plausible@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/analytics-plugin-plausible/-/analytics-plugin-plausible-0.0.6.tgz#22595821f1d201cb2e58dde2bb688d78fae78725" - integrity sha512-gXeoJo85JLO91DckbPq23jn/QJW4vg1hA/bRcAbcAo5D6u6JUIg/rG6Ecwkk75sPefnGFIZ6qGHIoz1b2wFK9w== - dependencies: - analytics "^0.7.5" - plausible-tracker "^0.3.1" - -analytics-utils@^1.0.12, analytics-utils@^1.0.9: - version "1.0.12" - resolved "https://registry.yarnpkg.com/analytics-utils/-/analytics-utils-1.0.12.tgz#07bd63471d238e80f42d557fba039365f09c50db" - integrity sha512-WvV2YWgsnXLxaY0QYux0crpBAg/0JA763NmbMVz22jKhMPo7dpTBet8G2IlF7ixTjLDzGlkHk1ZaKqqQmjJ+4w== - dependencies: - "@analytics/type-utils" "^0.6.2" - dlv "^1.1.3" - -analytics@0.8.9: - version "0.8.9" - resolved "https://registry.yarnpkg.com/analytics/-/analytics-0.8.9.tgz#71648ec804fbf01f05abbd0e27bc11049d959786" - integrity sha512-oTbUzQpncMTslakqfK70GgB6bopk5hY+uuekwnadMkDyqNLgcD02KRzteTnO7q5Ko6wDECVtT8xi/6OuAMZykA== - dependencies: - "@analytics/core" "^0.12.7" - "@analytics/storage-utils" "^0.4.2" - -analytics@^0.7.5: - version "0.7.23" - resolved "https://registry.yarnpkg.com/analytics/-/analytics-0.7.23.tgz#cff8d43c67fa851229232bc251e58a27e2f863eb" - integrity sha512-9zujZOUmDnRGRNoKIXwongMlOV1Odi+5ftRpfTPlYYQfX7Kl6ttSaP2caFQhKr5SenSCW2RMIxiLzX+LynE7sw== - dependencies: - "@analytics/core" "^0.10.23" - "@analytics/storage-utils" "^0.3.0" - ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -4769,7 +4652,7 @@ pkg-types@^1.0.3: mlly "^1.2.0" pathe "^1.1.0" -plausible-tracker@^0.3.1: +plausible-tracker@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/plausible-tracker/-/plausible-tracker-0.3.8.tgz#9b8b322cc41e0e1d6473869ef234deea365a5a40" integrity sha512-lmOWYQ7s9KOUJ1R+YTOR3HrjdbxIS2Z4de0P/Jx2dQPteznJl2eX3tXxKClpvbfyGP59B5bbhW8ftN59HbbFSg==