@driveflux/web-analytics 1.6.1 → 1.6.3
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 +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -9
- package/dist/config.js.map +1 -1
- package/dist/track-server.d.ts +7 -2
- package/dist/track-server.d.ts.map +1 -1
- package/dist/track-server.js +83 -22
- package/dist/track-server.js.map +1 -1
- package/dist/track.d.ts +1 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +38 -38
- package/dist/track.js.map +1 -1
- package/dist/types.js +2 -1
- package/dist/utils.d.ts +5 -4
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +47 -23
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
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;IACD,gBAAgB,EAAE,OAAO,CAAA;CACzB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG;IACb,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE;QACH,aAAa,EAAE,MAAM,CAAA;QACrB,SAAS,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,EAAE,EAAE;QACH,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,gBAAgB,EAAE,OAAO,CAAA;CACzB,CAAA;AAiBD,eAAO,IAAI,MAAM,EAAE,MAAqD,CAAA;AAExE,eAAO,MAAM,WAAW,cAGvB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,SAAS,MAAM,MAAM,EACjD,KAAK,GAAG,EACR,OAAO,MAAM,CAAC,GAAG,CAAC,SAGlB,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { singleton } from '@driveflux/singleton';
|
|
2
|
-
const getConfig = ()=>({
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
+
});
|
|
9
15
|
export let config = singleton('webAnalyticsConfig', getConfig());
|
|
10
|
-
export const resetConfig = ()=>{
|
|
16
|
+
export const resetConfig = () => {
|
|
11
17
|
config = singleton('webAnalyticsConfig', getConfig(), true);
|
|
12
18
|
return config;
|
|
13
19
|
};
|
|
14
|
-
export const setConfig = (key, value)=>{
|
|
20
|
+
export const setConfig = (key, value) => {
|
|
15
21
|
config[key] = value;
|
|
16
22
|
};
|
|
23
|
+
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAehD,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAuB;IACtD,EAAE,EAAE;QACH,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,iBAA2B;QACtD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,aAAuB;KAC9C;IACD,EAAE,EAAE;QACH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAiC;QACtD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,eAAyB;KAClD;IACD,gBAAgB,EACf,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM;QAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY;CACrC,CAAC,CAAA;AAEF,MAAM,CAAC,IAAI,MAAM,GAAW,SAAS,CAAC,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC/B,MAAM,GAAG,SAAS,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAA;IAC3D,OAAO,MAAM,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,GAAQ,EACR,KAAkB,EACjB,EAAE;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpB,CAAC,CAAA"}
|
package/dist/track-server.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { JsonObject } from 'type-fest';
|
|
2
2
|
import type { ServerUserData } from './types.js';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const trackFbServerMultiple: (user: ServerUserData, events: {
|
|
4
4
|
name: string;
|
|
5
5
|
data?: JsonObject;
|
|
6
6
|
}[]) => Promise<void>;
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const trackFbServer: (user: ServerUserData, name: string, data?: JsonObject) => Promise<void>;
|
|
8
|
+
export declare const trackGAServerMultiple: (user: ServerUserData, events: {
|
|
9
|
+
name: string;
|
|
10
|
+
data?: JsonObject;
|
|
11
|
+
}[]) => Promise<void>;
|
|
12
|
+
export declare const trackGAServer: (user: ServerUserData, name: string, data?: JsonObject) => Promise<void>;
|
|
8
13
|
//# sourceMappingURL=track-server.d.ts.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;
|
|
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"}
|
package/dist/track-server.js
CHANGED
|
@@ -1,15 +1,80 @@
|
|
|
1
1
|
import { enhancedFetch } from '@driveflux/fetch';
|
|
2
|
-
import { config } from './config';
|
|
3
|
-
import {
|
|
4
|
-
|
|
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) => {
|
|
5
6
|
if (events.length > 1) {
|
|
6
7
|
console.log('🚨🚨🚨🗄️ firing multiple server events', events);
|
|
7
|
-
const filtered = events.filter((e)
|
|
8
|
+
const filtered = events.filter((e) => !!e.name);
|
|
8
9
|
if (filtered.length !== events.length) {
|
|
9
10
|
console.log('Not all events have names');
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
|
-
}
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
console.log('🚨🚨🚨🗄️ firing server event', events?.[0]?.name, events?.[0]?.data);
|
|
16
|
+
if (!events?.[0]?.name) {
|
|
17
|
+
console.error('The name of the event is missing');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const apiVersion = 'v13.0';
|
|
22
|
+
const pixelId = config.fb.pixelId;
|
|
23
|
+
const accessToken = config.fb.accessToken;
|
|
24
|
+
if (!pixelId || !accessToken) {
|
|
25
|
+
console.log('The configuration is not set up correctly.');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const clientId = extractAnalyticClientId(user.clientIdCookie);
|
|
29
|
+
const sessionId = extractAnalyticSessionId(user.sessionIdCookie);
|
|
30
|
+
if (!clientId || !sessionId) {
|
|
31
|
+
console.log('The user client id or session id are not provided');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const userData = user.data ? await convertFacebookUserData(user.data) : {};
|
|
35
|
+
const url = `https://graph.facebook.com/${apiVersion}/${pixelId}/events?access_token=${accessToken}`;
|
|
36
|
+
const payload = {
|
|
37
|
+
data: events
|
|
38
|
+
.map((e) => {
|
|
39
|
+
if (e.name) {
|
|
40
|
+
return {
|
|
41
|
+
event_name: e.name,
|
|
42
|
+
event_time: Math.floor(Date.now() / 1000), // Unix timestamp in seconds
|
|
43
|
+
event_source_url: config.appUrl,
|
|
44
|
+
action_source: 'website',
|
|
45
|
+
user_data: {
|
|
46
|
+
...userData,
|
|
47
|
+
fbp: `fb.1.${clientId}`,
|
|
48
|
+
},
|
|
49
|
+
custom_data: {
|
|
50
|
+
...e.data,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
})
|
|
56
|
+
.filter(Boolean),
|
|
57
|
+
};
|
|
58
|
+
await enhancedFetch(url, {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
headers: {
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
},
|
|
63
|
+
body: JSON.stringify(payload),
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
export const trackFbServer = async (user, name, data) => trackFbServerMultiple(user, [{ name, data }]);
|
|
67
|
+
// facebook
|
|
68
|
+
export const trackGAServerMultiple = async (user, events) => {
|
|
69
|
+
if (events.length > 1) {
|
|
70
|
+
console.log('🚨🚨🚨🗄️ firing multiple server events', events);
|
|
71
|
+
const filtered = events.filter((e) => !!e.name);
|
|
72
|
+
if (filtered.length !== events.length) {
|
|
73
|
+
console.log('Not all events have names');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
13
78
|
console.log('🚨🚨🚨🗄️ firing server event', events?.[0]?.name, events?.[0]?.data);
|
|
14
79
|
if (!events?.[0]?.name) {
|
|
15
80
|
console.error('The name of the event is missing');
|
|
@@ -22,44 +87,40 @@ export const trackServerMultiple = async (user, events)=>{
|
|
|
22
87
|
console.log('The configuration is not set up correctly.');
|
|
23
88
|
return;
|
|
24
89
|
}
|
|
25
|
-
const clientId =
|
|
26
|
-
const sessionId =
|
|
90
|
+
const clientId = extractAnalyticClientId(user.clientIdCookie);
|
|
91
|
+
const sessionId = extractAnalyticSessionId(user.sessionIdCookie);
|
|
27
92
|
if (!clientId || !sessionId) {
|
|
28
93
|
console.log('The user client id or session id are not provided');
|
|
29
94
|
return;
|
|
30
95
|
}
|
|
31
|
-
const userData = user.data
|
|
32
|
-
user_data: await
|
|
33
|
-
|
|
96
|
+
const userData = user.data
|
|
97
|
+
? { user_data: await convertGAUserData(user.data) }
|
|
98
|
+
: {};
|
|
34
99
|
const url = `https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`;
|
|
35
100
|
const payload = {
|
|
36
101
|
client_id: clientId,
|
|
37
102
|
timestamp_micros: getCurrentTimestampMicros(),
|
|
38
|
-
events: events.map((e)=>{
|
|
103
|
+
events: events.map((e) => {
|
|
39
104
|
if (e.name) {
|
|
40
105
|
return {
|
|
41
106
|
name: e.name,
|
|
42
107
|
params: {
|
|
43
108
|
...userData,
|
|
44
109
|
...e.data,
|
|
45
|
-
session_id: sessionId
|
|
46
|
-
}
|
|
110
|
+
session_id: sessionId,
|
|
111
|
+
},
|
|
47
112
|
};
|
|
48
113
|
}
|
|
49
114
|
return null;
|
|
50
|
-
})
|
|
115
|
+
}),
|
|
51
116
|
};
|
|
52
117
|
await enhancedFetch(url, {
|
|
53
118
|
method: 'POST',
|
|
54
119
|
headers: {
|
|
55
|
-
'Content-Type': 'application/json'
|
|
120
|
+
'Content-Type': 'application/json',
|
|
56
121
|
},
|
|
57
|
-
body: JSON.stringify(payload)
|
|
122
|
+
body: JSON.stringify(payload),
|
|
58
123
|
});
|
|
59
124
|
};
|
|
60
|
-
export const
|
|
61
|
-
|
|
62
|
-
name,
|
|
63
|
-
data
|
|
64
|
-
}
|
|
65
|
-
]);
|
|
125
|
+
export const trackGAServer = async (user, name, data) => trackGAServerMultiple(user, [{ name, data }]);
|
|
126
|
+
//# sourceMappingURL=track-server.js.map
|
package/dist/track-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-server.js","sourceRoot":"","sources":["../src/track-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"track-server.js","sourceRoot":"","sources":["../src/track-server.ts"],"names":[],"mappings":"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"}
|
package/dist/track.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ declare global {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
type ClearMode = 'clearItems';
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function getAnalyticClientId(type: 'google' | 'facebook'): string | null;
|
|
9
9
|
export declare const safeSendGTMEvent: (event: Record<string, any>) => Promise<void>;
|
|
10
10
|
export declare const useTrackEvent: () => {
|
|
11
11
|
track: (eventName: string, eventData?: Record<string, any>, clearMode?: ClearMode) => void;
|
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;AA+B7B,wBAAgB,
|
|
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,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,iBAe9D;AAUD,eAAO,MAAM,gBAAgB,GAAU,OAAO,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,GAC7B,WAAW,MAAM,EACjB,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SA0B/B,CAAA"}
|
package/dist/track.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import isEqual from 'lodash/isEqual.js';
|
|
2
2
|
import { useCallback, useEffect, useRef } from 'react';
|
|
3
3
|
import { config } from './config.js';
|
|
4
|
-
import {
|
|
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 = [
|
|
9
|
-
...eventsQueue
|
|
10
|
-
];
|
|
7
|
+
const drainEvents = () => {
|
|
8
|
+
const events = [...eventsQueue];
|
|
11
9
|
eventsQueue.clear();
|
|
12
|
-
for (const event of events){
|
|
10
|
+
for (const event of events) {
|
|
13
11
|
sendGTMEvent(event);
|
|
14
12
|
}
|
|
15
13
|
};
|
|
16
|
-
const interval = setInterval(()=>{
|
|
17
|
-
if (typeof window === 'undefined')
|
|
14
|
+
const interval = setInterval(() => {
|
|
15
|
+
if (typeof window === 'undefined')
|
|
16
|
+
return;
|
|
18
17
|
if (window.fluxDataLayer) {
|
|
19
18
|
drainEvents();
|
|
20
19
|
clearInterval(interval);
|
|
@@ -26,37 +25,39 @@ if (ud) {
|
|
|
26
25
|
try {
|
|
27
26
|
const json = Buffer.from(ud, 'base64').toString('utf8');
|
|
28
27
|
defaultUserData = JSON.parse(json);
|
|
29
|
-
}
|
|
28
|
+
}
|
|
29
|
+
catch (e) { }
|
|
30
30
|
}
|
|
31
|
-
export function
|
|
31
|
+
export function getAnalyticClientId(type) {
|
|
32
32
|
if (typeof document === 'undefined') {
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
+
const prefix = type === 'facebook' ? 'fbp' : 'ga';
|
|
35
36
|
const cookies = document.cookie.split(';');
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
38
|
-
return
|
|
37
|
+
const cookie = cookies.find((cookie) => cookie.trim().startsWith(`_${prefix}=`));
|
|
38
|
+
if (cookie) {
|
|
39
|
+
return extractAnalyticClientId(cookie);
|
|
39
40
|
}
|
|
40
|
-
return null // If no
|
|
41
|
-
;
|
|
41
|
+
return null; // If no cookie is found or format is unexpected
|
|
42
42
|
}
|
|
43
|
-
const sendGTMEvent = (data)=>{
|
|
43
|
+
const sendGTMEvent = (data) => {
|
|
44
44
|
if (window.fluxDataLayer) {
|
|
45
45
|
window.fluxDataLayer.push(data);
|
|
46
|
-
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
47
48
|
console.warn('GTM dataLayer fluxDataLayer does not exist');
|
|
48
49
|
}
|
|
49
50
|
};
|
|
50
|
-
export const safeSendGTMEvent = async (event)=>{
|
|
51
|
+
export const safeSendGTMEvent = async (event) => {
|
|
51
52
|
if (!window.fluxDataLayer) {
|
|
52
53
|
eventsQueue.add(event);
|
|
53
54
|
return;
|
|
54
55
|
}
|
|
55
56
|
sendGTMEvent(event);
|
|
56
57
|
};
|
|
57
|
-
export const useTrackEvent = ()=>{
|
|
58
|
+
export const useTrackEvent = () => {
|
|
58
59
|
const userData = useRef(defaultUserData);
|
|
59
|
-
const track = useCallback((eventName, eventData, clearMode)=>{
|
|
60
|
+
const track = useCallback((eventName, eventData, clearMode) => {
|
|
60
61
|
if (config.consoleLogEvents) {
|
|
61
62
|
console.log('🚨🚨🚨 firing event', eventName, eventData);
|
|
62
63
|
}
|
|
@@ -66,32 +67,33 @@ export const useTrackEvent = ()=>{
|
|
|
66
67
|
}
|
|
67
68
|
const event = {
|
|
68
69
|
event: eventName,
|
|
69
|
-
...userData.current
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
...(userData.current
|
|
71
|
+
? {
|
|
72
|
+
user_data: userData.current,
|
|
73
|
+
}
|
|
74
|
+
: {}),
|
|
75
|
+
...eventData,
|
|
73
76
|
};
|
|
74
77
|
if (clearMode === 'clearItems') {
|
|
75
|
-
safeSendGTMEvent({
|
|
76
|
-
items: undefined
|
|
77
|
-
});
|
|
78
|
+
safeSendGTMEvent({ items: undefined });
|
|
78
79
|
}
|
|
79
80
|
safeSendGTMEvent(event);
|
|
80
81
|
}, []);
|
|
81
|
-
const setUserData = useCallback(async (dataInput)=>{
|
|
82
|
-
userData.current = await
|
|
82
|
+
const setUserData = useCallback(async (dataInput) => {
|
|
83
|
+
userData.current = await convertGAUserData(dataInput);
|
|
83
84
|
localStorage.setItem('ud', Buffer.from(JSON.stringify(userData.current), 'utf8').toString('base64'));
|
|
84
85
|
}, []);
|
|
85
86
|
return {
|
|
86
87
|
track,
|
|
87
|
-
setUserData
|
|
88
|
+
setUserData,
|
|
88
89
|
};
|
|
89
90
|
};
|
|
90
|
-
export const useAutoTrackEvent = (eventName, eventData)=>{
|
|
91
|
+
export const useAutoTrackEvent = (eventName, eventData) => {
|
|
91
92
|
const previousEventData = useRef();
|
|
92
93
|
const firedFirstEvent = useRef(false);
|
|
93
|
-
useEffect(()=>{
|
|
94
|
-
if (isEqual(previousEventData.current, eventData) &&
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (isEqual(previousEventData.current, eventData) &&
|
|
96
|
+
firedFirstEvent.current) {
|
|
95
97
|
return;
|
|
96
98
|
}
|
|
97
99
|
firedFirstEvent.current = true;
|
|
@@ -100,12 +102,10 @@ export const useAutoTrackEvent = (eventName, eventData)=>{
|
|
|
100
102
|
}
|
|
101
103
|
const event = {
|
|
102
104
|
event: eventName,
|
|
103
|
-
...eventData
|
|
105
|
+
...eventData,
|
|
104
106
|
};
|
|
105
107
|
safeSendGTMEvent(event);
|
|
106
108
|
previousEventData.current = eventData;
|
|
107
|
-
}, [
|
|
108
|
-
eventData,
|
|
109
|
-
eventName
|
|
110
|
-
]);
|
|
109
|
+
}, [eventData, eventName]);
|
|
111
110
|
};
|
|
111
|
+
//# sourceMappingURL=track.js.map
|
package/dist/track.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { TrackingUserData, UserLikeData } from './types.js';
|
|
1
|
+
import type { ServerUserData, TrackingUserData, UserLikeData } from './types.js';
|
|
2
2
|
export declare function hashData(input: string): Promise<string>;
|
|
3
3
|
export declare const getCurrentTimestampMicros: () => string;
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
4
|
+
export declare const extractAnalyticClientId: (cookie: string) => string | null;
|
|
5
|
+
export declare const extractAnalyticSessionId: (cookie: string) => number | null;
|
|
6
|
+
export declare const convertGAUserData: (dataInput: UserLikeData) => Promise<TrackingUserData>;
|
|
7
|
+
export declare const convertFacebookUserData: (userData: ServerUserData["data"]) => Promise<Record<string, string>>;
|
|
7
8
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEhF,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,mBAO3C;AAED,eAAO,MAAM,yBAAyB,QAAO,MAK5C,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,kBAMrD,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,kBAMtD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC7B,WAAW,YAAY,KACrB,OAAO,CAAC,gBAAgB,CAwB1B,CAAA;AAED,eAAO,MAAM,uBAAuB,GACnC,UAAU,cAAc,CAAC,MAAM,CAAC,oCAyBhC,CAAA"}
|
package/dist/utils.js
CHANGED
|
@@ -2,49 +2,73 @@ 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
|
-
;
|
|
7
|
-
const hashHex = hashArray.map((b)=>b.toString(16).padStart(2, '0')).join('') // Convert bytes to hex string
|
|
8
|
-
;
|
|
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
|
|
9
7
|
return hashHex;
|
|
10
8
|
}
|
|
11
|
-
export const getCurrentTimestampMicros = ()=>{
|
|
9
|
+
export const getCurrentTimestampMicros = () => {
|
|
12
10
|
const now = new Date();
|
|
13
11
|
const epochMillis = now.getTime();
|
|
14
12
|
const epochMicros = epochMillis * 1000;
|
|
15
13
|
return epochMicros.toString();
|
|
16
14
|
};
|
|
17
|
-
export const
|
|
18
|
-
const matches =
|
|
15
|
+
export const extractAnalyticClientId = (cookie) => {
|
|
16
|
+
const matches = cookie.split('.');
|
|
19
17
|
if (matches.length > 2) {
|
|
20
18
|
return `${matches[2]}.${matches[3]}`;
|
|
21
19
|
}
|
|
22
20
|
return null;
|
|
23
21
|
};
|
|
24
|
-
export const
|
|
25
|
-
const matches =
|
|
22
|
+
export const extractAnalyticSessionId = (cookie) => {
|
|
23
|
+
const matches = cookie.split('.');
|
|
26
24
|
if (matches.length > 2) {
|
|
27
25
|
return Number.parseInt(`${matches[2]}`);
|
|
28
26
|
}
|
|
29
27
|
return null;
|
|
30
28
|
};
|
|
31
|
-
export const
|
|
29
|
+
export const convertGAUserData = async (dataInput) => {
|
|
32
30
|
const userAddress = dataInput.addresses?.home || dataInput.addresses?.billing;
|
|
33
31
|
return {
|
|
34
32
|
user_id: dataInput.id,
|
|
35
33
|
email: await hashData(dataInput.email),
|
|
36
|
-
phone_number: dataInput.phoneNumber
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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,
|
|
49
52
|
};
|
|
50
53
|
};
|
|
54
|
+
export const convertFacebookUserData = async (userData) => {
|
|
55
|
+
if (!userData)
|
|
56
|
+
return {};
|
|
57
|
+
const data = {};
|
|
58
|
+
if (userData.email) {
|
|
59
|
+
data.em = await hashData(userData.email.toLowerCase().trim());
|
|
60
|
+
}
|
|
61
|
+
if (userData.phoneNumber) {
|
|
62
|
+
// Remove all non-numeric characters
|
|
63
|
+
const cleanPhone = userData.phoneNumber.replace(/\D/g, '');
|
|
64
|
+
data.ph = await hashData(cleanPhone);
|
|
65
|
+
}
|
|
66
|
+
if (userData.firstName) {
|
|
67
|
+
data.fn = await hashData(userData.firstName.toLowerCase().trim());
|
|
68
|
+
}
|
|
69
|
+
if (userData.lastName) {
|
|
70
|
+
data.ln = await hashData(userData.lastName.toLowerCase().trim());
|
|
71
|
+
}
|
|
72
|
+
return data;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAa;IAC3C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA,CAAC,+BAA+B;IACxF,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,8BAA8B;IAC7G,OAAO,OAAO,CAAA;AACf,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;IACjC,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAA;IACtC,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|