UNPKG

@walkeros/server-destination-meta

Version:

Meta server destination for walkerOS

1 lines 9.98 kB
var e,t,n=Object.defineProperty,r=(e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})},a=Object.getOwnPropertyNames,o=(e={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.8",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return t||(0,e[a(e)[0]])((t={exports:{}}).exports,t),t.exports}),s={merge:!0,shallow:!0,extend:!0};function i(e){return Array.isArray(e)}function c(e){return void 0!==e}function d(e){return"object"==typeof e&&null!==e&&!i(e)&&"[object Object]"===Object.prototype.toString.call(e)}function u(e){return"string"==typeof e}function l(e,t="",n){const r=t.split(".");let a=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&i(a)){const t=r.slice(e+1).join("."),o=[];for(const e of a){const r=l(e,t,n);o.push(r)}return o}if(a=a instanceof Object?a[t]:void 0,!a)break}return c(a)?a:n}var{version:p}=o();function g(e={}){var t;const n=e.timestamp||(new Date).setHours(0,13,37,0),r=e.group||"gr0up",a=e.count||1,o=function(e,t={},n={}){n={...s,...n};const r=Object.entries(t).reduce((t,[r,a])=>{const o=e[r];return n.merge&&Array.isArray(o)&&Array.isArray(a)?t[r]=a.reduce((e,t)=>e.includes(t)?e:[...e,t],[...o]):(n.extend||r in e)&&(t[r]=a),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}({event:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{type:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${n}-${r}-${a}`,trigger:"test",entity:"entity",action:"action",timestamp:n,timing:3.14,group:r,count:a,version:{source:p,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.event){const[n,r]=null!=(t=e.event.split(" "))?t:[];n&&r&&(o.entity=n,o.action=r)}return o}function m(e){return function(e){return"boolean"==typeof e}(e)||u(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!c(e)||i(e)&&e.every(m)||d(e)&&Object.values(e).every(m)}function f(e){return m(e)?e:void 0}function y(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function b(e,t={},n={}){var r;if(!c(e))return;const a=d(e)&&e.consent||n.consent||(null==(r=n.collector)?void 0:r.consent),o=i(t)?t:[t];for(const t of o){const r=await y(v)(e,t,{...n,consent:a});if(c(r))return r}}async function v(e,t,n={}){const{collector:r,consent:a}=n;return(i(t)?t:[t]).reduce(async(t,o)=>{const s=await t;if(s)return s;const d=u(o)?{key:o}:o;if(!Object.keys(d).length)return;const{condition:p,consent:g,fn:m,key:h,loop:w,map:k,set:x,validate:_,value:O}=d;if(p&&!await y(p)(e,o,r))return;if(g&&!function(e,t={},n={}){const r={...t,...n},a={};let o=void 0===e;return Object.keys(r).forEach(t=>{r[t]&&(a[t]=!0,e&&e[t]&&(o=!0))}),!!o&&a}(g,a))return O;let S=c(O)?O:e;if(m&&(S=await y(m)(e,o,n)),h&&(S=l(e,h,O)),w){const[t,r]=w,a="this"===t?[e]:await b(e,t,n);i(a)&&(S=(await Promise.all(a.map(e=>b(e,r,n)))).filter(c))}else k?S=await Object.entries(k).reduce(async(t,[r,a])=>{const o=await t,s=await b(e,a,n);return c(s)&&(o[r]=s),o},Promise.resolve({})):x&&(S=await Promise.all(x.map(t=>v(e,t,n))));_&&!await y(_)(S)&&(S=void 0);const j=f(S);return c(j)?j:f(O)},Promise.resolve(void 0))}function h(e){throw new Error(String(e))}import{sendServer as w}from"@walkeros/server-core";import{getHashServer as k}from"@walkeros/server-core";var x=["em","ph","fn","ln","db","ge","ct","st","zp","country","external_id"];function _(e,t=[]){return x.includes(e)&&!t.includes(e)}async function O(e,t){return t?i(e)?Promise.all(e.map(e=>k(String(e)))):k(String(e)):e}var S=async function(e,{config:t,mapping:n,data:r,collector:a,wrap:o}){var s;const{accessToken:i,pixelId:c,action_source:l="website",doNotHash:p,test_event_code:g,url:m="https://graph.facebook.com/v22.0/",user_data:f}=t.settings,y=d(r)?r:{},v=t.data?await b(e,t.data):{},h=f?await b(e,{map:f}):{},k={...d(v)&&d(v.user_data)?v.user_data:{},...d(h)?h:{},...d(y.user_data)?y.user_data:{}};k.fbclid&&(k.fbc=function(e,t){if(!e)return;const n="fb",r="1",a=t||Date.now();return`${n}.${r}.${a}.${e}`}(k.fbclid,(null==(s=null==a?void 0:a.session)?void 0:s.start)||e.timestamp),delete k.fbclid);const x={event_name:e.event,event_id:e.id,event_time:Math.round((e.timestamp||Date.now())/1e3),action_source:l,...y,user_data:k};"website"===l&&(x.event_source_url=e.source.id);const S=await async function(e,t=[]){if(!d(e))return e;const n="user_data"in e,r=n?e.user_data:e,a=(await Promise.all(Object.entries(r).map(async([e,r])=>[e,await O(r,n&&_(e,t))]))).reduce((e,[t,n])=>(u(t)&&(e[t]=n),e),{});return n?{...e,user_data:a}:a}(x,p),j={data:[S]};g&&(j.test_event_code=g);const E=o("sendServer",w),P=await E(`${m}${c}/events?access_token=${i}`,JSON.stringify(j));if(d(P)&&!1===P.ok)throw new Error(JSON.stringify(P))};var j={},E={};r(E,{destinationMetaExamples:()=>H});var P={};function N(){const e=function(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),r={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},a={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return g({...{"cart view":{data:{currency:"EUR",value:2*r.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{type:"product",data:{...r.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:r.data.price+a.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...r,context:{shopping:["checkout",0]},nested:[]},{type:"product",...a,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...r,context:{shopping:["complete",0]},nested:[]},{type:"product",...a,context:{shopping:["complete",0]},nested:[]},{type:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.elbwalker.com/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...r,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...r,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...r.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:n,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,event:e})}("order complete");return{data:[{event_name:"Purchase",event_time:e.timestamp/1e3,event_id:e.id,event_source_url:e.source.id,action_source:"website",user_data:{external_id:["cc8e27118413234d4297ed00a02711365312c79325df9b5b8f4199cbd0b96e7e","9176e6f336dbdb4f99b0e45cbd7e41e0e2323812b236822842a61ffbd362ac8c"]},order_id:String(e.data.id),currency:"EUR",value:Number(e.data.total),contents:e.nested.filter(e=>"product"===e.type).map(e=>({id:String(e.data.id),quantity:Number(e.data.quantity)||1,item_price:Number(e.data.price)})),num_items:2}]}}r(P,{Purchase:()=>N});var $={};r($,{InitUserData:()=>D,Purchase:()=>z,config:()=>A});var D={pixelId:"p1x3l1d",accessToken:"s3cr3t",user_data:{external_id:{set:["user.device","user.session"]}}},z={name:"Purchase",data:{map:{order_id:"data.id",currency:{key:"data.currency",value:"EUR"},value:"data.total",contents:{loop:["nested",{condition:e=>d(e)&&"product"===e.type,map:{id:"data.id",item_price:"data.price",quantity:{key:"data.quantity",value:1}}}]},num_items:{fn:e=>e.nested.filter(e=>"product"===e.type).length}}}},A={order:{complete:z}},H={events:P,mapping:$},I={type:"meta",config:{},async init({config:e}){const t=function(e={}){const t=e.settings||{},{accessToken:n,pixelId:r}=t;n||h("Config settings accessToken missing"),r||h("Config settings pixelId missing");const a={...t,accessToken:n,pixelId:r};return{...e,settings:a}}(e);return t},push:async(e,{config:t,mapping:n,data:r,collector:a,wrap:o})=>await S(e,{config:t,mapping:n,data:r,collector:a,wrap:o})},T=I;export{j as DestinationMeta,T as default,I as destinationMeta,E as destinationMetaExamples};//# sourceMappingURL=index.mjs.map