chore: Use manual page tracking to avoid sending hash.

This commit is contained in:
Sidharth Vinod
2023-12-14 10:37:19 +05:30
parent 434a50f81c
commit 1a82978f2c
7 changed files with 32 additions and 146 deletions
+2
View File
@@ -0,0 +1,2 @@
MERMAID_DOMAIN="mermaid.live"
MERMAID_ANALYTICS_URL="https://p.mermaid.live"
+2
View File
@@ -9,10 +9,12 @@
"cssnano",
"daisyui",
"esserializer",
"gantt",
"KROKI",
"localstorage",
"mermaidchart",
"mindmap",
"Pageview",
"pako",
"Serde",
"serdes",
+1 -2
View File
@@ -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"
+3 -3
View File
@@ -1,7 +1,7 @@
<script context="module" lang="ts">
import { version } from 'mermaid/package.json';
import { analytics, logEvent } from '$lib/util/stats';
void analytics?.track('version', {
import { logEvent, plausible } from '$lib/util/stats';
void logEvent('version', {
mermaidVersion: version
});
</script>
@@ -51,7 +51,7 @@
let activePromotion = getActivePromotion();
const trackBannerClick = () => {
if (!analytics || !activePromotion) {
if (!plausible || !activePromotion) {
return;
}
logEvent('bannerClick', {
+21 -21
View File
@@ -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<typeof PlausibleInstance> | undefined;
export const initAnalytics = async (): Promise<void> => {
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<string, number> = new Map<string, number>();
// 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<string, string | number | boolean>
): 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,
+2 -2
View File
@@ -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<void> => {
syncDiagram();
initURLSubscription();
await initAnalytics();
await analytics?.page();
plausible?.trackPageview({ url: window.location.origin + window.location.pathname });
};
export const isMac = navigator.platform.toUpperCase().includes('MAC');
+1 -118
View File
@@ -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==