UNPKG

@walkeros/web-source-datalayer

Version:

DataLayer source for walkerOS

1 lines 4.97 kB
var e=Object.defineProperty,t=(t,a)=>{for(var n in a)e(t,n,{get:a[n],enumerable:!0})};import{isArray as a,isObject as n,isString as r,tryCatch as i}from"@walkeros/core";var o=!1;function c(e,t={},o){if(t.filter){if(!0===i(()=>t.filter(o),()=>!1)())return}const c=function(e){if(n(e)&&r(e.event))return e;if(a(e)&&e.length>=2)return s(e);if(t=e,null!=t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0){return s(Array.from(e))}var t;return null}(o);if(!c)return;const u={event:`${t.prefix||"dataLayer"} ${c.event}`,data:c,context:{},globals:{},custom:{},consent:{},nested:[],user:{},id:Math.random().toString(36).substring(2,15),trigger:"",entity:"",action:"",timestamp:Date.now(),timing:0,group:"",count:0,version:{source:"1.0.0",tagging:2},source:{type:"dataLayer",id:"",previous_id:""}};i(()=>e.push(u),()=>{})()}function s(e){const[t,a,i]=e;if(!r(t))return null;let o,c={};switch(t){case"consent":if(!r(a)||e.length<3)return null;if(!n(i)||null===i)return null;o=`${t} ${a}`,c={...i};break;case"event":if(!r(a))return null;o=a,n(i)&&(c={...i});break;case"config":if(!r(a))return null;o=`${t} ${a}`,n(i)&&(c={...i});break;case"set":if(r(a))o=`${t} ${a}`,n(i)&&(c={...i});else{if(!n(a))return null;o=`${t} custom`,c={...a}}break;default:return null}return{event:o,...c}}var u={},d={};function m(){return["consent","update",{ad_user_data:"granted",ad_personalization:"granted",ad_storage:"denied",analytics_storage:"granted"}]}function l(){return["consent","default",{ad_storage:"denied",analytics_storage:"denied",ad_user_data:"denied",ad_personalization:"denied"}]}function y(){return["event","purchase",{transaction_id:"T_12345",value:25.42,currency:"EUR",items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",quantity:1,price:25.42}]}]}function p(){return["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_variant:"red",quantity:1,price:15.25}]}]}function _(){return["event","view_item",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",price:15.25}]}]}function f(){return["config","G-XXXXXXXXXX",{page_title:"Custom Page Title",page_location:"https://example.com/page",send_page_view:!1}]}function g(){return["set",{currency:"EUR",country:"DE"}]}function v(){return{event:"custom_event",custom_parameter:"custom_value",user_id:"user123"}}t(d,{add_to_cart:()=>p,config:()=>f,consentDefault:()=>l,consentUpdate:()=>m,directDataLayerEvent:()=>v,purchase:()=>y,setCustom:()=>g,view_item:()=>_});var w={};t(w,{add_to_cart:()=>L,config:()=>U,configGA4:()=>A,consentOnlyMapping:()=>k,consentUpdate:()=>X,customEvent:()=>E,purchase:()=>h,view_item:()=>b});var X={name:"walker consent",settings:{command:{map:{functional:{value:!0},analytics:{key:"analytics_storage",fn:e=>"granted"===e},marketing:{key:"ad_storage",fn:e=>"granted"===e}}}}},h={name:"order complete",data:{map:{id:"transaction_id",total:"value",currency:"currency",nested:{loop:["items",{map:{type:{value:"product"},data:{map:{id:"item_id",name:"item_name",category:"item_category",quantity:"quantity",price:"price"}}}}]}}}},L={name:"product add",data:{map:{id:"items.0.item_id",name:"items.0.item_name",price:"value",currency:"currency",color:"items.0.item_variant",quantity:"items.0.quantity"}}},b={name:"product view",data:{map:{id:"items.0.item_id",name:"items.0.item_name",category:"items.0.item_category",price:"items.0.price",currency:"currency"}}},A={name:"page view",data:{map:{title:"page_title",url:"page_location"}}},E={data:{map:{user_id:"user_id",custom_parameter:"custom_parameter"}}},U={consent:{update:X},purchase:h,add_to_cart:L,view_item:b,"config G-XXXXXXXXXX":A,custom_event:E,"*":{data:{}}},k={consent:{update:X}},$=(e,t)=>{const{settings:a}=t,n={type:"dataLayer",config:t,collector:e,destroy(){const e=a.name||"dataLayer";window[e]&&Array.isArray(window[e])}};!function(e,t){const a=t.settings,n=(null==a?void 0:a.name)||"dataLayer",r=window[n];if(Array.isArray(r)&&!o){o=!0;try{for(const t of r)c(e,a,t)}finally{o=!1}}}(e,t),function(e,t){const a=t.settings,n=(null==a?void 0:a.name)||"dataLayer";window[n]||(window[n]=[]);const r=window[n];if(!Array.isArray(r))return;const i=r.push.bind(r);r.push=function(...t){if(o)return i(...t);o=!0;try{for(const n of t)c(e,a,n)}finally{o=!1}return i(...t)}}(e,t);return{source:n,elb:(...e)=>{const t=a.name||"dataLayer",n=window[t];return Array.isArray(n)?Promise.resolve(n.push(...e)):Promise.resolve(0)}}};function x(e={}){const t=(t,a)=>{const n={...a,settings:{name:"dataLayer",prefix:"dataLayer",...e,...a.settings}};return $(t,n)};return t.init=(e,t)=>$(e,{type:"dataLayer",settings:t.settings}),t.settings={name:"dataLayer",prefix:"dataLayer",...e},t.type="dataLayer",t}var P=x;export{d as Events,w as Mapping,u as SourceDataLayer,k as consentOnlyMapping,m as consentUpdateEvent,U as dataLayerExamples,P as default,x as sourceDataLayer};//# sourceMappingURL=index.mjs.map