@walkeros/web-source-datalayer 4.0.0 → 4.1.0-next-1778155282668
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.
- package/dist/index.browser.js +1 -1
- package/dist/index.es5.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/walkerOS.json +1 -1
- package/package.json +3 -3
package/dist/index.browser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Destination=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},s={};r(s,{SourceDataLayer:()=>X,createTrigger:()=>Te,default:()=>Ue,env:()=>Y,sourceDataLayer:()=>Ce,step:()=>oe,trigger:()=>Me});var a=Object.defineProperty;((e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})})({},{Level:()=>c});var i,c=((i=c||{})[i.ERROR=0]="ERROR",i[i.WARN=1]="WARN",i[i.INFO=2]="INFO",i[i.DEBUG=3]="DEBUG",i);function u(e){return{_meta:{hops:0,path:[e]}}}var l={merge:!0,shallow:!0,extend:!0};function f(e,t={},n={}){n={...l,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const s=e[o];return n.merge&&Array.isArray(s)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function d(e){return Array.isArray(e)}function g(e){return void 0!==e}function p(e){return"function"==typeof e}function y(e){return"object"==typeof e&&null!==e&&!d(e)&&"[object Object]"===Object.prototype.toString.call(e)}function v(e){return"string"==typeof e}function m(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=m(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(m(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function h(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&d(r)){const t=o.slice(e+1).join("."),s=[];for(const e of r){const o=h(e,t,n);s.push(o)}return s}if(r=r instanceof Object?r[t]:void 0,void 0===r)break}return g(r)?r:n}function b(e,t,n){if(!y(e))return e;const o=m(e),r=t.split(".");let s=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return o}var w={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing})};function k(e,t={},n={}){const o={...t,...n},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(s=!0))}),!!s&&r}function j(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function O(e=6,t){if(t){const n=t.length;let o="";for(let r=0;r<e;r++)o+=t[Math.random()*n|0];return o}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}function _(e,t=1e3,n=!1){let o,r=null,s=!1;return(...a)=>new Promise(i=>{const c=n&&!s;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!s||(o=e(...a),i(o))},t),c&&(s=!0,o=e(...a),i(o))})}function A(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function x(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=A(e)):n=e,void 0!==t&&(t instanceof Error?o.error=A(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=A(o.error))):o.value=t),{message:n,context:o}}var S=(e,t,n,o)=>{const r=`${c[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(n).length>0,a=0===e?console.error:1===e?console.warn:console.log;s?a(r,t,n):a(r,t)};function $(e={}){return q({level:void 0!==e.level?(t=e.level,"string"==typeof t?c[t]:t):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var t}function q(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=t){const t=x(o,s);n?n(e,t.message,t.context,r,S):S(e,t.message,t.context,r)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const o=x(e,t);throw n?n(0,o.message,o.context,r,S):S(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>q({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function E(e){return function(e){return"boolean"==typeof e}(e)||v(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!g(e)||d(e)&&e.every(E)||y(e)&&Object.values(e).every(E)}function L(e){return E(e)?e:void 0}function P(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function D(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function R(e,t={},n={}){var o,r;if(!g(e))return;const s=y(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),a=null!=(r=n.event)?r:y(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const i={event:a,mapping:t,collector:n.collector,logger:n.collector.logger,consent:s},c=d(t)?t:[t];for(const t of c){const n=await D(I)(e,t,{...i,mapping:t});if(g(n))return n}}async function I(e,t,n){return(d(t)?t:[t]).reduce(async(t,o)=>{const r=await t;if(r)return r;const s=v(o)?{key:o}:o;if(!Object.keys(s).length)return;const{condition:a,consent:i,fn:c,key:u,loop:l,map:f,set:p,validate:y,value:m}=s,b={...n,mapping:o};if(a&&!await D(a)(e,b))return;if(i&&!k(i,b.consent))return m;let w=g(m)?m:e;if(c&&(w=await D(c)(e,b)),u&&(w=h(e,u,m)),l){const[t,n]=l,o="this"===t?[e]:await R(e,t,b);d(o)&&(w=(await Promise.all(o.map(e=>R(e,n,b)))).filter(g))}else f?w=await Object.entries(f).reduce(async(t,[n,o])=>{const r=await t,s=await R(e,o,b);return g(s)&&(r[n]=s),r},Promise.resolve({})):p&&(w=await Promise.all(p.map(t=>I(e,t,b))));y&&!await D(y)(w,b)&&(w=void 0);const j=L(w);return g(j)?j:L(m)},Promise.resolve(void 0))}async function T(e,t,n){var o;t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await R(e,o,{collector:n,event:e});e=b(e,t,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,t,n){var o;const[r,s]=(e.name||"").split(" ");if(!t||!r||!s)return{};let a,i="",c=r,u=s;const l=t=>{if(t)return(d(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const o={event:e,mapping:t,collector:n,logger:n.logger,consent:y(e)&&e.consent||n.consent};return Boolean(t.condition(e,o))})};t[c]||(c="*");const f=t[c];return f&&(f[u]||(u="*"),a=l(f[u])),a||(c="*",u="*",a=l(null==(o=t[c])?void 0:o[u])),a&&(i=`${c} ${u}`),{eventMapping:a,mappingKey:i}}(e,t.mapping,n);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([t,o])=>{const r=await R(e,o,{collector:n,event:e});e=b(e,t,r)}));let a=t.data&&await R(e,t.data,{collector:n,event:e});const i=Boolean(null==r?void 0:r.silent);if(r){if(r.ignore)return{event:e,data:a,mapping:r,mappingKey:s,ignore:!0,silent:i};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await R(e,r.data,{collector:n,event:e});a=y(a)&&y(t)?f(a,t):t}}const c=null!=(o=null==r?void 0:r.include)?o:t.include;if(c&&c.length>0){const t=function(e,t){const n={},o=t.includes("all")?Object.keys(w):t;for(const t of o){const o=w[t];if(!o)continue;const r=o(e);if(y(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===t&&Array.isArray(o)?o[0]:o;n[`${t}_${e}`]=r}}return n}(e,c);Object.keys(t).length>0&&(a=y(a)?f(t,a):null!=a?a:t)}return{event:e,data:a,mapping:r,mappingKey:s,ignore:!1,silent:i}}function M(e,t,n,o){return function(...r){let s;const a="pre"+t,i="post"+t,c=n[a],u=n[i],l=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:e},...r)}catch(t){l(`Hook ${String(a)} failed, falling back to original function`,t),s=e(...r)}else s=e(...r);if(u)try{s=u({fn:e,result:s},...r)}catch(e){l(`Hook ${String(i)} failed, keeping original result`,e)}return s}}function C(e){if("*"===e)return()=>!0;if("and"in e){const t=e.and.map(C);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(C);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,s=function(e,t){switch(e){case"eq":return e=>String(null!=e?e:"")===t;case"contains":return e=>String(null!=e?e:"").includes(t);case"prefix":return e=>String(null!=e?e:"").startsWith(t);case"suffix":return e=>String(null!=e?e:"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(null!=t?t:""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,o);return e=>{const n=h(e,t),o=s(n);return r?!o:o}}(e)}function U(e){return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&null!==e[0]&&"match"in e[0]}function N(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return U(e)?{type:"routes",routes:e.map(e=>({match:C(e.match),next:N(e.next)}))}:{type:"chain",value:e}}}}function H(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;for(const n of e.routes)if(n.match(t))return H(n.next,t)}}function K(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function B(e){var t;return{full:null!=(t=e.full)&&t,storeId:e.store,rules:e.rules.map(e=>({match:C(e.match),key:e.key,ttl:e.ttl,update:e.update}))}}function G(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const s=r.key.map(e=>{var t;return String(null!=(t=h(n,e))?t:"")});if(s.every(e=>""===e))return null;const a=`${o}:${s.join(":")}`,i=t.get(a);return void 0!==i?{status:"HIT",key:a,value:i,rule:r}:{status:"MISS",key:a,rule:r}}function W(e,t,n,o){e.set(t,n,1e3*o)}async function F(e,t,n,o){if(!t)return e;let r=e;for(const[e,s]of Object.entries(t))r=b(r,e,await R(n,s,{collector:o}));return r}var V=!1;function z(e,t,n,o=globalThis.window){const r=t.settings,s=o[(null==r?void 0:r.name)||"dataLayer"];if(Array.isArray(s)&&!V){V=!0;try{const t=null!=n?n:s.length;for(let n=0;n<t;n++)J(e,r,s[n])}finally{V=!1}}}function J(e,t={},n){if(t.filter){if(!0===P(()=>t.filter(n),()=>!1)())return}const o=function(e){if(y(e)&&v(e.event)){const{event:t,...n}=e;return{name:t,...n}}if(d(e)&&e.length>=2)return Q(e);if(t=e,null!=t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0){return Q(Array.from(e))}var t;return null}(n);if(!o)return;const r=`${t.prefix||"dataLayer"} ${o.name}`,{name:s,...a}=o,i={name:r,data:a};P(()=>e(i),()=>{})()}function Q(e){const[t,n,o]=e;if(!v(t))return null;let r,s={};switch(t){case"consent":if(!v(n)||e.length<3)return null;if("default"!==n&&"update"!==n)return null;if(!y(o)||null===o)return null;r=`${t} ${n}`,s={...o};break;case"event":if(!v(n))return null;r=n,y(o)&&(s={...o});break;case"config":if(!v(n))return null;r=`${t} ${n}`,y(o)&&(s={...o});break;case"set":if(v(n))r=`${t} ${n}`,y(o)&&(s={...o});else{if(!y(n))return null;r=`${t} custom`,s={...n}}break;default:return null}return{name:r,...s}}var X={},Y={};r(Y,{push:()=>ne});var Z=()=>{},ee=()=>()=>Promise.resolve({ok:!0}),te={error:Z,warn:Z,info:Z,debug:Z,throw:e=>{throw"string"==typeof e?new Error(e):e},json:Z,scope:()=>te},ne={get push(){return ee()},get command(){return ee()},get elb(){return ee()},get window(){return{dataLayer:[],addEventListener:Z,removeEventListener:Z}},logger:te},oe={};r(oe,{consentUpdate:()=>se,directEvent:()=>ce,gtagAddToCart:()=>ae,gtagPurchase:()=>re,gtagViewItem:()=>ie});var re={title:"gtag purchase",description:"A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.",trigger:{type:"gtag"},in:["event","purchase",{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}],out:[["elb",{name:"dataLayer purchase",data:{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}}]]},se={title:"Consent update",description:"A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.",trigger:{type:"gtag"},in:["consent","update",{ad_storage:"granted",analytics_storage:"granted"}],out:[["elb",{name:"dataLayer consent update",data:{ad_storage:"granted",analytics_storage:"granted"}}]]},ae={title:"gtag add_to_cart",description:"A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.",trigger:{type:"gtag"},in:["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}],out:[["elb",{name:"dataLayer add_to_cart",data:{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}}]]},ie={title:"gtag view_item",description:"A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.",trigger:{type:"gtag"},in:["event","view_item",{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}],out:[["elb",{name:"dataLayer view_item",data:{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}}]]},ce={title:"Direct dataLayer event",description:"A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.",trigger:{type:"direct"},in:{event:"custom_event",category:"engagement",label:"video_play"},out:[["elb",{name:"dataLayer custom_event",data:{category:"engagement",label:"video_play"}}]]},ue={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function le(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function fe(e){var t;const n={};for(const[o,r]of Object.entries(e)){const e=null==(t=r.config)?void 0:t.next;e&&!U(e)?n[o]={next:e}:n[o]={}}return n}function de(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function ge(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function pe(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:u(n),config:t.config,env:me(t.config.env)};r.debug("init");const a=await M(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===a)return!1;t.config={...a||t.config,env:(null==a?void 0:a.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function ye(e,t,n,o,r,s){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:r,config:t.config,env:{...me(t.config.env),...s?{respond:s}:{}}};i.debug("push",{event:o.name});const u=await M(t.push,"TransformerPush",e.hooks,e.logger)(o,c);return i.debug("push done"),u}async function ve(e,t,n,o,r,s,a){var i,c,l,f,d,g;a&&(null==r?void 0:r._meta)&&(r._meta.chainPath=a);let p=o,y=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:y};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await D(pe)(e,s,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:y};if(a&&void 0!==(null==(c=null==(i=s.config)?void 0:i.chainMocks)?void 0:c[a])){const t=s.config.chainMocks[a];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:a}),p=t;continue}if(void 0!==(null==(l=s.config)?void 0:l.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),p=s.config.mock;continue}if(null==(f=s.config)?void 0:f.disabled)continue;const v=null==(d=s.config)?void 0:d.cache,m=v?B(v):void 0,h=m?le(m,e):void 0;let b;if(m&&h){const e=G(m,h,K(r,p),`t:${o}`);if("HIT"===(null==e?void 0:e.status)&&e.value){if(p=e.value,m.full)return{event:p,respond:y};continue}"MISS"===(null==e?void 0:e.status)&&(b={key:e.key,ttl:e.rule.ttl})}const w=s.config.before;if(w){const n=ge("string"==typeof w||Array.isArray(w)&&!U(w)?w:H(N(w),K(r,p))||void 0,fe(t));if(n.length>0){const o=await ve(e,t,n,p,r,y,a);if(null===o.event)return{event:null,respond:null!=(g=o.respond)?g:y};o.respond&&(y=o.respond),p=Array.isArray(o.event)?o.event[0]:o.event}}const k=await D(ye,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,p,r,y);if(!1===k)return{event:null,respond:y};if(Array.isArray(k)){const s=n.slice(n.indexOf(o)+1),i=await Promise.all(k.map(async n=>{const o=n.event||p,i=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:u("unknown");if(n.next){let r=n.next;if(U(n.next)){r=H(N(n.next),K(i,o))}if(r){const n=ge(r,fe(t));if(n.length>0)return ve(e,t,n,o,i,y,a)}return{event:o,respond:y}}return s.length>0?ve(e,t,s,o,i,y,a):{event:o,respond:y}}));let c=y;const l=[];for(const e of i.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(k&&"object"==typeof k){const{event:n,respond:o,next:s}=k;if(o&&(y=o),s){let o=s;if(U(s)){if(o=H(N(s),K(r,p)),!o){n&&(p=n);continue}}const i=ge(o,fe(t));return i.length>0?ve(e,t,i,n||p,r,y,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:y})}n&&(p=n)}if(b&&h&&W(h,b.key,p,b.ttl),(!k||"object"==typeof k&&!k.next)&&s.config.next&&U(s.config.next)){const n=H(N(s.config.next),K(r,p));if(n){const o=ge(n,fe(t));if(o.length>0)return ve(e,t,o,p,r,y,a)}return{event:p,respond:y}}}return{event:p,respond:y}}function me(e){return e&&y(e)?e:{}}async function he(e,t,n){var o;const{code:r,config:s={},env:a={},primary:i,next:c,before:l,cache:f}=n;let d,g=u(t);const p=f?B({...f,full:null==(o=f.full)||o}):void 0,y=N(c),v=Array.isArray(c)&&U(c)||!y?void 0:ge(H(y),fe(e.transformers)),m=N(l),h=Array.isArray(l)&&U(l)||!m?void 0:ge(H(m),fe(e.transformers)),b=e.logger.scope("source").scope(t),w={push:async(n,o={})=>{let r,a=n;const i=null!=h?h:m?ge(H(m,K(g)),fe(e.transformers)):[];if(i.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ve(e,e.transformers,i,a,g,d,`source.${t}.before`);if(null===n.event)return{ok:!0};n.respond&&(d=n.respond),a=Array.isArray(n.event)?n.event[0]:n.event}if(p){const n=le(p,e);if(n){const o=K(g),s=G(p,n,o,`s:${t}`);if(s){if("HIT"===s.status&&void 0!==s.value&&p.full){let t=s.value;return s.rule.update&&(t=await F(t,s.rule.update,{...o,cache:{status:"HIT"}},e)),null==d||d(t),{ok:!0}}if("MISS"===s.status&&p.full&&d){const t=d,a=s.rule.update,i={...o,cache:{status:"MISS"}},c=s.key,u=s.rule.ttl;d=o=>{W(n,c,o,u),a?r=(async()=>{const n=await F(o,a,i,e);t(n)})():t(o)}}"MISS"!==s.status||p.full||W(n,s.key,!0,s.rule.ttl)}}}const c=null!=v?v:y?ge(H(y,K(g)),fe(e.transformers)):[],u=await e.push(a,{...o,id:t,ingest:g,respond:d,mapping:s,preChain:c});return r&&await r,u},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:b,...a},k={collector:e,logger:b,id:t,config:s,env:w,setIngest:async n=>{if(!s.ingest)return void(g=u(t));const o=await R(n,s.ingest,{collector:e}),r=u(t);g={...r,...o,_meta:r._meta}},setRespond:e=>{d=e}},j=await D(r)(k);if(!j)return;const O=j.type||"unknown",_=e.logger.scope(O).scope(t);return w.logger=_,i&&(j.config={...j.config,primary:i}),j}function be(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function we(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",a=e.logger.scope(s).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:r,env:qe(t.env,t.config.env)};P(t.on)(o,i)}function ke(e,t,n,o){let r;switch(t){case ue.Consent:r=o||e.consent;break;case ue.Session:r=e.session;break;case ue.User:r=o||e.user;break;case ue.Custom:r=o||e.custom;break;case ue.Globals:r=o||e.globals;break;case ue.Config:r=o||e.config;break;case ue.Ready:case ue.Run:default:r=void 0}if(n.length)switch(t){case ue.Consent:!function(e,t,n){const o=n||e.consent,r=be(e,ue.Consent);t.forEach(e=>{Object.keys(o).filter(t=>t in e).forEach(t=>{P(e[t])(o,r)})})}(e,n,o);break;case ue.Ready:!function(e,t){if(!e.allowed)return;const n=be(e,ue.Ready);t.forEach(e=>{P(e)(void 0,n)})}(e,n);break;case ue.Run:!function(e,t){if(!e.allowed)return;const n=be(e,ue.Run);t.forEach(e=>{P(e)(void 0,n)})}(e,n);break;case ue.Session:!function(e,t){if(!e.session)return;const n=be(e,ue.Session);t.forEach(t=>{P(t)(e.session,n)})}(e,n);break;default:{const o=be(e,t);n.forEach(e=>{"function"==typeof e&&P(e)(r,o)});break}}}function je(e,t,n,o){if(!e)return[];if(t){const e=H(t,K(o));return e?ge(e,fe(n)):[]}return ge(e,fe(n))}async function Oe(e,t,n){const{code:o,config:r={},env:s={},before:a,next:i,cache:c}=t;if(!p(o.push))return Se({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=n||r||{init:!1};let l=a?{...u,before:a}:{...u};i&&(l={...l,next:i}),c&&(l={...l,cache:c});const f={...o,config:l,env:qe(o.env,s)};let d=f.config.id;if(!d)do{d=O(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),_e(e,void 0,{},{[d]:f})}async function _e(e,t,n={},o){const{allowed:r,consent:s,globals:a,user:i}=e;if(!r)return Se({ok:!1});t&&(e.queue.push(t),e.status.in++),o||(o=e.destinations);const c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var c,l,d;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let g=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],t&&g.push(m(t));const p=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:u("unknown");if(!g.length&&!(null==(c=r.queueOn)?void 0:c.length))return{id:o,destination:r,skipped:!0};if(!g.length&&(null==(l=r.queueOn)?void 0:l.length)){const t=await D(Ae)(e,r,o);return{id:o,destination:r,skipped:!t}}const y=[],v=g.filter(e=>{const t=k(r.config.consent,s,e.consent);return!t||(e.consent=t,y.push(e),!1)});if(r.queuePush.push(...v),!y.length)return{id:o,destination:r,queue:g};if(!await D(Ae)(e,r,o))return{id:o,destination:r,queue:g};let h,b;r.dlq||(r.dlq=[]);const w=r.config.before,j=je(w,w&&U(w)?N(w):void 0,e.transformers,p),O=r.config.next,_=O&&U(O)?N(O):void 0,A=null==(d=r.config)?void 0:d.cache,x=A?B(A):void 0,S=x?le(x,e):void 0;let $=0;return await Promise.all(y.map(async t=>{let s;if(t.globals=f(a,t.globals),t.user=f(i,t.user),(null==x?void 0:x.full)&&S){const e=K(p,t),n=G(x,S,e,`d:${o}`);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let c=t,u=n.respond;if(j.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ve(e,e.transformers,j,t,p,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(x&&!x.full&&S){const e=K(p,c),n=G(x,S,e,`d:${o}`);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}const l=Date.now();let d=!1;const g=await D(xe,t=>{const n=r.type||"unknown";e.logger.scope(n).error("Push failed",{error:t,event:c.name}),h=t,d=!0,r.dlq.push([c,t])})(e,r,o,c,p,u);if($+=Date.now()-l,s&&S&&void 0===r.config.mock&&W(S,s.key,null==g||g,s.ttl),void 0!==g&&(b=g),!d&&O){void 0!==g&&(p._response=g);const t=je(O,_,e.transformers,p);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ve(e,e.transformers,t,c,p,u,`destination.${o}.next`);n.respond&&(u=n.respond)}}return t})),{id:o,destination:r,error:h,response:b,totalDuration:$}})),l={},d={},g={};for(const t of c){if(t.skipped)continue;const n={type:t.destination.type||"unknown",data:t.response};e.status.destinations[t.id]||(e.status.destinations[t.id]={count:0,failed:0,duration:0});const o=e.status.destinations[t.id],r=Date.now();t.error?(n.error=t.error,g[t.id]=n,o.failed++,o.lastAt=r,o.duration+=t.totalDuration||0,e.status.failed++):t.queue&&t.queue.length?d[t.id]=n:(l[t.id]=n,o.count++,o.lastAt=r,o.duration+=t.totalDuration||0,e.status.out++)}return Se({event:t,...Object.keys(l).length&&{done:l},...Object.keys(d).length&&{queued:d},...Object.keys(g).length&&{failed:g}})}async function Ae(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",s=e.logger.scope(r),a={collector:e,logger:s,id:n,config:t.config,env:qe(t.env,t.config.env)};s.debug("init");const i=await M(t.init,"DestinationInit",e.hooks,e.logger)(a);if(!1===i)return i;if(t.config={...i||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)we(e,t,n,r,s)}s.debug("init done")}return!0}async function xe(e,t,n,o,r,s){const{config:a}=t,i=await T(o,a,e);if(i.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),l={collector:e,logger:u,id:n,config:a,data:i.data,rule:i.mapping,ingest:r,env:{...qe(t.env,a.env),...s?{respond:s}:{}}};if(void 0!==a.mock)return u.debug("mock",{event:i.event.name}),a.mock;const f=i.mapping,d=i.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!t.pushBatch||void 0!==a.mock){u.debug("push",{event:i.event.name});const n=await M(t.push,"DestinationPush",e.hooks,e.logger)(i.event,l);return u.debug("push done"),n}{if(t.batches=t.batches||{},!t.batches[d]){const o={key:d,events:[],data:[]};t.batches[d]={batched:o,batchFn:_(()=>{const o=t.batches[d].batched,i={collector:e,logger:u,id:n,config:a,data:void 0,rule:f,ingest:r,env:{...qe(t.env,a.env),...s?{respond:s}:{}}};u.debug("push batch",{events:o.events.length}),M(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,i),u.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=t.batches[d];o.batched.events.push(i.event),g(i.data)&&o.batched.data.push(i.data),o.batchFn()}return!0}function Se(e){return{ok:!(null==e?void 0:e.failed),...e}}function $e(e){const{code:t,config:n={},env:o={},cache:r}=e,{config:s}=de(e,"before"),{config:a}=de({...e,config:s},"next"),i={...t.config,...n,...a};r&&(i.cache=r);const c=qe(t.env,o);return{...t,config:i,env:c}}function qe(e,t){return e||t?t?e&&y(e)&&y(t)?{...e,...t}:t:e:{}}async function Ee(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const a=o.type||"unknown",i=n.scope(a),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:i};try{await Promise.race([s(c),new Promise((n,o)=>setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3))])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}});await Promise.allSettled(o)}async function Le(e,t,n,o){let r,s,a=!1;switch(t){case ue.Config:y(n)&&(f(e.config,n,{shallow:!1}),s=n,a=!0);break;case ue.Consent:if(y(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=f(e.consent,n),{update:n}}(e,n);s=t,a=!0}break;case ue.Custom:y(n)&&(e.custom=f(e.custom,n),s=n,a=!0);break;case ue.Destination:y(n)&&("code"in n&&y(n.code)?r=await Oe(e,n,o):p(n.push)&&(r=await Oe(e,{code:n},o)));break;case ue.Globals:y(n)&&(e.globals=f(e.globals,n),s=n,a=!0);break;case ue.On:v(n)&&await async function(e,t,n){const o=e.on,r=o[t]||[],s=d(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,ke(e,t,s)}(e,n,o);break;case ue.Ready:a=!0;break;case ue.Run:r=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),t&&(t.consent&&(e.consent=f(e.consent,t.consent)),t.user&&(e.user=f(e.user,t.user)),t.globals&&(e.globals=f(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=f(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await _e(e)}(e,n),a=!0;break;case ue.Session:a=!0;break;case ue.Shutdown:await async function(e){const t=e.logger;await Ee(e.sources,"source",t),await Ee(e.destinations,"destination",t),await Ee(e.transformers,"transformer",t),await Ee(e.stores,"store",t)}(e);break;case ue.User:y(n)&&(f(e.user,n,{shallow:!1}),s=n,a=!0)}return a&&(await async function(e,t,n,o){let r,s=n||[];switch(n||(s=e.on[t]||[]),t){case ue.Consent:r=o||e.consent;break;case ue.Session:r=e.session;break;case ue.User:r=o||e.user;break;case ue.Custom:r=o||e.custom;break;case ue.Globals:r=o||e.globals;break;case ue.Config:r=o||e.config;break;case ue.Ready:case ue.Run:default:r=void 0}let a=!1;for(const n of Object.values(e.sources))n.on&&!1===await D(n.on)(t,r)&&(a=!0);return Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:r});we(e,o,n,t,r)}}),(Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0)&&await async function(e,t){var n,o;for(const[o,r]of Object.entries(e.pending.sources)){if(!e.pending.sources[o]||e.sources[o])continue;const s=null==(n=r.config)?void 0:n.require;if(!s)continue;const a=s.indexOf(t);if(-1===a)continue;if(s.splice(a,1),s.length>0)continue;delete e.pending.sources[o];const i=await he(e,o,r);i&&(e.sources[o]=i)}for(const[n,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[n]||e.destinations[n])continue;const s=null==(o=r.config)?void 0:o.require;if(!s)continue;const a=s.indexOf(t);if(-1===a)continue;if(s.splice(a,1),s.length>0)continue;delete e.pending.destinations[n];const i=$e(r);!1!==i.config.queue&&(i.queuePush=[...e.queue]),e.destinations[n]=i}}(e,t),ke(e,t,s,o),!a}(e,t,void 0,s),r=await _e(e)),r||Se({ok:!0})}function Pe(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");const{timestamp:r=Date.now(),name:s=`${n} ${o}`,data:a={},context:i={},globals:c=e.globals,custom:u={},user:l=e.user,nested:f=[],consent:d=e.consent,id:g=j(),trigger:p="",entity:y=n,action:v=o,timing:m=0,source:h={type:"collector",schema:"4"}}=t;return{name:s,data:a,context:i,globals:c,custom:u,user:l,nested:f,consent:d,id:g,trigger:p,entity:y,action:v,timestamp:r,timing:m,source:h}}async function De(e){var t,n;const o=f({globalsStatic:{},sessionStatic:{},run:!0},e,{merge:!1,extend:!1}),r=$({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},a={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0};var i,c;a.push=function(e,t){return M(async(n,o={})=>await D(async()=>{var r;const s=Date.now(),{id:a,ingest:i,respond:c,mapping:l,preChain:f,include:d,exclude:g}=o;let p=c,y=n;const v=d||g?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,g):void 0,m=null!=i?i:u(a||"unknown");if(l){const t=await T(y,l,e);if(t.ignore)return Se({ok:!0});if(l.consent&&!k(l.consent,e.consent,t.event.consent))return Se({ok:!0});y=t.event}if((null==f?void 0:f.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ve(e,e.transformers,f,y,m,p,a?`source.${a}.next`:void 0);if(null===n.event)return Se({ok:!0});if(n.respond&&(p=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=Pe(e,o);return _e(e,r,{id:a,ingest:m,respond:p},v)}));if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:Se({ok:!0})}y=n.event}const h=t(y),b=Pe(e,h),w=await _e(e,b,{id:a,ingest:m,respond:p},v);if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return w},()=>Se({ok:!1}))(),"Push",e.hooks,e.logger)}(a,e=>({timing:Math.round((Date.now()-a.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.0.0"},...e})),a.command=(c=Le,M(async(e,t,n)=>await D(async()=>await c(i,e,t,n),()=>Se({ok:!1}))(),"Command",(i=a).hooks,i.logger));const l=e.stores||{};if(a.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:a={}}=r,i=e.logger.scope("store").scope(o),c={collector:e,logger:i,id:o,config:s,env:a},u=await t(c),l=u.get,f=u.set,d=u.delete;u.get=M(l,"StoreGet",e.hooks,e.logger),u.set=M(f,"StoreSet",e.hooks,e.logger),u.delete=M(d,"StoreDelete",e.hooks,e.logger),n[o]=u}return n}(a,l),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(l,a.stores,e),!a.stores.__cache){const e=new Map;a.stores.__cache={type:"memory",config:{},get:t=>{const n=e.get(t);if(n){if(!(n.expires&&Date.now()>n.expires))return n.value;e.delete(t)}},set:(t,n,o)=>{e.set(t,{value:n,expires:o?Date.now()+o:void 0})},delete:t=>{e.delete(t)}}}return a.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,a]of Object.entries(t))(null==(o=null==(n=a.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=a:r[s]=$e(a);return r}(a,e.destinations||{}),a.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r,{config:a}=de(r,"before"),{config:i}=de({...r,config:a},"next"),c=Object.keys(s).length>0?{...i,env:s}:i,{cache:l}=r,f=l?{...c,cache:l}:c,d=e.logger.scope("transformer").scope(o),g={collector:e,logger:d,id:o,ingest:u(o),config:f,env:s},p=await t(g);n[o]=p}return n}(a,e.transformers||{}),a}async function Re(e){e=e||{};const t=await De(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,s,a)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,t,n)}let i;if("string"==typeof e)i={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=typeof e)return Se({ok:!1});i=e,t&&"object"==typeof t&&!Array.isArray(t)&&(i.data={...i.data||{},...t})}return r&&"object"==typeof r&&(i.context=r),s&&Array.isArray(s)&&(i.nested=s),a&&"object"==typeof a&&(i.custom=a),o.push(i)}});var o;t.sources.elb=n;const r=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{config:t={}}=r;if(t.require&&t.require.length>0){e.pending.sources[o]=r;continue}const s=await he(e,o,r);s&&(n[o]=s)}return n}(t,e.sources||{});Object.assign(t.sources,r);const{consent:s,user:a,globals:i,custom:c}=e;s&&await t.command("consent",s),a&&await t.command("user",a),i&&Object.assign(t.globals,i),c&&Object.assign(t.custom,c),t.config.run&&await t.command("run");let u=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),f=l.find(e=>e.config.primary);return f?u=f.push:l.length>0&&(u=l[0].push),{collector:t,elb:u}}var Ie,Te=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o,r;if(!t){const n={...e};if(n.sources){n.sources={...n.sources};for(const[e,t]of Object.entries(n.sources))(null==(o=t.env)?void 0:o.window)||(n.sources[e]={...t,env:{...t.env,window:window}})}const s=await Re({...n,run:null==(r=n.run)||r});t={collector:s.collector,elb:s.elb}}const s=window;s.dataLayer||(s.dataLayer=[]),s.dataLayer.push(n)}}},Me=(e,t)=>{const n=t.window;n.dataLayer||(n.dataLayer=[]),n.dataLayer.push(e)},Ce=async e=>{const{config:t,env:n}=e,{elb:o,window:r}=n,s={name:"dataLayer",prefix:"dataLayer",...null==t?void 0:t.settings},a={settings:s};let i=0;if(r){const t=s.name||"dataLayer",n=r[t];i=Array.isArray(n)?n.length:0;const c=r;!function(e,t,n=globalThis.window){const o=t.settings,r=(null==o?void 0:o.name)||"dataLayer";n[r]||(n[r]=[]);const s=n[r];if(!Array.isArray(s))return;const a=s.push.bind(s);s.push=function(...t){if(V)return a(...t);V=!0;try{for(const n of t)J(e,o,n)}finally{V=!1}return a(...t)}}(o,a,c),e.collector.allowed&&i>0&&(z(o,a,i,c),i=0)}return{type:"dataLayer",config:a,push:o,on:async e=>{if("run"===e&&r&&i>0){z(o,a,i,r),i=0}},destroy:async()=>{const e=s.name||"dataLayer";r&&r[e]&&Array.isArray(r[e])}}},Ue=Ce;return Ie=s,((r,s,a,i)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of n(s))o.call(r,c)||c===a||e(r,c,{get:()=>s[c],enumerable:!(i=t(s,c))||i.enumerable});return r})(e({},"__esModule",{value:!0}),Ie)})();
|
|
1
|
+
"use strict";var Destination=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},s={};r(s,{SourceDataLayer:()=>Q,createTrigger:()=>Me,default:()=>Ne,env:()=>X,sourceDataLayer:()=>Ue,step:()=>ne,trigger:()=>Ce});var a=Object.defineProperty;((e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})})({},{Level:()=>c});var i,c=((i=c||{})[i.ERROR=0]="ERROR",i[i.WARN=1]="WARN",i[i.INFO=2]="INFO",i[i.DEBUG=3]="DEBUG",i);function u(e){return{_meta:{hops:0,path:[e]}}}var l={merge:!0,shallow:!0,extend:!0};function f(e,t={},n={}){n={...l,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const s=e[o];return n.merge&&Array.isArray(s)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function d(e){return Array.isArray(e)}function g(e){return void 0!==e}function p(e){return"function"==typeof e}function v(e){return"object"==typeof e&&null!==e&&!d(e)&&"[object Object]"===Object.prototype.toString.call(e)}function y(e){return"string"==typeof e}function m(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=m(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(m(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function h(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&d(r)){const t=o.slice(e+1).join("."),s=[];for(const e of r){const o=h(e,t,n);s.push(o)}return s}if(r=r instanceof Object?r[t]:void 0,void 0===r)break}return g(r)?r:n}function b(e,t,n){if(!v(e))return e;const o=m(e),r=t.split(".");let s=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return o}var w={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing})};function k(e,t={},n={}){const o={...t,...n},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(s=!0))}),!!s&&r}function j(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function O(e=6,t){if(t){const n=t.length;let o="";for(let r=0;r<e;r++)o+=t[Math.random()*n|0];return o}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}function _(e,t=1e3,n=!1){let o,r=null,s=!1;return(...a)=>new Promise(i=>{const c=n&&!s;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!s||(o=e(...a),i(o))},t),c&&(s=!0,o=e(...a),i(o))})}function A(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function x(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=A(e)):n=e,void 0!==t&&(t instanceof Error?o.error=A(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=A(o.error))):o.value=t),{message:n,context:o}}var S=(e,t,n,o)=>{const r=`${c[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(n).length>0,a=0===e?console.error:1===e?console.warn:console.log;s?a(r,t,n):a(r,t)};function q(e={}){return $({level:void 0!==e.level?(t=e.level,"string"==typeof t?c[t]:t):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var t}function $(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=t){const t=x(o,s);n?n(e,t.message,t.context,r,S):S(e,t.message,t.context,r)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const o=x(e,t);throw n?n(0,o.message,o.context,r,S):S(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>$({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function E(e){return function(e){return"boolean"==typeof e}(e)||y(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!g(e)||d(e)&&e.every(E)||v(e)&&Object.values(e).every(E)}function L(e){return E(e)?e:void 0}function P(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function D(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function R(e,t={},n={}){var o,r;if(!g(e))return;const s=v(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),a=null!=(r=n.event)?r:v(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const i={event:a,mapping:t,collector:n.collector,logger:n.collector.logger,consent:s},c=d(t)?t:[t];for(const t of c){const n=await D(I)(e,t,{...i,mapping:t});if(g(n))return n}}async function I(e,t,n){return(d(t)?t:[t]).reduce(async(t,o)=>{const r=await t;if(r)return r;const s=y(o)?{key:o}:o;if(!Object.keys(s).length)return;const{condition:a,consent:i,fn:c,key:u,loop:l,map:f,set:p,validate:v,value:m}=s,b={...n,mapping:o};if(a&&!await D(a)(e,b))return;if(i&&!k(i,b.consent))return m;let w=g(m)?m:e;if(c&&(w=await D(c)(e,b)),u&&(w=h(e,u,m)),l){const[t,n]=l,o="this"===t?[e]:await R(e,t,b);d(o)&&(w=(await Promise.all(o.map(e=>R(e,n,b)))).filter(g))}else f?w=await Object.entries(f).reduce(async(t,[n,o])=>{const r=await t,s=await R(e,o,b);return g(s)&&(r[n]=s),r},Promise.resolve({})):p&&(w=await Promise.all(p.map(t=>I(e,t,b))));v&&!await D(v)(w,b)&&(w=void 0);const j=L(w);return g(j)?j:L(m)},Promise.resolve(void 0))}async function T(e,t,n){var o;t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await R(e,o,{collector:n,event:e});e=b(e,t,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,t,n){var o;const[r,s]=(e.name||"").split(" ");if(!t||!r||!s)return{};let a,i="",c=r,u=s;const l=t=>{if(t)return(d(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const o={event:e,mapping:t,collector:n,logger:n.logger,consent:v(e)&&e.consent||n.consent};return Boolean(t.condition(e,o))})};t[c]||(c="*");const f=t[c];return f&&(f[u]||(u="*"),a=l(f[u])),a||(c="*",u="*",a=l(null==(o=t[c])?void 0:o[u])),a&&(i=`${c} ${u}`),{eventMapping:a,mappingKey:i}}(e,t.mapping,n);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([t,o])=>{const r=await R(e,o,{collector:n,event:e});e=b(e,t,r)}));let a=t.data&&await R(e,t.data,{collector:n,event:e});const i=Boolean(null==r?void 0:r.silent);if(r){if(r.ignore)return{event:e,data:a,mapping:r,mappingKey:s,ignore:!0,silent:i};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await R(e,r.data,{collector:n,event:e});a=v(a)&&v(t)?f(a,t):t}}const c=null!=(o=null==r?void 0:r.include)?o:t.include;if(c&&c.length>0){const t=function(e,t){const n={},o=t.includes("all")?Object.keys(w):t;for(const t of o){const o=w[t];if(!o)continue;const r=o(e);if(v(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===t&&Array.isArray(o)?o[0]:o;n[`${t}_${e}`]=r}}return n}(e,c);Object.keys(t).length>0&&(a=v(a)?f(t,a):null!=a?a:t)}return{event:e,data:a,mapping:r,mappingKey:s,ignore:!1,silent:i}}function M(e,t,n,o){return function(...r){let s;const a="pre"+t,i="post"+t,c=n[a],u=n[i],l=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:e},...r)}catch(t){l(`Hook ${String(a)} failed, falling back to original function`,t),s=e(...r)}else s=e(...r);if(u)try{s=u({fn:e,result:s},...r)}catch(e){l(`Hook ${String(i)} failed, keeping original result`,e)}return s}}function C(e){if("*"===e)return()=>!0;if("and"in e){const t=e.and.map(C);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(C);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,s=function(e,t){switch(e){case"eq":return e=>String(null!=e?e:"")===t;case"contains":return e=>String(null!=e?e:"").includes(t);case"prefix":return e=>String(null!=e?e:"").startsWith(t);case"suffix":return e=>String(null!=e?e:"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(null!=t?t:""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,o);return e=>{const n=h(e,t),o=s(n);return r?!o:o}}(e)}function U(e){return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&null!==e[0]&&"match"in e[0]}function N(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return U(e)?{type:"routes",routes:e.map(e=>({match:C(e.match),next:N(e.next)}))}:{type:"chain",value:e}}}}function H(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;for(const n of e.routes)if(n.match(t))return H(n.next,t)}}function K(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function B(e){var t;return{full:null!=(t=e.full)&&t,storeId:e.store,rules:e.rules.map(e=>({match:C(e.match),key:e.key,ttl:e.ttl,update:e.update}))}}function G(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const s=r.key.map(e=>{var t;return String(null!=(t=h(n,e))?t:"")});if(s.every(e=>""===e))return null;const a=`${o}:${s.join(":")}`,i=t.get(a);return void 0!==i?{status:"HIT",key:a,value:i,rule:r}:{status:"MISS",key:a,rule:r}}function W(e,t,n,o){e.set(t,n,1e3*o)}async function F(e,t,n,o){if(!t)return e;let r=e;for(const[e,s]of Object.entries(t))r=b(r,e,await R(n,s,{collector:o}));return r}var V=!1;function z(e,t={},n){if(t.filter){if(!0===P(()=>t.filter(n),()=>!1)())return}const o=function(e){if(v(e)&&y(e.event)){const{event:t,...n}=e;return{name:t,...n}}if(d(e)&&e.length>=2)return J(e);if(t=e,null!=t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0){return J(Array.from(e))}var t;return null}(n);if(!o)return;const r=`${t.prefix||"dataLayer"} ${o.name}`,{name:s,...a}=o,i={name:r,data:a};P(()=>e(i),()=>{})()}function J(e){const[t,n,o]=e;if(!y(t))return null;let r,s={};switch(t){case"consent":if(!y(n)||e.length<3)return null;if("default"!==n&&"update"!==n)return null;if(!v(o)||null===o)return null;r=`${t} ${n}`,s={...o};break;case"event":if(!y(n))return null;r=n,v(o)&&(s={...o});break;case"config":if(!y(n))return null;r=`${t} ${n}`,v(o)&&(s={...o});break;case"set":if(y(n))r=`${t} ${n}`,v(o)&&(s={...o});else{if(!v(n))return null;r=`${t} custom`,s={...n}}break;default:return null}return{name:r,...s}}var Q={},X={};r(X,{push:()=>te});var Y=()=>{},Z=()=>()=>Promise.resolve({ok:!0}),ee={error:Y,warn:Y,info:Y,debug:Y,throw:e=>{throw"string"==typeof e?new Error(e):e},json:Y,scope:()=>ee},te={get push(){return Z()},get command(){return Z()},get elb(){return Z()},get window(){return{dataLayer:[],addEventListener:Y,removeEventListener:Y}},logger:ee},ne={};r(ne,{consentUpdate:()=>re,directEvent:()=>ie,gtagAddToCart:()=>se,gtagPurchase:()=>oe,gtagViewItem:()=>ae});var oe={title:"gtag purchase",description:"A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.",trigger:{type:"gtag"},in:["event","purchase",{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}],out:[["elb",{name:"dataLayer purchase",data:{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}}]]},re={title:"Consent update",description:"A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.",trigger:{type:"gtag"},in:["consent","update",{ad_storage:"granted",analytics_storage:"granted"}],out:[["elb",{name:"dataLayer consent update",data:{ad_storage:"granted",analytics_storage:"granted"}}]]},se={title:"gtag add_to_cart",description:"A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.",trigger:{type:"gtag"},in:["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}],out:[["elb",{name:"dataLayer add_to_cart",data:{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}}]]},ae={title:"gtag view_item",description:"A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.",trigger:{type:"gtag"},in:["event","view_item",{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}],out:[["elb",{name:"dataLayer view_item",data:{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}}]]},ie={title:"Direct dataLayer event",description:"A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.",trigger:{type:"direct"},in:{event:"custom_event",category:"engagement",label:"video_play"},out:[["elb",{name:"dataLayer custom_event",data:{category:"engagement",label:"video_play"}}]]},ce={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ue(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function le(e){var t;const n={};for(const[o,r]of Object.entries(e)){const e=null==(t=r.config)?void 0:t.next;e&&!U(e)?n[o]={next:e}:n[o]={}}return n}function fe(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function de(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function ge(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:u(n),config:t.config,env:ye(t.config.env)};r.debug("init");const a=await M(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===a)return!1;t.config={...a||t.config,env:(null==a?void 0:a.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function pe(e,t,n,o,r,s){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:r,config:t.config,env:{...ye(t.config.env),...s?{respond:s}:{}}};i.debug("push",{event:o.name});const u=await M(t.push,"TransformerPush",e.hooks,e.logger)(o,c);return i.debug("push done"),u}async function ve(e,t,n,o,r,s,a){var i,c,l,f,d,g;a&&(null==r?void 0:r._meta)&&(r._meta.chainPath=a);let p=o,v=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:v};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await D(ge)(e,s,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:v};if(a&&void 0!==(null==(c=null==(i=s.config)?void 0:i.chainMocks)?void 0:c[a])){const t=s.config.chainMocks[a];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:a}),p=t;continue}if(void 0!==(null==(l=s.config)?void 0:l.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),p=s.config.mock;continue}if(null==(f=s.config)?void 0:f.disabled)continue;const y=null==(d=s.config)?void 0:d.cache,m=y?B(y):void 0,h=m?ue(m,e):void 0;let b;if(m&&h){const e=G(m,h,K(r,p),`t:${o}`);if("HIT"===(null==e?void 0:e.status)&&e.value){if(p=e.value,m.full)return{event:p,respond:v};continue}"MISS"===(null==e?void 0:e.status)&&(b={key:e.key,ttl:e.rule.ttl})}const w=s.config.before;if(w){const n=de("string"==typeof w||Array.isArray(w)&&!U(w)?w:H(N(w),K(r,p))||void 0,le(t));if(n.length>0){const o=await ve(e,t,n,p,r,v,a);if(null===o.event)return{event:null,respond:null!=(g=o.respond)?g:v};o.respond&&(v=o.respond),p=Array.isArray(o.event)?o.event[0]:o.event}}const k=await D(pe,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,p,r,v);if(!1===k)return{event:null,respond:v};if(Array.isArray(k)){const s=n.slice(n.indexOf(o)+1),i=await Promise.all(k.map(async n=>{const o=n.event||p,i=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:u("unknown");if(n.next){let r=n.next;if(U(n.next)){r=H(N(n.next),K(i,o))}if(r){const n=de(r,le(t));if(n.length>0)return ve(e,t,n,o,i,v,a)}return{event:o,respond:v}}return s.length>0?ve(e,t,s,o,i,v,a):{event:o,respond:v}}));let c=v;const l=[];for(const e of i.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(k&&"object"==typeof k){const{event:n,respond:o,next:s}=k;if(o&&(v=o),s){let o=s;if(U(s)){if(o=H(N(s),K(r,p)),!o){n&&(p=n);continue}}const i=de(o,le(t));return i.length>0?ve(e,t,i,n||p,r,v,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:v})}n&&(p=n)}if(b&&h&&W(h,b.key,p,b.ttl),(!k||"object"==typeof k&&!k.next)&&s.config.next&&U(s.config.next)){const n=H(N(s.config.next),K(r,p));if(n){const o=de(n,le(t));if(o.length>0)return ve(e,t,o,p,r,v,a)}return{event:p,respond:v}}}return{event:p,respond:v}}function ye(e){return e&&v(e)?e:{}}async function me(e,t){var n;if(!t.on||!(null==(n=t.queueOn)?void 0:n.length))return;const o=t.queueOn;t.queueOn=[];for(const{type:e,data:n}of o)await D(t.on)(e,n)}function he(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function be(e,t,n){var o;const{code:r,config:s={},env:a={},primary:i,next:c,before:l,cache:f}=n;let d,g=u(t);const p=f?B({...f,full:null==(o=f.full)||o}):void 0,v=N(c),y=Array.isArray(c)&&U(c)||!v?void 0:de(H(v),le(e.transformers)),m=N(l),h=Array.isArray(l)&&U(l)||!m?void 0:de(H(m),le(e.transformers)),b=e.logger.scope("source").scope(t),w={push:async(n,o={})=>{let r,a=n;const i=null!=h?h:m?de(H(m,K(g)),le(e.transformers)):[];if(i.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ve(e,e.transformers,i,a,g,d,`source.${t}.before`);if(null===n.event)return{ok:!0};n.respond&&(d=n.respond),a=Array.isArray(n.event)?n.event[0]:n.event}if(p){const n=ue(p,e);if(n){const o=K(g),s=G(p,n,o,`s:${t}`);if(s){if("HIT"===s.status&&void 0!==s.value&&p.full){let t=s.value;return s.rule.update&&(t=await F(t,s.rule.update,{...o,cache:{status:"HIT"}},e)),null==d||d(t),{ok:!0}}if("MISS"===s.status&&p.full&&d){const t=d,a=s.rule.update,i={...o,cache:{status:"MISS"}},c=s.key,u=s.rule.ttl;d=o=>{W(n,c,o,u),a?r=(async()=>{const n=await F(o,a,i,e);t(n)})():t(o)}}"MISS"!==s.status||p.full||W(n,s.key,!0,s.rule.ttl)}}}const c=null!=y?y:v?de(H(v,K(g)),le(e.transformers)):[],u=await e.push(a,{...o,id:t,ingest:g,respond:d,mapping:s,preChain:c});return r&&await r,u},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:b,...a},k={collector:e,logger:b,id:t,config:s,env:w,setIngest:async n=>{if(!s.ingest)return void(g=u(t));const o=await R(n,s.ingest,{collector:e}),r=u(t);g={...r,...o,_meta:r._meta}},setRespond:e=>{d=e}},j=await D(r)(k);if(!j)return;const O=j.type||"unknown",_=e.logger.scope(O).scope(t);return w.logger=_,i&&(j.config={...j.config,primary:i}),j}function we(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function ke(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",a=e.logger.scope(s).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:r,env:Ee(t.env,t.config.env)};P(t.on)(o,i)}function je(e,t,n,o){let r;switch(t){case ce.Consent:r=o||e.consent;break;case ce.Session:r=e.session;break;case ce.User:r=o||e.user;break;case ce.Custom:r=o||e.custom;break;case ce.Globals:r=o||e.globals;break;case ce.Config:r=o||e.config;break;case ce.Ready:case ce.Run:default:r=void 0}if(n.length)switch(t){case ce.Consent:!function(e,t,n){const o=n||e.consent,r=we(e,ce.Consent);t.forEach(e=>{Object.keys(o).filter(t=>t in e).forEach(t=>{P(e[t])(o,r)})})}(e,n,o);break;case ce.Ready:!function(e,t){if(!e.allowed)return;const n=we(e,ce.Ready);t.forEach(e=>{P(e)(void 0,n)})}(e,n);break;case ce.Run:!function(e,t){if(!e.allowed)return;const n=we(e,ce.Run);t.forEach(e=>{P(e)(void 0,n)})}(e,n);break;case ce.Session:!function(e,t){if(!e.session)return;const n=we(e,ce.Session);t.forEach(t=>{P(t)(e.session,n)})}(e,n);break;default:{const o=we(e,t);n.forEach(e=>{"function"==typeof e&&P(e)(r,o)});break}}}function Oe(e,t,n,o){if(!e)return[];if(t){const e=H(t,K(o));return e?de(e,le(n)):[]}return de(e,le(n))}async function _e(e,t,n){const{code:o,config:r={},env:s={},before:a,next:i,cache:c}=t;if(!p(o.push))return qe({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=n||r||{init:!1};let l=a?{...u,before:a}:{...u};i&&(l={...l,next:i}),c&&(l={...l,cache:c});const f={...o,config:l,env:Ee(o.env,s)};let d=f.config.id;if(!d)do{d=O(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),Ae(e,void 0,{},{[d]:f})}async function Ae(e,t,n={},o){const{allowed:r,consent:s,globals:a,user:i}=e;if(!r)return qe({ok:!1});t&&(e.queue.push(t),e.status.in++),o||(o=e.destinations);const c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var c,l,d;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let g=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],t&&g.push(m(t));const p=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:u("unknown");if(!g.length&&!(null==(c=r.queueOn)?void 0:c.length))return{id:o,destination:r,skipped:!0};if(!g.length&&(null==(l=r.queueOn)?void 0:l.length)){const t=await D(xe)(e,r,o);return{id:o,destination:r,skipped:!t}}const v=[],y=g.filter(e=>{const t=k(r.config.consent,s,e.consent);return!t||(e.consent=t,v.push(e),!1)});if(r.queuePush.push(...y),!v.length)return{id:o,destination:r,queue:g};if(!await D(xe)(e,r,o))return{id:o,destination:r,queue:g};let h,b;r.dlq||(r.dlq=[]);const w=r.config.before,j=Oe(w,w&&U(w)?N(w):void 0,e.transformers,p),O=r.config.next,_=O&&U(O)?N(O):void 0,A=null==(d=r.config)?void 0:d.cache,x=A?B(A):void 0,S=x?ue(x,e):void 0;let q=0;return await Promise.all(v.map(async t=>{let s;if(t.globals=f(a,t.globals),t.user=f(i,t.user),(null==x?void 0:x.full)&&S){const e=K(p,t),n=G(x,S,e,`d:${o}`);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let c=t,u=n.respond;if(j.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ve(e,e.transformers,j,t,p,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(x&&!x.full&&S){const e=K(p,c),n=G(x,S,e,`d:${o}`);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}const l=Date.now();let d=!1;const g=await D(Se,t=>{const n=r.type||"unknown";e.logger.scope(n).error("Push failed",{error:t,event:c.name}),h=t,d=!0,r.dlq.push([c,t])})(e,r,o,c,p,u);if(q+=Date.now()-l,s&&S&&void 0===r.config.mock&&W(S,s.key,null==g||g,s.ttl),void 0!==g&&(b=g),!d&&O){void 0!==g&&(p._response=g);const t=Oe(O,_,e.transformers,p);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ve(e,e.transformers,t,c,p,u,`destination.${o}.next`);n.respond&&(u=n.respond)}}return t})),{id:o,destination:r,error:h,response:b,totalDuration:q}})),l={},d={},g={};for(const t of c){if(t.skipped)continue;const n={type:t.destination.type||"unknown",data:t.response};e.status.destinations[t.id]||(e.status.destinations[t.id]={count:0,failed:0,duration:0});const o=e.status.destinations[t.id],r=Date.now();t.error?(n.error=t.error,g[t.id]=n,o.failed++,o.lastAt=r,o.duration+=t.totalDuration||0,e.status.failed++):t.queue&&t.queue.length?d[t.id]=n:(l[t.id]=n,o.count++,o.lastAt=r,o.duration+=t.totalDuration||0,e.status.out++)}return qe({event:t,...Object.keys(l).length&&{done:l},...Object.keys(d).length&&{queued:d},...Object.keys(g).length&&{failed:g}})}async function xe(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",s=e.logger.scope(r),a={collector:e,logger:s,id:n,config:t.config,env:Ee(t.env,t.config.env)};s.debug("init");const i=await M(t.init,"DestinationInit",e.hooks,e.logger)(a);if(!1===i)return i;if(t.config={...i||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)ke(e,t,n,r,s)}s.debug("init done")}return!0}async function Se(e,t,n,o,r,s){const{config:a}=t,i=await T(o,a,e);if(i.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),l={collector:e,logger:u,id:n,config:a,data:i.data,rule:i.mapping,ingest:r,env:{...Ee(t.env,a.env),...s?{respond:s}:{}}};if(void 0!==a.mock)return u.debug("mock",{event:i.event.name}),a.mock;const f=i.mapping,d=i.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!t.pushBatch||void 0!==a.mock){u.debug("push",{event:i.event.name});const n=await M(t.push,"DestinationPush",e.hooks,e.logger)(i.event,l);return u.debug("push done"),n}{if(t.batches=t.batches||{},!t.batches[d]){const o={key:d,events:[],data:[]};t.batches[d]={batched:o,batchFn:_(()=>{const o=t.batches[d].batched,i={collector:e,logger:u,id:n,config:a,data:void 0,rule:f,ingest:r,env:{...Ee(t.env,a.env),...s?{respond:s}:{}}};u.debug("push batch",{events:o.events.length}),M(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,i),u.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=t.batches[d];o.batched.events.push(i.event),g(i.data)&&o.batched.data.push(i.data),o.batchFn()}return!0}function qe(e){return{ok:!(null==e?void 0:e.failed),...e}}function $e(e){const{code:t,config:n={},env:o={},cache:r}=e,{config:s}=fe(e,"before"),{config:a}=fe({...e,config:s},"next"),i={...t.config,...n,...a};r&&(i.cache=r);const c=Ee(t.env,o);return{...t,config:i,env:c}}function Ee(e,t){return e||t?t?e&&v(e)&&v(t)?{...e,...t}:t:e:{}}async function Le(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const a=o.type||"unknown",i=n.scope(a),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:i};try{await Promise.race([s(c),new Promise((n,o)=>setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3))])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}});await Promise.allSettled(o)}async function Pe(e,t,n,o){let r,s,a=!1;switch(t){case ce.Config:v(n)&&(f(e.config,n,{shallow:!1}),s=n,a=!0);break;case ce.Consent:if(v(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=f(e.consent,n),{update:n}}(e,n);s=t,a=!0}break;case ce.Custom:v(n)&&(e.custom=f(e.custom,n),s=n,a=!0);break;case ce.Destination:v(n)&&("code"in n&&v(n.code)?r=await _e(e,n,o):p(n.push)&&(r=await _e(e,{code:n},o)));break;case ce.Globals:v(n)&&(e.globals=f(e.globals,n),s=n,a=!0);break;case ce.On:y(n)&&await async function(e,t,n){const o=e.on,r=o[t]||[],s=d(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,je(e,t,s)}(e,n,o);break;case ce.Ready:a=!0;break;case ce.Run:r=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),t&&(t.consent&&(e.consent=f(e.consent,t.consent)),t.user&&(e.user=f(e.user,t.user)),t.globals&&(e.globals=f(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=f(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Ae(e)}(e,n),a=!0;break;case ce.Session:a=!0;break;case ce.Shutdown:await async function(e){const t=e.logger;await Le(e.sources,"source",t),await Le(e.destinations,"destination",t),await Le(e.transformers,"transformer",t),await Le(e.stores,"store",t)}(e);break;case ce.User:v(n)&&(f(e.user,n,{shallow:!1}),s=n,a=!0)}return a&&(await async function(e,t,n,o){var r,s;let a,i=n||[];switch(n||(i=e.on[t]||[]),t){case ce.Consent:a=o||e.consent;break;case ce.Session:a=e.session;break;case ce.User:a=o||e.user;break;case ce.Custom:a=o||e.custom;break;case ce.Globals:a=o||e.globals;break;case ce.Config:a=o||e.config;break;case ce.Ready:case ce.Run:default:a=void 0}let c=!1;for(const n of Object.values(e.sources)){if(null==(r=n.config.require)?void 0:r.length){const e=n.config.require.indexOf(t);-1!==e&&n.config.require.splice(e,1)}n.on&&(he(n)?!1===await D(n.on)(t,a)&&(c=!0):(n.queueOn=n.queueOn||[],n.queueOn.push({type:t,data:a})))}Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:a});ke(e,o,n,t,a)}});for(const t of Object.values(e.sources))he(t)&&(null==(s=t.queueOn)?void 0:s.length)&&await me(0,t);return Object.keys(e.pending.destinations).length>0&&await async function(e,t){var n;for(const[o,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[o]||e.destinations[o])continue;const s=null==(n=r.config)?void 0:n.require;if(!s)continue;const a=s.indexOf(t);if(-1===a)continue;if(s.splice(a,1),s.length>0)continue;delete e.pending.destinations[o];const i=$e(r);!1!==i.config.queue&&(i.queuePush=[...e.queue]),e.destinations[o]=i}}(e,t),je(e,t,i,o),!c}(e,t,void 0,s),r=await Ae(e)),r||qe({ok:!0})}function De(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");const{timestamp:r=Date.now(),name:s=`${n} ${o}`,data:a={},context:i={},globals:c=e.globals,custom:u={},user:l=e.user,nested:f=[],consent:d=e.consent,id:g=j(),trigger:p="",entity:v=n,action:y=o,timing:m=0,source:h={type:"collector",schema:"4"}}=t;return{name:s,data:a,context:i,globals:c,custom:u,user:l,nested:f,consent:d,id:g,trigger:p,entity:v,action:y,timestamp:r,timing:m,source:h}}async function Re(e){var t,n;const o=f({globalsStatic:{},sessionStatic:{},run:!0},e,{merge:!1,extend:!1}),r=q({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},a={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},push:void 0,command:void 0};var i,c;a.push=function(e,t){return M(async(n,o={})=>await D(async()=>{var r;const s=Date.now(),{id:a,ingest:i,respond:c,mapping:l,preChain:f,include:d,exclude:g}=o;let p=c,v=n;const y=d||g?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,g):void 0,m=null!=i?i:u(a||"unknown");if(l){const t=await T(v,l,e);if(t.ignore)return qe({ok:!0});if(l.consent&&!k(l.consent,e.consent,t.event.consent))return qe({ok:!0});v=t.event}if((null==f?void 0:f.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ve(e,e.transformers,f,v,m,p,a?`source.${a}.next`:void 0);if(null===n.event)return qe({ok:!0});if(n.respond&&(p=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=De(e,o);return Ae(e,r,{id:a,ingest:m,respond:p},y)}));if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:qe({ok:!0})}v=n.event}const h=t(v),b=De(e,h),w=await Ae(e,b,{id:a,ingest:m,respond:p},y);if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return w},()=>qe({ok:!1}))(),"Push",e.hooks,e.logger)}(a,e=>({timing:Math.round((Date.now()-a.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.0-next-1778155282668"},...e})),a.command=(c=Pe,M(async(e,t,n)=>await D(async()=>await c(i,e,t,n),()=>qe({ok:!1}))(),"Command",(i=a).hooks,i.logger));const l=e.stores||{};if(a.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:a={}}=r,i=e.logger.scope("store").scope(o),c={collector:e,logger:i,id:o,config:s,env:a},u=await t(c),l=u.get,f=u.set,d=u.delete;u.get=M(l,"StoreGet",e.hooks,e.logger),u.set=M(f,"StoreSet",e.hooks,e.logger),u.delete=M(d,"StoreDelete",e.hooks,e.logger),n[o]=u}return n}(a,l),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(l,a.stores,e),!a.stores.__cache){const e=new Map;a.stores.__cache={type:"memory",config:{},get:t=>{const n=e.get(t);if(n){if(!(n.expires&&Date.now()>n.expires))return n.value;e.delete(t)}},set:(t,n,o)=>{e.set(t,{value:n,expires:o?Date.now()+o:void 0})},delete:t=>{e.delete(t)}}}return a.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,a]of Object.entries(t))(null==(o=null==(n=a.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=a:r[s]=$e(a);return r}(a,e.destinations||{}),a.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r,{config:a}=fe(r,"before"),{config:i}=fe({...r,config:a},"next"),c=Object.keys(s).length>0?{...i,env:s}:i,{cache:l}=r,f=l?{...c,cache:l}:c,d=e.logger.scope("transformer").scope(o),g={collector:e,logger:d,id:o,ingest:u(o),config:f,env:s},p=await t(g);n[o]=p}return n}(a,e.transformers||{}),a}async function Ie(e){e=e||{};const t=await Re(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,s,a)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,t,n)}let i;if("string"==typeof e)i={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=typeof e)return qe({ok:!1});i=e,t&&"object"==typeof t&&!Array.isArray(t)&&(i.data={...i.data||{},...t})}return r&&"object"==typeof r&&(i.context=r),s&&Array.isArray(s)&&(i.nested=s),a&&"object"==typeof a&&(i.custom=a),o.push(i)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await be(e,r,s);if(!t)continue;const a=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...a?{require:[...a]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];n.init&&await D(n.init.bind(n))(),n.config.init=!0,he(n)&&await me(0,n)}return o}(t,e.sources||{});const{consent:r,user:s,globals:a,custom:i}=e;r&&await t.command("consent",r),s&&await t.command("user",s),a&&Object.assign(t.globals,a),i&&Object.assign(t.custom,i),t.config.run&&await t.command("run");let c=n.push;const u=Object.values(t.sources).filter(e=>"elb"!==e.type),l=u.find(e=>e.config.primary);return l?c=l.push:u.length>0&&(c=u[0].push),{collector:t,elb:c}}var Te,Me=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{var o,r;if(!t){const n={...e};if(n.sources){n.sources={...n.sources};for(const[e,t]of Object.entries(n.sources))(null==(o=t.env)?void 0:o.window)||(n.sources[e]={...t,env:{...t.env,window:window}})}const s=await Ie({...n,run:null==(r=n.run)||r});t={collector:s.collector,elb:s.elb}}const s=window;s.dataLayer||(s.dataLayer=[]),s.dataLayer.push(n)}}},Ce=(e,t)=>{const n=t.window;n.dataLayer||(n.dataLayer=[]),n.dataLayer.push(e)},Ue=async e=>{const{config:t,env:n}=e,{elb:o,window:r}=n,s={name:"dataLayer",prefix:"dataLayer",...null==t?void 0:t.settings},a={settings:s};let i=0;return{type:"dataLayer",config:a,push:o,on:async e=>{if("run"===e&&r&&i>0){!function(e,t,n,o=globalThis.window){const r=t.settings,s=o[(null==r?void 0:r.name)||"dataLayer"];if(Array.isArray(s)&&!V){V=!0;try{const t=null!=n?n:s.length;for(let n=0;n<t;n++)z(e,r,s[n])}finally{V=!1}}}(o,a,i,r),i=0}},init:()=>{if(!r)return;const e=s.name||"dataLayer",t=r[e];i=Array.isArray(t)?t.length:0;!function(e,t,n=globalThis.window){const o=t.settings,r=(null==o?void 0:o.name)||"dataLayer";n[r]||(n[r]=[]);const s=n[r];if(!Array.isArray(s))return;const a=s.push.bind(s);s.push=function(...t){if(V)return a(...t);V=!0;try{for(const n of t)z(e,o,n)}finally{V=!1}return a(...t)}}(o,a,r)},destroy:async()=>{const e=s.name||"dataLayer";r&&r[e]&&Array.isArray(r[e])}}},Ne=Ue;return Te=s,((r,s,a,i)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of n(s))o.call(r,c)||c===a||e(r,c,{get:()=>s[c],enumerable:!(i=t(s,c))||i.enumerable});return r})(e({},"__esModule",{value:!0}),Te)})();
|
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 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,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function s(e){asyncGeneratorStep(a,r,o,s,i,"next",e)}function i(e){asyncGeneratorStep(a,r,o,s,i,"throw",e)}s(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,o,a=[],s=!0,i=!1;try{for(n=n.call(e);!(s=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==n.return||n.return()}finally{if(i)throw o}}return a}}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 _object_without_properties(e,t){if(null==e)return{};var n,r,o,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(Object(e)),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}if(a=_object_without_properties_loose(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}function _object_without_properties_loose(e,t){if(null==e)return{};var n,r,o={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}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,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:c(0)}),i(s,"throw",{value:c(1)}),i(s,"return",{value:c(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function _ts_values(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var Destination=function(){var e=function(e){return{_meta:{hops:0,path:[e]}}},t=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({},ve,n);var r=Object.entries(t).reduce(function(t,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return n.merge&&Array.isArray(i)&&Array.isArray(s)?t[a]=s.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(i)):(n.extend||a in e)&&(t[a]=s),t},{});return n.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},n=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},o=function(e){return"function"==typeof e},a=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!n(e)&&"[object Object]"===Object.prototype.toString.call(e)},s=function(e){return"string"==typeof e},i=function(e,t,n){if(!a(e))return e;for(var r=ye(e),o=t.split("."),s=r,i=0;i<o.length;i++){var c=o[i];i===o.length-1?s[c]=n:(c in s&&"object"==_type_of(s[c])&&null!==s[c]||(s[c]={}),s=s[c])}return r},c=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=!e||0===Object.keys(e).length;return Object.keys(t).forEach(function(o){t[o]&&(n[o]=!0,e&&e[o]&&(r=!0))}),!!r&&n},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t=arguments.length>1?arguments[1]:void 0;if(t){for(var n=t.length,r="",o=0;o<e;o++)r+=t[Math.random()*n|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},l=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var s=arguments.length,i=new Array(s),c=0;c<s;c++)i[c]=arguments[c];return new Promise(function(s){var c=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(t=e.apply(void 0,_to_consumable_array(i)),s(t))},n),c&&(a=!0,t=e.apply(void 0,_to_consumable_array(i)),s(t))})}},f=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},d=function(e,t){var n,r={};return _instanceof(e,Error)?(n=e.message,r.error=f(e)):n=e,void 0!==t&&(_instanceof(t,Error)?r.error=f(t):"object"==(void 0===t?"undefined":_type_of(t))&&null!==t?"error"in(r=_object_spread({},r,t))&&_instanceof(r.error,Error)&&(r.error=f(r.error)):r.value=t),{message:n,context:r}},_=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return we({level:void 0!==t.level?(e=t.level,"string"==typeof e?pe[e]:e):0,handler:t.handler,jsonHandler:t.jsonHandler,scope:[]})},g=function(e){return je(e)?e:void 0},p=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}},v=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),t?[4,t(r)]:[2];case 4:return[4,null==n?void 0:n()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},y=function(e,t,r){return _async_to_generator(function(){var o,s,i,c,u,l,f,d,_,g;return _ts_generator(this,function(p){return s=_sliced_to_array((e.name||"").split(" "),2),i=s[0],c=s[1],t&&i&&c?(l="",d=c,_=function(t){if(t)return(n(t)?t:[t]).find(function(t){if(!t.condition)return!0;if(!r)return Boolean(t.condition(e,void 0));var n={event:e,mapping:t,collector:r,logger:r.logger,consent:a(e)&&e.consent||r.consent};return Boolean(t.condition(e,n))})},t[f=i]||(f="*"),[2,((g=t[f])&&(g[d]||(d="*"),u=_(g[d])),u||(f="*",d="*",u=_(null===(o=t[f])||void 0===o?void 0:o[d])),u&&(l="".concat(f," ").concat(d)),{eventMapping:u,mappingKey:l})]):[2,{}]})})()},b=function(e){return _async_to_generator(function(e){var t,o,s,i,c,u,l,f,d,_,g,p,y,b,h,m,w=arguments;return _ts_generator(this,function(j){switch(j.label){case 0:if(t=w.length>1&&void 0!==w[1]?w[1]:{},o=w.length>2&&void 0!==w[2]?w[2]:{},!r(e))return[2];if(c=a(e)&&e.consent||o.consent||(null===(i=o.collector)||void 0===i?void 0:i.consent),u=null!==(s=o.event)&&void 0!==s?s:a(e)?e:{},!o.collector)throw new Error("getMappingValue: context.collector is required");l={event:u,mapping:t,collector:o.collector,logger:o.collector.logger,consent:c},f=n(t)?t:[t],d=!0,_=!1,g=void 0,j.label=1;case 1:j.trys.push([1,6,7,8]),p=f[Symbol.iterator](),j.label=2;case 2:return(d=(y=p.next()).done)?[3,5]:(b=y.value,[4,v(ke)(e,b,_object_spread_props(_object_spread({},l),{mapping:b}))]);case 3:if(h=j.sent(),r(h))return[2,h];j.label=4;case 4:return d=!0,[3,2];case 5:return[3,8];case 6:return m=j.sent(),_=!0,g=m,[3,8];case 7:try{d||null==p.return||p.return()}finally{if(_)throw g}return[7];case 8:return[2]}})}).apply(this,arguments)},h=function(e,n,r){return _async_to_generator(function(){var o,s,c,u,l,f,d,_,g,p,v;return _ts_generator(this,function(h){switch(h.label){case 0:return n.policy?[4,Promise.all(Object.entries(n.policy).map(function(t){var n=_sliced_to_array(t,2),o=n[0],a=n[1];return _async_to_generator(function(){var t;return _ts_generator(this,function(n){switch(n.label){case 0:return[4,b(e,a,{collector:r,event:e})];case 1:return t=n.sent(),e=i(e,o,t),[2]}})})()}))]:[3,2];case 1:h.sent(),h.label=2;case 2:return[4,y(e,n.mapping,r)];case 3:return s=h.sent(),c=s.eventMapping,u=s.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(t){var n=_sliced_to_array(t,2),o=n[0],a=n[1];return _async_to_generator(function(){var t;return _ts_generator(this,function(n){switch(n.label){case 0:return[4,b(e,a,{collector:r,event:e})];case 1:return t=n.sent(),e=i(e,o,t),[2]}})})()}))]:[3,5];case 4:h.sent(),h.label=5;case 5:return(f=n.data)?[4,b(e,n.data,{collector:r,event:e})]:[3,7];case 6:f=h.sent(),h.label=7;case 7:return l=f,d=Boolean(null==c?void 0:c.silent),c?c.ignore?[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!0,silent:d}]:(c.name&&(e.name=c.name),c.data?(g=c.data)?[4,b(e,c.data,{collector:r,event:e})]:[3,9]:[3,10]):[3,10];case 8:g=h.sent(),h.label=9;case 9:_=g,l=a(l)&&a(_)?t(l,_):_,h.label=10;case 10:return(p=null!==(o=null==c?void 0:c.include)&&void 0!==o?o:n.include)&&p.length>0&&(v=function(e,t){var n={},r=t.includes("all")?Object.keys(he):t,o=!0,s=!1,i=void 0;try{for(var c,u=r[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var l=c.value,f=he[l];if(f){var d=f(e),_=!0,g=!1,p=void 0;if(a(d))try{for(var v,y=Object.entries(d)[Symbol.iterator]();!(_=(v=y.next()).done);_=!0){var b=_sliced_to_array(v.value,2),h=b[0],m=b[1];if(void 0!==m){var w="context"===l&&Array.isArray(m)?m[0]:m;n["".concat(l,"_").concat(h)]=w}}}catch(e){g=!0,p=e}finally{try{_||null==y.return||y.return()}finally{if(g)throw p}}}}}catch(e){s=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(s)throw i}}return n}(e,p),Object.keys(v).length>0&&(l=a(l)?t(v,l):null!=l?l:v)),[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!1,silent:d}]}})})()},m=function(e,t,n,r){return function(){for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];var i,c="pre"+t,u="post"+t,l=n[c],f=n[u],d=function(e,t){r?r.warn(e,{error:t}):console.warn(e,t)};if(l)try{i=l.apply(void 0,[{fn:e}].concat(_to_consumable_array(a)))}catch(t){d("Hook ".concat(String(c)," failed, falling back to original function"),t),i=e.apply(void 0,_to_consumable_array(a))}else i=e.apply(void 0,_to_consumable_array(a));if(f)try{i=f.apply(void 0,[{fn:e,result:i}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(u)," failed, keeping original result"),e)}return i}},w=function(e){return Array.isArray(e)&&e.length>0&&"object"==_type_of(e[0])&&null!==e[0]&&"match"in e[0]},j=function(e,t){var n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n},k=function(e){var t;return{full:null!==(t=e.full)&&void 0!==t&&t,storeId:e.store,rules:e.rules.map(function(e){return{match:Oe(e.match),key:e.key,ttl:e.ttl,update:e.update}})}},O=function(e,t,n,r){var o=e.rules.find(function(e){return e.match(n)});if(!o)return null;var a=o.key.map(function(e){var t;return String(null!==(t=be(n,e))&&void 0!==t?t:"")});if(a.every(function(e){return""===e}))return null;var s="".concat(r,":").concat(a.join(":")),i=t.get(s);return void 0!==i?{status:"HIT",key:s,value:i,rule:o}:{status:"MISS",key:s,rule:o}},S=function(e,t,n,r){e.set(t,n,1e3*r)},x=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,g,p;return _ts_generator(this,function(v){switch(v.label){case 0:if(!t)return[2,e];o=e,a=!0,s=!1,c=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),u=Object.entries(t)[Symbol.iterator](),v.label=2;case 2:return(a=(l=u.next()).done)?[3,5]:(f=_sliced_to_array(l.value,2),d=f[0],_=f[1],g=[o,d],[4,b(n,_,{collector:r})]);case 3:o=i.apply(void 0,g.concat([v.sent()])),v.label=4;case 4:return a=!0,[3,2];case 5:return[3,8];case 6:return p=v.sent(),s=!0,c=p,[3,8];case 7:try{a||null==u.return||u.return()}finally{if(s)throw c}return[7];case 8:return[2,o]}})})()},A=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:globalThis.window,o=t.settings,a=r[(null==o?void 0:o.name)||"dataLayer"];if(Array.isArray(a)&&!Ae){Ae=!0;try{for(var s=null!=n?n:a.length,i=0;i<s;i++)C(e,o,a[i])}finally{Ae=!1}}},C=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;if(t.filter&&!0===p(function(){return t.filter(n)},function(){return!1})())return;var r=P(n);if(r){var o=t.prefix||"dataLayer",a="".concat(o," ").concat(r.name),s=(r.name,{name:a,data:_object_without_properties(r,["name"])});p(function(){return e(s)},function(){})()}},P=function(e){if(a(e)&&s(e.event))return _object_spread({name:e.event},_object_without_properties(e,["event"]));if(n(e)&&e.length>=2)return E(e);if(q(e)){var t=Array.from(e);return E(t)}return null},E=function(e){var t,n=_sliced_to_array(e,3),r=n[0],o=n[1],i=n[2];if(!s(r))return null;var c={};switch(r){case"consent":if(!s(o)||e.length<3)return null;if("default"!==o&&"update"!==o)return null;if(!a(i)||null===i)return null;t="".concat(r," ").concat(o),c=_object_spread({},i);break;case"event":if(!s(o))return null;t=o,a(i)&&(c=_object_spread({},i));break;case"config":if(!s(o))return null;t="".concat(r," ").concat(o),a(i)&&(c=_object_spread({},i));break;case"set":if(s(o))t="".concat(r," ").concat(o),a(i)&&(c=_object_spread({},i));else{if(!a(o))return null;t="".concat(r," custom"),c=_object_spread({},o)}break;default:return null}return _object_spread({name:t},c)},q=function(e){return null!=e&&"object"===(void 0===e?"undefined":_type_of(e))&&"length"in e&&"number"==typeof e.length&&e.length>0},D=function(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache},L=function(e){var t={},n=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i,c=_sliced_to_array(a.value,2),u=c[0],l=null===(i=c[1].config)||void 0===i?void 0:i.next;l&&!w(l)?t[u]={next:l}:t[u]={}}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}return t},I=function(e,t){var n=e.config||{},r=e[t];return void 0!==r?{config:_object_spread_props(_object_spread({},n),_define_property({},t,r)),chainValue:r}:{config:n,chainValue:void 0}},R=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var n=[],r=new Set,o=e;o&&t[o]&&!r.has(o);){r.add(o),n.push(o);var a=t[o].next;if(Array.isArray(a)){var s;(s=n).push.apply(s,_to_consumable_array(a));break}o=a}return n},T=function(t,n,r){return _async_to_generator(function(){var o,a,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!n.init||n.config.init?[3,2]:(o=n.type||"unknown",a=t.logger.scope("transformer:".concat(o)),s={collector:t,logger:a,id:r,ingest:e(r),config:n.config,env:U(n.config.env)},a.debug("init"),[4,m(n.init,"TransformerInit",t.hooks,t.logger)(s)]);case 1:if(!1===(i=c.sent()))return[2,!1];n.config=_object_spread_props(_object_spread({},i||n.config),{env:(null==i?void 0:i.env)||n.config.env,init:!0}),a.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},M=function(e,t,n,r,o,a){return _async_to_generator(function(){var s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return s=t.type||"unknown",i=e.logger.scope("transformer:".concat(s)),c={collector:e,logger:i,id:n,ingest:o,config:t.config,env:_object_spread({},U(t.config.env),a?{respond:a}:{})},i.debug("push",{event:r.name}),[4,m(t.push,"TransformerPush",e.hooks,e.logger)(r,c)];case 1:return u=l.sent(),[2,(i.debug("push done"),u)]}})})()},U=function(e){return e&&a(e)?e:{}},K=function(t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,g,p,y,h,m,A,C,P,E,q,I,T,M;return _ts_generator(this,function(U){switch(U.label){case 0:return a=r.code,s=r.config,i=void 0===s?{}:s,c=r.env,u=void 0===c?{}:c,l=r.primary,f=r.next,d=r.before,_=r.cache,p=e(n),y=_?k(_object_spread_props(_object_spread({},_),{full:null===(o=_.full)||void 0===o||o})):void 0,h=Se(f),m=Array.isArray(f)&&w(f)||!h?void 0:R(xe(h),L(t.transformers)),A=Se(d),C=Array.isArray(d)&&w(d)||!A?void 0:R(xe(A),L(t.transformers)),P=t.logger.scope("source").scope(n),E=_object_spread({push:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,v,b,w,k,P,E;return _ts_generator(this,function(q){switch(q.label){case 0:return a=e,(s=null!=C?C:A?R(xe(A,j(p)),L(t.transformers)):[]).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,He(t,t.transformers,s,a,p,g,"source.".concat(n,".before"))]:[3,2];case 1:if(null===(c=q.sent()).event)return[2,{ok:!0}];c.respond&&(g=c.respond),a=Array.isArray(c.event)?c.event[0]:c.event,q.label=2;case 2:return y&&(u=D(y,t))?(l=j(p),(f=O(y,u,l,"s:".concat(n)))?"HIT"===f.status&&void 0!==f.value&&y.full?(d=f.value,f.rule.update?[4,x(d,f.rule.update,_object_spread_props(_object_spread({},l),{cache:{status:"HIT"}}),t)]:[3,4]):[3,5]:[3,6]):[3,6];case 3:d=q.sent(),q.label=4;case 4:return[2,(null==g||g(d),{ok:!0})];case 5:"MISS"===f.status&&y.full&&g&&(_=g,v=f.rule.update,b=_object_spread_props(_object_spread({},l),{cache:{status:"MISS"}}),w=f.key,k=f.rule.ttl,g=function(e){S(u,w,e,k),v?o=_async_to_generator(function(){var n;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,x(e,v,b,t)];case 1:return n=r.sent(),_(n),[2]}})})():_(e)}),"MISS"!==f.status||y.full||S(u,f.key,!0,f.rule.ttl),q.label=6;case 6:return P=null!=m?m:h?R(xe(h,j(p)),L(t.transformers)):[],[4,t.push(a,_object_spread_props(_object_spread({},r),{id:n,ingest:p,respond:g,mapping:i,preChain:P}))];case 7:return E=q.sent(),o?[4,o]:[3,9];case 8:q.sent(),q.label=9;case 9:return[2,E]}})})()},command:t.command,sources:t.sources,elb:t.sources.elb.push,logger:P},u),q={collector:t,logger:P,id:n,config:i,env:E,setIngest:function(r){return _async_to_generator(function(){var o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return i.ingest?[4,b(r,i.ingest,{collector:t})]:[2,void(p=e(n))];case 1:return o=s.sent(),a=e(n),p=_object_spread_props(_object_spread({},a,o),{_meta:a._meta}),[2]}})})()},setRespond:function(e){g=e}},[4,v(a)(q)];case 1:return(I=U.sent())?(T=I.type||"unknown",M=t.logger.scope(T).scope(n),[2,(E.logger=M,l&&(I.config=_object_spread_props(_object_spread({},I.config),{primary:l})),I)]):[2]}})})()},N=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,_,g,p=arguments;return _ts_generator(this,function(v){switch(v.label){case 0:t=p.length>1&&void 0!==p[1]?p[1]:{},n={},r=!0,o=!1,a=void 0,v.label=1;case 1:v.trys.push([1,6,7,8]),s=Object.entries(t)[Symbol.iterator](),v.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.config,(d=void 0===f?{}:f).require&&d.require.length>0?(e.pending.sources[u]=l,[3,4]):[4,K(e,u,l)]);case 3:(_=v.sent())&&(n[u]=_),v.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return g=v.sent(),o=!0,a=g,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,n]}})}).apply(this,arguments)},H=function(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}},G=function(e,t,r){return _async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){return o=e.on,a=o[t]||[],(s=n(r)?r:[r]).forEach(function(e){a.push(e)}),o[t]=a,W(e,t,s),[2]})})()},B=function(e,t,n,r,o){if(t.on){var a=t.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:n,config:t.config,data:o,env:ee(t.env,t.config.env)};p(t.on)(r,i)}},W=function(e,t,n,r){var o,a,s,i,c;switch(t){case Ne.Commands.Consent:o=r||e.consent;break;case Ne.Commands.Session:o=e.session;break;case Ne.Commands.User:o=r||e.user;break;case Ne.Commands.Custom:o=r||e.custom;break;case Ne.Commands.Globals:o=r||e.globals;break;case Ne.Commands.Config:o=r||e.config;break;case Ne.Commands.Ready:case Ne.Commands.Run:default:o=void 0}if(n.length)switch(t){case Ne.Commands.Consent:a=e,s=n,i=r||a.consent,c=H(a,Ne.Commands.Consent),s.forEach(function(e){Object.keys(i).filter(function(t){return t in e}).forEach(function(t){p(e[t])(i,c)})});break;case Ne.Commands.Ready:!function(e,t){if(e.allowed){var n=H(e,Ne.Commands.Ready);t.forEach(function(e){p(e)(void 0,n)})}}(e,n);break;case Ne.Commands.Run:!function(e,t){if(e.allowed){var n=H(e,Ne.Commands.Run);t.forEach(function(e){p(e)(void 0,n)})}}(e,n);break;case Ne.Commands.Session:!function(e,t){if(e.session){var n=H(e,Ne.Commands.Session);t.forEach(function(t){p(t)(e.session,n)})}}(e,n);break;default:var u=H(e,t);n.forEach(function(e){"function"==typeof e&&p(e)(o,u)})}},F=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,g;return _ts_generator(this,function(p){switch(p.label){case 0:switch(a=n||[],n||(a=e.on[t]||[]),t){case Ne.Commands.Consent:o=r||e.consent;break;case Ne.Commands.Session:o=e.session;break;case Ne.Commands.User:o=r||e.user;break;case Ne.Commands.Custom:o=r||e.custom;break;case Ne.Commands.Globals:o=r||e.globals;break;case Ne.Commands.Config:o=r||e.config;break;case Ne.Commands.Ready:case Ne.Commands.Run:default:o=void 0}s=!1,i=!0,c=!1,u=void 0,p.label=1;case 1:p.trys.push([1,6,7,8]),l=Object.values(e.sources)[Symbol.iterator](),p.label=2;case 2:return(i=(f=l.next()).done)?[3,5]:(d=f.value).on?(_=!1,[4,v(d.on)(t,o)]):[3,4];case 3:_===p.sent()&&(s=!0),p.label=4;case 4:return i=!0,[3,2];case 5:return[3,8];case 6:return g=p.sent(),c=!0,u=g,[3,8];case 7:try{i||null==l.return||l.return()}finally{if(c)throw u}return[7];case 8:return Object.entries(e.destinations).forEach(function(n){var r=_sliced_to_array(n,2),a=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:t,data:o});B(e,s,a,t,o)}}),Object.keys(e.pending.sources).length>0||Object.keys(e.pending.destinations).length>0?[4,(y=e,b=t,_async_to_generator(function(){var e,t,n,r,o,a,s,i,c,u,l,f,d,_,g,p,v,h,m,w,j,k,O,S,x;return _ts_generator(this,function(A){switch(A.label){case 0:e=!0,t=!1,n=void 0,A.label=1;case 1:A.trys.push([1,6,7,8]),r=Object.entries(y.pending.sources)[Symbol.iterator](),A.label=2;case 2:return(e=(o=r.next()).done)?[3,5]:(a=_sliced_to_array(o.value,2),s=a[0],i=a[1],!y.pending.sources[s]||y.sources[s]?[3,4]:(u=null===(c=i.config)||void 0===c?void 0:c.require)?-1===(l=u.indexOf(b))?[3,4]:(u.splice(l,1),u.length>0?[3,4]:(delete y.pending.sources[s],[4,K(y,s,i)])):[3,4]);case 3:(f=A.sent())&&(y.sources[s]=f),A.label=4;case 4:return e=!0,[3,2];case 5:return[3,8];case 6:return d=A.sent(),t=!0,n=d,[3,8];case 7:try{e||null==r.return||r.return()}finally{if(t)throw n}return[7];case 8:_=!0,g=!1,p=void 0;try{for(v=Object.entries(y.pending.destinations)[Symbol.iterator]();!(_=(h=v.next()).done);_=!0)m=_sliced_to_array(h.value,2),w=m[0],j=m[1],y.pending.destinations[w]&&!y.destinations[w]&&(O=null===(k=j.config)||void 0===k?void 0:k.require)&&-1!==(S=O.indexOf(b))&&(O.splice(S,1),O.length>0||(delete y.pending.destinations[w],!1!==(x=Y(j)).config.queue&&(x.queuePush=_to_consumable_array(y.queue)),y.destinations[w]=x))}catch(e){g=!0,p=e}finally{try{_||null==v.return||v.return()}finally{if(g)throw p}}return[2]}})})())]:[3,10];case 9:p.sent(),p.label=10;case 10:return[2,(W(e,t,a,r),!s)]}var y,b})})()},V=function(e,t,n,r){if(!e)return[];if(t){var o=xe(t,j(r));return o?R(o,L(n)):[]}return R(e,L(n))},z=function(e,t,n){return _async_to_generator(function(){var r,a,s,i,c,l,f,d,_,g,p,v;return _ts_generator(this,function(y){if(r=t.code,a=t.config,s=void 0===a?{}:a,i=t.env,c=void 0===i?{}:i,l=t.before,f=t.next,d=t.cache,!o(r.push))return[2,X({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(_=n||s||{init:!1},g=l?_object_spread_props(_object_spread({},_),{before:l}):_object_spread({},_),f&&(g=_object_spread_props(_object_spread({},g),{next:f})),d&&(g=_object_spread_props(_object_spread({},g),{cache:d})),p=_object_spread_props(_object_spread({},r),{config:g,env:ee(r.env,c)}),!(v=p.config.id))do{v=u(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[v]);return[2,(e.destinations[v]=p,!1!==p.config.queue&&(p.queuePush=_to_consumable_array(e.queue)),J(e,void 0,{},_define_property({},v,p)))]})})()},J=function(n,r,o){return _async_to_generator(function(n,r){var o,a,s,i,u,l,f,d,_,g,p,y,b,h,m,x,A,C,P,E=arguments;return _ts_generator(this,function(q){switch(q.label){case 0:return o=E.length>2&&void 0!==E[2]?E[2]:{},a=E.length>3?E[3]:void 0,s=n.allowed,i=n.consent,u=n.globals,l=n.user,s?(r&&(n.queue.push(r),n.status.in++),a||(a=n.destinations),[4,Promise.all(Object.entries(a||{}).map(function(a){var s=_sliced_to_array(a,2),f=s[0],d=s[1];return _async_to_generator(function(){var a,s,_,g,p,y,b,h,m,x,A,C,P,E,q,L,I,R,T;return _ts_generator(this,function(M){switch(M.label){case 0:return d.config.disabled?[2,{id:f,destination:d,skipped:!0}]:(p=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:i})}),d.queuePush=[],r&&p.push(ye(r)),y=o.ingest?_object_spread_props(_object_spread({},o.ingest),{_meta:_object_spread_props(_object_spread({},o.ingest._meta),{path:_to_consumable_array(o.ingest._meta.path)})}):e("unknown"),p.length||(null===(s=d.queueOn)||void 0===s?void 0:s.length)?p.length||!(null===(_=d.queueOn)||void 0===_?void 0:_.length)?[3,2]:[4,v($)(n,d,f)]:[2,{id:f,destination:d,skipped:!0}]);case 1:return b=M.sent(),[2,{id:f,destination:d,skipped:!b}];case 2:return h=[],m=p.filter(function(e){var t=c(d.config.consent,i,e.consent);return!t||(e.consent=t,h.push(e),!1)}),(a=d.queuePush).push.apply(a,_to_consumable_array(m)),h.length?[4,v($)(n,d,f)]:[2,{id:f,destination:d,queue:p}];case 3:return M.sent()?(d.dlq||(d.dlq=[]),C=d.config.before,P=V(C,C&&w(C)?Se(C):void 0,n.transformers,y),E=d.config.next,q=E&&w(E)?Se(E):void 0,L=null===(g=d.config)||void 0===g?void 0:g.cache,I=L?k(L):void 0,R=I?D(I,n):void 0,T=0,[4,Promise.all(h.map(function(e){return _async_to_generator(function(){var r,a,s,i,c,_,g,p,b,h,m,w,k;return _ts_generator(this,function(C){switch(C.label){case 0:if(e.globals=t(u,e.globals),e.user=t(l,e.user),(null==I?void 0:I.full)&&R){if(a=j(y,e),"HIT"===(null==(s=O(I,R,a,"d:".concat(f)))?void 0:s.status))return[2,e];"MISS"===(null==s?void 0:s.status)&&(r={key:s.key,ttl:s.rule.ttl})}return i=e,c=o.respond,P.length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,He(n,n.transformers,P,e,y,o.respond,"destination.".concat(f,".before"))]:[3,2];case 1:if(null===(_=C.sent()).event)return[2,e];_.respond&&(c=_.respond),i=Array.isArray(_.event)?_.event[0]:_.event,C.label=2;case 2:if(I&&!I.full&&R){if(g=j(y,i),"HIT"===(null==(p=O(I,R,g,"d:".concat(f)))?void 0:p.status))return[2,e];"MISS"===(null==p?void 0:p.status)&&(r={key:p.key,ttl:p.rule.ttl})}return b=Date.now(),h=!1,[4,v(Q,function(e){var t=d.type||"unknown";n.logger.scope(t).error("Push failed",{error:e,event:i.name}),x=e,h=!0,d.dlq.push([i,e])})(n,d,f,i,y,c)];case 3:return m=C.sent(),T+=Date.now()-b,r&&R&&void 0===d.config.mock&&S(R,r.key,null==m||m,r.ttl),void 0!==m&&(A=m),h||!E?[3,5]:(void 0!==m&&(y._response=m),(w=V(E,q,n.transformers,y)).length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,He(n,n.transformers,w,i,y,c,"destination.".concat(f,".next"))]:[3,5]);case 4:(k=C.sent()).respond&&(c=k.respond),C.label=5;case 5:return[2,e]}})})()}))]):[2,{id:f,destination:d,queue:p}];case 4:return[2,(M.sent(),{id:f,destination:d,error:x,response:A,totalDuration:T})]}})})()}))]):[2,X({ok:!1})];case 1:f=q.sent(),d={},_={},g={},p=!0,y=!1,b=void 0;try{for(h=f[Symbol.iterator]();!(p=(m=h.next()).done);p=!0)(x=m.value).skipped||(A={type:x.destination.type||"unknown",data:x.response},n.status.destinations[x.id]||(n.status.destinations[x.id]={count:0,failed:0,duration:0}),C=n.status.destinations[x.id],P=Date.now(),x.error?(A.error=x.error,g[x.id]=A,C.failed++,C.lastAt=P,C.duration+=x.totalDuration||0,n.status.failed++):x.queue&&x.queue.length?_[x.id]=A:(d[x.id]=A,C.count++,C.lastAt=P,C.duration+=x.totalDuration||0,n.status.out++))}catch(e){y=!0,b=e}finally{try{p||null==h.return||h.return()}finally{if(y)throw b}}return[2,X(_object_spread({event:r},Object.keys(d).length&&{done:d},Object.keys(_).length&&{queued:_},Object.keys(g).length&&{failed:g}))]}})}).apply(this,arguments)},$=function(e,t,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,g,p,v;return _ts_generator(this,function(y){switch(y.label){case 0:return!t.init||t.config.init?[3,2]:(o=t.type||"unknown",a=e.logger.scope(o),s={collector:e,logger:a,id:n,config:t.config,env:ee(t.env,t.config.env)},a.debug("init"),[4,m(t.init,"DestinationInit",e.hooks,e.logger)(s)]);case 1:if(!1===(i=y.sent()))return[2,i];if(t.config=_object_spread_props(_object_spread({},i||t.config),{init:!0}),null===(r=t.queueOn)||void 0===r?void 0:r.length){c=t.queueOn,t.queueOn=[],u=!0,l=!1,f=void 0;try{for(d=c[Symbol.iterator]();!(u=(_=d.next()).done);u=!0)g=_.value,p=g.type,v=g.data,B(e,t,n,p,v)}catch(e){l=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw f}}}a.debug("init done"),y.label=2;case 2:return[2,!0]}})})()},Q=function(e,t,n,o,a,s){return _async_to_generator(function(){var i,c,u,f,d,_,g,p,v,y;return _ts_generator(this,function(b){switch(b.label){case 0:return i=t.config,[4,h(o,i,e)];case 1:return(c=b.sent()).ignore?[2,!1]:(u=t.type||"unknown",f=e.logger.scope(u),d={collector:e,logger:f,id:n,config:i,data:c.data,rule:c.mapping,ingest:a,env:_object_spread({},ee(t.env,i.env),s?{respond:s}:{})},void 0!==i.mock?[2,(f.debug("mock",{event:c.event.name}),i.mock)]:(_=c.mapping,g=c.mappingKey||"* *",(null==_?void 0:_.batch)&&t.pushBatch&&void 0===i.mock?[3,3]:(f.debug("push",{event:c.event.name}),[4,m(t.push,"DestinationPush",e.hooks,e.logger)(c.event,d)])));case 2:return p=b.sent(),[2,(f.debug("push done"),p)];case 3:return t.batches=t.batches||{},t.batches[g]||(v={key:g,events:[],data:[]},t.batches[g]={batched:v,batchFn:l(function(){var r=t.batches[g].batched,o={collector:e,logger:f,id:n,config:i,data:void 0,rule:_,ingest:a,env:_object_spread({},ee(t.env,i.env),s?{respond:s}:{})};f.debug("push batch",{events:r.events.length}),m(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(r,o),f.debug("push batch done"),r.events=[],r.data=[]},_.batch)}),(y=t.batches[g]).batched.events.push(c.event),r(c.data)&&y.batched.data.push(c.data),y.batchFn(),[2,!0]}})})()},X=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},Y=function(e){var t=e.code,n=e.config,r=void 0===n?{}:n,o=e.env,a=void 0===o?{}:o,s=e.cache,i=I(e,"before").config,c=I(_object_spread_props(_object_spread({},e),{config:i}),"next").config,u=_object_spread({},t.config,r,c);s&&(u.cache=s);var l=ee(t.env,a);return _object_spread_props(_object_spread({},t),{config:u,env:l})},Z=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,_=arguments;return _ts_generator(this,function(g){t=_.length>1&&void 0!==_[1]?_[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(t)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(r=d.config)||void 0===r||null===(n=r.require)||void 0===n?void 0:n.length)?e.pending.destinations[f]=d:o[f]=Y(d)}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}return[2,o]})}).apply(this,arguments)},ee=function(e,t){return e||t?t?e&&a(e)&&a(t)?_object_spread({},e,t):t:e:{}},te=function(e,t,n){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return r=Object.entries(e).map(function(e){var r=_sliced_to_array(e,2),o=r[0],a=r[1];return _async_to_generator(function(){var e,r,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:if(!(r=a.destroy))return[2];s=a.type||"unknown",i=n.scope(s),c={id:o,config:a.config,env:null!==(e=a.env)&&void 0!==e?e:{},logger:i},l.label=1;case 1:return l.trys.push([1,3,,4]),[4,Promise.race([r(c),new Promise(function(e,n){return setTimeout(function(){return n(new Error("".concat(t," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(t," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},ne=function(e,n,r,i){return _async_to_generator(function(){var c,u,l,f,d,_,g;return _ts_generator(this,function(p){switch(p.label){case 0:switch(l=!1,n){case Ne.Commands.Config:return[3,1];case Ne.Commands.Consent:return[3,2];case Ne.Commands.Custom:return[3,3];case Ne.Commands.Destination:return[3,4];case Ne.Commands.Globals:return[3,11];case Ne.Commands.On:return[3,12];case Ne.Commands.Ready:return[3,15];case Ne.Commands.Run:return[3,16];case Ne.Commands.Session:return[3,18];case Ne.Commands.Shutdown:return[3,19];case Ne.Commands.User:return[3,21]}return[3,22];case 1:return a(r)&&(t(e.config,r,{shallow:!1}),u=r,l=!0),[3,22];case 2:return a(r)&&(f=function(e,n){var r={};return Object.entries(n).forEach(function(e){var t=_sliced_to_array(e,2),n=t[0],o=t[1];r[n]=!!o}),e.consent=t(e.consent,r),{update:r}}(e,r),d=f.update,u=d,l=!0),[3,22];case 3:return a(r)&&(e.custom=t(e.custom,r),u=r,l=!0),[3,22];case 4:return a(r)?"code"in r&&a(r.code)?[4,z(e,r,i)]:[3,6]:[3,10];case 5:return _=c=p.sent(),[3,9];case 6:return(g=o(r.push))?[4,z(e,{code:r},i)]:[3,8];case 7:g=c=p.sent(),p.label=8;case 8:_=g,p.label=9;case 9:p.label=10;case 10:return[3,22];case 11:return a(r)&&(e.globals=t(e.globals,r),u=r,l=!0),[3,22];case 12:return s(r)?[4,G(e,r,i)]:[3,14];case 13:p.sent(),p.label=14;case 14:return[3,22];case 15:return l=!0,[3,22];case 16:return[4,oe(e,r)];case 17:return c=p.sent(),l=!0,[3,22];case 18:return l=!0,[3,22];case 19:return[4,(v=e,_async_to_generator(function(){var e;return _ts_generator(this,function(t){switch(t.label){case 0:return e=v.logger,[4,te(v.sources,"source",e)];case 1:return t.sent(),[4,te(v.destinations,"destination",e)];case 2:return t.sent(),[4,te(v.transformers,"transformer",e)];case 3:return t.sent(),[4,te(v.stores,"store",e)];case 4:return t.sent(),[2]}})})())];case 20:return p.sent(),[3,22];case 21:a(r)&&(t(e.user,r,{shallow:!1}),u=r,l=!0),p.label=22;case 22:return l?[4,F(e,n,void 0,u)]:[3,25];case 23:return p.sent(),[4,J(e)];case 24:c=p.sent(),p.label=25;case 25:return[2,c||X({ok:!0})]}var v})})()},re=function(e,t){if(!t.name)throw new Error("Event name is required");var n=_sliced_to_array(t.name.split(" "),2),r=n[0],o=n[1];if(!r||!o)throw new Error("Event name is invalid");var a=t.timestamp,s=void 0===a?Date.now():a,i=t.name,c=void 0===i?"".concat(r," ").concat(o):i,u=t.data,l=void 0===u?{}:u,f=t.context,d=void 0===f?{}:f,_=t.globals,g=void 0===_?e.globals:_,p=t.custom,v=void 0===p?{}:p,y=t.user,b=void 0===y?e.user:y,h=t.nested,m=void 0===h?[]:h,w=t.consent,j=void 0===w?e.consent:w,k=t.id,O=void 0===k?function(){for(var e="",t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}():k,S=t.trigger,x=void 0===S?"":S,A=t.entity,C=void 0===A?r:A,P=t.action,E=void 0===P?o:P,q=t.timing,D=void 0===q?0:q,L=t.source;return{name:c,data:l,context:d,globals:g,custom:v,user:b,nested:m,consent:j,id:O,trigger:x,entity:C,action:E,timestamp:s,timing:D,source:void 0===L?{type:"collector",schema:"4"}:L}},oe=function(e,n){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return e.allowed=!0,e.timing=Date.now(),n&&(n.consent&&(e.consent=t(e.consent,n.consent)),n.user&&(e.user=t(e.user,n.user)),n.globals&&(e.globals=t(e.config.globalsStatic||{},n.globals)),n.custom&&(e.custom=t(e.custom,n.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,J(e)];case 1:return[2,r.sent()]}})})()},ae=function(n){return _async_to_generator(function(){var r,o,a,s,i,u,l,f,d;return _ts_generator(this,function(g){switch(g.label){case 0:return a=t({globalsStatic:{},sessionStatic:{},run:!0},n,{merge:!1,extend:!1}),s={level:null===(r=n.logger)||void 0===r?void 0:r.level,handler:null===(o=n.logger)||void 0===o?void 0:o.handler},i=_(s),u=_object_spread({},a.globalsStatic,n.globals),(l={allowed:!1,config:a,consent:n.consent||{},custom:n.custom||{},destinations:{},transformers:{},stores:{},globals:u,hooks:n.hooks||{},logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:n.user||{},sources:{},pending:{sources:{},destinations:{}},push:void 0,command:void 0}).push=function(t,n){return m(function(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,v(function(){return _async_to_generator(function(){var a,s,i,u,l,f,d,_,g,p,v,y,b,m,w,j,k,O,S,x,A;return _ts_generator(this,function(C){switch(C.label){case 0:return a=Date.now(),s=o.id,i=o.ingest,u=o.respond,l=o.mapping,f=o.preChain,d=o.include,_=o.exclude,g=u,p=r,v=d||_?function(e,t,n){var r=e;return t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return t.includes(n)}))),n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return!n.includes(t)}))),r}(t.destinations,d,_):void 0,y=null!=i?i:e(s||"unknown"),l?[4,h(p,l,t)]:[3,2];case 1:if((b=C.sent()).ignore)return[2,X({ok:!0})];if(l.consent&&!c(l.consent,t.consent,b.event.consent))return[2,X({ok:!0})];p=b.event,C.label=2;case 2:return(null==f?void 0:f.length)&&t.transformers&&Object.keys(t.transformers).length>0?[4,He(t,t.transformers,f,p,y,g,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=C.sent()).event?[2,X({ok:!0})]:(m.respond&&(g=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(e){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=n(e),o=re(t,r),[2,J(t,o,{id:s,ingest:y,respond:g},v)]})})()}))]:[3,5]);case 4:return j=C.sent(),s&&(t.status.sources[s]||(t.status.sources[s]={count:0,duration:0}),(k=t.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-a),[2,null!==(w=j[0])&&void 0!==w?w:X({ok:!0})];case 5:p=m.event,C.label=6;case 6:return O=n(p),S=re(t,O),[4,J(t,S,{id:s,ingest:y,respond:g},v)];case 7:return x=C.sent(),s&&(t.status.sources[s]||(t.status.sources[s]={count:0,duration:0}),(A=t.status.sources[s]).count++,A.lastAt=Date.now(),A.duration+=Date.now()-a),[2,x]}})})()},function(){return X({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Push",t.hooks,t.logger)}(l,function(e){return _object_spread({timing:Math.round((Date.now()-l.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.0.0"}},e)}),l.command=function(e,t){return m(function(n,r,o){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,v(function(){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,t(e,n,r,o)];case 1:return[2,a.sent()]}})})()},function(){return X({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Command",e.hooks,e.logger)}(l,ne),f=n.stores||{},[4,function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,_,g,p,v,y,b,h,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:t=k.length>1&&void 0!==k[1]?k[1]:{},n={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(t)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.code,d=l.config,_=void 0===d?{}:d,g=l.env,p=void 0===g?{}:g,v=e.logger.scope("store").scope(u),[4,f({collector:e,logger:v,id:u,config:_,env:p})]);case 3:y=O.sent(),b=y.get,h=y.set,w=y.delete,y.get=m(b,"StoreGet",e.hooks,e.logger),y.set=m(h,"StoreSet",e.hooks,e.logger),y.delete=m(w,"StoreDelete",e.hooks,e.logger),n[u]=y,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,n]}})}).apply(this,arguments)}(l,f)];case 1:return l.stores=g.sent(),function(e,t,n){var r=new Map,o=!0,a=!1,s=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=_sliced_to_array(i.value,2),l=u[0],f=u[1];t[l]&&r.set(f,t[l])}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}if(0!==r.size)for(var d=!0,_=!1,g=void 0,p=0,v=[n.transformers,n.destinations,n.sources];p<v.length;p++){var y=v[p];if(y)try{for(var b,h=Object.values(y)[Symbol.iterator]();!(d=(b=h.next()).done);d=!0){m(b.value.env)}}catch(e){_=!0,g=e}finally{try{d||null==h.return||h.return()}finally{if(_)throw g}}}function m(e){if(e){var t=!0,n=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i=_sliced_to_array(a.value,2),c=i[0],u=i[1];if("object"==(void 0===u?"undefined":_type_of(u))&&null!==u){var l=r.get(u);l&&(e[c]=l)}}}catch(e){n=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw o}}}}}(f,l.stores,n),l.stores.__cache||(d=new Map,l.stores.__cache={type:"memory",config:{},get:function(e){var t=d.get(e);if(t){if(!(t.expires&&Date.now()>t.expires))return t.value;d.delete(e)}},set:function(e,t,n){d.set(e,{value:t,expires:n?Date.now()+n:void 0})},delete:function(e){d.delete(e)}}),[4,Z(l,n.destinations||{})];case 2:return l.destinations=g.sent(),[4,function(t){return _async_to_generator(function(t){var n,r,o,a,s,i,c,u,l,f,d,_,g,p,v,y,b,h,m,w,j,k,O,S,x=arguments;return _ts_generator(this,function(A){switch(A.label){case 0:n=x.length>1&&void 0!==x[1]?x[1]:{},r={},o=!0,a=!1,s=void 0,A.label=1;case 1:A.trys.push([1,6,7,8]),i=Object.entries(n)[Symbol.iterator](),A.label=2;case 2:return(o=(c=i.next()).done)?[3,5]:(u=_sliced_to_array(c.value,2),l=u[0],f=u[1],d=f.code,_=f.env,g=void 0===_?{}:_,p=I(f,"before"),v=p.config,y=I(_object_spread_props(_object_spread({},f),{config:v}),"next"),b=y.config,h=Object.keys(g).length>0?_object_spread_props(_object_spread({},b),{env:g}):b,m=f.cache,w=m?_object_spread_props(_object_spread({},h),{cache:m}):h,j=t.logger.scope("transformer").scope(l),k={collector:t,logger:j,id:l,ingest:e(l),config:w,env:g},[4,d(k)]);case 3:O=A.sent(),r[l]=O,A.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return S=A.sent(),a=!0,s=S,[3,8];case 7:try{o||null==i.return||i.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})}).apply(this,arguments)}(l,n.transformers||{})];case 3:return[2,(l.transformers=g.sent(),l)]}})})()},se=function(e){return _async_to_generator(function(){var t,n,r,o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:return[4,ae(e=e||{})];case 1:return t=d.sent(),r=t,n={type:"elb",config:{},push:function(e,t,n,o,a,s){return _async_to_generator(function(){var i,c;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return i=e.replace("walker ",""),[2,r.command(i,t,n)];if("string"==typeof e)c={name:e},t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(c.data=t);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,X({ok:!1})];c=e,t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(c.data=_object_spread({},c.data||{},t))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(c.context=o),a&&Array.isArray(a)&&(c.nested=a),s&&"object"==(void 0===s?"undefined":_type_of(s))&&(c.custom=s),r.push(c))]})})()}},t.sources.elb=n,[4,N(t,e.sources||{})];case 2:return o=d.sent(),Object.assign(t.sources,o),a=e.consent,s=e.user,i=e.globals,c=e.custom,a?[4,t.command("consent",a)]:[3,4];case 3:d.sent(),d.label=4;case 4:return s?[4,t.command("user",s)]:[3,6];case 5:d.sent(),d.label=6;case 6:return i&&Object.assign(t.globals,i),c&&Object.assign(t.custom,c),t.config.run?[4,t.command("run")]:[3,8];case 7:d.sent(),d.label=8;case 8:return u=n.push,l=Object.values(t.sources).filter(function(e){return"elb"!==e.type}),[2,((f=l.find(function(e){return e.config.primary}))?u=f.push:l.length>0&&(u=l[0].push),{collector:t,elb:u})]}})})()},ie=Object.defineProperty,ce=Object.getOwnPropertyDescriptor,ue=Object.getOwnPropertyNames,le=Object.prototype.hasOwnProperty,fe=function(e,t){for(var n in t)ie(e,n,{get:t[n],enumerable:!0})},de={};fe(de,{SourceDataLayer:function(){return Ce},createTrigger:function(){return Be},default:function(){return Ve},env:function(){return Pe},sourceDataLayer:function(){return Fe},step:function(){return Ie},trigger:function(){return We}});var _e=Object.defineProperty;!function(e,t){for(var n in t)_e(e,n,{get:t[n],enumerable:!0})}({},{Level:function(){return pe}});var ge,pe=((ge=pe||{})[ge.ERROR=0]="ERROR",ge[ge.WARN=1]="WARN",ge[ge.INFO=2]="INFO",ge[ge.DEBUG=3]="DEBUG",ge),ve={merge:!0,shallow:!0,extend:!0};function ye(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(t.has(e))return t.get(e);var n=Object.prototype.toString.call(e);if("[object Object]"===n){var r={};for(var o in t.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=ye(e[o],t));return r}if("[object Array]"===n){var a=[];return t.set(e,a),e.forEach(function(e){a.push(ye(e,t))}),a}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){var s=e;return new RegExp(s.source,s.flags)}return e}function be(e){for(var t=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,s=0;s<o.length;s++){var i=o[s];if("*"===i&&n(a)){var c=o.slice(s+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,g=a[Symbol.iterator]();!(l=(_=g.next()).done);l=!0){var p=be(_.value,c,t);u.push(p)}}catch(e){f=!0,d=e}finally{try{l||null==g.return||g.return()}finally{if(f)throw d}}return u}if(void 0===(a=_instanceof(a,Object)?a[i]:void 0))break}return r(a)?a:t}var he={data:function(e){return e.data},globals:function(e){return e.globals},context:function(e){return e.context},user:function(e){return e.user},source:function(e){return e.source},event:function(e){return{entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing}}},me=function(e,t,n,r){var o="".concat(pe[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,t,n):s(o,t)};function we(e){var t=e.level,n=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=t){var s=d(r,a);n?n(e,s.message,s.context,o,me):me(e,s.message,s.context,o)}};return{error:function(e,t){return a(0,e,t)},warn:function(e,t){return a(1,e,t)},info:function(e,t){return a(2,e,t)},debug:function(e,t){return a(3,e,t)},throw:function(e,t){var r=d(e,t);throw n?n(0,r.message,r.context,o,me):me(0,r.message,r.context,o),new Error(r.message)},json:function(e){r?r(e):console.log(JSON.stringify(e,null,2))},scope:function(e){return we({level:t,handler:n,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function je(e){return function(e){return"boolean"==typeof e}(e)||s(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!r(e)||n(e)&&e.every(je)||a(e)&&Object.values(e).every(je)}function ke(e,t,o){return _async_to_generator(function(){return _ts_generator(this,function(a){return[2,(n(t)?t:[t]).reduce(function(t,a){return _async_to_generator(function(){var i,u,l,f,d,_,p,y,h,m,w,j,k,O,S,x,A,C,P,E,q,D;return _ts_generator(this,function(L){switch(L.label){case 0:return[4,t];case 1:return(i=L.sent())?[2,i]:(u=s(a)?{key:a}:a,Object.keys(u).length?(l=u.condition,f=u.consent,d=u.fn,_=u.key,p=u.loop,y=u.map,h=u.set,m=u.validate,w=u.value,j=_object_spread_props(_object_spread({},o),{mapping:a}),(k=l)?[4,v(l)(e,j)]:[3,3]):[2]);case 2:k=!L.sent(),L.label=3;case 3:return k?[2]:f&&!c(f,j.consent)?[2,w]:(O=r(w)?w:e,d?[4,v(d)(e,j)]:[3,5]);case 4:O=L.sent(),L.label=5;case 5:return _&&(O=be(e,_,w)),p?(S=_sliced_to_array(p,2),x=S[0],A=S[1],"this"!==x?[3,6]:(P=[e],[3,8])):[3,11];case 6:return[4,b(e,x,j)];case 7:P=L.sent(),L.label=8;case 8:return n(C=P)?[4,Promise.all(C.map(function(e){return b(e,A,j)}))]:[3,10];case 9:O=L.sent().filter(r),L.label=10;case 10:return[3,17];case 11:return y?[4,Object.entries(y).reduce(function(t,n){var o=_sliced_to_array(n,2),a=o[0],s=o[1];return _async_to_generator(function(){var n,o;return _ts_generator(this,function(i){switch(i.label){case 0:return[4,t];case 1:return n=i.sent(),[4,b(e,s,j)];case 2:return o=i.sent(),[2,(r(o)&&(n[a]=o),n)]}})})()},Promise.resolve({}))]:[3,13];case 12:return O=L.sent(),[3,16];case 13:return(E=h)?[4,Promise.all(h.map(function(t){return ke(e,t,j)}))]:[3,15];case 14:E=O=L.sent(),L.label=15;case 15:L.label=16;case 16:L.label=17;case 17:return(q=m)?[4,v(m)(O,j)]:[3,19];case 18:q=!L.sent(),L.label=19;case 19:return q&&(O=void 0),D=g(O),[2,r(D)?D:g(w)]}})})()},Promise.resolve(void 0))]})})()}function Oe(e){if("*"===e)return function(){return!0};if("and"in e){var t=e.and.map(Oe);return function(e){return t.every(function(t){return t(e)})}}if("or"in e){var n=e.or.map(Oe);return function(e){return n.some(function(t){return t(e)})}}return function(e){var t=e.key,n=e.operator,r=e.value,o=e.not,a=function(e,t){switch(e){case"eq":return function(e){return String(null!=e?e:"")===t};case"contains":return function(e){return String(null!=e?e:"").includes(t)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(t)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(t)};case"regex":var n=new RegExp(t);return function(e){return n.test(String(null!=e?e:""))};case"gt":var r=Number(t);return function(e){return Number(e)>r};case"lt":var o=Number(t);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(n,r);return function(e){var n=be(e,t),r=a(n);return o?!r:r}}(e)}function Se(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return w(e)?{type:"routes",routes:e.map(function(e){return{match:Oe(e.match),next:Se(e.next)}})}:{type:"chain",value:e}}}}function xe(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;var n=!0,r=!1,o=void 0;try{for(var a,s=e.routes[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=a.value;if(i.match(t))return xe(i.next,t)}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}}}var Ae=!1,Ce={},Pe={};fe(Pe,{push:function(){return Le}});var Ee=function(){},qe=function(){return function(){return Promise.resolve({ok:!0})}},De={error:Ee,warn:Ee,info:Ee,debug:Ee,throw:function(e){throw"string"==typeof e?new Error(e):e},json:Ee,scope:function(){return De}},Le={get push(){return qe()},get command(){return qe()},get elb(){return qe()},get window(){return{dataLayer:[],addEventListener:Ee,removeEventListener:Ee}},logger:De},Ie={};fe(Ie,{consentUpdate:function(){return Te},directEvent:function(){return Ke},gtagAddToCart:function(){return Me},gtagPurchase:function(){return Re},gtagViewItem:function(){return Ue}});var Re={title:"gtag purchase",description:"A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.",trigger:{type:"gtag"},in:["event","purchase",{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}],out:[["elb",{name:"dataLayer purchase",data:{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}}]]},Te={title:"Consent update",description:"A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.",trigger:{type:"gtag"},in:["consent","update",{ad_storage:"granted",analytics_storage:"granted"}],out:[["elb",{name:"dataLayer consent update",data:{ad_storage:"granted",analytics_storage:"granted"}}]]},Me={title:"gtag add_to_cart",description:"A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.",trigger:{type:"gtag"},in:["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}],out:[["elb",{name:"dataLayer add_to_cart",data:{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}}]]},Ue={title:"gtag view_item",description:"A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.",trigger:{type:"gtag"},in:["event","view_item",{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}],out:[["elb",{name:"dataLayer view_item",data:{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}}]]},Ke={title:"Direct dataLayer event",description:"A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.",trigger:{type:"direct"},in:{event:"custom_event",category:"engagement",label:"video_play"},out:[["elb",{name:"dataLayer custom_event",data:{category:"engagement",label:"video_play"}}]]},Ne={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function He(t,n,r,o,a,s,i){return _async_to_generator(function(){var c,u,l,f,d,_,g,p,y,b;return _ts_generator(this,function(h){switch(h.label){case 0:i&&(null==a?void 0:a._meta)&&(a._meta.chainPath=i),c=o,u=s,l=!0,f=!1,d=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),_=function(){var o,s,l,f,d,_,g,y,b,h,m,x,A,C,P,E,q,I,U,K,N,H,G,B,W,F,V,z,J,$,Q,X,Y,Z,ee,te,ne,re,oe,ae,se;return _ts_generator(this,function(ie){switch(ie.label){case 0:return o=p.value,(g=n[o])?a&&a._meta&&a._meta.path.length>256?[2,{v:(t.logger.error("Max path length exceeded at ".concat(o)),{event:null,respond:u})}]:(a&&a._meta&&(a._meta.hops++,a._meta.path.push(o)),[4,v(T)(t,g,o)]):(t.logger.warn("Transformer not found: ".concat(o)),[2,"continue"]);case 1:if(!ie.sent())return[2,{v:(t.logger.error("Transformer init failed: ".concat(o)),{event:null,respond:u})}];if(i&&void 0!==(null===(l=g.config)||void 0===l||null===(s=l.chainMocks)||void 0===s?void 0:s[i]))return y=g.config.chainMocks[i],t.logger.scope("transformer:".concat(g.type||"unknown")).debug("chainMock",{chain:i}),c=y,[2,"continue"];if(void 0!==(null===(f=g.config)||void 0===f?void 0:f.mock))return t.logger.scope("transformer:".concat(g.type||"unknown")).debug("mock"),c=g.config.mock,[2,"continue"];if(null===(d=g.config)||void 0===d?void 0:d.disabled)return[2,"continue"];if(b=null===(_=g.config)||void 0===_?void 0:_.cache,h=b?k(b):void 0,m=h?D(h,t):void 0,x=void 0,h&&m){if(A=j(a,c),"HIT"===(null==(C=O(h,m,A,"t:".concat(o)))?void 0:C.status)&&C.value)return c=C.value,h.full?[2,{v:{event:c,respond:u}}]:[2,"continue"];"MISS"===(null==C?void 0:C.status)&&(x={key:C.key,ttl:C.rule.ttl})}return(P=g.config.before)&&(E=R("string"==typeof P||Array.isArray(P)&&!w(P)?P:xe(Se(P),j(a,c))||void 0,L(n))).length>0?[4,He(t,n,E,c,a,u,i)]:[3,3];case 2:if(null===(I=ie.sent()).event)return[2,{v:{event:null,respond:null!==(q=I.respond)&&void 0!==q?q:u}}];I.respond&&(u=I.respond),c=Array.isArray(I.event)?I.event[0]:I.event,ie.label=3;case 3:return[4,v(M,function(e){return t.logger.scope("transformer:".concat(g.type||"unknown")).error("Push failed",{error:e}),!1})(t,g,o,c,a,u)];case 4:return!1===(U=ie.sent())?[2,{v:{event:null,respond:u}}]:Array.isArray(U)?(K=r.slice(r.indexOf(o)+1),[4,Promise.all(U.map(function(r){return _async_to_generator(function(){var o,s,l,f,d;return _ts_generator(this,function(_){return o=r.event||c,s=a?_object_spread_props(_object_spread({},a),{_meta:_object_spread_props(_object_spread({},a._meta),{path:_to_consumable_array(a._meta.path)})}):e("unknown"),r.next?(l=r.next,w(r.next)&&(f=Se(r.next),l=xe(f,j(s,o))),l&&(d=R(l,L(n))).length>0?[2,He(t,n,d,o,s,u,i)]:[2,{event:o,respond:u}]):[2,K.length>0?He(t,n,K,o,s,u,i):{event:o,respond:u}]})})()}))]):[3,6];case 5:N=ie.sent(),H=u,G=[],B=!0,W=!1,F=void 0;try{for(V=N.flat()[Symbol.iterator]();!(B=(z=V.next()).done);B=!0)if(null!==(J=z.value))if(J&&"object"==(void 0===J?"undefined":_type_of(J))&&"event"in J){if((Q=J).respond&&(H=Q.respond),null===Q.event)continue;Array.isArray(Q.event)?($=G).push.apply($,_to_consumable_array(Q.event)):G.push(Q.event)}else G.push(J)}catch(e){W=!0,F=e}finally{try{B||null==V.return||V.return()}finally{if(W)throw F}}return[2,{v:0===G.length?{event:null,respond:H}:1===G.length?{event:G[0],respond:H}:{event:G,respond:H}}];case 6:if(U&&"object"==(void 0===U?"undefined":_type_of(U))){if(X=U.event,Y=U.respond,Z=U.next,Y&&(u=Y),Z)return ee=Z,!w(Z)||(te=Se(Z),ee=xe(te,j(a,c)))?[2,{v:(ne=R(ee,L(n))).length>0?He(t,n,ne,X||c,a,u,i):(t.logger.warn("Branch target not found: ".concat(JSON.stringify(Z))),{event:null,respond:u})}]:(X&&(c=X),[2,"continue"]);X&&(c=X)}return x&&m&&S(m,x.key,c,x.ttl),(!U||"object"==(void 0===U?"undefined":_type_of(U))&&!U.next)&&g.config.next&&w(g.config.next)?(re=g.config.next,oe=Se(re),(ae=xe(oe,j(a,c)))&&(se=R(ae,L(n))).length>0?[2,{v:He(t,n,se,c,a,u,i)}]:[2,{v:{event:c,respond:u}}]):[2]}})},g=r[Symbol.iterator](),h.label=2;case 2:return(l=(p=g.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=h.sent()))return[2,y.v];h.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return b=h.sent(),f=!0,d=b,[3,8];case 7:try{l||null==g.return||g.return()}finally{if(f)throw d}return[7];case 8:return[2,{event:c,respond:u}]}})})()}var Ge,Be=function(e){return _async_to_generator(function(){var t,n;return _ts_generator(this,function(r){return n=function(){return function(n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,g,p;return _ts_generator(this,function(v){switch(v.label){case 0:if(t)return[3,2];if((o=_object_spread({},e)).sources){o.sources=_object_spread({},o.sources),a=!0,s=!1,i=void 0;try{for(c=Object.entries(o.sources)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(_=d.env)||void 0===_?void 0:_.window)||(o.sources[f]=_object_spread_props(_object_spread({},d),{env:_object_spread_props(_object_spread({},d.env),{window:window})}))}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}}return[4,se(_object_spread_props(_object_spread({},o),{run:null===(r=o.run)||void 0===r||r}))];case 1:g=v.sent(),t={collector:g.collector,elb:g.elb},v.label=2;case 2:return(p=window).dataLayer||(p.dataLayer=[]),p.dataLayer.push(n),[2]}})})()}},[2,{get flow(){return t},trigger:n}]})})()},We=function(e,t){var n=t.window;n.dataLayer||(n.dataLayer=[]),n.dataLayer.push(e)},Fe=function(e){return _async_to_generator(function(){var t,n,r,o,a,s,i,c,u,l;return _ts_generator(this,function(f){return t=e.config,n=e.env,r=n.elb,o=n.window,a=_object_spread({name:"dataLayer",prefix:"dataLayer"},null==t?void 0:t.settings),s={settings:a},i=0,o&&(c=a.name||"dataLayer",u=o[c],i=Array.isArray(u)?u.length:0,function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:globalThis.window,r=t.settings,o=(null==r?void 0:r.name)||"dataLayer";n[o]||(n[o]=[]);var a=n[o];if(Array.isArray(a)){var s=a.push.bind(a);a.push=function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];if(Ae)return s.apply(void 0,_to_consumable_array(n));Ae=!0;try{var a=!0,i=!1,c=void 0;try{for(var u,l=n[Symbol.iterator]();!(a=(u=l.next()).done);a=!0){var f=u.value;C(e,r,f)}}catch(e){i=!0,c=e}finally{try{a||null==l.return||l.return()}finally{if(i)throw c}}}finally{Ae=!1}return s.apply(void 0,_to_consumable_array(n))}}}(r,s,l=o),e.collector.allowed&&i>0&&(A(r,s,i,l),i=0)),[2,{type:"dataLayer",config:s,push:r,on:function(e){return _async_to_generator(function(){return _ts_generator(this,function(t){return"run"===e&&o&&i>0&&(A(r,s,i,o),i=0),[2]})})()},destroy:function(){return _async_to_generator(function(){var e;return _ts_generator(this,function(t){return e=a.name||"dataLayer",o&&o[e]&&Array.isArray(o[e]),[2]})})()}}]})})()},Ve=Fe;return Ge=de,function(e,t,n,r){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;le.call(e,o)||o===n||ie(e,o,{get:function(){return t[o]},enumerable:!(r=ce(t,o))||r.enumerable})},u=ue(t)[Symbol.iterator]();!(o=(i=u.next()).done);o=!0)c()}catch(e){a=!0,s=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw s}}}return e}(ie({},"__esModule",{value:!0}),Ge)}();
|
|
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,o,a,s){try{var i=e[a](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(r,o)}function _async_to_generator(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function s(e){asyncGeneratorStep(a,r,o,s,i,"next",e)}function i(e){asyncGeneratorStep(a,r,o,s,i,"throw",e)}s(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,o,a=[],s=!0,i=!1;try{for(n=n.call(e);!(s=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);s=!0);}catch(e){i=!0,o=e}finally{try{s||null==n.return||n.return()}finally{if(i)throw o}}return a}}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 _object_without_properties(e,t){if(null==e)return{};var n,r,o,a={};if("undefined"!=typeof Reflect&&Reflect.ownKeys){for(n=Reflect.ownKeys(Object(e)),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}if(a=_object_without_properties_loose(e,t),Object.getOwnPropertySymbols)for(n=Object.getOwnPropertySymbols(e),o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}function _object_without_properties_loose(e,t){if(null==e)return{};var n,r,o={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}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,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},s=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(s,"next",{value:c(0)}),i(s,"throw",{value:c(1)}),i(s,"return",{value:c(2)}),"function"==typeof Symbol&&i(s,Symbol.iterator,{value:function(){return this}}),s;function c(i){return function(c){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s&&(s=0,i[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}function _ts_values(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}var Destination=function(){var e=function(e){return{_meta:{hops:0,path:[e]}}},t=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({},ye,n);var r=Object.entries(t).reduce(function(t,r){var o=_sliced_to_array(r,2),a=o[0],s=o[1],i=e[a];return n.merge&&Array.isArray(i)&&Array.isArray(s)?t[a]=s.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(i)):(n.extend||a in e)&&(t[a]=s),t},{});return n.shallow?_object_spread({},e,r):(Object.assign(e,r),e)},n=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},o=function(e){return"function"==typeof e},a=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!n(e)&&"[object Object]"===Object.prototype.toString.call(e)},s=function(e){return"string"==typeof e},i=function(e,t,n){if(!a(e))return e;for(var r=be(e),o=t.split("."),s=r,i=0;i<o.length;i++){var c=o[i];i===o.length-1?s[c]=n:(c in s&&"object"==_type_of(s[c])&&null!==s[c]||(s[c]={}),s=s[c])}return r},c=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=!e||0===Object.keys(e).length;return Object.keys(t).forEach(function(o){t[o]&&(n[o]=!0,e&&e[o]&&(r=!0))}),!!r&&n},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t=arguments.length>1?arguments[1]:void 0;if(t){for(var n=t.length,r="",o=0;o<e;o++)r+=t[Math.random()*n|0];return r}for(var a="";a.length<e;)a+=(36*Math.random()|0).toString(36);return a},l=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=null,a=!1;return function(){for(var s=arguments.length,i=new Array(s),c=0;c<s;c++)i[c]=arguments[c];return new Promise(function(s){var c=r&&!a;o&&clearTimeout(o),o=setTimeout(function(){o=null,r&&!a||(t=e.apply(void 0,_to_consumable_array(i)),s(t))},n),c&&(a=!0,t=e.apply(void 0,_to_consumable_array(i)),s(t))})}},f=function(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}},d=function(e,t){var n,r={};return _instanceof(e,Error)?(n=e.message,r.error=f(e)):n=e,void 0!==t&&(_instanceof(t,Error)?r.error=f(t):"object"==(void 0===t?"undefined":_type_of(t))&&null!==t?"error"in(r=_object_spread({},r,t))&&_instanceof(r.error,Error)&&(r.error=f(r.error)):r.value=t),{message:n,context:r}},_=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return je({level:void 0!==t.level?(e=t.level,"string"==typeof e?pe[e]:e):0,handler:t.handler,jsonHandler:t.jsonHandler,scope:[]})},v=function(e){return ke(e)?e:void 0},g=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}},p=function(e,t,n){return function(){for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];return _async_to_generator(function(){var r;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return r=a.sent(),t?[4,t(r)]:[2];case 4:return[4,null==n?void 0:n()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},y=function(e,t,r){return _async_to_generator(function(){var o,s,i,c,u,l,f,d,_,v;return _ts_generator(this,function(g){return s=_sliced_to_array((e.name||"").split(" "),2),i=s[0],c=s[1],t&&i&&c?(l="",d=c,_=function(t){if(t)return(n(t)?t:[t]).find(function(t){if(!t.condition)return!0;if(!r)return Boolean(t.condition(e,void 0));var n={event:e,mapping:t,collector:r,logger:r.logger,consent:a(e)&&e.consent||r.consent};return Boolean(t.condition(e,n))})},t[f=i]||(f="*"),[2,((v=t[f])&&(v[d]||(d="*"),u=_(v[d])),u||(f="*",d="*",u=_(null===(o=t[f])||void 0===o?void 0:o[d])),u&&(l="".concat(f," ").concat(d)),{eventMapping:u,mappingKey:l})]):[2,{}]})})()},b=function(e){return _async_to_generator(function(e){var t,o,s,i,c,u,l,f,d,_,v,g,y,b,h,m,w=arguments;return _ts_generator(this,function(j){switch(j.label){case 0:if(t=w.length>1&&void 0!==w[1]?w[1]:{},o=w.length>2&&void 0!==w[2]?w[2]:{},!r(e))return[2];if(c=a(e)&&e.consent||o.consent||(null===(i=o.collector)||void 0===i?void 0:i.consent),u=null!==(s=o.event)&&void 0!==s?s:a(e)?e:{},!o.collector)throw new Error("getMappingValue: context.collector is required");l={event:u,mapping:t,collector:o.collector,logger:o.collector.logger,consent:c},f=n(t)?t:[t],d=!0,_=!1,v=void 0,j.label=1;case 1:j.trys.push([1,6,7,8]),g=f[Symbol.iterator](),j.label=2;case 2:return(d=(y=g.next()).done)?[3,5]:(b=y.value,[4,p(Oe)(e,b,_object_spread_props(_object_spread({},l),{mapping:b}))]);case 3:if(h=j.sent(),r(h))return[2,h];j.label=4;case 4:return d=!0,[3,2];case 5:return[3,8];case 6:return m=j.sent(),_=!0,v=m,[3,8];case 7:try{d||null==g.return||g.return()}finally{if(_)throw v}return[7];case 8:return[2]}})}).apply(this,arguments)},h=function(e,n,r){return _async_to_generator(function(){var o,s,c,u,l,f,d,_,v,g,p;return _ts_generator(this,function(h){switch(h.label){case 0:return n.policy?[4,Promise.all(Object.entries(n.policy).map(function(t){var n=_sliced_to_array(t,2),o=n[0],a=n[1];return _async_to_generator(function(){var t;return _ts_generator(this,function(n){switch(n.label){case 0:return[4,b(e,a,{collector:r,event:e})];case 1:return t=n.sent(),e=i(e,o,t),[2]}})})()}))]:[3,2];case 1:h.sent(),h.label=2;case 2:return[4,y(e,n.mapping,r)];case 3:return s=h.sent(),c=s.eventMapping,u=s.mappingKey,(null==c?void 0:c.policy)?[4,Promise.all(Object.entries(c.policy).map(function(t){var n=_sliced_to_array(t,2),o=n[0],a=n[1];return _async_to_generator(function(){var t;return _ts_generator(this,function(n){switch(n.label){case 0:return[4,b(e,a,{collector:r,event:e})];case 1:return t=n.sent(),e=i(e,o,t),[2]}})})()}))]:[3,5];case 4:h.sent(),h.label=5;case 5:return(f=n.data)?[4,b(e,n.data,{collector:r,event:e})]:[3,7];case 6:f=h.sent(),h.label=7;case 7:return l=f,d=Boolean(null==c?void 0:c.silent),c?c.ignore?[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!0,silent:d}]:(c.name&&(e.name=c.name),c.data?(v=c.data)?[4,b(e,c.data,{collector:r,event:e})]:[3,9]:[3,10]):[3,10];case 8:v=h.sent(),h.label=9;case 9:_=v,l=a(l)&&a(_)?t(l,_):_,h.label=10;case 10:return(g=null!==(o=null==c?void 0:c.include)&&void 0!==o?o:n.include)&&g.length>0&&(p=function(e,t){var n={},r=t.includes("all")?Object.keys(me):t,o=!0,s=!1,i=void 0;try{for(var c,u=r[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var l=c.value,f=me[l];if(f){var d=f(e),_=!0,v=!1,g=void 0;if(a(d))try{for(var p,y=Object.entries(d)[Symbol.iterator]();!(_=(p=y.next()).done);_=!0){var b=_sliced_to_array(p.value,2),h=b[0],m=b[1];if(void 0!==m){var w="context"===l&&Array.isArray(m)?m[0]:m;n["".concat(l,"_").concat(h)]=w}}}catch(e){v=!0,g=e}finally{try{_||null==y.return||y.return()}finally{if(v)throw g}}}}}catch(e){s=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(s)throw i}}return n}(e,g),Object.keys(p).length>0&&(l=a(l)?t(p,l):null!=l?l:p)),[2,{event:e,data:l,mapping:c,mappingKey:u,ignore:!1,silent:d}]}})})()},m=function(e,t,n,r){return function(){for(var o=arguments.length,a=new Array(o),s=0;s<o;s++)a[s]=arguments[s];var i,c="pre"+t,u="post"+t,l=n[c],f=n[u],d=function(e,t){r?r.warn(e,{error:t}):console.warn(e,t)};if(l)try{i=l.apply(void 0,[{fn:e}].concat(_to_consumable_array(a)))}catch(t){d("Hook ".concat(String(c)," failed, falling back to original function"),t),i=e.apply(void 0,_to_consumable_array(a))}else i=e.apply(void 0,_to_consumable_array(a));if(f)try{i=f.apply(void 0,[{fn:e,result:i}].concat(_to_consumable_array(a)))}catch(e){d("Hook ".concat(String(u)," failed, keeping original result"),e)}return i}},w=function(e){return Array.isArray(e)&&e.length>0&&"object"==_type_of(e[0])&&null!==e[0]&&"match"in e[0]},j=function(e,t){var n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n},k=function(e){var t;return{full:null!==(t=e.full)&&void 0!==t&&t,storeId:e.store,rules:e.rules.map(function(e){return{match:Se(e.match),key:e.key,ttl:e.ttl,update:e.update}})}},O=function(e,t,n,r){var o=e.rules.find(function(e){return e.match(n)});if(!o)return null;var a=o.key.map(function(e){var t;return String(null!==(t=he(n,e))&&void 0!==t?t:"")});if(a.every(function(e){return""===e}))return null;var s="".concat(r,":").concat(a.join(":")),i=t.get(s);return void 0!==i?{status:"HIT",key:s,value:i,rule:o}:{status:"MISS",key:s,rule:o}},S=function(e,t,n,r){e.set(t,n,1e3*r)},x=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,v,g;return _ts_generator(this,function(p){switch(p.label){case 0:if(!t)return[2,e];o=e,a=!0,s=!1,c=void 0,p.label=1;case 1:p.trys.push([1,6,7,8]),u=Object.entries(t)[Symbol.iterator](),p.label=2;case 2:return(a=(l=u.next()).done)?[3,5]:(f=_sliced_to_array(l.value,2),d=f[0],_=f[1],v=[o,d],[4,b(n,_,{collector:r})]);case 3:o=i.apply(void 0,v.concat([p.sent()])),p.label=4;case 4:return a=!0,[3,2];case 5:return[3,8];case 6:return g=p.sent(),s=!0,c=g,[3,8];case 7:try{a||null==u.return||u.return()}finally{if(s)throw c}return[7];case 8:return[2,o]}})})()},A=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;if(t.filter&&!0===g(function(){return t.filter(n)},function(){return!1})())return;var r=C(n);if(r){var o=t.prefix||"dataLayer",a="".concat(o," ").concat(r.name),s=(r.name,{name:a,data:_object_without_properties(r,["name"])});g(function(){return e(s)},function(){})()}},C=function(e){if(a(e)&&s(e.event))return _object_spread({name:e.event},_object_without_properties(e,["event"]));if(n(e)&&e.length>=2)return P(e);if(q(e)){var t=Array.from(e);return P(t)}return null},P=function(e){var t,n=_sliced_to_array(e,3),r=n[0],o=n[1],i=n[2];if(!s(r))return null;var c={};switch(r){case"consent":if(!s(o)||e.length<3)return null;if("default"!==o&&"update"!==o)return null;if(!a(i)||null===i)return null;t="".concat(r," ").concat(o),c=_object_spread({},i);break;case"event":if(!s(o))return null;t=o,a(i)&&(c=_object_spread({},i));break;case"config":if(!s(o))return null;t="".concat(r," ").concat(o),a(i)&&(c=_object_spread({},i));break;case"set":if(s(o))t="".concat(r," ").concat(o),a(i)&&(c=_object_spread({},i));else{if(!a(o))return null;t="".concat(r," custom"),c=_object_spread({},o)}break;default:return null}return _object_spread({name:t},c)},q=function(e){return null!=e&&"object"===(void 0===e?"undefined":_type_of(e))&&"length"in e&&"number"==typeof e.length&&e.length>0},E=function(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache},D=function(e){var t={},n=!0,r=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i,c=_sliced_to_array(a.value,2),u=c[0],l=null===(i=c[1].config)||void 0===i?void 0:i.next;l&&!w(l)?t[u]={next:l}:t[u]={}}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}return t},L=function(e,t){var n=e.config||{},r=e[t];return void 0!==r?{config:_object_spread_props(_object_spread({},n),_define_property({},t,r)),chainValue:r}:{config:n,chainValue:void 0}},I=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return[];if(Array.isArray(e))return e;for(var n=[],r=new Set,o=e;o&&t[o]&&!r.has(o);){r.add(o),n.push(o);var a=t[o].next;if(Array.isArray(a)){var s;(s=n).push.apply(s,_to_consumable_array(a));break}o=a}return n},R=function(t,n,r){return _async_to_generator(function(){var o,a,s,i;return _ts_generator(this,function(c){switch(c.label){case 0:return!n.init||n.config.init?[3,2]:(o=n.type||"unknown",a=t.logger.scope("transformer:".concat(o)),s={collector:t,logger:a,id:r,ingest:e(r),config:n.config,env:M(n.config.env)},a.debug("init"),[4,m(n.init,"TransformerInit",t.hooks,t.logger)(s)]);case 1:if(!1===(i=c.sent()))return[2,!1];n.config=_object_spread_props(_object_spread({},i||n.config),{env:(null==i?void 0:i.env)||n.config.env,init:!0}),a.debug("init done"),c.label=2;case 2:return[2,!0]}})})()},T=function(e,t,n,r,o,a){return _async_to_generator(function(){var s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:return s=t.type||"unknown",i=e.logger.scope("transformer:".concat(s)),c={collector:e,logger:i,id:n,ingest:o,config:t.config,env:_object_spread({},M(t.config.env),a?{respond:a}:{})},i.debug("push",{event:r.name}),[4,m(t.push,"TransformerPush",e.hooks,e.logger)(r,c)];case 1:return u=l.sent(),[2,(i.debug("push done"),u)]}})})()},M=function(e){return e&&a(e)?e:{}},U=function(e,t){return _async_to_generator(function(){var e,n,r,o,a,s,i,c,u,l,f;return _ts_generator(this,function(d){switch(d.label){case 0:if(!t.on||!(null===(e=t.queueOn)||void 0===e?void 0:e.length))return[2];n=t.queueOn,t.queueOn=[],r=!0,o=!1,a=void 0,d.label=1;case 1:d.trys.push([1,6,7,8]),s=n[Symbol.iterator](),d.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=i.value,u=c.type,l=c.data,[4,p(t.on)(u,l)]);case 3:d.sent(),d.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return f=d.sent(),o=!0,a=f,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2]}})})()},K=function(e){var t;return Boolean(e.config.init)&&!(null===(t=e.config.require)||void 0===t?void 0:t.length)},N=function(t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,v,g,y,h,m,A,C,P,q,L,R,T,M;return _ts_generator(this,function(U){switch(U.label){case 0:return a=r.code,s=r.config,i=void 0===s?{}:s,c=r.env,u=void 0===c?{}:c,l=r.primary,f=r.next,d=r.before,_=r.cache,g=e(n),y=_?k(_object_spread_props(_object_spread({},_),{full:null===(o=_.full)||void 0===o||o})):void 0,h=xe(f),m=Array.isArray(f)&&w(f)||!h?void 0:I(Ae(h),D(t.transformers)),A=xe(d),C=Array.isArray(d)&&w(d)||!A?void 0:I(Ae(A),D(t.transformers)),P=t.logger.scope("source").scope(n),q=_object_spread({push:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){var o,a,s,c,u,l,f,d,_,p,b,w,k,P,q;return _ts_generator(this,function(L){switch(L.label){case 0:return a=e,(s=null!=C?C:A?I(Ae(A,j(g)),D(t.transformers)):[]).length>0&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ge(t,t.transformers,s,a,g,v,"source.".concat(n,".before"))]:[3,2];case 1:if(null===(c=L.sent()).event)return[2,{ok:!0}];c.respond&&(v=c.respond),a=Array.isArray(c.event)?c.event[0]:c.event,L.label=2;case 2:return y&&(u=E(y,t))?(l=j(g),(f=O(y,u,l,"s:".concat(n)))?"HIT"===f.status&&void 0!==f.value&&y.full?(d=f.value,f.rule.update?[4,x(d,f.rule.update,_object_spread_props(_object_spread({},l),{cache:{status:"HIT"}}),t)]:[3,4]):[3,5]:[3,6]):[3,6];case 3:d=L.sent(),L.label=4;case 4:return[2,(null==v||v(d),{ok:!0})];case 5:"MISS"===f.status&&y.full&&v&&(_=v,p=f.rule.update,b=_object_spread_props(_object_spread({},l),{cache:{status:"MISS"}}),w=f.key,k=f.rule.ttl,v=function(e){S(u,w,e,k),p?o=_async_to_generator(function(){var n;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,x(e,p,b,t)];case 1:return n=r.sent(),_(n),[2]}})})():_(e)}),"MISS"!==f.status||y.full||S(u,f.key,!0,f.rule.ttl),L.label=6;case 6:return P=null!=m?m:h?I(Ae(h,j(g)),D(t.transformers)):[],[4,t.push(a,_object_spread_props(_object_spread({},r),{id:n,ingest:g,respond:v,mapping:i,preChain:P}))];case 7:return q=L.sent(),o?[4,o]:[3,9];case 8:L.sent(),L.label=9;case 9:return[2,q]}})})()},command:t.command,sources:t.sources,elb:t.sources.elb.push,logger:P},u),L={collector:t,logger:P,id:n,config:i,env:q,setIngest:function(r){return _async_to_generator(function(){var o,a;return _ts_generator(this,function(s){switch(s.label){case 0:return i.ingest?[4,b(r,i.ingest,{collector:t})]:[2,void(g=e(n))];case 1:return o=s.sent(),a=e(n),g=_object_spread_props(_object_spread({},a,o),{_meta:a._meta}),[2]}})})()},setRespond:function(e){v=e}},[4,p(a)(L)];case 1:return(R=U.sent())?(T=R.type||"unknown",M=t.logger.scope(T).scope(n),[2,(q.logger=M,l&&(R.config=_object_spread_props(_object_spread({},R.config),{primary:l})),R)]):[2]}})})()},H=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,_,v,g,y,b,h,m,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:t=k.length>1&&void 0!==k[1]?k[1]:{},n={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(t)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],[4,N(e,u,l)]);case 3:if(!(d=O.sent()))return[3,4];_=null===(f=l.config)||void 0===f?void 0:f.require,d.config=_object_spread(_object_spread_props(_object_spread({},d.config),{init:!1}),_?{require:_to_consumable_array(_)}:{}),n[u]=d,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:Object.assign(e.sources,n),v=!0,g=!1,y=void 0,O.label=9;case 9:O.trys.push([9,17,18,19]),b=Object.keys(n)[Symbol.iterator](),O.label=10;case 10:return(v=(h=b.next()).done)?[3,16]:(m=h.value,w=e.sources[m],w.init?[4,p(w.init.bind(w))()]:[3,12]);case 11:O.sent(),O.label=12;case 12:return w.config.init=!0,K(w)?[4,U(0,w)]:[3,14];case 13:O.sent(),O.label=14;case 14:O.label=15;case 15:return v=!0,[3,10];case 16:return[3,19];case 17:return j=O.sent(),g=!0,y=j,[3,19];case 18:try{v||null==b.return||b.return()}finally{if(g)throw y}return[7];case 19:return[2,n]}})}).apply(this,arguments)},G=function(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}},B=function(e,t,r){return _async_to_generator(function(){var o,a,s;return _ts_generator(this,function(i){return o=e.on,a=o[t]||[],(s=n(r)?r:[r]).forEach(function(e){a.push(e)}),o[t]=a,F(e,t,s),[2]})})()},W=function(e,t,n,r,o){if(t.on){var a=t.type||"unknown",s=e.logger.scope(a).scope("on").scope(r),i={collector:e,logger:s,id:n,config:t.config,data:o,env:te(t.env,t.config.env)};g(t.on)(r,i)}},F=function(e,t,n,r){var o,a,s,i,c;switch(t){case He.Commands.Consent:o=r||e.consent;break;case He.Commands.Session:o=e.session;break;case He.Commands.User:o=r||e.user;break;case He.Commands.Custom:o=r||e.custom;break;case He.Commands.Globals:o=r||e.globals;break;case He.Commands.Config:o=r||e.config;break;case He.Commands.Ready:case He.Commands.Run:default:o=void 0}if(n.length)switch(t){case He.Commands.Consent:a=e,s=n,i=r||a.consent,c=G(a,He.Commands.Consent),s.forEach(function(e){Object.keys(i).filter(function(t){return t in e}).forEach(function(t){g(e[t])(i,c)})});break;case He.Commands.Ready:!function(e,t){if(e.allowed){var n=G(e,He.Commands.Ready);t.forEach(function(e){g(e)(void 0,n)})}}(e,n);break;case He.Commands.Run:!function(e,t){if(e.allowed){var n=G(e,He.Commands.Run);t.forEach(function(e){g(e)(void 0,n)})}}(e,n);break;case He.Commands.Session:!function(e,t){if(e.session){var n=G(e,He.Commands.Session);t.forEach(function(t){g(t)(e.session,n)})}}(e,n);break;default:var u=G(e,t);n.forEach(function(e){"function"==typeof e&&g(e)(o,u)})}},V=function(e,t,n,r){return _async_to_generator(function(){var o,a,s,i,c,u,l,f,d,_,v,g,y,b,h,m,w,j,k,O;return _ts_generator(this,function(S){switch(S.label){case 0:switch(s=n||[],n||(s=e.on[t]||[]),t){case He.Commands.Consent:a=r||e.consent;break;case He.Commands.Session:a=e.session;break;case He.Commands.User:a=r||e.user;break;case He.Commands.Custom:a=r||e.custom;break;case He.Commands.Globals:a=r||e.globals;break;case He.Commands.Config:a=r||e.config;break;case He.Commands.Ready:case He.Commands.Run:default:a=void 0}i=!1,c=!0,u=!1,l=void 0,S.label=1;case 1:S.trys.push([1,7,8,9]),f=Object.values(e.sources)[Symbol.iterator](),S.label=2;case 2:return(c=(d=f.next()).done)?[3,6]:(_=d.value,(null===(v=_.config.require)||void 0===v?void 0:v.length)&&-1!==(g=_.config.require.indexOf(t))&&_.config.require.splice(g,1),_.on?K(_)?(y=!1,[4,p(_.on)(t,a)]):[3,4]:[3,5]);case 3:return y===S.sent()&&(i=!0),[3,5];case 4:_.queueOn=_.queueOn||[],_.queueOn.push({type:t,data:a}),S.label=5;case 5:return c=!0,[3,2];case 6:return[3,9];case 7:return O=S.sent(),u=!0,l=O,[3,9];case 8:try{c||null==f.return||f.return()}finally{if(u)throw l}return[7];case 9:Object.entries(e.destinations).forEach(function(n){var r=_sliced_to_array(n,2),o=r[0],s=r[1];if(s.on){if(!s.config.init)return s.queueOn=s.queueOn||[],void s.queueOn.push({type:t,data:a});W(e,s,o,t,a)}}),b=!0,h=!1,m=void 0,S.label=10;case 10:S.trys.push([10,16,17,18]),w=Object.values(e.sources)[Symbol.iterator](),S.label=11;case 11:return(b=(j=w.next()).done)?[3,15]:(k=j.value,K(k)&&(null===(o=k.queueOn)||void 0===o?void 0:o.length)?[4,U(0,k)]:[3,13]);case 12:S.sent(),S.label=13;case 13:S.label=14;case 14:return b=!0,[3,11];case 15:return[3,18];case 16:return O=S.sent(),h=!0,m=O,[3,18];case 17:try{b||null==w.return||w.return()}finally{if(h)throw m}return[7];case 18:return Object.keys(e.pending.destinations).length>0?[4,function(e,t){return _async_to_generator(function(){var n,r,o,a,s,i,c,u,l,f,d,_;return _ts_generator(this,function(v){n=!0,r=!1,o=void 0;try{for(a=Object.entries(e.pending.destinations)[Symbol.iterator]();!(n=(s=a.next()).done);n=!0)i=_sliced_to_array(s.value,2),c=i[0],u=i[1],e.pending.destinations[c]&&!e.destinations[c]&&(f=null===(l=u.config)||void 0===l?void 0:l.require)&&-1!==(d=f.indexOf(t))&&(f.splice(d,1),f.length>0||(delete e.pending.destinations[c],!1!==(_=Z(u)).config.queue&&(_.queuePush=_to_consumable_array(e.queue)),e.destinations[c]=_))}catch(e){r=!0,o=e}finally{try{n||null==a.return||a.return()}finally{if(r)throw o}}return[2]})})()}(e,t)]:[3,20];case 19:S.sent(),S.label=20;case 20:return[2,(F(e,t,s,r),!i)]}})})()},z=function(e,t,n,r){if(!e)return[];if(t){var o=Ae(t,j(r));return o?I(o,D(n)):[]}return I(e,D(n))},J=function(e,t,n){return _async_to_generator(function(){var r,a,s,i,c,l,f,d,_,v,g,p;return _ts_generator(this,function(y){if(r=t.code,a=t.config,s=void 0===a?{}:a,i=t.env,c=void 0===i?{}:i,l=t.before,f=t.next,d=t.cache,!o(r.push))return[2,Y({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}})];if(_=n||s||{init:!1},v=l?_object_spread_props(_object_spread({},_),{before:l}):_object_spread({},_),f&&(v=_object_spread_props(_object_spread({},v),{next:f})),d&&(v=_object_spread_props(_object_spread({},v),{cache:d})),g=_object_spread_props(_object_spread({},r),{config:v,env:te(r.env,c)}),!(p=g.config.id))do{p=u(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[p]);return[2,(e.destinations[p]=g,!1!==g.config.queue&&(g.queuePush=_to_consumable_array(e.queue)),$(e,void 0,{},_define_property({},p,g)))]})})()},$=function(n,r,o){return _async_to_generator(function(n,r){var o,a,s,i,u,l,f,d,_,v,g,y,b,h,m,x,A,C,P,q=arguments;return _ts_generator(this,function(D){switch(D.label){case 0:return o=q.length>2&&void 0!==q[2]?q[2]:{},a=q.length>3?q[3]:void 0,s=n.allowed,i=n.consent,u=n.globals,l=n.user,s?(r&&(n.queue.push(r),n.status.in++),a||(a=n.destinations),[4,Promise.all(Object.entries(a||{}).map(function(a){var s=_sliced_to_array(a,2),f=s[0],d=s[1];return _async_to_generator(function(){var a,s,_,v,g,y,b,h,m,x,A,C,P,q,D,L,I,R,T;return _ts_generator(this,function(M){switch(M.label){case 0:return d.config.disabled?[2,{id:f,destination:d,skipped:!0}]:(g=(d.queuePush||[]).map(function(e){return _object_spread_props(_object_spread({},e),{consent:i})}),d.queuePush=[],r&&g.push(be(r)),y=o.ingest?_object_spread_props(_object_spread({},o.ingest),{_meta:_object_spread_props(_object_spread({},o.ingest._meta),{path:_to_consumable_array(o.ingest._meta.path)})}):e("unknown"),g.length||(null===(s=d.queueOn)||void 0===s?void 0:s.length)?g.length||!(null===(_=d.queueOn)||void 0===_?void 0:_.length)?[3,2]:[4,p(Q)(n,d,f)]:[2,{id:f,destination:d,skipped:!0}]);case 1:return b=M.sent(),[2,{id:f,destination:d,skipped:!b}];case 2:return h=[],m=g.filter(function(e){var t=c(d.config.consent,i,e.consent);return!t||(e.consent=t,h.push(e),!1)}),(a=d.queuePush).push.apply(a,_to_consumable_array(m)),h.length?[4,p(Q)(n,d,f)]:[2,{id:f,destination:d,queue:g}];case 3:return M.sent()?(d.dlq||(d.dlq=[]),C=d.config.before,P=z(C,C&&w(C)?xe(C):void 0,n.transformers,y),q=d.config.next,D=q&&w(q)?xe(q):void 0,L=null===(v=d.config)||void 0===v?void 0:v.cache,I=L?k(L):void 0,R=I?E(I,n):void 0,T=0,[4,Promise.all(h.map(function(e){return _async_to_generator(function(){var r,a,s,i,c,_,v,g,b,h,m,w,k;return _ts_generator(this,function(C){switch(C.label){case 0:if(e.globals=t(u,e.globals),e.user=t(l,e.user),(null==I?void 0:I.full)&&R){if(a=j(y,e),"HIT"===(null==(s=O(I,R,a,"d:".concat(f)))?void 0:s.status))return[2,e];"MISS"===(null==s?void 0:s.status)&&(r={key:s.key,ttl:s.rule.ttl})}return i=e,c=o.respond,P.length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ge(n,n.transformers,P,e,y,o.respond,"destination.".concat(f,".before"))]:[3,2];case 1:if(null===(_=C.sent()).event)return[2,e];_.respond&&(c=_.respond),i=Array.isArray(_.event)?_.event[0]:_.event,C.label=2;case 2:if(I&&!I.full&&R){if(v=j(y,i),"HIT"===(null==(g=O(I,R,v,"d:".concat(f)))?void 0:g.status))return[2,e];"MISS"===(null==g?void 0:g.status)&&(r={key:g.key,ttl:g.rule.ttl})}return b=Date.now(),h=!1,[4,p(X,function(e){var t=d.type||"unknown";n.logger.scope(t).error("Push failed",{error:e,event:i.name}),x=e,h=!0,d.dlq.push([i,e])})(n,d,f,i,y,c)];case 3:return m=C.sent(),T+=Date.now()-b,r&&R&&void 0===d.config.mock&&S(R,r.key,null==m||m,r.ttl),void 0!==m&&(A=m),h||!q?[3,5]:(void 0!==m&&(y._response=m),(w=z(q,D,n.transformers,y)).length>0&&n.transformers&&Object.keys(n.transformers).length>0?[4,Ge(n,n.transformers,w,i,y,c,"destination.".concat(f,".next"))]:[3,5]);case 4:(k=C.sent()).respond&&(c=k.respond),C.label=5;case 5:return[2,e]}})})()}))]):[2,{id:f,destination:d,queue:g}];case 4:return[2,(M.sent(),{id:f,destination:d,error:x,response:A,totalDuration:T})]}})})()}))]):[2,Y({ok:!1})];case 1:f=D.sent(),d={},_={},v={},g=!0,y=!1,b=void 0;try{for(h=f[Symbol.iterator]();!(g=(m=h.next()).done);g=!0)(x=m.value).skipped||(A={type:x.destination.type||"unknown",data:x.response},n.status.destinations[x.id]||(n.status.destinations[x.id]={count:0,failed:0,duration:0}),C=n.status.destinations[x.id],P=Date.now(),x.error?(A.error=x.error,v[x.id]=A,C.failed++,C.lastAt=P,C.duration+=x.totalDuration||0,n.status.failed++):x.queue&&x.queue.length?_[x.id]=A:(d[x.id]=A,C.count++,C.lastAt=P,C.duration+=x.totalDuration||0,n.status.out++))}catch(e){y=!0,b=e}finally{try{g||null==h.return||h.return()}finally{if(y)throw b}}return[2,Y(_object_spread({event:r},Object.keys(d).length&&{done:d},Object.keys(_).length&&{queued:_},Object.keys(v).length&&{failed:v}))]}})}).apply(this,arguments)},Q=function(e,t,n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,v,g,p;return _ts_generator(this,function(y){switch(y.label){case 0:return!t.init||t.config.init?[3,2]:(o=t.type||"unknown",a=e.logger.scope(o),s={collector:e,logger:a,id:n,config:t.config,env:te(t.env,t.config.env)},a.debug("init"),[4,m(t.init,"DestinationInit",e.hooks,e.logger)(s)]);case 1:if(!1===(i=y.sent()))return[2,i];if(t.config=_object_spread_props(_object_spread({},i||t.config),{init:!0}),null===(r=t.queueOn)||void 0===r?void 0:r.length){c=t.queueOn,t.queueOn=[],u=!0,l=!1,f=void 0;try{for(d=c[Symbol.iterator]();!(u=(_=d.next()).done);u=!0)v=_.value,g=v.type,p=v.data,W(e,t,n,g,p)}catch(e){l=!0,f=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw f}}}a.debug("init done"),y.label=2;case 2:return[2,!0]}})})()},X=function(e,t,n,o,a,s){return _async_to_generator(function(){var i,c,u,f,d,_,v,g,p,y;return _ts_generator(this,function(b){switch(b.label){case 0:return i=t.config,[4,h(o,i,e)];case 1:return(c=b.sent()).ignore?[2,!1]:(u=t.type||"unknown",f=e.logger.scope(u),d={collector:e,logger:f,id:n,config:i,data:c.data,rule:c.mapping,ingest:a,env:_object_spread({},te(t.env,i.env),s?{respond:s}:{})},void 0!==i.mock?[2,(f.debug("mock",{event:c.event.name}),i.mock)]:(_=c.mapping,v=c.mappingKey||"* *",(null==_?void 0:_.batch)&&t.pushBatch&&void 0===i.mock?[3,3]:(f.debug("push",{event:c.event.name}),[4,m(t.push,"DestinationPush",e.hooks,e.logger)(c.event,d)])));case 2:return g=b.sent(),[2,(f.debug("push done"),g)];case 3:return t.batches=t.batches||{},t.batches[v]||(p={key:v,events:[],data:[]},t.batches[v]={batched:p,batchFn:l(function(){var r=t.batches[v].batched,o={collector:e,logger:f,id:n,config:i,data:void 0,rule:_,ingest:a,env:_object_spread({},te(t.env,i.env),s?{respond:s}:{})};f.debug("push batch",{events:r.events.length}),m(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(r,o),f.debug("push batch done"),r.events=[],r.data=[]},_.batch)}),(y=t.batches[v]).batched.events.push(c.event),r(c.data)&&y.batched.data.push(c.data),y.batchFn(),[2,!0]}})})()},Y=function(e){return _object_spread({ok:!(null==e?void 0:e.failed)},e)},Z=function(e){var t=e.code,n=e.config,r=void 0===n?{}:n,o=e.env,a=void 0===o?{}:o,s=e.cache,i=L(e,"before").config,c=L(_object_spread_props(_object_spread({},e),{config:i}),"next").config,u=_object_spread({},t.config,r,c);s&&(u.cache=s);var l=te(t.env,a);return _object_spread_props(_object_spread({},t),{config:u,env:l})},ee=function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,_=arguments;return _ts_generator(this,function(v){t=_.length>1&&void 0!==_[1]?_[1]:{},o={},a=!0,s=!1,i=void 0;try{for(c=Object.entries(t)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(r=d.config)||void 0===r||null===(n=r.require)||void 0===n?void 0:n.length)?e.pending.destinations[f]=d:o[f]=Z(d)}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}return[2,o]})}).apply(this,arguments)},te=function(e,t){return e||t?t?e&&a(e)&&a(t)?_object_spread({},e,t):t:e:{}},ne=function(e,t,n){return _async_to_generator(function(){var r;return _ts_generator(this,function(o){switch(o.label){case 0:return r=Object.entries(e).map(function(e){var r=_sliced_to_array(e,2),o=r[0],a=r[1];return _async_to_generator(function(){var e,r,s,i,c,u;return _ts_generator(this,function(l){switch(l.label){case 0:if(!(r=a.destroy))return[2];s=a.type||"unknown",i=n.scope(s),c={id:o,config:a.config,env:null!==(e=a.env)&&void 0!==e?e:{},logger:i},l.label=1;case 1:return l.trys.push([1,3,,4]),[4,Promise.race([r(c),new Promise(function(e,n){return setTimeout(function(){return n(new Error("".concat(t," '").concat(o,"' destroy timed out")))},5e3)})])];case 2:return l.sent(),[3,4];case 3:return u=l.sent(),i.error("".concat(t," '").concat(o,"' destroy failed: ").concat(u)),[3,4];case 4:return[2]}})})()}),[4,Promise.allSettled(r)];case 1:return o.sent(),[2]}})})()},re=function(e,n,r,i){return _async_to_generator(function(){var c,u,l,f,d,_,v;return _ts_generator(this,function(g){switch(g.label){case 0:switch(l=!1,n){case He.Commands.Config:return[3,1];case He.Commands.Consent:return[3,2];case He.Commands.Custom:return[3,3];case He.Commands.Destination:return[3,4];case He.Commands.Globals:return[3,11];case He.Commands.On:return[3,12];case He.Commands.Ready:return[3,15];case He.Commands.Run:return[3,16];case He.Commands.Session:return[3,18];case He.Commands.Shutdown:return[3,19];case He.Commands.User:return[3,21]}return[3,22];case 1:return a(r)&&(t(e.config,r,{shallow:!1}),u=r,l=!0),[3,22];case 2:return a(r)&&(f=function(e,n){var r={};return Object.entries(n).forEach(function(e){var t=_sliced_to_array(e,2),n=t[0],o=t[1];r[n]=!!o}),e.consent=t(e.consent,r),{update:r}}(e,r),d=f.update,u=d,l=!0),[3,22];case 3:return a(r)&&(e.custom=t(e.custom,r),u=r,l=!0),[3,22];case 4:return a(r)?"code"in r&&a(r.code)?[4,J(e,r,i)]:[3,6]:[3,10];case 5:return _=c=g.sent(),[3,9];case 6:return(v=o(r.push))?[4,J(e,{code:r},i)]:[3,8];case 7:v=c=g.sent(),g.label=8;case 8:_=v,g.label=9;case 9:g.label=10;case 10:return[3,22];case 11:return a(r)&&(e.globals=t(e.globals,r),u=r,l=!0),[3,22];case 12:return s(r)?[4,B(e,r,i)]:[3,14];case 13:g.sent(),g.label=14;case 14:return[3,22];case 15:return l=!0,[3,22];case 16:return[4,ae(e,r)];case 17:return c=g.sent(),l=!0,[3,22];case 18:return l=!0,[3,22];case 19:return[4,(p=e,_async_to_generator(function(){var e;return _ts_generator(this,function(t){switch(t.label){case 0:return e=p.logger,[4,ne(p.sources,"source",e)];case 1:return t.sent(),[4,ne(p.destinations,"destination",e)];case 2:return t.sent(),[4,ne(p.transformers,"transformer",e)];case 3:return t.sent(),[4,ne(p.stores,"store",e)];case 4:return t.sent(),[2]}})})())];case 20:return g.sent(),[3,22];case 21:a(r)&&(t(e.user,r,{shallow:!1}),u=r,l=!0),g.label=22;case 22:return l?[4,V(e,n,void 0,u)]:[3,25];case 23:return g.sent(),[4,$(e)];case 24:c=g.sent(),g.label=25;case 25:return[2,c||Y({ok:!0})]}var p})})()},oe=function(e,t){if(!t.name)throw new Error("Event name is required");var n=_sliced_to_array(t.name.split(" "),2),r=n[0],o=n[1];if(!r||!o)throw new Error("Event name is invalid");var a=t.timestamp,s=void 0===a?Date.now():a,i=t.name,c=void 0===i?"".concat(r," ").concat(o):i,u=t.data,l=void 0===u?{}:u,f=t.context,d=void 0===f?{}:f,_=t.globals,v=void 0===_?e.globals:_,g=t.custom,p=void 0===g?{}:g,y=t.user,b=void 0===y?e.user:y,h=t.nested,m=void 0===h?[]:h,w=t.consent,j=void 0===w?e.consent:w,k=t.id,O=void 0===k?function(){for(var e="",t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}():k,S=t.trigger,x=void 0===S?"":S,A=t.entity,C=void 0===A?r:A,P=t.action,q=void 0===P?o:P,E=t.timing,D=void 0===E?0:E,L=t.source;return{name:c,data:l,context:d,globals:v,custom:p,user:b,nested:m,consent:j,id:O,trigger:x,entity:C,action:q,timestamp:s,timing:D,source:void 0===L?{type:"collector",schema:"4"}:L}},ae=function(e,n){return _async_to_generator(function(){return _ts_generator(this,function(r){switch(r.label){case 0:return e.allowed=!0,e.timing=Date.now(),n&&(n.consent&&(e.consent=t(e.consent,n.consent)),n.user&&(e.user=t(e.user,n.user)),n.globals&&(e.globals=t(e.config.globalsStatic||{},n.globals)),n.custom&&(e.custom=t(e.custom,n.custom))),Object.values(e.destinations).forEach(function(e){e.queuePush=[]}),e.queue=[],e.round++,[4,$(e)];case 1:return[2,r.sent()]}})})()},se=function(n){return _async_to_generator(function(){var r,o,a,s,i,u,l,f,d;return _ts_generator(this,function(v){switch(v.label){case 0:return a=t({globalsStatic:{},sessionStatic:{},run:!0},n,{merge:!1,extend:!1}),s={level:null===(r=n.logger)||void 0===r?void 0:r.level,handler:null===(o=n.logger)||void 0===o?void 0:o.handler},i=_(s),u=_object_spread({},a.globalsStatic,n.globals),(l={allowed:!1,config:a,consent:n.consent||{},custom:n.custom||{},destinations:{},transformers:{},stores:{},globals:u,hooks:n.hooks||{},logger:i,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{}},timing:Date.now(),user:n.user||{},sources:{},pending:{destinations:{}},push:void 0,command:void 0}).push=function(t,n){return m(function(r){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,p(function(){return _async_to_generator(function(){var a,s,i,u,l,f,d,_,v,g,p,y,b,m,w,j,k,O,S,x,A;return _ts_generator(this,function(C){switch(C.label){case 0:return a=Date.now(),s=o.id,i=o.ingest,u=o.respond,l=o.mapping,f=o.preChain,d=o.include,_=o.exclude,v=u,g=r,p=d||_?function(e,t,n){var r=e;return t&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var n=_sliced_to_array(e,1)[0];return t.includes(n)}))),n&&(r=Object.fromEntries(Object.entries(r).filter(function(e){var t=_sliced_to_array(e,1)[0];return!n.includes(t)}))),r}(t.destinations,d,_):void 0,y=null!=i?i:e(s||"unknown"),l?[4,h(g,l,t)]:[3,2];case 1:if((b=C.sent()).ignore)return[2,Y({ok:!0})];if(l.consent&&!c(l.consent,t.consent,b.event.consent))return[2,Y({ok:!0})];g=b.event,C.label=2;case 2:return(null==f?void 0:f.length)&&t.transformers&&Object.keys(t.transformers).length>0?[4,Ge(t,t.transformers,f,g,y,v,s?"source.".concat(s,".next"):void 0)]:[3,6];case 3:return null===(m=C.sent()).event?[2,Y({ok:!0})]:(m.respond&&(v=m.respond),Array.isArray(m.event)?[4,Promise.all(m.event.map(function(e){return _async_to_generator(function(){var r,o;return _ts_generator(this,function(a){return r=n(e),o=oe(t,r),[2,$(t,o,{id:s,ingest:y,respond:v},p)]})})()}))]:[3,5]);case 4:return j=C.sent(),s&&(t.status.sources[s]||(t.status.sources[s]={count:0,duration:0}),(k=t.status.sources[s]).count+=m.event.length,k.lastAt=Date.now(),k.duration+=Date.now()-a),[2,null!==(w=j[0])&&void 0!==w?w:Y({ok:!0})];case 5:g=m.event,C.label=6;case 6:return O=n(g),S=oe(t,O),[4,$(t,S,{id:s,ingest:y,respond:v},p)];case 7:return x=C.sent(),s&&(t.status.sources[s]||(t.status.sources[s]={count:0,duration:0}),(A=t.status.sources[s]).count++,A.lastAt=Date.now(),A.duration+=Date.now()-a),[2,x]}})})()},function(){return Y({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Push",t.hooks,t.logger)}(l,function(e){return _object_spread({timing:Math.round((Date.now()-l.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.0-next-1778155282668"}},e)}),l.command=function(e,t){return m(function(n,r,o){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,p(function(){return _async_to_generator(function(){return _ts_generator(this,function(a){switch(a.label){case 0:return[4,t(e,n,r,o)];case 1:return[2,a.sent()]}})})()},function(){return Y({ok:!1})})()];case 1:return[2,a.sent()]}})})()},"Command",e.hooks,e.logger)}(l,re),f=n.stores||{},[4,function(e){return _async_to_generator(function(e){var t,n,r,o,a,s,i,c,u,l,f,d,_,v,g,p,y,b,h,w,j,k=arguments;return _ts_generator(this,function(O){switch(O.label){case 0:t=k.length>1&&void 0!==k[1]?k[1]:{},n={},r=!0,o=!1,a=void 0,O.label=1;case 1:O.trys.push([1,6,7,8]),s=Object.entries(t)[Symbol.iterator](),O.label=2;case 2:return(r=(i=s.next()).done)?[3,5]:(c=_sliced_to_array(i.value,2),u=c[0],l=c[1],f=l.code,d=l.config,_=void 0===d?{}:d,v=l.env,g=void 0===v?{}:v,p=e.logger.scope("store").scope(u),[4,f({collector:e,logger:p,id:u,config:_,env:g})]);case 3:y=O.sent(),b=y.get,h=y.set,w=y.delete,y.get=m(b,"StoreGet",e.hooks,e.logger),y.set=m(h,"StoreSet",e.hooks,e.logger),y.delete=m(w,"StoreDelete",e.hooks,e.logger),n[u]=y,O.label=4;case 4:return r=!0,[3,2];case 5:return[3,8];case 6:return j=O.sent(),o=!0,a=j,[3,8];case 7:try{r||null==s.return||s.return()}finally{if(o)throw a}return[7];case 8:return[2,n]}})}).apply(this,arguments)}(l,f)];case 1:return l.stores=v.sent(),function(e,t,n){var r=new Map,o=!0,a=!1,s=void 0;try{for(var i,c=Object.entries(e)[Symbol.iterator]();!(o=(i=c.next()).done);o=!0){var u=_sliced_to_array(i.value,2),l=u[0],f=u[1];t[l]&&r.set(f,t[l])}}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}if(0!==r.size)for(var d=!0,_=!1,v=void 0,g=0,p=[n.transformers,n.destinations,n.sources];g<p.length;g++){var y=p[g];if(y)try{for(var b,h=Object.values(y)[Symbol.iterator]();!(d=(b=h.next()).done);d=!0){m(b.value.env)}}catch(e){_=!0,v=e}finally{try{d||null==h.return||h.return()}finally{if(_)throw v}}}function m(e){if(e){var t=!0,n=!1,o=void 0;try{for(var a,s=Object.entries(e)[Symbol.iterator]();!(t=(a=s.next()).done);t=!0){var i=_sliced_to_array(a.value,2),c=i[0],u=i[1];if("object"==(void 0===u?"undefined":_type_of(u))&&null!==u){var l=r.get(u);l&&(e[c]=l)}}}catch(e){n=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(n)throw o}}}}}(f,l.stores,n),l.stores.__cache||(d=new Map,l.stores.__cache={type:"memory",config:{},get:function(e){var t=d.get(e);if(t){if(!(t.expires&&Date.now()>t.expires))return t.value;d.delete(e)}},set:function(e,t,n){d.set(e,{value:t,expires:n?Date.now()+n:void 0})},delete:function(e){d.delete(e)}}),[4,ee(l,n.destinations||{})];case 2:return l.destinations=v.sent(),[4,function(t){return _async_to_generator(function(t){var n,r,o,a,s,i,c,u,l,f,d,_,v,g,p,y,b,h,m,w,j,k,O,S,x=arguments;return _ts_generator(this,function(A){switch(A.label){case 0:n=x.length>1&&void 0!==x[1]?x[1]:{},r={},o=!0,a=!1,s=void 0,A.label=1;case 1:A.trys.push([1,6,7,8]),i=Object.entries(n)[Symbol.iterator](),A.label=2;case 2:return(o=(c=i.next()).done)?[3,5]:(u=_sliced_to_array(c.value,2),l=u[0],f=u[1],d=f.code,_=f.env,v=void 0===_?{}:_,g=L(f,"before"),p=g.config,y=L(_object_spread_props(_object_spread({},f),{config:p}),"next"),b=y.config,h=Object.keys(v).length>0?_object_spread_props(_object_spread({},b),{env:v}):b,m=f.cache,w=m?_object_spread_props(_object_spread({},h),{cache:m}):h,j=t.logger.scope("transformer").scope(l),k={collector:t,logger:j,id:l,ingest:e(l),config:w,env:v},[4,d(k)]);case 3:O=A.sent(),r[l]=O,A.label=4;case 4:return o=!0,[3,2];case 5:return[3,8];case 6:return S=A.sent(),a=!0,s=S,[3,8];case 7:try{o||null==i.return||i.return()}finally{if(a)throw s}return[7];case 8:return[2,r]}})}).apply(this,arguments)}(l,n.transformers||{})];case 3:return[2,(l.transformers=v.sent(),l)]}})})()},ie=function(e){return _async_to_generator(function(){var t,n,r,o,a,s,i,c,u,l;return _ts_generator(this,function(f){switch(f.label){case 0:return[4,se(e=e||{})];case 1:return t=f.sent(),r=t,n={type:"elb",config:{},push:function(e,t,n,o,a,s){return _async_to_generator(function(){var i,c;return _ts_generator(this,function(u){if("string"==typeof e&&e.startsWith("walker "))return i=e.replace("walker ",""),[2,r.command(i,t,n)];if("string"==typeof e)c={name:e},t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(c.data=t);else{if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))return[2,Y({ok:!1})];c=e,t&&"object"==(void 0===t?"undefined":_type_of(t))&&!Array.isArray(t)&&(c.data=_object_spread({},c.data||{},t))}return[2,(o&&"object"==(void 0===o?"undefined":_type_of(o))&&(c.context=o),a&&Array.isArray(a)&&(c.nested=a),s&&"object"==(void 0===s?"undefined":_type_of(s))&&(c.custom=s),r.push(c))]})})()}},t.sources.elb=n,[4,H(t,e.sources||{})];case 2:return f.sent(),o=e.consent,a=e.user,s=e.globals,i=e.custom,o?[4,t.command("consent",o)]:[3,4];case 3:f.sent(),f.label=4;case 4:return a?[4,t.command("user",a)]:[3,6];case 5:f.sent(),f.label=6;case 6:return s&&Object.assign(t.globals,s),i&&Object.assign(t.custom,i),t.config.run?[4,t.command("run")]:[3,8];case 7:f.sent(),f.label=8;case 8:return c=n.push,u=Object.values(t.sources).filter(function(e){return"elb"!==e.type}),[2,((l=u.find(function(e){return e.config.primary}))?c=l.push:u.length>0&&(c=u[0].push),{collector:t,elb:c})]}})})()},ce=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,le=Object.getOwnPropertyNames,fe=Object.prototype.hasOwnProperty,de=function(e,t){for(var n in t)ce(e,n,{get:t[n],enumerable:!0})},_e={};de(_e,{SourceDataLayer:function(){return Pe},createTrigger:function(){return We},default:function(){return ze},env:function(){return qe},sourceDataLayer:function(){return Ve},step:function(){return Re},trigger:function(){return Fe}});var ve=Object.defineProperty;!function(e,t){for(var n in t)ve(e,n,{get:t[n],enumerable:!0})}({},{Level:function(){return pe}});var ge,pe=((ge=pe||{})[ge.ERROR=0]="ERROR",ge[ge.WARN=1]="WARN",ge[ge.INFO=2]="INFO",ge[ge.DEBUG=3]="DEBUG",ge),ye={merge:!0,shallow:!0,extend:!0};function be(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)return e;if(t.has(e))return t.get(e);var n=Object.prototype.toString.call(e);if("[object Object]"===n){var r={};for(var o in t.set(e,r),e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=be(e[o],t));return r}if("[object Array]"===n){var a=[];return t.set(e,a),e.forEach(function(e){a.push(be(e,t))}),a}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){var s=e;return new RegExp(s.source,s.flags)}return e}function he(e){for(var t=arguments.length>2?arguments[2]:void 0,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),a=e,s=0;s<o.length;s++){var i=o[s];if("*"===i&&n(a)){var c=o.slice(s+1).join("."),u=[],l=!0,f=!1,d=void 0;try{for(var _,v=a[Symbol.iterator]();!(l=(_=v.next()).done);l=!0){var g=he(_.value,c,t);u.push(g)}}catch(e){f=!0,d=e}finally{try{l||null==v.return||v.return()}finally{if(f)throw d}}return u}if(void 0===(a=_instanceof(a,Object)?a[i]:void 0))break}return r(a)?a:t}var me={data:function(e){return e.data},globals:function(e){return e.globals},context:function(e){return e.context},user:function(e){return e.user},source:function(e){return e.source},event:function(e){return{entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing}}},we=function(e,t,n,r){var o="".concat(pe[e]).concat(r.length>0?" [".concat(r.join(":"),"]"):""),a=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;a?s(o,t,n):s(o,t)};function je(e){var t=e.level,n=e.handler,r=e.jsonHandler,o=e.scope,a=function(e,r,a){if(e<=t){var s=d(r,a);n?n(e,s.message,s.context,o,we):we(e,s.message,s.context,o)}};return{error:function(e,t){return a(0,e,t)},warn:function(e,t){return a(1,e,t)},info:function(e,t){return a(2,e,t)},debug:function(e,t){return a(3,e,t)},throw:function(e,t){var r=d(e,t);throw n?n(0,r.message,r.context,o,we):we(0,r.message,r.context,o),new Error(r.message)},json:function(e){r?r(e):console.log(JSON.stringify(e,null,2))},scope:function(e){return je({level:t,handler:n,jsonHandler:r,scope:_to_consumable_array(o).concat([e])})}}}function ke(e){return function(e){return"boolean"==typeof e}(e)||s(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!r(e)||n(e)&&e.every(ke)||a(e)&&Object.values(e).every(ke)}function Oe(e,t,o){return _async_to_generator(function(){return _ts_generator(this,function(a){return[2,(n(t)?t:[t]).reduce(function(t,a){return _async_to_generator(function(){var i,u,l,f,d,_,g,y,h,m,w,j,k,O,S,x,A,C,P,q,E,D;return _ts_generator(this,function(L){switch(L.label){case 0:return[4,t];case 1:return(i=L.sent())?[2,i]:(u=s(a)?{key:a}:a,Object.keys(u).length?(l=u.condition,f=u.consent,d=u.fn,_=u.key,g=u.loop,y=u.map,h=u.set,m=u.validate,w=u.value,j=_object_spread_props(_object_spread({},o),{mapping:a}),(k=l)?[4,p(l)(e,j)]:[3,3]):[2]);case 2:k=!L.sent(),L.label=3;case 3:return k?[2]:f&&!c(f,j.consent)?[2,w]:(O=r(w)?w:e,d?[4,p(d)(e,j)]:[3,5]);case 4:O=L.sent(),L.label=5;case 5:return _&&(O=he(e,_,w)),g?(S=_sliced_to_array(g,2),x=S[0],A=S[1],"this"!==x?[3,6]:(P=[e],[3,8])):[3,11];case 6:return[4,b(e,x,j)];case 7:P=L.sent(),L.label=8;case 8:return n(C=P)?[4,Promise.all(C.map(function(e){return b(e,A,j)}))]:[3,10];case 9:O=L.sent().filter(r),L.label=10;case 10:return[3,17];case 11:return y?[4,Object.entries(y).reduce(function(t,n){var o=_sliced_to_array(n,2),a=o[0],s=o[1];return _async_to_generator(function(){var n,o;return _ts_generator(this,function(i){switch(i.label){case 0:return[4,t];case 1:return n=i.sent(),[4,b(e,s,j)];case 2:return o=i.sent(),[2,(r(o)&&(n[a]=o),n)]}})})()},Promise.resolve({}))]:[3,13];case 12:return O=L.sent(),[3,16];case 13:return(q=h)?[4,Promise.all(h.map(function(t){return Oe(e,t,j)}))]:[3,15];case 14:q=O=L.sent(),L.label=15;case 15:L.label=16;case 16:L.label=17;case 17:return(E=m)?[4,p(m)(O,j)]:[3,19];case 18:E=!L.sent(),L.label=19;case 19:return E&&(O=void 0),D=v(O),[2,r(D)?D:v(w)]}})})()},Promise.resolve(void 0))]})})()}function Se(e){if("*"===e)return function(){return!0};if("and"in e){var t=e.and.map(Se);return function(e){return t.every(function(t){return t(e)})}}if("or"in e){var n=e.or.map(Se);return function(e){return n.some(function(t){return t(e)})}}return function(e){var t=e.key,n=e.operator,r=e.value,o=e.not,a=function(e,t){switch(e){case"eq":return function(e){return String(null!=e?e:"")===t};case"contains":return function(e){return String(null!=e?e:"").includes(t)};case"prefix":return function(e){return String(null!=e?e:"").startsWith(t)};case"suffix":return function(e){return String(null!=e?e:"").endsWith(t)};case"regex":var n=new RegExp(t);return function(e){return n.test(String(null!=e?e:""))};case"gt":var r=Number(t);return function(e){return Number(e)>r};case"lt":var o=Number(t);return function(e){return Number(e)<o};case"exists":return function(e){return null!=e}}}(n,r);return function(e){var n=he(e,t),r=a(n);return o?!r:r}}(e)}function xe(e){if(null!=e){if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;return w(e)?{type:"routes",routes:e.map(function(e){return{match:Se(e.match),next:xe(e.next)}})}:{type:"chain",value:e}}}}function Ae(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;var n=!0,r=!1,o=void 0;try{for(var a,s=e.routes[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var i=a.value;if(i.match(t))return Ae(i.next,t)}}catch(e){r=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(r)throw o}}}}var Ce=!1,Pe={},qe={};de(qe,{push:function(){return Ie}});var Ee=function(){},De=function(){return function(){return Promise.resolve({ok:!0})}},Le={error:Ee,warn:Ee,info:Ee,debug:Ee,throw:function(e){throw"string"==typeof e?new Error(e):e},json:Ee,scope:function(){return Le}},Ie={get push(){return De()},get command(){return De()},get elb(){return De()},get window(){return{dataLayer:[],addEventListener:Ee,removeEventListener:Ee}},logger:Le},Re={};de(Re,{consentUpdate:function(){return Me},directEvent:function(){return Ne},gtagAddToCart:function(){return Ue},gtagPurchase:function(){return Te},gtagViewItem:function(){return Ke}});var Te={title:"gtag purchase",description:"A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.",trigger:{type:"gtag"},in:["event","purchase",{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}],out:[["elb",{name:"dataLayer purchase",data:{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}}]]},Me={title:"Consent update",description:"A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.",trigger:{type:"gtag"},in:["consent","update",{ad_storage:"granted",analytics_storage:"granted"}],out:[["elb",{name:"dataLayer consent update",data:{ad_storage:"granted",analytics_storage:"granted"}}]]},Ue={title:"gtag add_to_cart",description:"A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.",trigger:{type:"gtag"},in:["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}],out:[["elb",{name:"dataLayer add_to_cart",data:{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}}]]},Ke={title:"gtag view_item",description:"A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.",trigger:{type:"gtag"},in:["event","view_item",{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}],out:[["elb",{name:"dataLayer view_item",data:{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}}]]},Ne={title:"Direct dataLayer event",description:"A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.",trigger:{type:"direct"},in:{event:"custom_event",category:"engagement",label:"video_play"},out:[["elb",{name:"dataLayer custom_event",data:{category:"engagement",label:"video_play"}}]]},He={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function Ge(t,n,r,o,a,s,i){return _async_to_generator(function(){var c,u,l,f,d,_,v,g,y,b;return _ts_generator(this,function(h){switch(h.label){case 0:i&&(null==a?void 0:a._meta)&&(a._meta.chainPath=i),c=o,u=s,l=!0,f=!1,d=void 0,h.label=1;case 1:h.trys.push([1,6,7,8]),_=function(){var o,s,l,f,d,_,v,y,b,h,m,x,A,C,P,q,L,M,U,K,N,H,G,B,W,F,V,z,J,$,Q,X,Y,Z,ee,te,ne,re,oe,ae,se;return _ts_generator(this,function(ie){switch(ie.label){case 0:return o=g.value,(v=n[o])?a&&a._meta&&a._meta.path.length>256?[2,{v:(t.logger.error("Max path length exceeded at ".concat(o)),{event:null,respond:u})}]:(a&&a._meta&&(a._meta.hops++,a._meta.path.push(o)),[4,p(R)(t,v,o)]):(t.logger.warn("Transformer not found: ".concat(o)),[2,"continue"]);case 1:if(!ie.sent())return[2,{v:(t.logger.error("Transformer init failed: ".concat(o)),{event:null,respond:u})}];if(i&&void 0!==(null===(l=v.config)||void 0===l||null===(s=l.chainMocks)||void 0===s?void 0:s[i]))return y=v.config.chainMocks[i],t.logger.scope("transformer:".concat(v.type||"unknown")).debug("chainMock",{chain:i}),c=y,[2,"continue"];if(void 0!==(null===(f=v.config)||void 0===f?void 0:f.mock))return t.logger.scope("transformer:".concat(v.type||"unknown")).debug("mock"),c=v.config.mock,[2,"continue"];if(null===(d=v.config)||void 0===d?void 0:d.disabled)return[2,"continue"];if(b=null===(_=v.config)||void 0===_?void 0:_.cache,h=b?k(b):void 0,m=h?E(h,t):void 0,x=void 0,h&&m){if(A=j(a,c),"HIT"===(null==(C=O(h,m,A,"t:".concat(o)))?void 0:C.status)&&C.value)return c=C.value,h.full?[2,{v:{event:c,respond:u}}]:[2,"continue"];"MISS"===(null==C?void 0:C.status)&&(x={key:C.key,ttl:C.rule.ttl})}return(P=v.config.before)&&(q=I("string"==typeof P||Array.isArray(P)&&!w(P)?P:Ae(xe(P),j(a,c))||void 0,D(n))).length>0?[4,Ge(t,n,q,c,a,u,i)]:[3,3];case 2:if(null===(M=ie.sent()).event)return[2,{v:{event:null,respond:null!==(L=M.respond)&&void 0!==L?L:u}}];M.respond&&(u=M.respond),c=Array.isArray(M.event)?M.event[0]:M.event,ie.label=3;case 3:return[4,p(T,function(e){return t.logger.scope("transformer:".concat(v.type||"unknown")).error("Push failed",{error:e}),!1})(t,v,o,c,a,u)];case 4:return!1===(U=ie.sent())?[2,{v:{event:null,respond:u}}]:Array.isArray(U)?(K=r.slice(r.indexOf(o)+1),[4,Promise.all(U.map(function(r){return _async_to_generator(function(){var o,s,l,f,d;return _ts_generator(this,function(_){return o=r.event||c,s=a?_object_spread_props(_object_spread({},a),{_meta:_object_spread_props(_object_spread({},a._meta),{path:_to_consumable_array(a._meta.path)})}):e("unknown"),r.next?(l=r.next,w(r.next)&&(f=xe(r.next),l=Ae(f,j(s,o))),l&&(d=I(l,D(n))).length>0?[2,Ge(t,n,d,o,s,u,i)]:[2,{event:o,respond:u}]):[2,K.length>0?Ge(t,n,K,o,s,u,i):{event:o,respond:u}]})})()}))]):[3,6];case 5:N=ie.sent(),H=u,G=[],B=!0,W=!1,F=void 0;try{for(V=N.flat()[Symbol.iterator]();!(B=(z=V.next()).done);B=!0)if(null!==(J=z.value))if(J&&"object"==(void 0===J?"undefined":_type_of(J))&&"event"in J){if((Q=J).respond&&(H=Q.respond),null===Q.event)continue;Array.isArray(Q.event)?($=G).push.apply($,_to_consumable_array(Q.event)):G.push(Q.event)}else G.push(J)}catch(e){W=!0,F=e}finally{try{B||null==V.return||V.return()}finally{if(W)throw F}}return[2,{v:0===G.length?{event:null,respond:H}:1===G.length?{event:G[0],respond:H}:{event:G,respond:H}}];case 6:if(U&&"object"==(void 0===U?"undefined":_type_of(U))){if(X=U.event,Y=U.respond,Z=U.next,Y&&(u=Y),Z)return ee=Z,!w(Z)||(te=xe(Z),ee=Ae(te,j(a,c)))?[2,{v:(ne=I(ee,D(n))).length>0?Ge(t,n,ne,X||c,a,u,i):(t.logger.warn("Branch target not found: ".concat(JSON.stringify(Z))),{event:null,respond:u})}]:(X&&(c=X),[2,"continue"]);X&&(c=X)}return x&&m&&S(m,x.key,c,x.ttl),(!U||"object"==(void 0===U?"undefined":_type_of(U))&&!U.next)&&v.config.next&&w(v.config.next)?(re=v.config.next,oe=xe(re),(ae=Ae(oe,j(a,c)))&&(se=I(ae,D(n))).length>0?[2,{v:Ge(t,n,se,c,a,u,i)}]:[2,{v:{event:c,respond:u}}]):[2]}})},v=r[Symbol.iterator](),h.label=2;case 2:return(l=(g=v.next()).done)?[3,5]:[5,_ts_values(_())];case 3:if("object"===_type_of(y=h.sent()))return[2,y.v];h.label=4;case 4:return l=!0,[3,2];case 5:return[3,8];case 6:return b=h.sent(),f=!0,d=b,[3,8];case 7:try{l||null==v.return||v.return()}finally{if(f)throw d}return[7];case 8:return[2,{event:c,respond:u}]}})})()}var Be,We=function(e){return _async_to_generator(function(){var t,n;return _ts_generator(this,function(r){return n=function(){return function(n){return _async_to_generator(function(){var r,o,a,s,i,c,u,l,f,d,_,v,g;return _ts_generator(this,function(p){switch(p.label){case 0:if(t)return[3,2];if((o=_object_spread({},e)).sources){o.sources=_object_spread({},o.sources),a=!0,s=!1,i=void 0;try{for(c=Object.entries(o.sources)[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)l=_sliced_to_array(u.value,2),f=l[0],d=l[1],(null===(_=d.env)||void 0===_?void 0:_.window)||(o.sources[f]=_object_spread_props(_object_spread({},d),{env:_object_spread_props(_object_spread({},d.env),{window:window})}))}catch(e){s=!0,i=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw i}}}return[4,ie(_object_spread_props(_object_spread({},o),{run:null===(r=o.run)||void 0===r||r}))];case 1:v=p.sent(),t={collector:v.collector,elb:v.elb},p.label=2;case 2:return(g=window).dataLayer||(g.dataLayer=[]),g.dataLayer.push(n),[2]}})})()}},[2,{get flow(){return t},trigger:n}]})})()},Fe=function(e,t){var n=t.window;n.dataLayer||(n.dataLayer=[]),n.dataLayer.push(e)},Ve=function(e){return _async_to_generator(function(){var t,n,r,o,a,s,i,c,u;return _ts_generator(this,function(l){return t=e.config,n=e.env,r=n.elb,o=n.window,a=_object_spread({name:"dataLayer",prefix:"dataLayer"},null==t?void 0:t.settings),i=0,c=function(){if(o){var e=a.name||"dataLayer",t=o[e];i=Array.isArray(t)?t.length:0,function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:globalThis.window,r=t.settings,o=(null==r?void 0:r.name)||"dataLayer";n[o]||(n[o]=[]);var a=n[o];if(Array.isArray(a)){var s=a.push.bind(a);a.push=function(){for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];if(Ce)return s.apply(void 0,_to_consumable_array(n));Ce=!0;try{var a=!0,i=!1,c=void 0;try{for(var u,l=n[Symbol.iterator]();!(a=(u=l.next()).done);a=!0){var f=u.value;A(e,r,f)}}catch(e){i=!0,c=e}finally{try{a||null==l.return||l.return()}finally{if(i)throw c}}}finally{Ce=!1}return s.apply(void 0,_to_consumable_array(n))}}}(r,s,o)}},u=function(e){return _async_to_generator(function(){return _ts_generator(this,function(t){return"run"===e&&o&&i>0&&(function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:globalThis.window,o=t.settings,a=r[(null==o?void 0:o.name)||"dataLayer"];if(Array.isArray(a)&&!Ce){Ce=!0;try{for(var s=null!=n?n:a.length,i=0;i<s;i++)A(e,o,a[i])}finally{Ce=!1}}}(r,s,i,o),i=0),[2]})})()},[2,{type:"dataLayer",config:s={settings:a},push:r,on:u,init:c,destroy:function(){return _async_to_generator(function(){var e;return _ts_generator(this,function(t){return e=a.name||"dataLayer",o&&o[e]&&Array.isArray(o[e]),[2]})})()}}]})})()},ze=Ve;return Be=_e,function(e,t,n,r){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var o=!0,a=!1,s=void 0;try{for(var i,c=function(){var o=i.value;fe.call(e,o)||o===n||ce(e,o,{get:function(){return t[o]},enumerable:!(r=ue(t,o))||r.enumerable})},u=le(t)[Symbol.iterator]();!(o=(i=u.next()).done);o=!0)c()}catch(e){a=!0,s=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw s}}}return e}(ce({},"__esModule",{value:!0}),Be)}();
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.defineProperty,a=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,i=(e,a)=>{for(var r in a)t(e,r,{get:a[r],enumerable:!0})},o={};i(o,{SourceDataLayer:()=>
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,a=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,i=(e,a)=>{for(var r in a)t(e,r,{get:a[r],enumerable:!0})},o={};i(o,{SourceDataLayer:()=>d,createTrigger:()=>A,default:()=>O,env:()=>g,sourceDataLayer:()=>k,step:()=>v,trigger:()=>j}),module.exports=(e=o,((e,i,o,s)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of r(i))n.call(e,c)||c===o||t(e,c,{get:()=>i[c],enumerable:!(s=a(i,c))||s.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s=require("@walkeros/core"),c=!1;function u(e,t={},a){if(t.filter){if(!0===(0,s.tryCatch)(()=>t.filter(a),()=>!1)())return}const r=function(e){if((0,s.isObject)(e)&&(0,s.isString)(e.event)){const{event:t,...a}=e;return{name:t,...a}}if((0,s.isArray)(e)&&e.length>=2)return l(e);if(t=e,null!=t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0){return l(Array.from(e))}var t;return null}(a);if(!r)return;const n=`${t.prefix||"dataLayer"} ${r.name}`,{name:i,...o}=r,c={name:n,data:o};(0,s.tryCatch)(()=>e(c),()=>{})()}function l(e){const[t,a,r]=e;if(!(0,s.isString)(t))return null;let n,i={};switch(t){case"consent":if(!(0,s.isString)(a)||e.length<3)return null;if("default"!==a&&"update"!==a)return null;if(!(0,s.isObject)(r)||null===r)return null;n=`${t} ${a}`,i={...r};break;case"event":if(!(0,s.isString)(a))return null;n=a,(0,s.isObject)(r)&&(i={...r});break;case"config":if(!(0,s.isString)(a))return null;n=`${t} ${a}`,(0,s.isObject)(r)&&(i={...r});break;case"set":if((0,s.isString)(a))n=`${t} ${a}`,(0,s.isObject)(r)&&(i={...r});else{if(!(0,s.isObject)(a))return null;n=`${t} custom`,i={...a}}break;default:return null}return{name:n,...i}}var d={},g={};i(g,{push:()=>f});var y=()=>{},m=()=>()=>Promise.resolve({ok:!0}),p={error:y,warn:y,info:y,debug:y,throw:e=>{throw"string"==typeof e?new Error(e):e},json:y,scope:()=>p},f={get push(){return m()},get command(){return m()},get elb(){return m()},get window(){return{dataLayer:[],addEventListener:y,removeEventListener:y}},logger:p},v={};i(v,{consentUpdate:()=>w,directEvent:()=>L,gtagAddToCart:()=>h,gtagPurchase:()=>_,gtagViewItem:()=>b});var _={title:"gtag purchase",description:"A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.",trigger:{type:"gtag"},in:["event","purchase",{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}],out:[["elb",{name:"dataLayer purchase",data:{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}}]]},w={title:"Consent update",description:"A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.",trigger:{type:"gtag"},in:["consent","update",{ad_storage:"granted",analytics_storage:"granted"}],out:[["elb",{name:"dataLayer consent update",data:{ad_storage:"granted",analytics_storage:"granted"}}]]},h={title:"gtag add_to_cart",description:"A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.",trigger:{type:"gtag"},in:["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}],out:[["elb",{name:"dataLayer add_to_cart",data:{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}}]]},b={title:"gtag view_item",description:"A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.",trigger:{type:"gtag"},in:["event","view_item",{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}],out:[["elb",{name:"dataLayer view_item",data:{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}}]]},L={title:"Direct dataLayer event",description:"A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.",trigger:{type:"direct"},in:{event:"custom_event",category:"engagement",label:"video_play"},out:[["elb",{name:"dataLayer custom_event",data:{category:"engagement",label:"video_play"}}]]},S=require("@walkeros/collector"),A=async e=>{let t;return{get flow(){return t},trigger:()=>async a=>{var r,n;if(!t){const a={...e};if(a.sources){a.sources={...a.sources};for(const[e,t]of Object.entries(a.sources))(null==(r=t.env)?void 0:r.window)||(a.sources[e]={...t,env:{...t.env,window:window}})}const i=await(0,S.startFlow)({...a,run:null==(n=a.run)||n});t={collector:i.collector,elb:i.elb}}const i=window;i.dataLayer||(i.dataLayer=[]),i.dataLayer.push(a)}}},j=(e,t)=>{const a=t.window;a.dataLayer||(a.dataLayer=[]),a.dataLayer.push(e)},k=async e=>{const{config:t,env:a}=e,{elb:r,window:n}=a,i={name:"dataLayer",prefix:"dataLayer",...null==t?void 0:t.settings},o={settings:i};let s=0;return{type:"dataLayer",config:o,push:r,on:async e=>{if("run"===e&&n&&s>0){!function(e,t,a,r=globalThis.window){const n=t.settings,i=r[(null==n?void 0:n.name)||"dataLayer"];if(Array.isArray(i)&&!c){c=!0;try{const t=null!=a?a:i.length;for(let a=0;a<t;a++)u(e,n,i[a])}finally{c=!1}}}(r,o,s,n),s=0}},init:()=>{if(!n)return;const e=i.name||"dataLayer",t=n[e];s=Array.isArray(t)?t.length:0;!function(e,t,a=globalThis.window){const r=t.settings,n=(null==r?void 0:r.name)||"dataLayer";a[n]||(a[n]=[]);const i=a[n];if(!Array.isArray(i))return;const o=i.push.bind(i);i.push=function(...t){if(c)return o(...t);c=!0;try{for(const a of t)u(e,r,a)}finally{c=!1}return o(...t)}}(r,o,n)},destroy:async()=>{const e=i.name||"dataLayer";n&&n[e]&&Array.isArray(n[e])}}},O=k;//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/interceptor.ts","../src/types/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import type { Source, On } from '@walkeros/core';\nimport type { Types } from './types';\nimport { interceptDataLayer, processExistingEvents } from './interceptor';\n\n// Export types for external usage\nexport * as SourceDataLayer from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * DataLayer source implementation using environment injection.\n *\n * This source intercepts dataLayer.push calls and transforms them to WalkerOS events.\n * It works by replacing the dataLayer.push method with a custom handler.\n */\nexport const sourceDataLayer: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb, window: envWindow } = env;\n\n const settings: Source.Settings<Types> = {\n name: 'dataLayer',\n prefix: 'dataLayer',\n ...config?.settings,\n };\n\n const fullConfig: Source.Config<Types> = {\n settings,\n };\n\n let pendingReplayCount = 0;\n\n if (envWindow) {\n // Snapshot how many items exist before interception\n const dataLayerName = settings.name || 'dataLayer';\n const dl = (envWindow as Record<string, unknown>)[dataLayerName];\n pendingReplayCount = Array.isArray(dl) ? dl.length : 0;\n\n const win = envWindow as unknown as Record<string, unknown>;\n\n // Set up interceptor immediately so no new events are missed\n interceptDataLayer(elb, fullConfig, win);\n\n if (context.collector.allowed && pendingReplayCount > 0) {\n // Collector already ran — process existing events immediately\n processExistingEvents(elb, fullConfig, pendingReplayCount, win);\n pendingReplayCount = 0;\n }\n }\n\n // Handle on-run to replay existing events (when source inits before run)\n const handleEvent = async (event: On.Types) => {\n if (event === 'run' && envWindow && pendingReplayCount > 0) {\n const win = envWindow as unknown as Record<string, unknown>;\n processExistingEvents(elb, fullConfig, pendingReplayCount, win);\n pendingReplayCount = 0;\n }\n };\n\n return {\n type: 'dataLayer',\n config: fullConfig,\n push: elb,\n on: handleEvent,\n destroy: async () => {\n // Cleanup: restore original dataLayer.push if possible\n const dataLayerName = settings.name || 'dataLayer';\n if (\n envWindow &&\n envWindow[dataLayerName] &&\n Array.isArray(envWindow[dataLayerName])\n ) {\n // Note: Complete restoration would require storing original push method\n // For now, we'll just document this limitation\n }\n },\n };\n};\n\nexport default sourceDataLayer;\n","import type { WalkerOS, Source, Collector } from '@walkeros/core';\nimport { isArray, isObject, isString, tryCatch } from '@walkeros/core';\n\n// Global flag to prevent infinite loops\nlet isProcessing = false;\n\n/**\n * DataLayer interceptor - handles dataLayer.push interception and event transformation\n */\nexport function interceptDataLayer(\n push: Collector.PushFn,\n config: Source.Config,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n\n // Ensure dataLayer exists\n if (!win[dataLayerName]) {\n win[dataLayerName] = [];\n }\n\n const dataLayer = win[dataLayerName] as unknown[];\n if (!Array.isArray(dataLayer)) return;\n\n // Store original push\n const originalPush = dataLayer.push.bind(dataLayer);\n\n // Override push with event processing\n dataLayer.push = function (...args: unknown[]): number {\n // Prevent infinite loops\n if (isProcessing) {\n return originalPush(...args);\n }\n\n isProcessing = true;\n try {\n // Process each argument\n for (const arg of args) {\n processEvent(push, settings, arg);\n }\n } finally {\n isProcessing = false;\n }\n\n // Call original push\n return originalPush(...args);\n };\n}\n\n/**\n * Process existing events on initialization\n */\nexport function processExistingEvents(\n push: Collector.PushFn,\n config: Source.Config,\n limit?: number,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n const dataLayer = win[dataLayerName] as unknown[];\n\n if (!Array.isArray(dataLayer)) return;\n\n // Prevent loops during initialization\n if (isProcessing) return;\n\n isProcessing = true;\n try {\n const count = limit ?? dataLayer.length;\n for (let i = 0; i < count; i++) {\n processEvent(push, settings, dataLayer[i]);\n }\n } finally {\n isProcessing = false;\n }\n}\n\n/**\n * Process a single event - handles filtering, transformation, and WalkerOS event creation\n */\nfunction processEvent(\n push: Collector.PushFn,\n settings: { prefix?: string; filter?: (event: unknown) => boolean } = {},\n rawEvent: unknown,\n): void {\n // Apply filter if provided\n if (settings.filter) {\n const filterFn = tryCatch(\n () => settings.filter!(rawEvent),\n () => false, // If filter throws, don't skip the event\n );\n const filterResult = filterFn();\n if (filterResult === true) {\n return; // Skip filtered events\n }\n }\n\n // Transform the event (handles gtag format and direct objects)\n const transformedEvent = transformDataLayerEvent(rawEvent);\n if (!transformedEvent) {\n return; // Skip invalid events\n }\n\n const prefix = settings.prefix || 'dataLayer';\n const eventName = `${prefix} ${transformedEvent.name}`;\n\n // Create partial WalkerOS event structure (collector will enrich it)\n const { name: _name, ...data } = transformedEvent;\n const partialEvent: WalkerOS.DeepPartialEvent = {\n name: eventName,\n data: data as WalkerOS.Properties,\n };\n\n // Push to collector\n tryCatch(\n () => push(partialEvent),\n () => {}, // Silently handle push errors\n )();\n}\n\n/**\n * Transform dataLayer events to standardized format\n * Handles: gtag arguments, direct objects, existing events\n */\nfunction transformDataLayerEvent(\n rawEvent: unknown,\n): { name: string; [key: string]: unknown } | null {\n // Handle direct object format: { event: 'test', data: 'value' }\n if (isObject(rawEvent) && isString(rawEvent.event)) {\n const { event, ...rest } = rawEvent;\n return { name: event, ...rest };\n }\n\n // Handle gtag argument format: ['consent', 'update', { ad_storage: 'granted' }]\n if (isArray(rawEvent) && rawEvent.length >= 2) {\n return transformGtagArgs(rawEvent);\n }\n\n // Handle arguments object (from gtag function calls)\n if (isGtagArguments(rawEvent)) {\n const argsArray = Array.from(rawEvent as ArrayLike<unknown>);\n return transformGtagArgs(argsArray);\n }\n\n return null;\n}\n\n/**\n * Transform gtag-style arguments to event object\n * ['consent', 'update', { ad_storage: 'granted' }] → { event: 'consent update', ad_storage: 'granted' }\n */\nfunction transformGtagArgs(\n args: unknown[],\n): { name: string; [key: string]: unknown } | null {\n const [command, action, params] = args;\n\n if (!isString(command)) return null;\n\n let eventName: string;\n let eventData: Record<string, unknown> = {};\n\n switch (command) {\n case 'consent':\n // Consent requires action and params\n if (!isString(action) || args.length < 3) return null;\n // Only allow 'default' and 'update' actions for consent\n if (action !== 'default' && action !== 'update') return null;\n // Params must be a valid object (not null)\n if (!isObject(params) || params === null) return null;\n\n eventName = `${command} ${action}`;\n eventData = { ...params };\n break;\n\n case 'event':\n // Event requires at least action parameter\n if (!isString(action)) return null;\n eventName = action;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'config':\n // Config requires at least action parameter\n if (!isString(action)) return null;\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'set':\n if (isString(action)) {\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n } else if (isObject(action)) {\n eventName = `${command} custom`;\n eventData = { ...action };\n } else {\n return null;\n }\n break;\n\n default:\n // Unknown command, ignore\n return null;\n }\n\n return {\n name: eventName,\n ...eventData,\n };\n}\n\n/**\n * Check if object is gtag arguments object\n */\nfunction isGtagArguments(obj: unknown): boolean {\n return (\n obj != null &&\n typeof obj === 'object' &&\n 'length' in obj &&\n typeof (obj as ArrayLike<unknown>).length === 'number' &&\n (obj as ArrayLike<unknown>).length > 0\n );\n}\n","import type { WalkerOS, Source, Elb } from '@walkeros/core';\nimport type { SettingsSchema, Mapping } from '../schemas';\nimport type { z } from '@walkeros/core/dev';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n dataLayer: { type: 'dataLayer'; platform?: 'web' };\n }\n}\n\ndeclare global {\n interface Window {\n dataLayer?: DataLayer;\n [key: string]: DataLayer | unknown;\n }\n}\n\nexport type DataLayer = Array<unknown>;\n\n// Base settings from Zod schema\ntype BaseSettings = z.infer<typeof SettingsSchema>;\n\n// Override filter to be actual function type (not serializable in schema)\nexport interface Settings extends Omit<BaseSettings, 'filter'> {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => WalkerOS.PromiseOrValue<boolean>;\n}\n\n// InitSettings: user input (all optional)\nexport type InitSettings = Partial<Settings>;\n\nexport type { Mapping };\n\nexport type Push = Elb.Fn;\n\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\nexport type Config = Source.Config<Types>;\n\nexport type DataLayerEvent = {\n event: string;\n [key: string]: unknown;\n};\n\nexport type MappedEvent = {\n event?: WalkerOS.DeepPartialEvent & { id: string };\n command?: {\n name: string;\n data: unknown;\n };\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for dataLayer source\n *\n * These environments provide standardized mock structures for testing\n * dataLayer interception without requiring a real window object.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n// Create a properly typed elb/push/command function that returns a promise with PushResult\nconst createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n// Simple no-op logger for demo purposes\nconst noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for dataLayer source\n */\ninterface DataLayerEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Mock window object with dataLayer array\n */\nconst createMockWindow = () => ({\n dataLayer: [] as unknown[],\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing dataLayer source\n *\n * Use this for testing dataLayer.push interception and event transformation\n * without requiring a real browser environment.\n */\nexport const push: DataLayerEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const gtagPurchase: Flow.StepExample = {\n title: 'gtag purchase',\n description:\n 'A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'purchase',\n {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer purchase',\n data: {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n },\n ],\n ],\n};\n\nexport const consentUpdate: Flow.StepExample = {\n title: 'Consent update',\n description:\n 'A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.',\n trigger: { type: 'gtag' },\n in: [\n 'consent',\n 'update',\n {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer consent update',\n data: {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n },\n ],\n ],\n};\n\nexport const gtagAddToCart: Flow.StepExample = {\n title: 'gtag add_to_cart',\n description:\n 'A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'add_to_cart',\n {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer add_to_cart',\n data: {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const gtagViewItem: Flow.StepExample = {\n title: 'gtag view_item',\n description:\n 'A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'view_item',\n {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer view_item',\n data: {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const directEvent: Flow.StepExample = {\n title: 'Direct dataLayer event',\n description:\n 'A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.',\n trigger: { type: 'direct' },\n in: {\n event: 'custom_event',\n category: 'engagement',\n label: 'video_play',\n },\n out: [\n [\n 'elb',\n {\n name: 'dataLayer custom_event',\n data: {\n category: 'engagement',\n label: 'video_play',\n },\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<unknown, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<unknown, void> = () => async (content: unknown) => {\n // Lazy startFlow — source patches window.dataLayer.push during init\n if (!flow) {\n // Ensure dataLayer sources get the window env for interception\n const enrichedConfig = { ...config };\n if (enrichedConfig.sources) {\n enrichedConfig.sources = { ...enrichedConfig.sources };\n for (const [id, source] of Object.entries(enrichedConfig.sources)) {\n if (!source.env?.window) {\n enrichedConfig.sources[id] = {\n ...source,\n env: { ...source.env, window },\n };\n }\n }\n }\n const result = await startFlow({\n ...enrichedConfig,\n run: enrichedConfig.run ?? true,\n });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Push to dataLayer — the interceptor catches it\n const win = window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Pushes step example input to window.dataLayer after source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(input);\n};\n\nexport { createTrigger, trigger };\n"],"mappings":"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","names":["push","trigger"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/interceptor.ts","../src/types/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import type { Source, On } from '@walkeros/core';\nimport type { Types } from './types';\nimport { interceptDataLayer, processExistingEvents } from './interceptor';\n\n// Export types for external usage\nexport * as SourceDataLayer from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * DataLayer source implementation using environment injection.\n *\n * This source intercepts dataLayer.push calls and transforms them to WalkerOS events.\n * It works by replacing the dataLayer.push method with a custom handler.\n */\nexport const sourceDataLayer: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb, window: envWindow } = env;\n\n const settings: Source.Settings<Types> = {\n name: 'dataLayer',\n prefix: 'dataLayer',\n ...config?.settings,\n };\n\n const fullConfig: Source.Config<Types> = {\n settings,\n };\n\n // Captured at init time — see init below.\n let pendingReplayCount = 0;\n\n // Lifecycle setup. Called by the collector eagerly after registration,\n // regardless of `require`. The factory body above is side-effect-free.\n const init = () => {\n if (!envWindow) return;\n const dataLayerName = settings.name || 'dataLayer';\n const dl = (envWindow as Record<string, unknown>)[dataLayerName];\n pendingReplayCount = Array.isArray(dl) ? dl.length : 0;\n\n const win = envWindow as unknown as Record<string, unknown>;\n interceptDataLayer(elb, fullConfig, win);\n };\n\n // Replay pre-existing entries when the run signal lands. The collector\n // strictly gates on() delivery: this fires only when the source is\n // started (`config.init === true` AND `config.require` empty). If a\n // require gate is unmet, the run event is queued in `queueOn` by\n // onApply and replayed when the source becomes started.\n const handleEvent = async (event: On.Types) => {\n if (event === 'run' && envWindow && pendingReplayCount > 0) {\n const win = envWindow as unknown as Record<string, unknown>;\n processExistingEvents(elb, fullConfig, pendingReplayCount, win);\n pendingReplayCount = 0;\n }\n };\n\n return {\n type: 'dataLayer',\n config: fullConfig,\n push: elb,\n on: handleEvent,\n init,\n destroy: async () => {\n // Cleanup: restore original dataLayer.push if possible\n const dataLayerName = settings.name || 'dataLayer';\n if (\n envWindow &&\n envWindow[dataLayerName] &&\n Array.isArray(envWindow[dataLayerName])\n ) {\n // Note: Complete restoration would require storing original push method\n // For now, we'll just document this limitation\n }\n },\n };\n};\n\nexport default sourceDataLayer;\n","import type { WalkerOS, Source, Collector } from '@walkeros/core';\nimport { isArray, isObject, isString, tryCatch } from '@walkeros/core';\n\n// Global flag to prevent infinite loops\nlet isProcessing = false;\n\n/**\n * DataLayer interceptor - handles dataLayer.push interception and event transformation\n */\nexport function interceptDataLayer(\n push: Collector.PushFn,\n config: Source.Config,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n\n // Ensure dataLayer exists\n if (!win[dataLayerName]) {\n win[dataLayerName] = [];\n }\n\n const dataLayer = win[dataLayerName] as unknown[];\n if (!Array.isArray(dataLayer)) return;\n\n // Store original push\n const originalPush = dataLayer.push.bind(dataLayer);\n\n // Override push with event processing\n dataLayer.push = function (...args: unknown[]): number {\n // Prevent infinite loops\n if (isProcessing) {\n return originalPush(...args);\n }\n\n isProcessing = true;\n try {\n // Process each argument\n for (const arg of args) {\n processEvent(push, settings, arg);\n }\n } finally {\n isProcessing = false;\n }\n\n // Call original push\n return originalPush(...args);\n };\n}\n\n/**\n * Process existing events on initialization\n */\nexport function processExistingEvents(\n push: Collector.PushFn,\n config: Source.Config,\n limit?: number,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n const dataLayer = win[dataLayerName] as unknown[];\n\n if (!Array.isArray(dataLayer)) return;\n\n // Prevent loops during initialization\n if (isProcessing) return;\n\n isProcessing = true;\n try {\n const count = limit ?? dataLayer.length;\n for (let i = 0; i < count; i++) {\n processEvent(push, settings, dataLayer[i]);\n }\n } finally {\n isProcessing = false;\n }\n}\n\n/**\n * Process a single event - handles filtering, transformation, and WalkerOS event creation\n */\nfunction processEvent(\n push: Collector.PushFn,\n settings: { prefix?: string; filter?: (event: unknown) => boolean } = {},\n rawEvent: unknown,\n): void {\n // Apply filter if provided\n if (settings.filter) {\n const filterFn = tryCatch(\n () => settings.filter!(rawEvent),\n () => false, // If filter throws, don't skip the event\n );\n const filterResult = filterFn();\n if (filterResult === true) {\n return; // Skip filtered events\n }\n }\n\n // Transform the event (handles gtag format and direct objects)\n const transformedEvent = transformDataLayerEvent(rawEvent);\n if (!transformedEvent) {\n return; // Skip invalid events\n }\n\n const prefix = settings.prefix || 'dataLayer';\n const eventName = `${prefix} ${transformedEvent.name}`;\n\n // Create partial WalkerOS event structure (collector will enrich it)\n const { name: _name, ...data } = transformedEvent;\n const partialEvent: WalkerOS.DeepPartialEvent = {\n name: eventName,\n data: data as WalkerOS.Properties,\n };\n\n // Push to collector\n tryCatch(\n () => push(partialEvent),\n () => {}, // Silently handle push errors\n )();\n}\n\n/**\n * Transform dataLayer events to standardized format\n * Handles: gtag arguments, direct objects, existing events\n */\nfunction transformDataLayerEvent(\n rawEvent: unknown,\n): { name: string; [key: string]: unknown } | null {\n // Handle direct object format: { event: 'test', data: 'value' }\n if (isObject(rawEvent) && isString(rawEvent.event)) {\n const { event, ...rest } = rawEvent;\n return { name: event, ...rest };\n }\n\n // Handle gtag argument format: ['consent', 'update', { ad_storage: 'granted' }]\n if (isArray(rawEvent) && rawEvent.length >= 2) {\n return transformGtagArgs(rawEvent);\n }\n\n // Handle arguments object (from gtag function calls)\n if (isGtagArguments(rawEvent)) {\n const argsArray = Array.from(rawEvent as ArrayLike<unknown>);\n return transformGtagArgs(argsArray);\n }\n\n return null;\n}\n\n/**\n * Transform gtag-style arguments to event object\n * ['consent', 'update', { ad_storage: 'granted' }] → { event: 'consent update', ad_storage: 'granted' }\n */\nfunction transformGtagArgs(\n args: unknown[],\n): { name: string; [key: string]: unknown } | null {\n const [command, action, params] = args;\n\n if (!isString(command)) return null;\n\n let eventName: string;\n let eventData: Record<string, unknown> = {};\n\n switch (command) {\n case 'consent':\n // Consent requires action and params\n if (!isString(action) || args.length < 3) return null;\n // Only allow 'default' and 'update' actions for consent\n if (action !== 'default' && action !== 'update') return null;\n // Params must be a valid object (not null)\n if (!isObject(params) || params === null) return null;\n\n eventName = `${command} ${action}`;\n eventData = { ...params };\n break;\n\n case 'event':\n // Event requires at least action parameter\n if (!isString(action)) return null;\n eventName = action;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'config':\n // Config requires at least action parameter\n if (!isString(action)) return null;\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'set':\n if (isString(action)) {\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n } else if (isObject(action)) {\n eventName = `${command} custom`;\n eventData = { ...action };\n } else {\n return null;\n }\n break;\n\n default:\n // Unknown command, ignore\n return null;\n }\n\n return {\n name: eventName,\n ...eventData,\n };\n}\n\n/**\n * Check if object is gtag arguments object\n */\nfunction isGtagArguments(obj: unknown): boolean {\n return (\n obj != null &&\n typeof obj === 'object' &&\n 'length' in obj &&\n typeof (obj as ArrayLike<unknown>).length === 'number' &&\n (obj as ArrayLike<unknown>).length > 0\n );\n}\n","import type { WalkerOS, Source, Elb } from '@walkeros/core';\nimport type { SettingsSchema, Mapping } from '../schemas';\nimport type { z } from '@walkeros/core/dev';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n dataLayer: { type: 'dataLayer'; platform?: 'web' };\n }\n}\n\ndeclare global {\n interface Window {\n dataLayer?: DataLayer;\n [key: string]: DataLayer | unknown;\n }\n}\n\nexport type DataLayer = Array<unknown>;\n\n// Base settings from Zod schema\ntype BaseSettings = z.infer<typeof SettingsSchema>;\n\n// Override filter to be actual function type (not serializable in schema)\nexport interface Settings extends Omit<BaseSettings, 'filter'> {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => WalkerOS.PromiseOrValue<boolean>;\n}\n\n// InitSettings: user input (all optional)\nexport type InitSettings = Partial<Settings>;\n\nexport type { Mapping };\n\nexport type Push = Elb.Fn;\n\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\nexport type Config = Source.Config<Types>;\n\nexport type DataLayerEvent = {\n event: string;\n [key: string]: unknown;\n};\n\nexport type MappedEvent = {\n event?: WalkerOS.DeepPartialEvent & { id: string };\n command?: {\n name: string;\n data: unknown;\n };\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for dataLayer source\n *\n * These environments provide standardized mock structures for testing\n * dataLayer interception without requiring a real window object.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n// Create a properly typed elb/push/command function that returns a promise with PushResult\nconst createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n// Simple no-op logger for demo purposes\nconst noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for dataLayer source\n */\ninterface DataLayerEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Mock window object with dataLayer array\n */\nconst createMockWindow = () => ({\n dataLayer: [] as unknown[],\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing dataLayer source\n *\n * Use this for testing dataLayer.push interception and event transformation\n * without requiring a real browser environment.\n */\nexport const push: DataLayerEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const gtagPurchase: Flow.StepExample = {\n title: 'gtag purchase',\n description:\n 'A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'purchase',\n {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer purchase',\n data: {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n },\n ],\n ],\n};\n\nexport const consentUpdate: Flow.StepExample = {\n title: 'Consent update',\n description:\n 'A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.',\n trigger: { type: 'gtag' },\n in: [\n 'consent',\n 'update',\n {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer consent update',\n data: {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n },\n ],\n ],\n};\n\nexport const gtagAddToCart: Flow.StepExample = {\n title: 'gtag add_to_cart',\n description:\n 'A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'add_to_cart',\n {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer add_to_cart',\n data: {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const gtagViewItem: Flow.StepExample = {\n title: 'gtag view_item',\n description:\n 'A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'view_item',\n {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer view_item',\n data: {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const directEvent: Flow.StepExample = {\n title: 'Direct dataLayer event',\n description:\n 'A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.',\n trigger: { type: 'direct' },\n in: {\n event: 'custom_event',\n category: 'engagement',\n label: 'video_play',\n },\n out: [\n [\n 'elb',\n {\n name: 'dataLayer custom_event',\n data: {\n category: 'engagement',\n label: 'video_play',\n },\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<unknown, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<unknown, void> = () => async (content: unknown) => {\n // Lazy startFlow — source patches window.dataLayer.push during init\n if (!flow) {\n // Ensure dataLayer sources get the window env for interception\n const enrichedConfig = { ...config };\n if (enrichedConfig.sources) {\n enrichedConfig.sources = { ...enrichedConfig.sources };\n for (const [id, source] of Object.entries(enrichedConfig.sources)) {\n if (!source.env?.window) {\n enrichedConfig.sources[id] = {\n ...source,\n env: { ...source.env, window },\n };\n }\n }\n }\n const result = await startFlow({\n ...enrichedConfig,\n run: enrichedConfig.run ?? true,\n });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Push to dataLayer — the interceptor catches it\n const win = window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Pushes step example input to window.dataLayer after source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(input);\n};\n\nexport { createTrigger, trigger };\n"],"mappings":"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","names":["push","trigger"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,a)=>{for(var r in a)e(t,r,{get:a[r],enumerable:!0})};import{isArray as a,isObject as r,isString as n,tryCatch as i}from"@walkeros/core";var o=!1;function s(e,t
|
|
1
|
+
var e=Object.defineProperty,t=(t,a)=>{for(var r in a)e(t,r,{get:a[r],enumerable:!0})};import{isArray as a,isObject as r,isString as n,tryCatch as i}from"@walkeros/core";var o=!1;function s(e,t={},o){if(t.filter){if(!0===i(()=>t.filter(o),()=>!1)())return}const s=function(e){if(r(e)&&n(e.event)){const{event:t,...a}=e;return{name:t,...a}}if(a(e)&&e.length>=2)return c(e);if(t=e,null!=t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0){return c(Array.from(e))}var t;return null}(o);if(!s)return;const u=`${t.prefix||"dataLayer"} ${s.name}`,{name:d,...l}=s,g={name:u,data:l};i(()=>e(g),()=>{})()}function c(e){const[t,a,i]=e;if(!n(t))return null;let o,s={};switch(t){case"consent":if(!n(a)||e.length<3)return null;if("default"!==a&&"update"!==a)return null;if(!r(i)||null===i)return null;o=`${t} ${a}`,s={...i};break;case"event":if(!n(a))return null;o=a,r(i)&&(s={...i});break;case"config":if(!n(a))return null;o=`${t} ${a}`,r(i)&&(s={...i});break;case"set":if(n(a))o=`${t} ${a}`,r(i)&&(s={...i});else{if(!r(a))return null;o=`${t} custom`,s={...a}}break;default:return null}return{name:o,...s}}var u={},d={};t(d,{push:()=>m});var l=()=>{},g=()=>()=>Promise.resolve({ok:!0}),y={error:l,warn:l,info:l,debug:l,throw:e=>{throw"string"==typeof e?new Error(e):e},json:l,scope:()=>y},m={get push(){return g()},get command(){return g()},get elb(){return g()},get window(){return{dataLayer:[],addEventListener:l,removeEventListener:l}},logger:y},p={};t(p,{consentUpdate:()=>v,directEvent:()=>h,gtagAddToCart:()=>_,gtagPurchase:()=>f,gtagViewItem:()=>w});var f={title:"gtag purchase",description:"A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.",trigger:{type:"gtag"},in:["event","purchase",{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}],out:[["elb",{name:"dataLayer purchase",data:{transaction_id:"T-12345",value:25.42,currency:"EUR",items:[{item_id:"SKU-1",item_name:"T-Shirt",quantity:1}]}}]]},v={title:"Consent update",description:"A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.",trigger:{type:"gtag"},in:["consent","update",{ad_storage:"granted",analytics_storage:"granted"}],out:[["elb",{name:"dataLayer consent update",data:{ad_storage:"granted",analytics_storage:"granted"}}]]},_={title:"gtag add_to_cart",description:"A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.",trigger:{type:"gtag"},in:["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}],out:[["elb",{name:"dataLayer add_to_cart",data:{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"T-Shirt",item_variant:"red",quantity:1,price:15.25}]}}]]},w={title:"gtag view_item",description:"A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.",trigger:{type:"gtag"},in:["event","view_item",{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}],out:[["elb",{name:"dataLayer view_item",data:{currency:"EUR",value:29.99,items:[{item_id:"SKU_67890",item_name:"Sneakers",item_category:"Footwear",price:29.99}]}}]]},h={title:"Direct dataLayer event",description:"A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.",trigger:{type:"direct"},in:{event:"custom_event",category:"engagement",label:"video_play"},out:[["elb",{name:"dataLayer custom_event",data:{category:"engagement",label:"video_play"}}]]};import{startFlow as L}from"@walkeros/collector";var b=async e=>{let t;return{get flow(){return t},trigger:()=>async a=>{var r,n;if(!t){const a={...e};if(a.sources){a.sources={...a.sources};for(const[e,t]of Object.entries(a.sources))(null==(r=t.env)?void 0:r.window)||(a.sources[e]={...t,env:{...t.env,window:window}})}const i=await L({...a,run:null==(n=a.run)||n});t={collector:i.collector,elb:i.elb}}const i=window;i.dataLayer||(i.dataLayer=[]),i.dataLayer.push(a)}}},A=(e,t)=>{const a=t.window;a.dataLayer||(a.dataLayer=[]),a.dataLayer.push(e)},k=async e=>{const{config:t,env:a}=e,{elb:r,window:n}=a,i={name:"dataLayer",prefix:"dataLayer",...null==t?void 0:t.settings},c={settings:i};let u=0;return{type:"dataLayer",config:c,push:r,on:async e=>{if("run"===e&&n&&u>0){!function(e,t,a,r=globalThis.window){const n=t.settings,i=r[(null==n?void 0:n.name)||"dataLayer"];if(Array.isArray(i)&&!o){o=!0;try{const t=null!=a?a:i.length;for(let a=0;a<t;a++)s(e,n,i[a])}finally{o=!1}}}(r,c,u,n),u=0}},init:()=>{if(!n)return;const e=i.name||"dataLayer",t=n[e];u=Array.isArray(t)?t.length:0;!function(e,t,a=globalThis.window){const r=t.settings,n=(null==r?void 0:r.name)||"dataLayer";a[n]||(a[n]=[]);const i=a[n];if(!Array.isArray(i))return;const c=i.push.bind(i);i.push=function(...t){if(o)return c(...t);o=!0;try{for(const a of t)s(e,r,a)}finally{o=!1}return c(...t)}}(r,c,n)},destroy:async()=>{const e=i.name||"dataLayer";n&&n[e]&&Array.isArray(n[e])}}},S=k;export{u as SourceDataLayer,b as createTrigger,S as default,d as env,k as sourceDataLayer,p as step,A as trigger};//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interceptor.ts","../src/types/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/index.ts"],"sourcesContent":["import type { WalkerOS, Source, Collector } from '@walkeros/core';\nimport { isArray, isObject, isString, tryCatch } from '@walkeros/core';\n\n// Global flag to prevent infinite loops\nlet isProcessing = false;\n\n/**\n * DataLayer interceptor - handles dataLayer.push interception and event transformation\n */\nexport function interceptDataLayer(\n push: Collector.PushFn,\n config: Source.Config,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n\n // Ensure dataLayer exists\n if (!win[dataLayerName]) {\n win[dataLayerName] = [];\n }\n\n const dataLayer = win[dataLayerName] as unknown[];\n if (!Array.isArray(dataLayer)) return;\n\n // Store original push\n const originalPush = dataLayer.push.bind(dataLayer);\n\n // Override push with event processing\n dataLayer.push = function (...args: unknown[]): number {\n // Prevent infinite loops\n if (isProcessing) {\n return originalPush(...args);\n }\n\n isProcessing = true;\n try {\n // Process each argument\n for (const arg of args) {\n processEvent(push, settings, arg);\n }\n } finally {\n isProcessing = false;\n }\n\n // Call original push\n return originalPush(...args);\n };\n}\n\n/**\n * Process existing events on initialization\n */\nexport function processExistingEvents(\n push: Collector.PushFn,\n config: Source.Config,\n limit?: number,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n const dataLayer = win[dataLayerName] as unknown[];\n\n if (!Array.isArray(dataLayer)) return;\n\n // Prevent loops during initialization\n if (isProcessing) return;\n\n isProcessing = true;\n try {\n const count = limit ?? dataLayer.length;\n for (let i = 0; i < count; i++) {\n processEvent(push, settings, dataLayer[i]);\n }\n } finally {\n isProcessing = false;\n }\n}\n\n/**\n * Process a single event - handles filtering, transformation, and WalkerOS event creation\n */\nfunction processEvent(\n push: Collector.PushFn,\n settings: { prefix?: string; filter?: (event: unknown) => boolean } = {},\n rawEvent: unknown,\n): void {\n // Apply filter if provided\n if (settings.filter) {\n const filterFn = tryCatch(\n () => settings.filter!(rawEvent),\n () => false, // If filter throws, don't skip the event\n );\n const filterResult = filterFn();\n if (filterResult === true) {\n return; // Skip filtered events\n }\n }\n\n // Transform the event (handles gtag format and direct objects)\n const transformedEvent = transformDataLayerEvent(rawEvent);\n if (!transformedEvent) {\n return; // Skip invalid events\n }\n\n const prefix = settings.prefix || 'dataLayer';\n const eventName = `${prefix} ${transformedEvent.name}`;\n\n // Create partial WalkerOS event structure (collector will enrich it)\n const { name: _name, ...data } = transformedEvent;\n const partialEvent: WalkerOS.DeepPartialEvent = {\n name: eventName,\n data: data as WalkerOS.Properties,\n };\n\n // Push to collector\n tryCatch(\n () => push(partialEvent),\n () => {}, // Silently handle push errors\n )();\n}\n\n/**\n * Transform dataLayer events to standardized format\n * Handles: gtag arguments, direct objects, existing events\n */\nfunction transformDataLayerEvent(\n rawEvent: unknown,\n): { name: string; [key: string]: unknown } | null {\n // Handle direct object format: { event: 'test', data: 'value' }\n if (isObject(rawEvent) && isString(rawEvent.event)) {\n const { event, ...rest } = rawEvent;\n return { name: event, ...rest };\n }\n\n // Handle gtag argument format: ['consent', 'update', { ad_storage: 'granted' }]\n if (isArray(rawEvent) && rawEvent.length >= 2) {\n return transformGtagArgs(rawEvent);\n }\n\n // Handle arguments object (from gtag function calls)\n if (isGtagArguments(rawEvent)) {\n const argsArray = Array.from(rawEvent as ArrayLike<unknown>);\n return transformGtagArgs(argsArray);\n }\n\n return null;\n}\n\n/**\n * Transform gtag-style arguments to event object\n * ['consent', 'update', { ad_storage: 'granted' }] → { event: 'consent update', ad_storage: 'granted' }\n */\nfunction transformGtagArgs(\n args: unknown[],\n): { name: string; [key: string]: unknown } | null {\n const [command, action, params] = args;\n\n if (!isString(command)) return null;\n\n let eventName: string;\n let eventData: Record<string, unknown> = {};\n\n switch (command) {\n case 'consent':\n // Consent requires action and params\n if (!isString(action) || args.length < 3) return null;\n // Only allow 'default' and 'update' actions for consent\n if (action !== 'default' && action !== 'update') return null;\n // Params must be a valid object (not null)\n if (!isObject(params) || params === null) return null;\n\n eventName = `${command} ${action}`;\n eventData = { ...params };\n break;\n\n case 'event':\n // Event requires at least action parameter\n if (!isString(action)) return null;\n eventName = action;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'config':\n // Config requires at least action parameter\n if (!isString(action)) return null;\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'set':\n if (isString(action)) {\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n } else if (isObject(action)) {\n eventName = `${command} custom`;\n eventData = { ...action };\n } else {\n return null;\n }\n break;\n\n default:\n // Unknown command, ignore\n return null;\n }\n\n return {\n name: eventName,\n ...eventData,\n };\n}\n\n/**\n * Check if object is gtag arguments object\n */\nfunction isGtagArguments(obj: unknown): boolean {\n return (\n obj != null &&\n typeof obj === 'object' &&\n 'length' in obj &&\n typeof (obj as ArrayLike<unknown>).length === 'number' &&\n (obj as ArrayLike<unknown>).length > 0\n );\n}\n","import type { WalkerOS, Source, Elb } from '@walkeros/core';\nimport type { SettingsSchema, Mapping } from '../schemas';\nimport type { z } from '@walkeros/core/dev';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n dataLayer: { type: 'dataLayer'; platform?: 'web' };\n }\n}\n\ndeclare global {\n interface Window {\n dataLayer?: DataLayer;\n [key: string]: DataLayer | unknown;\n }\n}\n\nexport type DataLayer = Array<unknown>;\n\n// Base settings from Zod schema\ntype BaseSettings = z.infer<typeof SettingsSchema>;\n\n// Override filter to be actual function type (not serializable in schema)\nexport interface Settings extends Omit<BaseSettings, 'filter'> {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => WalkerOS.PromiseOrValue<boolean>;\n}\n\n// InitSettings: user input (all optional)\nexport type InitSettings = Partial<Settings>;\n\nexport type { Mapping };\n\nexport type Push = Elb.Fn;\n\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\nexport type Config = Source.Config<Types>;\n\nexport type DataLayerEvent = {\n event: string;\n [key: string]: unknown;\n};\n\nexport type MappedEvent = {\n event?: WalkerOS.DeepPartialEvent & { id: string };\n command?: {\n name: string;\n data: unknown;\n };\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for dataLayer source\n *\n * These environments provide standardized mock structures for testing\n * dataLayer interception without requiring a real window object.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n// Create a properly typed elb/push/command function that returns a promise with PushResult\nconst createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n// Simple no-op logger for demo purposes\nconst noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for dataLayer source\n */\ninterface DataLayerEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Mock window object with dataLayer array\n */\nconst createMockWindow = () => ({\n dataLayer: [] as unknown[],\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing dataLayer source\n *\n * Use this for testing dataLayer.push interception and event transformation\n * without requiring a real browser environment.\n */\nexport const push: DataLayerEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const gtagPurchase: Flow.StepExample = {\n title: 'gtag purchase',\n description:\n 'A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'purchase',\n {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer purchase',\n data: {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n },\n ],\n ],\n};\n\nexport const consentUpdate: Flow.StepExample = {\n title: 'Consent update',\n description:\n 'A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.',\n trigger: { type: 'gtag' },\n in: [\n 'consent',\n 'update',\n {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer consent update',\n data: {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n },\n ],\n ],\n};\n\nexport const gtagAddToCart: Flow.StepExample = {\n title: 'gtag add_to_cart',\n description:\n 'A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'add_to_cart',\n {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer add_to_cart',\n data: {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const gtagViewItem: Flow.StepExample = {\n title: 'gtag view_item',\n description:\n 'A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'view_item',\n {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer view_item',\n data: {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const directEvent: Flow.StepExample = {\n title: 'Direct dataLayer event',\n description:\n 'A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.',\n trigger: { type: 'direct' },\n in: {\n event: 'custom_event',\n category: 'engagement',\n label: 'video_play',\n },\n out: [\n [\n 'elb',\n {\n name: 'dataLayer custom_event',\n data: {\n category: 'engagement',\n label: 'video_play',\n },\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<unknown, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<unknown, void> = () => async (content: unknown) => {\n // Lazy startFlow — source patches window.dataLayer.push during init\n if (!flow) {\n // Ensure dataLayer sources get the window env for interception\n const enrichedConfig = { ...config };\n if (enrichedConfig.sources) {\n enrichedConfig.sources = { ...enrichedConfig.sources };\n for (const [id, source] of Object.entries(enrichedConfig.sources)) {\n if (!source.env?.window) {\n enrichedConfig.sources[id] = {\n ...source,\n env: { ...source.env, window },\n };\n }\n }\n }\n const result = await startFlow({\n ...enrichedConfig,\n run: enrichedConfig.run ?? true,\n });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Push to dataLayer — the interceptor catches it\n const win = window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Pushes step example input to window.dataLayer after source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(input);\n};\n\nexport { createTrigger, trigger };\n","import type { Source, On } from '@walkeros/core';\nimport type { Types } from './types';\nimport { interceptDataLayer, processExistingEvents } from './interceptor';\n\n// Export types for external usage\nexport * as SourceDataLayer from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * DataLayer source implementation using environment injection.\n *\n * This source intercepts dataLayer.push calls and transforms them to WalkerOS events.\n * It works by replacing the dataLayer.push method with a custom handler.\n */\nexport const sourceDataLayer: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb, window: envWindow } = env;\n\n const settings: Source.Settings<Types> = {\n name: 'dataLayer',\n prefix: 'dataLayer',\n ...config?.settings,\n };\n\n const fullConfig: Source.Config<Types> = {\n settings,\n };\n\n let pendingReplayCount = 0;\n\n if (envWindow) {\n // Snapshot how many items exist before interception\n const dataLayerName = settings.name || 'dataLayer';\n const dl = (envWindow as Record<string, unknown>)[dataLayerName];\n pendingReplayCount = Array.isArray(dl) ? dl.length : 0;\n\n const win = envWindow as unknown as Record<string, unknown>;\n\n // Set up interceptor immediately so no new events are missed\n interceptDataLayer(elb, fullConfig, win);\n\n if (context.collector.allowed && pendingReplayCount > 0) {\n // Collector already ran — process existing events immediately\n processExistingEvents(elb, fullConfig, pendingReplayCount, win);\n pendingReplayCount = 0;\n }\n }\n\n // Handle on-run to replay existing events (when source inits before run)\n const handleEvent = async (event: On.Types) => {\n if (event === 'run' && envWindow && pendingReplayCount > 0) {\n const win = envWindow as unknown as Record<string, unknown>;\n processExistingEvents(elb, fullConfig, pendingReplayCount, win);\n pendingReplayCount = 0;\n }\n };\n\n return {\n type: 'dataLayer',\n config: fullConfig,\n push: elb,\n on: handleEvent,\n destroy: async () => {\n // Cleanup: restore original dataLayer.push if possible\n const dataLayerName = settings.name || 'dataLayer';\n if (\n envWindow &&\n envWindow[dataLayerName] &&\n Array.isArray(envWindow[dataLayerName])\n ) {\n // Note: Complete restoration would require storing original push method\n // For now, we'll just document this limitation\n }\n },\n };\n};\n\nexport default sourceDataLayer;\n"],"mappings":"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","names":["push","trigger"]}
|
|
1
|
+
{"version":3,"sources":["../src/interceptor.ts","../src/types/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts","../src/index.ts"],"sourcesContent":["import type { WalkerOS, Source, Collector } from '@walkeros/core';\nimport { isArray, isObject, isString, tryCatch } from '@walkeros/core';\n\n// Global flag to prevent infinite loops\nlet isProcessing = false;\n\n/**\n * DataLayer interceptor - handles dataLayer.push interception and event transformation\n */\nexport function interceptDataLayer(\n push: Collector.PushFn,\n config: Source.Config,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n\n // Ensure dataLayer exists\n if (!win[dataLayerName]) {\n win[dataLayerName] = [];\n }\n\n const dataLayer = win[dataLayerName] as unknown[];\n if (!Array.isArray(dataLayer)) return;\n\n // Store original push\n const originalPush = dataLayer.push.bind(dataLayer);\n\n // Override push with event processing\n dataLayer.push = function (...args: unknown[]): number {\n // Prevent infinite loops\n if (isProcessing) {\n return originalPush(...args);\n }\n\n isProcessing = true;\n try {\n // Process each argument\n for (const arg of args) {\n processEvent(push, settings, arg);\n }\n } finally {\n isProcessing = false;\n }\n\n // Call original push\n return originalPush(...args);\n };\n}\n\n/**\n * Process existing events on initialization\n */\nexport function processExistingEvents(\n push: Collector.PushFn,\n config: Source.Config,\n limit?: number,\n win: Record<string, unknown> = globalThis.window as unknown as Record<\n string,\n unknown\n >,\n): void {\n const settings = config.settings as {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => boolean;\n };\n const dataLayerName = settings?.name || 'dataLayer';\n const dataLayer = win[dataLayerName] as unknown[];\n\n if (!Array.isArray(dataLayer)) return;\n\n // Prevent loops during initialization\n if (isProcessing) return;\n\n isProcessing = true;\n try {\n const count = limit ?? dataLayer.length;\n for (let i = 0; i < count; i++) {\n processEvent(push, settings, dataLayer[i]);\n }\n } finally {\n isProcessing = false;\n }\n}\n\n/**\n * Process a single event - handles filtering, transformation, and WalkerOS event creation\n */\nfunction processEvent(\n push: Collector.PushFn,\n settings: { prefix?: string; filter?: (event: unknown) => boolean } = {},\n rawEvent: unknown,\n): void {\n // Apply filter if provided\n if (settings.filter) {\n const filterFn = tryCatch(\n () => settings.filter!(rawEvent),\n () => false, // If filter throws, don't skip the event\n );\n const filterResult = filterFn();\n if (filterResult === true) {\n return; // Skip filtered events\n }\n }\n\n // Transform the event (handles gtag format and direct objects)\n const transformedEvent = transformDataLayerEvent(rawEvent);\n if (!transformedEvent) {\n return; // Skip invalid events\n }\n\n const prefix = settings.prefix || 'dataLayer';\n const eventName = `${prefix} ${transformedEvent.name}`;\n\n // Create partial WalkerOS event structure (collector will enrich it)\n const { name: _name, ...data } = transformedEvent;\n const partialEvent: WalkerOS.DeepPartialEvent = {\n name: eventName,\n data: data as WalkerOS.Properties,\n };\n\n // Push to collector\n tryCatch(\n () => push(partialEvent),\n () => {}, // Silently handle push errors\n )();\n}\n\n/**\n * Transform dataLayer events to standardized format\n * Handles: gtag arguments, direct objects, existing events\n */\nfunction transformDataLayerEvent(\n rawEvent: unknown,\n): { name: string; [key: string]: unknown } | null {\n // Handle direct object format: { event: 'test', data: 'value' }\n if (isObject(rawEvent) && isString(rawEvent.event)) {\n const { event, ...rest } = rawEvent;\n return { name: event, ...rest };\n }\n\n // Handle gtag argument format: ['consent', 'update', { ad_storage: 'granted' }]\n if (isArray(rawEvent) && rawEvent.length >= 2) {\n return transformGtagArgs(rawEvent);\n }\n\n // Handle arguments object (from gtag function calls)\n if (isGtagArguments(rawEvent)) {\n const argsArray = Array.from(rawEvent as ArrayLike<unknown>);\n return transformGtagArgs(argsArray);\n }\n\n return null;\n}\n\n/**\n * Transform gtag-style arguments to event object\n * ['consent', 'update', { ad_storage: 'granted' }] → { event: 'consent update', ad_storage: 'granted' }\n */\nfunction transformGtagArgs(\n args: unknown[],\n): { name: string; [key: string]: unknown } | null {\n const [command, action, params] = args;\n\n if (!isString(command)) return null;\n\n let eventName: string;\n let eventData: Record<string, unknown> = {};\n\n switch (command) {\n case 'consent':\n // Consent requires action and params\n if (!isString(action) || args.length < 3) return null;\n // Only allow 'default' and 'update' actions for consent\n if (action !== 'default' && action !== 'update') return null;\n // Params must be a valid object (not null)\n if (!isObject(params) || params === null) return null;\n\n eventName = `${command} ${action}`;\n eventData = { ...params };\n break;\n\n case 'event':\n // Event requires at least action parameter\n if (!isString(action)) return null;\n eventName = action;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'config':\n // Config requires at least action parameter\n if (!isString(action)) return null;\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n break;\n\n case 'set':\n if (isString(action)) {\n eventName = `${command} ${action}`;\n if (isObject(params)) {\n eventData = { ...params };\n }\n } else if (isObject(action)) {\n eventName = `${command} custom`;\n eventData = { ...action };\n } else {\n return null;\n }\n break;\n\n default:\n // Unknown command, ignore\n return null;\n }\n\n return {\n name: eventName,\n ...eventData,\n };\n}\n\n/**\n * Check if object is gtag arguments object\n */\nfunction isGtagArguments(obj: unknown): boolean {\n return (\n obj != null &&\n typeof obj === 'object' &&\n 'length' in obj &&\n typeof (obj as ArrayLike<unknown>).length === 'number' &&\n (obj as ArrayLike<unknown>).length > 0\n );\n}\n","import type { WalkerOS, Source, Elb } from '@walkeros/core';\nimport type { SettingsSchema, Mapping } from '../schemas';\nimport type { z } from '@walkeros/core/dev';\n\ndeclare module '@walkeros/core' {\n interface SourceMap {\n dataLayer: { type: 'dataLayer'; platform?: 'web' };\n }\n}\n\ndeclare global {\n interface Window {\n dataLayer?: DataLayer;\n [key: string]: DataLayer | unknown;\n }\n}\n\nexport type DataLayer = Array<unknown>;\n\n// Base settings from Zod schema\ntype BaseSettings = z.infer<typeof SettingsSchema>;\n\n// Override filter to be actual function type (not serializable in schema)\nexport interface Settings extends Omit<BaseSettings, 'filter'> {\n name?: string;\n prefix?: string;\n filter?: (event: unknown) => WalkerOS.PromiseOrValue<boolean>;\n}\n\n// InitSettings: user input (all optional)\nexport type InitSettings = Partial<Settings>;\n\nexport type { Mapping };\n\nexport type Push = Elb.Fn;\n\nexport interface Env extends Source.BaseEnv {\n window?: Window & typeof globalThis;\n}\n\nexport type Types = Source.Types<Settings, Mapping, Push, Env, InitSettings>;\n\nexport type Config = Source.Config<Types>;\n\nexport type DataLayerEvent = {\n event: string;\n [key: string]: unknown;\n};\n\nexport type MappedEvent = {\n event?: WalkerOS.DeepPartialEvent & { id: string };\n command?: {\n name: string;\n data: unknown;\n };\n};\n","import type { Source, Elb, Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for dataLayer source\n *\n * These environments provide standardized mock structures for testing\n * dataLayer interception without requiring a real window object.\n */\n\n// Simple no-op function for mocking\nconst noop = () => {};\n\n// Create a properly typed elb/push/command function that returns a promise with PushResult\nconst createMockElbFn = (): Elb.Fn => {\n const fn = (() =>\n Promise.resolve({\n ok: true,\n })) as Elb.Fn;\n return fn;\n};\n\n// Simple no-op logger for demo purposes\nconst noopLogger: Logger.Instance = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noop,\n scope: () => noopLogger,\n};\n\n/**\n * Environment interface for dataLayer source\n */\ninterface DataLayerEnv extends Source.BaseEnv {\n window?: typeof window;\n}\n\n/**\n * Mock window object with dataLayer array\n */\nconst createMockWindow = () => ({\n dataLayer: [] as unknown[],\n addEventListener: noop,\n removeEventListener: noop,\n});\n\n/**\n * Standard mock environment for testing dataLayer source\n *\n * Use this for testing dataLayer.push interception and event transformation\n * without requiring a real browser environment.\n */\nexport const push: DataLayerEnv = {\n get push() {\n return createMockElbFn();\n },\n get command() {\n return createMockElbFn();\n },\n get elb() {\n return createMockElbFn();\n },\n get window() {\n return createMockWindow() as unknown as typeof window;\n },\n logger: noopLogger,\n};\n","import type { Flow } from '@walkeros/core';\n\nexport const gtagPurchase: Flow.StepExample = {\n title: 'gtag purchase',\n description:\n 'A gtag purchase call pushed to the dataLayer is captured as a walker dataLayer purchase event with item details.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'purchase',\n {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer purchase',\n data: {\n transaction_id: 'T-12345',\n value: 25.42,\n currency: 'EUR',\n items: [{ item_id: 'SKU-1', item_name: 'T-Shirt', quantity: 1 }],\n },\n },\n ],\n ],\n};\n\nexport const consentUpdate: Flow.StepExample = {\n title: 'Consent update',\n description:\n 'A gtag consent update is captured from the dataLayer as a walker dataLayer consent update event.',\n trigger: { type: 'gtag' },\n in: [\n 'consent',\n 'update',\n {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer consent update',\n data: {\n ad_storage: 'granted',\n analytics_storage: 'granted',\n },\n },\n ],\n ],\n};\n\nexport const gtagAddToCart: Flow.StepExample = {\n title: 'gtag add_to_cart',\n description:\n 'A gtag add_to_cart call pushed to the dataLayer is captured as a walker dataLayer add_to_cart event.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'add_to_cart',\n {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer add_to_cart',\n data: {\n currency: 'EUR',\n value: 15.25,\n items: [\n {\n item_id: 'SKU_12345',\n item_name: 'T-Shirt',\n item_variant: 'red',\n quantity: 1,\n price: 15.25,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const gtagViewItem: Flow.StepExample = {\n title: 'gtag view_item',\n description:\n 'A gtag view_item call pushed to the dataLayer is captured as a walker dataLayer view_item event with item data.',\n trigger: { type: 'gtag' },\n in: [\n 'event',\n 'view_item',\n {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n ],\n out: [\n [\n 'elb',\n {\n name: 'dataLayer view_item',\n data: {\n currency: 'EUR',\n value: 29.99,\n items: [\n {\n item_id: 'SKU_67890',\n item_name: 'Sneakers',\n item_category: 'Footwear',\n price: 29.99,\n },\n ],\n },\n },\n ],\n ],\n};\n\nexport const directEvent: Flow.StepExample = {\n title: 'Direct dataLayer event',\n description:\n 'A plain object pushed directly onto the dataLayer is captured as a walker dataLayer custom event.',\n trigger: { type: 'direct' },\n in: {\n event: 'custom_event',\n category: 'engagement',\n label: 'video_play',\n },\n out: [\n [\n 'elb',\n {\n name: 'dataLayer custom_event',\n data: {\n category: 'engagement',\n label: 'video_play',\n },\n },\n ],\n ],\n};\n","import type { Trigger, Collector } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\nconst createTrigger: Trigger.CreateFn<unknown, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<unknown, void> = () => async (content: unknown) => {\n // Lazy startFlow — source patches window.dataLayer.push during init\n if (!flow) {\n // Ensure dataLayer sources get the window env for interception\n const enrichedConfig = { ...config };\n if (enrichedConfig.sources) {\n enrichedConfig.sources = { ...enrichedConfig.sources };\n for (const [id, source] of Object.entries(enrichedConfig.sources)) {\n if (!source.env?.window) {\n enrichedConfig.sources[id] = {\n ...source,\n env: { ...source.env, window },\n };\n }\n }\n }\n const result = await startFlow({\n ...enrichedConfig,\n run: enrichedConfig.run ?? true,\n });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // Push to dataLayer — the interceptor catches it\n const win = window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\n/** Pushes step example input to window.dataLayer after source init. */\nconst trigger = (input: unknown, env: Record<string, unknown>): void => {\n const win = env.window as Window & { dataLayer?: unknown[] };\n if (!win.dataLayer) win.dataLayer = [];\n win.dataLayer.push(input);\n};\n\nexport { createTrigger, trigger };\n","import type { Source, On } from '@walkeros/core';\nimport type { Types } from './types';\nimport { interceptDataLayer, processExistingEvents } from './interceptor';\n\n// Export types for external usage\nexport * as SourceDataLayer from './types';\n\n// Export examples\nexport * from './examples';\n\n/**\n * DataLayer source implementation using environment injection.\n *\n * This source intercepts dataLayer.push calls and transforms them to WalkerOS events.\n * It works by replacing the dataLayer.push method with a custom handler.\n */\nexport const sourceDataLayer: Source.Init<Types> = async (context) => {\n const { config, env } = context;\n const { elb, window: envWindow } = env;\n\n const settings: Source.Settings<Types> = {\n name: 'dataLayer',\n prefix: 'dataLayer',\n ...config?.settings,\n };\n\n const fullConfig: Source.Config<Types> = {\n settings,\n };\n\n // Captured at init time — see init below.\n let pendingReplayCount = 0;\n\n // Lifecycle setup. Called by the collector eagerly after registration,\n // regardless of `require`. The factory body above is side-effect-free.\n const init = () => {\n if (!envWindow) return;\n const dataLayerName = settings.name || 'dataLayer';\n const dl = (envWindow as Record<string, unknown>)[dataLayerName];\n pendingReplayCount = Array.isArray(dl) ? dl.length : 0;\n\n const win = envWindow as unknown as Record<string, unknown>;\n interceptDataLayer(elb, fullConfig, win);\n };\n\n // Replay pre-existing entries when the run signal lands. The collector\n // strictly gates on() delivery: this fires only when the source is\n // started (`config.init === true` AND `config.require` empty). If a\n // require gate is unmet, the run event is queued in `queueOn` by\n // onApply and replayed when the source becomes started.\n const handleEvent = async (event: On.Types) => {\n if (event === 'run' && envWindow && pendingReplayCount > 0) {\n const win = envWindow as unknown as Record<string, unknown>;\n processExistingEvents(elb, fullConfig, pendingReplayCount, win);\n pendingReplayCount = 0;\n }\n };\n\n return {\n type: 'dataLayer',\n config: fullConfig,\n push: elb,\n on: handleEvent,\n init,\n destroy: async () => {\n // Cleanup: restore original dataLayer.push if possible\n const dataLayerName = settings.name || 'dataLayer';\n if (\n envWindow &&\n envWindow[dataLayerName] &&\n Array.isArray(envWindow[dataLayerName])\n ) {\n // Note: Complete restoration would require storing original push method\n // For now, we'll just document this limitation\n }\n },\n };\n};\n\nexport default sourceDataLayer;\n"],"mappings":"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","names":["push","trigger"]}
|
package/dist/walkerOS.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/web-source-datalayer",
|
|
3
3
|
"description": "DataLayer source for walkerOS",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.1.0-next-1778155282668",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.mjs",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"update": "npx npm-check-updates -u && npm update"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@walkeros/core": "4.
|
|
41
|
-
"@walkeros/collector": "4.
|
|
40
|
+
"@walkeros/core": "4.1.0-next-1778155282668",
|
|
41
|
+
"@walkeros/collector": "4.1.0-next-1778155282668"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/gtag.js": "^0.0.20"
|