Merge pull request #1251 from mermaid-js/sidv/save
Outbound link tracking
This commit is contained in:
+1
-1
@@ -69,13 +69,13 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"analytics": "0.8.7",
|
||||
"analytics-plugin-plausible": "0.0.6",
|
||||
"daisyui": "2.52.0",
|
||||
"dayjs": "^1.11.7",
|
||||
"js-base64": "3.7.5",
|
||||
"mermaid": "10.2.3",
|
||||
"monaco-editor": "0.39.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.0"
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
const links: Link[] = [
|
||||
{
|
||||
title: 'Documentation',
|
||||
href: 'https://mermaid-js.github.io/mermaid/intro/n00b-gettingStarted.html'
|
||||
href: 'https://mermaid.js.org/intro/n00b-gettingStarted.html'
|
||||
},
|
||||
{
|
||||
title: 'Tutorial',
|
||||
href: 'https://mermaid-js.github.io/mermaid/config/Tutorials.html'
|
||||
href: 'https://mermaid.js.org/config/Tutorials.html'
|
||||
},
|
||||
{
|
||||
title: 'Mermaid',
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
// Copied from https://github.com/ian/analytics/blob/main/packages/plausible/src/plausible.ts
|
||||
// Added changes to enable auto-tracking of outbound links
|
||||
import type { AnalyticsInstance } from 'analytics';
|
||||
import Plausible from 'plausible-tracker';
|
||||
|
||||
interface IPluginProperties {
|
||||
instance: AnalyticsInstance;
|
||||
config: IPluginConfig;
|
||||
}
|
||||
|
||||
interface IPluginConfig {
|
||||
apiHost?: string;
|
||||
domain?: string;
|
||||
hashMode?: boolean;
|
||||
trackLocalhost?: boolean;
|
||||
outboundLinkTracking?: boolean;
|
||||
}
|
||||
|
||||
interface IProperties {
|
||||
payload: IPayload;
|
||||
}
|
||||
|
||||
interface IPayload {
|
||||
event: string;
|
||||
properties: Readonly<Record<string, string>>;
|
||||
}
|
||||
|
||||
interface IPluginContext {
|
||||
plausible: ReturnType<typeof Plausible> | null;
|
||||
}
|
||||
|
||||
const defaultConfig = {
|
||||
enabled: true
|
||||
};
|
||||
|
||||
export default function plausiblePlugin(pluginConfig: IPluginConfig) {
|
||||
const context: IPluginContext = {
|
||||
plausible: null
|
||||
};
|
||||
|
||||
return {
|
||||
name: 'plausible-analytics',
|
||||
config: {
|
||||
...defaultConfig,
|
||||
...pluginConfig
|
||||
},
|
||||
|
||||
initialize: ({ config }: IPluginProperties) => {
|
||||
const { apiHost, domain, hashMode, trackLocalhost, outboundLinkTracking } = config;
|
||||
|
||||
const plausibleConfig = Object.fromEntries(
|
||||
Object.entries({
|
||||
apiHost,
|
||||
domain,
|
||||
hashMode,
|
||||
trackLocalhost
|
||||
}).filter(([, value]) => value !== undefined)
|
||||
);
|
||||
|
||||
context.plausible = Plausible(plausibleConfig);
|
||||
if (outboundLinkTracking) {
|
||||
context.plausible.enableAutoOutboundTracking();
|
||||
}
|
||||
},
|
||||
|
||||
loaded: () => {
|
||||
return Boolean(context.plausible);
|
||||
},
|
||||
|
||||
page: ({ payload }: IProperties) => {
|
||||
if (!context.plausible) return;
|
||||
|
||||
const { properties } = payload;
|
||||
context.plausible.trackPageview({}, { props: properties });
|
||||
},
|
||||
|
||||
// Set parameter scope at event level with 'event' method
|
||||
track: ({ payload }: IProperties) => {
|
||||
if (!context.plausible) return;
|
||||
|
||||
const { properties, event } = payload;
|
||||
context.plausible.trackEvent(event, { props: properties });
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -7,7 +7,7 @@ export const initAnalytics = async (): Promise<void> => {
|
||||
try {
|
||||
const [{ Analytics }, { default: plausible }] = await Promise.all([
|
||||
import('analytics'),
|
||||
import('analytics-plugin-plausible')
|
||||
import('./plausible')
|
||||
]);
|
||||
analytics = Analytics({
|
||||
app: 'mermaid-live-editor',
|
||||
@@ -16,7 +16,8 @@ export const initAnalytics = async (): Promise<void> => {
|
||||
domain: 'mermaid.live',
|
||||
hashMode: false,
|
||||
// All tracked stats are public and available at https://p.mermaid.live/mermaid.live
|
||||
apiHost: 'https://p.mermaid.live'
|
||||
apiHost: 'https://p.mermaid.live',
|
||||
outboundLinkTracking: true
|
||||
})
|
||||
]
|
||||
});
|
||||
|
||||
@@ -19,22 +19,6 @@
|
||||
dependencies:
|
||||
"@analytics/global-storage-utils" "^0.1.7"
|
||||
|
||||
"@analytics/cookie-utils@^0.2.9":
|
||||
version "0.2.10"
|
||||
resolved "https://registry.yarnpkg.com/@analytics/cookie-utils/-/cookie-utils-0.2.10.tgz#94d1ad0766c58c4a294e5ca54f59b0a69bd574b4"
|
||||
integrity sha512-k7oyW1PkMCnEdCYmHCLLXAsKavQh5ZRh5EeugBEUTlPJs8x8ajF+W1T0PYVDS26Impkea1sJR2etv/6l2pKtlg==
|
||||
dependencies:
|
||||
"@analytics/global-storage-utils" "^0.1.5"
|
||||
|
||||
"@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.5":
|
||||
version "0.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@analytics/core/-/core-0.12.5.tgz#dffdf847a384eaace5b8c109b5d29c673489e183"
|
||||
@@ -44,13 +28,6 @@
|
||||
"@analytics/type-utils" "^0.6.2"
|
||||
analytics-utils "^1.0.12"
|
||||
|
||||
"@analytics/global-storage-utils@^0.1.4", "@analytics/global-storage-utils@^0.1.5":
|
||||
version "0.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@analytics/global-storage-utils/-/global-storage-utils-0.1.5.tgz#54cc14f8d678610b5fca1e98215fe29fff662f31"
|
||||
integrity sha512-DzOCd0qK7PGnz/dgBYNzLmaFBkxcEHM6/CpWMY7hel1IBUldMsyet4sdRgI2Nk+Wc6B/YvqVqos68p5ntB59zA==
|
||||
dependencies:
|
||||
"@analytics/type-utils" "^0.6.0"
|
||||
|
||||
"@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"
|
||||
@@ -65,20 +42,6 @@
|
||||
dependencies:
|
||||
"@analytics/global-storage-utils" "^0.1.7"
|
||||
|
||||
"@analytics/localstorage-utils@^0.1.7":
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/@analytics/localstorage-utils/-/localstorage-utils-0.1.8.tgz#eab6a9690ccd3c05d131e3a9788b4443affdb800"
|
||||
integrity sha512-tU5rLEHdYRc4EmRXkWacMJSmu4SeJfQuxvthSHHRVx3hGBQ00MJRDGyDHMXcrLKQXrBpsJo6t/8YRavHLOxDPQ==
|
||||
dependencies:
|
||||
"@analytics/global-storage-utils" "^0.1.5"
|
||||
|
||||
"@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"
|
||||
@@ -86,17 +49,6 @@
|
||||
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"
|
||||
@@ -108,16 +60,6 @@
|
||||
"@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.0":
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@analytics/type-utils/-/type-utils-0.6.0.tgz#1b8745516da5a654d292ed3f2db893c61cd3d9c5"
|
||||
integrity sha512-1Yw7u/COtxx06BfwlI+kVhsa/upKYzmCNrT4c8QDeCY2KMYlnijkUjtHiPU08HxyTIVB5j6d75O0YWVIHwQS8g==
|
||||
|
||||
"@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"
|
||||
@@ -914,14 +856,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:
|
||||
version "1.0.12"
|
||||
resolved "https://registry.yarnpkg.com/analytics-utils/-/analytics-utils-1.0.12.tgz#07bd63471d238e80f42d557fba039365f09c50db"
|
||||
@@ -930,14 +864,6 @@ analytics-utils@^1.0.12:
|
||||
"@analytics/type-utils" "^0.6.2"
|
||||
dlv "^1.1.3"
|
||||
|
||||
analytics-utils@^1.0.9:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/analytics-utils/-/analytics-utils-1.0.10.tgz#e44078176c67005e5b11aae1dc538202744a5ca5"
|
||||
integrity sha512-ZKYKhip7Sf09qE85l4vZMBPR3fz6ISUTlwzkWSwJHbzLLzP5qrWQtcQlBcP9Pah7BMNSq8pqho+PX4ZKB014Yg==
|
||||
dependencies:
|
||||
"@analytics/type-utils" "^0.6.0"
|
||||
dlv "^1.1.3"
|
||||
|
||||
analytics@0.8.7:
|
||||
version "0.8.7"
|
||||
resolved "https://registry.yarnpkg.com/analytics/-/analytics-0.8.7.tgz#cc23e8aaaaf7f0207e0ca88de5936af75d9cc0df"
|
||||
@@ -946,14 +872,6 @@ analytics@0.8.7:
|
||||
"@analytics/core" "^0.12.5"
|
||||
"@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"
|
||||
@@ -4449,7 +4367,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==
|
||||
|
||||
Reference in New Issue
Block a user