@driveflux/web-analytics 1.6.3 → 1.6.4

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.js CHANGED
@@ -1,23 +1,21 @@
1
1
  import { singleton } from '@driveflux/singleton';
2
- const getConfig = () => ({
3
- appUrl: process.env.APP_URL || 'https://driveflux.com',
4
- ga: {
5
- measurementId: process.env.GA_MEASUREMENT_ID,
6
- apiSecret: process.env.GA_API_SECRET,
7
- },
8
- fb: {
9
- pixelId: process.env.NEXT_PUBLIC_FB_PIXEL_ID,
10
- accessToken: process.env.FB_ACCESS_TOKEN,
11
- },
12
- consoleLogEvents: process.env.ANALYTICS_LOG_EVENTS === 'true' ||
13
- process.env.APP_ENV !== 'production',
14
- });
2
+ const getConfig = ()=>({
3
+ appUrl: process.env.APP_URL || 'https://driveflux.com',
4
+ ga: {
5
+ measurementId: process.env.GA_MEASUREMENT_ID,
6
+ apiSecret: process.env.GA_API_SECRET
7
+ },
8
+ fb: {
9
+ pixelId: process.env.NEXT_PUBLIC_FB_PIXEL_ID,
10
+ accessToken: process.env.FB_ACCESS_TOKEN
11
+ },
12
+ consoleLogEvents: process.env.ANALYTICS_LOG_EVENTS === 'true' || process.env.APP_ENV !== 'production'
13
+ });
15
14
  export let config = singleton('webAnalyticsConfig', getConfig());
16
- export const resetConfig = () => {
15
+ export const resetConfig = ()=>{
17
16
  config = singleton('webAnalyticsConfig', getConfig(), true);
18
17
  return config;
19
18
  };
20
- export const setConfig = (key, value) => {
19
+ export const setConfig = (key, value)=>{
21
20
  config[key] = value;
22
21
  };
23
- //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"track-server.d.ts","sourceRoot":"","sources":["../src/track-server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAUhD,eAAO,MAAM,qBAAqB,SAC3B,cAAc,UACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,EAAE,kBA0E7C,CAAA;AAED,eAAO,MAAM,aAAa,SACnB,cAAc,QACd,MAAM,SACL,UAAU,kBACgC,CAAA;AAGlD,eAAO,MAAM,qBAAqB,SAC3B,cAAc,UACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,EAAE,kBAuE7C,CAAA;AAED,eAAO,MAAM,aAAa,SACnB,cAAc,QACd,MAAM,SACL,UAAU,kBACgC,CAAA"}
1
+ {"version":3,"file":"track-server.d.ts","sourceRoot":"","sources":["../src/track-server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQhD,eAAO,MAAM,qBAAqB,GACjC,MAAM,cAAc,EACpB,QAAQ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,EAAE,kBA8E7C,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,MAAM,cAAc,EACpB,MAAM,MAAM,EACZ,OAAO,UAAU,kBACgC,CAAA;AAGlD,eAAO,MAAM,qBAAqB,GACjC,MAAM,cAAc,EACpB,QAAQ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,EAAE,kBA2E7C,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,MAAM,cAAc,EACpB,MAAM,MAAM,EACZ,OAAO,UAAU,kBACgC,CAAA"}
@@ -1,17 +1,16 @@
1
1
  import { enhancedFetch } from '@driveflux/fetch';
2
2
  import { config } from './config.js';
3
- import { convertFacebookUserData, convertGAUserData, extractAnalyticClientId, extractAnalyticSessionId, getCurrentTimestampMicros, } from './utils.js';
4
- // google
5
- export const trackFbServerMultiple = async (user, events) => {
3
+ import { convertFacebookUserData, convertGAUserData, getCurrentTimestampMicros } from './utils.js';
4
+ // facebook
5
+ export const trackFbServerMultiple = async (user, events)=>{
6
6
  if (events.length > 1) {
7
7
  console.log('🚨🚨🚨🗄️ firing multiple server events', events);
8
- const filtered = events.filter((e) => !!e.name);
8
+ const filtered = events.filter((e)=>!!e.name);
9
9
  if (filtered.length !== events.length) {
10
10
  console.log('Not all events have names');
11
11
  return;
12
12
  }
13
- }
14
- else {
13
+ } else {
15
14
  console.log('🚨🚨🚨🗄️ firing server event', events?.[0]?.name, events?.[0]?.data);
16
15
  if (!events?.[0]?.name) {
17
16
  console.error('The name of the event is missing');
@@ -25,8 +24,8 @@ export const trackFbServerMultiple = async (user, events) => {
25
24
  console.log('The configuration is not set up correctly.');
26
25
  return;
27
26
  }
28
- const clientId = extractAnalyticClientId(user.clientIdCookie);
29
- const sessionId = extractAnalyticSessionId(user.sessionIdCookie);
27
+ const clientId = user.clientIdCookie;
28
+ const sessionId = user.sessionIdCookie;
30
29
  if (!clientId || !sessionId) {
31
30
  console.log('The user client id or session id are not provided');
32
31
  return;
@@ -34,47 +33,52 @@ export const trackFbServerMultiple = async (user, events) => {
34
33
  const userData = user.data ? await convertFacebookUserData(user.data) : {};
35
34
  const url = `https://graph.facebook.com/${apiVersion}/${pixelId}/events?access_token=${accessToken}`;
36
35
  const payload = {
37
- data: events
38
- .map((e) => {
36
+ data: events.map((e)=>{
39
37
  if (e.name) {
40
38
  return {
41
39
  event_name: e.name,
42
- event_time: Math.floor(Date.now() / 1000), // Unix timestamp in seconds
40
+ event_time: Math.floor(Date.now() / 1000),
43
41
  event_source_url: config.appUrl,
44
42
  action_source: 'website',
45
43
  user_data: {
46
44
  ...userData,
47
- fbp: `fb.1.${clientId}`,
45
+ fbp: `fb.1.${clientId}`
48
46
  },
49
47
  custom_data: {
50
- ...e.data,
51
- },
48
+ ...e.data
49
+ }
52
50
  };
53
51
  }
54
52
  return null;
55
- })
56
- .filter(Boolean),
53
+ }).filter(Boolean)
57
54
  };
58
- await enhancedFetch(url, {
55
+ const res = await enhancedFetch(url, {
59
56
  method: 'POST',
60
57
  headers: {
61
- 'Content-Type': 'application/json',
58
+ 'Content-Type': 'application/json'
62
59
  },
63
- body: JSON.stringify(payload),
60
+ body: JSON.stringify(payload)
64
61
  });
62
+ if (!res.ok) {
63
+ console.log('🚨🚨🚨🗄️ error firing server event', res.val);
64
+ }
65
65
  };
66
- export const trackFbServer = async (user, name, data) => trackFbServerMultiple(user, [{ name, data }]);
67
- // facebook
68
- export const trackGAServerMultiple = async (user, events) => {
66
+ export const trackFbServer = async (user, name, data)=>trackFbServerMultiple(user, [
67
+ {
68
+ name,
69
+ data
70
+ }
71
+ ]);
72
+ // google
73
+ export const trackGAServerMultiple = async (user, events)=>{
69
74
  if (events.length > 1) {
70
75
  console.log('🚨🚨🚨🗄️ firing multiple server events', events);
71
- const filtered = events.filter((e) => !!e.name);
76
+ const filtered = events.filter((e)=>!!e.name);
72
77
  if (filtered.length !== events.length) {
73
78
  console.log('Not all events have names');
74
79
  return;
75
80
  }
76
- }
77
- else {
81
+ } else {
78
82
  console.log('🚨🚨🚨🗄️ firing server event', events?.[0]?.name, events?.[0]?.data);
79
83
  if (!events?.[0]?.name) {
80
84
  console.error('The name of the event is missing');
@@ -87,40 +91,47 @@ export const trackGAServerMultiple = async (user, events) => {
87
91
  console.log('The configuration is not set up correctly.');
88
92
  return;
89
93
  }
90
- const clientId = extractAnalyticClientId(user.clientIdCookie);
91
- const sessionId = extractAnalyticSessionId(user.sessionIdCookie);
94
+ const clientId = user.clientIdCookie;
95
+ const sessionId = user.sessionIdCookie;
92
96
  if (!clientId || !sessionId) {
93
97
  console.log('The user client id or session id are not provided');
94
98
  return;
95
99
  }
96
- const userData = user.data
97
- ? { user_data: await convertGAUserData(user.data) }
98
- : {};
100
+ const userData = user.data ? {
101
+ user_data: await convertGAUserData(user.data)
102
+ } : {};
99
103
  const url = `https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`;
100
104
  const payload = {
101
105
  client_id: clientId,
102
106
  timestamp_micros: getCurrentTimestampMicros(),
103
- events: events.map((e) => {
107
+ events: events.map((e)=>{
104
108
  if (e.name) {
105
109
  return {
106
110
  name: e.name,
107
111
  params: {
108
112
  ...userData,
109
113
  ...e.data,
110
- session_id: sessionId,
111
- },
114
+ session_id: sessionId
115
+ }
112
116
  };
113
117
  }
114
118
  return null;
115
- }),
119
+ })
116
120
  };
117
- await enhancedFetch(url, {
121
+ const res = await enhancedFetch(url, {
118
122
  method: 'POST',
119
123
  headers: {
120
- 'Content-Type': 'application/json',
124
+ 'Content-Type': 'application/json'
121
125
  },
122
- body: JSON.stringify(payload),
126
+ body: JSON.stringify(payload)
123
127
  });
128
+ if (!res.ok) {
129
+ console.log('🚨🚨🚨🗄️ error firing server event', res.val);
130
+ }
124
131
  };
125
- export const trackGAServer = async (user, name, data) => trackGAServerMultiple(user, [{ name, data }]);
126
- //# sourceMappingURL=track-server.js.map
132
+ export const trackGAServer = async (user, name, data)=>trackGAServerMultiple(user, [
133
+ {
134
+ name,
135
+ data
136
+ }
137
+ ]);
@@ -1 +1 @@
1
- {"version":3,"file":"track-server.js","sourceRoot":"","sources":["../src/track-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"track-server.js","sourceRoot":"","sources":["../src/track-server.ts"],"names":[],"mappings":"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"}
package/dist/track.js CHANGED
@@ -4,16 +4,17 @@ import { config } from './config.js';
4
4
  import { convertGAUserData, extractAnalyticClientId } from './utils.js';
5
5
  const eventsQueue = new Set();
6
6
  const TIMEOUT_TO_CLEAR_EVENTS = 500;
7
- const drainEvents = () => {
8
- const events = [...eventsQueue];
7
+ const drainEvents = ()=>{
8
+ const events = [
9
+ ...eventsQueue
10
+ ];
9
11
  eventsQueue.clear();
10
- for (const event of events) {
12
+ for (const event of events){
11
13
  sendGTMEvent(event);
12
14
  }
13
15
  };
14
- const interval = setInterval(() => {
15
- if (typeof window === 'undefined')
16
- return;
16
+ const interval = setInterval(()=>{
17
+ if (typeof window === 'undefined') return;
17
18
  if (window.fluxDataLayer) {
18
19
  drainEvents();
19
20
  clearInterval(interval);
@@ -25,8 +26,7 @@ if (ud) {
25
26
  try {
26
27
  const json = Buffer.from(ud, 'base64').toString('utf8');
27
28
  defaultUserData = JSON.parse(json);
28
- }
29
- catch (e) { }
29
+ } catch (e) {}
30
30
  }
31
31
  export function getAnalyticClientId(type) {
32
32
  if (typeof document === 'undefined') {
@@ -34,30 +34,30 @@ export function getAnalyticClientId(type) {
34
34
  }
35
35
  const prefix = type === 'facebook' ? 'fbp' : 'ga';
36
36
  const cookies = document.cookie.split(';');
37
- const cookie = cookies.find((cookie) => cookie.trim().startsWith(`_${prefix}=`));
37
+ const cookie = cookies.find((cookie)=>cookie.trim().startsWith(`_${prefix}=`));
38
38
  if (cookie) {
39
39
  return extractAnalyticClientId(cookie);
40
40
  }
41
- return null; // If no cookie is found or format is unexpected
41
+ return null // If no cookie is found or format is unexpected
42
+ ;
42
43
  }
43
- const sendGTMEvent = (data) => {
44
+ const sendGTMEvent = (data)=>{
44
45
  if (window.fluxDataLayer) {
45
46
  window.fluxDataLayer.push(data);
46
- }
47
- else {
47
+ } else {
48
48
  console.warn('GTM dataLayer fluxDataLayer does not exist');
49
49
  }
50
50
  };
51
- export const safeSendGTMEvent = async (event) => {
51
+ export const safeSendGTMEvent = async (event)=>{
52
52
  if (!window.fluxDataLayer) {
53
53
  eventsQueue.add(event);
54
54
  return;
55
55
  }
56
56
  sendGTMEvent(event);
57
57
  };
58
- export const useTrackEvent = () => {
58
+ export const useTrackEvent = ()=>{
59
59
  const userData = useRef(defaultUserData);
60
- const track = useCallback((eventName, eventData, clearMode) => {
60
+ const track = useCallback((eventName, eventData, clearMode)=>{
61
61
  if (config.consoleLogEvents) {
62
62
  console.log('🚨🚨🚨 firing event', eventName, eventData);
63
63
  }
@@ -67,33 +67,32 @@ export const useTrackEvent = () => {
67
67
  }
68
68
  const event = {
69
69
  event: eventName,
70
- ...(userData.current
71
- ? {
72
- user_data: userData.current,
73
- }
74
- : {}),
75
- ...eventData,
70
+ ...userData.current ? {
71
+ user_data: userData.current
72
+ } : {},
73
+ ...eventData
76
74
  };
77
75
  if (clearMode === 'clearItems') {
78
- safeSendGTMEvent({ items: undefined });
76
+ safeSendGTMEvent({
77
+ items: undefined
78
+ });
79
79
  }
80
80
  safeSendGTMEvent(event);
81
81
  }, []);
82
- const setUserData = useCallback(async (dataInput) => {
82
+ const setUserData = useCallback(async (dataInput)=>{
83
83
  userData.current = await convertGAUserData(dataInput);
84
84
  localStorage.setItem('ud', Buffer.from(JSON.stringify(userData.current), 'utf8').toString('base64'));
85
85
  }, []);
86
86
  return {
87
87
  track,
88
- setUserData,
88
+ setUserData
89
89
  };
90
90
  };
91
- export const useAutoTrackEvent = (eventName, eventData) => {
91
+ export const useAutoTrackEvent = (eventName, eventData)=>{
92
92
  const previousEventData = useRef();
93
93
  const firedFirstEvent = useRef(false);
94
- useEffect(() => {
95
- if (isEqual(previousEventData.current, eventData) &&
96
- firedFirstEvent.current) {
94
+ useEffect(()=>{
95
+ if (isEqual(previousEventData.current, eventData) && firedFirstEvent.current) {
97
96
  return;
98
97
  }
99
98
  firedFirstEvent.current = true;
@@ -102,10 +101,12 @@ export const useAutoTrackEvent = (eventName, eventData) => {
102
101
  }
103
102
  const event = {
104
103
  event: eventName,
105
- ...eventData,
104
+ ...eventData
106
105
  };
107
106
  safeSendGTMEvent(event);
108
107
  previousEventData.current = eventData;
109
- }, [eventData, eventName]);
108
+ }, [
109
+ eventData,
110
+ eventName
111
+ ]);
110
112
  };
111
- //# sourceMappingURL=track.js.map
package/dist/types.js CHANGED
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
1
+ export { };
package/dist/utils.js CHANGED
@@ -2,58 +2,54 @@ export async function hashData(input) {
2
2
  const encoder = new TextEncoder();
3
3
  const data = encoder.encode(input);
4
4
  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
5
- const hashArray = Array.from(new Uint8Array(hashBuffer)); // Convert buffer to byte array
6
- const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); // Convert bytes to hex string
5
+ const hashArray = Array.from(new Uint8Array(hashBuffer)) // Convert buffer to byte array
6
+ ;
7
+ const hashHex = hashArray.map((b)=>b.toString(16).padStart(2, '0')).join('') // Convert bytes to hex string
8
+ ;
7
9
  return hashHex;
8
10
  }
9
- export const getCurrentTimestampMicros = () => {
11
+ export const getCurrentTimestampMicros = ()=>{
10
12
  const now = new Date();
11
13
  const epochMillis = now.getTime();
12
14
  const epochMicros = epochMillis * 1000;
13
15
  return epochMicros.toString();
14
16
  };
15
- export const extractAnalyticClientId = (cookie) => {
17
+ export const extractAnalyticClientId = (cookie)=>{
16
18
  const matches = cookie.split('.');
17
19
  if (matches.length > 2) {
18
20
  return `${matches[2]}.${matches[3]}`;
19
21
  }
20
22
  return null;
21
23
  };
22
- export const extractAnalyticSessionId = (cookie) => {
24
+ export const extractAnalyticSessionId = (cookie)=>{
23
25
  const matches = cookie.split('.');
24
26
  if (matches.length > 2) {
25
27
  return Number.parseInt(`${matches[2]}`);
26
28
  }
27
29
  return null;
28
30
  };
29
- export const convertGAUserData = async (dataInput) => {
31
+ export const convertGAUserData = async (dataInput)=>{
30
32
  const userAddress = dataInput.addresses?.home || dataInput.addresses?.billing;
31
33
  return {
32
34
  user_id: dataInput.id,
33
35
  email: await hashData(dataInput.email),
34
- phone_number: dataInput.phoneNumber
35
- ? await hashData(dataInput.phoneNumber)
36
- : undefined,
37
- address: userAddress
38
- ? {
39
- first_name: dataInput.firstName
40
- ? await hashData(dataInput.firstName)
41
- : undefined,
42
- last_name: dataInput.lastName
43
- ? await hashData(dataInput.lastName)
44
- : undefined,
45
- street: [userAddress.street1, userAddress.street2].join(', '),
46
- city: userAddress.city,
47
- region: userAddress.state,
48
- postal_code: userAddress.postalCode,
49
- country: userAddress.country,
50
- }
51
- : undefined,
36
+ phone_number: dataInput.phoneNumber ? await hashData(dataInput.phoneNumber) : undefined,
37
+ address: userAddress ? {
38
+ first_name: dataInput.firstName ? await hashData(dataInput.firstName) : undefined,
39
+ last_name: dataInput.lastName ? await hashData(dataInput.lastName) : undefined,
40
+ street: [
41
+ userAddress.street1,
42
+ userAddress.street2
43
+ ].join(', '),
44
+ city: userAddress.city,
45
+ region: userAddress.state,
46
+ postal_code: userAddress.postalCode,
47
+ country: userAddress.country
48
+ } : undefined
52
49
  };
53
50
  };
54
- export const convertFacebookUserData = async (userData) => {
55
- if (!userData)
56
- return {};
51
+ export const convertFacebookUserData = async (userData)=>{
52
+ if (!userData) return {};
57
53
  const data = {};
58
54
  if (userData.email) {
59
55
  data.em = await hashData(userData.email.toLowerCase().trim());
@@ -71,4 +67,3 @@ export const convertFacebookUserData = async (userData) => {
71
67
  }
72
68
  return data;
73
69
  };
74
- //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driveflux/web-analytics",
3
- "version": "1.6.3",
3
+ "version": "1.6.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./track": {