@driveflux/web-analytics 1.3.3 → 1.4.1
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/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +30 -32
- package/package.json +7 -8
- package/dist/cjs/package.json +0 -3
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACb,EAAE,EAAE;QACH,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KACjB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACb,EAAE,EAAE;QACH,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,gBAAgB,EAAE,OAAO,CAAA;CACzB,CAAA;AAYD,eAAO,IAAI,MAAM,EAAE,MAAqD,CAAA;AAExE,eAAO,MAAM,WAAW,cAGvB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,SAAS,MAAM,MAAM,OAC5C,GAAG,SACD,MAAM,CAAC,GAAG,CAAC,SAGlB,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -3,7 +3,8 @@ const getConfig = ()=>({
|
|
|
3
3
|
ga: {
|
|
4
4
|
measurementId: process.env.GA_MEASUREMENT_ID,
|
|
5
5
|
apiSecret: process.env.GA_API_SECRET
|
|
6
|
-
}
|
|
6
|
+
},
|
|
7
|
+
consoleLogEvents: process.env.ANALYTICS_LOG_EVENTS === 'true' || process.env.APP_ENV !== 'production'
|
|
7
8
|
});
|
|
8
9
|
export let config = singleton('webAnalyticsConfig', getConfig());
|
|
9
10
|
export const resetConfig = ()=>{
|
package/dist/track.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,YAAY,CAAA;AAGhE,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KACxB;CACD;AAED,KAAK,SAAS,GAAG,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,YAAY,CAAA;AAGhE,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KACxB;CACD;AAED,KAAK,SAAS,GAAG,YAAY,CAAA;AA+B7B,wBAAgB,cAAc,kBAW7B;AAUD,eAAO,MAAM,gBAAgB,UAAiB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,kBAOhE,CAAA;AAED,eAAO,MAAM,aAAa;uBAKZ,MAAM,cACL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,cACnB,SAAS;6BA8B2B,YAAY;CAY9D,CAAA;AAED,eAAO,MAAM,iBAAiB,cAClB,MAAM,cACL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SA0B/B,CAAA"}
|
package/dist/track.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { sendGTMEvent } from '@next/third-parties/google';
|
|
2
1
|
import isEqual from 'lodash/isEqual.js';
|
|
3
2
|
import { useCallback, useEffect, useRef } from 'react';
|
|
3
|
+
import { config } from './config.js';
|
|
4
4
|
import { convertUserData, extractGA4ClientId } from './utils.js';
|
|
5
5
|
const eventsQueue = new Set();
|
|
6
6
|
const TIMEOUT_TO_CLEAR_EVENTS = 500;
|
|
@@ -13,6 +13,21 @@ const drainEvents = ()=>{
|
|
|
13
13
|
sendGTMEvent(event);
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
|
+
const interval = setInterval(()=>{
|
|
17
|
+
if (typeof window === 'undefined') return;
|
|
18
|
+
if (window.fluxDataLayer) {
|
|
19
|
+
drainEvents();
|
|
20
|
+
clearInterval(interval);
|
|
21
|
+
}
|
|
22
|
+
}, TIMEOUT_TO_CLEAR_EVENTS);
|
|
23
|
+
const ud = typeof localStorage !== 'undefined' && localStorage.getItem('ud');
|
|
24
|
+
let defaultUserData = undefined;
|
|
25
|
+
if (ud) {
|
|
26
|
+
try {
|
|
27
|
+
const json = Buffer.from(ud, 'base64').toString('utf8');
|
|
28
|
+
defaultUserData = JSON.parse(json);
|
|
29
|
+
} catch (e) {}
|
|
30
|
+
}
|
|
16
31
|
export function getGA4ClientId() {
|
|
17
32
|
if (typeof document === 'undefined') {
|
|
18
33
|
return null;
|
|
@@ -25,6 +40,13 @@ export function getGA4ClientId() {
|
|
|
25
40
|
return null // If no GA cookie is found or format is unexpected
|
|
26
41
|
;
|
|
27
42
|
}
|
|
43
|
+
const sendGTMEvent = (data)=>{
|
|
44
|
+
if (window.fluxDataLayer) {
|
|
45
|
+
window.fluxDataLayer.push(data);
|
|
46
|
+
} else {
|
|
47
|
+
console.warn('GTM dataLayer fluxDataLayer does not exist');
|
|
48
|
+
}
|
|
49
|
+
};
|
|
28
50
|
export const safeSendGTMEvent = async (event)=>{
|
|
29
51
|
if (!window.fluxDataLayer) {
|
|
30
52
|
eventsQueue.add(event);
|
|
@@ -33,9 +55,11 @@ export const safeSendGTMEvent = async (event)=>{
|
|
|
33
55
|
sendGTMEvent(event);
|
|
34
56
|
};
|
|
35
57
|
export const useTrackEvent = ()=>{
|
|
36
|
-
const userData = useRef();
|
|
58
|
+
const userData = useRef(defaultUserData);
|
|
37
59
|
const track = useCallback((eventName, eventData, clearMode)=>{
|
|
38
|
-
|
|
60
|
+
if (config.consoleLogEvents) {
|
|
61
|
+
console.log('🚨🚨🚨 firing event', eventName, eventData);
|
|
62
|
+
}
|
|
39
63
|
if (!eventName) {
|
|
40
64
|
console.error('No event name provided');
|
|
41
65
|
return;
|
|
@@ -58,25 +82,6 @@ export const useTrackEvent = ()=>{
|
|
|
58
82
|
userData.current = await convertUserData(dataInput);
|
|
59
83
|
localStorage.setItem('ud', Buffer.from(JSON.stringify(userData.current), 'utf8').toString('base64'));
|
|
60
84
|
}, []);
|
|
61
|
-
useEffect(()=>{
|
|
62
|
-
const interval = setInterval(()=>{
|
|
63
|
-
if (window.fluxDataLayer) {
|
|
64
|
-
drainEvents();
|
|
65
|
-
clearInterval(interval);
|
|
66
|
-
}
|
|
67
|
-
}, TIMEOUT_TO_CLEAR_EVENTS);
|
|
68
|
-
return ()=>clearInterval(interval);
|
|
69
|
-
}, []);
|
|
70
|
-
useEffect(()=>{
|
|
71
|
-
const ud = localStorage.getItem('ud');
|
|
72
|
-
if (!ud) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
try {
|
|
76
|
-
const json = Buffer.from(ud, 'base64').toString('utf8');
|
|
77
|
-
userData.current = JSON.parse(json);
|
|
78
|
-
} catch (e) {}
|
|
79
|
-
}, []);
|
|
80
85
|
return {
|
|
81
86
|
track,
|
|
82
87
|
setUserData
|
|
@@ -85,21 +90,14 @@ export const useTrackEvent = ()=>{
|
|
|
85
90
|
export const useAutoTrackEvent = (eventName, eventData)=>{
|
|
86
91
|
const previousEventData = useRef();
|
|
87
92
|
const firedFirstEvent = useRef(false);
|
|
88
|
-
useEffect(()=>{
|
|
89
|
-
const interval = setInterval(()=>{
|
|
90
|
-
if (window.fluxDataLayer) {
|
|
91
|
-
drainEvents();
|
|
92
|
-
clearInterval(interval);
|
|
93
|
-
}
|
|
94
|
-
}, TIMEOUT_TO_CLEAR_EVENTS);
|
|
95
|
-
return ()=>clearInterval(interval);
|
|
96
|
-
}, []);
|
|
97
93
|
useEffect(()=>{
|
|
98
94
|
if (isEqual(previousEventData.current, eventData) && firedFirstEvent.current) {
|
|
99
95
|
return;
|
|
100
96
|
}
|
|
101
97
|
firedFirstEvent.current = true;
|
|
102
|
-
|
|
98
|
+
if (config.consoleLogEvents) {
|
|
99
|
+
console.log('🚨🚨🚨 firing event', eventName, eventData);
|
|
100
|
+
}
|
|
103
101
|
const event = {
|
|
104
102
|
event: eventName,
|
|
105
103
|
...eventData
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@driveflux/web-analytics",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./track": {
|
|
@@ -22,21 +22,20 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@driveflux/fetch": "6.2.2",
|
|
24
24
|
"@driveflux/singleton": "1.2.1",
|
|
25
|
-
"@next/third-parties": "^14.2.13",
|
|
26
25
|
"lodash": "^4.17.21"
|
|
27
26
|
},
|
|
28
27
|
"devDependencies": {
|
|
29
28
|
"@driveflux/fab": "2.2.1",
|
|
30
29
|
"@driveflux/tsconfig": "1.2.1",
|
|
31
|
-
"@swc/cli": "0.4.
|
|
32
|
-
"@swc/core": "1.7.
|
|
30
|
+
"@swc/cli": "^0.4.0",
|
|
31
|
+
"@swc/core": "1.7.2",
|
|
33
32
|
"@types/lodash": "^4.17.7",
|
|
34
|
-
"@types/node": "^
|
|
35
|
-
"@types/react": "^18.3.
|
|
33
|
+
"@types/node": "^20.14.12",
|
|
34
|
+
"@types/react": "^18.3.3",
|
|
36
35
|
"del-cli": "^5.1.0",
|
|
37
36
|
"react": "^18.3.1",
|
|
38
|
-
"type-fest": "^4.
|
|
39
|
-
"typescript": "^5.
|
|
37
|
+
"type-fest": "^4.23.0",
|
|
38
|
+
"typescript": "^5.5.4"
|
|
40
39
|
},
|
|
41
40
|
"peerDependencies": {
|
|
42
41
|
"react": "^18.3.1"
|
package/dist/cjs/package.json
DELETED