@walkeros/web-source-browser 4.1.0-next-1778668930820 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +341 -0
- package/README.md +25 -114
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.d.mts +3 -17
- package/dist/index.d.ts +3 -17
- 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 +7 -14
- package/package.json +6 -4
package/dist/index.browser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Source=(()=>{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})},i={};r(i,{SourceBrowser:()=>wt,createTagger:()=>Mt,default:()=>Wt,examples:()=>kt,getAllEvents:()=>qe,getElbAttributeName:()=>Se,getElbValues:()=>$e,getEvents:()=>De,getGlobals:()=>Pe,sourceBrowser:()=>_t});var s=Object.defineProperty;((e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})})({},{Level:()=>c});var a,c=((a=c||{})[a.ERROR=0]="ERROR",a[a.WARN=1]="WARN",a[a.INFO=2]="INFO",a[a.DEBUG=3]="DEBUG",a);function l(e){return{_meta:{hops:0,path:[e]}}}var u={merge:!0,shallow:!0,extend:!0};function f(e,t={},n={}){n={...u,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(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!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function m(e){return"function"==typeof e}function h(e){return"object"==typeof e&&null!==e&&!d(e)&&"[object Object]"===Object.prototype.toString.call(e)}function b(e){return"string"==typeof e}function v(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]=v(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(v(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 y(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("."),i=[];for(const e of r){const o=y(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,void 0===r)break}return g(r)?r:n}function w(e,t,n){if(!h(e))return e;const o=v(e),r=t.split(".");let i=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return o}var k={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 x(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function j(e,t={},n={}){const o={...t,...n},r={};let i=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(i=!0))}),!!i&&r}function O(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function C(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(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function A(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function S(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 $=(e,t,n,o)=>{const r=`${c[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;i?s(r,t,n):s(r,t)};function q(e={}){return D({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 D(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,i=(e,o,i)=>{if(e<=t){const t=S(o,i);n?n(e,t.message,t.context,r,$):$(e,t.message,t.context,r)}};return{error:(e,t)=>i(0,e,t),warn:(e,t)=>i(1,e,t),info:(e,t)=>i(2,e,t),debug:(e,t)=>i(3,e,t),throw:(e,t)=>{const o=S(e,t);throw n?n(0,o.message,o.context,r,$):$(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>D({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function P(e){return function(e){return"boolean"==typeof e}(e)||b(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!g(e)||d(e)&&e.every(P)||h(e)&&Object.values(e).every(P)}function T(e){return P(e)?e:void 0}function R(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function L(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 I(e,t={},n={}){var o,r;if(!g(e))return;const i=h(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),s=null!=(r=n.event)?r:h(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:s,mapping:t,collector:n.collector,logger:n.collector.logger,consent:i},c=d(t)?t:[t];for(const t of c){const n=await L(M)(e,t,{...a,mapping:t});if(g(n))return n}}async function M(e,t,n){return(d(t)?t:[t]).reduce(async(t,o)=>{const r=await t;if(r)return r;const i=b(o)?{key:o}:o;if(!Object.keys(i).length)return;const{condition:s,consent:a,fn:c,key:l,loop:u,map:f,set:p,validate:m,value:h}=i,v={...n,mapping:o};if(s&&!await L(s)(e,v))return;if(a&&!j(a,v.consent))return h;let w=g(h)?h:e;if(c&&(w=await L(c)(e,v)),l&&(w=y(e,l,h)),u){const[t,n]=u,o="this"===t?[e]:await I(e,t,v);d(o)&&(w=(await Promise.all(o.map(e=>I(e,n,v)))).filter(g))}else f?w=await Object.entries(f).reduce(async(t,[n,o])=>{const r=await t,i=await I(e,o,v);return g(i)&&(r[n]=i),r},Promise.resolve({})):p&&(w=await Promise.all(p.map(t=>M(e,t,v))));m&&!await L(m)(w,v)&&(w=void 0);const k=T(w);return g(k)?k:T(h)},Promise.resolve(void 0))}async function N(e,t,n){var o;t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await I(e,o,{collector:n,event:e});e=w(e,t,r)}));const{eventMapping:r,mappingKey:i}=await async function(e,t,n){var o;const[r,i]=(e.name||"").split(" ");if(!t||!r||!i)return{};let s,a="",c=r,l=i;const u=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:h(e)&&e.consent||n.consent};return Boolean(t.condition(e,o))})};t[c]||(c="*");const f=t[c];return f&&(f[l]||(l="*"),s=u(f[l])),s||(c="*",l="*",s=u(null==(o=t[c])?void 0:o[l])),s&&(a=`${c} ${l}`),{eventMapping:s,mappingKey:a}}(e,t.mapping,n);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([t,o])=>{const r=await I(e,o,{collector:n,event:e});e=w(e,t,r)}));let s=t.data&&await I(e,t.data,{collector:n,event:e});const a=Boolean(null==r?void 0:r.silent);if(r){if(r.ignore)return{event:e,data:s,mapping:r,mappingKey:i,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await I(e,r.data,{collector:n,event:e});s=h(s)&&h(t)?f(s,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(k):t;for(const t of o){const o=k[t];if(!o)continue;const r=o(e);if(h(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&&(s=h(s)?f(t,s):null!=s?s:t)}return{event:e,data:s,mapping:r,mappingKey:i,ignore:!1,silent:a}}function _(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function W(e,t,n,o){return function(...r){let i;const s="pre"+t,a="post"+t,c=n[s],l=n[a],u=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{i=c({fn:e},...r)}catch(t){u(`Hook ${String(s)} failed, falling back to original function`,t),i=e(...r)}else i=e(...r);if(l)try{i=l({fn:e,result:i},...r)}catch(e){u(`Hook ${String(a)} failed, keeping original result`,e)}return i}}function H(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(H);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(H);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,i=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=y(e,t),o=i(n);return r?!o:o}}(e)}function U(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(function(e){return Array.isArray(e)&&e.length>0&&e.every(e=>{return"object"==typeof(t=e)&&null!==t&&!Array.isArray(t)&&("match"in t||"next"in t||"case"in t);var t})}(e))return U({case:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=U(n);void 0!==e&&t.push(e)}if(0===t.length)return;return{type:"sequence",value:t}}const t=e;if("next"in t&&void 0!==t.next)return t.match?{type:"gate",match:H(t.match),next:U(t.next)}:U(t.next);if("case"in t&&t.case){const e=t.case.map(e=>{var t;if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:U(e)};const n=e;return{match:n.match?H(n.match):()=>!0,next:null!=(t=U(n))?t:{type:"chain",value:[]}}});return t.match?{type:"gate",match:H(t.match),next:{type:"case",routes:e}}:{type:"case",routes:e}}return t.match?{type:"gate",match:H(t.match)}:void 0}function V(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;if("gate"===e.type){if(!e.match(t))return;return V(e.next,t)}if("sequence"===e.type){const n=[];for(const o of e.value){const e=V(o,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}for(const n of e.routes)if(n.match(t))return V(n.next,t)}}function B(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function G(e){var t;return{stop:null!=(t=e.stop)&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?H(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}function K(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const i=r.key.map(e=>{var t;return String(null!=(t=y(n,e))?t:"")});if(i.every(e=>""===e))return null;const s=i.join(":"),a=null!=o?o:e.namespace,c=a?`${a}:${s}`:s,l=t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:r}:{status:"MISS",key:c,rule:r}}function z(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,i]of Object.entries(t))r=w(r,e,await I(n,i,{collector:o}));return r}var Y=new Set(["code","package","before","next","cache","mapping","config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"]);function J(e){for(const t of Object.keys(e))if(!Y.has(t))return{ok:!1,code:"UNKNOWN_KEY",key:t,reason:`Unknown key "${t}". Allowed: ${[...Y].join(", ")}.`};return void 0!==e.code&&void 0!==e.package?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:{ok:!0}}var X={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 Q(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function Z(e){var t;const n={};for(const[o,r]of Object.entries(e)){const e=U(null==(t=r.config)?void 0:t.next);n[o]="static"===(null==e?void 0:e.type)||"chain"===(null==e?void 0:e.type)?{next:e.value}:{}}return n}function ee(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 te(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 ne(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),i={collector:e,logger:r,id:n,ingest:l(n),config:t.config,env:se(t.config.env)};r.debug("init");const s=await W(t.init,"TransformerInit",e.hooks,e.logger)(i);if(!1===s)return!1;t.config={...s||t.config,env:(null==s?void 0:s.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function oe(e,t,n,o,r,i){const s=t.type||"unknown",a=e.logger.scope(`transformer:${s}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...se(t.config.env),...i?{respond:i}:{}}};a.debug("push",{event:o.name});const l=await W(t.push,"TransformerPush",e.hooks,e.logger)(o,c);return a.debug("push done"),l}function re(e,t){var n;if(e)return null!=(n=V(U(e),t))?n:void 0}async function ie(e,t,n,o,r,i,s){var a,c,u,f,d,g,p;s&&(null==r?void 0:r._meta)&&(r._meta.chainPath=s);let m=o,h=i;for(const o of n){const i=t[o];if(!i){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:h};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await L(ne)(e,i,o))return e.logger.error(`Transformer init failed: ${o}`),{event:null,respond:h};if(s&&void 0!==(null==(c=null==(a=i.config)?void 0:a.chainMocks)?void 0:c[s])){const t=i.config.chainMocks[s];e.logger.scope(`transformer:${i.type||"unknown"}`).debug("chainMock",{chain:s}),m=t;continue}if(void 0!==(null==(u=i.config)?void 0:u.mock)){e.logger.scope(`transformer:${i.type||"unknown"}`).debug("mock"),m=i.config.mock;continue}if(null==(f=i.config)?void 0:f.disabled)continue;const b=null==(d=i.config)?void 0:d.cache,v=b?G(b):void 0,y=v?Q(v,e):void 0;let w;if(v&&y){const e=K(v,y,B(r,m));if("HIT"===(null==e?void 0:e.status)&&e.value){if(m=e.value,v.stop)return{event:m,respond:h,stopped:!0};continue}"MISS"===(null==e?void 0:e.status)&&(w={key:e.key,ttl:e.rule.ttl})}const k=i.config.before;if(k){const n=te(re(k,B(r,m)),Z(t));if(n.length>0){const o=await ie(e,t,n,m,r,h,s);if(null===o.event)return{event:null,respond:null!=(g=o.respond)?g:h};if(o.stopped)return{event:Array.isArray(o.event)?o.event[0]:o.event,respond:null!=(p=o.respond)?p:h,stopped:!0};o.respond&&(h=o.respond),m=Array.isArray(o.event)?o.event[0]:o.event}}const x=await L(oe,t=>(e.logger.scope(`transformer:${i.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,i,o,m,r,h);if(!1===x)return{event:null,respond:h};if(Array.isArray(x)){const i=n.slice(n.indexOf(o)+1),a=await Promise.all(x.map(async n=>{const o=n.event||m,a=r?{...r,_meta:{...r._meta,path:[...r._meta.path]}}:l("unknown");if(n.next){const r=re(n.next,B(a,o));if(r){const n=te(r,Z(t));if(n.length>0)return ie(e,t,n,o,a,h,s)}return{event:o,respond:h}}return i.length>0?ie(e,t,i,o,a,h,s):{event:o,respond:h}}));let c=h;const u=[];for(const e of a.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)?u.push(...t.event):u.push(t.event)}else u.push(e);return 0===u.length?{event:null,respond:c}:1===u.length?{event:u[0],respond:c}:{event:u,respond:c}}if(x&&"object"==typeof x){const{event:n,respond:o,next:i}=x;if(o&&(h=o),i){const o=re(i,B(r,m));if(!o){n&&(m=n);continue}const a=te(o,Z(t));return a.length>0?ie(e,t,a,n||m,r,h,s):(e.logger.warn(`Branch target not found: ${JSON.stringify(i)}`),{event:null,respond:h})}n&&(m=n)}w&&y&&z(y,w.key,m,w.ttl);const j=i.config.next?U(i.config.next):void 0,O="case"===(null==j?void 0:j.type)||"gate"===(null==j?void 0:j.type)||"sequence"===(null==j?void 0:j.type);if((!x||"object"==typeof x&&!x.next)&&j&&O){const n=V(j,B(r,m));if(n){const o=te(n,Z(t));if(o.length>0)return ie(e,t,o,m,r,h,s)}return{event:m,respond:h}}}return{event:m,respond:h}}function se(e){return e&&h(e)?e:{}}async function ae(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 L(t.on)(e,n)}function ce(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function le(e,t,n){var o;const{code:r,config:i={},env:s={},primary:a,next:c,before:u,cache:f}=n;let d,g=l(t);const p=f?G({...f,stop:null==(o=f.stop)||o}):void 0,m=U(c),h="static"!==(null==m?void 0:m.type)&&"chain"!==(null==m?void 0:m.type)||!m?void 0:te(V(m),Z(e.transformers)),b=U(u),v="static"!==(null==b?void 0:b.type)&&"chain"!==(null==b?void 0:b.type)||!b?void 0:te(V(b),Z(e.transformers)),y=e.logger.scope("source").scope(t),w={push:async(n,o={})=>{let r;const s=null!=v?v:b?te(V(b,B(g)),Z(e.transformers)):[];let a=[n];if(s.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await ie(e,e.transformers,s,n,g,d,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(d=o.respond),{ok:!0};o.respond&&(d=o.respond),a=Array.isArray(o.event)?o.event:[o.event]}if(p){const t=Q(p,e);if(t){const n=B(g),o=K(p,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&p.stop){let t=o.value;return o.rule.update&&(t=await F(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==d||d(t),{ok:!0}}if("MISS"===o.status&&p.stop&&d){const i=d,s=o.rule.update,a={...n,cache:{status:"MISS"}},c=o.key,l=o.rule.ttl;d=n=>{z(t,c,n,l),s?r=(async()=>{const t=await F(n,s,a,e);i(t)})():i(n)}}"MISS"!==o.status||p.stop||z(t,o.key,!0,o.rule.ttl)}}}const c=null!=h?h:m?te(V(m,B(g)),Z(e.transformers)):[];let l={ok:!0};for(const n of a)l=await e.push(n,{...o,id:t,ingest:g,respond:d,mapping:i,preChain:c});return r&&await r,l},command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:y,...s},k={collector:e,logger:y,id:t,config:i,env:w,setIngest:async n=>{if(!i.ingest)return void(g=l(t));const o=await I(n,i.ingest,{collector:e}),r=l(t);g={...r,...o,_meta:r._meta}},setRespond:e=>{d=e}},x=await L(r)(k);if(!x)return;const j=x.type||"unknown",O=e.logger.scope(j).scope(t);return w.logger=O,a&&(x.config={...x.config,primary:a}),x}function ue(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function fe(e,t,n,o,r){if(!t.on)return;const i=t.type||"unknown",s=e.logger.scope(i).scope("on").scope(o),a={collector:e,logger:s,id:n,config:t.config,data:r,env:we(t.env,t.config.env)};R(t.on)(o,a)}function de(e,t,n,o){let r;switch(t){case X.Commands.Consent:r=o||e.consent;break;case X.Commands.Session:r=e.session;break;case X.Commands.User:r=o||e.user;break;case X.Commands.Custom:r=o||e.custom;break;case X.Commands.Globals:r=o||e.globals;break;case X.Commands.Config:r=o||e.config;break;case X.Commands.Ready:case X.Commands.Run:default:r=void 0}if(n.length)switch(t){case X.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=ue(e,X.Commands.Consent);t.forEach(e=>{Object.keys(o).filter(t=>t in e).forEach(t=>{R(e[t])(o,r)})})}(e,n,o);break;case X.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=ue(e,X.Commands.Ready);t.forEach(e=>{R(e)(void 0,n)})}(e,n);break;case X.Commands.Run:!function(e,t){if(!e.allowed)return;const n=ue(e,X.Commands.Run);t.forEach(e=>{R(e)(void 0,n)})}(e,n);break;case X.Commands.Session:!function(e,t){if(!e.session)return;const n=ue(e,X.Commands.Session);t.forEach(t=>{R(t)(e.session,n)})}(e,n);break;default:{const o=ue(e,t);n.forEach(e=>{"function"==typeof e&&R(e)(r,o)});break}}}function ge(e,t,n,o){if(!e)return[];const r=V(null!=t?t:U(e),B(o));return r?te(r,n):[]}async function pe(e,t,n){const{code:o,config:r={},env:i={},before:s,next:a,cache:c}=t;if(!m(o.push))return ve({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const l=n||r||{init:!1};let u=s?{...l,before:s}:{...l};a&&(u={...u,next:a}),c&&(u={...u,cache:c});const f={...o,config:u,env:we(o.env,i)};let d=f.config.id;if(!d)do{d=C(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),me(e,void 0,{},{[d]:f})}async function me(e,t,n={},o){const{allowed:r,consent:i,globals:s,user:a}=e;if(!r)return ve({ok:!1});t&&(e.queue.push(t),e.status.in++),o||(o=e.destinations);const c=e.transformers?Z(e.transformers):{},u=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var u,d,g;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let p=(r.queuePush||[]).map(e=>({...e,consent:i}));r.queuePush=[],t&&p.push(v(t));const m=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:l("unknown");if(!p.length&&!(null==(u=r.queueOn)?void 0:u.length))return{id:o,destination:r,skipped:!0};if(!p.length&&(null==(d=r.queueOn)?void 0:d.length)){let t=!1;try{t=await he(e,r,o)}catch(t){const n=r.type||"unknown";e.logger.scope(n).error("Destination init threw",{error:t instanceof Error?t.message:String(t)})}return{id:o,destination:r,skipped:!t}}const h=[],b=p.filter(e=>{const t=j(r.config.consent,i,e.consent);return!t||(e.consent=t,h.push(e),!1)});if(r.queuePush.push(...b),!h.length)return{id:o,destination:r,queue:p};let y,w,k=!1;try{k=await he(e,r,o)}catch(t){const n=r.type||"unknown";e.logger.scope(n).error("Destination init threw",{error:t instanceof Error?t.message:String(t)})}if(!k)return{id:o,destination:r,queue:p};r.dlq||(r.dlq=[]);const x=r.config.before,O=ge(x,x&&Array.isArray(x)?U(x):void 0,c,m),C=r.config.next,E=C&&Array.isArray(C)?U(C):void 0,A=null==(g=r.config)?void 0:g.cache,S=A?G(A):void 0,$=S?Q(S,e):void 0;let q=0;return await Promise.all(h.map(async t=>{let i;if(t.globals=f(s,t.globals),t.user=f(a,t.user),(null==S?void 0:S.stop)&&$){const e=B(m,t),n=K(S,$,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(i={key:n.key,ttl:n.rule.ttl})}let l=t,u=n.respond;if(O.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ie(e,e.transformers,O,t,m,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(u=r.respond),l=Array.isArray(r.event)?r.event[0]:r.event}if(S&&!S.stop&&$){const e=B(m,l),n=K(S,$,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(i={key:n.key,ttl:n.rule.ttl})}const d=Date.now();let g=!1;const p=await L(be,t=>{const n=r.type||"unknown";e.logger.scope(n).error("Push failed",{error:t,event:l.name}),y=t,g=!0,r.dlq.push([l,t])})(e,r,o,l,m,u);if(q+=Date.now()-d,i&&$&&void 0===r.config.mock&&z($,i.key,null==p||p,i.ttl),void 0!==p&&(w=p),!g&&C){void 0!==p&&(m._response=p);const t=ge(C,E,c,m);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ie(e,e.transformers,t,l,m,u,`destination.${o}.next`);n.respond&&(u=n.respond)}}return t})),{id:o,destination:r,error:y,response:w,totalDuration:q}})),d={},g={},p={};for(const t of u){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,p[t.id]=n,o.failed++,o.lastAt=r,o.duration+=t.totalDuration||0,e.status.failed++):t.queue&&t.queue.length?g[t.id]=n:(d[t.id]=n,o.count++,o.lastAt=r,o.duration+=t.totalDuration||0,e.status.out++)}return ve({event:t,...Object.keys(d).length&&{done:d},...Object.keys(g).length&&{queued:g},...Object.keys(p).length&&{failed:p}})}async function he(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",i=e.logger.scope(r),s={collector:e,logger:i,id:n,config:t.config,env:we(t.env,t.config.env)};i.debug("init");const a=await W(t.init,"DestinationInit",e.hooks,e.logger)(s);if(!1===a)return a;if(t.config={...a||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:i}of o)fe(e,t,n,r,i)}i.debug("init done")}return!0}async function be(e,t,n,o,r,i){const{config:s}=t,a=await N(o,s,e);if(a.ignore)return!1;const c=t.type||"unknown",l=e.logger.scope(c),u={collector:e,logger:l,id:n,config:s,data:a.data,rule:a.mapping,ingest:r,env:{...we(t.env,s.env),...i?{respond:i}:{}}};if(void 0!==s.mock)return l.debug("mock",{event:a.event.name}),s.mock;const f=a.mapping,d=a.mappingKey||"* *";if(!(null==f?void 0:f.batch)||!t.pushBatch||void 0!==s.mock){l.debug("push",{event:a.event.name});const n=await W(t.push,"DestinationPush",e.hooks,e.logger)(a.event,u);return l.debug("push done"),n}{if(t.batches=t.batches||{},!t.batches[d]){const o={key:d,events:[],data:[]};t.batches[d]={batched:o,batchFn:E(()=>{const o=t.batches[d].batched,a={collector:e,logger:l,id:n,config:s,data:void 0,rule:f,ingest:r,env:{...we(t.env,s.env),...i?{respond:i}:{}}};l.debug("push batch",{events:o.events.length}),W(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,a),l.debug("push batch done"),o.events=[],o.data=[]},f.batch)}}const o=t.batches[d];o.batched.events.push(a.event),g(a.data)&&o.batched.data.push(a.data),o.batchFn()}return!0}function ve(e){return{ok:!(null==e?void 0:e.failed),...e}}function ye(e){const{code:t,config:n={},env:o={},cache:r}=e,{config:i}=ee(e,"before"),{config:s}=ee({...e,config:i},"next"),a={...t.config,...n,...s};r&&(a.cache=r);const c=we(t.env,o);return{...t,config:a,env:c}}function we(e,t){return e||t?t?e&&h(e)&&h(t)?{...e,...t}:t:e:{}}async function ke(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const i=o.destroy;if(!i)return;const s=o.type||"unknown",a=n.scope(s),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([i(c),new Promise((n,o)=>setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3))])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}});await Promise.allSettled(o)}async function xe(e,t,n,o){let r,i,s=!1;switch(t){case X.Commands.Config:h(n)&&(f(e.config,n,{shallow:!1}),i=n,s=!0);break;case X.Commands.Consent:if(h(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);i=t,s=!0}break;case X.Commands.Custom:h(n)&&(e.custom=f(e.custom,n),i=n,s=!0);break;case X.Commands.Destination:h(n)&&("code"in n&&h(n.code)?r=await pe(e,n,o):m(n.push)&&(r=await pe(e,{code:n},o)));break;case X.Commands.Globals:h(n)&&(e.globals=f(e.globals,n),i=n,s=!0);break;case X.Commands.On:b(n)&&await async function(e,t,n){const o=e.on,r=o[t]||[],i=d(n)?n:[n];i.forEach(e=>{r.push(e)}),o[t]=r,de(e,t,i)}(e,n,o);break;case X.Commands.Ready:s=!0;break;case X.Commands.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 me(e)}(e,n),s=!0;break;case X.Commands.Session:s=!0;break;case X.Commands.Shutdown:await async function(e){const t=e.logger;await ke(e.sources,"source",t),await ke(e.destinations,"destination",t),await ke(e.transformers,"transformer",t),await ke(e.stores,"store",t)}(e);break;case X.Commands.User:h(n)&&(f(e.user,n,{shallow:!1}),i=n,s=!0)}return s&&(await async function(e,t,n,o){var r,i;let s,a=n||[];switch(n||(a=e.on[t]||[]),t){case X.Commands.Consent:s=o||e.consent;break;case X.Commands.Session:s=e.session;break;case X.Commands.User:s=o||e.user;break;case X.Commands.Custom:s=o||e.custom;break;case X.Commands.Globals:s=o||e.globals;break;case X.Commands.Config:s=o||e.config;break;case X.Commands.Ready:case X.Commands.Run:default:s=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&&(ce(n)?!1===await L(n.on)(t,s)&&(c=!0):(n.queueOn=n.queueOn||[],n.queueOn.push({type:t,data:s})))}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:s});fe(e,o,n,t,s)}});for(const t of Object.values(e.sources))ce(t)&&(null==(i=t.queueOn)?void 0:i.length)&&await ae(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 i=null==(n=r.config)?void 0:n.require;if(!i)continue;const s=i.indexOf(t);if(-1===s)continue;if(i.splice(s,1),i.length>0)continue;delete e.pending.destinations[o];const a=ye(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[o]=a}}(e,t),de(e,t,a,o),!c}(e,t,void 0,i),r=await me(e)),r||ve({ok:!0})}function je(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:i=`${n} ${o}`,data:s={},context:a={},globals:c=e.globals,custom:l={},user:u=e.user,nested:f=[],consent:d=e.consent,id:g=O(),trigger:p="",entity:m=n,action:h=o,timing:b=0,source:v={type:"collector",schema:"4"}}=t;return{name:i,data:s,context:a,globals:c,custom:l,user:u,nested:f,consent:d,id:g,trigger:p,entity:m,action:h,timestamp:r,timing:b,source:v}}async function Oe(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}),i={...o.globalsStatic,...e.globals},s={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:i,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 a,c;s.push=function(e,t){return W(async(n,o={})=>await L(async()=>{var r;const i=Date.now(),{id:s,ingest:a,respond:c,mapping:u,preChain:f,include:d,exclude:g}=o;let p=c,m=n;const h=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,b=null!=a?a:l(s||"unknown");if(u){const t=await N(m,u,e);if(t.ignore)return ve({ok:!0});if(u.consent&&!j(u.consent,e.consent,t.event.consent))return ve({ok:!0});m=t.event}if((null==f?void 0:f.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ie(e,e.transformers,f,m,b,p,s?`source.${s}.next`:void 0);if(null===n.event)return ve({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),ve({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=je(e,o);return me(e,r,{id:s,ingest:b,respond:p},h)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-i}return null!=(r=o[0])?r:ve({ok:!0})}m=n.event}const v=t(m),y=je(e,v),w=await me(e,y,{id:s,ingest:b,respond:p},h);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-i}return w},()=>ve({ok:!1}))(),"Push",e.hooks,e.logger)}(s,e=>({timing:Math.round((Date.now()-s.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.0-next-1778668930820"},...e})),s.command=(c=xe,W(async(e,t,n)=>await L(async()=>await c(a,e,t,n),()=>ve({ok:!1}))(),"Command",(a=s).hooks,a.logger));const u=e.stores||{};if(s.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:i={},env:s={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:i,env:s},l=await t(c),u=l.get,f=l.set,d=l.delete;l.get=W(u,"StoreGet",e.hooks,e.logger),l.set=W(f,"StoreSet",e.hooks,e.logger),l.delete=W(d,"StoreDelete",e.hooks,e.logger),n[o]=l}return n}(s,u),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)}}}(u,s.stores,e),!s.stores.__cache){const e=new Map;s.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 s.destinations=await async function(e,t={}){var n,o;const r={};for(const[i,s]of Object.entries(t))(null==(o=null==(n=s.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[i]=s:r[i]=ye(s);return r}(s,e.destinations||{}),s.transformers=await async function(e,t={}){var n,o,r,i;const s={};for(const[a,c]of Object.entries(t)){const{code:t,env:u={}}=c,f=J(c);if(!f.ok){e.logger.warn(`Transformer ${a} invalid (${f.code}): ${f.reason}. Skipping.`);continue}const{config:d}=ee(c,"before"),{config:g}=ee({...c,config:d},"next"),p=Object.keys(u).length>0?{...g,env:u}:g,{cache:m}=c,h=m?{...p,cache:m}:p,b=e.logger.scope("transformer").scope(a),v={collector:e,logger:b,id:a,ingest:l(a),config:h,env:u},y=null!=t?t:e=>{const t=c.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o)){if("object"!=typeof r||null===r)continue;const o=r;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${a}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await N(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},w=await y(v);void 0!==c.before&&void 0===(null==(n=w.config)?void 0:n.before)&&(w.config={...null!=(o=w.config)?o:{},before:c.before}),void 0!==c.next&&void 0===(null==(r=w.config)?void 0:r.next)&&(w.config={...null!=(i=w.config)?i:{},next:c.next}),s[a]=w}return s}(s,e.transformers||{}),s}async function Ce(e){e=e||{};const t=await Oe(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,i,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const r=e.replace("walker ","");return o.command(r,t,n)}let a;if("string"==typeof e)a={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(a.data=t);else{if(!e||"object"!=typeof e)return ve({ok:!1});a=e,t&&"object"==typeof t&&!Array.isArray(t)&&(a.data={...a.data||{},...t})}return r&&"object"==typeof r&&(a.context=r),i&&Array.isArray(i)&&(a.nested=i),s&&"object"==typeof s&&(a.custom=s),o.push(a)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,i]of Object.entries(t)){const t=await le(e,r,i);if(!t)continue;const s=null==(n=i.config)?void 0:n.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];n.init&&await L(n.init.bind(n))(),n.config.init=!0,ce(n)&&await ae(0,n)}return o}(t,e.sources||{});const{consent:r,user:i,globals:s,custom:a}=e;r&&await t.command("consent",r),i&&await t.command("user",i),s&&Object.assign(t.globals,s),a&&Object.assign(t.custom,a),t.config.run&&await t.command("run");let c=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),u=l.find(e=>e.config.primary);return u?c=u.push:l.length>0&&(c=l[0].push),{collector:t,elb:c}}function Ee(e,t){return(e.getAttribute(t)||"").trim()}function Ae(e,t,n){const o=t.getComputedStyle(e);if("none"===o.display)return!1;if("visible"!==o.visibility)return!1;if(o.opacity&&Number(o.opacity)<.1)return!1;let r;const i=t.innerHeight,s=e.getBoundingClientRect(),a=s.height,c=s.y,l=c+a,u={x:s.x+e.offsetWidth/2,y:s.y+e.offsetHeight/2};if(a<=i){if(e.offsetWidth+s.width===0||e.offsetHeight+s.height===0)return!1;if(u.x<0)return!1;if(u.x>(n.documentElement.clientWidth||t.innerWidth))return!1;if(u.y<0)return!1;if(u.y>(n.documentElement.clientHeight||t.innerHeight))return!1;r=n.elementFromPoint(u.x,u.y)}else{const e=i/2;if(c<0&&l<e)return!1;if(l>i&&c>e)return!1;r=n.elementFromPoint(u.x,i/2)}if(r)do{if(r===e)return!0}while(r=r.parentElement);return!1}function Se(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function $e(e,t,n,o=!0){return We(Ee(t,Se(e,n,o))||"").reduce((e,n)=>{let[o,r]=He(n);if(!o)return e;if(r||(o.endsWith(":")&&(o=o.slice(0,-1)),r=""),r.startsWith("#")){r=r.slice(1);try{let e=t[r];e||"selected"!==r||(e=t.options[t.selectedIndex].text),r=String(e)}catch(e){r=""}}return o.endsWith("[]")?(o=o.slice(0,-2),d(e[o])||(e[o]=[]),e[o].push(x(r))):e[o]=x(r),e},{})}function qe(e,t=X.Commands.Prefix){var n;const o=e;if(!o)return[];let r=[];const i=X.Commands.Action,s=`[${Se(t,i,!1)}]`,a=e=>{Object.keys($e(t,e,i,!1)).forEach(n=>{r=r.concat(De(e,n,t))})};return o!==(o.ownerDocument||o)&&(null==(n=o.matches)?void 0:n.call(o,s))&&a(o),_e(o,s,a),r}function De(e,t,n=X.Commands.Prefix){const o=[],{actions:r,nearestOnly:i}=function(e,t,n){let o=t;for(;o;){const t=Ee(o,Se(e,X.Commands.Actions,!1));if(t){const e=Te(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=Ee(o,Se(e,X.Commands.Action,!1));if(r){const e=Te(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=Ie(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const s=We(r.actionParams||"",",").reduce((e,t)=>(e[_(t)]=!0,e),{}),a=Re(n,e,s,i);if(!a.length){const t="page",o=`[${Se(n,t)}]`,[r,i]=Me(e,o,n,t);a.push({entity:t,data:r,nested:[],context:i})}a.forEach(e=>{var n;o.push({entity:e.entity,action:r.action,data:e.data,trigger:t,context:e.context,nested:null!=(n=e.nested)?n:[]})})}),o):o}function Pe(e=X.Commands.Prefix,t){if(!t)return{};const n=Se(e,X.Commands.Globals,!1);let o={};return Ne(t,`[${n}]`,t=>{o=f(o,$e(e,t,X.Commands.Globals,!1))}),o}function Te(e){const t={};return We(e).forEach(e=>{const[n,o]=He(e),[r,i]=Ue(n);if(!r)return;let[s,a]=Ue(o||"");s=s||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:i,action:s,actionParams:a})}),t}function Re(e,t,n,o=!1){const r=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=Le(e,i,t,n);if(s&&(r.push(s),o))break;i=Ie(e,i)}return r}function Le(e,t,n,o){const r=Ee(t,Se(e));if(!r||o&&!o[r])return null;const i=[t],s=`[${Se(e,r)}],[${Se(e,"")}]`,a=Se(e,X.Commands.Link,!1);let c={};const l=[],[u,d]=Me(n||t,s,e,r);_e(t,`[${a}]`,n=>{const[o,r]=He(Ee(n,a));"parent"===r&&_e(t.ownerDocument.body,`[${a}="${o}:child"]`,t=>{i.push(t);const n=Le(e,t);n&&l.push(n)})});const g=[];i.forEach(e=>{e.matches(s)&&g.push(e),_e(e,s,e=>g.push(e))});let p={};return g.forEach(t=>{p=f(p,$e(e,t,"")),c=f(c,$e(e,t,r))}),c=f(f(p,c),u),i.forEach(t=>{_e(t,`[${Se(e)}]`,t=>{const n=Le(e,t);n&&l.push(n)})}),{entity:r,data:c,context:d,nested:l}}function Ie(e,t){const n=Se(e,X.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=He(Ee(t,n));if("child"===o){const o=t.ownerDocument;let r=null;return Ne(o,`[${n}="${e}:parent"]`,e=>{r||(r=e)}),r}}const o=t.ownerDocument.defaultView;return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof o.ShadowRoot?t.getRootNode().host:t.parentElement}function Me(e,t,n,o){let r={};const i={};let s=e;const a=`[${Se(n,X.Commands.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(r=f($e(n,s,""),r),r=f($e(n,s,o),r)),s.matches(a)&&(Object.entries($e(n,s,X.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=Ie(n,s);return[r,i]}function Ne(e,t,n){e.querySelectorAll(t).forEach(n)}function _e(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&_e(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&_e(e.shadowRoot,t,n)})}function We(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function He(e){const[t,n]=e.split(/:(.+)/,2);return[_(t),_(n)]}function Ue(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var Ve=new WeakMap,Be=new WeakMap,Ge=new WeakMap;function Ke(e){const t=Date.now();let n=Be.get(e);if(!n||t-n.lastChecked>500){n={isVisible:Ae(e,e.ownerDocument.defaultView,e.ownerDocument),lastChecked:t},Be.set(e,n)}return n.isVisible}function ze(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return R(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,i=Ge.get(e);if(!i)return;const s=i.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=Ve.get(r);if(!a||o-a.lastChecked>1e3){const e=r.ownerDocument.defaultView;a={isLarge:r.offsetHeight>e.innerHeight,lastChecked:o},Ve.set(r,a)}if(t.intersectionRatio>=.5||a.isLarge&&Ke(r)){const t=null==(n=i.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=r.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(Ke(r)){const o=null==(t=i.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await ft(o.context,r,o.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(r);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=Ge.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),Ve.delete(t),Be.delete(t)}(e,r)}},i.duration);i.timers.set(r,t)}return}}s&&(clearTimeout(s),i.timers.delete(r));const a=null==(o=i.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function Fe(e,t,n={multiple:!1}){var o;const r=e.settings.scope;if(!r)return;const i=Ge.get(r);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function Ye(e){if(!e)return;const t=Ge.get(e);t&&(t.observer&&t.observer.disconnect(),Ge.delete(e))}function Je(e,t,n,o,r,i,s){const{elb:a,settings:c}=e;if(b(t)&&t.startsWith("walker "))return a(t,n);if(h(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=Xe(n,t)}return!e.globals&&c.scope&&(e.globals=Pe(c.prefix,c.scope)),a(e)}const[l]=String(h(t)?t.name:t).split(" ");let u,f=h(n)?n:{},d={},g=!1;if(p(n)&&(u=n,g=!0),p(r)?u=r:h(r)&&Object.keys(r).length&&(d=r),u){const e=Re(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(g&&(f=e.data),e.context&&(d=e.context))}const m=c.scope?c.scope.ownerDocument||c.scope:void 0,v=null==m?void 0:m.defaultView;"page"===l&&v&&(f.id=f.id||v.location.pathname);const y=Pe(c.prefix,c.scope);return a({name:String(t||""),data:f,context:d,globals:y,nested:i,custom:s,trigger:b(o)?o:"",source:v&&m?Xe(v,m):void 0})}function Xe(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var Qe,Ze=[],et="click",tt="hover",nt="load",ot="pulse",rt="scroll",it="submit",st="impression",at="visible",ct="wait";function lt(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;n.addEventListener("click",R(function(t){pt.call(this,e,t)})),n.addEventListener("submit",R(function(t){mt.call(this,e,t)}))}(e,t)}function ut(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;Ze=[];const o=n;if(!o)return;Ye(o),function(e,t=1e3){Ge.has(e)||Ge.set(e,{observer:ze(e),timers:new WeakMap,duration:t})}(o,1e3);const r=Se(t.prefix,X.Commands.Action,!1),i=o.ownerDocument||o;o!==i&&dt(e,o,r,t);_e(o,`[${r}]`,n=>{dt(e,n,r,t)}),Ze.length&&function(e,t){const n=t.ownerDocument||t,o=n.defaultView,r=(e,t)=>e.filter(([e,n])=>{const r=o.scrollY+o.innerHeight,i=e.offsetTop;if(r<i)return!0;const s=e.clientHeight;return!(100*(1-(i+s-r)/(s||1))>=n)||(ft(t,e,rt),!1)});Qe||(Qe=function(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}(function(){Ze=r.call(t,Ze,e)}),t.addEventListener("scroll",Qe))}(e,o)}(e,t)}async function ft(e,t,n){const o=De(t,n,e.settings.prefix);return Promise.all(o.map(t=>Je(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function dt(e,t,n,o){const r=Ee(t,n);r&&Object.values(Te(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case tt:!function(e,t){t.addEventListener("mouseenter",R(function(t){const n=gt(t);n&&ft(e,n,tt)}))}(e,t);break;case nt:!function(e,t){ft(e,t,nt)}(e,t);break;case ot:!function(e,t,n=""){const o=t.ownerDocument;setInterval(()=>{o.hidden||ft(e,t,ot)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case rt:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;Ze.push([e,n])}(t,n.triggerParams);break;case st:Fe(e,t);break;case at:Fe(e,t,{multiple:!0});break;case ct:!function(e,t,n=""){setTimeout(()=>ft(e,t,ct),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}}))}function gt(e){var t;const n=null==(t=e.composedPath)?void 0:t.call(e),o=(null==n?void 0:n.length)?n[0]:e.target;if(o&&"object"==typeof o&&"tagName"in o)return o}function pt(e,t){const n=gt(t);n&&ft(e,n,et)}function mt(e,t){const n=gt(t);n&&ft(e,n,it)}function ht(e,t={}){var n;const o=t.name||"elbLayer",r=t.window,i=t.logger;if(!r)return;const s=r;s[o]||(s[o]=[]);const a=s[o],c=r.document;null==i||i.debug("initElbLayer enter",{layerName:o,queuedItems:a.length}),a.push=function(...n){if(yt(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return vt(e,t.prefix,o,c,i),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{vt(e,t.prefix,n,c,i)}),o},Array.isArray(a)&&a.length>0&&(null==i||i.debug("initElbLayer drain walker commands",{count:a.length}),function(e,t,n,o,r){const i="walker ",s=[...n],a=new Set;s.forEach((n,s)=>{const c=bt(n);if(!c)return;const l=c[0];!h(l)&&b(l)&&l.startsWith(i)&&(a.add(s),vt(e,t,c,o,r))});const c=[...a].sort((e,t)=>t-e);for(const e of c)n.splice(e,1);null==r||r.debug("drainWalkerCommands done",{consumed:a.size,remaining:n.length})}(e,null!=(n=t.prefix)?n:"data-elb",a,c,i))}function bt(e){const t=yt(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(!Array.isArray(t)||0===t.length)return null;if(1===t.length&&!t[0])return null;const o=t[0];return h(o)&&0===Object.keys(o).length||!h(o)&&b(o)&&""===o.trim()?null:t}function vt(e,t="data-elb",n,o,r){R(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||b(i)&&""===i.trim())return void(null==r||r.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(b(i)&&i.startsWith("walker "))return null==r||r.debug("pushCommand walker command",{action:i,data:s[0]}),void e(i,s[0]);null==r||r.debug("pushCommand event (translated)",{action:i,rest:s}),Je({elb:e,settings:{prefix:t,scope:o,pageview:!1,elb:"",elbLayer:!1}},i,...s)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return void(null==r||r.debug("pushCommand skipped (empty object)"));null==r||r.debug("pushCommand object event",{item:n}),e(n)}},e=>{null==r||r.warn("pushCommand failed",{error:e,item:n})})()}function yt(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var wt={},kt={};r(kt,{createTrigger:()=>Lt,env:()=>xt,step:()=>At,trigger:()=>It});var xt={};r(xt,{push:()=>Et});var jt=()=>{},Ot=()=>()=>Promise.resolve({ok:!0}),Ct={error:jt,warn:jt,info:jt,debug:jt,throw:e=>{throw"string"==typeof e?new Error(e):e},json:jt,scope:()=>Ct},Et={get push(){return Ot()},get command(){return Ot()},get elb(){return Ot()},get window(){return{addEventListener:jt,removeEventListener:jt,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:jt,removeEventListener:jt,querySelector:jt,querySelectorAll:()=>[],getElementById:jt,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:jt,getAttribute:jt,addEventListener:jt,removeEventListener:jt}),body:{appendChild:jt,removeChild:jt},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:Ct},At={};r(At,{clickEvent:()=>$t,contextAndGlobals:()=>Rt,dataAttributeTypes:()=>Tt,impressionEvent:()=>Dt,nestedEntities:()=>Pt,pageView:()=>St,submitEvent:()=>qt});var St={title:"Page view",description:"A page load trigger captures the current URL, title, and referrer as a walker page view event.",trigger:{type:"load",options:{url:"https://example.com/docs",title:"Documentation",referrer:"https://example.com/"}},in:"",out:[["elb",{name:"page view",data:{domain:"example.com",title:"Documentation",referrer:"https://example.com/",id:"/docs"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/docs",referrer:"https://example.com/"}}]]},$t={title:"Click event",description:"A button click with walker data attributes is captured as an entity action event with the mapped label data.",trigger:{type:"click",options:"button"},in:'<button data-elb="cta" data-elb-cta="label:Sign Up" data-elbaction="click:click">Sign Up</button>',out:[["elb",{name:"cta click",entity:"cta",action:"click",data:{label:"Sign Up"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},qt={title:"Submit event",description:"A form submit with walker data attributes produces a signup complete event carrying the selected plan.",trigger:{type:"submit",options:"form"},in:'<form data-elb="signup" data-elb-signup="plan:premium" data-elbaction="submit:complete"></form>',out:[["elb",{name:"signup complete",entity:"signup",action:"complete",data:{plan:"premium"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"submit"}]]},Dt={title:"Impression event",description:"An intersection observer impression on a div with walker attributes emits a banner view event.",trigger:{type:"impression",options:"div"},in:'<div data-elb="banner" data-elb-banner="type:promotional;position:sidebar" data-elbaction="impression:view"></div>',out:[["elb",{name:"banner view",entity:"banner",action:"view",data:{type:"promotional",position:"sidebar"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"impression"}]]},Pt={title:"Nested entities",description:"A page load produces a page view plus a product view whose nested size entity is captured on the product event.",trigger:{type:"load"},in:'<div data-elb="product" data-elb-product="id:SKU-42;name:Sneakers" data-elbaction="load:view"><div data-elb="size" data-elb-size="selected:large;inStock:true"></div></div>',out:[["elb",{name:"page view",data:{domain:"example.com",title:"",referrer:"",id:"/"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""}}],["elb",{name:"product view",entity:"product",action:"view",data:{id:"SKU-42",name:"Sneakers"},context:{},globals:{},nested:[{entity:"size",data:{selected:"large",inStock:!0},context:{},nested:[]}],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"load"}]]},Tt={title:"Data attribute types",description:"Walker data attributes parse scalar, boolean, and array values into typed fields on the emitted event.",trigger:{type:"click",options:"div"},in:'<div data-elb="product" data-elb-product="price:99.99;available:true;colors[]:red;colors[]:blue" data-elbaction="click:select"></div>',out:[["elb",{name:"product select",entity:"product",action:"select",data:{price:99.99,available:!0,colors:["red","blue"]},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},Rt={title:"Context and globals",description:"Walker context and globals attributes attach ambient metadata to events emitted by the browser source.",trigger:{type:"click",options:'[data-elb="cta"]'},in:'<div data-elbcontext="test:engagement_flow" data-elbglobals="language:en;plan:premium"><div data-elb="cta" data-elb-cta="label:Try Now" data-elbaction="click:signup">Try Now</div></div>',out:[["elb",{name:"cta signup",entity:"cta",action:"signup",data:{label:"Try Now"},context:{test:["engagement_flow",0]},globals:{language:"en",plan:"premium"},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},Lt=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let o;const r=document,i=window;return{get flow(){return o},trigger:(t,s)=>async a=>{var c;if("load"===t||!t){const e="object"==typeof s&&null!==s?s:{};if(e.url){const t=new URL(e.url);i.history.replaceState({},"",t.pathname)}e.title&&(r.title=e.title),e.referrer&&Object.defineProperty(r,"referrer",{value:e.referrer,configurable:!0})}if(a&&(r.body.innerHTML=a),!o){const t=await Ce({...e,run:null==(c=e.run)||c});o={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof s?s:void 0,u=l?r.querySelector(l):null;if(!u)return void console.warn(`Trigger: element not found for selector "${l}"`);const f=o.collector.sources[n];if(!f)return void console.warn(`Trigger: source "${n}" not found in collector`);const d={elb:o.elb,settings:f.config.settings};await ft(d,u,t)}}},It=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.document,r=t.window,i=()=>{var e,t;if(!n.attributes)return;const r=(null==(t=null==(e=n.element)?void 0:e.match(/^(\w+)/))?void 0:t[1])||"div",i=o.createElement(r);for(const[e,t]of Object.entries(n.attributes))i.setAttribute(e,t);if(n.children)for(const e of n.children){const t=o.createElement("div");for(const[n,o]of Object.entries(e))t.setAttribute(n,o);i.appendChild(t)}return o.body.appendChild(i),i};if(!n.trigger||"load"===n.trigger){if(n.url){const e=new URL(n.url);r.history.replaceState({},"",e.pathname)}return n.title&&(o.title=n.title),n.referrer&&Object.defineProperty(o,"referrer",{value:n.referrer}),void i()}return()=>{const e=i();if(e)switch(n.trigger){case"click":e.dispatchEvent(new MouseEvent("click",{bubbles:!0}));break;case"submit":e.dispatchEvent(new Event("submit",{bubbles:!0}));break;case"hover":e.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0}));break;case"scroll":r.dispatchEvent(new Event("scroll"))}}};function Mt(e={}){const t=e.prefix||"data-elb";return function(e){let n,o=e;const r={},i={},s={},a={},c={},l={};function u(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!g(e)||null===e)return"undefined";let t=String(e);return t=t.replace(/\\/g,"\\\\"),t=t.replace(/;/g,"\\;"),t=t.replace(/:/g,"\\:"),t=t.replace(/'/g,"\\'"),t}(t)}`).join(";")}const f={entity:e=>(n=e,o=e,f),data(e,t){const n=null!=o?o:"";return r[n]||(r[n]={}),b(e)?r[n][e]=t:Object.assign(r[n],e),f},action(e,t){if(b(e))if(g(t))i[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);i[t]=n}else i[e]=e;else Object.assign(i,e);return f},actions(e,t){if(b(e))if(g(t))s[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);s[t]=n}else s[e]=e;else Object.assign(s,e);return f},context:(e,t)=>(b(e)?a[e]=t:Object.assign(a,e),f),globals:(e,t)=>(b(e)?c[e]=t:Object.assign(c,e),f),link:(e,t)=>(b(e)?l[e]=t:Object.assign(l,e),f),get(){const e={};return n&&(e[t]=n),Object.entries(r).forEach(([n,o])=>{if(Object.keys(o).length>0){e[n?`${t}-${n}`:`${t}-`]=u(o)}}),Object.keys(i).length>0&&(e[`${t}action`]=u(i)),Object.keys(s).length>0&&(e[`${t}actions`]=u(s)),Object.keys(a).length>0&&(e[`${t}context`]=u(a)),Object.keys(c).length>0&&(e[`${t}globals`]=u(c)),Object.keys(l).length>0&&(e[`${t}link`]=u(l)),e}};return f}}var Nt,_t=async e=>{const{config:t,env:n,logger:o}=e,{elb:r,command:i,window:s,document:a}=n,c=(null==t?void 0:t.settings)||{},l=s||(void 0!==globalThis.window?globalThis.window:void 0),u=a||(void 0!==globalThis.document?globalThis.document:void 0),f=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(c,u),d={elb:r,settings:f},g=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,o=n.defaultView.location,r="page",i="body"in t?t.body:t,[s,a]=Me(i,`[${Se(e,r)}]`,e,r);return s.domain=o.hostname,s.title=n.title,s.referrer=n.referrer,o.search&&(s.search=o.search),o.hash&&(s.hash=o.hash),[s,a]}(e.prefix||"data-elb",e.scope);Je(d,"page view",t,"load",n)};return{type:"browser",config:{settings:f},push:(...e)=>{const[t,n,o,r,i,s]=e;return Je(d,t,n,o,r,i,s)},on:async e=>{if("run"===e)u&&l&&(ut(d,f),function(e,t,n,o){const r=b(t.elbLayer)?t.elbLayer:"elbLayer",i=t.prefix||"data-elb",s=n[r];if(!Array.isArray(s))return;const a=n.document;let c=-1;s.forEach((e,t)=>{const n=bt(e);n&&b(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<s.length;e++){const t=bt(s[e]);t&&l.push(t)}s.length=c+1,null==o||o.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>vt(e,i,t,a,o))}(r,f,l,o),g(f))},init:async()=>{l&&u&&(!1!==f.elbLayer&&r&&ht(r,{name:b(f.elbLayer)?f.elbLayer:"elbLayer",prefix:f.prefix,window:l,logger:o}),await async function(e,t,n){const o=()=>{e(t,n)},r=n.scope;if(!r)return void o();const i=r.ownerDocument||r;"loading"!==i.readyState?o():i.addEventListener("DOMContentLoaded",o)}(lt,d,f),b(f.elb)&&f.elb&&(l[f.elb]=(...e)=>{const[t,n,o,r,i,s]=e;return Je(d,t,n,o,r,i,s)}))},destroy:async()=>{u&&Ye(f.scope||u)}}},Wt=_t;return Nt=i,((r,i,s,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of n(i))o.call(r,c)||c===s||e(r,c,{get:()=>i[c],enumerable:!(a=t(i,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),Nt)})();
|
|
1
|
+
"use strict";var Source=(()=>{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})},i={};r(i,{SourceBrowser:()=>Gt,createTagger:()=>un,default:()=>gn,examples:()=>Ft,getAllEvents:()=>nt,getElbAttributeName:()=>et,getElbValues:()=>tt,getEvents:()=>ot,getGlobals:()=>rt,sourceBrowser:()=>fn});var s=Object.defineProperty,a=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})};function c(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}a({},{stepId:()=>c});function l(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}a({},{getDestination:()=>l});a({},{Level:()=>d});var u,d=((u=d||{})[u.ERROR=0]="ERROR",u[u.WARN=1]="WARN",u[u.INFO=2]="INFO",u[u.DEBUG=3]="DEBUG",u);function f(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}a({},{getTransformer:()=>f});function g(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}a({},{getSource:()=>g});function p(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}function m(e){return{_meta:{hops:0,path:[e]}}}a({},{getStore:()=>p});var h={merge:!0,shallow:!0,extend:!0};function v(e,t={},n={}){n={...h,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function y(e){return Array.isArray(e)}function b(e){return void 0!==e}function w(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function k(e){return"function"==typeof e}function x(e){return"object"==typeof e&&null!==e&&!y(e)&&"[object Object]"===Object.prototype.toString.call(e)}function O(e){return"string"==typeof e}function j(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]=j(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(j(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 C(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&y(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=C(e,t,n);i.push(o)}return i}if(r=x(r)||y(r)?r[t]:void 0,void 0===r)break}return b(r)?r:n}function E(e,t,n){if(!x(e))return e;const o=j(e),r=t.split(".");let i=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return o}var A={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 S(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function $(e,t={},n={}){const o={...t,...n},r={};let i=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(i=!0))}),!!i&&r}function q(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function P(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 D(e,t){var n;return"number"==typeof e?{wait:e}:e?{wait:null!=(n=e.wait)?n:t,size:e.size,age:e.age}:{wait:t}}function I(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function _(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=I(e)):n=e,void 0!==t&&(t instanceof Error?o.error=I(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=I(o.error))):o.value=t),{message:n,context:o}}var T=(e,t,n,o)=>{const r=`${d[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;i?s(r,t,n):s(r,t)};function M(e={}){return L({level:void 0!==e.level?(t=e.level,"string"==typeof t?d[t]:t):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var t}function L(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,i=(e,o,i)=>{if(e<=t){const t=_(o,i);n?n(e,t.message,t.context,r,T):T(e,t.message,t.context,r)}};return{error:(e,t)=>i(0,e,t),warn:(e,t)=>i(1,e,t),info:(e,t)=>i(2,e,t),debug:(e,t)=>i(3,e,t),throw:(e,t)=>{const o=_(e,t);throw n?n(0,o.message,o.context,r,T):T(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>L({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function N(e){return function(e){return"boolean"==typeof e}(e)||O(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!b(e)||y(e)&&e.every(N)||x(e)&&Object.values(e).every(N)}function R(e){return N(e)?e:void 0}function W(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function z(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())}}}var H=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function B(e,t={},n={}){var o,r;if(!b(e))return;const i=x(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),s=null!=(r=n.event)?r:x(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:s,mapping:t,collector:n.collector,logger:n.collector.logger,consent:i},c=y(t)?t:[t];for(const t of c){const o=await z(U,e=>{if(e instanceof H)throw e;n.collector&&n.collector.status.failed++,a.logger.error("mapping processing failed",{event:s,error:e})})(e,t,{...a,mapping:t});if(b(o))return o}}async function U(e,t,n){return(y(t)?t:[t]).reduce(async(t,o)=>{const r=await t;if(r)return r;const i=O(o)?{key:o}:o;if(!Object.keys(i).length)return;const{condition:s,consent:a,fn:c,key:l,loop:u,map:d,set:f,validate:g,value:p}=i,m={...n,mapping:o};if(s&&!await z(s,e=>{if(e instanceof H)throw e;return m.logger.error("mapping condition failed",{event:m.event,error:e}),!1})(e,m))return;if(a&&!$(a,m.consent))return p;let h=b(p)?p:e;if(c&&(h=await z(c,e=>{if(e instanceof H)throw e;m.logger.error("mapping fn failed",{event:m.event,error:e})})(e,m)),l&&(h=C(e,l,p)),u){const[t,n]=u,o="this"===t?[e]:await B(e,t,m);y(o)&&(h=(await Promise.all(o.map(e=>B(e,n,m)))).filter(b))}else d?h=await Object.entries(d).reduce(async(t,[n,o])=>{const r=await t,i=await B(e,o,m);return b(i)&&(r[n]=i),r},Promise.resolve({})):f&&(h=await Promise.all(f.map(t=>U(e,t,m))));g&&!await z(g,e=>{if(e instanceof H)throw e;return m.logger.error("mapping validate failed",{event:m.event,error:e}),!1})(h,m)&&(h=void 0);const v=R(h);return b(v)?v:R(p)},Promise.resolve(void 0))}async function V(e,t,n){var o;t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await B(e,o,{collector:n,event:e});e=E(e,t,r)}));const{eventMapping:r,mappingKey:i}=await async function(e,t,n){var o;const[r,i]=(e.name||"").split(" ");if(!t||!r||!i)return{};let s,a="",c=r,l=i;const u=t=>{if(t)return(y(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:x(e)&&e.consent||n.consent};return Boolean(t.condition(e,o))})};t[c]||(c="*");const d=t[c];return d&&(d[l]||(l="*"),s=u(d[l])),s||(c="*",l="*",s=u(null==(o=t[c])?void 0:o[l])),s&&(a=`${c} ${l}`),{eventMapping:s,mappingKey:a}}(e,t.mapping,n);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([t,o])=>{const r=await B(e,o,{collector:n,event:e});e=E(e,t,r)}));let s=t.data&&await B(e,t.data,{collector:n,event:e});const a=Boolean(null==r?void 0:r.silent);if(r){if(r.ignore)return{event:e,data:s,mapping:r,mappingKey:i,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await B(e,r.data,{collector:n,event:e});s=x(s)&&x(t)?v(s,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(A):t;for(const t of o){const o=A[t];if(!o)continue;const r=o(e);if(x(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&&(s=x(s)?v(t,s):null!=s?s:t)}return{event:e,data:s,mapping:r,mappingKey:i,ignore:!1,silent:a}}function G(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function F(e,t,n,o){return function(...r){let i;const s="pre"+t,a="post"+t,c=n[s],l=n[a],u=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{i=c({fn:e},...r)}catch(t){u(`Hook ${String(s)} failed, falling back to original function`,t),i=e(...r)}else i=e(...r);if(l)try{i=l({fn:e,result:i},...r)}catch(e){u(`Hook ${String(a)} failed, keeping original result`,e)}return i}}function K(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(K);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(K);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,i=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=C(e,t),o=i(n);return r?!o:o}}(e)}function Y(e){return e.map(e=>{var t,n;if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:null!=(t=J(e))?t:{type:"chain",value:[]}};const o=e;return{match:o.match?K(o.match):()=>!0,next:null!=(n=J(o))?n:{type:"chain",value:[]}}})}function J(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(function(e){return Array.isArray(e)&&e.length>0&&e.every(e=>{return"object"==typeof(t=e)&&null!==t&&!Array.isArray(t)&&("match"in t||"next"in t||"one"in t||"many"in t);var t})}(e))return J({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=J(n);void 0!==e&&t.push(e)}if(0===t.length)return;return{type:"sequence",value:t}}const t=e;if("next"in t&&void 0!==t.next)return t.match?{type:"gate",match:K(t.match),next:J(t.next)}:J(t.next);if("one"in t&&t.one){const e=Y(t.one);return t.match?{type:"gate",match:K(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Y(t.many);return t.match?{type:"gate",match:K(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:K(t.match)}:void 0}var X=new WeakMap;function Z(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=X.get(e);t?n=t:(n=J(e),n&&X.set(e,n))}else n=J(e);if(!n)return[];const o=Q(n,t);return void 0===o?[]:Array.isArray(o)?o:[o]}function Q(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;if("gate"===e.type){if(!e.match(t))return;return Q(e.next,t)}if("sequence"===e.type){const n=[];for(const o of e.value){const e=Q(o,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}if("many"===e.type){const n=[];for(const o of e.routes){if(!o.match(t))continue;const e=Q(o.next,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}for(const n of e.routes)if(n.match(t))return Q(n.next,t)}}function ee(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function te(e){var t;return{stop:null!=(t=e.stop)&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?K(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function ne(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const i=r.key.map(e=>{var t;return String(null!=(t=C(n,e))?t:"")});if(i.every(e=>""===e))return null;const s=i.join(":"),a=null!=o?o:e.namespace,c=a?`${a}:${s}`:s,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:r}:{status:"MISS",key:c,rule:r}}function oe(e,t,n,o){e.set(t,n,1e3*o)}async function re(e,t,n,o){if(!t)return e;let r=e;for(const[e,i]of Object.entries(t))r=E(r,e,await B(n,i,{collector:o}));return r}var ie={Source:["code","package","import","before","next","cache"],Transformer:["code","package","import","before","next","cache","mapping"],Destination:["code","package","import","before","next","cache"],Store:["code","package","import","cache"]},se=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],ae={Source:["primary"],Transformer:[],Destination:[],Store:[]},ce=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function le(e,t){const n=(o=t,new Set([...ie[o],...se,...ae[o]]));var o;for(const o of Object.keys(e))if(!n.has(o))return{ok:!1,code:"UNKNOWN_KEY",key:o,reason:`Unknown key "${o}" on ${t}. Allowed: ${[...n].sort().join(", ")}.`};const r=void 0!==e.package,i=void 0!==e.import,s=void 0!==e.code;return s&&"string"==typeof e.code?{ok:!1,code:"OBSOLETE_CODE_STRING",key:"code",reason:`code: "<name>" is no longer supported. Use import: "${e.code}" with the package field instead.`}:s&&("object"!=typeof e.code&&"function"!=typeof e.code||null===e.code||Array.isArray(e.code))?{ok:!1,code:"INVALID_CODE_SHAPE",key:"code",reason:"code must be an object ({ push, type?, init? }) or a resolved function value."}:s&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:s&&i?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:i&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!i||"string"==typeof e.import&&ce.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${ce.source}. Got: ${JSON.stringify(e.import)}.`}}var ue={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 de(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;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?n[o]={next:e}:n[o]={}}return n}function ge(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 pe(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 me(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),i={collector:e,logger:r,id:n,ingest:m(n),config:t.config,env:be(t.config.env)};r.debug("init");const s=await F(t.init,"TransformerInit",e.hooks,e.logger)(i);if(!1===s)return!1;t.config={...s||t.config,env:(null==s?void 0:s.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function he(e,t,n,o,r,i){const s=t.type||"unknown",a=e.logger.scope(`transformer:${s}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...be(t.config.env),...i?{respond:i}:{}}};a.debug("push",{event:o.name});const l=await F(t.push,"TransformerPush",e.hooks,e.logger)(o,c);return a.debug("push done"),l}function ve(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:m(t)}async function ye(e,t,n,o,r,i,s){var a,c,l,u,d,f,g,p;r||(r=m(null!=(a=n[0])?a:"chain")),s&&r._meta&&(r._meta.chainPath=s);let h=o,v=i;for(const o of n){const i=t[o];if(!i){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 z(me,t=>{if(t instanceof H)throw t;return e.status.failed++,e.logger.scope(`transformer:${i.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,i,o))return{event:null,respond:v};if(s&&void 0!==(null==(l=null==(c=i.config)?void 0:c.chainMocks)?void 0:l[s])){const t=i.config.chainMocks[s];e.logger.scope(`transformer:${i.type||"unknown"}`).debug("chainMock",{chain:s}),h=t;continue}if(void 0!==(null==(u=i.config)?void 0:u.mock)){e.logger.scope(`transformer:${i.type||"unknown"}`).debug("mock"),h=i.config.mock;continue}if(null==(d=i.config)?void 0:d.disabled)continue;const a=null==(f=i.config)?void 0:f.cache,m=a?te(a):void 0,y=m?de(m,e):void 0;let b;if(m&&y){const e=ee(r,h),t=await ne(m,y,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(h=t.value,m.stop)return{event:h,respond:v,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(b={key:t.key,ttl:t.rule.ttl})}const w=i.config.before;if(w){const n=Z(w,ee(r,h));if(1===n.length){const o=pe(n[0],fe(t));if(o.length>0){const n=await ye(e,t,o,h,r,v,s);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:v};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(p=n.respond)?p:v,stopped:!0};n.respond&&(v=n.respond),h=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>z(ye,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,pe(n,fe(t)),h,ve(r,n),void 0,s)))}const k=await z(he,t=>(e.logger.scope(`transformer:${i.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,i,o,h,r,v);if(!1===k)return{event:null,respond:v};if(Array.isArray(k)){const i=n.slice(n.indexOf(o)+1),a=await Promise.all(k.map(async n=>{const o=n.event||h,a=ve(r,"unknown");if(n.next){const r=Z(n.next,ee(a,o));if(0===r.length)return{event:o,respond:v};if(1===r.length){const n=pe(r[0],fe(t));return n.length>0?ye(e,t,n,o,a,v,s):{event:o,respond:v}}return(await Promise.all(r.map(n=>z(ye,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,pe(n,fe(t)),o,ve(a,n),void 0,s)))).map(e=>({event:e.event,respond:void 0}))}return i.length>0?ye(e,t,i,o,a,v,s):{event:o,respond:v}}));let c=v;const l=[];for(const e of a.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:i}=k;if(o&&(v=o),void 0!==i){const o=Z(i,ee(r,h));if(0===o.length){n&&(h=n);continue}if(1===o.length){const a=pe(o[0],fe(t));return a.length>0?ye(e,t,a,n||h,r,v,s):(e.logger.warn(`Branch target not found: ${JSON.stringify(i)}`),{event:null,respond:v})}return await Promise.all(o.map(o=>z(ye,t=>(e.logger.scope("transformer:many").error(`many branch ${o} failed`,{error:t}),{event:null,respond:void 0}))(e,t,pe(o,fe(t)),n||h,ve(r,o),void 0,s))),{event:null,respond:void 0}}n&&(h=n)}b&&y&&oe(y,b.key,h,b.ttl);const x=i.config.next,O="string"==typeof x||Array.isArray(x)&&x.every(e=>"string"==typeof e),j=void 0!==x&&!O;if((!k||"object"==typeof k&&!k.next)&&j){const n=Z(i.config.next,ee(r,h));if(1===n.length){const o=pe(n[0],fe(t));return o.length>0?ye(e,t,o,h,r,v,s):{event:h,respond:v}}return n.length>1?(await Promise.all(n.map(n=>z(ye,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,pe(n,fe(t)),h,ve(r,n),void 0,s))),{event:null,respond:void 0}):{event:h,respond:v}}}return{event:h,respond:v}}function be(e){return e&&x(e)?e:{}}function we(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function ke(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const i=t.queueOn;t.queueOn=[];const s=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of i)await z(t.on,t=>{if(t instanceof H)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,error:t})})(n,o)}function xe(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function Oe(e,t,n){var o;const{code:r,config:i={},env:s={},primary:a,next:c,before:l,cache:u}=n,d=u,f=d?te({...d,stop:null==(o=d.stop)||o}):void 0,g=we(c)?pe(c,fe(e.transformers)):void 0,p=we(l)?pe(l,fe(e.transformers)):void 0,h=s.push,v=null!=h?h:e.push,y=Boolean(h),b=async(n,o,r)=>{var s;let a;const u=null!=p?p:void 0!==l?(()=>{const t=Z(l,ee(r.ingest));return 0===t.length?[]:pe(1===t.length?t[0]:t,fe(e.transformers))})():[];let d=[n];if(u.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await ye(e,e.transformers,u,n,r.ingest,r.respond,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),d=Array.isArray(o.event)?o.event:[o.event]}if(f){const t=de(f,e);if(t){const n=ee(r.ingest),o=await ne(f,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&f.stop){let t=o.value;return o.rule.update&&(t=await re(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(s=r.respond)||s.call(r,t),{ok:!0}}if("MISS"===o.status&&f.stop&&r.respond){const i=r.respond,s=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{oe(t,l,n,u),s?a=(async()=>{const t=await re(n,s,c,e);i(t)})():i(n)};r.respond=d}"MISS"!==o.status||f.stop||oe(t,o.key,!0,o.rule.ttl)}}}const m=g?{kind:"single",preChain:g}:void 0!==c?(()=>{const t=Z(c,ee(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:pe(t[0],fe(e.transformers))}:{kind:"many",branches:t.map(t=>pe(t,fe(e.transformers)))}})():{kind:"single",preChain:[]};let h={ok:!0};for(const n of d)"many"===m.kind?(await Promise.all(m.branches.map((s,a)=>z(async()=>y?v(n):v(n,{...o,id:t,ingest:ve(r.ingest,`${t}.${a}`),respond:void 0,mapping:i,preChain:s}),t=>(e.logger.scope("source:many").error(`many branch ${a} failed`,{error:t}),{ok:!0}))())),h={ok:!0}):h=y?await v(n):await v(n,{...o,id:t,ingest:r.ingest,respond:r.respond,mapping:i,preChain:m.preChain});return a&&await a,h},w=async n=>{const o=m(t);if(!i.ingest||void 0===n)return o;const r=await B(n,i.ingest,{collector:e});return{...o,...r,_meta:o._meta}},k=e.logger.scope("source").scope(t),x={command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:k,...s,push:async(e,n={})=>{const o={ingest:m(t),respond:void 0};return b(e,n,o)}},O={collector:e,logger:k,id:t,config:i,env:x,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...x,push:(e,t={})=>b(e,t,o),ingest:o.ingest,respond:o.respond})}},j=await z(r,n=>{if(n instanceof H)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(O);if(!j)return;const C=j.type||"unknown",E=e.logger.scope(C).scope(t);return x.logger=E,a&&(j.config={...j.config,primary:a}),j}function je(e,t,n,o){if(n instanceof H)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}function Ce(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Ee(e,t,n,o,r){if(!t.on)return;const i=t.type||"unknown",s=e.logger.scope(i).scope("on").scope(o),a={collector:e,logger:s,id:n,config:t.config,data:r,env:Be(t.env,t.config.env)};W(t.on,t=>je(e,"destination",t,{destId:n,type:o}))(o,a)}function Ae(e,t,n,o){let r;switch(t){case ue.Commands.Consent:r=o||e.consent;break;case ue.Commands.Session:r=e.session;break;case ue.Commands.User:r=o||e.user;break;case ue.Commands.Custom:r=o||e.custom;break;case ue.Commands.Globals:r=o||e.globals;break;case ue.Commands.Config:r=o||e.config;break;case ue.Commands.Ready:case ue.Commands.Run:default:r=void 0}if(n.length)switch(t){case ue.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=Ce(e,ue.Commands.Consent);t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{W(t[n],t=>je(e,"consent",t,{key:n}))(o,r)})})}(e,n,o);break;case ue.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=Ce(e,ue.Commands.Ready);t.forEach(t=>{W(t,t=>je(e,"ready",t))(void 0,n)})}(e,n);break;case ue.Commands.Run:!function(e,t){if(!e.allowed)return;const n=Ce(e,ue.Commands.Run);t.forEach(t=>{W(t,t=>je(e,"run",t))(void 0,n)})}(e,n);break;case ue.Commands.Session:!function(e,t){if(!e.session)return;const n=Ce(e,ue.Commands.Session);t.forEach(t=>{W(t,t=>je(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Ce(e,t);n.forEach(n=>{"function"==typeof n&&W(n,n=>je(e,"generic",n,{type:t}))(r,o)});break}}}function Se(e,t,n,o){var r;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(r=n.onOverflow)?r:"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const i=[];for(;e.length>=n.max;)i.push(e.shift());return e.push(t),i.length>0&&o&&o(i),{appended:!0,dropped:i.length}}var $e=new WeakMap;function qe(e,t,n,o){$e.get(e)||($e.set(e,!0),t.warn(n,o))}function Pe(e){$e.delete(e)}var De=Object.freeze({batched:!0});function Ie(e){return e===De}function _e(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Te(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function Me(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const i=e.dropped[t];return i[n]=(null!=(r=i[n])?r:0)+o,i[n]}function Le(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return pe(e,t);if("string"==typeof e)return pe(e,t);const o=Z(e,ee(n));return 0===o.length?[]:1===o.length?pe(o[0],t):pe(o,t)}async function Ne(e,t,n={},o){var r,i,s,a,l,u;const{allowed:d,consent:f,globals:g,user:p}=e;if(!d)return ze({ok:!1});if(t){const n=e.config.queueMax;if(void 0===n)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const o=Se(e.queue,t,{max:n});if(o.dropped>0){const t=Me(e.status,c("collector"),"queue",o.dropped);qe(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Pe(e.queue);e.status.in++}o||(o=e.destinations);const h=e.transformers?fe(e.transformers):{},y=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var i,s,a,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let u=(r.queuePush||[]).map(e=>({...e,consent:f}));r.queuePush=[],t&&u.push(j(t));const d=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:m("unknown");if(!u.length&&!(null==(i=r.queueOn)?void 0:i.length))return{id:o,destination:r,skipped:!0};if(!u.length&&(null==(s=r.queueOn)?void 0:s.length)){let t=!1;try{t=await Re(e,r,o)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)})}return{id:o,destination:r,skipped:!t}}const y=[],b=u.filter(e=>{const t=$(r.config.consent,f,e.consent);return!t||(e.consent=t,y.push(e),!1)});if(b.length>0){const t=r.queuePush,n=r.config.id||o,i={max:null!=(a=r.config.queueMax)?a:1e3};let s=0;for(const e of b)s+=Se(t,e,i).dropped;if(s>0){Te(e,n);const o=Me(e.status,c("destination",n),"queue",s);qe(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:i.max,droppedCount:o})}else t.length<i.max&&Pe(t)}if(!y.length)return{id:o,destination:r,queue:u};let w,k,x=!1;try{x=await Re(e,r,o)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)})}if(!x)return{id:o,destination:r,queue:u};r.dlq||(r.dlq=[]);const O=Le(r.config.before,h,d),C=r.config.next,E=null==(l=r.config)?void 0:l.cache,A=E?te(E):void 0,S=A?de(A,e):void 0;let q=0,P=0;return await Promise.all(y.map(async t=>{let i;if(t.globals=v(g,t.globals),t.user=v(p,t.user),(null==A?void 0:A.stop)&&S){const e=ee(d,t),n=await ne(A,S,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(i={key:n.key,ttl:n.rule.ttl})}let s=t,a=n.respond;if(O.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ye(e,e.transformers,O,t,d,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),s=Array.isArray(r.event)?r.event[0]:r.event}if(A&&!A.stop&&S){const e=ee(d,s),n=await ne(A,S,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(i={key:n.key,ttl:n.rule.ttl})}const l=Date.now();let u=!1;const f=await z(We,t=>{var n;const i=r.type||"unknown";e.logger.scope(i).error("Push failed",{error:t,event:s.name}),w=t,u=!0;const a=r.dlq,l=r.config.id||o,d={max:null!=(n=r.config.dlqMax)?n:100},f=Se(a,[s,t],d);if(f.dropped>0){Te(e,l);const t=Me(e.status,c("destination",l),"dlq",f.dropped);qe(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:l,cap:d.max,droppedCount:t})}else a.length<d.max&&Pe(a)})(e,r,o,s,d,a);if(q+=Date.now()-l,i&&S&&void 0===r.config.mock&&oe(S,i.key,null==f||f,i.ttl),void 0===f||Ie(f)||(k=f),Ie(f)&&P++,!u&&C){void 0!==f&&(d._response=f);const t=Le(C,h,d);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ye(e,e.transformers,t,s,d,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:w,response:k,totalDuration:q,batchedCount:P,allowedCount:y.length}})),b={},w={},k={};for(const t of y){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};Te(e,t.id);const c=e.status.destinations[t.id],d=Date.now();if(c.queuePushSize=null!=(i=null==(r=n.queuePush)?void 0:r.length)?i:0,c.dlqSize=null!=(a=null==(s=n.dlq)?void 0:s.length)?a:0,t.error)o.error=t.error,k[t.id]=o,c.failed++,c.lastAt=d,c.duration+=t.totalDuration||0,e.status.failed++;else if(t.queue&&t.queue.length)w[t.id]=o;else{const n=null!=(l=t.batchedCount)?l:0,r=null!=(u=t.allowedCount)?u:0;(Math.max(0,r-n)>0||0===r)&&(b[t.id]=o,c.count++,c.lastAt=d,c.duration+=t.totalDuration||0,e.status.out++)}}return ze({event:t,...Object.keys(b).length&&{done:b},...Object.keys(w).length&&{queued:w},...Object.keys(k).length&&{failed:k}})}async function Re(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",i=e.logger.scope(r),s={collector:e,logger:i,id:n,config:t.config,env:Be(t.env,t.config.env)};i.debug("init");const a=await F(t.init,"DestinationInit",e.hooks,e.logger)(s);if(!1===a)return a;if(t.config={...a||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:i}of o)Ee(e,t,n,r,i)}i.debug("init done")}return!0}async function We(e,t,n,o,r,i){var s,a,l,u,d,f,g;const{config:p}=t,m=await V(o,p,e);if(m.ignore)return!1;const h=t.type||"unknown",v=e.logger.scope(h),y={collector:e,logger:v,id:n,config:p,data:m.data,rule:m.mapping,ingest:r,env:{...Be(t.env,p.env),...i?{respond:i}:{}}};if(void 0!==p.mock)return v.debug("mock",{event:m.event.name}),p.mock;const w=m.mapping,k=m.mappingKey||"* *";if((null==w?void 0:w.batch)&&t.pushBatch&&void 0===p.mock){if(t.batches=t.batches||{},!t.batches[k]){const o={key:k,entries:[],events:[],data:[]},r=_e(w.batch),i=_e(p.batch),g=null!=(a=null!=(s=r.wait)?s:i.wait)?a:3e4,m=null!=(u=null!=(l=r.size)?l:i.size)?u:1e3,h=null!=(f=null!=(d=r.age)?d:i.age)?f:3e4,y=Be(t.env,p.env),b=function(e,t=1e3,n=!1){const{wait:o,size:r,age:i}=D(t,1e3);let s,a,c=null,l=null,u=!1,d=[],f=0;const g=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),f=0,a=void 0},p=()=>{const t=a,n=d;if(g(),d=[],t)return s=e(...t),n.forEach(e=>e(s)),s;n.forEach(e=>e(void 0))},m=(...t)=>new Promise(g=>{const m=n&&!u;if(a=t,f+=1,d.push(g),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||p()},o),void 0===i||l||(l=setTimeout(()=>{l=null,p()},i)),void 0!==r&&f>=r)p();else if(m){u=!0,s=e(...t);const n=d;d=[],n.forEach(e=>e(s))}});return m.flush=()=>a||0!==d.length?new Promise(e=>{d.push(e),p()}):Promise.resolve(void 0),m.cancel=()=>{const e=d;d=[],g(),e.forEach(e=>e(void 0))},m.size=()=>f,m}(async()=>{var o;const r=t.batches[k].batched;if(0===r.entries.length)return;const i={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const s=i.entries[0],a={collector:e,logger:v,id:n,config:p,data:void 0,rule:s.rule,ingest:s.ingest,env:{...y,...s.respond?{respond:s.respond}:{}}};v.debug("push batch",{events:i.entries.length});const l=t.config.id||n,u=Te(e,l);let d=!0;await z(F(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger),n=>{var o;d=!1;const r=t.dlq=t.dlq||[],s={max:null!=(o=t.config.dlqMax)?o:100};let a=0;for(const e of i.entries)a+=Se(r,[e.event,n],s).dropped;if(a>0){const t=Me(e.status,c("destination",l),"dlq",a);qe(r,v,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:l,cap:s.max,droppedCount:t})}else r.length<s.max&&Pe(r);u.failed+=i.entries.length,u.dlqSize=r.length,e.status.failed+=i.entries.length,v.error("Push batch failed",{error:n instanceof Error?n.message:String(n),entries:i.entries.length})})(i,a),v.debug("push batch done"),u.inFlightBatch=Math.max(0,(null!=(o=u.inFlightBatch)?o:0)-i.entries.length),d&&(u.count+=i.entries.length,u.lastAt=Date.now(),e.status.out+=i.entries.length)},{wait:g,size:m,age:h});t.batches[k]={batched:o,batchFn:()=>{b()},flush:async()=>{await b.flush()}}}const o=t.batches[k];o.batched.entries.push({event:m.event,ingest:r,respond:i,rule:w,data:m.data}),o.batched.events.push(m.event),b(m.data)&&o.batched.data.push(m.data);const h=t.config.id||n,y=Te(e,h);return y.inFlightBatch=(null!=(g=y.inFlightBatch)?g:0)+1,o.batchFn(),De}{v.debug("push",{event:m.event.name});const n=await F(t.push,"DestinationPush",e.hooks,e.logger)(m.event,y);return v.debug("push done"),n}}function ze(e){return{ok:!(null==e?void 0:e.failed),...e}}function He(e){const{code:t,config:n={},env:o={},cache:r}=e,{config:i}=ge(e,"before"),{config:s}=ge({...e,config:i},"next"),a={...t.config,...n,...s};r&&(a.cache=r);const c=Be(t.env,o);return{...t,config:a,env:c}}function Be(e,t){return e||t?t?e&&x(e)&&x(t)?{...e,...t}:t:e:{}}async function Ue(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const i=o.destroy;if(!i)return;const s=o.type||"unknown",a=n.scope(s),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([i(c),new Promise((n,o)=>setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3))])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}});await Promise.allSettled(o)}async function Ve(e,t,n){let o,r,i=!1;switch(t){case ue.Commands.Config:x(n)&&(v(e.config,n,{shallow:!1}),r=n,i=!0);break;case ue.Commands.Consent:if(x(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=v(e.consent,n),{update:n}}(e,n);r=t,i=!0}break;case ue.Commands.Custom:x(n)&&(e.custom=v(e.custom,n),r=n,i=!0);break;case ue.Commands.Destination:x(n)&&"code"in n&&x(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:i,next:s,cache:a}=t;if(!k(n.push))return ze({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const c=o||{init:!1};let l=i?{...c,before:i}:{...c};s&&(l={...l,next:s}),a&&(l={...l,cache:a});const u={...n,config:l,env:Be(n.env,r)};let d=u.config.id;if(!d)do{d=P(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=u,!1!==u.config.queue&&(u.queuePush=[...e.queue]),Ne(e,void 0,{},{[d]:u})}(e,n));break;case ue.Commands.Globals:x(n)&&(e.globals=v(e.globals,n),r=n,i=!0);break;case ue.Commands.Hook:if(x(n)&&O(n.name)&&k(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,i=!0}break;case ue.Commands.On:if(x(n)&&O(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){const o=e.on,r=o[t]||[],i=y(n)?n:[n];i.forEach(e=>{r.push(e)}),o[t]=r,Ae(e,t,i)}(e,t,o)}break;case ue.Commands.Ready:i=!0;break;case ue.Commands.Run:o=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),t&&(t.consent&&(e.consent=v(e.consent,t.consent)),t.user&&(e.user=v(e.user,t.user)),t.globals&&(e.globals=v(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=v(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Ne(e)}(e,n),i=!0;break;case ue.Commands.Session:i=!0;break;case ue.Commands.Shutdown:await async function(e){const t=e.logger;await Ue(e.sources,"source",t),await Ue(e.destinations,"destination",t),await Ue(e.transformers,"transformer",t),await Ue(e.stores,"store",t)}(e);break;case ue.Commands.User:x(n)&&(v(e.user,n,{shallow:!1}),r=n,i=!0)}return i&&(await async function(e,t,n,o){var r,i;let s,a=n||[];switch(n||(a=e.on[t]||[]),t){case ue.Commands.Consent:s=o||e.consent;break;case ue.Commands.Session:s=e.session;break;case ue.Commands.User:s=o||e.user;break;case ue.Commands.Custom:s=o||e.custom;break;case ue.Commands.Globals:s=o||e.globals;break;case ue.Commands.Config:s=o||e.config;break;case ue.Commands.Ready:case ue.Commands.Run:default:s=void 0}let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(r=o.config.require)?void 0:r.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(xe(o)?!1===await z(o.on,o=>je(e,"source",o,{sourceId:n,type:t}))(t,s)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})))}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:s});Ee(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))xe(n)&&(null==(i=n.queueOn)?void 0:i.length)&&await ke(e,n,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 i=null==(n=r.config)?void 0:n.require;if(!i)continue;const s=i.indexOf(t);if(-1===s)continue;if(i.splice(s,1),i.length>0)continue;delete e.pending.destinations[o];const a=He(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[o]=a}}(e,t),Ae(e,t,a,o),!c}(e,t,void 0,r),o=await Ne(e)),o||ze({ok:!0})}function Ge(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:i=`${n} ${o}`,data:s={},context:a={},globals:c=e.globals,custom:l={},user:u=e.user,nested:d=[],consent:f=e.consent,id:g=q(),trigger:p="",entity:m=n,action:h=o,timing:v=0,source:y={type:"collector",schema:"4"}}=t;return{name:i,data:s,context:a,globals:c,custom:l,user:u,nested:d,consent:f,id:g,trigger:p,entity:m,action:h,timestamp:r,timing:v,source:y}}function Fe(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,i=null!=(n=e.lowWaterMark)?n:.8,s=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*i),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return s>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},s),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>r&&function(){if(c.size<=r)return;const e=c.size-a;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function Ke(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:i,storeId:s}=t,a={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},c=n.rules.map(e=>({match:e.match?K(e.match):()=>!0,ttl:e.ttl})),l=e=>`${r}:${e}`;function u(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return c.find(e=>e.match(n))}const d=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...a}},async get(t){const n=l(t),r=await o.get(n);if(void 0!==r)return a.hits++,r;const i=d.get(n);if(i)return a.inflight_dedups++,i;a.misses++;const s=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const i=u(t,r);if(i)try{await o.set(n,r,1e3*i.ttl),a.populates++}catch(e){f("set",t,e)}return r}finally{d.delete(n)}})();return d.set(n,s),s},async set(t,n,r){a.writes++,await e.set(t,n,r);const i=u(t,n);if(i)try{await o.set(l(t),n,1e3*i.ttl)}catch(e){f("set",t,e)}},async delete(t){a.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){f("delete",t,e)}}};function f(e,t,n){const o=`store-cache(${s}): cache ${e} failed for "${t}"; backing succeeded, continuing`;i?i.warn(o,{error:n}):console.warn(o,n)}}function Ye(e,t){const n=t.get,o=t.set,r=t.delete;t.get=F(n,"StoreGet",e.hooks,e.logger),t.set=F(o,"StoreSet",e.hooks,e.logger),t.delete=F(r,"StoreDelete",e.hooks,e.logger)}async function Je(e){var t,n;const o=v({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r=M({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),i={...o.globalsStatic,...e.globals},s={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:i,hooks:e.hooks||{},logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},push:void 0,command:void 0};var a,c;s.push=function(e,t){return F(async(n,o={})=>await z(async()=>{var r;const i=Date.now(),{id:s,ingest:a,respond:c,mapping:l,preChain:u,include:d,exclude:f}=o;let g=c,p=n;const h=d||f?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,f):void 0,v=null!=a?a:m(s||"unknown");if(l){const t=await V(p,l,e);if(t.ignore)return ze({ok:!0});if(l.consent&&!$(l.consent,e.consent,t.event.consent))return ze({ok:!0});p=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ye(e,e.transformers,u,p,v,g,s?`source.${s}.next`:void 0);if(null===n.event)return ze({ok:!0});if(n.stopped)return n.respond&&(g=n.respond),ze({ok:!0});if(n.respond&&(g=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=Ge(e,o);return Ne(e,r,{id:s,ingest:v,respond:g},h)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-i}return null!=(r=o[0])?r:ze({ok:!0})}p=n.event}const y=t(p),b=Ge(e,y),w=await Ne(e,b,{id:s,ingest:v,respond:g},h);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-i}return w},t=>{if(t instanceof H)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),ze({ok:!1})})(),"Push",e.hooks,e.logger)}(s,e=>({timing:Math.round((Date.now()-s.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.0"},...e})),s.command=(c=Ve,F(async(e,t,n)=>await z(async()=>await c(a,e,t,n),n=>{if(n instanceof H)throw n;return a.status.failed++,a.logger.error("command failed",{command:e,data:t,error:n}),ze({ok:!1})})(),"Command",(a=s).hooks,a.logger));const l=e.stores||{};return s.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:i={},env:s={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:i,env:s},l=await t(c);o[n]=l}const r=t,i=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(i){var s;const a=t[i];if("BLACK"===a)return;if("GRAY"===a){const e=o.indexOf(i),t=o.slice(-1===e?0:e).concat(i).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[i]="GRAY",o.push(i);const c=null==(s=e[i].cache)?void 0:s.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${i}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[i]="BLACK",n.push(i)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of i){const i=r[t].cache;if(!i)continue;let s,a;void 0!==i.store?(s=o[i.store],a=i.store):(o.__cache||(o.__cache=Fe()),s=o.__cache,a="__cache");const c=null!=(n=i.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=Ke(o[t],{storeId:t,cacheConfig:i,cacheStore:s,namespace:c,logger:e.logger.scope("store-cache").scope(t)})}for(const[t,n]of Object.entries(o))"__cache"!==t&&Ye(e,n);return o}(s,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,s.stores,e),s.stores.__cache||(s.stores.__cache=Fe()),s.destinations=await async function(e,t={}){var n,o;const r={};for(const[i,s]of Object.entries(t))(null==(o=null==(n=s.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[i]=s:r[i]=He(s);return r}(s,e.destinations||{}),s.transformers=await async function(e,t={}){var n,o,r,i;const s={};for(const[a,c]of Object.entries(t)){const{code:t,env:l={}}=c,u=le(c,"Transformer");if(!u.ok){e.logger.warn(`Transformer ${a} invalid (${u.code}): ${u.reason}. Skipping.`);continue}const{config:d}=ge(c,"before"),{config:f}=ge({...c,config:d},"next"),g=Object.keys(l).length>0?{...f,env:l}:f,{cache:p}=c,h=p?{...g,cache:p}:g,v=e.logger.scope("transformer").scope(a),y={collector:e,logger:v,id:a,ingest:m(a),config:h,env:l},b=null!=t?t:e=>{const t=c.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o)){if("object"!=typeof r||null===r)continue;const o=r;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${a}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await V(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},w=await b(y);void 0!==c.before&&void 0===(null==(n=w.config)?void 0:n.before)&&(w.config={...null!=(o=w.config)?o:{},before:c.before}),void 0!==c.next&&void 0===(null==(r=w.config)?void 0:r.next)&&(w.config={...null!=(i=w.config)?i:{},next:c.next}),s[a]=w}return s}(s,e.transformers||{}),s}async function Xe(e){e=e||{};const t=await Je(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,i)=>{if("string"==typeof e&&e.startsWith("walker ")){const n=e.replace("walker ","");return o.command(n,t)}let s;if("string"==typeof e)s={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(s.data=t);else{if(!e||"object"!=typeof e)return ze({ok:!1});s=e,t&&"object"==typeof t&&!Array.isArray(t)&&(s.data={...s.data||{},...t})}return n&&"object"==typeof n&&(s.context=n),r&&Array.isArray(r)&&(s.nested=r),i&&"object"==typeof i&&(s.custom=i),o.push(s)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,i]of Object.entries(t)){const t=await Oe(e,r,i);if(!t)continue;const s=null==(n=i.config)?void 0:n.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await z(n.init.bind(n),n=>{if(n instanceof H)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,xe(n)&&await ke(e,n,t))}return o}(t,e.sources||{});const{consent:r,user:i,globals:s,custom:a}=e;r&&await t.command("consent",r),i&&await t.command("user",i),s&&Object.assign(t.globals,s),a&&Object.assign(t.custom,a),t.config.run&&await t.command("run");let c=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),u=l.find(e=>e.config.primary);return u?c=u.push:l.length>0&&(c=l[0].push),{collector:t,elb:c}}function Ze(e,t){return(e.getAttribute(t)||"").trim()}function Qe(e,t,n){const o=t.getComputedStyle(e);if("none"===o.display)return!1;if("visible"!==o.visibility)return!1;if(o.opacity&&Number(o.opacity)<.1)return!1;let r;const i=t.innerHeight,s=e.getBoundingClientRect(),a=s.height,c=s.y,l=c+a,u={x:s.x+e.offsetWidth/2,y:s.y+e.offsetHeight/2};if(a<=i){if(e.offsetWidth+s.width===0||e.offsetHeight+s.height===0)return!1;if(u.x<0)return!1;if(u.x>(n.documentElement.clientWidth||t.innerWidth))return!1;if(u.y<0)return!1;if(u.y>(n.documentElement.clientHeight||t.innerHeight))return!1;r=n.elementFromPoint(u.x,u.y)}else{const e=i/2;if(c<0&&l<e)return!1;if(l>i&&c>e)return!1;r=n.elementFromPoint(u.x,i/2)}if(r)do{if(r===e)return!0}while(r=r.parentElement);return!1}function et(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function tt(e,t,n,o=!0){return ft(Ze(t,et(e,n,o))||"").reduce((e,n)=>{let[o,r]=gt(n);if(!o)return e;if(r||(o.endsWith(":")&&(o=o.slice(0,-1)),r=""),r.startsWith("#")){r=r.slice(1);try{let e=t[r];e||"selected"!==r||(e=t.options[t.selectedIndex].text),r=String(e)}catch(e){r=""}}return o.endsWith("[]")?(o=o.slice(0,-2),y(e[o])||(e[o]=[]),e[o].push(S(r))):e[o]=S(r),e},{})}function nt(e,t=ue.Commands.Prefix){var n;const o=e;if(!o)return[];let r=[];const i=ue.Commands.Action,s=`[${et(t,i,!1)}]`,a=e=>{Object.keys(tt(t,e,i,!1)).forEach(n=>{r=r.concat(ot(e,n,t))})};return o!==(o.ownerDocument||o)&&(null==(n=o.matches)?void 0:n.call(o,s))&&a(o),dt(o,s,a),r}function ot(e,t,n=ue.Commands.Prefix){const o=[],{actions:r,nearestOnly:i}=function(e,t,n){let o=t;for(;o;){const t=Ze(o,et(e,ue.Commands.Actions,!1));if(t){const e=it(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=Ze(o,et(e,ue.Commands.Action,!1));if(r){const e=it(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=ct(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const s=ft(r.actionParams||"",",").reduce((e,t)=>(e[G(t)]=!0,e),{}),a=st(n,e,s,i);if(!a.length){const t="page",o=`[${et(n,t)}]`,[r,i]=lt(e,o,n,t);a.push({entity:t,data:r,nested:[],context:i})}a.forEach(e=>{var n;o.push({entity:e.entity,action:r.action,data:e.data,trigger:t,context:e.context,nested:null!=(n=e.nested)?n:[]})})}),o):o}function rt(e=ue.Commands.Prefix,t){if(!t)return{};const n=et(e,ue.Commands.Globals,!1);let o={};return ut(t,`[${n}]`,t=>{o=v(o,tt(e,t,ue.Commands.Globals,!1))}),o}function it(e){const t={};return ft(e).forEach(e=>{const[n,o]=gt(e),[r,i]=pt(n);if(!r)return;let[s,a]=pt(o||"");s=s||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:i,action:s,actionParams:a})}),t}function st(e,t,n,o=!1){const r=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=at(e,i,t,n);if(s&&(r.push(s),o))break;i=ct(e,i)}return r}function at(e,t,n,o){const r=Ze(t,et(e));if(!r||o&&!o[r])return null;const i=[t],s=`[${et(e,r)}],[${et(e,"")}]`,a=et(e,ue.Commands.Link,!1);let c={};const l=[],[u,d]=lt(n||t,s,e,r);dt(t,`[${a}]`,n=>{const[o,r]=gt(Ze(n,a));"parent"===r&&dt(t.ownerDocument.body,`[${a}="${o}:child"]`,t=>{i.push(t);const n=at(e,t);n&&l.push(n)})});const f=[];i.forEach(e=>{e.matches(s)&&f.push(e),dt(e,s,e=>f.push(e))});let g={};return f.forEach(t=>{g=v(g,tt(e,t,"")),c=v(c,tt(e,t,r))}),c=v(v(g,c),u),i.forEach(t=>{dt(t,`[${et(e)}]`,t=>{const n=at(e,t);n&&l.push(n)})}),{entity:r,data:c,context:d,nested:l}}function ct(e,t){const n=et(e,ue.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=gt(Ze(t,n));if("child"===o){const o=t.ownerDocument;let r=null;return ut(o,`[${n}="${e}:parent"]`,e=>{r||(r=e)}),r}}const o=t.ownerDocument.defaultView;return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof o.ShadowRoot?t.getRootNode().host:t.parentElement}function lt(e,t,n,o){let r={};const i={};let s=e;const a=`[${et(n,ue.Commands.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(r=v(tt(n,s,""),r),r=v(tt(n,s,o),r)),s.matches(a)&&(Object.entries(tt(n,s,ue.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=ct(n,s);return[r,i]}function ut(e,t,n){e.querySelectorAll(t).forEach(n)}function dt(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&dt(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&dt(e.shadowRoot,t,n)})}function ft(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function gt(e){const[t,n]=e.split(/:(.+)/,2);return[G(t),G(n)]}function pt(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var mt=new WeakMap,ht=new WeakMap,vt=new WeakMap;function yt(e){const t=Date.now();let n=ht.get(e);if(!n||t-n.lastChecked>500){n={isVisible:Qe(e,e.ownerDocument.defaultView,e.ownerDocument),lastChecked:t},ht.set(e,n)}return n.isVisible}function bt(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return W(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,i=vt.get(e);if(!i)return;const s=i.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=mt.get(r);if(!a||o-a.lastChecked>1e3){const e=r.ownerDocument.defaultView;a={isLarge:r.offsetHeight>e.innerHeight,lastChecked:o},mt.set(r,a)}if(t.intersectionRatio>=.5||a.isLarge&&yt(r)){const t=null==(n=i.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=r.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(yt(r)){const o=null==(t=i.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await Lt(o.context,r,o.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(r);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=vt.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),mt.delete(t),ht.delete(t)}(e,r)}},i.duration);i.timers.set(r,t)}return}}s&&(clearTimeout(s),i.timers.delete(r));const a=null==(o=i.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function wt(e,t,n={multiple:!1}){var o;const r=e.settings.scope;if(!r)return;const i=vt.get(r);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function kt(e){if(!e)return;const t=vt.get(e);t&&(t.observer&&t.observer.disconnect(),vt.delete(e))}function xt(e,t,n,o,r,i,s){const{elb:a,settings:c}=e;if(O(t)&&t.startsWith("walker "))return a(t,n);if(x(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=Ot(n,t)}return!e.globals&&c.scope&&(e.globals=rt(c.prefix,c.scope)),a(e)}const[l]=String(x(t)?t.name:t).split(" ");let u,d=x(n)?n:{},f={},g=!1;if(w(n)&&(u=n,g=!0),w(r)?u=r:x(r)&&Object.keys(r).length&&(f=r),u){const e=st(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(g&&(d=e.data),e.context&&(f=e.context))}const p=c.scope?c.scope.ownerDocument||c.scope:void 0,m=null==p?void 0:p.defaultView;"page"===l&&m&&(d.id=d.id||m.location.pathname);const h=rt(c.prefix,c.scope);return a({name:String(t||""),data:d,context:f,globals:h,nested:i,custom:s,trigger:O(o)?o:"",source:m&&p?Ot(m,p):void 0})}function Ot(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var jt,Ct=[],Et="click",At="hover",St="load",$t="pulse",qt="scroll",Pt="submit",Dt="impression",It="visible",_t="wait";function Tt(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;n.addEventListener("click",W(function(t){Wt.call(this,e,t)})),n.addEventListener("submit",W(function(t){zt.call(this,e,t)}))}(e,t)}function Mt(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;Ct=[];const o=n;if(!o)return;kt(o),function(e,t=1e3){vt.has(e)||vt.set(e,{observer:bt(e),timers:new WeakMap,duration:t})}(o,1e3);const r=et(t.prefix,ue.Commands.Action,!1),i=o.ownerDocument||o;o!==i&&Nt(e,o,r,t);dt(o,`[${r}]`,n=>{Nt(e,n,r,t)}),Ct.length&&function(e,t){const n=t.ownerDocument||t,o=n.defaultView,r=(e,t)=>e.filter(([e,n])=>{const r=o.scrollY+o.innerHeight,i=e.offsetTop;if(r<i)return!0;const s=e.clientHeight;return!(100*(1-(i+s-r)/(s||1))>=n)||(Lt(t,e,qt),!1)});jt||(jt=function(e,t=1e3){const{wait:n}=D(t,1e3);let o=null;return function(...t){if(null===o)return o=setTimeout(()=>{o=null},n),e(...t)}}(function(){Ct=r.call(t,Ct,e)}),t.addEventListener("scroll",jt))}(e,o)}(e,t)}async function Lt(e,t,n){const o=ot(t,n,e.settings.prefix);return Promise.all(o.map(t=>xt(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function Nt(e,t,n,o){const r=Ze(t,n);r&&Object.values(it(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case At:!function(e,t){t.addEventListener("mouseenter",W(function(t){const n=Rt(t);n&&Lt(e,n,At)}))}(e,t);break;case St:!function(e,t){Lt(e,t,St)}(e,t);break;case $t:!function(e,t,n=""){const o=t.ownerDocument;setInterval(()=>{o.hidden||Lt(e,t,$t)},parseInt(n||"")||15e3)}(e,t,n.triggerParams);break;case qt:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;Ct.push([e,n])}(t,n.triggerParams);break;case Dt:wt(e,t);break;case It:wt(e,t,{multiple:!0});break;case _t:!function(e,t,n=""){setTimeout(()=>Lt(e,t,_t),parseInt(n||"")||15e3)}(e,t,n.triggerParams)}}))}function Rt(e){var t;const n=null==(t=e.composedPath)?void 0:t.call(e),o=(null==n?void 0:n.length)?n[0]:e.target;if(o&&"object"==typeof o&&"tagName"in o)return o}function Wt(e,t){const n=Rt(t);n&&Lt(e,n,Et)}function zt(e,t){const n=Rt(t);n&&Lt(e,n,Pt)}function Ht(e,t={}){var n;const o=t.name||"elbLayer",r=t.window,i=t.logger;if(!r)return;const s=r;s[o]||(s[o]=[]);const a=s[o],c=r.document;null==i||i.debug("initElbLayer enter",{layerName:o,queuedItems:a.length}),a.push=function(...n){if(Vt(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return Ut(e,t.prefix,o,c,i),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{Ut(e,t.prefix,n,c,i)}),o},Array.isArray(a)&&a.length>0&&(null==i||i.debug("initElbLayer drain walker commands",{count:a.length}),function(e,t,n,o,r){const i="walker ",s=[...n],a=new Set;s.forEach((n,s)=>{const c=Bt(n);if(!c)return;const l=c[0];!x(l)&&O(l)&&l.startsWith(i)&&(a.add(s),Ut(e,t,c,o,r))});const c=[...a].sort((e,t)=>t-e);for(const e of c)n.splice(e,1);null==r||r.debug("drainWalkerCommands done",{consumed:a.size,remaining:n.length})}(e,null!=(n=t.prefix)?n:"data-elb",a,c,i))}function Bt(e){const t=Vt(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(!Array.isArray(t)||0===t.length)return null;if(1===t.length&&!t[0])return null;const o=t[0];return x(o)&&0===Object.keys(o).length||!x(o)&&O(o)&&""===o.trim()?null:t}function Ut(e,t="data-elb",n,o,r){W(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||O(i)&&""===i.trim())return void(null==r||r.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(O(i)&&i.startsWith("walker "))return null==r||r.debug("pushCommand walker command",{action:i,data:s[0]}),void e(i,s[0]);null==r||r.debug("pushCommand event (translated)",{action:i,rest:s}),xt({elb:e,settings:{prefix:t,scope:o,pageview:!1,elb:"",elbLayer:!1}},i,...s)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return void(null==r||r.debug("pushCommand skipped (empty object)"));null==r||r.debug("pushCommand object event",{item:n}),e(n)}},e=>{null==r||r.warn("pushCommand failed",{error:e,item:n})})()}function Vt(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var Gt={},Ft={};r(Ft,{createTrigger:()=>cn,env:()=>Kt,step:()=>Qt,trigger:()=>ln});var Kt={};r(Kt,{push:()=>Zt});var Yt=()=>{},Jt=()=>()=>Promise.resolve({ok:!0}),Xt={error:Yt,warn:Yt,info:Yt,debug:Yt,throw:e=>{throw"string"==typeof e?new Error(e):e},json:Yt,scope:()=>Xt},Zt={get push(){return Jt()},get command(){return Jt()},get elb(){return Jt()},get window(){return{addEventListener:Yt,removeEventListener:Yt,location:{href:"https://example.com/page",pathname:"/page",search:"?query=test",hash:"#section",host:"example.com",hostname:"example.com",origin:"https://example.com",protocol:"https:"},document:{},navigator:{language:"en-US",userAgent:"Mozilla/5.0 (Test)"},screen:{width:1920,height:1080},innerWidth:1920,innerHeight:1080,pageXOffset:0,pageYOffset:0,scrollX:0,scrollY:0}},get document(){return{addEventListener:Yt,removeEventListener:Yt,querySelector:Yt,querySelectorAll:()=>[],getElementById:Yt,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:Yt,getAttribute:Yt,addEventListener:Yt,removeEventListener:Yt}),body:{appendChild:Yt,removeChild:Yt},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:Xt},Qt={};r(Qt,{clickEvent:()=>tn,contextAndGlobals:()=>an,dataAttributeTypes:()=>sn,impressionEvent:()=>on,nestedEntities:()=>rn,pageView:()=>en,submitEvent:()=>nn});var en={title:"Page view",description:"A page load trigger captures the current URL, title, and referrer as a walker page view event.",trigger:{type:"load",options:{url:"https://example.com/docs",title:"Documentation",referrer:"https://example.com/"}},in:"",out:[["elb",{name:"page view",data:{domain:"example.com",title:"Documentation",referrer:"https://example.com/",id:"/docs"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/docs",referrer:"https://example.com/"}}]]},tn={title:"Click event",description:"A button click with walker data attributes is captured as an entity action event with the mapped label data.",trigger:{type:"click",options:"button"},in:'<button data-elb="cta" data-elb-cta="label:Sign Up" data-elbaction="click:click">Sign Up</button>',out:[["elb",{name:"cta click",entity:"cta",action:"click",data:{label:"Sign Up"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},nn={title:"Submit event",description:"A form submit with walker data attributes produces a signup complete event carrying the selected plan.",trigger:{type:"submit",options:"form"},in:'<form data-elb="signup" data-elb-signup="plan:premium" data-elbaction="submit:complete"></form>',out:[["elb",{name:"signup complete",entity:"signup",action:"complete",data:{plan:"premium"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"submit"}]]},on={title:"Impression event",description:"An intersection observer impression on a div with walker attributes emits a banner view event.",trigger:{type:"impression",options:"div"},in:'<div data-elb="banner" data-elb-banner="type:promotional;position:sidebar" data-elbaction="impression:view"></div>',out:[["elb",{name:"banner view",entity:"banner",action:"view",data:{type:"promotional",position:"sidebar"},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"impression"}]]},rn={title:"Nested entities",description:"A page load produces a page view plus a product view whose nested size entity is captured on the product event.",trigger:{type:"load"},in:'<div data-elb="product" data-elb-product="id:SKU-42;name:Sneakers" data-elbaction="load:view"><div data-elb="size" data-elb-size="selected:large;inStock:true"></div></div>',out:[["elb",{name:"page view",data:{domain:"example.com",title:"",referrer:"",id:"/"},context:{},globals:{},nested:void 0,custom:void 0,trigger:"load",source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""}}],["elb",{name:"product view",entity:"product",action:"view",data:{id:"SKU-42",name:"Sneakers"},context:{},globals:{},nested:[{entity:"size",data:{selected:"large",inStock:!0},context:{},nested:[]}],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"load"}]]},sn={title:"Data attribute types",description:"Walker data attributes parse scalar, boolean, and array values into typed fields on the emitted event.",trigger:{type:"click",options:"div"},in:'<div data-elb="product" data-elb-product="price:99.99;available:true;colors[]:red;colors[]:blue" data-elbaction="click:select"></div>',out:[["elb",{name:"product select",entity:"product",action:"select",data:{price:99.99,available:!0,colors:["red","blue"]},context:{},globals:{},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},an={title:"Context and globals",description:"Walker context and globals attributes attach ambient metadata to events emitted by the browser source.",trigger:{type:"click",options:'[data-elb="cta"]'},in:'<div data-elbcontext="test:engagement_flow" data-elbglobals="language:en;plan:premium"><div data-elb="cta" data-elb-cta="label:Try Now" data-elbaction="click:signup">Try Now</div></div>',out:[["elb",{name:"cta signup",entity:"cta",action:"signup",data:{label:"Try Now"},context:{test:["engagement_flow",0]},globals:{language:"en",plan:"premium"},nested:[],source:{type:"browser",platform:"web",url:"https://example.com/",referrer:""},trigger:"click"}]]},cn=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let o;const r=document,i=window;return{get flow(){return o},trigger:(t,s)=>async a=>{var c;if("load"===t||!t){const e="object"==typeof s&&null!==s?s:{};if(e.url){const t=new URL(e.url);i.history.replaceState({},"",t.pathname)}e.title&&(r.title=e.title),e.referrer&&Object.defineProperty(r,"referrer",{value:e.referrer,configurable:!0})}if(a&&(r.body.innerHTML=a),!o){const t=await Xe({...e,run:null==(c=e.run)||c});o={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof s?s:void 0,u=l?r.querySelector(l):null;if(!u)return void console.warn(`Trigger: element not found for selector "${l}"`);const d=o.collector.sources[n];if(!d)return void console.warn(`Trigger: source "${n}" not found in collector`);const f={elb:o.elb,settings:d.config.settings};await Lt(f,u,t)}}},ln=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.document,r=t.window,i=()=>{var e,t;if(!n.attributes)return;const r=(null==(t=null==(e=n.element)?void 0:e.match(/^(\w+)/))?void 0:t[1])||"div",i=o.createElement(r);for(const[e,t]of Object.entries(n.attributes))i.setAttribute(e,t);if(n.children)for(const e of n.children){const t=o.createElement("div");for(const[n,o]of Object.entries(e))t.setAttribute(n,o);i.appendChild(t)}return o.body.appendChild(i),i};if(!n.trigger||"load"===n.trigger){if(n.url){const e=new URL(n.url);r.history.replaceState({},"",e.pathname)}return n.title&&(o.title=n.title),n.referrer&&Object.defineProperty(o,"referrer",{value:n.referrer}),void i()}return()=>{const e=i();if(e)switch(n.trigger){case"click":e.dispatchEvent(new MouseEvent("click",{bubbles:!0}));break;case"submit":e.dispatchEvent(new Event("submit",{bubbles:!0}));break;case"hover":e.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0}));break;case"scroll":r.dispatchEvent(new Event("scroll"))}}};function un(e={}){const t=e.prefix||"data-elb";return function(e){let n,o=e;const r={},i={},s={},a={},c={},l={};function u(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!b(e)||null===e)return"undefined";let t=String(e);return t=t.replace(/\\/g,"\\\\"),t=t.replace(/;/g,"\\;"),t=t.replace(/:/g,"\\:"),t=t.replace(/'/g,"\\'"),t}(t)}`).join(";")}const d={entity:e=>(n=e,o=e,d),data(e,t){const n=null!=o?o:"";return r[n]||(r[n]={}),O(e)?r[n][e]=t:Object.assign(r[n],e),d},action(e,t){if(O(e))if(b(t))i[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);i[t]=n}else i[e]=e;else Object.assign(i,e);return d},actions(e,t){if(O(e))if(b(t))s[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);s[t]=n}else s[e]=e;else Object.assign(s,e);return d},context:(e,t)=>(O(e)?a[e]=t:Object.assign(a,e),d),globals:(e,t)=>(O(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>(O(e)?l[e]=t:Object.assign(l,e),d),get(){const e={};return n&&(e[t]=n),Object.entries(r).forEach(([n,o])=>{if(Object.keys(o).length>0){e[n?`${t}-${n}`:`${t}-`]=u(o)}}),Object.keys(i).length>0&&(e[`${t}action`]=u(i)),Object.keys(s).length>0&&(e[`${t}actions`]=u(s)),Object.keys(a).length>0&&(e[`${t}context`]=u(a)),Object.keys(c).length>0&&(e[`${t}globals`]=u(c)),Object.keys(l).length>0&&(e[`${t}link`]=u(l)),e}};return d}}var dn,fn=async e=>{const{config:t,env:n,logger:o}=e,{elb:r,command:i,window:s,document:a}=n,c=(null==t?void 0:t.settings)||{},l=s||(void 0!==globalThis.window?globalThis.window:void 0),u=a||(void 0!==globalThis.document?globalThis.document:void 0),d=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(c,u),f={elb:r,settings:d},g=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,o=n.defaultView.location,r="page",i="body"in t?t.body:t,[s,a]=lt(i,`[${et(e,r)}]`,e,r);return s.domain=o.hostname,s.title=n.title,s.referrer=n.referrer,o.search&&(s.search=o.search),o.hash&&(s.hash=o.hash),[s,a]}(e.prefix||"data-elb",e.scope);xt(f,"page view",t,"load",n)};return{type:"browser",config:{settings:d},push:(...e)=>{const[t,n,o,r,i,s]=e;return xt(f,t,n,o,r,i,s)},on:async e=>{if("run"===e)u&&l&&(Mt(f,d),function(e,t,n,o){const r=O(t.elbLayer)?t.elbLayer:"elbLayer",i=t.prefix||"data-elb",s=n[r];if(!Array.isArray(s))return;const a=n.document;let c=-1;s.forEach((e,t)=>{const n=Bt(e);n&&O(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<s.length;e++){const t=Bt(s[e]);t&&l.push(t)}s.length=c+1,null==o||o.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>Ut(e,i,t,a,o))}(r,d,l,o),g(d))},init:async()=>{l&&u&&(!1!==d.elbLayer&&r&&Ht(r,{name:O(d.elbLayer)?d.elbLayer:"elbLayer",prefix:d.prefix,window:l,logger:o}),await async function(e,t,n){const o=()=>{e(t,n)},r=n.scope;if(!r)return void o();const i=r.ownerDocument||r;"loading"!==i.readyState?o():i.addEventListener("DOMContentLoaded",o)}(Tt,f,d),O(d.elb)&&d.elb&&(l[d.elb]=(...e)=>{const[t,n,o,r,i,s]=e;return xt(f,t,n,o,r,i,s)}))},destroy:async()=>{u&&kt(d.scope||u)}}},gn=fn;return dn=i,((r,i,s,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of n(i))o.call(r,c)||c===s||e(r,c,{get:()=>i[c],enumerable:!(a=t(i,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),dn)})();
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as _walkeros_core from '@walkeros/core';
|
|
2
1
|
import { Elb, WalkerOS, Collector, Source, Flow, Trigger as Trigger$1 } from '@walkeros/core';
|
|
3
2
|
import { z } from '@walkeros/core/dev';
|
|
4
3
|
import { DestinationWeb, Walker } from '@walkeros/web-core';
|
|
@@ -17,25 +16,16 @@ declare const SettingsSchema: z.ZodObject<{
|
|
|
17
16
|
|
|
18
17
|
type Scope$1 = Element | Document;
|
|
19
18
|
type Trigger = string;
|
|
20
|
-
interface BrowserPush<R = Promise<Elb.PushResult>> {
|
|
19
|
+
interface BrowserPush<R = Promise<Elb.PushResult>> extends Elb.WalkerCommands<R, Collector.Config> {
|
|
21
20
|
(event: WalkerOS.DeepPartialEvent): R;
|
|
22
|
-
(event: 'walker config', config: Partial<Collector.Config>): R;
|
|
23
|
-
(event: 'walker consent', consent: WalkerOS.Consent): R;
|
|
24
|
-
<K extends keyof _walkeros_core.Hooks.Functions>(event: 'walker hook', name: K, hookFn: _walkeros_core.Hooks.Functions[K]): R;
|
|
25
|
-
(event: 'walker user', user: WalkerOS.User): R;
|
|
26
21
|
(event: 'walker init', scope: Scope$1 | Scope$1[]): R;
|
|
27
|
-
(event: 'walker destination', destination: DestinationWeb.Destination | DestinationWeb.Init, config?: DestinationWeb.Config): R;
|
|
28
22
|
(event: 'walker run', state?: Partial<Collector.Instance>): R;
|
|
29
23
|
(event?: unknown, data?: BrowserPushData, options?: BrowserPushOptions, context?: BrowserPushContext, nested?: WalkerOS.Entities, custom?: WalkerOS.Properties): R;
|
|
30
24
|
}
|
|
31
25
|
type BrowserArguments<R = Promise<Elb.PushResult>> = (event?: unknown, data?: BrowserPushData, options?: BrowserPushOptions, context?: BrowserPushContext, nested?: WalkerOS.Entities, custom?: WalkerOS.Properties) => R;
|
|
32
26
|
type BrowserPushData = Elb.PushData | DestinationWeb.Destination | DestinationWeb.Init | Scope$1 | Array<Scope$1> | Trigger | string | object | IArguments;
|
|
33
|
-
type BrowserPushOptions = Trigger |
|
|
27
|
+
type BrowserPushOptions = Trigger | string | object;
|
|
34
28
|
type BrowserPushContext = WalkerOS.OrderedProperties | Element;
|
|
35
|
-
type BrowserCommands<R = Promise<Elb.PushResult>> = CommandInit<R> | CommandDestination<R> | CommandRun<R>;
|
|
36
|
-
type CommandInit<R = Promise<Elb.PushResult>> = (event: 'walker init', scope: Scope$1 | Scope$1[]) => R;
|
|
37
|
-
type CommandDestination<R = Promise<Elb.PushResult>> = (event: 'walker destination', destination: DestinationWeb.Destination | DestinationWeb.Init, config?: DestinationWeb.Config) => R;
|
|
38
|
-
type CommandRun<R = Promise<Elb.PushResult>> = (event: 'walker run', state?: Partial<Collector.Instance>) => R;
|
|
39
29
|
type PushResult = Elb.PushResult;
|
|
40
30
|
type Layer = Elb.Layer | IArguments;
|
|
41
31
|
|
|
@@ -79,14 +69,10 @@ interface ELBLayerConfig {
|
|
|
79
69
|
type Scope = Document | Element;
|
|
80
70
|
|
|
81
71
|
type index$1_BrowserArguments<R = Promise<Elb.PushResult>> = BrowserArguments<R>;
|
|
82
|
-
type index$1_BrowserCommands<R = Promise<Elb.PushResult>> = BrowserCommands<R>;
|
|
83
72
|
type index$1_BrowserPush<R = Promise<Elb.PushResult>> = BrowserPush<R>;
|
|
84
73
|
type index$1_BrowserPushContext = BrowserPushContext;
|
|
85
74
|
type index$1_BrowserPushData = BrowserPushData;
|
|
86
75
|
type index$1_BrowserPushOptions = BrowserPushOptions;
|
|
87
|
-
type index$1_CommandDestination<R = Promise<Elb.PushResult>> = CommandDestination<R>;
|
|
88
|
-
type index$1_CommandInit<R = Promise<Elb.PushResult>> = CommandInit<R>;
|
|
89
|
-
type index$1_CommandRun<R = Promise<Elb.PushResult>> = CommandRun<R>;
|
|
90
76
|
type index$1_Config = Config;
|
|
91
77
|
type index$1_Context = Context;
|
|
92
78
|
type index$1_ELBLayer = ELBLayer;
|
|
@@ -102,7 +88,7 @@ type index$1_Settings = Settings;
|
|
|
102
88
|
type index$1_Trigger = Trigger;
|
|
103
89
|
type index$1_Types = Types;
|
|
104
90
|
declare namespace index$1 {
|
|
105
|
-
export type { index$1_BrowserArguments as BrowserArguments, index$
|
|
91
|
+
export type { index$1_BrowserArguments as BrowserArguments, index$1_BrowserPush as BrowserPush, index$1_BrowserPushContext as BrowserPushContext, index$1_BrowserPushData as BrowserPushData, index$1_BrowserPushOptions as BrowserPushOptions, index$1_Config as Config, index$1_Context as Context, index$1_ELBLayer as ELBLayer, index$1_ELBLayerConfig as ELBLayerConfig, index$1_Env as Env, index$1_InitSettings as InitSettings, index$1_Layer as Layer, index$1_Mapping as Mapping, index$1_Push as Push, index$1_PushResult as PushResult, index$1_Scope as Scope, index$1_Settings as Settings, index$1_Trigger as Trigger, index$1_Types as Types };
|
|
106
92
|
}
|
|
107
93
|
|
|
108
94
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as _walkeros_core from '@walkeros/core';
|
|
2
1
|
import { Elb, WalkerOS, Collector, Source, Flow, Trigger as Trigger$1 } from '@walkeros/core';
|
|
3
2
|
import { z } from '@walkeros/core/dev';
|
|
4
3
|
import { DestinationWeb, Walker } from '@walkeros/web-core';
|
|
@@ -17,25 +16,16 @@ declare const SettingsSchema: z.ZodObject<{
|
|
|
17
16
|
|
|
18
17
|
type Scope$1 = Element | Document;
|
|
19
18
|
type Trigger = string;
|
|
20
|
-
interface BrowserPush<R = Promise<Elb.PushResult>> {
|
|
19
|
+
interface BrowserPush<R = Promise<Elb.PushResult>> extends Elb.WalkerCommands<R, Collector.Config> {
|
|
21
20
|
(event: WalkerOS.DeepPartialEvent): R;
|
|
22
|
-
(event: 'walker config', config: Partial<Collector.Config>): R;
|
|
23
|
-
(event: 'walker consent', consent: WalkerOS.Consent): R;
|
|
24
|
-
<K extends keyof _walkeros_core.Hooks.Functions>(event: 'walker hook', name: K, hookFn: _walkeros_core.Hooks.Functions[K]): R;
|
|
25
|
-
(event: 'walker user', user: WalkerOS.User): R;
|
|
26
21
|
(event: 'walker init', scope: Scope$1 | Scope$1[]): R;
|
|
27
|
-
(event: 'walker destination', destination: DestinationWeb.Destination | DestinationWeb.Init, config?: DestinationWeb.Config): R;
|
|
28
22
|
(event: 'walker run', state?: Partial<Collector.Instance>): R;
|
|
29
23
|
(event?: unknown, data?: BrowserPushData, options?: BrowserPushOptions, context?: BrowserPushContext, nested?: WalkerOS.Entities, custom?: WalkerOS.Properties): R;
|
|
30
24
|
}
|
|
31
25
|
type BrowserArguments<R = Promise<Elb.PushResult>> = (event?: unknown, data?: BrowserPushData, options?: BrowserPushOptions, context?: BrowserPushContext, nested?: WalkerOS.Entities, custom?: WalkerOS.Properties) => R;
|
|
32
26
|
type BrowserPushData = Elb.PushData | DestinationWeb.Destination | DestinationWeb.Init | Scope$1 | Array<Scope$1> | Trigger | string | object | IArguments;
|
|
33
|
-
type BrowserPushOptions = Trigger |
|
|
27
|
+
type BrowserPushOptions = Trigger | string | object;
|
|
34
28
|
type BrowserPushContext = WalkerOS.OrderedProperties | Element;
|
|
35
|
-
type BrowserCommands<R = Promise<Elb.PushResult>> = CommandInit<R> | CommandDestination<R> | CommandRun<R>;
|
|
36
|
-
type CommandInit<R = Promise<Elb.PushResult>> = (event: 'walker init', scope: Scope$1 | Scope$1[]) => R;
|
|
37
|
-
type CommandDestination<R = Promise<Elb.PushResult>> = (event: 'walker destination', destination: DestinationWeb.Destination | DestinationWeb.Init, config?: DestinationWeb.Config) => R;
|
|
38
|
-
type CommandRun<R = Promise<Elb.PushResult>> = (event: 'walker run', state?: Partial<Collector.Instance>) => R;
|
|
39
29
|
type PushResult = Elb.PushResult;
|
|
40
30
|
type Layer = Elb.Layer | IArguments;
|
|
41
31
|
|
|
@@ -79,14 +69,10 @@ interface ELBLayerConfig {
|
|
|
79
69
|
type Scope = Document | Element;
|
|
80
70
|
|
|
81
71
|
type index$1_BrowserArguments<R = Promise<Elb.PushResult>> = BrowserArguments<R>;
|
|
82
|
-
type index$1_BrowserCommands<R = Promise<Elb.PushResult>> = BrowserCommands<R>;
|
|
83
72
|
type index$1_BrowserPush<R = Promise<Elb.PushResult>> = BrowserPush<R>;
|
|
84
73
|
type index$1_BrowserPushContext = BrowserPushContext;
|
|
85
74
|
type index$1_BrowserPushData = BrowserPushData;
|
|
86
75
|
type index$1_BrowserPushOptions = BrowserPushOptions;
|
|
87
|
-
type index$1_CommandDestination<R = Promise<Elb.PushResult>> = CommandDestination<R>;
|
|
88
|
-
type index$1_CommandInit<R = Promise<Elb.PushResult>> = CommandInit<R>;
|
|
89
|
-
type index$1_CommandRun<R = Promise<Elb.PushResult>> = CommandRun<R>;
|
|
90
76
|
type index$1_Config = Config;
|
|
91
77
|
type index$1_Context = Context;
|
|
92
78
|
type index$1_ELBLayer = ELBLayer;
|
|
@@ -102,7 +88,7 @@ type index$1_Settings = Settings;
|
|
|
102
88
|
type index$1_Trigger = Trigger;
|
|
103
89
|
type index$1_Types = Types;
|
|
104
90
|
declare namespace index$1 {
|
|
105
|
-
export type { index$1_BrowserArguments as BrowserArguments, index$
|
|
91
|
+
export type { index$1_BrowserArguments as BrowserArguments, index$1_BrowserPush as BrowserPush, index$1_BrowserPushContext as BrowserPushContext, index$1_BrowserPushData as BrowserPushData, index$1_BrowserPushOptions as BrowserPushOptions, index$1_Config as Config, index$1_Context as Context, index$1_ELBLayer as ELBLayer, index$1_ELBLayerConfig as ELBLayerConfig, index$1_Env as Env, index$1_InitSettings as InitSettings, index$1_Layer as Layer, index$1_Mapping as Mapping, index$1_Push as Push, index$1_PushResult as PushResult, index$1_Scope as Scope, index$1_Settings as Settings, index$1_Trigger as Trigger, index$1_Types as Types };
|
|
106
92
|
}
|
|
107
93
|
|
|
108
94
|
/**
|