@walkeros/server-destination-meta
Version:
Meta server destination for walkerOS
1 lines • 10.3 kB
JavaScript
"use strict";var e,t,n,r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,i=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},c={};i(c,{DestinationMeta:()=>$,default:()=>U,destinationMeta:()=>R,destinationMetaExamples:()=>H}),module.exports=(e=c,((e,t,n,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let c of o(t))s.call(e,c)||c===n||r(e,c,{get:()=>t[c],enumerable:!(i=a(t,c))||i.enumerable});return e})(r({},"__esModule",{value:!0}),e));var d=Object.getOwnPropertyNames,u=(t={"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 n||(0,t[d(t)[0]])((n={exports:{}}).exports,n),n.exports}),l={merge:!0,shallow:!0,extend:!0};function p(e){return Array.isArray(e)}function g(e){return void 0!==e}function m(e){return"object"==typeof e&&null!==e&&!p(e)&&"[object Object]"===Object.prototype.toString.call(e)}function f(e){return"string"==typeof e}function y(e,t="",n){const r=t.split(".");let a=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&p(a)){const t=r.slice(e+1).join("."),o=[];for(const e of a){const r=y(e,t,n);o.push(r)}return o}if(a=a instanceof Object?a[t]:void 0,!a)break}return g(a)?a:n}var{version:b}=u();function v(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={...l,...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:b,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 h(e){return function(e){return"boolean"==typeof e}(e)||f(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!g(e)||p(e)&&e.every(h)||m(e)&&Object.values(e).every(h)}function w(e){return h(e)?e:void 0}function k(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 _(e,t={},n={}){var r;if(!g(e))return;const a=m(e)&&e.consent||n.consent||(null==(r=n.collector)?void 0:r.consent),o=p(t)?t:[t];for(const t of o){const r=await k(x)(e,t,{...n,consent:a});if(g(r))return r}}async function x(e,t,n={}){const{collector:r,consent:a}=n;return(p(t)?t:[t]).reduce(async(t,o)=>{const s=await t;if(s)return s;const i=f(o)?{key:o}:o;if(!Object.keys(i).length)return;const{condition:c,consent:d,fn:u,key:l,loop:m,map:b,set:v,validate:h,value:O}=i;if(c&&!await k(c)(e,o,r))return;if(d&&!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}(d,a))return O;let S=g(O)?O:e;if(u&&(S=await k(u)(e,o,n)),l&&(S=y(e,l,O)),m){const[t,r]=m,a="this"===t?[e]:await _(e,t,n);p(a)&&(S=(await Promise.all(a.map(e=>_(e,r,n)))).filter(g))}else b?S=await Object.entries(b).reduce(async(t,[r,a])=>{const o=await t,s=await _(e,a,n);return g(s)&&(o[r]=s),o},Promise.resolve({})):v&&(S=await Promise.all(v.map(t=>x(e,t,n))));h&&!await k(h)(S)&&(S=void 0);const j=w(S);return g(j)?j:w(O)},Promise.resolve(void 0))}function O(e){throw new Error(String(e))}var S=require("@walkeros/server-core"),j=require("@walkeros/server-core"),P=["em","ph","fn","ln","db","ge","ct","st","zp","country","external_id"];function E(e,t=[]){return P.includes(e)&&!t.includes(e)}async function N(e,t){return t?p(e)?Promise.all(e.map(e=>(0,j.getHashServer)(String(e)))):(0,j.getHashServer)(String(e)):e}var D=async function(e,{config:t,mapping:n,data:r,collector:a,wrap:o}){var s;const{accessToken:i,pixelId:c,action_source:d="website",doNotHash:u,test_event_code:l,url:p="https://graph.facebook.com/v22.0/",user_data:g}=t.settings,y=m(r)?r:{},b=t.data?await _(e,t.data):{},v=g?await _(e,{map:g}):{},h={...m(b)&&m(b.user_data)?b.user_data:{},...m(v)?v:{},...m(y.user_data)?y.user_data:{}};h.fbclid&&(h.fbc=function(e,t){if(!e)return;const n="fb",r="1",a=t||Date.now();return`${n}.${r}.${a}.${e}`}(h.fbclid,(null==(s=null==a?void 0:a.session)?void 0:s.start)||e.timestamp),delete h.fbclid);const w={event_name:e.event,event_id:e.id,event_time:Math.round((e.timestamp||Date.now())/1e3),action_source:d,...y,user_data:h};"website"===d&&(w.event_source_url=e.source.id);const k=await async function(e,t=[]){if(!m(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 N(r,n&&E(e,t))]))).reduce((e,[t,n])=>(f(t)&&(e[t]=n),e),{});return n?{...e,user_data:a}:a}(w,u),x={data:[k]};l&&(x.test_event_code=l);const O=o("sendServer",S.sendServer),j=await O(`${p}${c}/events?access_token=${i}`,JSON.stringify(x));if(m(j)&&!1===j.ok)throw new Error(JSON.stringify(j))};var $={},H={};i(H,{destinationMetaExamples:()=>C});var z={};function A(){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 v({...{"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}]}}i(z,{Purchase:()=>A});var M={};i(M,{InitUserData:()=>q,Purchase:()=>I,config:()=>T});var q={pixelId:"p1x3l1d",accessToken:"s3cr3t",user_data:{external_id:{set:["user.device","user.session"]}}},I={name:"Purchase",data:{map:{order_id:"data.id",currency:{key:"data.currency",value:"EUR"},value:"data.total",contents:{loop:["nested",{condition:e=>m(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}}}},T={order:{complete:I}},C={events:z,mapping:M},R={type:"meta",config:{},async init({config:e}){const t=function(e={}){const t=e.settings||{},{accessToken:n,pixelId:r}=t;n||O("Config settings accessToken missing"),r||O("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 D(e,{config:t,mapping:n,data:r,collector:a,wrap:o})},U=R;//# sourceMappingURL=index.js.map