@walkeros/web-source-browser 4.1.1 → 4.1.3-next-1779963694449
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 +22 -0
- 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 +1 -0
- package/dist/index.d.ts +1 -0
- 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 +3 -3
- package/package.json +4 -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})},s={};r(s,{SourceBrowser:()=>Qt,__resetInstanceCountForTests:()=>bn,createTagger:()=>vn,default:()=>xn,examples:()=>en,getAllEvents:()=>st,getElbAttributeName:()=>ot,getElbValues:()=>rt,getEvents:()=>it,getGlobals:()=>at,sourceBrowser:()=>kn});var i=Object.defineProperty,a=(e,t)=>{for(var n in t)i(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 p(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}a({},{getSource:()=>p});function g(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:()=>g});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 s=e[o];return n.merge&&Array.isArray(s)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function 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 E(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("."),s=[];for(const e of r){const o=E(e,t,n);s.push(o)}return s}if(r=x(r)||y(r)?r[t]:void 0,void 0===r)break}return b(r)?r:n}function C(e,t,n){if(!x(e))return e;const o=j(e),r=t.split(".");let s=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return o}function S(e,t){if(!x(e)&&!y(e))return e;const n=j(e),o=t.split(".");let r=n;for(let e=0;e<o.length;e++){const t=o[e],s=e===o.length-1;if(y(r)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=r.length)return n;if(s)r.splice(e,1);else{const t=r[e];if(!x(t)&&!y(t))return n;r=t}}else if(s)delete r[t];else{const e=r[t];if(!x(e)&&!y(e))return n;r=e}}return n}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 I(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 s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(s=!0))}),!!s&&r}function q(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function D(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 T(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 P(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function M(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=P(e)):n=e,void 0!==t&&(t instanceof Error?o.error=P(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=P(o.error))):o.value=t),{message:n,context:o}}var _=(e,t,n,o)=>{const r=`${d[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,t,n):i(r,t)};function L(e={}){return N({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 N(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=t){const t=M(o,s);n?n(e,t.message,t.context,r,_):_(e,t.message,t.context,r)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const o=M(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=>N({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function R(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(R)||x(e)&&Object.values(e).every(R)}function W(e){return R(e)?e:void 0}function z(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function H(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 B=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function K(e,t={},n={}){var o,r;if(!b(e))return;const s=x(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=null!=(r=n.event)?r:x(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:i,mapping:t,collector:n.collector,logger:n.collector.logger,consent:s},c=y(t)?t:[t];for(const t of c){const o=await H(U,e=>{if(e instanceof B)throw e;n.collector&&n.collector.status.failed++,a.logger.error("mapping processing failed",{event:i,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 s=O(o)?{key:o}:o;if(!Object.keys(s).length)return;const{condition:i,consent:a,fn:c,key:l,loop:u,map:d,set:f,validate:p,value:g}=s,m={...n,mapping:o};if(i&&!await H(i,e=>{if(e instanceof B)throw e;return m.logger.error("mapping condition failed",{event:m.event,error:e}),!1})(e,m))return;if(a&&!$(a,m.consent))return g;let h=b(g)?g:e;if(c&&(h=await H(c,e=>{if(e instanceof B)throw e;m.logger.error("mapping fn failed",{event:m.event,error:e})})(e,m)),l&&(h=E(e,l,g)),u){const[t,n]=u,o="this"===t?[e]:await K(e,t,m);y(o)&&(h=(await Promise.all(o.map(e=>K(e,n,m)))).filter(b))}else d?h=await Object.entries(d).reduce(async(t,[n,o])=>{const r=await t,s=await K(e,o,m);return b(s)&&(r[n]=s),r},Promise.resolve({})):f&&(h=await Promise.all(f.map(t=>U(e,t,m))));p&&!await H(p,e=>{if(e instanceof B)throw e;return m.logger.error("mapping validate failed",{event:m.event,error:e}),!1})(h,m)&&(h=void 0);const v=W(h);return b(v)?v:W(g)},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 K(e,o,{collector:n,event:e});e=C(e,t,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,t,n){var o;const[r,s]=(e.name||"").split(" ");if(!t||!r||!s)return{};let i,a="",c=r,l=s;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="*"),i=u(d[l])),i||(c="*",l="*",i=u(null==(o=t[c])?void 0:o[l])),i&&(a=`${c} ${l}`),{eventMapping:i,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 K(e,o,{collector:n,event:e});e=C(e,t,r)}));let i=t.data&&await K(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:i,mapping:r,mappingKey:s,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await K(e,r.data,{collector:n,event:e});i=x(i)&&x(t)?v(i,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&&(i=x(i)?v(t,i):null!=i?i:t)}if((null==r?void 0:r.remove)&&x(i))for(const e of r.remove)i=S(i,e);return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,silent:a}}function G(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function F(e,t,n,o){const r=e;return function(...e){let s;const i="pre"+t,a="post"+t,c=n[i],l=n[a],u=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:r},...e)}catch(t){u(`Hook ${String(i)} failed, falling back to original function`,t),s=r(...e)}else s=r(...e);if(l)try{s=l({fn:r,result:s},...e)}catch(e){u(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function Y(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch(e){}}function J(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(J);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(J);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,s=function(e,t){switch(e){case"eq":return e=>String(null!=e?e:"")===t;case"contains":return e=>String(null!=e?e:"").includes(t);case"prefix":return e=>String(null!=e?e:"").startsWith(t);case"suffix":return e=>String(null!=e?e:"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(null!=t?t:""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,o);return e=>{const n=E(e,t),o=s(n);return r?!o:o}}(e)}function X(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=Z(e))?t:{type:"chain",value:[]}};const o=e;return{match:o.match?J(o.match):()=>!0,next:null!=(n=Z(o))?n:{type:"chain",value:[]}}})}function Z(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 Z({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=Z(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:J(t.match),next:Z(t.next)}:Z(t.next);if("one"in t&&t.one){const e=X(t.one);return t.match?{type:"gate",match:J(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=X(t.many);return t.match?{type:"gate",match:J(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:J(t.match)}:void 0}var Q=new WeakMap;function ee(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=Q.get(e);t?n=t:(n=Z(e),n&&Q.set(e,n))}else n=Z(e);if(!n)return[];const o=te(n,t);return void 0===o?[]:Array.isArray(o)?o:[o]}function te(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 te(e.next,t)}if("sequence"===e.type){const n=[];for(const o of e.value){const e=te(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=te(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 te(n.next,t)}}function ne(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function oe(e){var t;return{stop:null!=(t=e.stop)&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?J(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function re(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const s=r.key.map(e=>{var t;return String(null!=(t=E(n,e))?t:"")});if(s.every(e=>""===e))return null;const i=s.join(":"),a=null!=o?o:e.namespace,c=a?`${a}:${i}`:i,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:r}:{status:"MISS",key:c,rule:r}}function se(e,t,n,o){e.set(t,n,1e3*o)}async function ie(e,t,n,o){if(!t)return e;let r=e;for(const[e,s]of Object.entries(t))r=C(r,e,await K(n,s,{collector:o}));return r}var ae={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"]},ce=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],le={Source:["primary"],Transformer:[],Destination:[],Store:[]},ue=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function de(e,t){const n=(o=t,new Set([...ae[o],...ce,...le[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,s=void 0!==e.import,i=void 0!==e.code;return i&&"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.`}:i&&("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."}:i&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:i&&s?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:s&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!s||"string"==typeof e.import&&ue.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${ue.source}. Got: ${JSON.stringify(e.import)}.`}}var fe={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 pe(e,t){const n=e.status.startedAt;return{flowId:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n}}function ge(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function me(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 he(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 ve(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 ye(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:m(n),config:t.config,env:xe(t.config.env)};r.debug("init");const i=await F(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:(null==i?void 0:i.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function be(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),l={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...xe(t.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=Date.now();Y(e,pe(e,{stepId:c("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:d}));try{const r=await F(t.push,"TransformerPush",e.hooks,e.logger)(o,l),s=Date.now(),i=pe(e,{stepId:c("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s});return i.durationMs=s-d,i.outEvent=r,Y(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=pe(e,{stepId:c("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o});throw r.durationMs=o-d,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,r),t}}function we(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:m(t)}async function ke(e,t,n,o,r,s,i){var a,c,l,u,d,f,p,g;r||(r=m(null!=(a=n[0])?a:"chain")),i&&r._meta&&(r._meta.chainPath=i);let h=o,v=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:v};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await H(ye,t=>{if(t instanceof B)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,s,o))return{event:null,respond:v};if(i&&void 0!==(null==(l=null==(c=s.config)?void 0:c.chainMocks)?void 0:l[i])){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),h=t;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),h=s.config.mock;continue}if(null==(d=s.config)?void 0:d.disabled)continue;const a=null==(f=s.config)?void 0:f.cache,m=a?oe(a):void 0,y=m?ge(m,e):void 0;let b;if(m&&y){const e=ne(r,h),t=await re(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=s.config.before;if(w){const n=ee(w,ne(r,h));if(1===n.length){const o=ve(n[0],me(t));if(o.length>0){const n=await ke(e,t,o,h,r,v,i);if(null===n.event)return{event:null,respond:null!=(p=n.respond)?p:v};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(g=n.respond)?g: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=>H(ke,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ve(n,me(t)),h,we(r,n),void 0,i)))}const k=await H(be,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,h,r,v);if(!1===k)return{event:null,respond:v};if(Array.isArray(k)){const s=n.slice(n.indexOf(o)+1),a=await Promise.all(k.map(async n=>{const o=n.event||h,a=we(r,"unknown");if(n.next){const r=ee(n.next,ne(a,o));if(0===r.length)return{event:o,respond:v};if(1===r.length){const n=ve(r[0],me(t));return n.length>0?ke(e,t,n,o,a,v,i):{event:o,respond:v}}return(await Promise.all(r.map(n=>H(ke,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ve(n,me(t)),o,we(a,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?ke(e,t,s,o,a,v,i):{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:s}=k;if(o&&(v=o),void 0!==s){const o=ee(s,ne(r,h));if(0===o.length){n&&(h=n);continue}if(1===o.length){const a=ve(o[0],me(t));return a.length>0?ke(e,t,a,n||h,r,v,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:v})}return await Promise.all(o.map(o=>H(ke,t=>(e.logger.scope("transformer:many").error(`many branch ${o} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ve(o,me(t)),n||h,we(r,o),void 0,i))),{event:null,respond:void 0}}n&&(h=n)}b&&y&&se(y,b.key,h,b.ttl);const x=s.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=ee(s.config.next,ne(r,h));if(1===n.length){const o=ve(n[0],me(t));return o.length>0?ke(e,t,o,h,r,v,i):{event:h,respond:v}}return n.length>1?(await Promise.all(n.map(n=>H(ke,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ve(n,me(t)),h,we(r,n),void 0,i))),{event:null,respond:void 0}):{event:h,respond:v}}}return{event:h,respond:v}}function xe(e){return e&&x(e)?e:{}}function Oe(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function je(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const s=t.queueOn;t.queueOn=[];const i=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of s)await H(t.on,t=>{if(t instanceof B)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:i,type:n,error:t})})(n,o)}function Ee(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function Ce(e,t,n){var o;const{code:r,config:s={},env:i={},primary:a,next:c,before:l,cache:u}=n,d=u,f=d?oe({...d,stop:null==(o=d.stop)||o}):void 0,p=Oe(c)?ve(c,me(e.transformers)):void 0,g=Oe(l)?ve(l,me(e.transformers)):void 0,h=i.push,v=null!=h?h:e.push,y=Boolean(h),b=async(n,o,r)=>{var i;let a;const u=null!=g?g:void 0!==l?(()=>{const t=ee(l,ne(r.ingest));return 0===t.length?[]:ve(1===t.length?t[0]:t,me(e.transformers))})():[];let d=[n];if(u.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await ke(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=ge(f,e);if(t){const n=ne(r.ingest),o=await re(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 ie(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(i=r.respond)||i.call(r,t),{ok:!0}}if("MISS"===o.status&&f.stop&&r.respond){const s=r.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{se(t,l,n,u),i?a=(async()=>{const t=await ie(n,i,c,e);s(t)})():s(n)};r.respond=d}"MISS"!==o.status||f.stop||se(t,o.key,!0,o.rule.ttl)}}}const m=p?{kind:"single",preChain:p}:void 0!==c?(()=>{const t=ee(c,ne(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ve(t[0],me(e.transformers))}:{kind:"many",branches:t.map(t=>ve(t,me(e.transformers)))}})():{kind:"single",preChain:[]};let h={ok:!0};for(const n of d)"many"===m.kind?(await Promise.all(m.branches.map((i,a)=>H(async()=>y?v(n):v(n,{...o,id:t,ingest:we(r.ingest,`${t}.${a}`),respond:void 0,mapping:s,preChain:i}),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:s,preChain:m.preChain});return a&&await a,h},w=async n=>{const o=m(t);if(!s.ingest||void 0===n)return o;const r=await K(n,s.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,...i,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:s,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 H(r,n=>{if(n instanceof B)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(O);if(!j)return;const E=j.type||"unknown",C=e.logger.scope(E).scope(t);return x.logger=C,a&&(j.config={...j.config,primary:a}),j}function Se(e,t,n,o){if(n instanceof B)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}function Ae(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Ie(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:n,config:t.config,data:r,env:Ve(t.env,t.config.env)};z(t.on,t=>Se(e,"destination",t,{destId:n,type:o}))(o,a)}function $e(e,t,n,o){let r;switch(t){case fe.Commands.Consent:r=o||e.consent;break;case fe.Commands.Session:r=e.session;break;case fe.Commands.User:r=o||e.user;break;case fe.Commands.Custom:r=o||e.custom;break;case fe.Commands.Globals:r=o||e.globals;break;case fe.Commands.Config:r=o||e.config;break;case fe.Commands.Ready:case fe.Commands.Run:default:r=void 0}if(n.length)switch(t){case fe.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=Ae(e,fe.Commands.Consent);t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{z(t[n],t=>Se(e,"consent",t,{key:n}))(o,r)})})}(e,n,o);break;case fe.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=Ae(e,fe.Commands.Ready);t.forEach(t=>{z(t,t=>Se(e,"ready",t))(void 0,n)})}(e,n);break;case fe.Commands.Run:!function(e,t){if(!e.allowed)return;const n=Ae(e,fe.Commands.Run);t.forEach(t=>{z(t,t=>Se(e,"run",t))(void 0,n)})}(e,n);break;case fe.Commands.Session:!function(e,t){if(!e.session)return;const n=Ae(e,fe.Commands.Session);t.forEach(t=>{z(t,t=>Se(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Ae(e,t);n.forEach(n=>{"function"==typeof n&&z(n,n=>Se(e,"generic",n,{type:t}))(r,o)});break}}}function qe(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 s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var De=new WeakMap;function Te(e,t,n,o){De.get(e)||(De.set(e,!0),t.warn(n,o))}function Pe(e){De.delete(e)}var Me=Object.freeze({batched:!0});function _e(e){return e===Me}function Le(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Ne(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 Re(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(null!=(r=s[n])?r:0)+o,s[n]}function We(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ve(e,t);if("string"==typeof e)return ve(e,t);const o=ee(e,ne(n));return 0===o.length?[]:1===o.length?ve(o[0],t):ve(o,t)}async function ze(e,t,n={},o){var r,s,i,a,l,u;const{allowed:d,consent:f,globals:p,user:g}=e;if(!d)return Ke({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=qe(e.queue,t,{max:n});if(o.dropped>0){const t=Re(e.status,c("collector"),"queue",o.dropped);Te(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?me(e.transformers):{},y=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var s,i,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==(s=r.queueOn)?void 0:s.length))return{id:o,destination:r,skipped:!0};if(!u.length&&(null==(i=r.queueOn)?void 0:i.length)){let t=!1;try{t=await He(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(t=>{const n=$(r.config.consent,f,t.consent);if(n)return t.consent=n,y.push(t),!1;const s=pe(e,{stepId:c("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now()});return s.skipReason="consent",f&&(s.consent={...f}),r.config.consent&&(s.meta={required:{...r.config.consent}}),Y(e,s),!0});if(b.length>0){const t=r.queuePush,n=r.config.id||o,s={max:null!=(a=r.config.queueMax)?a:1e3};let i=0;for(const e of b)i+=qe(t,e,s).dropped;if(i>0){Ne(e,n);const o=Re(e.status,c("destination",n),"queue",i);Te(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&Pe(t)}if(!y.length)return{id:o,destination:r,queue:u};let w,k,x=!1;try{x=await He(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=We(r.config.before,h,d),E=r.config.next,C=null==(l=r.config)?void 0:l.cache,S=C?oe(C):void 0,A=S?ge(S,e):void 0;let I=0,q=0;return await Promise.all(y.map(async t=>{let s;if(t.globals=v(p,t.globals),t.user=v(g,t.user),(null==S?void 0:S.stop)&&A){const e=ne(d,t),n=await re(S,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let i=t,a=n.respond;if(O.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ke(e,e.transformers,O,t,d,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),i=Array.isArray(r.event)?r.event[0]:r.event}if(S&&!S.stop&&A){const e=ne(d,i),n=await re(S,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}const l=Date.now();let u=!1;const f=await H(Be,t=>{var n;const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:t,event:i.name}),w=t,u=!0;const a=r.dlq,l=r.config.id||o,d={max:null!=(n=r.config.dlqMax)?n:100},f=qe(a,[i,t],d);if(f.dropped>0){Ne(e,l);const t=Re(e.status,c("destination",l),"dlq",f.dropped);Te(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,i,d,a);if(I+=Date.now()-l,s&&A&&void 0===r.config.mock&&se(A,s.key,null==f||f,s.ttl),void 0===f||_e(f)||(k=f),_e(f)&&q++,!u&&E){void 0!==f&&(d._response=f);const t=We(E,h,d);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ke(e,e.transformers,t,i,d,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:w,response:k,totalDuration:I,batchedCount:q,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};Ne(e,t.id);const c=e.status.destinations[t.id],d=Date.now();if(c.queuePushSize=null!=(s=null==(r=n.queuePush)?void 0:r.length)?s:0,c.dlqSize=null!=(a=null==(i=n.dlq)?void 0:i.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 Ke({event:t,...Object.keys(b).length&&{done:b},...Object.keys(w).length&&{queued:w},...Object.keys(k).length&&{failed:k}})}async function He(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:n,config:t.config,env:Ve(t.env,t.config.env)};s.debug("init");const a=Date.now();let l;Y(e,pe(e,{stepId:c("destination",n),stepType:"destination",phase:"init",eventId:"",now:a}));try{l=await F(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),r=pe(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-a,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,r),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)Ie(e,t,n,r,s)}s.debug("init done")}return!0}async function Be(e,t,n,o,r,s){var i,a,l,u,d,f,p;const{config:g}=t,m=await V(o,g,e);if(m.ignore)return!1;const h=t.type||"unknown",v=e.logger.scope(h),y={collector:e,logger:v,id:n,config:g,data:m.data,rule:m.mapping,ingest:r,env:{...Ve(t.env,g.env),...s?{respond:s}:{}}};if(void 0!==g.mock)return v.debug("mock",{event:m.event.name}),g.mock;const w=m.mapping,k=m.mappingKey||"* *";if((null==w?void 0:w.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[k]){const o={key:k,entries:[],events:[],data:[]},r=Le(w.batch),s=Le(g.batch),p=null!=(a=null!=(i=r.wait)?i:s.wait)?a:3e4,m=null!=(u=null!=(l=r.size)?l:s.size)?u:1e3,h=null!=(f=null!=(d=r.age)?d:s.age)?f:3e4,y=Ve(t.env,g.env),b=function(e,t=1e3,n=!1){const{wait:o,size:r,age:s}=T(t,1e3);let i,a,c=null,l=null,u=!1,d=[],f=0;const p=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),f=0,a=void 0},g=()=>{const t=a,n=d;if(p(),d=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},m=(...t)=>new Promise(p=>{const m=n&&!u;if(a=t,f+=1,d.push(p),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||g()},o),void 0===s||l||(l=setTimeout(()=>{l=null,g()},s)),void 0!==r&&f>=r)g();else if(m){u=!0,i=e(...t);const n=d;d=[],n.forEach(e=>e(i))}});return m.flush=()=>a||0!==d.length?new Promise(e=>{d.push(e),g()}):Promise.resolve(void 0),m.cancel=()=>{const e=d;d=[],p(),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 s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const i=s.entries[0],a={collector:e,logger:v,id:n,config:g,data:void 0,rule:i.rule,ingest:i.ingest,env:{...y,...i.respond?{respond:i.respond}:{}}};v.debug("push batch",{events:s.entries.length});const l=t.config.id||n,u=Ne(e,l),d=Date.now(),f=pe(e,{stepId:c("destination",n),stepType:"destination",phase:"flush",eventId:"",now:d});f.batch={size:s.entries.length,index:0},Y(e,f);let p=!0;await H(F(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger),o=>{var r;p=!1;const i=Date.now(),a=pe(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:"",now:i});a.durationMs=i-d,a.error=o instanceof Error?{name:o.name,message:o.message}:{message:String(o)},a.batch={size:s.entries.length,index:0},Y(e,a);const f=t.dlq=t.dlq||[],g={max:null!=(r=t.config.dlqMax)?r:100};let m=0;for(const e of s.entries)m+=qe(f,[e.event,o],g).dropped;if(m>0){const t=Re(e.status,c("destination",l),"dlq",m);Te(f,v,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:l,cap:g.max,droppedCount:t})}else f.length<g.max&&Pe(f);u.failed+=s.entries.length,u.dlqSize=f.length,e.status.failed+=s.entries.length,v.error("Push batch failed",{error:o instanceof Error?o.message:String(o),entries:s.entries.length})})(s,a),v.debug("push batch done"),u.inFlightBatch=Math.max(0,(null!=(o=u.inFlightBatch)?o:0)-s.entries.length),p&&(u.count+=s.entries.length,u.lastAt=Date.now(),e.status.out+=s.entries.length)},{wait:p,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:s,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=Ne(e,h);return y.inFlightBatch=(null!=(p=y.inFlightBatch)?p:0)+1,o.batchFn(),Me}{v.debug("push",{event:m.event.name});const o="string"==typeof m.event.id?m.event.id:"",r=Date.now(),s=pe(e,{stepId:c("destination",n),stepType:"destination",phase:"in",eventId:o,now:r});m.mappingKey&&(s.mappingKey=m.mappingKey),m.event.consent&&(s.consent={...m.event.consent}),Y(e,s);try{const s=await F(t.push,"DestinationPush",e.hooks,e.logger)(m.event,y),i=Date.now(),a=pe(e,{stepId:c("destination",n),stepType:"destination",phase:"out",eventId:o,now:i});return a.durationMs=i-r,a.outEvent=s,m.mappingKey&&(a.mappingKey=m.mappingKey),Y(e,a),v.debug("push done"),s}catch(t){const s=Date.now(),i=pe(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:o,now:s});throw i.durationMs=s-r,i.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},m.mappingKey&&(i.mappingKey=m.mappingKey),Y(e,i),t}}}function Ke(e){return{ok:!(null==e?void 0:e.failed),...e}}function Ue(e){const{code:t,config:n={},env:o={},cache:r}=e,{config:s}=he(e,"before"),{config:i}=he({...e,config:s},"next"),a={...t.config,...n,...i};r&&(a.cache=r);const c=Ve(t.env,o);return{...t,config:a,env:c}}function Ve(e,t){return e||t?t?e&&x(e)&&x(t)?{...e,...t}:t:e:{}}async function Ge(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=n.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(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 Fe(e,t,n){let o,r,s=!1;switch(t){case fe.Commands.Config:x(n)&&(v(e.config,n,{shallow:!1}),r=n,s=!0);break;case fe.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,s=!0}break;case fe.Commands.Custom:x(n)&&(e.custom=v(e.custom,n),r=n,s=!0);break;case fe.Commands.Destination:x(n)&&"code"in n&&x(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a}=t;if(!k(n.push))return Ke({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const c=o||{init:!1};let l=s?{...c,before:s}:{...c};i&&(l={...l,next:i}),a&&(l={...l,cache:a});const u={...n,config:l,env:Ve(n.env,r)};let d=u.config.id;if(!d)do{d=D(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=u,!1!==u.config.queue&&(u.queuePush=[...e.queue]),ze(e,void 0,{},{[d]:u})}(e,n));break;case fe.Commands.Globals:x(n)&&(e.globals=v(e.globals,n),r=n,s=!0);break;case fe.Commands.Hook:if(x(n)&&O(n.name)&&k(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case fe.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]||[],s=y(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,$e(e,t,s)}(e,t,o)}break;case fe.Commands.Ready:s=!0;break;case fe.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 ze(e)}(e,n),s=!0;break;case fe.Commands.Session:s=!0;break;case fe.Commands.Shutdown:await async function(e){const t=e.logger;await Ge(e.sources,"source",t),await Ge(e.destinations,"destination",t),await Ge(e.transformers,"transformer",t),await Ge(e.stores,"store",t)}(e);break;case fe.Commands.User:x(n)&&(v(e.user,n,{shallow:!1}),r=n,s=!0)}return s&&(await async function(e,t,n,o){var r,s;let i,a=n||[];switch(n||(a=e.on[t]||[]),t){case fe.Commands.Consent:i=o||e.consent;break;case fe.Commands.Session:i=e.session;break;case fe.Commands.User:i=o||e.user;break;case fe.Commands.Custom:i=o||e.custom;break;case fe.Commands.Globals:i=o||e.globals;break;case fe.Commands.Config:i=o||e.config;break;case fe.Commands.Ready:case fe.Commands.Run:default:i=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&&(Ee(o)?!1===await H(o.on,o=>Se(e,"source",o,{sourceId:n,type:t}))(t,i)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:i})))}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:i});Ie(e,o,n,t,i)}});for(const[t,n]of Object.entries(e.sources))Ee(n)&&(null==(s=n.queueOn)?void 0:s.length)&&await je(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 s=null==(n=r.config)?void 0:n.require;if(!s)continue;const i=s.indexOf(t);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[o];const a=Ue(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[o]=a}}(e,t),$e(e,t,a,o),!c}(e,t,void 0,r),o=await ze(e)),o||Ke({ok:!0})}function Ye(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");const{timestamp:r=Date.now(),name:s=`${n} ${o}`,data:i={},context:a={},globals:c=e.globals,custom:l={},user:u=e.user,nested:d=[],consent:f=e.consent,id:p=q(),trigger:g="",entity:m=n,action:h=o,timing:v=0,source:y={type:"collector",schema:"4"}}=t;return{name:s,data:i,context:a,globals:c,custom:l,user:u,nested:d,consent:f,id:p,trigger:g,entity:m,action:h,timestamp:r,timing:v,source:y}}function Je(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,s=null!=(n=e.lowWaterMark)?n:.8,i=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*s),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return i>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},i),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 Xe(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=pe(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},Y(a,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?J(e.match):()=>!0,ttl:e.ttl})),d=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),r=await o.get(n);if(void 0!==r)return l.hits++,c(t,"hit"),r;const s=p.get(n);if(s)return l.inflight_dedups++,c(t,"hit"),s;l.misses++,c(t,"miss");const i=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=f(t,r);if(s)try{await o.set(n,r,1e3*s.ttl),l.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){l.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{await o.set(d(t),n,1e3*s.ttl)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function Ze(e,t,n){const o=`store.${n}`,r=F(t.get,"StoreGet",e.hooks,e.logger),s=F(t.set,"StoreSet",e.hooks,e.logger),i=F(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=pe(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},Y(e,s);try{const s=await r(t),i=Date.now(),a=pe(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},Y(e,a),s}catch(r){const s=Date.now(),i=pe(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Y(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=pe(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},Y(e,a);try{await s(t,n,r);const a=Date.now(),c=pe(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},Y(e,c)}catch(n){const r=Date.now(),s=pe(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Y(e,s),n}},t.delete=async t=>{const n=Date.now(),r=pe(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},Y(e,r);try{await i(t);const r=Date.now(),s=pe(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},Y(e,s)}catch(r){const s=Date.now(),i=pe(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Y(e,i),r}}}async function Qe(e){var t,n;const o=v({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r=L({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},observers:new Set,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;i.push=function(e,t){const n=F(async(n,o={})=>await H(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:l,preChain:u,include:d,exclude:f}=o;let p=c,g=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(i||"unknown");if(l){const t=await V(g,l,e);if(t.ignore)return Ke({ok:!0});if(l.consent&&!$(l.consent,e.consent,t.event.consent))return Ke({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ke(e,e.transformers,u,g,v,p,i?`source.${i}.next`:void 0);if(null===n.event)return Ke({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),Ke({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=Ye(e,o);return ze(e,r,{id:i,ingest:v,respond:p},h)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:Ke({ok:!0})}g=n.event}const y=t(g),b=Ye(e,y),w=await ze(e,b,{id:i,ingest:v,respond:p},h);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return w},t=>{if(t instanceof B)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Ke({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id?t.id:"",s=Date.now();Y(e,pe(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:s}));try{const i=await n(t,o),a=Date.now(),c=pe(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:a});return c.durationMs=a-s,c.outEvent=i,Y(e,c),i}catch(t){const n=Date.now(),o=pe(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n});throw o.durationMs=n-s,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,o),t}}}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.1"},...e})),i.command=(c=Fe,F(async(e,t,n)=>await H(async()=>await c(a,e,t,n),n=>{if(n instanceof B)throw n;return a.status.failed++,a.logger.error("command failed",{command:e,data:t,error:n}),Ke({ok:!1})})(),"Command",(a=i).hooks,a.logger));const l=e.stores||{};return i.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:s,env:i},l=await t(c);o[n]=l}const r=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){var i;const a=t[s];if("BLACK"===a)return;if("GRAY"===a){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const c=null==(i=e[s].cache)?void 0:i.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${s}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of s){const s=r[t].cache;if(!s)continue;let i,a;void 0!==s.store?(i=o[s.store],a=s.store):(o.__cache||(o.__cache=Je()),i=o.__cache,a="__cache");const c=null!=(n=s.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=Xe(o[t],{storeId:t,cacheConfig:s,cacheStore:i,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&Ze(e,n,t);return o}(i,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,i.stores,e),i.stores.__cache||(i.stores.__cache=Je()),i.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,i]of Object.entries(t))(null==(o=null==(n=i.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Ue(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,t={}){var n,o,r,s;const i={};for(const[a,c]of Object.entries(t)){const{code:t,env:l={}}=c,u=de(c,"Transformer");if(!u.ok){e.logger.warn(`Transformer ${a} invalid (${u.code}): ${u.reason}. Skipping.`);continue}const{config:d}=he(c,"before"),{config:f}=he({...c,config:d},"next"),p=Object.keys(l).length>0?{...f,env:l}:f,{cache:g}=c,h=g?{...p,cache:g}:p,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!=(s=w.config)?s:{},next:c.next}),i[a]=w}return i}(i,e.transformers||{}),i}async function et(e){e=e||{};const t=await Qe(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const n=e.replace("walker ","");return o.command(n,t)}let i;if("string"==typeof e)i={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=typeof e)return Ke({ok:!1});i=e,t&&"object"==typeof t&&!Array.isArray(t)&&(i.data={...i.data||{},...t})}return n&&"object"==typeof n&&(i.context=n),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),o.push(i)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await Ce(e,r,s);if(!t)continue;const i=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...i?{require:[...i]}:{}},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 H(n.init.bind(n),n=>{if(n instanceof B)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,Ee(n)&&await je(e,n,t))}return o}(t,e.sources||{});const{consent:r,user:s,globals:i,custom:a}=e;r&&await t.command("consent",r),s&&await t.command("user",s),i&&Object.assign(t.globals,i),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 tt(e,t){return(e.getAttribute(t)||"").trim()}function nt(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 s=t.innerHeight,i=e.getBoundingClientRect(),a=i.height,c=i.y,l=c+a,u={x:i.x+e.offsetWidth/2,y:i.y+e.offsetHeight/2};if(a<=s){if(e.offsetWidth+i.width===0||e.offsetHeight+i.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=s/2;if(c<0&&l<e)return!1;if(l>s&&c>e)return!1;r=n.elementFromPoint(u.x,s/2)}if(r)do{if(r===e)return!0}while(r=r.parentElement);return!1}function ot(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function rt(e,t,n,o=!0){return mt(tt(t,ot(e,n,o))||"").reduce((e,n)=>{let[o,r]=ht(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(I(r))):e[o]=I(r),e},{})}function st(e,t=fe.Commands.Prefix){var n;const o=e;if(!o)return[];let r=[];const s=fe.Commands.Action,i=`[${ot(t,s,!1)}]`,a=e=>{Object.keys(rt(t,e,s,!1)).forEach(n=>{r=r.concat(it(e,n,t))})};return o!==(o.ownerDocument||o)&&(null==(n=o.matches)?void 0:n.call(o,i))&&a(o),gt(o,i,a),r}function it(e,t,n=fe.Commands.Prefix){const o=[],{actions:r,nearestOnly:s}=function(e,t,n){let o=t;for(;o;){const t=tt(o,ot(e,fe.Commands.Actions,!1));if(t){const e=ct(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=tt(o,ot(e,fe.Commands.Action,!1));if(r){const e=ct(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=dt(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const i=mt(r.actionParams||"",",").reduce((e,t)=>(e[G(t)]=!0,e),{}),a=lt(n,e,i,s);if(!a.length){const t="page",o=`[${ot(n,t)}]`,[r,s]=ft(e,o,n,t);a.push({entity:t,data:r,nested:[],context:s})}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 at(e=fe.Commands.Prefix,t){if(!t)return{};const n=ot(e,fe.Commands.Globals,!1);let o={};return pt(t,`[${n}]`,t=>{o=v(o,rt(e,t,fe.Commands.Globals,!1))}),o}function ct(e){const t={};return mt(e).forEach(e=>{const[n,o]=ht(e),[r,s]=vt(n);if(!r)return;let[i,a]=vt(o||"");i=i||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:s,action:i,actionParams:a})}),t}function lt(e,t,n,o=!1){const r=[];let s=t;for(n=0!==Object.keys(n||{}).length?n:void 0;s;){const i=ut(e,s,t,n);if(i&&(r.push(i),o))break;s=dt(e,s)}return r}function ut(e,t,n,o){const r=tt(t,ot(e));if(!r||o&&!o[r])return null;const s=[t],i=`[${ot(e,r)}],[${ot(e,"")}]`,a=ot(e,fe.Commands.Link,!1);let c={};const l=[],[u,d]=ft(n||t,i,e,r);gt(t,`[${a}]`,n=>{const[o,r]=ht(tt(n,a));"parent"===r&>(t.ownerDocument.body,`[${a}="${o}:child"]`,t=>{s.push(t);const n=ut(e,t);n&&l.push(n)})});const f=[];s.forEach(e=>{e.matches(i)&&f.push(e),gt(e,i,e=>f.push(e))});let p={};return f.forEach(t=>{p=v(p,rt(e,t,"")),c=v(c,rt(e,t,r))}),c=v(v(p,c),u),s.forEach(t=>{gt(t,`[${ot(e)}]`,t=>{const n=ut(e,t);n&&l.push(n)})}),{entity:r,data:c,context:d,nested:l}}function dt(e,t){const n=ot(e,fe.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=ht(tt(t,n));if("child"===o){const o=t.ownerDocument;let r=null;return pt(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 ft(e,t,n,o){let r={};const s={};let i=e;const a=`[${ot(n,fe.Commands.Context,!1)}]`;let c=0;for(;i;)i.matches(t)&&(r=v(rt(n,i,""),r),r=v(rt(n,i,o),r)),i.matches(a)&&(Object.entries(rt(n,i,fe.Commands.Context,!1)).forEach(([e,t])=>{t&&!s[e]&&(s[e]=[t,c])}),++c),i=dt(n,i);return[r,s]}function pt(e,t,n){e.querySelectorAll(t).forEach(n)}function gt(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&>(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&>(e.shadowRoot,t,n)})}function mt(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function ht(e){const[t,n]=e.split(/:(.+)/,2);return[G(t),G(n)]}function vt(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var yt=new WeakMap,bt=new WeakMap,wt=new WeakMap;function kt(e){const t=Date.now();let n=bt.get(e);if(!n||t-n.lastChecked>500){n={isVisible:nt(e,e.ownerDocument.defaultView,e.ownerDocument),lastChecked:t},bt.set(e,n)}return n.isVisible}function xt(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return z(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,s=wt.get(e);if(!s)return;const i=s.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=yt.get(r);if(!a||o-a.lastChecked>1e3){const e=r.ownerDocument.defaultView;a={isLarge:r.offsetHeight>e.innerHeight,lastChecked:o},yt.set(r,a)}if(t.intersectionRatio>=.5||a.isLarge&&kt(r)){const t=null==(n=s.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!i){const t=r.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(kt(r)){const o=null==(t=s.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await Kt(o.context,r,o.trigger);const i=null==(n=s.elementConfigs)?void 0:n.get(r);(null==i?void 0:i.multiple)?i.blocked=!0:function(e,t){const n=wt.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),yt.delete(t),bt.delete(t)}(e,r)}},s.duration);s.timers.set(r,t)}return}}i&&(clearTimeout(i),s.timers.delete(r));const a=null==(o=s.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function Ot(e,t,n={multiple:!1}){var o;const r=e.settings.scope;if(!r)return;const s=wt.get(r);(null==s?void 0:s.observer)&&t&&(s.elementConfigs||(s.elementConfigs=new WeakMap),s.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),s.observer.observe(t))}function jt(e){if(!e)return;const t=wt.get(e);t&&(t.observer&&t.observer.disconnect(),wt.delete(e))}function Et(e,t,n,o,r,s,i){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=Ct(n,t)}return!e.globals&&c.scope&&(e.globals=at(c.prefix,c.scope)),a(e)}const[l]=String(x(t)?t.name:t).split(" ");let u,d=x(n)?n:{},f={},p=!1;if(w(n)&&(u=n,p=!0),w(r)?u=r:x(r)&&Object.keys(r).length&&(f=r),u){const e=lt(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(p&&(d=e.data),e.context&&(f=e.context))}const g=c.scope?c.scope.ownerDocument||c.scope:void 0,m=null==g?void 0:g.defaultView;"page"===l&&m&&(d.id=d.id||m.location.pathname);const h=at(c.prefix,c.scope);return a({name:String(t||""),data:d,context:f,globals:h,nested:s,custom:i,trigger:O(o)?o:"",source:m&&g?Ct(m,g):void 0})}function Ct(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}var St,At,It=[],$t=[],qt=[];function Dt(){return At||(At=new AbortController),At}var Tt="click",Pt="hover",Mt="load",_t="pulse",Lt="scroll",Nt="submit",Rt="impression",Wt="visible",zt="wait";function Ht(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;At&&At.abort();At=new AbortController;const{signal:o}=At;n.addEventListener("click",z(function(t){Gt.call(this,e,t)}),{signal:o}),n.addEventListener("submit",z(function(t){Ft.call(this,e,t)}),{signal:o})}(e,t)}function Bt(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;It=[];const o=n;if(!o)return;jt(o),function(e,t=1e3){wt.has(e)||wt.set(e,{observer:xt(e),timers:new WeakMap,duration:t})}(o,1e3);const r=ot(t.prefix,fe.Commands.Action,!1),s=o.ownerDocument||o;o!==s&&Ut(e,o,r,t);gt(o,`[${r}]`,n=>{Ut(e,n,r,t)}),It.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,s=e.offsetTop;if(r<s)return!0;const i=e.clientHeight;return!(100*(1-(s+i-r)/(i||1))>=n)||(Kt(t,e,Lt),!1)});St||(St=function(e,t=1e3){const{wait:n}=T(t,1e3);let o=null;return function(...t){if(null===o)return o=setTimeout(()=>{o=null},n),e(...t)}}(function(){It=r.call(t,It,e)}),t.addEventListener("scroll",St,{signal:Dt().signal}))}(e,o)}(e,t)}async function Kt(e,t,n){const o=it(t,n,e.settings.prefix);return Promise.all(o.map(t=>Et(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function Ut(e,t,n,o){const r=tt(t,n);r&&Object.values(ct(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case Pt:!function(e,t){t.addEventListener("mouseenter",z(function(t){const n=Vt(t);n&&Kt(e,n,Pt)}),{signal:Dt().signal})}(e,t);break;case Mt:!function(e,t){Kt(e,t,Mt)}(e,t);break;case _t:!function(e,t,n=""){const o=t.ownerDocument,r=setInterval(()=>{o.hidden||Kt(e,t,_t)},parseInt(n||"")||15e3);$t.push(r)}(e,t,n.triggerParams);break;case Lt:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;It.push([e,n])}(t,n.triggerParams);break;case Rt:Ot(e,t);break;case Wt:Ot(e,t,{multiple:!0});break;case zt:!function(e,t,n=""){const o=setTimeout(()=>Kt(e,t,zt),parseInt(n||"")||15e3);qt.push(o)}(e,t,n.triggerParams)}}))}function Vt(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 Gt(e,t){const n=Vt(t);n&&Kt(e,n,Tt)}function Ft(e,t){const n=Vt(t);n&&Kt(e,n,Nt)}function Yt(e,t={}){var n;const o=t.name||"elbLayer",r=t.window,s=t.logger;if(!r)return;const i=r;i[o]||(i[o]=[]);const a=i[o],c=r.document;null==s||s.debug("initElbLayer enter",{layerName:o,queuedItems:a.length}),a.push=function(...n){if(Zt(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return Xt(e,t.prefix,o,c,s),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{Xt(e,t.prefix,n,c,s)}),o},Array.isArray(a)&&a.length>0&&(null==s||s.debug("initElbLayer drain walker commands",{count:a.length}),function(e,t,n,o,r){const s="walker ",i=[...n],a=new Set;i.forEach((n,i)=>{const c=Jt(n);if(!c)return;const l=c[0];!x(l)&&O(l)&&l.startsWith(s)&&(a.add(i),Xt(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,s))}function Jt(e){const t=Zt(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 Xt(e,t="data-elb",n,o,r){z(()=>{if(Array.isArray(n)){const[s,...i]=n;if(!s||O(s)&&""===s.trim())return void(null==r||r.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(O(s)&&s.startsWith("walker "))return null==r||r.debug("pushCommand walker command",{action:s,data:i[0]}),void e(s,i[0]);null==r||r.debug("pushCommand event (translated)",{action:s,rest:i}),Et({elb:e,settings:{prefix:t,scope:o,pageview:!1,elb:"",elbLayer:!1}},s,...i)}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 Zt(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var Qt={},en={};r(en,{createTrigger:()=>mn,env:()=>tn,step:()=>an,trigger:()=>hn});var tn={};r(tn,{push:()=>sn});var nn=()=>{},on=()=>()=>Promise.resolve({ok:!0}),rn={error:nn,warn:nn,info:nn,debug:nn,throw:e=>{throw"string"==typeof e?new Error(e):e},json:nn,scope:()=>rn},sn={get push(){return on()},get command(){return on()},get elb(){return on()},get window(){return{addEventListener:nn,removeEventListener:nn,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:nn,removeEventListener:nn,querySelector:nn,querySelectorAll:()=>[],getElementById:nn,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:nn,getAttribute:nn,addEventListener:nn,removeEventListener:nn}),body:{appendChild:nn,removeChild:nn},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:rn},an={};r(an,{clickEvent:()=>ln,contextAndGlobals:()=>gn,dataAttributeTypes:()=>pn,impressionEvent:()=>dn,nestedEntities:()=>fn,pageView:()=>cn,submitEvent:()=>un});var cn={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/"}}]]},ln={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"}]]},un={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"}]]},dn={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"}]]},fn={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"}]]},pn={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"}]]},gn={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"}]]},mn=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let o;const r=document,s=window;return{get flow(){return o},trigger:(t,i)=>async a=>{var c;if("load"===t||!t){const e="object"==typeof i&&null!==i?i:{};if(e.url){const t=new URL(e.url);s.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 et({...e,run:null==(c=e.run)||c});o={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof i?i: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 Kt(f,u,t)}}},hn=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.document,r=t.window,s=()=>{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",s=o.createElement(r);for(const[e,t]of Object.entries(n.attributes))s.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);s.appendChild(t)}return o.body.appendChild(s),s};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 s()}return()=>{const e=s();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 vn(e={}){const t=e.prefix||"data-elb";return function(e){let n,o=e;const r={},s={},i={},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))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},actions(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},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(s).length>0&&(e[`${t}action`]=u(s)),Object.keys(i).length>0&&(e[`${t}actions`]=u(i)),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 yn=0;function bn(){yn=0}var wn,kn=async e=>{if(yn>0&&void 0!==globalThis.window)throw new Error("walker.js browser source is single-instance per window. See packages/web/sources/browser/src/trigger.ts for the invariant note.");yn+=1;const{config:t,env:n,logger:o}=e,{elb:r,command:s,window:i,document:a}=n,c=(null==t?void 0:t.settings)||{},l=i||(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},p=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,o=n.defaultView.location,r="page",s="body"in t?t.body:t,[i,a]=ft(s,`[${ot(e,r)}]`,e,r);return i.domain=o.hostname,i.title=n.title,i.referrer=n.referrer,o.search&&(i.search=o.search),o.hash&&(i.hash=o.hash),[i,a]}(e.prefix||"data-elb",e.scope);Et(f,"page view",t,"load",n)};return{type:"browser",config:{settings:d},push:(...e)=>{const[t,n,o,r,s,i]=e;return Et(f,t,n,o,r,s,i)},on:async e=>{if("run"===e)u&&l&&(Bt(f,d),function(e,t,n,o){const r=O(t.elbLayer)?t.elbLayer:"elbLayer",s=t.prefix||"data-elb",i=n[r];if(!Array.isArray(i))return;const a=n.document;let c=-1;i.forEach((e,t)=>{const n=Jt(e);n&&O(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<i.length;e++){const t=Jt(i[e]);t&&l.push(t)}i.length=c+1,null==o||o.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>Xt(e,s,t,a,o))}(r,d,l,o),p(d))},init:async()=>{l&&u&&(!1!==d.elbLayer&&r&&Yt(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 s=r.ownerDocument||r;"loading"!==s.readyState?o():s.addEventListener("DOMContentLoaded",o)}(Ht,f,d),O(d.elb)&&d.elb&&(l[d.elb]=(...e)=>{const[t,n,o,r,s,i]=e;return Et(f,t,n,o,r,s,i)}))},destroy:async()=>{At&&(At.abort(),At=void 0),St=void 0,It=[],$t.forEach(e=>clearInterval(e)),$t=[],qt.forEach(e=>clearTimeout(e)),qt=[],u&&jt(d.scope||u)}}},xn=kn;return wn=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of n(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=t(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),wn)})();
|
|
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})},s={};r(s,{SourceBrowser:()=>tn,__resetInstanceCountForTests:()=>kn,createTagger:()=>bn,default:()=>jn,examples:()=>nn,getAllEvents:()=>it,getElbAttributeName:()=>rt,getElbValues:()=>st,getEvents:()=>at,getGlobals:()=>ct,sourceBrowser:()=>On});var i=Object.defineProperty,a=(e,t)=>{for(var n in t)i(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 p(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}a({},{getSource:()=>p});function g(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:()=>g});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 s=e[o];return n.merge&&Array.isArray(s)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function 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 E(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("."),s=[];for(const e of r){const o=E(e,t,n);s.push(o)}return s}if(r=x(r)||y(r)?r[t]:void 0,void 0===r)break}return b(r)?r:n}function C(e,t,n){if(!x(e))return e;const o=j(e),r=t.split(".");let s=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return o}function S(e,t){if(!x(e)&&!y(e))return e;const n=j(e),o=t.split(".");let r=n;for(let e=0;e<o.length;e++){const t=o[e],s=e===o.length-1;if(y(r)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=r.length)return n;if(s)r.splice(e,1);else{const t=r[e];if(!x(t)&&!y(t))return n;r=t}}else if(s)delete r[t];else{const e=r[t];if(!x(e)&&!y(e))return n;r=e}}return n}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 I(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 s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(s=!0))}),!!s&&r}function q(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function D(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 T(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 P(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function M(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=P(e)):n=e,void 0!==t&&(t instanceof Error?o.error=P(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=P(o.error))):o.value=t),{message:n,context:o}}var _=(e,t,n,o)=>{const r=`${d[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,t,n):i(r,t)};function L(e={}){return N({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 N(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=t){const t=M(o,s);n?n(e,t.message,t.context,r,_):_(e,t.message,t.context,r)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const o=M(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=>N({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function R(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(R)||x(e)&&Object.values(e).every(R)}function W(e){return R(e)?e:void 0}function z(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function H(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 B=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function K(e,t={},n={}){var o,r;if(!b(e))return;const s=x(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=null!=(r=n.event)?r:x(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:i,mapping:t,collector:n.collector,logger:n.collector.logger,consent:s},c=y(t)?t:[t];for(const t of c){const o=await H(U,e=>{if(e instanceof B)throw e;n.collector&&n.collector.status.failed++,a.logger.error("mapping processing failed",{event:i,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 s=O(o)?{key:o}:o;if(!Object.keys(s).length)return;const{condition:i,consent:a,fn:c,key:l,loop:u,map:d,set:f,validate:p,value:g}=s,m={...n,mapping:o};if(i&&!await H(i,e=>{if(e instanceof B)throw e;return m.logger.error("mapping condition failed",{event:m.event,error:e}),!1})(e,m))return;if(a&&!$(a,m.consent))return g;let h=b(g)?g:e;if(c&&(h=await H(c,e=>{if(e instanceof B)throw e;m.logger.error("mapping fn failed",{event:m.event,error:e})})(e,m)),l&&(h=E(e,l,g)),u){const[t,n]=u,o="this"===t?[e]:await K(e,t,m);y(o)&&(h=(await Promise.all(o.map(e=>K(e,n,m)))).filter(b))}else d?h=await Object.entries(d).reduce(async(t,[n,o])=>{const r=await t,s=await K(e,o,m);return b(s)&&(r[n]=s),r},Promise.resolve({})):f&&(h=await Promise.all(f.map(t=>U(e,t,m))));p&&!await H(p,e=>{if(e instanceof B)throw e;return m.logger.error("mapping validate failed",{event:m.event,error:e}),!1})(h,m)&&(h=void 0);const v=W(h);return b(v)?v:W(g)},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 K(e,o,{collector:n,event:e});e=C(e,t,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,t,n){var o;const[r,s]=(e.name||"").split(" ");if(!t||!r||!s)return{};let i,a="",c=r,l=s;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="*"),i=u(d[l])),i||(c="*",l="*",i=u(null==(o=t[c])?void 0:o[l])),i&&(a=`${c} ${l}`),{eventMapping:i,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 K(e,o,{collector:n,event:e});e=C(e,t,r)}));let i=t.data&&await K(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:i,mapping:r,mappingKey:s,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await K(e,r.data,{collector:n,event:e});i=x(i)&&x(t)?v(i,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&&(i=x(i)?v(t,i):null!=i?i:t)}if((null==r?void 0:r.remove)&&x(i))for(const e of r.remove)i=S(i,e);return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,silent:a}}function G(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function F(e,t,n,o){const r=e;return function(...e){let s;const i="pre"+t,a="post"+t,c=n[i],l=n[a],u=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:r},...e)}catch(t){u(`Hook ${String(i)} failed, falling back to original function`,t),s=r(...e)}else s=r(...e);if(l)try{s=l({fn:r,result:s},...e)}catch(e){u(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function Y(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch(e){}}function J(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(J);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(J);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,s=function(e,t){switch(e){case"eq":return e=>String(null!=e?e:"")===t;case"contains":return e=>String(null!=e?e:"").includes(t);case"prefix":return e=>String(null!=e?e:"").startsWith(t);case"suffix":return e=>String(null!=e?e:"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(null!=t?t:""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,o);return e=>{const n=E(e,t),o=s(n);return r?!o:o}}(e)}function X(e){return Array.isArray(e)&&e.length>0&&e.every(e=>function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}(e))}function Z(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=Q(e))?t:{type:"chain",value:[]}};const o=e;return{match:o.match?J(o.match):()=>!0,next:null!=(n=Q(o))?n:{type:"chain",value:[]}}})}function Q(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(X(e))return Q({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=Q(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:J(t.match),next:Q(t.next)}:Q(t.next);if("one"in t&&t.one){const e=Z(t.one);return t.match?{type:"gate",match:J(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Z(t.many);return t.match?{type:"gate",match:J(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:J(t.match)}:void 0}var ee=new WeakMap;function te(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=ee.get(e);t?n=t:(n=Q(e),n&&ee.set(e,n))}else n=Q(e);if(!n)return[];const o=ne(n,t);return void 0===o?[]:Array.isArray(o)?o:[o]}function ne(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 ne(e.next,t)}if("sequence"===e.type){const n=[];for(const o of e.value){const e=ne(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=ne(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 ne(n.next,t)}}function oe(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function re(e){var t;return{stop:null!=(t=e.stop)&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?J(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function se(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const s=r.key.map(e=>{var t;return String(null!=(t=E(n,e))?t:"")});if(s.every(e=>""===e))return null;const i=s.join(":"),a=null!=o?o:e.namespace,c=a?`${a}:${i}`:i,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:r}:{status:"MISS",key:c,rule:r}}function ie(e,t,n,o){e.set(t,n,1e3*o)}async function ae(e,t,n,o){if(!t)return e;let r=e;for(const[e,s]of Object.entries(t))r=C(r,e,await K(n,s,{collector:o}));return r}var ce={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"]},le=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],ue={Source:["primary"],Transformer:[],Destination:[],Store:[]},de=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function fe(e,t){const n=(o=t,new Set([...ce[o],...le,...ue[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,s=void 0!==e.import,i=void 0!==e.code;return i&&"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.`}:i&&("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."}:i&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:i&&s?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:s&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!s||"string"==typeof e.import&&de.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${de.source}. Got: ${JSON.stringify(e.import)}.`}}var pe={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function ge(e,t){const n=e.status.startedAt;return{flowId:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n}}function me(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function he(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 ve(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 ye(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 be(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:m(n),config:t.config,env:Oe(t.config.env)};r.debug("init");const i=await F(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:(null==i?void 0:i.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function we(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),l={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...Oe(t.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=Date.now();Y(e,ge(e,{stepId:c("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:d}));try{const r=await F(t.push,"TransformerPush",e.hooks,e.logger)(o,l),s=Date.now(),i=ge(e,{stepId:c("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s});return i.durationMs=s-d,i.outEvent=r,Y(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=ge(e,{stepId:c("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o});throw r.durationMs=o-d,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,r),t}}function ke(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:m(t)}async function xe(e,t,n,o,r,s,i){var a,c,l,u,d,f,p,g;r||(r=m(null!=(a=n[0])?a:"chain")),i&&r._meta&&(r._meta.chainPath=i);let h=o,v=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:v};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await H(be,t=>{if(t instanceof B)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,s,o))return{event:null,respond:v};if(i&&void 0!==(null==(l=null==(c=s.config)?void 0:c.chainMocks)?void 0:l[i])){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),h=t;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),h=s.config.mock;continue}if(null==(d=s.config)?void 0:d.disabled)continue;const a=null==(f=s.config)?void 0:f.cache,m=a?re(a):void 0,y=m?me(m,e):void 0;let b;if(m&&y){const e=oe(r,h),t=await se(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=s.config.before;if(w){const n=te(w,oe(r,h));if(1===n.length){const o=ye(n[0],he(t));if(o.length>0){const n=await xe(e,t,o,h,r,v,i);if(null===n.event)return{event:null,respond:null!=(p=n.respond)?p:v};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(g=n.respond)?g: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=>H(xe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ye(n,he(t)),h,ke(r,n),void 0,i)))}const k=await H(we,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,h,r,v);if(!1===k)return{event:null,respond:v};if(Array.isArray(k)){const s=n.slice(n.indexOf(o)+1),a=await Promise.all(k.map(async n=>{const o=n.event||h,a=ke(r,"unknown");if(n.next){const r=te(n.next,oe(a,o));if(0===r.length)return{event:o,respond:v};if(1===r.length){const n=ye(r[0],he(t));return n.length>0?xe(e,t,n,o,a,v,i):{event:o,respond:v}}return(await Promise.all(r.map(n=>H(xe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ye(n,he(t)),o,ke(a,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?xe(e,t,s,o,a,v,i):{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:s}=k;if(o&&(v=o),void 0!==s){const o=te(s,oe(r,h));if(0===o.length){n&&(h=n);continue}if(1===o.length){const a=ye(o[0],he(t));return a.length>0?xe(e,t,a,n||h,r,v,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:v})}return await Promise.all(o.map(o=>H(xe,t=>(e.logger.scope("transformer:many").error(`many branch ${o} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ye(o,he(t)),n||h,ke(r,o),void 0,i))),{event:null,respond:void 0}}n&&(h=n)}b&&y&&ie(y,b.key,h,b.ttl);const x=s.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=te(s.config.next,oe(r,h));if(1===n.length){const o=ye(n[0],he(t));return o.length>0?xe(e,t,o,h,r,v,i):{event:h,respond:v}}return n.length>1?(await Promise.all(n.map(n=>H(xe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ye(n,he(t)),h,ke(r,n),void 0,i))),{event:null,respond:void 0}):{event:h,respond:v}}}return{event:h,respond:v}}function Oe(e){return e&&x(e)?e:{}}function je(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function Ee(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const s=t.queueOn;t.queueOn=[];const i=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of s)await H(t.on,t=>{if(t instanceof B)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:i,type:n,error:t})})(n,o)}function Ce(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function Se(e,t,n){var o;const{code:r,config:s={},env:i={},primary:a,next:c,before:l,cache:u}=n,d=u,f=d?re({...d,stop:null==(o=d.stop)||o}):void 0,p=je(c)?ye(c,he(e.transformers)):void 0,g=je(l)?ye(l,he(e.transformers)):void 0,h=i.push,v=null!=h?h:e.push,y=Boolean(h),b=async(n,o,r)=>{var i;let a;const u=null!=g?g:void 0!==l?(()=>{const t=te(l,oe(r.ingest));return 0===t.length?[]:ye(1===t.length?t[0]:t,he(e.transformers))})():[];let d=[n];if(u.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await xe(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=me(f,e);if(t){const n=oe(r.ingest),o=await se(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 ae(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(i=r.respond)||i.call(r,t),{ok:!0}}if("MISS"===o.status&&f.stop&&r.respond){const s=r.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{ie(t,l,n,u),i?a=(async()=>{const t=await ae(n,i,c,e);s(t)})():s(n)};r.respond=d}"MISS"!==o.status||f.stop||ie(t,o.key,!0,o.rule.ttl)}}}const m=p?{kind:"single",preChain:p}:void 0!==c?(()=>{const t=te(c,oe(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ye(t[0],he(e.transformers))}:{kind:"many",branches:t.map(t=>ye(t,he(e.transformers)))}})():{kind:"single",preChain:[]};let h={ok:!0};for(const n of d)"many"===m.kind?(await Promise.all(m.branches.map((i,a)=>H(async()=>y?v(n):v(n,{...o,id:t,ingest:ke(r.ingest,`${t}.${a}`),respond:void 0,mapping:s,preChain:i}),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:s,preChain:m.preChain});return a&&await a,h},w=async n=>{const o=m(t);if(!s.ingest||void 0===n)return o;const r=await K(n,s.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,...i,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:s,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 H(r,n=>{if(n instanceof B)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(O);if(!j)return;const E=j.type||"unknown",C=e.logger.scope(E).scope(t);return x.logger=C,a&&(j.config={...j.config,primary:a}),j}function Ae(e,t,n,o){if(n instanceof B)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}function Ie(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function $e(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:n,config:t.config,data:r,env:Ge(t.env,t.config.env)};z(t.on,t=>Ae(e,"destination",t,{destId:n,type:o}))(o,a)}function qe(e,t,n,o){let r;switch(t){case pe.Commands.Consent:r=o||e.consent;break;case pe.Commands.Session:r=e.session;break;case pe.Commands.User:r=o||e.user;break;case pe.Commands.Custom:r=o||e.custom;break;case pe.Commands.Globals:r=o||e.globals;break;case pe.Commands.Config:r=o||e.config;break;case pe.Commands.Ready:case pe.Commands.Run:default:r=void 0}if(n.length)switch(t){case pe.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=Ie(e,pe.Commands.Consent);t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{z(t[n],t=>Ae(e,"consent",t,{key:n}))(o,r)})})}(e,n,o);break;case pe.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=Ie(e,pe.Commands.Ready);t.forEach(t=>{z(t,t=>Ae(e,"ready",t))(void 0,n)})}(e,n);break;case pe.Commands.Run:!function(e,t){if(!e.allowed)return;const n=Ie(e,pe.Commands.Run);t.forEach(t=>{z(t,t=>Ae(e,"run",t))(void 0,n)})}(e,n);break;case pe.Commands.Session:!function(e,t){if(!e.session)return;const n=Ie(e,pe.Commands.Session);t.forEach(t=>{z(t,t=>Ae(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Ie(e,t);n.forEach(n=>{"function"==typeof n&&z(n,n=>Ae(e,"generic",n,{type:t}))(r,o)});break}}}function De(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 s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var Te=new WeakMap;function Pe(e,t,n,o){Te.get(e)||(Te.set(e,!0),t.warn(n,o))}function Me(e){Te.delete(e)}var _e=Object.freeze({batched:!0});function Le(e){return e===_e}function Ne(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Re(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 We(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(null!=(r=s[n])?r:0)+o,s[n]}function ze(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ye(e,t);if("string"==typeof e)return ye(e,t);const o=te(e,oe(n));return 0===o.length?[]:1===o.length?ye(o[0],t):ye(o,t)}async function He(e,t,n={},o){var r,s,i,a,l,u;const{allowed:d,consent:f,globals:p,user:g}=e;if(!d)return Ue({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=De(e.queue,t,{max:n});if(o.dropped>0){const t=We(e.status,c("collector"),"queue",o.dropped);Pe(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Me(e.queue);e.status.in++}o||(o=e.destinations);const h=e.transformers?he(e.transformers):{},y=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var s,i,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==(s=r.queueOn)?void 0:s.length))return{id:o,destination:r,skipped:!0};if(!u.length&&(null==(i=r.queueOn)?void 0:i.length)){let t=!1;try{t=await Be(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(t=>{const n=$(r.config.consent,f,t.consent);if(n)return t.consent=n,y.push(t),!1;const s=ge(e,{stepId:c("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now()});return s.skipReason="consent",f&&(s.consent={...f}),r.config.consent&&(s.meta={required:{...r.config.consent}}),Y(e,s),!0});if(b.length>0){const t=r.queuePush,n=r.config.id||o,s={max:null!=(a=r.config.queueMax)?a:1e3};let i=0;for(const e of b)i+=De(t,e,s).dropped;if(i>0){Re(e,n);const o=We(e.status,c("destination",n),"queue",i);Pe(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&Me(t)}if(!y.length)return{id:o,destination:r,queue:u};let w,k,x=!1;try{x=await Be(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=ze(r.config.before,h,d),E=r.config.next,C=null==(l=r.config)?void 0:l.cache,S=C?re(C):void 0,A=S?me(S,e):void 0;let I=0,q=0;return await Promise.all(y.map(async t=>{let s;if(t.globals=v(p,t.globals),t.user=v(g,t.user),(null==S?void 0:S.stop)&&A){const e=oe(d,t),n=await se(S,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let i=t,a=n.respond;if(O.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await xe(e,e.transformers,O,t,d,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),i=Array.isArray(r.event)?r.event[0]:r.event}if(S&&!S.stop&&A){const e=oe(d,i),n=await se(S,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}const l=Date.now();let u=!1;const f=await H(Ke,t=>{var n;const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:t,event:i.name}),w=t,u=!0;const a=r.dlq,l=r.config.id||o,d={max:null!=(n=r.config.dlqMax)?n:100},f=De(a,[i,t],d);if(f.dropped>0){Re(e,l);const t=We(e.status,c("destination",l),"dlq",f.dropped);Pe(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&&Me(a)})(e,r,o,i,d,a);if(I+=Date.now()-l,s&&A&&void 0===r.config.mock&&ie(A,s.key,null==f||f,s.ttl),void 0===f||Le(f)||(k=f),Le(f)&&q++,!u&&E){void 0!==f&&(d._response=f);const t=ze(E,h,d);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await xe(e,e.transformers,t,i,d,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:w,response:k,totalDuration:I,batchedCount:q,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};Re(e,t.id);const c=e.status.destinations[t.id],d=Date.now();if(c.queuePushSize=null!=(s=null==(r=n.queuePush)?void 0:r.length)?s:0,c.dlqSize=null!=(a=null==(i=n.dlq)?void 0:i.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 Ue({event:t,...Object.keys(b).length&&{done:b},...Object.keys(w).length&&{queued:w},...Object.keys(k).length&&{failed:k}})}async function Be(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:n,config:t.config,env:Ge(t.env,t.config.env)};s.debug("init");const a=Date.now();let l;Y(e,ge(e,{stepId:c("destination",n),stepType:"destination",phase:"init",eventId:"",now:a}));try{l=await F(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),r=ge(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-a,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,r),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)$e(e,t,n,r,s)}s.debug("init done")}return!0}async function Ke(e,t,n,o,r,s){var i,a,l,u,d,f,p;const{config:g}=t,m=await V(o,g,e);if(m.ignore)return!1;const h=t.type||"unknown",v=e.logger.scope(h),y={collector:e,logger:v,id:n,config:g,data:m.data,rule:m.mapping,ingest:r,env:{...Ge(t.env,g.env),...s?{respond:s}:{}}};if(void 0!==g.mock)return v.debug("mock",{event:m.event.name}),g.mock;const w=m.mapping,k=m.mappingKey||"* *";if((null==w?void 0:w.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[k]){const o={key:k,entries:[],events:[],data:[]},r=Ne(w.batch),s=Ne(g.batch),p=null!=(a=null!=(i=r.wait)?i:s.wait)?a:3e4,m=null!=(u=null!=(l=r.size)?l:s.size)?u:1e3,h=null!=(f=null!=(d=r.age)?d:s.age)?f:3e4,y=Ge(t.env,g.env),b=function(e,t=1e3,n=!1){const{wait:o,size:r,age:s}=T(t,1e3);let i,a,c=null,l=null,u=!1,d=[],f=0;const p=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),f=0,a=void 0},g=()=>{const t=a,n=d;if(p(),d=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},m=(...t)=>new Promise(p=>{const m=n&&!u;if(a=t,f+=1,d.push(p),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||g()},o),void 0===s||l||(l=setTimeout(()=>{l=null,g()},s)),void 0!==r&&f>=r)g();else if(m){u=!0,i=e(...t);const n=d;d=[],n.forEach(e=>e(i))}});return m.flush=()=>a||0!==d.length?new Promise(e=>{d.push(e),g()}):Promise.resolve(void 0),m.cancel=()=>{const e=d;d=[],p(),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 s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const i=s.entries[0],a={collector:e,logger:v,id:n,config:g,data:void 0,rule:i.rule,ingest:i.ingest,env:{...y,...i.respond?{respond:i.respond}:{}}};v.debug("push batch",{events:s.entries.length});const l=t.config.id||n,u=Re(e,l),d=Date.now(),f=ge(e,{stepId:c("destination",n),stepType:"destination",phase:"flush",eventId:"",now:d});f.batch={size:s.entries.length,index:0},Y(e,f);let p=!0;await H(F(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger),o=>{var r;p=!1;const i=Date.now(),a=ge(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:"",now:i});a.durationMs=i-d,a.error=o instanceof Error?{name:o.name,message:o.message}:{message:String(o)},a.batch={size:s.entries.length,index:0},Y(e,a);const f=t.dlq=t.dlq||[],g={max:null!=(r=t.config.dlqMax)?r:100};let m=0;for(const e of s.entries)m+=De(f,[e.event,o],g).dropped;if(m>0){const t=We(e.status,c("destination",l),"dlq",m);Pe(f,v,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:l,cap:g.max,droppedCount:t})}else f.length<g.max&&Me(f);u.failed+=s.entries.length,u.dlqSize=f.length,e.status.failed+=s.entries.length,v.error("Push batch failed",{error:o instanceof Error?o.message:String(o),entries:s.entries.length})})(s,a),v.debug("push batch done"),u.inFlightBatch=Math.max(0,(null!=(o=u.inFlightBatch)?o:0)-s.entries.length),p&&(u.count+=s.entries.length,u.lastAt=Date.now(),e.status.out+=s.entries.length)},{wait:p,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:s,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=Re(e,h);return y.inFlightBatch=(null!=(p=y.inFlightBatch)?p:0)+1,o.batchFn(),_e}{v.debug("push",{event:m.event.name});const o="string"==typeof m.event.id?m.event.id:"",r=Date.now(),s=ge(e,{stepId:c("destination",n),stepType:"destination",phase:"in",eventId:o,now:r});m.mappingKey&&(s.mappingKey=m.mappingKey),m.event.consent&&(s.consent={...m.event.consent}),Y(e,s);try{const s=await F(t.push,"DestinationPush",e.hooks,e.logger)(m.event,y),i=Date.now(),a=ge(e,{stepId:c("destination",n),stepType:"destination",phase:"out",eventId:o,now:i});return a.durationMs=i-r,a.outEvent=s,m.mappingKey&&(a.mappingKey=m.mappingKey),Y(e,a),v.debug("push done"),s}catch(t){const s=Date.now(),i=ge(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:o,now:s});throw i.durationMs=s-r,i.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},m.mappingKey&&(i.mappingKey=m.mappingKey),Y(e,i),t}}}function Ue(e){return{ok:!(null==e?void 0:e.failed),...e}}function Ve(e){const{code:t,config:n={},env:o={},cache:r}=e,{config:s}=ve(e,"before"),{config:i}=ve({...e,config:s},"next"),a={...t.config,...n,...i};r&&(a.cache=r);const c=Ge(t.env,o);return{...t,config:a,env:c}}function Ge(e,t){return e||t?t?e&&x(e)&&x(t)?{...e,...t}:t:e:{}}async function Fe(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=n.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(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 Ye(e,t,n){let o,r,s=!1;switch(t){case pe.Commands.Config:x(n)&&(v(e.config,n,{shallow:!1}),r=n,s=!0);break;case pe.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,s=!0}break;case pe.Commands.Custom:x(n)&&(e.custom=v(e.custom,n),r=n,s=!0);break;case pe.Commands.Destination:x(n)&&"code"in n&&x(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a}=t;if(!k(n.push))return Ue({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const c=o||{init:!1};let l=s?{...c,before:s}:{...c};i&&(l={...l,next:i}),a&&(l={...l,cache:a});const u={...n,config:l,env:Ge(n.env,r)};let d=u.config.id;if(!d)do{d=D(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[d]);return e.destinations[d]=u,!1!==u.config.queue&&(u.queuePush=[...e.queue]),He(e,void 0,{},{[d]:u})}(e,n));break;case pe.Commands.Globals:x(n)&&(e.globals=v(e.globals,n),r=n,s=!0);break;case pe.Commands.Hook:if(x(n)&&O(n.name)&&k(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case pe.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]||[],s=y(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,qe(e,t,s)}(e,t,o)}break;case pe.Commands.Ready:s=!0;break;case pe.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 He(e)}(e,n),s=!0;break;case pe.Commands.Session:s=!0;break;case pe.Commands.Shutdown:await async function(e){const t=e.logger;await Fe(e.sources,"source",t),await Fe(e.destinations,"destination",t),await Fe(e.transformers,"transformer",t),await Fe(e.stores,"store",t)}(e);break;case pe.Commands.User:x(n)&&(v(e.user,n,{shallow:!1}),r=n,s=!0)}return s&&(await async function(e,t,n,o){var r,s;let i,a=n||[];switch(n||(a=e.on[t]||[]),t){case pe.Commands.Consent:i=o||e.consent;break;case pe.Commands.Session:i=e.session;break;case pe.Commands.User:i=o||e.user;break;case pe.Commands.Custom:i=o||e.custom;break;case pe.Commands.Globals:i=o||e.globals;break;case pe.Commands.Config:i=o||e.config;break;case pe.Commands.Ready:case pe.Commands.Run:default:i=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&&(Ce(o)?!1===await H(o.on,o=>Ae(e,"source",o,{sourceId:n,type:t}))(t,i)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:i})))}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:i});$e(e,o,n,t,i)}});for(const[t,n]of Object.entries(e.sources))Ce(n)&&(null==(s=n.queueOn)?void 0:s.length)&&await Ee(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 s=null==(n=r.config)?void 0:n.require;if(!s)continue;const i=s.indexOf(t);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[o];const a=Ve(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[o]=a}}(e,t),qe(e,t,a,o),!c}(e,t,void 0,r),o=await He(e)),o||Ue({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:s=`${n} ${o}`,data:i={},context:a={},globals:c=e.globals,custom:l={},user:u=e.user,nested:d=[],consent:f=e.consent,id:p=q(),trigger:g="",entity:m=n,action:h=o,timing:v=0,source:y={type:"collector",schema:"4"}}=t;return{name:s,data:i,context:a,globals:c,custom:l,user:u,nested:d,consent:f,id:p,trigger:g,entity:m,action:h,timestamp:r,timing:v,source:y}}function Xe(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,s=null!=(n=e.lowWaterMark)?n:.8,i=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*s),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return i>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},i),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 Ze(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=ge(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},Y(a,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?J(e.match):()=>!0,ttl:e.ttl})),d=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),r=await o.get(n);if(void 0!==r)return l.hits++,c(t,"hit"),r;const s=p.get(n);if(s)return l.inflight_dedups++,c(t,"hit"),s;l.misses++,c(t,"miss");const i=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=f(t,r);if(s)try{await o.set(n,r,1e3*s.ttl),l.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){l.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{await o.set(d(t),n,1e3*s.ttl)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function Qe(e,t,n){const o=`store.${n}`,r=F(t.get,"StoreGet",e.hooks,e.logger),s=F(t.set,"StoreSet",e.hooks,e.logger),i=F(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=ge(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},Y(e,s);try{const s=await r(t),i=Date.now(),a=ge(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},Y(e,a),s}catch(r){const s=Date.now(),i=ge(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Y(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=ge(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},Y(e,a);try{await s(t,n,r);const a=Date.now(),c=ge(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},Y(e,c)}catch(n){const r=Date.now(),s=ge(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Y(e,s),n}},t.delete=async t=>{const n=Date.now(),r=ge(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},Y(e,r);try{await i(t);const r=Date.now(),s=ge(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},Y(e,s)}catch(r){const s=Date.now(),i=ge(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Y(e,i),r}}}async function et(e){var t,n;const o=v({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r=L({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},observers:new Set,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;i.push=function(e,t){const n=F(async(n,o={})=>await H(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:l,preChain:u,include:d,exclude:f}=o;let p=c,g=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(i||"unknown");if(l){const t=await V(g,l,e);if(t.ignore)return Ue({ok:!0});if(l.consent&&!$(l.consent,e.consent,t.event.consent))return Ue({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await xe(e,e.transformers,u,g,v,p,i?`source.${i}.next`:void 0);if(null===n.event)return Ue({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),Ue({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 He(e,r,{id:i,ingest:v,respond:p},h)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:Ue({ok:!0})}g=n.event}const y=t(g),b=Je(e,y),w=await He(e,b,{id:i,ingest:v,respond:p},h);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return w},t=>{if(t instanceof B)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Ue({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id?t.id:"",s=Date.now();Y(e,ge(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:s}));try{const i=await n(t,o),a=Date.now(),c=ge(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:a});return c.durationMs=a-s,c.outEvent=i,Y(e,c),i}catch(t){const n=Date.now(),o=ge(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n});throw o.durationMs=n-s,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,o),t}}}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.3-next-1779963694449"},...e})),i.command=(c=Ye,F(async(e,t,n)=>await H(async()=>await c(a,e,t,n),n=>{if(n instanceof B)throw n;return a.status.failed++,a.logger.error("command failed",{command:e,data:t,error:n}),Ue({ok:!1})})(),"Command",(a=i).hooks,a.logger));const l=e.stores||{};return i.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:s,env:i},l=await t(c);o[n]=l}const r=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){var i;const a=t[s];if("BLACK"===a)return;if("GRAY"===a){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const c=null==(i=e[s].cache)?void 0:i.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${s}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of s){const s=r[t].cache;if(!s)continue;let i,a;void 0!==s.store?(i=o[s.store],a=s.store):(o.__cache||(o.__cache=Xe()),i=o.__cache,a="__cache");const c=null!=(n=s.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=Ze(o[t],{storeId:t,cacheConfig:s,cacheStore:i,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&Qe(e,n,t);return o}(i,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,i.stores,e),i.stores.__cache||(i.stores.__cache=Xe()),i.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,i]of Object.entries(t))(null==(o=null==(n=i.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Ve(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,t={}){var n,o,r,s;const i={};for(const[a,c]of Object.entries(t)){const{code:t,env:l={}}=c,u=fe(c,"Transformer");if(!u.ok){e.logger.warn(`Transformer ${a} invalid (${u.code}): ${u.reason}. Skipping.`);continue}const{config:d}=ve(c,"before"),{config:f}=ve({...c,config:d},"next"),p=Object.keys(l).length>0?{...f,env:l}:f,{cache:g}=c,h=g?{...p,cache:g}:p,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!=(s=w.config)?s:{},next:c.next}),i[a]=w}return i}(i,e.transformers||{}),i}async function tt(e){e=e||{};const t=await et(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const n=e.replace("walker ","");return o.command(n,t)}let i;if("string"==typeof e)i={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=typeof e)return Ue({ok:!1});i=e,t&&"object"==typeof t&&!Array.isArray(t)&&(i.data={...i.data||{},...t})}return n&&"object"==typeof n&&(i.context=n),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),o.push(i)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await Se(e,r,s);if(!t)continue;const i=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...i?{require:[...i]}:{}},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 H(n.init.bind(n),n=>{if(n instanceof B)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,Ce(n)&&await Ee(e,n,t))}return o}(t,e.sources||{});const{consent:r,user:s,globals:i,custom:a}=e;r&&await t.command("consent",r),s&&await t.command("user",s),i&&Object.assign(t.globals,i),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 nt(e,t){return(e.getAttribute(t)||"").trim()}function ot(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 s=t.innerHeight,i=e.getBoundingClientRect(),a=i.height,c=i.y,l=c+a,u={x:i.x+e.offsetWidth/2,y:i.y+e.offsetHeight/2};if(a<=s){if(e.offsetWidth+i.width===0||e.offsetHeight+i.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=s/2;if(c<0&&l<e)return!1;if(l>s&&c>e)return!1;r=n.elementFromPoint(u.x,s/2)}if(r)do{if(r===e)return!0}while(r=r.parentElement);return!1}function rt(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function st(e,t,n,o=!0){return ht(nt(t,rt(e,n,o))||"").reduce((e,n)=>{let[o,r]=vt(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(I(r))):e[o]=I(r),e},{})}function it(e,t=pe.Commands.Prefix){var n;const o=e;if(!o)return[];let r=[];const s=pe.Commands.Action,i=`[${rt(t,s,!1)}]`,a=e=>{Object.keys(st(t,e,s,!1)).forEach(n=>{r=r.concat(at(e,n,t))})};return o!==(o.ownerDocument||o)&&(null==(n=o.matches)?void 0:n.call(o,i))&&a(o),mt(o,i,a),r}function at(e,t,n=pe.Commands.Prefix){const o=[],{actions:r,nearestOnly:s}=function(e,t,n){let o=t;for(;o;){const t=nt(o,rt(e,pe.Commands.Actions,!1));if(t){const e=lt(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=nt(o,rt(e,pe.Commands.Action,!1));if(r){const e=lt(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=ft(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const i=ht(r.actionParams||"",",").reduce((e,t)=>(e[G(t)]=!0,e),{}),a=ut(n,e,i,s);if(!a.length){const t="page",o=`[${rt(n,t)}]`,[r,s]=pt(e,o,n,t);a.push({entity:t,data:r,nested:[],context:s})}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 ct(e=pe.Commands.Prefix,t){if(!t)return{};const n=rt(e,pe.Commands.Globals,!1);let o={};return gt(t,`[${n}]`,t=>{o=v(o,st(e,t,pe.Commands.Globals,!1))}),o}function lt(e){const t={};return ht(e).forEach(e=>{const[n,o]=vt(e),[r,s]=yt(n);if(!r)return;let[i,a]=yt(o||"");i=i||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:s,action:i,actionParams:a})}),t}function ut(e,t,n,o=!1){const r=[];let s=t;for(n=0!==Object.keys(n||{}).length?n:void 0;s;){const i=dt(e,s,t,n);if(i&&(r.push(i),o))break;s=ft(e,s)}return r}function dt(e,t,n,o){const r=nt(t,rt(e));if(!r||o&&!o[r])return null;const s=[t],i=`[${rt(e,r)}],[${rt(e,"")}]`,a=rt(e,pe.Commands.Link,!1);let c={};const l=[],[u,d]=pt(n||t,i,e,r);mt(t,`[${a}]`,n=>{const[o,r]=vt(nt(n,a));"parent"===r&&mt(t.ownerDocument.body,`[${a}="${o}:child"]`,t=>{s.push(t);const n=dt(e,t);n&&l.push(n)})});const f=[];s.forEach(e=>{e.matches(i)&&f.push(e),mt(e,i,e=>f.push(e))});let p={};return f.forEach(t=>{p=v(p,st(e,t,"")),c=v(c,st(e,t,r))}),c=v(v(p,c),u),s.forEach(t=>{mt(t,`[${rt(e)}]`,t=>{const n=dt(e,t);n&&l.push(n)})}),{entity:r,data:c,context:d,nested:l}}function ft(e,t){const n=rt(e,pe.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=vt(nt(t,n));if("child"===o){const o=t.ownerDocument;let r=null;return gt(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 pt(e,t,n,o){let r={};const s={};let i=e;const a=`[${rt(n,pe.Commands.Context,!1)}]`;let c=0;for(;i;)i.matches(t)&&(r=v(st(n,i,""),r),r=v(st(n,i,o),r)),i.matches(a)&&(Object.entries(st(n,i,pe.Commands.Context,!1)).forEach(([e,t])=>{t&&!s[e]&&(s[e]=[t,c])}),++c),i=ft(n,i);return[r,s]}function gt(e,t,n){e.querySelectorAll(t).forEach(n)}function mt(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&mt(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&mt(e.shadowRoot,t,n)})}function ht(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function vt(e){const[t,n]=e.split(/:(.+)/,2);return[G(t),G(n)]}function yt(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var bt=new WeakMap,wt=new WeakMap,kt=new WeakMap;function xt(e){const t=Date.now();let n=wt.get(e);if(!n||t-n.lastChecked>500){n={isVisible:ot(e,e.ownerDocument.defaultView,e.ownerDocument),lastChecked:t},wt.set(e,n)}return n.isVisible}function Ot(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return z(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,s=kt.get(e);if(!s)return;const i=s.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=bt.get(r);if(!a||o-a.lastChecked>1e3){const e=r.ownerDocument.defaultView;a={isLarge:r.offsetHeight>e.innerHeight,lastChecked:o},bt.set(r,a)}if(t.intersectionRatio>=.5||a.isLarge&&xt(r)){const t=null==(n=s.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!i){const t=r.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(xt(r)){const o=null==(t=s.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await Vt(o.context,r,o.trigger);const i=null==(n=s.elementConfigs)?void 0:n.get(r);(null==i?void 0:i.multiple)?i.blocked=!0:function(e,t){const n=kt.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),bt.delete(t),wt.delete(t)}(e,r)}},s.duration);s.timers.set(r,t)}return}}i&&(clearTimeout(i),s.timers.delete(r));const a=null==(o=s.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function jt(e,t,n={multiple:!1}){var o;const r=e.settings.scope;if(!r)return;const s=kt.get(r);(null==s?void 0:s.observer)&&t&&(s.elementConfigs||(s.elementConfigs=new WeakMap),s.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),s.observer.observe(t))}function Et(e){if(!e)return;const t=kt.get(e);t&&(t.observer&&t.observer.disconnect(),kt.delete(e))}function Ct(e,t,n,o,r,s,i){const{elb:a,settings:c}=e;if(O(t)&&t.startsWith("walker ")){if("walker init"===t&&e.initScope){const t=function(e,t){if(At(e))return[e];if(Array.isArray(e)){const t=[];for(const n of e)At(n)&&t.push(n);return t}if(void 0===e){const e=t.scope;if(At(e))return[e];if(void 0!==globalThis.document)return[globalThis.document]}return[]}(n,c);for(const n of t)e.initScope(e,{...c,scope:n});return Promise.resolve(Ue({ok:!0}))}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=St(n,t)}return!e.globals&&c.scope&&(e.globals=ct(c.prefix,c.scope)),a(e)}const[l]=String(x(t)?t.name:t).split(" ");let u,d=x(n)?n:{},f={},p=!1;if(w(n)&&(u=n,p=!0),w(r)?u=r:x(r)&&Object.keys(r).length&&(f=r),u){const e=ut(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(p&&(d=e.data),e.context&&(f=e.context))}const g=c.scope?c.scope.ownerDocument||c.scope:void 0,m=null==g?void 0:g.defaultView;"page"===l&&m&&(d.id=d.id||m.location.pathname);const h=ct(c.prefix,c.scope);return a({name:String(t||""),data:d,context:f,globals:h,nested:s,custom:i,trigger:O(o)?o:"",source:m&&g?St(m,g):void 0})}function St(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}function At(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof Element&&e instanceof Element)return!0;if("undefined"!=typeof Document&&e instanceof Document)return!0;if("nodeType"in e){const t=e.nodeType;return 1===t||9===t}return!1}var It,$t,qt=[],Dt=[],Tt=[];function Pt(){return $t||($t=new AbortController),$t}var Mt="click",_t="hover",Lt="load",Nt="pulse",Rt="scroll",Wt="submit",zt="impression",Ht="visible",Bt="wait";function Kt(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;$t&&$t.abort();$t=new AbortController;const{signal:o}=$t;n.addEventListener("click",z(function(t){Yt.call(this,e,t)}),{signal:o}),n.addEventListener("submit",z(function(t){Jt.call(this,e,t)}),{signal:o})}(e,t)}function Ut(e,t){const n=t.scope;qt=[];const o=n;if(!o)return;Et(o),function(e,t=1e3){kt.has(e)||kt.set(e,{observer:Ot(e),timers:new WeakMap,duration:t})}(o,1e3);const r=rt(t.prefix,pe.Commands.Action,!1);o!==(o.ownerDocument||o)&&Gt(e,o,r,t),mt(o,`[${r}]`,n=>{Gt(e,n,r,t)}),qt.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,s=e.offsetTop;if(r<s)return!0;const i=e.clientHeight;return!(100*(1-(s+i-r)/(i||1))>=n)||(Vt(t,e,Rt),!1)});It||(It=function(e,t=1e3){const{wait:n}=T(t,1e3);let o=null;return function(...t){if(null===o)return o=setTimeout(()=>{o=null},n),e(...t)}}(function(){qt=r.call(t,qt,e)}),t.addEventListener("scroll",It,{signal:Pt().signal}))}(e,o)}async function Vt(e,t,n){const o=at(t,n,e.settings.prefix);return Promise.all(o.map(t=>Ct(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function Gt(e,t,n,o){const r=nt(t,n);r&&Object.values(lt(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case _t:!function(e,t){t.addEventListener("mouseenter",z(function(t){const n=Ft(t);n&&Vt(e,n,_t)}),{signal:Pt().signal})}(e,t);break;case Lt:!function(e,t){Vt(e,t,Lt)}(e,t);break;case Nt:!function(e,t,n=""){const o=t.ownerDocument,r=setInterval(()=>{o.hidden||Vt(e,t,Nt)},parseInt(n||"")||15e3);Dt.push(r)}(e,t,n.triggerParams);break;case Rt:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;qt.push([e,n])}(t,n.triggerParams);break;case zt:jt(e,t);break;case Ht:jt(e,t,{multiple:!0});break;case Bt:!function(e,t,n=""){const o=setTimeout(()=>Vt(e,t,Bt),parseInt(n||"")||15e3);Tt.push(o)}(e,t,n.triggerParams)}}))}function Ft(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 Yt(e,t){const n=Ft(t);n&&Vt(e,n,Mt)}function Jt(e,t){const n=Ft(t);n&&Vt(e,n,Wt)}function Xt(e,t={}){var n;const o=t.name||"elbLayer",r=t.window,s=t.logger;if(!r)return;const i=r;i[o]||(i[o]=[]);const a=i[o],c=r.document;null==s||s.debug("initElbLayer enter",{layerName:o,queuedItems:a.length}),a.push=function(...n){if(en(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return Qt(e,t.prefix,o,c,s),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{Qt(e,t.prefix,n,c,s)}),o},Array.isArray(a)&&a.length>0&&(null==s||s.debug("initElbLayer drain walker commands",{count:a.length}),function(e,t,n,o,r){const s="walker ",i=[...n],a=new Set;i.forEach((n,i)=>{const c=Zt(n);if(!c)return;const l=c[0];!x(l)&&O(l)&&l.startsWith(s)&&(a.add(i),Qt(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,s))}function Zt(e){const t=en(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 Qt(e,t="data-elb",n,o,r){z(()=>{if(Array.isArray(n)){const[s,...i]=n;if(!s||O(s)&&""===s.trim())return void(null==r||r.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(O(s)&&s.startsWith("walker "))return null==r||r.debug("pushCommand walker command",{action:s,data:i[0]}),void e(s,i[0]);null==r||r.debug("pushCommand event (translated)",{action:s,rest:i}),Ct({elb:e,settings:{prefix:t,scope:o,pageview:!1,elb:"",elbLayer:!1}},s,...i)}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 en(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var tn={},nn={};r(nn,{createTrigger:()=>vn,env:()=>on,step:()=>ln,trigger:()=>yn});var on={};r(on,{push:()=>cn});var rn=()=>{},sn=()=>()=>Promise.resolve({ok:!0}),an={error:rn,warn:rn,info:rn,debug:rn,throw:e=>{throw"string"==typeof e?new Error(e):e},json:rn,scope:()=>an},cn={get push(){return sn()},get command(){return sn()},get elb(){return sn()},get window(){return{addEventListener:rn,removeEventListener:rn,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:rn,removeEventListener:rn,querySelector:rn,querySelectorAll:()=>[],getElementById:rn,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:rn,getAttribute:rn,addEventListener:rn,removeEventListener:rn}),body:{appendChild:rn,removeChild:rn},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:an},ln={};r(ln,{clickEvent:()=>dn,contextAndGlobals:()=>hn,dataAttributeTypes:()=>mn,impressionEvent:()=>pn,nestedEntities:()=>gn,pageView:()=>un,submitEvent:()=>fn});var un={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/"}}]]},dn={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"}]]},fn={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"}]]},pn={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"}]]},gn={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"}]]},mn={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"}]]},hn={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"}]]},vn=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let o;const r=document,s=window;return{get flow(){return o},trigger:(t,i)=>async a=>{var c;if("load"===t||!t){const e="object"==typeof i&&null!==i?i:{};if(e.url){const t=new URL(e.url);s.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 tt({...e,run:null==(c=e.run)||c});o={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof i?i: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 Vt(f,u,t)}}},yn=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.document,r=t.window,s=()=>{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",s=o.createElement(r);for(const[e,t]of Object.entries(n.attributes))s.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);s.appendChild(t)}return o.body.appendChild(s),s};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 s()}return()=>{const e=s();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 bn(e={}){const t=e.prefix||"data-elb";return function(e){let n,o=e;const r={},s={},i={},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))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},actions(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},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(s).length>0&&(e[`${t}action`]=u(s)),Object.keys(i).length>0&&(e[`${t}actions`]=u(i)),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 wn=0;function kn(){wn=0}var xn,On=async e=>{if(wn>0&&void 0!==globalThis.window)throw new Error("walker.js browser source is single-instance per window. See packages/web/sources/browser/src/trigger.ts for the invariant note.");wn+=1;const{config:t,env:n,logger:o}=e,{elb:r,command:s,window:i,document:a}=n,c=(null==t?void 0:t.settings)||{},l=i||(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,initScope:Ut},p=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,o=n.defaultView.location,r="page",s="body"in t?t.body:t,[i,a]=pt(s,`[${rt(e,r)}]`,e,r);return i.domain=o.hostname,i.title=n.title,i.referrer=n.referrer,o.search&&(i.search=o.search),o.hash&&(i.hash=o.hash),[i,a]}(e.prefix||"data-elb",e.scope);Ct(f,"page view",t,"load",n)};return{type:"browser",config:{settings:d},push:(...e)=>{const[t,n,o,r,s,i]=e;return Ct(f,t,n,o,r,s,i)},on:async e=>{if("run"===e)u&&l&&(!function(e,t){if(!t.scope)return;Ut(e,t)}(f,d),function(e,t,n,o){const r=O(t.elbLayer)?t.elbLayer:"elbLayer",s=t.prefix||"data-elb",i=n[r];if(!Array.isArray(i))return;const a=n.document;let c=-1;i.forEach((e,t)=>{const n=Zt(e);n&&O(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<i.length;e++){const t=Zt(i[e]);t&&l.push(t)}i.length=c+1,null==o||o.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>Qt(e,s,t,a,o))}(r,d,l,o),p(d))},init:async()=>{l&&u&&(!1!==d.elbLayer&&r&&Xt(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 s=r.ownerDocument||r;"loading"!==s.readyState?o():s.addEventListener("DOMContentLoaded",o)}(Kt,f,d),O(d.elb)&&d.elb&&(l[d.elb]=(...e)=>{const[t,n,o,r,s,i]=e;return Ct(f,t,n,o,r,s,i)}))},destroy:async()=>{$t&&($t.abort(),$t=void 0),It=void 0,qt=[],Dt.forEach(e=>clearInterval(e)),Dt=[],Tt.forEach(e=>clearTimeout(e)),Tt=[],u&&Et(d.scope||u)}}},jn=On;return xn=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of n(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=t(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),xn)})();
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED