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