UNPKG

@walkeros/server-destination-meta

Version:

Meta server destination for walkerOS

1 lines 4.68 kB
"use strict";var mod,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,index_exports={};((target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})})(index_exports,{DestinationMeta:()=>types_exports,default:()=>index_default,destinationMeta:()=>destinationMeta}),module.exports=(mod=index_exports,((to,from,except,desc)=>{if(from&&"object"==typeof from||"function"==typeof from)for(let key of __getOwnPropNames(from))__hasOwnProp.call(to,key)||key===except||__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to})(__defProp({},"__esModule",{value:!0}),mod));var import_core2=require("@walkeros/core"),import_server_core2=require("@walkeros/server-core"),import_core=require("@walkeros/core"),import_server_core=require("@walkeros/server-core"),keysToHash=["em","ph","fn","ln","db","ge","ct","st","zp","country","external_id"];function shouldBeHashed(key,doNotHash=[]){return keysToHash.includes(key)&&!doNotHash.includes(key)}async function processValue(value,shouldHash){return shouldHash?(0,import_core.isArray)(value)?Promise.all(value.map(item=>(0,import_server_core.getHashServer)(String(item)))):(0,import_server_core.getHashServer)(String(value)):value}var push=async function(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger}){var _a;const{accessToken:accessToken,pixelId:pixelId,action_source:action_source="website",doNotHash:doNotHash,test_event_code:test_event_code,url:url="https://graph.facebook.com/v22.0/",user_data:user_data}=config.settings,eventData=(0,import_core2.isObject)(data)?data:{},configData=config.data?await(0,import_core2.getMappingValue)(event,config.data):{},userDataCustom=user_data?await(0,import_core2.getMappingValue)(event,{map:user_data}):{},userData={...(0,import_core2.isObject)(configData)&&(0,import_core2.isObject)(configData.user_data)?configData.user_data:{},...(0,import_core2.isObject)(userDataCustom)?userDataCustom:{},...(0,import_core2.isObject)(eventData.user_data)?eventData.user_data:{}};userData.fbclid&&(userData.fbc=function(clickId,time){if(!clickId)return;const version="fb",subdomainIndex="1",creationTime=time||Date.now();return`${version}.${subdomainIndex}.${creationTime}.${clickId}`}(userData.fbclid,(null==(_a=null==collector?void 0:collector.session)?void 0:_a.start)||event.timestamp),delete userData.fbclid);const serverEvent={event_name:event.name,event_id:event.id,event_time:Math.round((event.timestamp||Date.now())/1e3),action_source:action_source,...eventData,user_data:userData};"website"===action_source&&(serverEvent.event_source_url=event.source.id);const hashedServerEvent=await async function(value,doNotHash=[]){if(!(0,import_core.isObject)(value))return value;const isUserData="user_data"in value,target=isUserData?value.user_data:value,result=(await Promise.all(Object.entries(target).map(async([k,v])=>[k,await processValue(v,isUserData&&shouldBeHashed(k,doNotHash))]))).reduce((acc,[k,v])=>((0,import_core.isString)(k)&&(acc[k]=v),acc),{});return isUserData?{...value,user_data:result}:result}(serverEvent,doNotHash),body={data:[hashedServerEvent]};test_event_code&&(body.test_event_code=test_event_code);const endpoint=`${url}${pixelId}/events`;logger.debug("Calling Meta API",{endpoint:endpoint,method:"POST",eventName:serverEvent.event_name,eventId:serverEvent.event_id});const sendServerFn=(null==env?void 0:env.sendServer)||import_server_core2.sendServer,result=await sendServerFn(`${endpoint}?access_token=${accessToken}`,JSON.stringify(body));logger.debug("Meta API response",{ok:!(0,import_core2.isObject)(result)||result.ok}),(0,import_core2.isObject)(result)&&!1===result.ok&&logger.throw(`Meta API error: ${JSON.stringify(result)}`)};var types_exports={},destinationMeta={type:"meta",config:{},async init({config:partialConfig,logger:logger}){const config=function(partialConfig={},logger){const settings=partialConfig.settings||{},{accessToken:accessToken,pixelId:pixelId}=settings;accessToken||logger.throw("Config settings accessToken missing"),pixelId||logger.throw("Config settings pixelId missing");const settingsConfig={...settings,accessToken:accessToken,pixelId:pixelId};return{...partialConfig,settings:settingsConfig}}(partialConfig,logger);return config},push:async(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger})=>await push(event,{config:config,mapping:mapping,data:data,collector:collector,env:env,logger:logger})},index_default=destinationMeta;//# sourceMappingURL=index.js.map