@walkeros/web-destination-gtag 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var Destination=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,o=(t,a)=>{for(var n in a)e(t,n,{get:a[n],enumerable:!0})},r={};o(r,{DestinationGtag:()=>k,default:()=>P,destinationGtag:()=>q,examples:()=>x});var i,s,c=new Set;function d(e,t="https://www.googletagmanager.com/gtag/js?id=",a=globalThis.document){if(c.has(e))return;const n=a.createElement("script");n.src=t+e,a.head.appendChild(n),c.add(e)}function u(e=globalThis.window){const t=e;t.dataLayer=t.dataLayer||[],t.gtag||(t.gtag=function(){t.dataLayer.push(arguments)})}var l=Object.getOwnPropertyNames,p=(i={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.1.1",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 s||(0,i[l(i)[0]])((s={exports:{}}).exports,s),s.exports}),g={merge:!0,shallow:!0,extend:!0};function m(e){return"object"==typeof e&&null!==e&&!function(e){return Array.isArray(e)}(e)&&"[object Object]"===Object.prototype.toString.call(e)}var{version:y}=p();function v(e={}){var t;const a=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=function(e,t={},a={}){a={...g,...a};const n=Object.entries(t).reduce((t,[n,o])=>{const r=e[n];return a.merge&&Array.isArray(r)&&Array.isArray(o)?t[n]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...r]):(a.extend||n in e)&&(t[n]=o),t},{});return a.shallow?{...e,...n}:(Object.assign(e,n),e)}({name:"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:[{entity:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${a}-${n}-${o}`,trigger:"test",entity:"entity",action:"action",timestamp:a,timing:3.14,group:n,count:o,version:{source:y,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.name){const[a,n]=null!=(t=e.name.split(" "))?t:[];a&&n&&(r.entity=a,r.action=n)}return r}function h(e="entity action",t={}){const a=t.timestamp||(new Date).setHours(0,13,37,0),n={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return v({...{"cart view":{data:{currency:"EUR",value:2*n.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...n.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:n.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...n,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...o,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:[{entity:"product",...n,context:{shopping:["complete",0]},nested:[]},{entity:"product",...o,context:{shopping:["complete",0]},nested:[]},{entity:"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":{...n,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...n,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...n.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:a,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,name:e})}function w(e){const t={window:globalThis.window,document:globalThis.document};return e?{...t,...e}:t}function b(e,t,a={},n,o){const{window:r}=w(o);if(!t.measurementId)return;const i=m(n)?n:{},s=function(e,t){const a={};return t.includes("all")&&(t=["context","data","event","globals","source","user","version"]),t.forEach(t=>{let n=e[t]||{};"event"==t&&(n={id:e.id,timing:e.timing,trigger:e.trigger,entity:e.entity,action:e.action,group:e.group,count:e.count}),Object.entries(n).forEach(([e,n])=>{"context"==t&&(n=n[0]),a[`${t}_${e}`]=n})}),a}(e,a.include||t.include||["data"]),c={...s,...i};let d=e.name;!1!==t.snakeCase&&(d=function(e,t=!0){return t?e.replace(/\s+/g,"_").toLowerCase():e}(d)),c.send_to=t.measurementId,t.debug&&(c.debug_mode=!0);(0,r.gtag)("event",d,c)}var f="dataLayer";function _(e,t,a){const{window:n,document:o}=w(a),{containerId:r,dataLayer:i,domain:s}=e,c=i||f;c===f?n.dataLayer=n.dataLayer||[]:n[c]=n[c]||[];n[c].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t&&r&&function(e,t,a,n=globalThis.document){const o=a!=f?"&l="+a:"",r=n.createElement("script");r.src=t+e+o,n.head.appendChild(r)}(r,s||"https://www.googletagmanager.com/gtm.js?id=",c,o)}var k={},x={};o(x,{events:()=>E,mapping:()=>S});var E={};function O(){const e=h("order complete");return["event","purchase",{transaction_id:e.data.id,value:e.data.total,tax:e.data.taxes,shipping:e.data.shipping,currency:"EUR",items:e.nested.filter(e=>"product"===e.entity).map(e=>({item_id:e.data.id,item_name:e.data.name,quantity:1})),send_to:"G-XXXXXX-1"}]}function j(){const e=h("product add");return["event","add_to_cart",{currency:"EUR",value:e.data.price,items:[{item_id:e.data.id,item_variant:e.data.color,quantity:1}],send_to:"G-XXXXXX-1"}]}function X(){const e=h("order complete");return["event","conversion",{send_to:"AW-XXXXXXXXX/CONVERSION_LABEL",currency:"EUR",value:e.data.total,transaction_id:e.data.id}]}function I(){const e=h("product view");return{event:"product_view",product_id:e.data.id,product_name:e.data.name,product_category:e.data.category,value:e.data.price,currency:"EUR"}}o(E,{adsConversion:()=>X,ga4AddToCart:()=>j,ga4Purchase:()=>O,gtmEvent:()=>I});var S={};o(S,{adsConversion:()=>L,combinedPurchase:()=>D,config:()=>T,ga4AddToCart:()=>C,ga4Purchase:()=>A,gtmProductView:()=>U});var R,A={name:"purchase",settings:{ga4:{include:["data","context"]}},data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:e=>m(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},C={name:"add_to_cart",settings:{ga4:{include:["data"]}},data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},L={name:"CONVERSION_LABEL",settings:{ads:{}},data:{map:{value:"data.total",currency:{value:"EUR",key:"data.currency"},transaction_id:"data.id"}}},U={name:"product_view",settings:{gtm:{}},data:{map:{product_id:"data.id",product_name:"data.name",product_category:"data.category",value:"data.price",currency:{value:"EUR",key:"data.currency"}}}},D={name:"purchase",settings:{ga4:{include:["data"]},ads:{},gtm:{}},data:{map:{transaction_id:"data.id",value:"data.total",currency:{value:"EUR",key:"data.currency"},items:{loop:["nested",{condition:e=>m(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{value:1,key:"data.quantity"}}}]}}}},T={order:{complete:D},product:{add:C,view:U}},q={type:"google-gtag",config:{settings:{}},env:{window:{gtag:function(...e){},dataLayer:[]},document:{createElement:e=>({src:"",async:!1,setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},init({config:e,env:t}){const{settings:a={},loadScript:n}=e,{ga4:o,ads:r,gtm:i}=a;return(null==o?void 0:o.measurementId)&&function(e,t,a){const{window:n,document:o}=w(a),{measurementId:r,transport_url:i,server_container_url:s,pageview:c}=e;if(!r)return;t&&d(r,void 0,o),u(n);const l={};i&&(l.transport_url=i),s&&(l.server_container_url=s),!1===c&&(l.send_page_view=!1);const p=n.gtag;p("js",new Date),p("config",r,l)}(o,n,t),(null==r?void 0:r.conversionId)&&function(e,t,a){const{window:n,document:o}=w(a),{conversionId:r}=e;if(!r)return;e.currency||(e.currency="EUR"),t&&d(r,void 0,o),u(n);const i=n.gtag;i("js",new Date),i("config",r)}(r,n,t),(null==i?void 0:i.containerId)&&_(i,n,t),!!((null==o?void 0:o.measurementId)||(null==r?void 0:r.conversionId)||(null==i?void 0:i.containerId))&&e},push(e,{config:t,mapping:a={},data:n,env:o}){const{settings:r={}}=t,{ga4:i,ads:s,gtm:c}=r,d=a.settings||{};(null==i?void 0:i.measurementId)&&b(e,i,d.ga4,n,o),(null==s?void 0:s.conversionId)&&a.name&&function(e,t,a={},n,o,r){const{conversionId:i,currency:s}=t,c=m(n)?n:{},d=a.label||o;if(!d)return;const u={send_to:`${i}/${d}`,currency:s||"EUR",...c},{window:l}=w(r);(0,l.gtag)("event","conversion",u)}(0,s,d.ads,n,a.name,o),(null==c?void 0:c.containerId)&&function(e,t,a={},n,o){const{window:r}=w(o),i={event:e.name};r.dataLayer.push({...i,...m(n)?n:e})}(e,0,d.gtm,n,o)}},P=q;return R=r,((o,r,i,s)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let c of a(r))n.call(o,c)||c===i||e(o,c,{get:()=>r[c],enumerable:!(s=t(r,c))||s.enumerable});return o})(e({},"__esModule",{value:!0}),R)})();
1
+ "use strict";var Destination=(()=>{var t=Object.defineProperty,e=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,o=(e,n)=>{for(var a in n)t(e,a,{get:n[a],enumerable:!0})},r={};o(r,{DestinationGtag:()=>X,default:()=>K,destinationGtag:()=>J,examples:()=>A,resetConsentState:()=>M});var i=new Set;function c(t,e="https://www.googletagmanager.com/gtag/js?id=",n=globalThis.document){if(i.has(t))return;const a=n.createElement("script");a.src=e+t,n.head.appendChild(a),i.add(t)}function s(t){const e=t;return e.dataLayer=e.dataLayer||[],e.gtag||(e.gtag=function(){e.dataLayer.push(arguments)}),e.gtag}var d={merge:!0,shallow:!0,extend:!0};function u(t,e={},n={}){n={...d,...n};const a=Object.entries(e).reduce((e,[a,o])=>{const r=t[a];return n.merge&&Array.isArray(r)&&Array.isArray(o)?e[a]=o.reduce((t,e)=>t.includes(e)?t:[...t,e],[...r]):(n.extend||a in t)&&(e[a]=o),e},{});return n.shallow?{...t,...a}:(Object.assign(t,a),t)}function l(t){return Array.isArray(t)}function g(t){return void 0!==t}function p(t){return"object"==typeof t&&null!==t&&!l(t)&&"[object Object]"===Object.prototype.toString.call(t)}function m(t){return"string"==typeof t}function v(t,e="",n){const a=e.split(".");let o=t;for(let t=0;t<a.length;t++){const e=a[t];if("*"===e&&l(o)){const e=a.slice(t+1).join("."),r=[];for(const t of o){const a=v(t,e,n);r.push(a)}return r}if(o=o instanceof Object?o[e]:void 0,!o)break}return g(o)?o:n}function y(t="entity action",e={}){const n=e.timestamp||(new Date).setHours(0,13,37,0),a={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return function(t={}){var e;const n=t.timestamp||(new Date).setHours(0,13,37,0),a=t.group||"gr0up",o=t.count||1,r=u({name:"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:[{entity:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${n}-${a}-${o}`,trigger:"test",entity:"entity",action:"action",timestamp:n,timing:3.14,group:a,count:o,version:{source:"0.2.0",tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},t,{merge:!1});if(t.name){const[n,a]=null!=(e=t.name.split(" "))?e:[];n&&a&&(r.entity=n,r.action=a)}return r}({...{"cart view":{data:{currency:"EUR",value:2*a.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...a.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:a.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...a,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...o,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:[{entity:"product",...a,context:{shopping:["complete",0]},nested:[]},{entity:"product",...o,context:{shopping:["complete",0]},nested:[]},{entity:"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":{...a,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...a,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...a.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"}}}[t],...e,name:t})}function f(t){return function(t){return"boolean"==typeof t}(t)||m(t)||function(t){return"number"==typeof t&&!Number.isNaN(t)}(t)||!g(t)||l(t)&&t.every(f)||p(t)&&Object.values(t).every(f)}function h(t){return f(t)?t:void 0}function w(t,e,n){return async function(...a){try{return await t(...a)}catch(t){if(!e)return;return await e(t)}finally{await(null==n?void 0:n())}}}async function b(t,e={},n={}){var a;if(!g(t))return;const o=p(t)&&t.consent||n.consent||(null==(a=n.collector)?void 0:a.consent),r=l(e)?e:[e];for(const e of r){const a=await w(_)(t,e,{...n,consent:o});if(g(a))return a}}async function _(t,e,n={}){const{collector:a,consent:o}=n;return(l(e)?e:[e]).reduce(async(e,r)=>{const i=await e;if(i)return i;const c=m(r)?{key:r}:r;if(!Object.keys(c).length)return;const{condition:s,consent:d,fn:u,key:p,loop:y,map:f,set:E,validate:k,value:x}=c;if(s&&!await w(s)(t,r,a))return;if(d&&!function(t,e={},n={}){const a={...e,...n},o={};let r=void 0===t;return Object.keys(a).forEach(e=>{a[e]&&(o[e]=!0,t&&t[e]&&(r=!0))}),!!r&&o}(d,o))return x;let j=g(x)?x:t;if(u&&(j=await w(u)(t,r,n)),p&&(j=v(t,p,x)),y){const[e,a]=y,o="this"===e?[t]:await b(t,e,n);l(o)&&(j=(await Promise.all(o.map(t=>b(t,a,n)))).filter(g))}else f?j=await Object.entries(f).reduce(async(e,[a,o])=>{const r=await e,i=await b(t,o,n);return g(i)&&(r[a]=i),r},Promise.resolve({})):E&&(j=await Promise.all(E.map(e=>_(t,e,n))));k&&!await w(k)(j)&&(j=void 0);const O=h(j);return g(O)?O:h(x)},Promise.resolve(void 0))}function E(t){return{window:"undefined"!=typeof window?window:globalThis.window,document:"undefined"!=typeof document?document:globalThis.document,...t}}async function k(t,e,n,a,o){const r=p(e)?e:{},i=n.data?await b(t,n.data,{collector:o}):{},c=(null==a?void 0:a.data)?await b(t,a.data,{collector:o}):{},s=p(i)?i:{},d=p(c)?c:{};return u(u(r,s),d)}function x(t,e,n={},a,o){const{window:r}=E(o);if(!e.measurementId)return;const i=p(a)?a:{},c=function(t,e){const n={};return e.includes("all")&&(e=["context","data","event","globals","source","user","version"]),e.forEach(e=>{let a=t[e]||{};"event"==e&&(a={id:t.id,timing:t.timing,trigger:t.trigger,entity:t.entity,action:t.action,group:t.group,count:t.count}),Object.entries(a).forEach(([t,a])=>{"context"==e&&(a=a[0]),n[`${e}_${t}`]=a})}),n}(t,n.include||e.include||["data"]),s={...c,...i};let d=t.name;!1!==e.snakeCase&&(d=function(t,e=!0){return e?t.replace(/\s+/g,"_").toLowerCase():t}(d)),s.send_to=e.measurementId,e.debug&&(s.debug_mode=!0);(0,r.gtag)("event",d,s)}var j="dataLayer";function O(t,e,n){const{window:a,document:o}=E(n),{containerId:r,dataLayer:i,domain:c}=t,s=i||j;s===j?a.dataLayer=a.dataLayer||[]:a[s]=a[s]||[];a[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),e&&r&&function(t,e,n,a=globalThis.document){const o=n!=j?"&l="+n:"",r=a.createElement("script");r.src=e+t+o,a.head.appendChild(r)}(r,c||"https://www.googletagmanager.com/gtm.js?id=",s,o)}var X={},A={};o(A,{env:()=>I,events:()=>S,mapping:()=>z});var I={};o(I,{init:()=>R,push:()=>C,simulation:()=>L});var R={window:{gtag:void 0,dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},C={window:{gtag:Object.assign(()=>{},{}),dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},L=["call:window.gtag"],S={};function U(){const t=y("order complete");return["event","purchase",{transaction_id:t.data.id,value:t.data.total,tax:t.data.taxes,shipping:t.data.shipping,currency:"EUR",items:t.nested.filter(t=>"product"===t.entity).map(t=>({item_id:t.data.id,item_name:t.data.name,quantity:1})),send_to:"G-XXXXXX-1"}]}function P(){const t=y("product add");return["event","add_to_cart",{currency:"EUR",value:t.data.price,items:[{item_id:t.data.id,item_variant:t.data.color,quantity:1}],send_to:"G-XXXXXX-1"}]}function D(){const t=y("order complete");return["event","conversion",{send_to:"AW-XXXXXXXXX/CONVERSION_LABEL",currency:"EUR",value:t.data.total,transaction_id:t.data.id}]}function q(){const t=y("product view");return{event:"product_view",product_id:t.data.id,product_name:t.data.name,product_category:t.data.category,value:t.data.price,currency:"EUR"}}o(S,{adsConversion:()=>D,ga4AddToCart:()=>P,ga4Purchase:()=>U,gtmEvent:()=>q});var z={};o(z,{adsConversion:()=>$,combinedPurchase:()=>V,config:()=>G,ga4AddToCart:()=>T,ga4Purchase:()=>N,gtmProductView:()=>H});var N={name:"purchase",settings:{ga4:{include:["data","context"]}},data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:t=>p(t)&&"product"===t.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},T={name:"add_to_cart",settings:{ga4:{include:["data"]}},data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},$={name:"CONVERSION_LABEL",settings:{ads:{}},data:{map:{value:"data.total",currency:{value:"EUR",key:"data.currency"},transaction_id:"data.id"}}},H={name:"product_view",settings:{gtm:{}},data:{map:{product_id:"data.id",product_name:"data.name",product_category:"data.category",value:"data.price",currency:{value:"EUR",key:"data.currency"}}}},V={name:"purchase",settings:{ga4:{include:["data"]},ads:{},gtm:{}},data:{map:{transaction_id:"data.id",value:"data.total",currency:{value:"EUR",key:"data.currency"},items:{loop:["nested",{condition:t=>p(t)&&"product"===t.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{value:1,key:"data.quantity"}}}]}}}},G={order:{complete:V},product:{add:T,view:H}},B=!1;function M(){B=!1}var W,F={marketing:["ad_storage","ad_user_data","ad_personalization"],functional:["analytics_storage"]},J={type:"google-gtag",config:{settings:{}},init({config:t,env:e}){const{settings:n={},loadScript:a}=t,{ga4:o,ads:r,gtm:i}=n;return(null==o?void 0:o.measurementId)&&function(t,e,n){const{window:a,document:o}=E(n),{measurementId:r,transport_url:i,server_container_url:d,pageview:u}=t;if(!r)return;e&&c(r,void 0,o),s(a);const l={};i&&(l.transport_url=i),d&&(l.server_container_url=d),!1===u&&(l.send_page_view=!1);const g=a.gtag;g("js",new Date),g("config",r,l)}(o,a,e),(null==r?void 0:r.conversionId)&&function(t,e,n){const{window:a,document:o}=E(n),{conversionId:r}=t;if(!r)return;t.currency||(t.currency="EUR"),e&&c(r,void 0,o),s(a);const i=a.gtag;i("js",new Date),i("config",r)}(r,a,e),(null==i?void 0:i.containerId)&&O(i,a,e),!!((null==o?void 0:o.measurementId)||(null==r?void 0:r.conversionId)||(null==i?void 0:i.containerId))&&t},async push(t,{config:e,mapping:n={},data:a,env:o,collector:r}){const{settings:i={}}=e,{ga4:c,ads:s,gtm:d}=i,u=n.settings||{},l=await k(t,a,e,c,r),g=await k(t,a,e,s,r),m=await k(t,a,e,d,r);(null==c?void 0:c.measurementId)&&x(t,c,u.ga4,l,o),(null==s?void 0:s.conversionId)&&n.name&&function(t,e,n={},a,o,r){const{conversionId:i,currency:c}=e,s=p(a)?a:{},d=n.label||o;if(!d)return;const u={send_to:`${i}/${d}`,currency:c||"EUR",...s},{window:l}=E(r);(0,l.gtag)("event","conversion",u)}(0,s,u.ads,g,n.name,o),(null==d?void 0:d.containerId)&&function(t,e,n={},a,o){const{window:r}=E(o),i={event:t.name};r.dataLayer.push({...i,...p(a)?a:t})}(t,0,u.gtm,m,o)},on(t,e){var n;if("consent"!==t||!e)return;const a=e,o=(null==(n=this.config)?void 0:n.settings)||{},{como:r=!0}=o;if(!r)return;const{window:i}=E(this.env),c=s(i);if(!c)return;const d=!0===r?F:r;if(!B){const t=new Set;if(Object.values(d).forEach(e=>{(Array.isArray(e)?e:[e]).forEach(e=>t.add(e))}),t.size>0){const e={};t.forEach(t=>{e[t]="denied"}),c("consent","default",e)}B=!0}const u={};Object.entries(a).forEach(([t,e])=>{const n=d[t];if(!n)return;const a=Array.isArray(n)?n:[n],o=e?"granted":"denied";a.forEach(t=>{u[t]=o})}),0!==Object.keys(u).length&&c("consent","update",u)}},K=J;return W=r,((o,r,i,c)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of n(r))a.call(o,s)||s===i||t(o,s,{get:()=>r[s],enumerable:!(c=e(r,s))||c.enumerable});return o})(t({},"__esModule",{value:!0}),W)})();
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Mapping as Mapping$1 } from '@walkeros/core';
1
+ import { Destination as Destination$1, Mapping as Mapping$1 } from '@walkeros/core';
2
2
  import { DestinationWeb } from '@walkeros/web-core';
3
3
 
4
4
  declare global {
@@ -7,14 +7,40 @@ declare global {
7
7
  [key: string]: unknown;
8
8
  }
9
9
  }
10
- type Destination = DestinationWeb.Destination<Settings, Mapping>;
11
- type Config = DestinationWeb.Config<Settings, Mapping>;
10
+ interface Env extends DestinationWeb.Env {
11
+ window: {
12
+ gtag: Gtag.Gtag;
13
+ dataLayer: unknown[];
14
+ };
15
+ document: {
16
+ createElement: (tagName: string) => {
17
+ src: string;
18
+ async?: boolean;
19
+ setAttribute: (name: string, value: string) => void;
20
+ removeAttribute: (name: string) => void;
21
+ };
22
+ head: {
23
+ appendChild: (node: unknown) => void;
24
+ };
25
+ };
26
+ }
27
+ type ConsentMode = false | true | ConsentMapping;
28
+ interface ConsentMapping {
29
+ [walkerOSConsentGroup: string]: string | string[];
30
+ }
31
+ type Types = Destination$1.Types<Settings, Mapping, Env>;
32
+ type Destination = DestinationWeb.Destination<Types>;
33
+ type Config = DestinationWeb.Config<Types>;
34
+ interface BaseSettings {
35
+ data?: Mapping$1.Value | Mapping$1.Values;
36
+ }
12
37
  interface Settings {
38
+ como?: ConsentMode;
13
39
  ga4?: GA4Settings;
14
40
  ads?: AdsSettings;
15
41
  gtm?: GTMSettings;
16
42
  }
17
- interface GA4Settings {
43
+ interface GA4Settings extends BaseSettings {
18
44
  measurementId: string;
19
45
  debug?: boolean;
20
46
  include?: Include;
@@ -23,14 +49,14 @@ interface GA4Settings {
23
49
  snakeCase?: boolean;
24
50
  transport_url?: string;
25
51
  }
26
- interface AdsSettings {
52
+ interface AdsSettings extends BaseSettings {
27
53
  conversionId: string;
28
54
  currency?: string;
29
55
  }
30
56
  interface AdsMapping {
31
57
  label?: string;
32
58
  }
33
- interface GTMSettings {
59
+ interface GTMSettings extends BaseSettings {
34
60
  containerId: string;
35
61
  dataLayer?: string;
36
62
  domain?: string;
@@ -53,8 +79,12 @@ type Parameters = Gtag.ControlParams & Gtag.EventParams & Gtag.CustomParams;
53
79
 
54
80
  type index$1_AdsMapping = AdsMapping;
55
81
  type index$1_AdsSettings = AdsSettings;
82
+ type index$1_BaseSettings = BaseSettings;
56
83
  type index$1_Config = Config;
84
+ type index$1_ConsentMapping = ConsentMapping;
85
+ type index$1_ConsentMode = ConsentMode;
57
86
  type index$1_Destination = Destination;
87
+ type index$1_Env = Env;
58
88
  type index$1_GA4Mapping = GA4Mapping;
59
89
  type index$1_GA4Settings = GA4Settings;
60
90
  type index$1_GTMMapping = GTMMapping;
@@ -66,8 +96,20 @@ type index$1_Parameters = Parameters;
66
96
  type index$1_Rule = Rule;
67
97
  type index$1_Rules = Rules;
68
98
  type index$1_Settings = Settings;
99
+ type index$1_Types = Types;
69
100
  declare namespace index$1 {
70
- export type { index$1_AdsMapping as AdsMapping, index$1_AdsSettings as AdsSettings, index$1_Config as Config, index$1_Destination as Destination, index$1_GA4Mapping as GA4Mapping, index$1_GA4Settings as GA4Settings, index$1_GTMMapping as GTMMapping, index$1_GTMSettings as GTMSettings, index$1_Include as Include, index$1_Mapping as Mapping, index$1_Param as Param, index$1_Parameters as Parameters, index$1_Rule as Rule, index$1_Rules as Rules, index$1_Settings as Settings };
101
+ export type { index$1_AdsMapping as AdsMapping, index$1_AdsSettings as AdsSettings, index$1_BaseSettings as BaseSettings, index$1_Config as Config, index$1_ConsentMapping as ConsentMapping, index$1_ConsentMode as ConsentMode, index$1_Destination as Destination, index$1_Env as Env, index$1_GA4Mapping as GA4Mapping, index$1_GA4Settings as GA4Settings, index$1_GTMMapping as GTMMapping, index$1_GTMSettings as GTMSettings, index$1_Include as Include, index$1_Mapping as Mapping, index$1_Param as Param, index$1_Parameters as Parameters, index$1_Rule as Rule, index$1_Rules as Rules, index$1_Settings as Settings, index$1_Types as Types };
102
+ }
103
+
104
+ declare const init: Env | undefined;
105
+ declare const push: Env;
106
+ declare const simulation: string[];
107
+
108
+ declare const env_init: typeof init;
109
+ declare const env_push: typeof push;
110
+ declare const env_simulation: typeof simulation;
111
+ declare namespace env {
112
+ export { env_init as init, env_push as push, env_simulation as simulation };
71
113
  }
72
114
 
73
115
  declare function ga4Purchase$1(): unknown[];
@@ -105,12 +147,14 @@ declare namespace mapping {
105
147
  export { mapping_adsConversion as adsConversion, mapping_combinedPurchase as combinedPurchase, mapping_config as config, mapping_ga4AddToCart as ga4AddToCart, mapping_ga4Purchase as ga4Purchase, mapping_gtmProductView as gtmProductView };
106
148
  }
107
149
 
150
+ declare const index_env: typeof env;
108
151
  declare const index_events: typeof events;
109
152
  declare const index_mapping: typeof mapping;
110
153
  declare namespace index {
111
- export { index_events as events, index_mapping as mapping };
154
+ export { index_env as env, index_events as events, index_mapping as mapping };
112
155
  }
113
156
 
157
+ declare function resetConsentState(): void;
114
158
  declare const destinationGtag: Destination;
115
159
 
116
- export { index$1 as DestinationGtag, destinationGtag as default, destinationGtag, index as examples };
160
+ export { index$1 as DestinationGtag, destinationGtag as default, destinationGtag, index as examples, resetConsentState };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Mapping as Mapping$1 } from '@walkeros/core';
1
+ import { Destination as Destination$1, Mapping as Mapping$1 } from '@walkeros/core';
2
2
  import { DestinationWeb } from '@walkeros/web-core';
3
3
 
4
4
  declare global {
@@ -7,14 +7,40 @@ declare global {
7
7
  [key: string]: unknown;
8
8
  }
9
9
  }
10
- type Destination = DestinationWeb.Destination<Settings, Mapping>;
11
- type Config = DestinationWeb.Config<Settings, Mapping>;
10
+ interface Env extends DestinationWeb.Env {
11
+ window: {
12
+ gtag: Gtag.Gtag;
13
+ dataLayer: unknown[];
14
+ };
15
+ document: {
16
+ createElement: (tagName: string) => {
17
+ src: string;
18
+ async?: boolean;
19
+ setAttribute: (name: string, value: string) => void;
20
+ removeAttribute: (name: string) => void;
21
+ };
22
+ head: {
23
+ appendChild: (node: unknown) => void;
24
+ };
25
+ };
26
+ }
27
+ type ConsentMode = false | true | ConsentMapping;
28
+ interface ConsentMapping {
29
+ [walkerOSConsentGroup: string]: string | string[];
30
+ }
31
+ type Types = Destination$1.Types<Settings, Mapping, Env>;
32
+ type Destination = DestinationWeb.Destination<Types>;
33
+ type Config = DestinationWeb.Config<Types>;
34
+ interface BaseSettings {
35
+ data?: Mapping$1.Value | Mapping$1.Values;
36
+ }
12
37
  interface Settings {
38
+ como?: ConsentMode;
13
39
  ga4?: GA4Settings;
14
40
  ads?: AdsSettings;
15
41
  gtm?: GTMSettings;
16
42
  }
17
- interface GA4Settings {
43
+ interface GA4Settings extends BaseSettings {
18
44
  measurementId: string;
19
45
  debug?: boolean;
20
46
  include?: Include;
@@ -23,14 +49,14 @@ interface GA4Settings {
23
49
  snakeCase?: boolean;
24
50
  transport_url?: string;
25
51
  }
26
- interface AdsSettings {
52
+ interface AdsSettings extends BaseSettings {
27
53
  conversionId: string;
28
54
  currency?: string;
29
55
  }
30
56
  interface AdsMapping {
31
57
  label?: string;
32
58
  }
33
- interface GTMSettings {
59
+ interface GTMSettings extends BaseSettings {
34
60
  containerId: string;
35
61
  dataLayer?: string;
36
62
  domain?: string;
@@ -53,8 +79,12 @@ type Parameters = Gtag.ControlParams & Gtag.EventParams & Gtag.CustomParams;
53
79
 
54
80
  type index$1_AdsMapping = AdsMapping;
55
81
  type index$1_AdsSettings = AdsSettings;
82
+ type index$1_BaseSettings = BaseSettings;
56
83
  type index$1_Config = Config;
84
+ type index$1_ConsentMapping = ConsentMapping;
85
+ type index$1_ConsentMode = ConsentMode;
57
86
  type index$1_Destination = Destination;
87
+ type index$1_Env = Env;
58
88
  type index$1_GA4Mapping = GA4Mapping;
59
89
  type index$1_GA4Settings = GA4Settings;
60
90
  type index$1_GTMMapping = GTMMapping;
@@ -66,8 +96,20 @@ type index$1_Parameters = Parameters;
66
96
  type index$1_Rule = Rule;
67
97
  type index$1_Rules = Rules;
68
98
  type index$1_Settings = Settings;
99
+ type index$1_Types = Types;
69
100
  declare namespace index$1 {
70
- export type { index$1_AdsMapping as AdsMapping, index$1_AdsSettings as AdsSettings, index$1_Config as Config, index$1_Destination as Destination, index$1_GA4Mapping as GA4Mapping, index$1_GA4Settings as GA4Settings, index$1_GTMMapping as GTMMapping, index$1_GTMSettings as GTMSettings, index$1_Include as Include, index$1_Mapping as Mapping, index$1_Param as Param, index$1_Parameters as Parameters, index$1_Rule as Rule, index$1_Rules as Rules, index$1_Settings as Settings };
101
+ export type { index$1_AdsMapping as AdsMapping, index$1_AdsSettings as AdsSettings, index$1_BaseSettings as BaseSettings, index$1_Config as Config, index$1_ConsentMapping as ConsentMapping, index$1_ConsentMode as ConsentMode, index$1_Destination as Destination, index$1_Env as Env, index$1_GA4Mapping as GA4Mapping, index$1_GA4Settings as GA4Settings, index$1_GTMMapping as GTMMapping, index$1_GTMSettings as GTMSettings, index$1_Include as Include, index$1_Mapping as Mapping, index$1_Param as Param, index$1_Parameters as Parameters, index$1_Rule as Rule, index$1_Rules as Rules, index$1_Settings as Settings, index$1_Types as Types };
102
+ }
103
+
104
+ declare const init: Env | undefined;
105
+ declare const push: Env;
106
+ declare const simulation: string[];
107
+
108
+ declare const env_init: typeof init;
109
+ declare const env_push: typeof push;
110
+ declare const env_simulation: typeof simulation;
111
+ declare namespace env {
112
+ export { env_init as init, env_push as push, env_simulation as simulation };
71
113
  }
72
114
 
73
115
  declare function ga4Purchase$1(): unknown[];
@@ -105,12 +147,14 @@ declare namespace mapping {
105
147
  export { mapping_adsConversion as adsConversion, mapping_combinedPurchase as combinedPurchase, mapping_config as config, mapping_ga4AddToCart as ga4AddToCart, mapping_ga4Purchase as ga4Purchase, mapping_gtmProductView as gtmProductView };
106
148
  }
107
149
 
150
+ declare const index_env: typeof env;
108
151
  declare const index_events: typeof events;
109
152
  declare const index_mapping: typeof mapping;
110
153
  declare namespace index {
111
- export { index_events as events, index_mapping as mapping };
154
+ export { index_env as env, index_events as events, index_mapping as mapping };
112
155
  }
113
156
 
157
+ declare function resetConsentState(): void;
114
158
  declare const destinationGtag: Destination;
115
159
 
116
- export { index$1 as DestinationGtag, destinationGtag as default, destinationGtag, index as examples };
160
+ export { index$1 as DestinationGtag, destinationGtag as default, destinationGtag, index as examples, resetConsentState };
package/dist/index.es5.js CHANGED
@@ -1 +1 @@
1
- "use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o=[],i=!0,c=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){c=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(c)throw a}}return o}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){_define_property(e,t,r[t])})}return e}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _object_spread_props(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_array_like_to_array(e,t):void 0}}var Destination=function(){var e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"https://www.googletagmanager.com/gtag/js?id=",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:globalThis.document;if(!h.has(e)){var n=r.createElement("script");n.src=t+e,r.head.appendChild(n),h.add(e)}},t=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:globalThis.window;e.dataLayer=e.dataLayer||[],e.gtag||(e.gtag=function(){e.dataLayer.push(arguments)})},r=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!function(e){return Array.isArray(e)}(e)&&"[object Object]"===Object.prototype.toString.call(e)},n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.timestamp||(new Date).setHours(0,13,37,0),r=e.group||"gr0up",n=e.count||1,a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r=_object_spread({},O,r);var n=Object.entries(t).reduce(function(t,n){var a=_sliced_to_array(n,2),o=a[0],i=a[1],c=e[o];return r.merge&&Array.isArray(c)&&Array.isArray(i)?t[o]=i.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(c)):(r.extend||o in e)&&(t[o]=i),t},{});return r.shallow?_object_spread({},e,n):(Object.assign(e,n),e)}({name:"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:[{entity:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:"".concat(t,"-").concat(r,"-").concat(n),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,group:r,count:n,version:{source:k,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.name){var o,i=_sliced_to_array(null!==(o=e.name.split(" "))&&void 0!==o?o:[],2),c=i[0],d=i[1];c&&d&&(a.entity=c,a.action=d)}return a},a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"entity action",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.timestamp||(new Date).setHours(0,13,37,0),a={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return n(_object_spread_props(_object_spread({},{"cart view":{data:{currency:"EUR",value:2*a.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:_object_spread_props(_object_spread({},a.data),{quantity:2}),context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:a.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[_object_spread_props(_object_spread({entity:"product"},a),{context:{shopping:["checkout",0]},nested:[]}),_object_spread_props(_object_spread({entity:"product"},o),{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:[_object_spread_props(_object_spread({entity:"product"},a),{context:{shopping:["complete",0]},nested:[]}),_object_spread_props(_object_spread({entity:"product"},o),{context:{shopping:["complete",0]},nested:[]}),{entity:"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":_object_spread_props(_object_spread({},a),{context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"}),"product view":_object_spread_props(_object_spread({},a),{context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"}),"product visible":{data:_object_spread_props(_object_spread({},a.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:r,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),{name:e}))},o=function(e){var t={window:globalThis.window,document:globalThis.document};return e?_object_spread({},t,e):t},i=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,i=o(arguments.length>4?arguments[4]:void 0).window;if(t.measurementId){var c=r(a)?a:{},d=function(e,t){var r={};return t.includes("all")&&(t=["context","data","event","globals","source","user","version"]),t.forEach(function(t){var n=e[t]||{};"event"==t&&(n={id:e.id,timing:e.timing,trigger:e.trigger,entity:e.entity,action:e.action,group:e.group,count:e.count}),Object.entries(n).forEach(function(e){var n=_sliced_to_array(e,2),a=n[0],o=n[1];"context"==t&&(o=o[0]),r["".concat(t,"_").concat(a)]=o})}),r}(e,n.include||t.include||["data"]),s=_object_spread({},d,c),u=e.name;!1!==t.snakeCase&&(u=function(e){return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?e:e.replace(/\s+/g,"_").toLowerCase()}(u)),s.send_to=t.measurementId,t.debug&&(s.debug_mode=!0),(0,i.gtag)("event",u,s)}},c=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:globalThis.document,a=r!=x?"&l="+r:"",o=n.createElement("script");o.src=t+e+a,n.head.appendChild(o)},d=function(){var e=a("order complete");return["event","purchase",{transaction_id:e.data.id,value:e.data.total,tax:e.data.taxes,shipping:e.data.shipping,currency:"EUR",items:e.nested.filter(function(e){return"product"===e.entity}).map(function(e){return{item_id:e.data.id,item_name:e.data.name,quantity:1}}),send_to:"G-XXXXXX-1"}]},s=function(){var e=a("product add");return["event","add_to_cart",{currency:"EUR",value:e.data.price,items:[{item_id:e.data.id,item_variant:e.data.color,quantity:1}],send_to:"G-XXXXXX-1"}]},u=function(){var e=a("order complete");return["event","conversion",{send_to:"AW-XXXXXXXXX/CONVERSION_LABEL",currency:"EUR",value:e.data.total,transaction_id:e.data.id}]},l=function(){var e=a("product view");return{event:"product_view",product_id:e.data.id,product_name:e.data.name,product_category:e.data.category,value:e.data.price,currency:"EUR"}},p=Object.defineProperty,g=Object.getOwnPropertyDescriptor,_=Object.getOwnPropertyNames,m=Object.prototype.hasOwnProperty,y=function(e,t){for(var r in t)p(e,r,{get:t[r],enumerable:!0})},v={};y(v,{DestinationGtag:function(){return E},default:function(){return z},destinationGtag:function(){return q},examples:function(){return A}});var f,b,h=new Set,w=Object.getOwnPropertyNames,j=(f={"package.json":function(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.1.1",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 b||(0,f[w(f)[0]])((b={exports:{}}).exports,b),b.exports}),O={merge:!0,shallow:!0,extend:!0},k=j().version,x="dataLayer",S="https://www.googletagmanager.com/gtm.js?id=",E={},A={};y(A,{events:function(){return I},mapping:function(){return P}});var I={};y(I,{adsConversion:function(){return u},ga4AddToCart:function(){return s},ga4Purchase:function(){return d},gtmEvent:function(){return l}});var P={};y(P,{adsConversion:function(){return D},combinedPurchase:function(){return L},config:function(){return T},ga4AddToCart:function(){return C},ga4Purchase:function(){return R},gtmProductView:function(){return U}});var X,R={name:"purchase",settings:{ga4:{include:["data","context"]}},data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:function(e){return r(e)&&"product"===e.entity},map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},C={name:"add_to_cart",settings:{ga4:{include:["data"]}},data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},D={name:"CONVERSION_LABEL",settings:{ads:{}},data:{map:{value:"data.total",currency:{value:"EUR",key:"data.currency"},transaction_id:"data.id"}}},U={name:"product_view",settings:{gtm:{}},data:{map:{product_id:"data.id",product_name:"data.name",product_category:"data.category",value:"data.price",currency:{value:"EUR",key:"data.currency"}}}},L={name:"purchase",settings:{ga4:{include:["data"]},ads:{},gtm:{}},data:{map:{transaction_id:"data.id",value:"data.total",currency:{value:"EUR",key:"data.currency"},items:{loop:["nested",{condition:function(e){return r(e)&&"product"===e.entity},map:{item_id:"data.id",item_name:"data.name",quantity:{value:1,key:"data.quantity"}}}]}}}},T={order:{complete:L},product:{add:C,view:U}},q={type:"google-gtag",config:{settings:{}},env:{window:{gtag:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r]},dataLayer:[]},document:{createElement:function(e){return{src:"",async:!1,setAttribute:function(){},removeAttribute:function(){}}},head:{appendChild:function(){}}}},init:function(r){var n=r.config,a=r.env,i=n.settings,d=void 0===i?{}:i,s=n.loadScript,u=d.ga4,l=d.ads,p=d.gtm;return(null==u?void 0:u.measurementId)&&function(r,n,a){var i=o(a),c=i.window,d=i.document,s=r.measurementId,u=r.transport_url,l=r.server_container_url,p=r.pageview;if(s){n&&e(s,void 0,d),t(c);var g={};u&&(g.transport_url=u),l&&(g.server_container_url=l),!1===p&&(g.send_page_view=!1);var _=c.gtag;_("js",new Date),_("config",s,g)}}(u,s,a),(null==l?void 0:l.conversionId)&&function(r,n,a){var i=o(a),c=i.window,d=i.document,s=r.conversionId;if(s){r.currency||(r.currency="EUR"),n&&e(s,void 0,d),t(c);var u=c.gtag;u("js",new Date),u("config",s)}}(l,s,a),(null==p?void 0:p.containerId)&&function(e,t,r){var n=o(r),a=n.window,i=n.document,d=e.containerId,s=e.dataLayer,u=e.domain,l=s||x;l===x?a.dataLayer=a.dataLayer||[]:a[l]=a[l]||[],a[l].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t&&d&&c(d,u||S,l,i)}(p,s,a),!!((null==u?void 0:u.measurementId)||(null==l?void 0:l.conversionId)||(null==p?void 0:p.containerId))&&n},push:function(e,t){var n=t.config,a=t.mapping,c=void 0===a?{}:a,d=t.data,s=t.env,u=n.settings,l=void 0===u?{}:u,p=l.ga4,g=l.ads,_=l.gtm,m=c.settings||{};(null==p?void 0:p.measurementId)&&i(e,p,m.ga4,d,s),(null==g?void 0:g.conversionId)&&c.name&&function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,c=arguments.length>5?arguments[5]:void 0,d=t.conversionId,s=t.currency,u=r(a)?a:{},l=n.label||i;if(l){var p=_object_spread({send_to:"".concat(d,"/").concat(l),currency:s||"EUR"},u);(0,o(c).window.gtag)("event","conversion",p)}}(e,g,m.ads,d,c.name,s),(null==_?void 0:_.containerId)&&function(e,t){var n=arguments.length>3?arguments[3]:void 0,a=o(arguments.length>4?arguments[4]:void 0).window,i={event:e.name};a.dataLayer.push(_object_spread({},i,r(n)?n:e))}(e,_,m.gtm,d,s)}},z=q;return X=v,function(e,t,r,n){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var a=!0,o=!1,i=void 0;try{for(var c,d=function(){var a=c.value;m.call(e,a)||a===r||p(e,a,{get:function(){return t[a]},enumerable:!(n=g(t,a))||n.enumerable})},s=_(t)[Symbol.iterator]();!(a=(c=s.next()).done);a=!0)d()}catch(e){o=!0,i=e}finally{try{a||null==s.return||s.return()}finally{if(o)throw i}}}return e}(p({},"__esModule",{value:!0}),X)}();
1
+ "use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,t,n,r,a,o,i){try{var c=e[o](i),u=c.value}catch(e){return void n(e)}c.done?t(u):Promise.resolve(u).then(r,a)}function _async_to_generator(e){return function(){var t=this,n=arguments;return new Promise(function(r,a){var o=e.apply(t,n);function i(e){asyncGeneratorStep(o,r,a,i,c,"next",e)}function c(e){asyncGeneratorStep(o,r,a,i,c,"throw",e)}i(void 0)})}}function _define_property(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _instanceof(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,c=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){c=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(c)throw a}}return o}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){_define_property(e,t,n[t])})}return e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _object_spread_props(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(e,t):void 0}}function _ts_generator(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=c(0),i.throw=c(1),i.return=c(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==c[0]&&2!==c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var Destination=function(){var e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"https://www.googletagmanager.com/gtag/js?id=",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:globalThis.document;if(!S.has(e)){var r=n.createElement("script");r.src=t+e,n.head.appendChild(r),S.add(e)}},t=function(e){var t=e;return t.dataLayer=t.dataLayer||[],t.gtag||(t.gtag=function(){t.dataLayer.push(arguments)}),t.gtag},n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n=_object_spread({},x,n);var r=Object.entries(t).reduce(function(t,r){var a=_sliced_to_array(r,2),o=a[0],i=a[1],c=e[o];return n.merge&&Array.isArray(c)&&Array.isArray(i)?t[o]=i.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(c)):(n.extend||o in e)&&(t[o]=i),t},{});return n.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},r=function(e){return Array.isArray(e)},a=function(e){return void 0!==e},o=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!r(e)&&"[object Object]"===Object.prototype.toString.call(e)},i=function(e){return"string"==typeof e},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"entity action",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.timestamp||(new Date).setHours(0,13,37,0),a={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.timestamp||(new Date).setHours(0,13,37,0),r=e.group||"gr0up",a=e.count||1,o=n({name:"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:[{entity:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:"".concat(t,"-").concat(r,"-").concat(a),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,group:r,count:a,version:{source:"0.2.0",tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.name){var i,c=_sliced_to_array(null!==(i=e.name.split(" "))&&void 0!==i?i:[],2),u=c[0],s=c[1];u&&s&&(o.entity=u,o.action=s)}return o}(_object_spread_props(_object_spread({},{"cart view":{data:{currency:"EUR",value:2*a.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:_object_spread_props(_object_spread({},a.data),{quantity:2}),context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:a.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[_object_spread_props(_object_spread({entity:"product"},a),{context:{shopping:["checkout",0]},nested:[]}),_object_spread_props(_object_spread({entity:"product"},o),{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:[_object_spread_props(_object_spread({entity:"product"},a),{context:{shopping:["complete",0]},nested:[]}),_object_spread_props(_object_spread({entity:"product"},o),{context:{shopping:["complete",0]},nested:[]}),{entity:"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":_object_spread_props(_object_spread({},a),{context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"}),"product view":_object_spread_props(_object_spread({},a),{context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"}),"product visible":{data:_object_spread_props(_object_spread({},a.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:r,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),{name:e}))},u=function(e){return I(e)?e:void 0},s=function(e,t,n){return function(){for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(a))];case 1:case 3:return[2,o.sent()];case 2:return r=o.sent(),t?[4,t(r)]:[2];case 4:return[4,null==n?void 0:n()];case 5:return o.sent(),[7];case 6:return[2]}})})()}},d=function(e){return _async_to_generator(function(e){var t,n,i,c,u,d,l,p,_,f,g,y,v,m=arguments;return _ts_generator(this,function(b){switch(b.label){case 0:if(t=m.length>1&&void 0!==m[1]?m[1]:{},n=m.length>2&&void 0!==m[2]?m[2]:{},!a(e))return[2];c=o(e)&&e.consent||n.consent||(null===(i=n.collector)||void 0===i?void 0:i.consent),u=r(t)?t:[t],d=!0,l=!1,p=void 0,b.label=1;case 1:b.trys.push([1,6,7,8]),_=u[Symbol.iterator](),b.label=2;case 2:return(d=(f=_.next()).done)?[3,5]:(g=f.value,[4,s(P)(e,g,_object_spread_props(_object_spread({},n),{consent:c}))]);case 3:if(y=b.sent(),a(y))return[2,y];b.label=4;case 4:return d=!0,[3,2];case 5:return[3,8];case 6:return v=b.sent(),l=!0,p=v,[3,8];case 7:try{d||null==_.return||_.return()}finally{if(l)throw p}return[7];case 8:return[2]}})}).apply(this,arguments)},l=function(e){return _object_spread({window:"undefined"!=typeof window?window:globalThis.window,document:"undefined"!=typeof document?document:globalThis.document},e)},p=function(e,t,r,a,i){return _async_to_generator(function(){var c,u,s,l,p,_,f;return _ts_generator(this,function(g){switch(g.label){case 0:return c=o(t)?t:{},r.data?[4,d(e,r.data,{collector:i})]:[3,2];case 1:return s=g.sent(),[3,3];case 2:s={},g.label=3;case 3:return u=s,(null==a?void 0:a.data)?[4,d(e,a.data,{collector:i})]:[3,5];case 4:return p=g.sent(),[3,6];case 5:p={},g.label=6;case 6:return l=p,_=o(u)?u:{},f=o(l)?l:{},[2,n(n(c,_),f)]}})})()},_=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,a=l(arguments.length>4?arguments[4]:void 0).window;if(t.measurementId){var i=o(r)?r:{},c=function(e,t){var n={};return t.includes("all")&&(t=["context","data","event","globals","source","user","version"]),t.forEach(function(t){var r=e[t]||{};"event"==t&&(r={id:e.id,timing:e.timing,trigger:e.trigger,entity:e.entity,action:e.action,group:e.group,count:e.count}),Object.entries(r).forEach(function(e){var r=_sliced_to_array(e,2),a=r[0],o=r[1];"context"==t&&(o=o[0]),n["".concat(t,"_").concat(a)]=o})}),n}(e,n.include||t.include||["data"]),u=_object_spread({},c,i),s=e.name;!1!==t.snakeCase&&(s=function(e){return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?e:e.replace(/\s+/g,"_").toLowerCase()}(s)),u.send_to=t.measurementId,t.debug&&(u.debug_mode=!0),(0,a.gtag)("event",s,u)}},f=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:globalThis.document,a=n!=X?"&l="+n:"",o=r.createElement("script");o.src=t+e+a,r.head.appendChild(o)},g=function(){var e=c("order complete");return["event","purchase",{transaction_id:e.data.id,value:e.data.total,tax:e.data.taxes,shipping:e.data.shipping,currency:"EUR",items:e.nested.filter(function(e){return"product"===e.entity}).map(function(e){return{item_id:e.data.id,item_name:e.data.name,quantity:1}}),send_to:"G-XXXXXX-1"}]},y=function(){var e=c("product add");return["event","add_to_cart",{currency:"EUR",value:e.data.price,items:[{item_id:e.data.id,item_variant:e.data.color,quantity:1}],send_to:"G-XXXXXX-1"}]},v=function(){var e=c("order complete");return["event","conversion",{send_to:"AW-XXXXXXXXX/CONVERSION_LABEL",currency:"EUR",value:e.data.total,transaction_id:e.data.id}]},m=function(){var e=c("product view");return{event:"product_view",product_id:e.data.id,product_name:e.data.name,product_category:e.data.category,value:e.data.price,currency:"EUR"}},b=function(){$=!1},h=Object.defineProperty,w=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyNames,O=Object.prototype.hasOwnProperty,k=function(e,t){for(var n in t)h(e,n,{get:t[n],enumerable:!0})},E={};k(E,{DestinationGtag:function(){return R},default:function(){return Q},destinationGtag:function(){return J},examples:function(){return D},resetConsentState:function(){return b}});var S=new Set,x={merge:!0,shallow:!0,extend:!0};function A(e){for(var t=arguments.length>2?arguments[2]:void 0,n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),o=e,i=0;i<n.length;i++){var c=n[i];if("*"===c&&r(o)){var u=n.slice(i+1).join("."),s=[],d=!0,l=!1,p=void 0;try{for(var _,f=o[Symbol.iterator]();!(d=(_=f.next()).done);d=!0){var g=A(_.value,u,t);s.push(g)}}catch(e){l=!0,p=e}finally{try{d||null==f.return||f.return()}finally{if(l)throw p}}return s}if(!(o=_instanceof(o,Object)?o[c]:void 0))break}return a(o)?o:t}function I(e){return function(e){return"boolean"==typeof e}(e)||i(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!a(e)||r(e)&&e.every(I)||o(e)&&Object.values(e).every(I)}function P(e,t){return _async_to_generator(function(e,t){var n,o,c,l=arguments;return _ts_generator(this,function(p){return o=(n=l.length>2&&void 0!==l[2]?l[2]:{}).collector,c=n.consent,[2,(r(t)?t:[t]).reduce(function(t,l){return _async_to_generator(function(){var p,_,f,g,y,v,m,b,h,w,j,O,k,E,S,x,I,X,C,R,D;return _ts_generator(this,function(L){switch(L.label){case 0:return[4,t];case 1:return(p=L.sent())?[2,p]:(_=i(l)?{key:l}:l,Object.keys(_).length?(f=_.condition,g=_.consent,y=_.fn,v=_.key,m=_.loop,b=_.map,h=_.set,w=_.validate,j=_.value,(O=f)?[4,s(f)(e,l,o)]:[3,3]):[2]);case 2:O=!L.sent(),L.label=3;case 3:return O?[2]:g&&!function(e){var t=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),n={},r=void 0===e;return Object.keys(t).forEach(function(a){t[a]&&(n[a]=!0,e&&e[a]&&(r=!0))}),!!r&&n}(g,c)?[2,j]:(k=a(j)?j:e,y?[4,s(y)(e,l,n)]:[3,5]);case 4:k=L.sent(),L.label=5;case 5:return v&&(k=A(e,v,j)),m?(E=_sliced_to_array(m,2),S=E[0],x=E[1],"this"!==S?[3,6]:(X=[e],[3,8])):[3,11];case 6:return[4,d(e,S,n)];case 7:X=L.sent(),L.label=8;case 8:return r(I=X)?[4,Promise.all(I.map(function(e){return d(e,x,n)}))]:[3,10];case 9:k=L.sent().filter(a),L.label=10;case 10:return[3,17];case 11:return b?[4,Object.entries(b).reduce(function(t,r){var o=_sliced_to_array(r,2),i=o[0],c=o[1];return _async_to_generator(function(){var r,o;return _ts_generator(this,function(u){switch(u.label){case 0:return[4,t];case 1:return r=u.sent(),[4,d(e,c,n)];case 2:return o=u.sent(),[2,(a(o)&&(r[i]=o),r)]}})})()},Promise.resolve({}))]:[3,13];case 12:return k=L.sent(),[3,16];case 13:return(C=h)?[4,Promise.all(h.map(function(t){return P(e,t,n)}))]:[3,15];case 14:C=k=L.sent(),L.label=15;case 15:L.label=16;case 16:L.label=17;case 17:return(R=w)?[4,s(w)(k)]:[3,19];case 18:R=!L.sent(),L.label=19;case 19:return R&&(k=void 0),D=u(k),[2,a(D)?D:u(j)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}var X="dataLayer",C="https://www.googletagmanager.com/gtm.js?id=",R={},D={};k(D,{env:function(){return L},events:function(){return z},mapping:function(){return N}});var L={};k(L,{init:function(){return U},push:function(){return T},simulation:function(){return q}});var U={window:{gtag:void 0,dataLayer:[]},document:{createElement:function(){return{src:"",setAttribute:function(){},removeAttribute:function(){}}},head:{appendChild:function(){}}}},T={window:{gtag:Object.assign(function(){},{}),dataLayer:[]},document:{createElement:function(){return{src:"",setAttribute:function(){},removeAttribute:function(){}}},head:{appendChild:function(){}}}},q=["call:window.gtag"],z={};k(z,{adsConversion:function(){return v},ga4AddToCart:function(){return y},ga4Purchase:function(){return g},gtmEvent:function(){return m}});var N={};k(N,{adsConversion:function(){return B},combinedPurchase:function(){return K},config:function(){return W},ga4AddToCart:function(){return V},ga4Purchase:function(){return H},gtmProductView:function(){return M}});var G,H={name:"purchase",settings:{ga4:{include:["data","context"]}},data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:function(e){return o(e)&&"product"===e.entity},map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},V={name:"add_to_cart",settings:{ga4:{include:["data"]}},data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},B={name:"CONVERSION_LABEL",settings:{ads:{}},data:{map:{value:"data.total",currency:{value:"EUR",key:"data.currency"},transaction_id:"data.id"}}},M={name:"product_view",settings:{gtm:{}},data:{map:{product_id:"data.id",product_name:"data.name",product_category:"data.category",value:"data.price",currency:{value:"EUR",key:"data.currency"}}}},K={name:"purchase",settings:{ga4:{include:["data"]},ads:{},gtm:{}},data:{map:{transaction_id:"data.id",value:"data.total",currency:{value:"EUR",key:"data.currency"},items:{loop:["nested",{condition:function(e){return o(e)&&"product"===e.entity},map:{item_id:"data.id",item_name:"data.name",quantity:{value:1,key:"data.quantity"}}}]}}}},W={order:{complete:K},product:{add:V,view:M}},$=!1,F={marketing:["ad_storage","ad_user_data","ad_personalization"],functional:["analytics_storage"]},J={type:"google-gtag",config:{settings:{}},init:function(n){var r=n.config,a=n.env,o=r.settings,i=void 0===o?{}:o,c=r.loadScript,u=i.ga4,s=i.ads,d=i.gtm;return(null==u?void 0:u.measurementId)&&function(n,r,a){var o=l(a),i=o.window,c=o.document,u=n.measurementId,s=n.transport_url,d=n.server_container_url,p=n.pageview;if(u){r&&e(u,void 0,c),t(i);var _={};s&&(_.transport_url=s),d&&(_.server_container_url=d),!1===p&&(_.send_page_view=!1);var f=i.gtag;f("js",new Date),f("config",u,_)}}(u,c,a),(null==s?void 0:s.conversionId)&&function(n,r,a){var o=l(a),i=o.window,c=o.document,u=n.conversionId;if(u){n.currency||(n.currency="EUR"),r&&e(u,void 0,c),t(i);var s=i.gtag;s("js",new Date),s("config",u)}}(s,c,a),(null==d?void 0:d.containerId)&&function(e,t,n){var r=l(n),a=r.window,o=r.document,i=e.containerId,c=e.dataLayer,u=e.domain,s=c||X;s===X?a.dataLayer=a.dataLayer||[]:a[s]=a[s]||[],a[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t&&i&&f(i,u||C,s,o)}(d,c,a),!!((null==u?void 0:u.measurementId)||(null==s?void 0:s.conversionId)||(null==d?void 0:d.containerId))&&r},push:function(e,t){return _async_to_generator(function(e,t){var n,r,a,i,c,u,s,d,f,g,y,v,m,b,h;return _ts_generator(this,function(w){switch(w.label){case 0:return n=t.config,r=t.mapping,a=void 0===r?{}:r,i=t.data,c=t.env,u=t.collector,s=n.settings,f=(d=void 0===s?{}:s).ga4,g=d.ads,y=d.gtm,v=a.settings||{},[4,p(e,i,n,f,u)];case 1:return m=w.sent(),[4,p(e,i,n,g,u)];case 2:return b=w.sent(),[4,p(e,i,n,y,u)];case 3:return h=w.sent(),(null==f?void 0:f.measurementId)&&_(e,f,v.ga4,m,c),(null==g?void 0:g.conversionId)&&a.name&&function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,c=t.conversionId,u=t.currency,s=o(r)?r:{},d=n.label||a;if(d){var p=_object_spread({send_to:"".concat(c,"/").concat(d),currency:u||"EUR"},s);(0,l(i).window.gtag)("event","conversion",p)}}(e,g,v.ads,b,a.name,c),(null==y?void 0:y.containerId)&&function(e,t){var n=arguments.length>3?arguments[3]:void 0,r=l(arguments.length>4?arguments[4]:void 0).window,a={event:e.name};r.dataLayer.push(_object_spread({},a,o(n)?n:e))}(e,y,v.gtm,h,c),[2]}})}).apply(this,arguments)},on:function(e,n){var r;if("consent"===e&&n){var a=n,o=((null===(r=this.config)||void 0===r?void 0:r.settings)||{}).como,i=void 0===o||o;if(i){var c=l(this.env).window,u=t(c);if(u){var s=!0===i?F:i;if(!$){var d=new Set;if(Object.values(s).forEach(function(e){(Array.isArray(e)?e:[e]).forEach(function(e){return d.add(e)})}),d.size>0){var p={};d.forEach(function(e){p[e]="denied"}),u("consent","default",p)}$=!0}var _={};Object.entries(a).forEach(function(e){var t=_sliced_to_array(e,2),n=t[0],r=t[1],a=s[n];if(a){var o=Array.isArray(a)?a:[a],i=r?"granted":"denied";o.forEach(function(e){_[e]=i})}}),0!==Object.keys(_).length&&u("consent","update",_)}}}}},Q=J;return G=E,function(e,t,n,r){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var a=!0,o=!1,i=void 0;try{for(var c,u=function(){var a=c.value;O.call(e,a)||a===n||h(e,a,{get:function(){return t[a]},enumerable:!(r=w(t,a))||r.enumerable})},s=j(t)[Symbol.iterator]();!(a=(c=s.next()).done);a=!0)u()}catch(e){o=!0,i=e}finally{try{a||null==s.return||s.return()}finally{if(o)throw i}}}return e}(h({},"__esModule",{value:!0}),G)}();
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,a=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,o=(e,a)=>{for(var n in a)t(e,n,{get:a[n],enumerable:!0})},i={};o(i,{DestinationGtag:()=>I,default:()=>G,destinationGtag:()=>H,examples:()=>S}),module.exports=(e=i,((e,o,i,s)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let c of n(o))r.call(e,c)||c===i||t(e,c,{get:()=>o[c],enumerable:!(s=a(o,c))||s.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s=new Set;function c(e,t="https://www.googletagmanager.com/gtag/js?id=",a=globalThis.document){if(s.has(e))return;const n=a.createElement("script");n.src=t+e,a.head.appendChild(n),s.add(e)}function d(e=globalThis.window){const t=e;t.dataLayer=t.dataLayer||[],t.gtag||(t.gtag=function(){t.dataLayer.push(arguments)})}var u,l,p=require("@walkeros/web-core");var g=Object.getOwnPropertyNames,m=(u={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.1.1",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 l||(0,u[g(u)[0]])((l={exports:{}}).exports,l),l.exports}),v={merge:!0,shallow:!0,extend:!0};function y(e){return"object"==typeof e&&null!==e&&!function(e){return Array.isArray(e)}(e)&&"[object Object]"===Object.prototype.toString.call(e)}var{version:h}=m();function w(e={}){var t;const a=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",r=e.count||1,o=function(e,t={},a={}){a={...v,...a};const n=Object.entries(t).reduce((t,[n,r])=>{const o=e[n];return a.merge&&Array.isArray(o)&&Array.isArray(r)?t[n]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...o]):(a.extend||n in e)&&(t[n]=r),t},{});return a.shallow?{...e,...n}:(Object.assign(e,n),e)}({name:"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:[{entity:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${a}-${n}-${r}`,trigger:"test",entity:"entity",action:"action",timestamp:a,timing:3.14,group:n,count:r,version:{source:h,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.name){const[a,n]=null!=(t=e.name.split(" "))?t:[];a&&n&&(o.entity=a,o.action=n)}return o}function b(e="entity action",t={}){const a=t.timestamp||(new Date).setHours(0,13,37,0),n={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},r={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return w({...{"cart view":{data:{currency:"EUR",value:2*n.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...n.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:n.data.price+r.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...n,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...r,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:[{entity:"product",...n,context:{shopping:["complete",0]},nested:[]},{entity:"product",...r,context:{shopping:["complete",0]},nested:[]},{entity:"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":{...n,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...n,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...n.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:a,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,name:e})}var f=require("@walkeros/web-core");function _(e,t,a={},n,r){const{window:o}=(0,f.getEnvironment)(r);if(!t.measurementId)return;const i=y(n)?n:{},s=function(e,t){const a={};return t.includes("all")&&(t=["context","data","event","globals","source","user","version"]),t.forEach(t=>{let n=e[t]||{};"event"==t&&(n={id:e.id,timing:e.timing,trigger:e.trigger,entity:e.entity,action:e.action,group:e.group,count:e.count}),Object.entries(n).forEach(([e,n])=>{"context"==t&&(n=n[0]),a[`${t}_${e}`]=n})}),a}(e,a.include||t.include||["data"]),c={...s,...i};let d=e.name;!1!==t.snakeCase&&(d=function(e,t=!0){return t?e.replace(/\s+/g,"_").toLowerCase():e}(d)),c.send_to=t.measurementId,t.debug&&(c.debug_mode=!0);(0,o.gtag)("event",d,c)}var k=require("@walkeros/web-core");var x=require("@walkeros/web-core");var E=require("@walkeros/web-core"),O="dataLayer";function j(e,t,a){const{window:n,document:r}=(0,E.getEnvironment)(a),{containerId:o,dataLayer:i,domain:s}=e,c=i||O;c===O?n.dataLayer=n.dataLayer||[]:n[c]=n[c]||[];n[c].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t&&o&&function(e,t,a,n=globalThis.document){const r=a!=O?"&l="+a:"",o=n.createElement("script");o.src=t+e+r,n.head.appendChild(o)}(o,s||"https://www.googletagmanager.com/gtm.js?id=",c,r)}var X=require("@walkeros/web-core");var I={},S={};o(S,{events:()=>R,mapping:()=>U});var R={};function q(){const e=b("order complete");return["event","purchase",{transaction_id:e.data.id,value:e.data.total,tax:e.data.taxes,shipping:e.data.shipping,currency:"EUR",items:e.nested.filter(e=>"product"===e.entity).map(e=>({item_id:e.data.id,item_name:e.data.name,quantity:1})),send_to:"G-XXXXXX-1"}]}function A(){const e=b("product add");return["event","add_to_cart",{currency:"EUR",value:e.data.price,items:[{item_id:e.data.id,item_variant:e.data.color,quantity:1}],send_to:"G-XXXXXX-1"}]}function C(){const e=b("order complete");return["event","conversion",{send_to:"AW-XXXXXXXXX/CONVERSION_LABEL",currency:"EUR",value:e.data.total,transaction_id:e.data.id}]}function L(){const e=b("product view");return{event:"product_view",product_id:e.data.id,product_name:e.data.name,product_category:e.data.category,value:e.data.price,currency:"EUR"}}o(R,{adsConversion:()=>C,ga4AddToCart:()=>A,ga4Purchase:()=>q,gtmEvent:()=>L});var U={};o(U,{adsConversion:()=>T,combinedPurchase:()=>N,config:()=>$,ga4AddToCart:()=>P,ga4Purchase:()=>D,gtmProductView:()=>z});var D={name:"purchase",settings:{ga4:{include:["data","context"]}},data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:e=>y(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},P={name:"add_to_cart",settings:{ga4:{include:["data"]}},data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},T={name:"CONVERSION_LABEL",settings:{ads:{}},data:{map:{value:"data.total",currency:{value:"EUR",key:"data.currency"},transaction_id:"data.id"}}},z={name:"product_view",settings:{gtm:{}},data:{map:{product_id:"data.id",product_name:"data.name",product_category:"data.category",value:"data.price",currency:{value:"EUR",key:"data.currency"}}}},N={name:"purchase",settings:{ga4:{include:["data"]},ads:{},gtm:{}},data:{map:{transaction_id:"data.id",value:"data.total",currency:{value:"EUR",key:"data.currency"},items:{loop:["nested",{condition:e=>y(e)&&"product"===e.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{value:1,key:"data.quantity"}}}]}}}},$={order:{complete:N},product:{add:P,view:z}},H={type:"google-gtag",config:{settings:{}},env:{window:{gtag:function(...e){},dataLayer:[]},document:{createElement:e=>({src:"",async:!1,setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},init({config:e,env:t}){const{settings:a={},loadScript:n}=e,{ga4:r,ads:o,gtm:i}=a;return(null==r?void 0:r.measurementId)&&function(e,t,a){const{window:n,document:r}=(0,p.getEnvironment)(a),{measurementId:o,transport_url:i,server_container_url:s,pageview:u}=e;if(!o)return;t&&c(o,void 0,r),d(n);const l={};i&&(l.transport_url=i),s&&(l.server_container_url=s),!1===u&&(l.send_page_view=!1);const g=n.gtag;g("js",new Date),g("config",o,l)}(r,n,t),(null==o?void 0:o.conversionId)&&function(e,t,a){const{window:n,document:r}=(0,k.getEnvironment)(a),{conversionId:o}=e;if(!o)return;e.currency||(e.currency="EUR"),t&&c(o,void 0,r),d(n);const i=n.gtag;i("js",new Date),i("config",o)}(o,n,t),(null==i?void 0:i.containerId)&&j(i,n,t),!!((null==r?void 0:r.measurementId)||(null==o?void 0:o.conversionId)||(null==i?void 0:i.containerId))&&e},push(e,{config:t,mapping:a={},data:n,env:r}){const{settings:o={}}=t,{ga4:i,ads:s,gtm:c}=o,d=a.settings||{};(null==i?void 0:i.measurementId)&&_(e,i,d.ga4,n,r),(null==s?void 0:s.conversionId)&&a.name&&function(e,t,a={},n,r,o){const{conversionId:i,currency:s}=t,c=y(n)?n:{},d=a.label||r;if(!d)return;const u={send_to:`${i}/${d}`,currency:s||"EUR",...c},{window:l}=(0,x.getEnvironment)(o);(0,l.gtag)("event","conversion",u)}(0,s,d.ads,n,a.name,r),(null==c?void 0:c.containerId)&&function(e,t,a={},n,r){const{window:o}=(0,X.getEnvironment)(r),i={event:e.name};o.dataLayer.push({...i,...y(n)?n:e})}(e,0,d.gtm,n,r)}},G=H;//# sourceMappingURL=index.js.map
1
+ "use strict";var t,e=Object.defineProperty,n=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,o=(t,n)=>{for(var a in n)e(t,a,{get:n[a],enumerable:!0})},i={};o(i,{DestinationGtag:()=>S,default:()=>nt,destinationGtag:()=>et,examples:()=>U,resetConsentState:()=>Z}),module.exports=(t=i,((t,o,i,c)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let s of a(o))r.call(t,s)||s===i||e(t,s,{get:()=>o[s],enumerable:!(c=n(o,s))||c.enumerable});return t})(e({},"__esModule",{value:!0}),t));var c=new Set;function s(t,e="https://www.googletagmanager.com/gtag/js?id=",n=globalThis.document){if(c.has(t))return;const a=n.createElement("script");a.src=e+t,n.head.appendChild(a),c.add(t)}function d(t){const e=t;return e.dataLayer=e.dataLayer||[],e.gtag||(e.gtag=function(){e.dataLayer.push(arguments)}),e.gtag}var u=require("@walkeros/web-core");var l={merge:!0,shallow:!0,extend:!0};function g(t,e={},n={}){n={...l,...n};const a=Object.entries(e).reduce((e,[a,r])=>{const o=t[a];return n.merge&&Array.isArray(o)&&Array.isArray(r)?e[a]=r.reduce((t,e)=>t.includes(e)?t:[...t,e],[...o]):(n.extend||a in t)&&(e[a]=r),e},{});return n.shallow?{...t,...a}:(Object.assign(t,a),t)}function p(t){return Array.isArray(t)}function m(t){return void 0!==t}function v(t){return"object"==typeof t&&null!==t&&!p(t)&&"[object Object]"===Object.prototype.toString.call(t)}function y(t){return"string"==typeof t}function f(t,e="",n){const a=e.split(".");let r=t;for(let t=0;t<a.length;t++){const e=a[t];if("*"===e&&p(r)){const e=a.slice(t+1).join("."),o=[];for(const t of r){const a=f(t,e,n);o.push(a)}return o}if(r=r instanceof Object?r[e]:void 0,!r)break}return m(r)?r:n}function w(t="entity action",e={}){const n=e.timestamp||(new Date).setHours(0,13,37,0),a={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},r={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return function(t={}){var e;const n=t.timestamp||(new Date).setHours(0,13,37,0),a=t.group||"gr0up",r=t.count||1,o=g({name:"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:[{entity:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${n}-${a}-${r}`,trigger:"test",entity:"entity",action:"action",timestamp:n,timing:3.14,group:a,count:r,version:{source:"0.2.0",tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},t,{merge:!1});if(t.name){const[n,a]=null!=(e=t.name.split(" "))?e:[];n&&a&&(o.entity=n,o.action=a)}return o}({...{"cart view":{data:{currency:"EUR",value:2*a.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...a.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:a.data.price+r.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...a,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...r,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:[{entity:"product",...a,context:{shopping:["complete",0]},nested:[]},{entity:"product",...r,context:{shopping:["complete",0]},nested:[]},{entity:"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":{...a,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...a,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...a.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"}}}[t],...e,name:t})}function h(t){return function(t){return"boolean"==typeof t}(t)||y(t)||function(t){return"number"==typeof t&&!Number.isNaN(t)}(t)||!m(t)||p(t)&&t.every(h)||v(t)&&Object.values(t).every(h)}function b(t){return h(t)?t:void 0}function _(t,e,n){return async function(...a){try{return await t(...a)}catch(t){if(!e)return;return await e(t)}finally{await(null==n?void 0:n())}}}async function E(t,e={},n={}){var a;if(!m(t))return;const r=v(t)&&t.consent||n.consent||(null==(a=n.collector)?void 0:a.consent),o=p(e)?e:[e];for(const e of o){const a=await _(k)(t,e,{...n,consent:r});if(m(a))return a}}async function k(t,e,n={}){const{collector:a,consent:r}=n;return(p(e)?e:[e]).reduce(async(e,o)=>{const i=await e;if(i)return i;const c=y(o)?{key:o}:o;if(!Object.keys(c).length)return;const{condition:s,consent:d,fn:u,key:l,loop:g,map:v,set:w,validate:h,value:x}=c;if(s&&!await _(s)(t,o,a))return;if(d&&!function(t,e={},n={}){const a={...e,...n},r={};let o=void 0===t;return Object.keys(a).forEach(e=>{a[e]&&(r[e]=!0,t&&t[e]&&(o=!0))}),!!o&&r}(d,r))return x;let j=m(x)?x:t;if(u&&(j=await _(u)(t,o,n)),l&&(j=f(t,l,x)),g){const[e,a]=g,r="this"===e?[t]:await E(t,e,n);p(r)&&(j=(await Promise.all(r.map(t=>E(t,a,n)))).filter(m))}else v?j=await Object.entries(v).reduce(async(e,[a,r])=>{const o=await e,i=await E(t,r,n);return m(i)&&(o[a]=i),o},Promise.resolve({})):w&&(j=await Promise.all(w.map(e=>k(t,e,n))));h&&!await _(h)(j)&&(j=void 0);const O=b(j);return m(O)?O:b(x)},Promise.resolve(void 0))}async function x(t,e,n,a,r){const o=v(e)?e:{},i=n.data?await E(t,n.data,{collector:r}):{},c=(null==a?void 0:a.data)?await E(t,a.data,{collector:r}):{},s=v(i)?i:{},d=v(c)?c:{};return g(g(o,s),d)}var j=require("@walkeros/web-core");function O(t,e,n={},a,r){const{window:o}=(0,j.getEnv)(r);if(!e.measurementId)return;const i=v(a)?a:{},c=function(t,e){const n={};return e.includes("all")&&(e=["context","data","event","globals","source","user","version"]),e.forEach(e=>{let a=t[e]||{};"event"==e&&(a={id:t.id,timing:t.timing,trigger:t.trigger,entity:t.entity,action:t.action,group:t.group,count:t.count}),Object.entries(a).forEach(([t,a])=>{"context"==e&&(a=a[0]),n[`${e}_${t}`]=a})}),n}(t,n.include||e.include||["data"]),s={...c,...i};let d=t.name;!1!==e.snakeCase&&(d=function(t,e=!0){return e?t.replace(/\s+/g,"_").toLowerCase():t}(d)),s.send_to=e.measurementId,e.debug&&(s.debug_mode=!0);(0,o.gtag)("event",d,s)}var X=require("@walkeros/web-core");var A=require("@walkeros/web-core");var I=require("@walkeros/web-core"),R="dataLayer";function q(t,e,n){const{window:a,document:r}=(0,I.getEnv)(n),{containerId:o,dataLayer:i,domain:c}=t,s=i||R;s===R?a.dataLayer=a.dataLayer||[]:a[s]=a[s]||[];a[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),e&&o&&function(t,e,n,a=globalThis.document){const r=n!=R?"&l="+n:"",o=a.createElement("script");o.src=e+t+r,a.head.appendChild(o)}(o,c||"https://www.googletagmanager.com/gtm.js?id=",s,r)}var C=require("@walkeros/web-core");var L=require("@walkeros/web-core"),S={},U={};o(U,{env:()=>P,events:()=>$,mapping:()=>B});var P={};o(P,{init:()=>z,push:()=>D,simulation:()=>N});var z={window:{gtag:void 0,dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},D={window:{gtag:Object.assign(()=>{},{}),dataLayer:[]},document:{createElement:()=>({src:"",setAttribute:()=>{},removeAttribute:()=>{}}),head:{appendChild:()=>{}}}},N=["call:window.gtag"],$={};function T(){const t=w("order complete");return["event","purchase",{transaction_id:t.data.id,value:t.data.total,tax:t.data.taxes,shipping:t.data.shipping,currency:"EUR",items:t.nested.filter(t=>"product"===t.entity).map(t=>({item_id:t.data.id,item_name:t.data.name,quantity:1})),send_to:"G-XXXXXX-1"}]}function H(){const t=w("product add");return["event","add_to_cart",{currency:"EUR",value:t.data.price,items:[{item_id:t.data.id,item_variant:t.data.color,quantity:1}],send_to:"G-XXXXXX-1"}]}function V(){const t=w("order complete");return["event","conversion",{send_to:"AW-XXXXXXXXX/CONVERSION_LABEL",currency:"EUR",value:t.data.total,transaction_id:t.data.id}]}function G(){const t=w("product view");return{event:"product_view",product_id:t.data.id,product_name:t.data.name,product_category:t.data.category,value:t.data.price,currency:"EUR"}}o($,{adsConversion:()=>V,ga4AddToCart:()=>H,ga4Purchase:()=>T,gtmEvent:()=>G});var B={};o(B,{adsConversion:()=>F,combinedPurchase:()=>K,config:()=>Q,ga4AddToCart:()=>W,ga4Purchase:()=>M,gtmProductView:()=>J});var M={name:"purchase",settings:{ga4:{include:["data","context"]}},data:{map:{transaction_id:"data.id",value:"data.total",tax:"data.taxes",shipping:"data.shipping",currency:{key:"data.currency",value:"EUR"},items:{loop:["nested",{condition:t=>v(t)&&"product"===t.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{key:"data.quantity",value:1}}}]}}}},W={name:"add_to_cart",settings:{ga4:{include:["data"]}},data:{map:{currency:{value:"EUR",key:"data.currency"},value:"data.price",items:{loop:["this",{map:{item_id:"data.id",item_variant:"data.color",quantity:{value:1,key:"data.quantity"}}}]}}}},F={name:"CONVERSION_LABEL",settings:{ads:{}},data:{map:{value:"data.total",currency:{value:"EUR",key:"data.currency"},transaction_id:"data.id"}}},J={name:"product_view",settings:{gtm:{}},data:{map:{product_id:"data.id",product_name:"data.name",product_category:"data.category",value:"data.price",currency:{value:"EUR",key:"data.currency"}}}},K={name:"purchase",settings:{ga4:{include:["data"]},ads:{},gtm:{}},data:{map:{transaction_id:"data.id",value:"data.total",currency:{value:"EUR",key:"data.currency"},items:{loop:["nested",{condition:t=>v(t)&&"product"===t.entity,map:{item_id:"data.id",item_name:"data.name",quantity:{value:1,key:"data.quantity"}}}]}}}},Q={order:{complete:K},product:{add:W,view:J}},Y=!1;function Z(){Y=!1}var tt={marketing:["ad_storage","ad_user_data","ad_personalization"],functional:["analytics_storage"]},et={type:"google-gtag",config:{settings:{}},init({config:t,env:e}){const{settings:n={},loadScript:a}=t,{ga4:r,ads:o,gtm:i}=n;return(null==r?void 0:r.measurementId)&&function(t,e,n){const{window:a,document:r}=(0,u.getEnv)(n),{measurementId:o,transport_url:i,server_container_url:c,pageview:l}=t;if(!o)return;e&&s(o,void 0,r),d(a);const g={};i&&(g.transport_url=i),c&&(g.server_container_url=c),!1===l&&(g.send_page_view=!1);const p=a.gtag;p("js",new Date),p("config",o,g)}(r,a,e),(null==o?void 0:o.conversionId)&&function(t,e,n){const{window:a,document:r}=(0,X.getEnv)(n),{conversionId:o}=t;if(!o)return;t.currency||(t.currency="EUR"),e&&s(o,void 0,r),d(a);const i=a.gtag;i("js",new Date),i("config",o)}(o,a,e),(null==i?void 0:i.containerId)&&q(i,a,e),!!((null==r?void 0:r.measurementId)||(null==o?void 0:o.conversionId)||(null==i?void 0:i.containerId))&&t},async push(t,{config:e,mapping:n={},data:a,env:r,collector:o}){const{settings:i={}}=e,{ga4:c,ads:s,gtm:d}=i,u=n.settings||{},l=await x(t,a,e,c,o),g=await x(t,a,e,s,o),p=await x(t,a,e,d,o);(null==c?void 0:c.measurementId)&&O(t,c,u.ga4,l,r),(null==s?void 0:s.conversionId)&&n.name&&function(t,e,n={},a,r,o){const{conversionId:i,currency:c}=e,s=v(a)?a:{},d=n.label||r;if(!d)return;const u={send_to:`${i}/${d}`,currency:c||"EUR",...s},{window:l}=(0,A.getEnv)(o);(0,l.gtag)("event","conversion",u)}(0,s,u.ads,g,n.name,r),(null==d?void 0:d.containerId)&&function(t,e,n={},a,r){const{window:o}=(0,C.getEnv)(r),i={event:t.name};o.dataLayer.push({...i,...v(a)?a:t})}(t,0,u.gtm,p,r)},on(t,e){var n;if("consent"!==t||!e)return;const a=e,r=(null==(n=this.config)?void 0:n.settings)||{},{como:o=!0}=r;if(!o)return;const{window:i}=(0,L.getEnv)(this.env),c=d(i);if(!c)return;const s=!0===o?tt:o;if(!Y){const t=new Set;if(Object.values(s).forEach(e=>{(Array.isArray(e)?e:[e]).forEach(e=>t.add(e))}),t.size>0){const e={};t.forEach(t=>{e[t]="denied"}),c("consent","default",e)}Y=!0}const u={};Object.entries(a).forEach(([t,e])=>{const n=s[t];if(!n)return;const a=Array.isArray(n)?n:[n],r=e?"granted":"denied";a.forEach(t=>{u[t]=r})}),0!==Object.keys(u).length&&c("consent","update",u)}},nt=et;//# sourceMappingURL=index.js.map