@lidofinance/analytics-matomo 0.54.1 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +5 -21
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -27,7 +27,6 @@ $parcel$export($ef5c629b17efc154$exports, "COOKIE_ALLOWED_MAIN_KEY", function ()
|
|
|
27
27
|
$parcel$export($ef5c629b17efc154$exports, "META_INFO_COOKIE", function () { return $ef5c629b17efc154$export$506bf4ed084a716; });
|
|
28
28
|
$parcel$export($ef5c629b17efc154$exports, "COOKIE_ALLOWED_KEYS", function () { return $ef5c629b17efc154$export$7567476bb64c3721; });
|
|
29
29
|
$parcel$export($ef5c629b17efc154$exports, "matomoAvailable", function () { return $ef5c629b17efc154$export$e5ed1c22a80aba4b; });
|
|
30
|
-
$parcel$export($ef5c629b17efc154$exports, "checkCookieAllowed", function () { return $ef5c629b17efc154$export$83c2c3def90d3b5a; });
|
|
31
30
|
$parcel$export($ef5c629b17efc154$exports, "callMatomo", function () { return $ef5c629b17efc154$export$cecaccc605742066; });
|
|
32
31
|
$parcel$export($ef5c629b17efc154$exports, "trackEvent", function () { return $ef5c629b17efc154$export$73d0a139caca1fee; });
|
|
33
32
|
$parcel$export($ef5c629b17efc154$exports, "trackVisibleContentImpressions", function () { return $ef5c629b17efc154$export$40aa6af9e848a6e0; });
|
|
@@ -49,18 +48,9 @@ const $ef5c629b17efc154$var$getCrossDomainCookieClientSide = (key)=>{
|
|
|
49
48
|
const cookieMatcher = new RegExp(`(^| )${key}=([^;]+)`);
|
|
50
49
|
return document.cookie.match(cookieMatcher)?.[2] ?? defaultValue;
|
|
51
50
|
};
|
|
52
|
-
const $ef5c629b17efc154$export$83c2c3def90d3b5a = ()=>{
|
|
53
|
-
if (typeof window === "undefined") return false;
|
|
54
|
-
for (const key of $ef5c629b17efc154$export$7567476bb64c3721){
|
|
55
|
-
const cookieValue = $ef5c629b17efc154$var$getCrossDomainCookieClientSide(key);
|
|
56
|
-
const cookieAllowed = !!(cookieValue && cookieValue === $ef5c629b17efc154$export$69479293c4b47320);
|
|
57
|
-
if (cookieAllowed) return cookieAllowed;
|
|
58
|
-
}
|
|
59
|
-
return false;
|
|
60
|
-
};
|
|
61
51
|
const $ef5c629b17efc154$export$cecaccc605742066 = (apiMethod, ...args)=>{
|
|
62
52
|
if (!$ef5c629b17efc154$export$e5ed1c22a80aba4b()) (0, $8ec118068c18cb0c$export$6ec25100f86fa29d)();
|
|
63
|
-
if (typeof window === "undefined"
|
|
53
|
+
if (typeof window === "undefined") return;
|
|
64
54
|
const customDimensionValue = $ef5c629b17efc154$var$getCrossDomainCookieClientSide($ef5c629b17efc154$export$506bf4ed084a716) || "none";
|
|
65
55
|
window?._paq?.push([
|
|
66
56
|
"setCustomDimension",
|
|
@@ -83,9 +73,6 @@ const $ef5c629b17efc154$export$3e8733322718eb9 = ()=>{
|
|
|
83
73
|
};
|
|
84
74
|
|
|
85
75
|
|
|
86
|
-
// Need if we tried to init matomo manually without cookie,
|
|
87
|
-
// and use it after accepting the cookie policy
|
|
88
|
-
let $8ec118068c18cb0c$var$futureInitMatomoHost = undefined;
|
|
89
76
|
const $8ec118068c18cb0c$var$injectMatomoScript = (matomoHost)=>{
|
|
90
77
|
/**
|
|
91
78
|
* # How to update matomo
|
|
@@ -116,18 +103,15 @@ const $8ec118068c18cb0c$var$injectMatomoScript = (matomoHost)=>{
|
|
|
116
103
|
* 3. Add sha384 prefix
|
|
117
104
|
* For other options see https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity#tools_for_generating_sri_hashes
|
|
118
105
|
*/ integrity: [
|
|
119
|
-
"sha384-zEaC37u+jplyCMnmF4H7LxCC9kIFKvwV32PWyiLIIIUVOrm1W8+ljIA2kUa/cTHa"
|
|
106
|
+
"sha384-zEaC37u+jplyCMnmF4H7LxCC9kIFKvwV32PWyiLIIIUVOrm1W8+ljIA2kUa/cTHa",
|
|
107
|
+
"sha384-cT0Nk8wS/smX3tvm0JOiaJhNeO5DbtYoG0ReQ6VlEE5EPNjmbcuZa1NwGwg14Hqa"
|
|
120
108
|
].join(" ")
|
|
121
109
|
}));
|
|
122
110
|
};
|
|
123
111
|
const $8ec118068c18cb0c$export$6ec25100f86fa29d = (matomoHost, customConfig = [])=>{
|
|
124
112
|
if (typeof window === "undefined") // SSR not supported!
|
|
125
113
|
return;
|
|
126
|
-
|
|
127
|
-
if (matomoHost) $8ec118068c18cb0c$var$futureInitMatomoHost = matomoHost;
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
const _matomoHost = $8ec118068c18cb0c$var$futureInitMatomoHost || matomoHost || window?.__env__?.matomoHost || undefined;
|
|
114
|
+
const _matomoHost = matomoHost || window?.__env__?.matomoHost || undefined;
|
|
131
115
|
if (!_matomoHost) // Where Do I send analytics?
|
|
132
116
|
return;
|
|
133
117
|
if (window._paq) // window._paq has been initialized
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
1
|
+
{"mappings":"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","sources":["packages/analytics/matomo/src/index.ts","packages/analytics/matomo/src/init.ts","packages/analytics/matomo/src/utils.ts","packages/analytics/matomo/src/type.ts","packages/analytics/matomo/src/decoratorts.ts"],"sourcesContent":["import { initMatomo } from './init'\n\nexport * from './type'\nexport * from './decoratorts'\nexport * from './utils'\nexport * from './init'\n\n// Run after import\ninitMatomo()\n","import { getDomain } from './utils'\n\ndeclare global {\n interface Window {\n _paq?: undefined | [string, ...unknown[]][]\n __env__: { matomoHost: string } & Record<string | number | symbol, unknown>\n }\n}\n\nconst injectMatomoScript = (matomoHost: string) => {\n /**\n * # How to update matomo\n *\n * To safely update Matomo without analytics downtime:\n *\n * 1. Download the new Matomo version zip from https://github.com/matomo-org/matomo/releases\n * 2. Extract matomo.js from the zip archive\n * 3. Generate integrity checksum:\n * - Run: `cat matomo.js | openssl dgst -sha384 -binary | openssl base64 -A`\n * - Add 'sha384-' prefix to the generated hash\n * 4. Add the new integrity hash to the array below (keep the old one)\n * 5. Release this package and update all dependent repositories\n *\n * Notes:\n * - The script will automatically use the matching integrity hash\n * - Old integrity values can be safely removed later if desired\n * - No console errors will occur during the transition\n * - This approach ensures zero analytics downtime during updates\n */\n document.documentElement.appendChild(\n Object.assign(document.createElement('script'), {\n async: true,\n src: new URL('/matomo.js', matomoHost).href,\n crossOrigin: 'anonymous',\n /**\n * To generate checksum:\n * 1. Download matomo.js via `curl -O https://matomo.lido.fi/matomo.js`\n * 2. Calculate checkusm via `cat matomo.js | openssl dgst -sha384 -binary | openssl base64 -A`\n * 3. Add sha384 prefix\n * For other options see https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity#tools_for_generating_sri_hashes\n */\n integrity: [\n 'sha384-zEaC37u+jplyCMnmF4H7LxCC9kIFKvwV32PWyiLIIIUVOrm1W8+ljIA2kUa/cTHa', // Matomo v 5.2.0 && Matomo v 5.2.2 with cookies (deprecated, remove after all environments migrate to the cookie-less analytics)\n 'sha384-cT0Nk8wS/smX3tvm0JOiaJhNeO5DbtYoG0ReQ6VlEE5EPNjmbcuZa1NwGwg14Hqa', // Matomo v 5.2.0 && Matomo v 5.2.2 without cookies (cookie-less analytics)\n ].join(' '),\n }),\n )\n}\n\nexport type MatomoConfig = Array<[string, ...unknown[]]>\n\nexport const initMatomo = (matomoHost?: string, customConfig: MatomoConfig = []): void => {\n if (typeof window === 'undefined') {\n // SSR not supported!\n return\n }\n\n const _matomoHost = matomoHost || window?.__env__?.matomoHost || undefined\n\n if (!_matomoHost) {\n // Where Do I send analytics?\n return\n }\n\n if (window._paq) {\n // window._paq has been initialized\n return\n }\n\n window._paq ??= []\n\n const rawConfig = [\n // These are hardcoded values and cannot be changed\n ['setTrackerUrl', new URL('/matomo.php', _matomoHost).href],\n ['requireCookieConsent', true],\n // Add subdomain prefix to page titles to separate analytics by subdomain\n ['setDocumentTitle', window.location.hostname + '/' + (document.title || '')],\n\n // These are custom settings\n ...customConfig,\n\n // These are default settings, will be overwritten if custom set\n ['trackPageView', true],\n ['enableLinkTracking', true],\n ['setSiteId', '1'],\n ['setDomains', [`*.${getDomain()}`]],\n ['enableCrossDomainLinking', true],\n ]\n\n // Map keeps order of keys\n const config = new Map()\n for (const [key, value] of rawConfig) {\n if (!config.has(key)) {\n config.set(key, value)\n }\n }\n\n window?._paq?.push(\n ...Array.from(config.entries())\n .map(([key, value]) => {\n switch (value) {\n case false:\n return false\n case true:\n case undefined:\n return [key]\n default:\n return [key, value]\n }\n })\n .filter((item): item is [string, ...unknown[]] => item !== false),\n )\n\n injectMatomoScript(_matomoHost)\n}\n","import { initMatomo } from './init'\nimport { MatomoEventType } from './type'\n\nexport const COOKIE_ALLOWED_VALUE_YES = 'yes'\nexport const COOKIE_ALLOWED_MAIN_KEY = 'cookie-allowed'\nexport const META_INFO_COOKIE = 'meta-info'\n\nexport const COOKIE_ALLOWED_KEYS = [\n 'LIDO_WIDGET__COOKIES_ALLOWED', // will be deprecated soon\n COOKIE_ALLOWED_MAIN_KEY,\n]\n\nexport const matomoAvailable = (): boolean => {\n return typeof window !== 'undefined' && window._paq !== undefined\n}\n\nconst getCrossDomainCookieClientSide = (key: string): string | null => {\n const defaultValue = null\n\n if (typeof window === 'undefined') {\n return defaultValue\n }\n\n const cookieMatcher = new RegExp(`(^| )${key}=([^;]+)`)\n return (document.cookie.match(cookieMatcher)?.[2] as string) ?? defaultValue\n}\n\nexport const callMatomo = (apiMethod: string, ...args: unknown[]): void => {\n if (!matomoAvailable()) {\n initMatomo()\n }\n\n if (typeof window === 'undefined') {\n return\n }\n\n const customDimensionValue = getCrossDomainCookieClientSide(META_INFO_COOKIE) || 'none'\n window?._paq?.push(['setCustomDimension', 1, customDimensionValue])\n\n window?._paq?.push([apiMethod, ...args])\n}\n\nexport const trackEvent = (...event: MatomoEventType): void => {\n callMatomo('trackEvent', ...event)\n}\n\nexport const trackVisibleContentImpressions = (checkOnScroll = true, timeIntervalInMs = 750): void => {\n callMatomo('trackVisibleContentImpressions', checkOnScroll, timeIntervalInMs)\n}\n\nexport const getDomain = () => {\n return location.hostname.split('.').slice(-2).join('.')\n}\n","export type MatomoEventType = [category: string, action: string, name: string]\n","import { MatomoEventType } from './type'\nimport { callMatomo } from './utils'\n\nexport const wrapWithEventTrack = <A extends unknown[], R>(event: MatomoEventType | void, fn: (...args: A) => R) =>\n event\n ? (...args: A): R => {\n callMatomo('trackEvent', ...event)\n return fn?.(...args)\n }\n : fn\n"],"names":[],"version":3,"file":"index.cjs.map"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export const COOKIE_ALLOWED_MAIN_KEY = "cookie-allowed";
|
|
|
4
4
|
export const META_INFO_COOKIE = "meta-info";
|
|
5
5
|
export const COOKIE_ALLOWED_KEYS: string[];
|
|
6
6
|
export const matomoAvailable: () => boolean;
|
|
7
|
-
export const checkCookieAllowed: () => boolean;
|
|
8
7
|
export const callMatomo: (apiMethod: string, ...args: unknown[]) => void;
|
|
9
8
|
export const trackEvent: (category: string, action: string, name: string) => void;
|
|
10
9
|
export const trackVisibleContentImpressions: (checkOnScroll?: boolean, timeIntervalInMs?: number) => void;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAAA,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;ACG9E,OAAO,MAAM,gCAAgC,CAAA;AAC7C,OAAO,MAAM,0CAA0C,CAAA;AACvD,OAAO,MAAM,8BAA8B,CAAA;AAE3C,OAAO,MAAM,6BAGZ,CAAA;AAED,OAAO,MAAM,uBAAsB,OAElC,CAAA;AAaD,OAAO,MAAM,
|
|
1
|
+
{"mappings":"AAAA,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;ACG9E,OAAO,MAAM,gCAAgC,CAAA;AAC7C,OAAO,MAAM,0CAA0C,CAAA;AACvD,OAAO,MAAM,8BAA8B,CAAA;AAE3C,OAAO,MAAM,6BAGZ,CAAA;AAED,OAAO,MAAM,uBAAsB,OAElC,CAAA;AAaD,OAAO,MAAM,wBAAyB,MAAM,WAAW,OAAO,EAAE,KAAG,IAalE,CAAA;AAED,OAAO,MAAM,gEAA0C,IAEtD,CAAA;AAED,OAAO,MAAM,wFAAiF,IAE7F,CAAA;AAED,OAAO,MAAM,uBAEZ,CAAA;AClDD,QAAQ,MAAM,CAAC;IACb,UAAU,MAAM;QACd,IAAI,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAA;QAC3C,OAAO,EAAE;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAA;KAC5E;CACF;AA0CD,2BAA2B,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA;AAExD,OAAO,MAAM,0BAA2B,MAAM,kCAAoC,IA+DjF,CAAA;AC/GD,OAAO,MAAM,oDAAqD,eAAe,GAAG,IAAI,6CAMhF,CAAA","sources":["packages/analytics/matomo/src/src/type.ts","packages/analytics/matomo/src/src/utils.ts","packages/analytics/matomo/src/src/init.ts","packages/analytics/matomo/src/src/decoratorts.ts","packages/analytics/matomo/src/src/index.ts","packages/analytics/matomo/src/index.ts"],"sourcesContent":[null,null,null,null,null,"import { initMatomo } from './init'\n\nexport * from './type'\nexport * from './decoratorts'\nexport * from './utils'\nexport * from './init'\n\n// Run after import\ninitMatomo()\n"],"names":[],"version":3,"file":"index.d.ts.map"}
|
package/dist/index.mjs
CHANGED
|
@@ -11,7 +11,6 @@ $parcel$export($427566b8f1d3367d$exports, "COOKIE_ALLOWED_MAIN_KEY", function ()
|
|
|
11
11
|
$parcel$export($427566b8f1d3367d$exports, "META_INFO_COOKIE", function () { return $427566b8f1d3367d$export$506bf4ed084a716; });
|
|
12
12
|
$parcel$export($427566b8f1d3367d$exports, "COOKIE_ALLOWED_KEYS", function () { return $427566b8f1d3367d$export$7567476bb64c3721; });
|
|
13
13
|
$parcel$export($427566b8f1d3367d$exports, "matomoAvailable", function () { return $427566b8f1d3367d$export$e5ed1c22a80aba4b; });
|
|
14
|
-
$parcel$export($427566b8f1d3367d$exports, "checkCookieAllowed", function () { return $427566b8f1d3367d$export$83c2c3def90d3b5a; });
|
|
15
14
|
$parcel$export($427566b8f1d3367d$exports, "callMatomo", function () { return $427566b8f1d3367d$export$cecaccc605742066; });
|
|
16
15
|
$parcel$export($427566b8f1d3367d$exports, "trackEvent", function () { return $427566b8f1d3367d$export$73d0a139caca1fee; });
|
|
17
16
|
$parcel$export($427566b8f1d3367d$exports, "trackVisibleContentImpressions", function () { return $427566b8f1d3367d$export$40aa6af9e848a6e0; });
|
|
@@ -33,18 +32,9 @@ const $427566b8f1d3367d$var$getCrossDomainCookieClientSide = (key)=>{
|
|
|
33
32
|
const cookieMatcher = new RegExp(`(^| )${key}=([^;]+)`);
|
|
34
33
|
return document.cookie.match(cookieMatcher)?.[2] ?? defaultValue;
|
|
35
34
|
};
|
|
36
|
-
const $427566b8f1d3367d$export$83c2c3def90d3b5a = ()=>{
|
|
37
|
-
if (typeof window === "undefined") return false;
|
|
38
|
-
for (const key of $427566b8f1d3367d$export$7567476bb64c3721){
|
|
39
|
-
const cookieValue = $427566b8f1d3367d$var$getCrossDomainCookieClientSide(key);
|
|
40
|
-
const cookieAllowed = !!(cookieValue && cookieValue === $427566b8f1d3367d$export$69479293c4b47320);
|
|
41
|
-
if (cookieAllowed) return cookieAllowed;
|
|
42
|
-
}
|
|
43
|
-
return false;
|
|
44
|
-
};
|
|
45
35
|
const $427566b8f1d3367d$export$cecaccc605742066 = (apiMethod, ...args)=>{
|
|
46
36
|
if (!$427566b8f1d3367d$export$e5ed1c22a80aba4b()) (0, $76adf94c93f4a7f4$export$6ec25100f86fa29d)();
|
|
47
|
-
if (typeof window === "undefined"
|
|
37
|
+
if (typeof window === "undefined") return;
|
|
48
38
|
const customDimensionValue = $427566b8f1d3367d$var$getCrossDomainCookieClientSide($427566b8f1d3367d$export$506bf4ed084a716) || "none";
|
|
49
39
|
window?._paq?.push([
|
|
50
40
|
"setCustomDimension",
|
|
@@ -67,9 +57,6 @@ const $427566b8f1d3367d$export$3e8733322718eb9 = ()=>{
|
|
|
67
57
|
};
|
|
68
58
|
|
|
69
59
|
|
|
70
|
-
// Need if we tried to init matomo manually without cookie,
|
|
71
|
-
// and use it after accepting the cookie policy
|
|
72
|
-
let $76adf94c93f4a7f4$var$futureInitMatomoHost = undefined;
|
|
73
60
|
const $76adf94c93f4a7f4$var$injectMatomoScript = (matomoHost)=>{
|
|
74
61
|
/**
|
|
75
62
|
* # How to update matomo
|
|
@@ -100,18 +87,15 @@ const $76adf94c93f4a7f4$var$injectMatomoScript = (matomoHost)=>{
|
|
|
100
87
|
* 3. Add sha384 prefix
|
|
101
88
|
* For other options see https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity#tools_for_generating_sri_hashes
|
|
102
89
|
*/ integrity: [
|
|
103
|
-
"sha384-zEaC37u+jplyCMnmF4H7LxCC9kIFKvwV32PWyiLIIIUVOrm1W8+ljIA2kUa/cTHa"
|
|
90
|
+
"sha384-zEaC37u+jplyCMnmF4H7LxCC9kIFKvwV32PWyiLIIIUVOrm1W8+ljIA2kUa/cTHa",
|
|
91
|
+
"sha384-cT0Nk8wS/smX3tvm0JOiaJhNeO5DbtYoG0ReQ6VlEE5EPNjmbcuZa1NwGwg14Hqa"
|
|
104
92
|
].join(" ")
|
|
105
93
|
}));
|
|
106
94
|
};
|
|
107
95
|
const $76adf94c93f4a7f4$export$6ec25100f86fa29d = (matomoHost, customConfig = [])=>{
|
|
108
96
|
if (typeof window === "undefined") // SSR not supported!
|
|
109
97
|
return;
|
|
110
|
-
|
|
111
|
-
if (matomoHost) $76adf94c93f4a7f4$var$futureInitMatomoHost = matomoHost;
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const _matomoHost = $76adf94c93f4a7f4$var$futureInitMatomoHost || matomoHost || window?.__env__?.matomoHost || undefined;
|
|
98
|
+
const _matomoHost = matomoHost || window?.__env__?.matomoHost || undefined;
|
|
115
99
|
if (!_matomoHost) // Where Do I send analytics?
|
|
116
100
|
return;
|
|
117
101
|
if (window._paq) // window._paq has been initialized
|
|
@@ -199,5 +183,5 @@ const $dfa3db2a6cffa71c$export$e8f57ad64147d191 = (event, fn)=>event ? (...args)
|
|
|
199
183
|
(0, $76adf94c93f4a7f4$export$6ec25100f86fa29d)();
|
|
200
184
|
|
|
201
185
|
|
|
202
|
-
export {$76adf94c93f4a7f4$export$6ec25100f86fa29d as initMatomo, $dfa3db2a6cffa71c$export$e8f57ad64147d191 as wrapWithEventTrack, $427566b8f1d3367d$export$69479293c4b47320 as COOKIE_ALLOWED_VALUE_YES, $427566b8f1d3367d$export$ed61d9b9718a39c9 as COOKIE_ALLOWED_MAIN_KEY, $427566b8f1d3367d$export$506bf4ed084a716 as META_INFO_COOKIE, $427566b8f1d3367d$export$7567476bb64c3721 as COOKIE_ALLOWED_KEYS, $427566b8f1d3367d$export$e5ed1c22a80aba4b as matomoAvailable, $427566b8f1d3367d$export$
|
|
186
|
+
export {$76adf94c93f4a7f4$export$6ec25100f86fa29d as initMatomo, $dfa3db2a6cffa71c$export$e8f57ad64147d191 as wrapWithEventTrack, $427566b8f1d3367d$export$69479293c4b47320 as COOKIE_ALLOWED_VALUE_YES, $427566b8f1d3367d$export$ed61d9b9718a39c9 as COOKIE_ALLOWED_MAIN_KEY, $427566b8f1d3367d$export$506bf4ed084a716 as META_INFO_COOKIE, $427566b8f1d3367d$export$7567476bb64c3721 as COOKIE_ALLOWED_KEYS, $427566b8f1d3367d$export$e5ed1c22a80aba4b as matomoAvailable, $427566b8f1d3367d$export$cecaccc605742066 as callMatomo, $427566b8f1d3367d$export$73d0a139caca1fee as trackEvent, $427566b8f1d3367d$export$40aa6af9e848a6e0 as trackVisibleContentImpressions, $427566b8f1d3367d$export$3e8733322718eb9 as getDomain};
|
|
203
187
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
1
|
+
{"mappings":"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","sources":["packages/analytics/matomo/src/index.ts","packages/analytics/matomo/src/init.ts","packages/analytics/matomo/src/utils.ts","packages/analytics/matomo/src/type.ts","packages/analytics/matomo/src/decoratorts.ts"],"sourcesContent":["import { initMatomo } from './init'\n\nexport * from './type'\nexport * from './decoratorts'\nexport * from './utils'\nexport * from './init'\n\n// Run after import\ninitMatomo()\n","import { getDomain } from './utils'\n\ndeclare global {\n interface Window {\n _paq?: undefined | [string, ...unknown[]][]\n __env__: { matomoHost: string } & Record<string | number | symbol, unknown>\n }\n}\n\nconst injectMatomoScript = (matomoHost: string) => {\n /**\n * # How to update matomo\n *\n * To safely update Matomo without analytics downtime:\n *\n * 1. Download the new Matomo version zip from https://github.com/matomo-org/matomo/releases\n * 2. Extract matomo.js from the zip archive\n * 3. Generate integrity checksum:\n * - Run: `cat matomo.js | openssl dgst -sha384 -binary | openssl base64 -A`\n * - Add 'sha384-' prefix to the generated hash\n * 4. Add the new integrity hash to the array below (keep the old one)\n * 5. Release this package and update all dependent repositories\n *\n * Notes:\n * - The script will automatically use the matching integrity hash\n * - Old integrity values can be safely removed later if desired\n * - No console errors will occur during the transition\n * - This approach ensures zero analytics downtime during updates\n */\n document.documentElement.appendChild(\n Object.assign(document.createElement('script'), {\n async: true,\n src: new URL('/matomo.js', matomoHost).href,\n crossOrigin: 'anonymous',\n /**\n * To generate checksum:\n * 1. Download matomo.js via `curl -O https://matomo.lido.fi/matomo.js`\n * 2. Calculate checkusm via `cat matomo.js | openssl dgst -sha384 -binary | openssl base64 -A`\n * 3. Add sha384 prefix\n * For other options see https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity#tools_for_generating_sri_hashes\n */\n integrity: [\n 'sha384-zEaC37u+jplyCMnmF4H7LxCC9kIFKvwV32PWyiLIIIUVOrm1W8+ljIA2kUa/cTHa', // Matomo v 5.2.0 && Matomo v 5.2.2 with cookies (deprecated, remove after all environments migrate to the cookie-less analytics)\n 'sha384-cT0Nk8wS/smX3tvm0JOiaJhNeO5DbtYoG0ReQ6VlEE5EPNjmbcuZa1NwGwg14Hqa', // Matomo v 5.2.0 && Matomo v 5.2.2 without cookies (cookie-less analytics)\n ].join(' '),\n }),\n )\n}\n\nexport type MatomoConfig = Array<[string, ...unknown[]]>\n\nexport const initMatomo = (matomoHost?: string, customConfig: MatomoConfig = []): void => {\n if (typeof window === 'undefined') {\n // SSR not supported!\n return\n }\n\n const _matomoHost = matomoHost || window?.__env__?.matomoHost || undefined\n\n if (!_matomoHost) {\n // Where Do I send analytics?\n return\n }\n\n if (window._paq) {\n // window._paq has been initialized\n return\n }\n\n window._paq ??= []\n\n const rawConfig = [\n // These are hardcoded values and cannot be changed\n ['setTrackerUrl', new URL('/matomo.php', _matomoHost).href],\n ['requireCookieConsent', true],\n // Add subdomain prefix to page titles to separate analytics by subdomain\n ['setDocumentTitle', window.location.hostname + '/' + (document.title || '')],\n\n // These are custom settings\n ...customConfig,\n\n // These are default settings, will be overwritten if custom set\n ['trackPageView', true],\n ['enableLinkTracking', true],\n ['setSiteId', '1'],\n ['setDomains', [`*.${getDomain()}`]],\n ['enableCrossDomainLinking', true],\n ]\n\n // Map keeps order of keys\n const config = new Map()\n for (const [key, value] of rawConfig) {\n if (!config.has(key)) {\n config.set(key, value)\n }\n }\n\n window?._paq?.push(\n ...Array.from(config.entries())\n .map(([key, value]) => {\n switch (value) {\n case false:\n return false\n case true:\n case undefined:\n return [key]\n default:\n return [key, value]\n }\n })\n .filter((item): item is [string, ...unknown[]] => item !== false),\n )\n\n injectMatomoScript(_matomoHost)\n}\n","import { initMatomo } from './init'\nimport { MatomoEventType } from './type'\n\nexport const COOKIE_ALLOWED_VALUE_YES = 'yes'\nexport const COOKIE_ALLOWED_MAIN_KEY = 'cookie-allowed'\nexport const META_INFO_COOKIE = 'meta-info'\n\nexport const COOKIE_ALLOWED_KEYS = [\n 'LIDO_WIDGET__COOKIES_ALLOWED', // will be deprecated soon\n COOKIE_ALLOWED_MAIN_KEY,\n]\n\nexport const matomoAvailable = (): boolean => {\n return typeof window !== 'undefined' && window._paq !== undefined\n}\n\nconst getCrossDomainCookieClientSide = (key: string): string | null => {\n const defaultValue = null\n\n if (typeof window === 'undefined') {\n return defaultValue\n }\n\n const cookieMatcher = new RegExp(`(^| )${key}=([^;]+)`)\n return (document.cookie.match(cookieMatcher)?.[2] as string) ?? defaultValue\n}\n\nexport const callMatomo = (apiMethod: string, ...args: unknown[]): void => {\n if (!matomoAvailable()) {\n initMatomo()\n }\n\n if (typeof window === 'undefined') {\n return\n }\n\n const customDimensionValue = getCrossDomainCookieClientSide(META_INFO_COOKIE) || 'none'\n window?._paq?.push(['setCustomDimension', 1, customDimensionValue])\n\n window?._paq?.push([apiMethod, ...args])\n}\n\nexport const trackEvent = (...event: MatomoEventType): void => {\n callMatomo('trackEvent', ...event)\n}\n\nexport const trackVisibleContentImpressions = (checkOnScroll = true, timeIntervalInMs = 750): void => {\n callMatomo('trackVisibleContentImpressions', checkOnScroll, timeIntervalInMs)\n}\n\nexport const getDomain = () => {\n return location.hostname.split('.').slice(-2).join('.')\n}\n","export type MatomoEventType = [category: string, action: string, name: string]\n","import { MatomoEventType } from './type'\nimport { callMatomo } from './utils'\n\nexport const wrapWithEventTrack = <A extends unknown[], R>(event: MatomoEventType | void, fn: (...args: A) => R) =>\n event\n ? (...args: A): R => {\n callMatomo('trackEvent', ...event)\n return fn?.(...args)\n }\n : fn\n"],"names":[],"version":3,"file":"index.mjs.map"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"url": "https://github.com/lidofinance/warehouse/issues"
|
|
8
8
|
},
|
|
9
9
|
"license": "MIT",
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.56.0",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"test": "jest"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@lidofinance/config-prettier": "~0.
|
|
36
|
+
"@lidofinance/config-prettier": "~0.56.0",
|
|
37
37
|
"@types/jest": "^29.2.4",
|
|
38
38
|
"jest": "^29.3.1",
|
|
39
39
|
"jest-environment-jsdom": "^28.0.0",
|