11const { EventType } = require ( '../constants' ) ;
22
33const getPIIDestinationList = ( ) => {
4- return ( process . env . WHITELIST_PII_DESTINATION || "customerio" )
5- . trim ( )
6- . split ( "," ) ;
7- } ;
8-
9- const doesEventContainsTraits = event => {
10- return event && event . message && event . message . traits ;
11- } ;
12-
13- const doesEventContainContextTraits = event => {
14- return event && event . message && event . message . context && event . message . context . traits ;
15- } ;
4+ return ( process . env . WHITELIST_PII_DESTINATION || 'customerio' ) . trim ( ) . split ( ',' ) ;
5+ } ;
6+
7+ const doesEventContainsTraits = ( event ) => {
8+ return event && event . message && event . message . traits ;
9+ } ;
10+
11+ const doesEventContainContextTraits = ( event ) => {
12+ return event && event . message && event . message . context && event . message . context . traits ;
13+ } ;
14+
15+ const getPageEventBlockedDestinationsList = ( ) => {
16+ return ( process . env . BLOCKED_PAGE_DESTINATIONS || 'mp' ) . trim ( ) . split ( ',' ) ;
17+ } ;
1618
1719const handleFirstLoginGA4Property = ( destination , event , traits ) => {
1820 // delete firstLoginGA4 property from traits when destination is not GA4
1921 if ( destination !== 'ga4' ) {
2022 delete traits . firstLoginGA4 ;
2123 return ;
22- }
24+ }
2325
2426 // add firstLoginGA4 property in traits when Identify call is for GA4 destination
2527 if ( event . message . type === EventType . IDENTIFY ) {
2628 traits . firstLoginGA4 = true ;
2729 traits . value = 0 ;
28- }
30+ }
31+ } ;
2932
30- } ;
31-
32- const changeDateFormatForCustomerio = ( contextTraitsPresent , eventTraitsPresent , checkDestinationList , event ) => {
33- if ( checkDestinationList ) {
34- if ( contextTraitsPresent ) {
35- // eslint-disable-next-line no-param-reassign
36- event . message . context . traits . accountCreatedDate = Math . floor (
37- Date . parse ( event . message . context . traits . accountCreatedDate ) / 1000 ,
38- ) ;
39- }
40- if ( eventTraitsPresent ) {
41- // eslint-disable-next-line no-param-reassign
42- event . message . traits . accountCreatedDate = Math . floor (
43- Date . parse ( event . message . traits . accountCreatedDate ) / 1000 ,
44- ) ;
45- }
46- }
47- } ;
48-
49- const oncehubTransformer = ( destination , event ) => {
50- destination = destination . toString ( ) . toLowerCase ( ) ;
51- const contextTraitsPresent = doesEventContainContextTraits ( event ) ;
52- const eventTraitsPresent = doesEventContainsTraits ( event ) ;
53- const checkDestinationList = getPIIDestinationList ( ) . includes ( destination ) ;
54- changeDateFormatForCustomerio ( contextTraitsPresent , eventTraitsPresent , checkDestinationList , event ) ;
55-
56- if ( ! checkDestinationList && eventTraitsPresent ) {
57- // eslint-disable-next-line no-param-reassign
58- delete event . message . traits . email ;
33+ const changeDateFormatForCustomerio = (
34+ contextTraitsPresent ,
35+ eventTraitsPresent ,
36+ checkDestinationList ,
37+ event ,
38+ ) => {
39+ if ( checkDestinationList ) {
40+ if ( contextTraitsPresent ) {
5941 // eslint-disable-next-line no-param-reassign
60- delete event . message . traits . firstName ;
42+ event . message . context . traits . accountCreatedDate = Math . floor (
43+ Date . parse ( event . message . context . traits . accountCreatedDate ) / 1000 ,
44+ ) ;
45+ }
46+ if ( eventTraitsPresent ) {
6147 // eslint-disable-next-line no-param-reassign
62- delete event . message . traits . lastName ;
48+ event . message . traits . accountCreatedDate = Math . floor (
49+ Date . parse ( event . message . traits . accountCreatedDate ) / 1000 ,
50+ ) ;
51+ }
52+ }
53+ } ;
54+
55+ const oncehubTransformer = ( destination , event ) => {
56+ destination = destination . toString ( ) . toLowerCase ( ) ;
57+ const contextTraitsPresent = doesEventContainContextTraits ( event ) ;
58+ const eventTraitsPresent = doesEventContainsTraits ( event ) ;
59+ const checkDestinationList = getPIIDestinationList ( ) . includes ( destination ) ;
60+ const checkPageEventBlockedDestination =
61+ getPageEventBlockedDestinationsList ( ) . includes ( destination ) ;
62+ if ( event . message . type === EventType . PAGE && checkPageEventBlockedDestination ) {
63+ // eslint-disable-next-line no-param-reassign
64+ return null ;
65+ }
66+
67+ changeDateFormatForCustomerio (
68+ contextTraitsPresent ,
69+ eventTraitsPresent ,
70+ checkDestinationList ,
71+ event ,
72+ ) ;
73+
74+ if ( ! checkDestinationList && eventTraitsPresent ) {
75+ // eslint-disable-next-line no-param-reassign
76+ delete event . message . traits . email ;
77+ // eslint-disable-next-line no-param-reassign
78+ delete event . message . traits . firstName ;
79+ // eslint-disable-next-line no-param-reassign
80+ delete event . message . traits . lastName ;
6381
6482 if ( contextTraitsPresent ) {
65- // eslint-disable-next-line no-param-reassign
66- delete event . message . context . traits . email ;
67- // eslint-disable-next-line no-param-reassign
68- delete event . message . context . traits . firstName ;
69- // eslint-disable-next-line no-param-reassign
70- delete event . message . context . traits . lastName ;
71- }
83+ // eslint-disable-next-line no-param-reassign
84+ delete event . message . context . traits . email ;
85+ // eslint-disable-next-line no-param-reassign
86+ delete event . message . context . traits . firstName ;
87+ // eslint-disable-next-line no-param-reassign
88+ delete event . message . context . traits . lastName ;
7289 }
90+ }
7391
7492 // Adding check for firstLoginGA4 property
7593 if ( eventTraitsPresent ) {
@@ -80,11 +98,12 @@ const handleFirstLoginGA4Property = (destination, event, traits) => {
8098 handleFirstLoginGA4Property ( destination , event , event . message . context . traits ) ;
8199 }
82100
83- // eslint-disable-next-line no-console
84- // if(doesEventContainsTraits(event)) console.log("event log=>destination : ", JSON.stringify(destination), " , ==> event traits : ", JSON.stringify(event.message.traits), " , ==> event here : ",JSON.stringify(event));
85- return event ;
86- } ;
87-
88- module . exports = {
89- oncehubTransformer
90- } ;
101+ // eslint-disable-next-line no-console
102+ // if(doesEventContainsTraits(event)) console.log("event log=>destination : ", JSON.stringify(destination), " , ==> event traits : ", JSON.stringify(event.message.traits), " , ==> event here : ",JSON.stringify(event));
103+
104+ return event ;
105+ } ;
106+
107+ module . exports = {
108+ oncehubTransformer,
109+ } ;
0 commit comments