@walkeros/web-source-browser 4.1.3-next-1780071196115 → 4.2.0-next-1780420352914
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 +14 -4
- package/dist/index.browser.js +1 -1
- package/dist/index.d.mts +22 -85
- package/dist/index.d.ts +22 -85
- 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/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
# @walkeros/web-source-browser
|
|
2
2
|
|
|
3
|
-
## 4.
|
|
3
|
+
## 4.2.0-next-1780420352914
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
+
- 776e5f9: Step examples are no longer bundled into production output. They were
|
|
8
|
+
accidentally exported from the production entry of these packages and pulled
|
|
9
|
+
into bundled JS. Examples remain available via the package `./dev` subpath for
|
|
10
|
+
simulation and testing.
|
|
7
11
|
- Updated dependencies [908d6f0]
|
|
12
|
+
- Updated dependencies [654ba38]
|
|
13
|
+
- Updated dependencies [f4a9013]
|
|
14
|
+
- Updated dependencies [d65bbde]
|
|
15
|
+
- Updated dependencies [d65bbde]
|
|
16
|
+
- Updated dependencies [126c0f1]
|
|
17
|
+
- Updated dependencies [654ba38]
|
|
8
18
|
- Updated dependencies [3eb2467]
|
|
9
|
-
- @walkeros/collector@4.
|
|
10
|
-
- @walkeros/core@4.
|
|
11
|
-
- @walkeros/web-core@4.
|
|
19
|
+
- @walkeros/collector@4.2.0-next-1780420352914
|
|
20
|
+
- @walkeros/core@4.2.0-next-1780420352914
|
|
21
|
+
- @walkeros/web-core@4.2.0-next-1780420352914
|
|
12
22
|
|
|
13
23
|
## 4.1.2
|
|
14
24
|
|
package/dist/index.browser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Source=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,r=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},s={};r(s,{SourceBrowser:()=>rn,__resetInstanceCountForTests:()=>jn,createTagger:()=>xn,default:()=>Sn,examples:()=>sn,getAllEvents:()=>lt,getElbAttributeName:()=>at,getElbValues:()=>ct,getEvents:()=>ut,getGlobals:()=>dt,sourceBrowser:()=>Cn});var i=Object.defineProperty,a=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})};function c(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}a({},{stepId:()=>c});function l(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}a({},{getDestination:()=>l});a({},{Level:()=>d});var u,d=((u=d||{})[u.ERROR=0]="ERROR",u[u.WARN=1]="WARN",u[u.INFO=2]="INFO",u[u.DEBUG=3]="DEBUG",u);function f(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}a({},{getTransformer:()=>f});function p(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}a({},{getSource:()=>p});function g(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}function m(e){return{_meta:{hops:0,path:[e]}}}a({},{getStore:()=>g});var h={merge:!0,shallow:!0,extend:!0};function v(e,t={},n={}){n={...h,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const s=e[o];return n.merge&&Array.isArray(s)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function y(e){return Array.isArray(e)}function b(e){return void 0!==e}function w(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function k(e){return"function"==typeof e}function x(e){return"object"==typeof e&&null!==e&&!y(e)&&"[object Object]"===Object.prototype.toString.call(e)}function O(e){return"string"==typeof e}function j(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=j(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(j(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function E(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&y(r)){const t=o.slice(e+1).join("."),s=[];for(const e of r){const o=E(e,t,n);s.push(o)}return s}if(r=x(r)||y(r)?r[t]:void 0,void 0===r)break}return b(r)?r:n}function C(e,t,n){if(!x(e))return e;const o=j(e),r=t.split(".");let s=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return o}function S(e,t){if(!x(e)&&!y(e))return e;const n=j(e),o=t.split(".");let r=n;for(let e=0;e<o.length;e++){const t=o[e],s=e===o.length-1;if(y(r)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=r.length)return n;if(s)r.splice(e,1);else{const t=r[e];if(!x(t)&&!y(t))return n;r=t}}else if(s)delete r[t];else{const e=r[t];if(!x(e)&&!y(e))return n;r=e}}return n}var A={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing})};function I(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function $(e,t={},n={}){const o={...t,...n},r={};let s=!e||0===Object.keys(e).length;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(s=!0))}),!!s&&r}function q(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function D(e=6,t){if(t){const n=t.length;let o="";for(let r=0;r<e;r++)o+=t[Math.random()*n|0];return o}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}function T(e,t){var n;return"number"==typeof e?{wait:e}:e?{wait:null!=(n=e.wait)?n:t,size:e.size,age:e.age}:{wait:t}}function P(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function M(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=P(e)):n=e,void 0!==t&&(t instanceof Error?o.error=P(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=P(o.error))):o.value=t),{message:n,context:o}}var _=(e,t,n,o)=>{const r=`${d[e]}${o.length>0?` [${o.join(":")}]`:""}`,s=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(r,t,n):i(r,t)};function L(e={}){return N({level:void 0!==e.level?(t=e.level,"string"==typeof t?d[t]:t):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]});var t}function N(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,s=(e,o,s)=>{if(e<=t){const t=M(o,s);n?n(e,t.message,t.context,r,_):_(e,t.message,t.context,r)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const o=M(e,t);throw n?n(0,o.message,o.context,r,_):_(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>N({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function R(e){return function(e){return"boolean"==typeof e}(e)||O(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!b(e)||y(e)&&e.every(R)||x(e)&&Object.values(e).every(R)}function W(e){return R(e)?e:void 0}function z(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function H(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}var B=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function K(e,t={},n={}){var o,r;if(!b(e))return;const s=x(e)&&e.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=null!=(r=n.event)?r:x(e)?e:{};if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:i,mapping:t,collector:n.collector,logger:n.collector.logger,consent:s},c=y(t)?t:[t];for(const t of c){const o=await H(U,e=>{if(e instanceof B)throw e;n.collector&&n.collector.status.failed++,a.logger.error("mapping processing failed",{event:i,error:e})})(e,t,{...a,mapping:t});if(b(o))return o}}async function U(e,t,n){return(y(t)?t:[t]).reduce(async(t,o)=>{const r=await t;if(r)return r;const s=O(o)?{key:o}:o;if(!Object.keys(s).length)return;const{condition:i,consent:a,fn:c,key:l,loop:u,map:d,set:f,validate:p,value:g}=s,m={...n,mapping:o};if(i&&!await H(i,e=>{if(e instanceof B)throw e;return m.logger.error("mapping condition failed",{event:m.event,error:e}),!1})(e,m))return;if(a&&!$(a,m.consent))return g;let h=b(g)?g:e;if(c&&(h=await H(c,e=>{if(e instanceof B)throw e;m.logger.error("mapping fn failed",{event:m.event,error:e})})(e,m)),l&&(h=E(e,l,g)),u){const[t,n]=u,o="this"===t?[e]:await K(e,t,m);y(o)&&(h=(await Promise.all(o.map(e=>K(e,n,m)))).filter(b))}else d?h=await Object.entries(d).reduce(async(t,[n,o])=>{const r=await t,s=await K(e,o,m);return b(s)&&(r[n]=s),r},Promise.resolve({})):f&&(h=await Promise.all(f.map(t=>U(e,t,m))));p&&!await H(p,e=>{if(e instanceof B)throw e;return m.logger.error("mapping validate failed",{event:m.event,error:e}),!1})(h,m)&&(h=void 0);const v=W(h);return b(v)?v:W(g)},Promise.resolve(void 0))}async function V(e,t,n){var o;t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await K(e,o,{collector:n,event:e});e=C(e,t,r)}));const{eventMapping:r,mappingKey:s}=await async function(e,t,n){var o;const[r,s]=(e.name||"").split(" ");if(!t||!r||!s)return{};let i,a="",c=r,l=s;const u=t=>{if(t)return(y(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const o={event:e,mapping:t,collector:n,logger:n.logger,consent:x(e)&&e.consent||n.consent};return Boolean(t.condition(e,o))})};t[c]||(c="*");const d=t[c];return d&&(d[l]||(l="*"),i=u(d[l])),i||(c="*",l="*",i=u(null==(o=t[c])?void 0:o[l])),i&&(a=`${c} ${l}`),{eventMapping:i,mappingKey:a}}(e,t.mapping,n);(null==r?void 0:r.policy)&&await Promise.all(Object.entries(r.policy).map(async([t,o])=>{const r=await K(e,o,{collector:n,event:e});e=C(e,t,r)}));let i=t.data&&await K(e,t.data,{collector:n,event:e});const a=Boolean(null==r?void 0:r.silent);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:s,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await K(e,r.data,{collector:n,event:e});i=x(i)&&x(t)?v(i,t):t}}const c=null!=(o=null==r?void 0:r.include)?o:t.include;if(c&&c.length>0){const t=function(e,t){const n={},o=t.includes("all")?Object.keys(A):t;for(const t of o){const o=A[t];if(!o)continue;const r=o(e);if(x(r))for(const[e,o]of Object.entries(r)){if(void 0===o)continue;const r="context"===t&&Array.isArray(o)?o[0]:o;n[`${t}_${e}`]=r}}return n}(e,c);Object.keys(t).length>0&&(i=x(i)?v(t,i):null!=i?i:t)}if((null==r?void 0:r.remove)&&x(i))for(const e of r.remove)i=S(i,e);return{event:e,data:i,mapping:r,mappingKey:s,ignore:!1,silent:a}}function G(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function F(e,t,n,o){const r=e;return function(...e){let s;const i="pre"+t,a="post"+t,c=n[i],l=n[a],u=(e,t)=>{o?o.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:r},...e)}catch(t){u(`Hook ${String(i)} failed, falling back to original function`,t),s=r(...e)}else s=r(...e);if(l)try{s=l({fn:r,result:s},...e)}catch(e){u(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function Y(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch(e){}}function J(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(J);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(J);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:o,not:r}=e,s=function(e,t){switch(e){case"eq":return e=>String(null!=e?e:"")===t;case"contains":return e=>String(null!=e?e:"").includes(t);case"prefix":return e=>String(null!=e?e:"").startsWith(t);case"suffix":return e=>String(null!=e?e:"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(null!=t?t:""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,o);return e=>{const n=E(e,t),o=s(n);return r?!o:o}}(e)}function X(e){return Array.isArray(e)&&e.length>0&&e.every(e=>function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}(e))}function Z(e){return e.map(e=>{var t,n;if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:null!=(t=Q(e))?t:{type:"chain",value:[]}};const o=e;return{match:o.match?J(o.match):()=>!0,next:null!=(n=Q(o))?n:{type:"chain",value:[]}}})}function Q(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(X(e))return Q({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=Q(n);void 0!==e&&t.push(e)}if(0===t.length)return;return{type:"sequence",value:t}}const t=e;if("next"in t&&void 0!==t.next)return t.match?{type:"gate",match:J(t.match),next:Q(t.next)}:Q(t.next);if("one"in t&&t.one){const e=Z(t.one);return t.match?{type:"gate",match:J(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Z(t.many);return t.match?{type:"gate",match:J(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:J(t.match)}:void 0}var ee=new WeakMap;function te(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=ee.get(e);t?n=t:(n=Q(e),n&&ee.set(e,n))}else n=Q(e);if(!n)return[];const o=ne(n,t);return void 0===o?[]:Array.isArray(o)?o:[o]}function ne(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;if("gate"===e.type){if(!e.match(t))return;return ne(e.next,t)}if("sequence"===e.type){const n=[];for(const o of e.value){const e=ne(o,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}if("many"===e.type){const n=[];for(const o of e.routes){if(!o.match(t))continue;const e=ne(o.next,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}for(const n of e.routes)if(n.match(t))return ne(n.next,t)}}function oe(e,t){const n={ingest:null!=e?e:{}};return void 0!==t&&(n.event=t),n}function re(e){var t;return{stop:null!=(t=e.stop)&&t,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?J(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function se(e,t,n,o){const r=e.rules.find(e=>e.match(n));if(!r)return null;const s=r.key.map(e=>{var t;return String(null!=(t=E(n,e))?t:"")});if(s.every(e=>""===e))return null;const i=s.join(":"),a=null!=o?o:e.namespace,c=a?`${a}:${i}`:i,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:r}:{status:"MISS",key:c,rule:r}}function ie(e,t,n,o){e.set(t,n,1e3*o)}async function ae(e,t,n,o){if(!t)return e;let r=e;for(const[e,s]of Object.entries(t))r=C(r,e,await K(n,s,{collector:o}));return r}function ce(e){return y(e)?e:[e]}async function le(e,t,n,o){let r=n;for(const n of e)await H(async()=>{const e=t(n.store);if(!e)return;const s=await K(r,n.key,{collector:o,event:r});if(!O(s))return;const i=n.store?s:`state:${s}`;if("set"===n.mode){const t=await K(r,n.value,{collector:o,event:r});if(!b(t))return;await e.set(i,t)}else{const t=O(a=n.value)?a:x(a)&&O(a.key)?a.key:void 0;if(!t)return;const o=await e.get(i);if(!b(o))return;r=C(r,t,o)}var a},e=>{var t,n;null==(n=null==(t=o.logger)?void 0:t.error)||n.call(t,"[state] operation failed",e)})();return r}var ue={Source:["code","package","import","before","next","cache","state"],Transformer:["code","package","import","before","next","cache","state","mapping"],Destination:["code","package","import","before","next","cache","state"],Store:["code","package","import","cache"]},de=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],fe={Source:["primary"],Transformer:[],Destination:[],Store:[]},pe=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function ge(e,t){const n=(o=t,new Set([...ue[o],...de,...fe[o]]));var o;for(const o of Object.keys(e))if(!n.has(o))return{ok:!1,code:"UNKNOWN_KEY",key:o,reason:`Unknown key "${o}" on ${t}. Allowed: ${[...n].sort().join(", ")}.`};const r=void 0!==e.package,s=void 0!==e.import,i=void 0!==e.code;return i&&"string"==typeof e.code?{ok:!1,code:"OBSOLETE_CODE_STRING",key:"code",reason:`code: "<name>" is no longer supported. Use import: "${e.code}" with the package field instead.`}:i&&("object"!=typeof e.code&&"function"!=typeof e.code||null===e.code||Array.isArray(e.code))?{ok:!1,code:"INVALID_CODE_SHAPE",key:"code",reason:"code must be an object ({ push, type?, init? }) or a resolved function value."}:i&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:i&&s?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:s&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!s||"string"==typeof e.import&&pe.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${pe.source}. Got: ${JSON.stringify(e.import)}.`}}var me={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};function he(e,t){const n=e.status.startedAt;return{flowId:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n}}function ve(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function ye(e,t){return e?t.stores[e]:t.stores.__cache}function be(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 we(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 ke(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 xe(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:m(n),config:t.config,env:Ce(t.config.env)};r.debug("init");const i=await F(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:(null==i?void 0:i.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function Oe(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),l={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...Ce(t.config.env),...s?{respond:s}:{}}};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=Date.now();Y(e,he(e,{stepId:c("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:d}));try{const r=await F(t.push,"TransformerPush",e.hooks,e.logger)(o,l),s=Date.now(),i=he(e,{stepId:c("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s});return i.durationMs=s-d,i.outEvent=r,Y(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=he(e,{stepId:c("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o});throw r.durationMs=o-d,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,r),t}}function je(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:m(t)}async function Ee(e,t,n,o,r,s,i){var a,c,l,u,d,f,p,g,h;r||(r=m(null!=(a=n[0])?a:"chain")),i&&r._meta&&(r._meta.chainPath=i);let v=o,y=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:y};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await H(xe,t=>{if(t instanceof B)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,s,o))return{event:null,respond:y};if(i&&void 0!==(null==(l=null==(c=s.config)?void 0:c.chainMocks)?void 0:l[i])){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),v=t;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),v=s.config.mock;continue}if(null==(d=s.config)?void 0:d.disabled)continue;const a=null==(f=s.config)?void 0:f.cache,m=a?re(a):void 0,b=m?ve(m,e):void 0,w=(null==(p=s.config)?void 0:p.state)?ce(s.config.state):void 0,k=null==w?void 0:w.filter(e=>"get"===e.mode),x=null==w?void 0:w.filter(e=>"set"===e.mode);let O;if(m&&b){const e=oe(r,v),t=await se(m,b,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(v=t.value,m.stop)return{event:v,respond:y,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(O={key:t.key,ttl:t.rule.ttl})}const j=s.config.before;if(j){const n=te(j,oe(r,v));if(1===n.length){const o=ke(n[0],be(t));if(o.length>0){const n=await Ee(e,t,o,v,r,y,i);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:y};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(h=n.respond)?h:y,stopped:!0};n.respond&&(y=n.respond),v=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>H(Ee,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ke(n,be(t)),v,je(r,n),void 0,i)))}k&&k.length>0&&(v=await le(k,t=>ye(t,e),v,e));const E=await H(Oe,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,v,r,y);if(!1===E)return{event:null,respond:y};if(Array.isArray(E)){const s=n.slice(n.indexOf(o)+1),a=await Promise.all(E.map(async n=>{const o=n.event||v,a=je(r,"unknown");if(n.next){const r=te(n.next,oe(a,o));if(0===r.length)return{event:o,respond:y};if(1===r.length){const n=ke(r[0],be(t));return n.length>0?Ee(e,t,n,o,a,y,i):{event:o,respond:y}}return(await Promise.all(r.map(n=>H(Ee,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ke(n,be(t)),o,je(a,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?Ee(e,t,s,o,a,y,i):{event:o,respond:y}}));let c=y;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(E&&"object"==typeof E){const{event:n,respond:o,next:s}=E;if(o&&(y=o),void 0!==s){const o=te(s,oe(r,v));if(0===o.length){n&&(v=n);continue}if(1===o.length){const a=ke(o[0],be(t));return a.length>0?Ee(e,t,a,n||v,r,y,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:y})}return await Promise.all(o.map(o=>H(Ee,t=>(e.logger.scope("transformer:many").error(`many branch ${o} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ke(o,be(t)),n||v,je(r,o),void 0,i))),{event:null,respond:void 0}}n&&(v=n)}x&&x.length>0&&(v=await le(x,t=>ye(t,e),v,e)),O&&b&&ie(b,O.key,v,O.ttl);const C=s.config.next,S="string"==typeof C||Array.isArray(C)&&C.every(e=>"string"==typeof e),A=void 0!==C&&!S;if((!E||"object"==typeof E&&!E.next)&&A){const n=te(s.config.next,oe(r,v));if(1===n.length){const o=ke(n[0],be(t));return o.length>0?Ee(e,t,o,v,r,y,i):{event:v,respond:y}}return n.length>1?(await Promise.all(n.map(n=>H(Ee,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ke(n,be(t)),v,je(r,n),void 0,i))),{event:null,respond:void 0}):{event:v,respond:y}}}return{event:v,respond:y}}function Ce(e){return e&&x(e)?e:{}}function Se(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function Ae(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const s=t.queueOn;t.queueOn=[];const i=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of s)await H(t.on,t=>{if(t instanceof B)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:i,type:n,error:t})})(n,o)}function Ie(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}async function $e(e,t,n){var o,r;const{code:s,config:i={},env:a={},primary:c,next:l,before:u,cache:d}=n,f=null!=(o=i.state)?o:n.state,p=f?ce(f):void 0,g=d,h=g?re({...g,stop:null==(r=g.stop)||r}):void 0,v=Se(l)?ke(l,be(e.transformers)):void 0,y=Se(u)?ke(u,be(e.transformers)):void 0,b=a.push,w=null!=b?b:e.push,k=Boolean(b),x=async(n,o,r)=>{var s;let a;const c=null!=y?y:void 0!==u?(()=>{const t=te(u,oe(r.ingest));return 0===t.length?[]:ke(1===t.length?t[0]:t,be(e.transformers))})():[];let d=[n];if(c.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await Ee(e,e.transformers,c,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(h){const t=ve(h,e);if(t){const n=oe(r.ingest),o=await se(h,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&h.stop){let t=o.value;return o.rule.update&&(t=await ae(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(s=r.respond)||s.call(r,t),{ok:!0}}if("MISS"===o.status&&h.stop&&r.respond){const s=r.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{ie(t,l,n,u),i?a=(async()=>{const t=await ae(n,i,c,e);s(t)})():s(n)};r.respond=d}"MISS"!==o.status||h.stop||ie(t,o.key,!0,o.rule.ttl)}}}const f=v?{kind:"single",preChain:v}:void 0!==l?(()=>{const t=te(l,oe(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ke(t[0],be(e.transformers))}:{kind:"many",branches:t.map(t=>ke(t,be(e.transformers)))}})():{kind:"single",preChain:[]};p&&p.length>0&&(d=await Promise.all(d.map(t=>le(p,t=>ye(t,e),t,e))));let g={ok:!0};for(const n of d)"many"===f.kind?(await Promise.all(f.branches.map((s,a)=>H(async()=>k?w(n):w(n,{...o,id:t,ingest:je(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}))())),g={ok:!0}):g=k?await w(n):await w(n,{...o,id:t,ingest:r.ingest,respond:r.respond,mapping:i,preChain:f.preChain});return a&&await a,g},O=async n=>{const o=m(t);if(!i.ingest||void 0===n)return o;const r=await K(n,i.ingest,{collector:e});return{...o,...r,_meta:o._meta}},j=e.logger.scope("source").scope(t),E={command:e.command,sources:e.sources,elb:e.sources.elb.push,logger:j,...a,push:async(e,n={})=>{const o={ingest:m(t),respond:void 0};return x(e,n,o)}},C={collector:e,logger:j,id:t,config:i,env:E,withScope:async(e,t,n)=>{const o={ingest:await O(e),respond:t};return n({...E,push:(e,t={})=>x(e,t,o),ingest:o.ingest,respond:o.respond})}},S=await H(s,n=>{if(n instanceof B)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(C);if(!S)return;const A=S.type||"unknown",I=e.logger.scope(A).scope(t);return E.logger=I,c&&(S.config={...S.config,primary:c}),S}function qe(e,t,n,o){if(n instanceof B)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}function De(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Te(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:n,config:t.config,data:r,env:Je(t.env,t.config.env)};z(t.on,t=>qe(e,"destination",t,{destId:n,type:o}))(o,a)}function Pe(e,t,n,o){let r;switch(t){case me.Commands.Consent:r=o||e.consent;break;case me.Commands.Session:r=e.session;break;case me.Commands.User:r=o||e.user;break;case me.Commands.Custom:r=o||e.custom;break;case me.Commands.Globals:r=o||e.globals;break;case me.Commands.Config:r=o||e.config;break;case me.Commands.Ready:case me.Commands.Run:default:r=void 0}if(n.length)switch(t){case me.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=De(e,me.Commands.Consent);t.forEach(t=>{Object.keys(o).filter(e=>e in t).forEach(n=>{z(t[n],t=>qe(e,"consent",t,{key:n}))(o,r)})})}(e,n,o);break;case me.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=De(e,me.Commands.Ready);t.forEach(t=>{z(t,t=>qe(e,"ready",t))(void 0,n)})}(e,n);break;case me.Commands.Run:!function(e,t){if(!e.allowed)return;const n=De(e,me.Commands.Run);t.forEach(t=>{z(t,t=>qe(e,"run",t))(void 0,n)})}(e,n);break;case me.Commands.Session:!function(e,t){if(!e.session)return;const n=De(e,me.Commands.Session);t.forEach(t=>{z(t,t=>qe(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=De(e,t);n.forEach(n=>{"function"==typeof n&&z(n,n=>qe(e,"generic",n,{type:t}))(r,o)});break}}}function Me(e,t,n,o){var r;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(r=n.onOverflow)?r:"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var _e=new WeakMap;function Le(e,t,n,o){_e.get(e)||(_e.set(e,!0),t.warn(n,o))}function Ne(e){_e.delete(e)}var Re=Object.freeze({batched:!0});function We(e){return e===Re}function ze(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function He(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 Be(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(null!=(r=s[n])?r:0)+o,s[n]}function Ke(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ke(e,t);if("string"==typeof e)return ke(e,t);const o=te(e,oe(n));return 0===o.length?[]:1===o.length?ke(o[0],t):ke(o,t)}async function Ue(e,t,n={},o){var r,s,i,a,l,u;const{allowed:d,consent:f,globals:p,user:g}=e;if(!d)return Fe({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=Me(e.queue,t,{max:n});if(o.dropped>0){const t=Be(e.status,c("collector"),"queue",o.dropped);Le(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Ne(e.queue);e.status.in++}o||(o=e.destinations);const h=e.transformers?be(e.transformers):{},y=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var s,i,a,l,u;if(r.config.disabled)return{id:o,destination:r,skipped:!0};let d=(r.queuePush||[]).map(e=>({...e,consent:f}));r.queuePush=[],t&&d.push(j(t));const y=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:m("unknown");if(!d.length&&!(null==(s=r.queueOn)?void 0:s.length))return{id:o,destination:r,skipped:!0};if(!d.length&&(null==(i=r.queueOn)?void 0:i.length)){let t=!1;try{t=await Ve(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=[],w=d.filter(t=>{const n=$(r.config.consent,f,t.consent);if(n)return t.consent=n,b.push(t),!1;const s=he(e,{stepId:c("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now()});return s.skipReason="consent",f&&(s.consent={...f}),r.config.consent&&(s.meta={required:{...r.config.consent}}),Y(e,s),!0});if(w.length>0){const t=r.queuePush,n=r.config.id||o,s={max:null!=(a=r.config.queueMax)?a:1e3};let i=0;for(const e of w)i+=Me(t,e,s).dropped;if(i>0){He(e,n);const o=Be(e.status,c("destination",n),"queue",i);Le(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&Ne(t)}if(!b.length)return{id:o,destination:r,queue:d};let k,x,O=!1;try{O=await Ve(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(!O)return{id:o,destination:r,queue:d};r.dlq||(r.dlq=[]);const E=Ke(r.config.before,h,y),C=r.config.next,S=null==(l=r.config)?void 0:l.cache,A=S?re(S):void 0,I=A?ve(A,e):void 0,q=(null==(u=r.config)?void 0:u.state)?ce(r.config.state):void 0,D=null==q?void 0:q.filter(e=>"get"===e.mode),T=null==q?void 0:q.filter(e=>"set"===e.mode);let P=0,M=0;return await Promise.all(b.map(async t=>{let s;if(t.globals=v(p,t.globals),t.user=v(g,t.user),(null==A?void 0:A.stop)&&I){const e=oe(y,t),n=await se(A,I,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let i=t,a=n.respond;if(E.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Ee(e,e.transformers,E,t,y,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),i=Array.isArray(r.event)?r.event[0]:r.event}if(A&&!A.stop&&I){const e=oe(y,i),n=await se(A,I,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}D&&D.length>0&&i&&(i=await le(D,t=>ye(t,e),i,e));const l=Date.now();let u=!1;const d=await H(Ge,t=>{var n;const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:t,event:i.name}),k=t,u=!0;const a=r.dlq,l=r.config.id||o,d={max:null!=(n=r.config.dlqMax)?n:100},f=Me(a,[i,t],d);if(f.dropped>0){He(e,l);const t=Be(e.status,c("destination",l),"dlq",f.dropped);Le(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&&Ne(a)})(e,r,o,i,y,a);if(P+=Date.now()-l,s&&I&&void 0===r.config.mock&&ie(I,s.key,null==d||d,s.ttl),!u&&T&&T.length>0&&i&&(i=await le(T,t=>ye(t,e),i,e)),void 0===d||We(d)||(x=d),We(d)&&M++,!u&&C){void 0!==d&&(y._response=d);const t=Ke(C,h,y);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Ee(e,e.transformers,t,i,y,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:k,response:x,totalDuration:P,batchedCount:M,allowedCount:b.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};He(e,t.id);const c=e.status.destinations[t.id],d=Date.now();if(c.queuePushSize=null!=(s=null==(r=n.queuePush)?void 0:r.length)?s:0,c.dlqSize=null!=(a=null==(i=n.dlq)?void 0:i.length)?a:0,t.error)o.error=t.error,k[t.id]=o,c.failed++,c.lastAt=d,c.duration+=t.totalDuration||0,e.status.failed++;else if(t.queue&&t.queue.length)w[t.id]=o;else{const n=null!=(l=t.batchedCount)?l:0,r=null!=(u=t.allowedCount)?u:0;(Math.max(0,r-n)>0||0===r)&&(b[t.id]=o,c.count++,c.lastAt=d,c.duration+=t.totalDuration||0,e.status.out++)}}return Fe({event:t,...Object.keys(b).length&&{done:b},...Object.keys(w).length&&{queued:w},...Object.keys(k).length&&{failed:k}})}async function Ve(e,t,n){var o;if(t.init&&!t.config.init){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:n,config:t.config,env:Je(t.env,t.config.env)};s.debug("init");const a=Date.now();let l;Y(e,he(e,{stepId:c("destination",n),stepType:"destination",phase:"init",eventId:"",now:a}));try{l=await F(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),r=he(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-a,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,r),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(o=t.queueOn)?void 0:o.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)Te(e,t,n,r,s)}s.debug("init done")}return!0}async function Ge(e,t,n,o,r,s){var i,a,l,u,d,f,p;const{config:g}=t,m=await V(o,g,e);if(m.ignore)return!1;const h=t.type||"unknown",v=e.logger.scope(h),y={collector:e,logger:v,id:n,config:g,data:m.data,rule:m.mapping,ingest:r,env:{...Je(t.env,g.env),...s?{respond:s}:{}}};if(void 0!==g.mock)return v.debug("mock",{event:m.event.name}),g.mock;const w=m.mapping,k=m.mappingKey||"* *";if((null==w?void 0:w.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[k]){const o={key:k,entries:[],events:[],data:[]},r=ze(w.batch),s=ze(g.batch),p=null!=(a=null!=(i=r.wait)?i:s.wait)?a:3e4,m=null!=(u=null!=(l=r.size)?l:s.size)?u:1e3,h=null!=(f=null!=(d=r.age)?d:s.age)?f:3e4,y=Je(t.env,g.env),b=function(e,t=1e3,n=!1){const{wait:o,size:r,age:s}=T(t,1e3);let i,a,c=null,l=null,u=!1,d=[],f=0;const p=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),f=0,a=void 0},g=()=>{const t=a,n=d;if(p(),d=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},m=(...t)=>new Promise(p=>{const m=n&&!u;if(a=t,f+=1,d.push(p),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||g()},o),void 0===s||l||(l=setTimeout(()=>{l=null,g()},s)),void 0!==r&&f>=r)g();else if(m){u=!0,i=e(...t);const n=d;d=[],n.forEach(e=>e(i))}});return m.flush=()=>a||0!==d.length?new Promise(e=>{d.push(e),g()}):Promise.resolve(void 0),m.cancel=()=>{const e=d;d=[],p(),e.forEach(e=>e(void 0))},m.size=()=>f,m}(async()=>{var o;const r=t.batches[k].batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const i=s.entries[0],a={collector:e,logger:v,id:n,config:g,data:void 0,rule:i.rule,ingest:i.ingest,env:{...y,...i.respond?{respond:i.respond}:{}}};v.debug("push batch",{events:s.entries.length});const l=t.config.id||n,u=He(e,l),d=Date.now(),f=he(e,{stepId:c("destination",n),stepType:"destination",phase:"flush",eventId:"",now:d});f.batch={size:s.entries.length,index:0},Y(e,f);let p=!0;await H(F(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger),o=>{var r;p=!1;const i=Date.now(),a=he(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:"",now:i});a.durationMs=i-d,a.error=o instanceof Error?{name:o.name,message:o.message}:{message:String(o)},a.batch={size:s.entries.length,index:0},Y(e,a);const f=t.dlq=t.dlq||[],g={max:null!=(r=t.config.dlqMax)?r:100};let m=0;for(const e of s.entries)m+=Me(f,[e.event,o],g).dropped;if(m>0){const t=Be(e.status,c("destination",l),"dlq",m);Le(f,v,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:l,cap:g.max,droppedCount:t})}else f.length<g.max&&Ne(f);u.failed+=s.entries.length,u.dlqSize=f.length,e.status.failed+=s.entries.length,v.error("Push batch failed",{error:o instanceof Error?o.message:String(o),entries:s.entries.length})})(s,a),v.debug("push batch done"),u.inFlightBatch=Math.max(0,(null!=(o=u.inFlightBatch)?o:0)-s.entries.length),p&&(u.count+=s.entries.length,u.lastAt=Date.now(),e.status.out+=s.entries.length)},{wait:p,size:m,age:h});t.batches[k]={batched:o,batchFn:()=>{b()},flush:async()=>{await b.flush()}}}const o=t.batches[k];o.batched.entries.push({event:m.event,ingest:r,respond:s,rule:w,data:m.data}),o.batched.events.push(m.event),b(m.data)&&o.batched.data.push(m.data);const h=t.config.id||n,y=He(e,h);return y.inFlightBatch=(null!=(p=y.inFlightBatch)?p:0)+1,o.batchFn(),Re}{v.debug("push",{event:m.event.name});const o="string"==typeof m.event.id?m.event.id:"",r=Date.now(),s=he(e,{stepId:c("destination",n),stepType:"destination",phase:"in",eventId:o,now:r});m.mappingKey&&(s.mappingKey=m.mappingKey),m.event.consent&&(s.consent={...m.event.consent}),Y(e,s);try{const s=await F(t.push,"DestinationPush",e.hooks,e.logger)(m.event,y),i=Date.now(),a=he(e,{stepId:c("destination",n),stepType:"destination",phase:"out",eventId:o,now:i});return a.durationMs=i-r,a.outEvent=s,m.mappingKey&&(a.mappingKey=m.mappingKey),Y(e,a),v.debug("push done"),s}catch(t){const s=Date.now(),i=he(e,{stepId:c("destination",n),stepType:"destination",phase:"error",eventId:o,now:s});throw i.durationMs=s-r,i.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},m.mappingKey&&(i.mappingKey=m.mappingKey),Y(e,i),t}}}function Fe(e){return{ok:!(null==e?void 0:e.failed),...e}}function Ye(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=we(e,"before"),{config:a}=we({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const l=Je(t.env,o);return{...t,config:c,env:l}}function Je(e,t){return e||t?t?e&&x(e)&&x(t)?{...e,...t}:t:e:{}}async function Xe(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=n.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};try{await Promise.race([s(c),new Promise((n,o)=>setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3))])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}});await Promise.allSettled(o)}async function Ze(e,t,n){let o,r,s=!1;switch(t){case me.Commands.Config:x(n)&&(v(e.config,n,{shallow:!1}),r=n,s=!0);break;case me.Commands.Consent:if(x(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=v(e.consent,n),{update:n}}(e,n);r=t,s=!0}break;case me.Commands.Custom:x(n)&&(e.custom=v(e.custom,n),r=n,s=!0);break;case me.Commands.Destination:x(n)&&"code"in n&&x(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!k(n.push))return Fe({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const l=o||{init:!1};let u=s?{...l,before:s}:{...l};i&&(u={...u,next:i}),a&&(u={...u,cache:a}),void 0!==c&&void 0===u.state&&(u={...u,state:c});const d={...n,config:u,env:Je(n.env,r)};let f=d.config.id;if(!f)do{f=D(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[f]);return e.destinations[f]=d,!1!==d.config.queue&&(d.queuePush=[...e.queue]),Ue(e,void 0,{},{[f]:d})}(e,n));break;case me.Commands.Globals:x(n)&&(e.globals=v(e.globals,n),r=n,s=!0);break;case me.Commands.Hook:if(x(n)&&O(n.name)&&k(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case me.Commands.On:if(x(n)&&O(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){const o=e.on,r=o[t]||[],s=y(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Pe(e,t,s)}(e,t,o)}break;case me.Commands.Ready:s=!0;break;case me.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 Ue(e)}(e,n),s=!0;break;case me.Commands.Session:s=!0;break;case me.Commands.Shutdown:await async function(e){const t=e.logger;await Xe(e.sources,"source",t),await Xe(e.destinations,"destination",t),await Xe(e.transformers,"transformer",t),await Xe(e.stores,"store",t)}(e);break;case me.Commands.User:x(n)&&(v(e.user,n,{shallow:!1}),r=n,s=!0)}return s&&(await async function(e,t,n,o){var r,s;let i,a=n||[];switch(n||(a=e.on[t]||[]),t){case me.Commands.Consent:i=o||e.consent;break;case me.Commands.Session:i=e.session;break;case me.Commands.User:i=o||e.user;break;case me.Commands.Custom:i=o||e.custom;break;case me.Commands.Globals:i=o||e.globals;break;case me.Commands.Config:i=o||e.config;break;case me.Commands.Ready:case me.Commands.Run:default:i=void 0}let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(r=o.config.require)?void 0:r.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(Ie(o)?!1===await H(o.on,o=>qe(e,"source",o,{sourceId:n,type:t}))(t,i)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:i})))}Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:i});Te(e,o,n,t,i)}});for(const[t,n]of Object.entries(e.sources))Ie(n)&&(null==(s=n.queueOn)?void 0:s.length)&&await Ae(e,n,t);return Object.keys(e.pending.destinations).length>0&&await async function(e,t){var n;for(const[o,r]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[o]||e.destinations[o])continue;const s=null==(n=r.config)?void 0:n.require;if(!s)continue;const i=s.indexOf(t);if(-1===i)continue;if(s.splice(i,1),s.length>0)continue;delete e.pending.destinations[o];const a=Ye(r);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[o]=a}}(e,t),Pe(e,t,a,o),!c}(e,t,void 0,r),o=await Ue(e)),o||Fe({ok:!0})}function Qe(e,t){if(!t.name)throw new Error("Event name is required");const[n,o]=t.name.split(" ");if(!n||!o)throw new Error("Event name is invalid");const{timestamp:r=Date.now(),name:s=`${n} ${o}`,data:i={},context:a={},globals:c=e.globals,custom:l={},user:u=e.user,nested:d=[],consent:f=e.consent,id:p=q(),trigger:g="",entity:m=n,action:h=o,timing:v=0,source:y={type:"collector",schema:"4"}}=t;return{name:s,data:i,context:a,globals:c,custom:l,user:u,nested:d,consent:f,id:p,trigger:g,entity:m,action:h,timestamp:r,timing:v,source:y}}function et(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,s=null!=(n=e.lowWaterMark)?n:.8,i=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*s),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return i>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},i),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>r&&function(){if(c.size<=r)return;const e=c.size-a;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function tt(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=he(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},Y(a,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?J(e.match):()=>!0,ttl:e.ttl})),d=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),r=await o.get(n);if(void 0!==r)return l.hits++,c(t,"hit"),r;const s=p.get(n);if(s)return l.inflight_dedups++,c(t,"hit"),s;l.misses++,c(t,"miss");const i=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=f(t,r);if(s)try{await o.set(n,r,1e3*s.ttl),l.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){l.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{await o.set(d(t),n,1e3*s.ttl)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function nt(e,t,n){const o=`store.${n}`,r=F(t.get,"StoreGet",e.hooks,e.logger),s=F(t.set,"StoreSet",e.hooks,e.logger),i=F(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=he(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},Y(e,s);try{const s=await r(t),i=Date.now(),a=he(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},Y(e,a),s}catch(r){const s=Date.now(),i=he(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Y(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=he(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},Y(e,a);try{await s(t,n,r);const a=Date.now(),c=he(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},Y(e,c)}catch(n){const r=Date.now(),s=he(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Y(e,s),n}},t.delete=async t=>{const n=Date.now(),r=he(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},Y(e,r);try{await i(t);const r=Date.now(),s=he(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},Y(e,s)}catch(r){const s=Date.now(),i=he(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Y(e,i),r}}}async function ot(e){var t,n;const o=v({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r=L({level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler}),s={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},observers:new Set,logger:r,on:{},queue:[],round:0,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},push:void 0,command:void 0};var a,c;i.push=function(e,t){const n=F(async(n,o={})=>await H(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:l,preChain:u,include:d,exclude:f}=o;let p=c,g=n;const h=d||f?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,f):void 0,v=null!=a?a:m(i||"unknown");if(l){const t=await V(g,l,e);if(t.ignore)return Fe({ok:!0});if(l.consent&&!$(l.consent,e.consent,t.event.consent))return Fe({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Ee(e,e.transformers,u,g,v,p,i?`source.${i}.next`:void 0);if(null===n.event)return Fe({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),Fe({ok:!0});if(n.respond&&(p=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=Qe(e,o);return Ue(e,r,{id:i,ingest:v,respond:p},h)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:Fe({ok:!0})}g=n.event}const y=t(g),b=Qe(e,y),w=await Ue(e,b,{id:i,ingest:v,respond:p},h);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return w},t=>{if(t instanceof B)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Fe({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id?t.id:"",s=Date.now();Y(e,he(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:s}));try{const i=await n(t,o),a=Date.now(),c=he(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:a});return c.durationMs=a-s,c.outEvent=i,Y(e,c),i}catch(t){const n=Date.now(),o=he(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n});throw o.durationMs=n-s,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Y(e,o),t}}}(i,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",schema:"4",version:"4.1.3-next-1780071196115"},...e})),i.command=(c=Ze,F(async(e,t,n)=>await H(async()=>await c(a,e,t,n),n=>{if(n instanceof B)throw n;return a.status.failed++,a.logger.error("command failed",{command:e,data:t,error:n}),Fe({ok:!1})})(),"Command",(a=i).hooks,a.logger));const l=e.stores||{};return i.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:s,env:i},l=await t(c);o[n]=l}const r=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){var i;const a=t[s];if("BLACK"===a)return;if("GRAY"===a){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const c=null==(i=e[s].cache)?void 0:i.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${s}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of s){const s=r[t].cache;if(!s)continue;let i,a;void 0!==s.store?(i=o[s.store],a=s.store):(o.__cache||(o.__cache=et()),i=o.__cache,a="__cache");const c=null!=(n=s.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=tt(o[t],{storeId:t,cacheConfig:s,cacheStore:i,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&nt(e,n,t);return o}(i,l),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(l,i.stores,e),i.stores.__cache||(i.stores.__cache=et()),i.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,i]of Object.entries(t))(null==(o=null==(n=i.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Ye(i);return r}(i,e.destinations||{}),i.transformers=await async function(e,t={}){var n,o,r,s;const i={};for(const[a,c]of Object.entries(t)){const{code:t,env:l={}}=c,u=ge(c,"Transformer");if(!u.ok){e.logger.warn(`Transformer ${a} invalid (${u.code}): ${u.reason}. Skipping.`);continue}const{config:d}=we(c,"before"),{config:f}=we({...c,config:d},"next"),p=Object.keys(l).length>0?{...f,env:l}:f,{cache:g}=c,h=g?{...p,cache:g}:p,{state:v}=c,y=void 0!==v&&void 0===h.state?{...h,state:v}:h,b=e.logger.scope("transformer").scope(a),w={collector:e,logger:b,id:a,ingest:m(a),config:y,env:l},k=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})}},x=await k(w);void 0!==c.before&&void 0===(null==(n=x.config)?void 0:n.before)&&(x.config={...null!=(o=x.config)?o:{},before:c.before}),void 0!==c.next&&void 0===(null==(r=x.config)?void 0:r.next)&&(x.config={...null!=(s=x.config)?s:{},next:c.next}),i[a]=x}return i}(i,e.transformers||{}),i}async function rt(e){e=e||{};const t=await ot(e),n=(o=t,{type:"elb",config:{},push:async(e,t,n,r,s)=>{if("string"==typeof e&&e.startsWith("walker ")){const n=e.replace("walker ","");return o.command(n,t)}let i;if("string"==typeof e)i={name:e},t&&"object"==typeof t&&!Array.isArray(t)&&(i.data=t);else{if(!e||"object"!=typeof e)return Fe({ok:!1});i=e,t&&"object"==typeof t&&!Array.isArray(t)&&(i.data={...i.data||{},...t})}return n&&"object"==typeof n&&(i.context=n),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),o.push(i)}});var o;t.sources.elb=n,await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await $e(e,r,s);if(!t)continue;const i=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...i?{require:[...i]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await H(n.init.bind(n),n=>{if(n instanceof B)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,Ie(n)&&await Ae(e,n,t))}return o}(t,e.sources||{});const{consent:r,user:s,globals:i,custom:a}=e;r&&await t.command("consent",r),s&&await t.command("user",s),i&&Object.assign(t.globals,i),a&&Object.assign(t.custom,a),t.config.run&&await t.command("run");let c=n.push;const l=Object.values(t.sources).filter(e=>"elb"!==e.type),u=l.find(e=>e.config.primary);return u?c=u.push:l.length>0&&(c=l[0].push),{collector:t,elb:c}}function st(e,t){return(e.getAttribute(t)||"").trim()}function it(e,t,n){const o=t.getComputedStyle(e);if("none"===o.display)return!1;if("visible"!==o.visibility)return!1;if(o.opacity&&Number(o.opacity)<.1)return!1;let r;const s=t.innerHeight,i=e.getBoundingClientRect(),a=i.height,c=i.y,l=c+a,u={x:i.x+e.offsetWidth/2,y:i.y+e.offsetHeight/2};if(a<=s){if(e.offsetWidth+i.width===0||e.offsetHeight+i.height===0)return!1;if(u.x<0)return!1;if(u.x>(n.documentElement.clientWidth||t.innerWidth))return!1;if(u.y<0)return!1;if(u.y>(n.documentElement.clientHeight||t.innerHeight))return!1;r=n.elementFromPoint(u.x,u.y)}else{const e=s/2;if(c<0&&l<e)return!1;if(l>s&&c>e)return!1;r=n.elementFromPoint(u.x,s/2)}if(r)do{if(r===e)return!0}while(r=r.parentElement);return!1}function at(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function ct(e,t,n,o=!0){return bt(st(t,at(e,n,o))||"").reduce((e,n)=>{let[o,r]=wt(n);if(!o)return e;if(r||(o.endsWith(":")&&(o=o.slice(0,-1)),r=""),r.startsWith("#")){r=r.slice(1);try{let e=t[r];e||"selected"!==r||(e=t.options[t.selectedIndex].text),r=String(e)}catch(e){r=""}}return o.endsWith("[]")?(o=o.slice(0,-2),y(e[o])||(e[o]=[]),e[o].push(I(r))):e[o]=I(r),e},{})}function lt(e,t=me.Commands.Prefix){var n;const o=e;if(!o)return[];let r=[];const s=me.Commands.Action,i=`[${at(t,s,!1)}]`,a=e=>{Object.keys(ct(t,e,s,!1)).forEach(n=>{r=r.concat(ut(e,n,t))})};return o!==(o.ownerDocument||o)&&(null==(n=o.matches)?void 0:n.call(o,i))&&a(o),yt(o,i,a),r}function ut(e,t,n=me.Commands.Prefix){const o=[],{actions:r,nearestOnly:s}=function(e,t,n){let o=t;for(;o;){const t=st(o,at(e,me.Commands.Actions,!1));if(t){const e=ft(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const r=st(o,at(e,me.Commands.Action,!1));if(r){const e=ft(r);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}o=mt(e,o)}return{actions:[],nearestOnly:!1}}(n,e,t);return r.length?(r.forEach(r=>{const i=bt(r.actionParams||"",",").reduce((e,t)=>(e[G(t)]=!0,e),{}),a=pt(n,e,i,s);if(!a.length){const t="page",o=`[${at(n,t)}]`,[r,s]=ht(e,o,n,t);a.push({entity:t,data:r,nested:[],context:s})}a.forEach(e=>{var n;o.push({entity:e.entity,action:r.action,data:e.data,trigger:t,context:e.context,nested:null!=(n=e.nested)?n:[]})})}),o):o}function dt(e=me.Commands.Prefix,t){if(!t)return{};const n=at(e,me.Commands.Globals,!1);let o={};return vt(t,`[${n}]`,t=>{o=v(o,ct(e,t,me.Commands.Globals,!1))}),o}function ft(e){const t={};return bt(e).forEach(e=>{const[n,o]=wt(e),[r,s]=kt(n);if(!r)return;let[i,a]=kt(o||"");i=i||r,t[r]||(t[r]=[]),t[r].push({trigger:r,triggerParams:s,action:i,actionParams:a})}),t}function pt(e,t,n,o=!1){const r=[];let s=t;for(n=0!==Object.keys(n||{}).length?n:void 0;s;){const i=gt(e,s,t,n);if(i&&(r.push(i),o))break;s=mt(e,s)}return r}function gt(e,t,n,o){const r=st(t,at(e));if(!r||o&&!o[r])return null;const s=[t],i=`[${at(e,r)}],[${at(e,"")}]`,a=at(e,me.Commands.Link,!1);let c={};const l=[],[u,d]=ht(n||t,i,e,r);yt(t,`[${a}]`,n=>{const[o,r]=wt(st(n,a));"parent"===r&&yt(t.ownerDocument.body,`[${a}="${o}:child"]`,t=>{s.push(t);const n=gt(e,t);n&&l.push(n)})});const f=[];s.forEach(e=>{e.matches(i)&&f.push(e),yt(e,i,e=>f.push(e))});let p={};return f.forEach(t=>{p=v(p,ct(e,t,"")),c=v(c,ct(e,t,r))}),c=v(v(p,c),u),s.forEach(t=>{yt(t,`[${at(e)}]`,t=>{const n=gt(e,t);n&&l.push(n)})}),{entity:r,data:c,context:d,nested:l}}function mt(e,t){const n=at(e,me.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,o]=wt(st(t,n));if("child"===o){const o=t.ownerDocument;let r=null;return vt(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 ht(e,t,n,o){let r={};const s={};let i=e;const a=`[${at(n,me.Commands.Context,!1)}]`;let c=0;for(;i;)i.matches(t)&&(r=v(ct(n,i,""),r),r=v(ct(n,i,o),r)),i.matches(a)&&(Object.entries(ct(n,i,me.Commands.Context,!1)).forEach(([e,t])=>{t&&!s[e]&&(s[e]=[t,c])}),++c),i=mt(n,i);return[r,s]}function vt(e,t,n){e.querySelectorAll(t).forEach(n)}function yt(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&yt(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&yt(e.shadowRoot,t,n)})}function bt(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function wt(e){const[t,n]=e.split(/:(.+)/,2);return[G(t),G(n)]}function kt(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var xt=new WeakMap,Ot=new WeakMap,jt=new WeakMap;function Et(e){const t=Date.now();let n=Ot.get(e);if(!n||t-n.lastChecked>500){n={isVisible:it(e,e.ownerDocument.defaultView,e.ownerDocument),lastChecked:t},Ot.set(e,n)}return n.isVisible}function Ct(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return z(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,o;const r=t.target,s=jt.get(e);if(!s)return;const i=s.timers.get(r);if(t.intersectionRatio>0){const o=Date.now();let a=xt.get(r);if(!a||o-a.lastChecked>1e3){const e=r.ownerDocument.defaultView;a={isLarge:r.offsetHeight>e.innerHeight,lastChecked:o},xt.set(r,a)}if(t.intersectionRatio>=.5||a.isLarge&&Et(r)){const t=null==(n=s.elementConfigs)?void 0:n.get(r);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!i){const t=r.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(Et(r)){const o=null==(t=s.elementConfigs)?void 0:t.get(r);(null==o?void 0:o.context)&&await Yt(o.context,r,o.trigger);const i=null==(n=s.elementConfigs)?void 0:n.get(r);(null==i?void 0:i.multiple)?i.blocked=!0:function(e,t){const n=jt.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const o=n.timers.get(t);o&&(clearTimeout(o),n.timers.delete(t)),xt.delete(t),Ot.delete(t)}(e,r)}},s.duration);s.timers.set(r,t)}return}}i&&(clearTimeout(i),s.timers.delete(r));const a=null==(o=s.elementConfigs)?void 0:o.get(r);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function St(e,t,n={multiple:!1}){var o;const r=e.settings.scope;if(!r)return;const s=jt.get(r);(null==s?void 0:s.observer)&&t&&(s.elementConfigs||(s.elementConfigs=new WeakMap),s.elementConfigs.set(t,{multiple:null!=(o=n.multiple)&&o,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),s.observer.observe(t))}function At(e){if(!e)return;const t=jt.get(e);t&&(t.observer&&t.observer.disconnect(),jt.delete(e))}function It(e,t,n,o,r,s,i){const{elb:a,settings:c}=e;if(O(t)&&t.startsWith("walker ")){if("walker init"===t&&e.initScope){const t=function(e,t){if(qt(e))return[e];if(Array.isArray(e)){const t=[];for(const n of e)qt(n)&&t.push(n);return t}if(void 0===e){const e=t.scope;if(qt(e))return[e];if(void 0!==globalThis.document)return[globalThis.document]}return[]}(n,c);for(const n of t)e.initScope(e,{...c,scope:n});return Promise.resolve(Fe({ok:!0}))}return a(t,n)}if(x(t)){const e=t;if(!e.source&&c.scope){const t=c.scope.ownerDocument||c.scope,n=t.defaultView;e.source=$t(n,t)}return!e.globals&&c.scope&&(e.globals=dt(c.prefix,c.scope)),a(e)}const[l]=String(x(t)?t.name:t).split(" ");let u,d=x(n)?n:{},f={},p=!1;if(w(n)&&(u=n,p=!0),w(r)?u=r:x(r)&&Object.keys(r).length&&(f=r),u){const e=pt(c.prefix||"data-elb",u).find(e=>e.entity===l);e&&(p&&(d=e.data),e.context&&(f=e.context))}const g=c.scope?c.scope.ownerDocument||c.scope:void 0,m=null==g?void 0:g.defaultView;"page"===l&&m&&(d.id=d.id||m.location.pathname);const h=dt(c.prefix,c.scope);return a({name:String(t||""),data:d,context:f,globals:h,nested:s,custom:i,trigger:O(o)?o:"",source:m&&g?$t(m,g):void 0})}function $t(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}function qt(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof Element&&e instanceof Element)return!0;if("undefined"!=typeof Document&&e instanceof Document)return!0;if("nodeType"in e){const t=e.nodeType;return 1===t||9===t}return!1}var Dt,Tt,Pt=[],Mt=[],_t=[];function Lt(){return Tt||(Tt=new AbortController),Tt}var Nt="click",Rt="hover",Wt="load",zt="pulse",Ht="scroll",Bt="submit",Kt="impression",Ut="visible",Vt="wait";function Gt(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;Tt&&Tt.abort();Tt=new AbortController;const{signal:o}=Tt;n.addEventListener("click",z(function(t){Zt.call(this,e,t)}),{signal:o}),n.addEventListener("submit",z(function(t){Qt.call(this,e,t)}),{signal:o})}(e,t)}function Ft(e,t){const n=t.scope;Pt=[];const o=n;if(!o)return;At(o),function(e,t=1e3){jt.has(e)||jt.set(e,{observer:Ct(e),timers:new WeakMap,duration:t})}(o,1e3);const r=at(t.prefix,me.Commands.Action,!1);o!==(o.ownerDocument||o)&&Jt(e,o,r,t),yt(o,`[${r}]`,n=>{Jt(e,n,r,t)}),Pt.length&&function(e,t){const n=t.ownerDocument||t,o=n.defaultView,r=(e,t)=>e.filter(([e,n])=>{const r=o.scrollY+o.innerHeight,s=e.offsetTop;if(r<s)return!0;const i=e.clientHeight;return!(100*(1-(s+i-r)/(i||1))>=n)||(Yt(t,e,Ht),!1)});Dt||(Dt=function(e,t=1e3){const{wait:n}=T(t,1e3);let o=null;return function(...t){if(null===o)return o=setTimeout(()=>{o=null},n),e(...t)}}(function(){Pt=r.call(t,Pt,e)}),t.addEventListener("scroll",Dt,{signal:Lt().signal}))}(e,o)}async function Yt(e,t,n){const o=ut(t,n,e.settings.prefix);return Promise.all(o.map(t=>It(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function Jt(e,t,n,o){const r=st(t,n);r&&Object.values(ft(r)).forEach(n=>n.forEach(n=>{switch(n.trigger){case Rt:!function(e,t){t.addEventListener("mouseenter",z(function(t){const n=Xt(t);n&&Yt(e,n,Rt)}),{signal:Lt().signal})}(e,t);break;case Wt:!function(e,t){Yt(e,t,Wt)}(e,t);break;case zt:!function(e,t,n=""){const o=t.ownerDocument,r=setInterval(()=>{o.hidden||Yt(e,t,zt)},parseInt(n||"")||15e3);Mt.push(r)}(e,t,n.triggerParams);break;case Ht:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;Pt.push([e,n])}(t,n.triggerParams);break;case Kt:St(e,t);break;case Ut:St(e,t,{multiple:!0});break;case Vt:!function(e,t,n=""){const o=setTimeout(()=>Yt(e,t,Vt),parseInt(n||"")||15e3);_t.push(o)}(e,t,n.triggerParams)}}))}function Xt(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 Zt(e,t){const n=Xt(t);n&&Yt(e,n,Nt)}function Qt(e,t){const n=Xt(t);n&&Yt(e,n,Bt)}function en(e,t={}){var n;const o=t.name||"elbLayer",r=t.window,s=t.logger;if(!r)return;const i=r;i[o]||(i[o]=[]);const a=i[o],c=r.document;null==s||s.debug("initElbLayer enter",{layerName:o,queuedItems:a.length}),a.push=function(...n){if(on(n[0])){const o=[...Array.from(n[0])],r=Array.prototype.push.apply(this,[o]);return nn(e,t.prefix,o,c,s),r}const o=Array.prototype.push.apply(this,n);return n.forEach(n=>{nn(e,t.prefix,n,c,s)}),o},Array.isArray(a)&&a.length>0&&(null==s||s.debug("initElbLayer drain walker commands",{count:a.length}),function(e,t,n,o,r){const s="walker ",i=[...n],a=new Set;i.forEach((n,i)=>{const c=tn(n);if(!c)return;const l=c[0];!x(l)&&O(l)&&l.startsWith(s)&&(a.add(i),nn(e,t,c,o,r))});const c=[...a].sort((e,t)=>t-e);for(const e of c)n.splice(e,1);null==r||r.debug("drainWalkerCommands done",{consumed:a.size,remaining:n.length})}(e,null!=(n=t.prefix)?n:"data-elb",a,c,s))}function tn(e){const t=on(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 nn(e,t="data-elb",n,o,r){z(()=>{if(Array.isArray(n)){const[s,...i]=n;if(!s||O(s)&&""===s.trim())return void(null==r||r.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(O(s)&&s.startsWith("walker "))return null==r||r.debug("pushCommand walker command",{action:s,data:i[0]}),void e(s,i[0]);null==r||r.debug("pushCommand event (translated)",{action:s,rest:i}),It({elb:e,settings:{prefix:t,scope:o,pageview:!1,elb:"",elbLayer:!1}},s,...i)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return void(null==r||r.debug("pushCommand skipped (empty object)"));null==r||r.debug("pushCommand object event",{item:n}),e(n)}},e=>{null==r||r.warn("pushCommand failed",{error:e,item:n})})()}function on(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var rn={},sn={};r(sn,{createTrigger:()=>wn,env:()=>an,step:()=>fn,trigger:()=>kn});var an={};r(an,{push:()=>dn});var cn=()=>{},ln=()=>()=>Promise.resolve({ok:!0}),un={error:cn,warn:cn,info:cn,debug:cn,throw:e=>{throw"string"==typeof e?new Error(e):e},json:cn,scope:()=>un},dn={get push(){return ln()},get command(){return ln()},get elb(){return ln()},get window(){return{addEventListener:cn,removeEventListener:cn,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:cn,removeEventListener:cn,querySelector:cn,querySelectorAll:()=>[],getElementById:cn,getElementsByClassName:()=>[],getElementsByTagName:()=>[],createElement:()=>({setAttribute:cn,getAttribute:cn,addEventListener:cn,removeEventListener:cn}),body:{appendChild:cn,removeChild:cn},documentElement:{scrollTop:0,scrollLeft:0},readyState:"complete",title:"Test Page",referrer:"",cookie:""}},logger:un},fn={};r(fn,{clickEvent:()=>gn,contextAndGlobals:()=>bn,dataAttributeTypes:()=>yn,impressionEvent:()=>hn,nestedEntities:()=>vn,pageView:()=>pn,submitEvent:()=>mn});var pn={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/"}}]]},gn={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"}]]},mn={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"}]]},hn={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"}]]},vn={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"}]]},yn={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"}]]},bn={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"}]]},wn=async(e,t)=>{const n=(null==t?void 0:t.sourceId)||"browser";let o;const r=document,s=window;return{get flow(){return o},trigger:(t,i)=>async a=>{var c;if("load"===t||!t){const e="object"==typeof i&&null!==i?i:{};if(e.url){const t=new URL(e.url);s.history.replaceState({},"",t.pathname)}e.title&&(r.title=e.title),e.referrer&&Object.defineProperty(r,"referrer",{value:e.referrer,configurable:!0})}if(a&&(r.body.innerHTML=a),!o){const t=await rt({...e,run:null==(c=e.run)||c});o={collector:t.collector,elb:t.elb}}if(!t||"load"===t)return;const l="string"==typeof i?i:void 0,u=l?r.querySelector(l):null;if(!u)return void console.warn(`Trigger: element not found for selector "${l}"`);const d=o.collector.sources[n];if(!d)return void console.warn(`Trigger: source "${n}" not found in collector`);const f={elb:o.elb,settings:d.config.settings};await Yt(f,u,t)}}},kn=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.document,r=t.window,s=()=>{var e,t;if(!n.attributes)return;const r=(null==(t=null==(e=n.element)?void 0:e.match(/^(\w+)/))?void 0:t[1])||"div",s=o.createElement(r);for(const[e,t]of Object.entries(n.attributes))s.setAttribute(e,t);if(n.children)for(const e of n.children){const t=o.createElement("div");for(const[n,o]of Object.entries(e))t.setAttribute(n,o);s.appendChild(t)}return o.body.appendChild(s),s};if(!n.trigger||"load"===n.trigger){if(n.url){const e=new URL(n.url);r.history.replaceState({},"",e.pathname)}return n.title&&(o.title=n.title),n.referrer&&Object.defineProperty(o,"referrer",{value:n.referrer}),void s()}return()=>{const e=s();if(e)switch(n.trigger){case"click":e.dispatchEvent(new MouseEvent("click",{bubbles:!0}));break;case"submit":e.dispatchEvent(new Event("submit",{bubbles:!0}));break;case"hover":e.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0}));break;case"scroll":r.dispatchEvent(new Event("scroll"))}}};function xn(e={}){const t=e.prefix||"data-elb";return function(e){let n,o=e;const r={},s={},i={},a={},c={},l={};function u(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!b(e)||null===e)return"undefined";let t=String(e);return t=t.replace(/\\/g,"\\\\"),t=t.replace(/;/g,"\\;"),t=t.replace(/:/g,"\\:"),t=t.replace(/'/g,"\\'"),t}(t)}`).join(";")}const d={entity:e=>(n=e,o=e,d),data(e,t){const n=null!=o?o:"";return r[n]||(r[n]={}),O(e)?r[n][e]=t:Object.assign(r[n],e),d},action(e,t){if(O(e))if(b(t))s[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);s[t]=n}else s[e]=e;else Object.assign(s,e);return d},actions(e,t){if(O(e))if(b(t))i[e]=t;else if(e.includes(":")){const[t,n]=e.split(":",2);i[t]=n}else i[e]=e;else Object.assign(i,e);return d},context:(e,t)=>(O(e)?a[e]=t:Object.assign(a,e),d),globals:(e,t)=>(O(e)?c[e]=t:Object.assign(c,e),d),link:(e,t)=>(O(e)?l[e]=t:Object.assign(l,e),d),get(){const e={};return n&&(e[t]=n),Object.entries(r).forEach(([n,o])=>{if(Object.keys(o).length>0){e[n?`${t}-${n}`:`${t}-`]=u(o)}}),Object.keys(s).length>0&&(e[`${t}action`]=u(s)),Object.keys(i).length>0&&(e[`${t}actions`]=u(i)),Object.keys(a).length>0&&(e[`${t}context`]=u(a)),Object.keys(c).length>0&&(e[`${t}globals`]=u(c)),Object.keys(l).length>0&&(e[`${t}link`]=u(l)),e}};return d}}var On=0;function jn(){On=0}var En,Cn=async e=>{if(On>0&&void 0!==globalThis.window)throw new Error("walker.js browser source is single-instance per window. See packages/web/sources/browser/src/trigger.ts for the invariant note.");On+=1;const{config:t,env:n,logger:o}=e,{elb:r,command:s,window:i,document:a}=n,c=(null==t?void 0:t.settings)||{},l=i||(void 0!==globalThis.window?globalThis.window:void 0),u=a||(void 0!==globalThis.document?globalThis.document:void 0),d=function(e={},t){return{prefix:"data-elb",pageview:!0,elb:"elb",elbLayer:"elbLayer",scope:t||void 0,...e}}(c,u),f={elb:r,settings:d,initScope:Ft},p=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,o=n.defaultView.location,r="page",s="body"in t?t.body:t,[i,a]=ht(s,`[${at(e,r)}]`,e,r);return i.domain=o.hostname,i.title=n.title,i.referrer=n.referrer,o.search&&(i.search=o.search),o.hash&&(i.hash=o.hash),[i,a]}(e.prefix||"data-elb",e.scope);It(f,"page view",t,"load",n)};return{type:"browser",config:{settings:d},push:(...e)=>{const[t,n,o,r,s,i]=e;return It(f,t,n,o,r,s,i)},on:async e=>{if("run"===e)u&&l&&(!function(e,t){if(!t.scope)return;Ft(e,t)}(f,d),function(e,t,n,o){const r=O(t.elbLayer)?t.elbLayer:"elbLayer",s=t.prefix||"data-elb",i=n[r];if(!Array.isArray(i))return;const a=n.document;let c=-1;i.forEach((e,t)=>{const n=tn(e);n&&O(n[0])&&"walker run"===n[0]&&(c=t)});const l=[];for(let e=c+1;e<i.length;e++){const t=tn(i[e]);t&&l.push(t)}i.length=c+1,null==o||o.debug("drainNonWalkerEvents",{anchor:c,drained:l.length}),l.forEach(t=>nn(e,s,t,a,o))}(r,d,l,o),p(d))},init:async()=>{l&&u&&(!1!==d.elbLayer&&r&&en(r,{name:O(d.elbLayer)?d.elbLayer:"elbLayer",prefix:d.prefix,window:l,logger:o}),await async function(e,t,n){const o=()=>{e(t,n)},r=n.scope;if(!r)return void o();const s=r.ownerDocument||r;"loading"!==s.readyState?o():s.addEventListener("DOMContentLoaded",o)}(Gt,f,d),O(d.elb)&&d.elb&&(l[d.elb]=(...e)=>{const[t,n,o,r,s,i]=e;return It(f,t,n,o,r,s,i)}))},destroy:async()=>{Tt&&(Tt.abort(),Tt=void 0),Dt=void 0,Pt=[],Mt.forEach(e=>clearInterval(e)),Mt=[],_t.forEach(e=>clearTimeout(e)),_t=[],u&&At(d.scope||u)}}},Sn=Cn;return En=s,((r,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of n(s))o.call(r,c)||c===i||e(r,c,{get:()=>s[c],enumerable:!(a=t(s,c))||a.enumerable});return r})(e({},"__esModule",{value:!0}),En)})();
|
|
1
|
+
"use strict";var Source=(()=>{var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,o={};((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})(o,{SourceBrowser:()=>xe,__resetInstanceCountForTests:()=>Ae,createTagger:()=>Oe,default:()=>Se,getAllEvents:()=>D,getElbAttributeName:()=>A,getElbValues:()=>$,getEvents:()=>S,getGlobals:()=>L,sourceBrowser:()=>De});var i=Object.defineProperty,s=(e,t)=>{for(var n in t)i(e,n,{get:t[n],enumerable:!0})};function c(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}s({},{stepId:()=>c});function a(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}s({},{getDestination:()=>a});s({},{Level:()=>u});var l,u=((l=u||{})[l.ERROR=0]="ERROR",l[l.WARN=1]="WARN",l[l.INFO=2]="INFO",l[l.DEBUG=3]="DEBUG",l);function f(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}s({},{getTransformer:()=>f});function d(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}s({},{getSource:()=>d});function g(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}s({},{getStore:()=>g});var m={merge:!0,shallow:!0,extend:!0};function p(e,t={},n={}){n={...m,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function b(e){return Array.isArray(e)}function h(e){return void 0!==e}function y(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function w(e){return"object"==typeof e&&null!==e&&!b(e)&&"[object Object]"===Object.prototype.toString.call(e)}function v(e){return"string"==typeof e}function k(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function E(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function C(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}var x={Commands:{Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};x.Commands.Consent,x.Commands.User,x.Commands.Globals,x.Commands.Custom,Object.freeze({batched:!0});function O(e,t){return(e.getAttribute(t)||"").trim()}function j(e,t,n){const r=t.getComputedStyle(e);if("none"===r.display)return!1;if("visible"!==r.visibility)return!1;if(r.opacity&&Number(r.opacity)<.1)return!1;let o;const i=t.innerHeight,s=e.getBoundingClientRect(),c=s.height,a=s.y,l=a+c,u={x:s.x+e.offsetWidth/2,y:s.y+e.offsetHeight/2};if(c<=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;o=n.elementFromPoint(u.x,u.y)}else{const e=i/2;if(a<0&&l<e)return!1;if(l>i&&a>e)return!1;o=n.elementFromPoint(u.x,i/2)}if(o)do{if(o===e)return!0}while(o=o.parentElement);return!1}function A(e,t,n=!0){return e+(t=null!=t?(n?"-":"")+t:"")}function $(e,t,n,r=!0){return H(O(t,A(e,n,r))||"").reduce((e,n)=>{let[r,o]=M(n);if(!r)return e;if(o||(r.endsWith(":")&&(r=r.slice(0,-1)),o=""),o.startsWith("#")){o=o.slice(1);try{let e=t[o];e||"selected"!==o||(e=t.options[t.selectedIndex].text),o=String(e)}catch(e){o=""}}return r.endsWith("[]")?(r=r.slice(0,-2),b(e[r])||(e[r]=[]),e[r].push(k(o))):e[r]=k(o),e},{})}function D(e,t=x.Commands.Prefix){var n;const r=e;if(!r)return[];let o=[];const i=x.Commands.Action,s=`[${A(t,i,!1)}]`,c=e=>{Object.keys($(t,e,i,!1)).forEach(n=>{o=o.concat(S(e,n,t))})};return r!==(r.ownerDocument||r)&&(null==(n=r.matches)?void 0:n.call(r,s))&&c(r),V(r,s,c),o}function S(e,t,n=x.Commands.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=O(r,A(e,x.Commands.Actions,!1));if(t){const e=R(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=O(r,A(e,x.Commands.Action,!1));if(o){const e=R(o);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}r=W(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t);return o.length?(o.forEach(o=>{const s=H(o.actionParams||"",",").reduce((e,t)=>(e[C(t)]=!0,e),{}),c=P(n,e,s,i);if(!c.length){const t="page",r=`[${A(n,t)}]`,[o,i]=I(e,r,n,t);c.push({entity:t,data:o,nested:[],context:i})}c.forEach(e=>{var n;r.push({entity:e.entity,action:o.action,data:e.data,trigger:t,context:e.context,nested:null!=(n=e.nested)?n:[]})})}),r):r}function L(e=x.Commands.Prefix,t){if(!t)return{};const n=A(e,x.Commands.Globals,!1);let r={};return N(t,`[${n}]`,t=>{r=p(r,$(e,t,x.Commands.Globals,!1))}),r}function R(e){const t={};return H(e).forEach(e=>{const[n,r]=M(e),[o,i]=G(n);if(!o)return;let[s,c]=G(r||"");s=s||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:s,actionParams:c})}),t}function P(e,t,n,r=!1){const o=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=T(e,i,t,n);if(s&&(o.push(s),r))break;i=W(e,i)}return o}function T(e,t,n,r){const o=O(t,A(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${A(e,o)}],[${A(e,"")}]`,c=A(e,x.Commands.Link,!1);let a={};const l=[],[u,f]=I(n||t,s,e,o);V(t,`[${c}]`,n=>{const[r,o]=M(O(n,c));"parent"===o&&V(t.ownerDocument.body,`[${c}="${r}:child"]`,t=>{i.push(t);const n=T(e,t);n&&l.push(n)})});const d=[];i.forEach(e=>{e.matches(s)&&d.push(e),V(e,s,e=>d.push(e))});let g={};return d.forEach(t=>{g=p(g,$(e,t,"")),a=p(a,$(e,t,o))}),a=p(p(g,a),u),i.forEach(t=>{V(t,`[${A(e)}]`,t=>{const n=T(e,t);n&&l.push(n)})}),{entity:o,data:a,context:f,nested:l}}function W(e,t){const n=A(e,x.Commands.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=M(O(t,n));if("child"===r){const r=t.ownerDocument;let o=null;return N(r,`[${n}="${e}:parent"]`,e=>{o||(o=e)}),o}}const r=t.ownerDocument.defaultView;return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof r.ShadowRoot?t.getRootNode().host:t.parentElement}function I(e,t,n,r){let o={};const i={};let s=e;const c=`[${A(n,x.Commands.Context,!1)}]`;let a=0;for(;s;)s.matches(t)&&(o=p($(n,s,""),o),o=p($(n,s,r),o)),s.matches(c)&&(Object.entries($(n,s,x.Commands.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,a])}),++a),s=W(n,s);return[o,i]}function N(e,t,n){e.querySelectorAll(t).forEach(n)}function V(e,t,n){e.querySelectorAll(t).forEach(n);e instanceof(e.ownerDocument||e).defaultView.Element&&e.shadowRoot&&V(e.shadowRoot,t,n),e.querySelectorAll("*").forEach(e=>{e.shadowRoot&&V(e.shadowRoot,t,n)})}function H(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function M(e){const[t,n]=e.split(/:(.+)/,2);return[C(t),C(n)]}function G(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var q=new WeakMap,B=new WeakMap,F=new WeakMap;function U(e){const t=Date.now();let n=B.get(e);if(!n||t-n.lastChecked>500){n={isVisible:j(e,e.ownerDocument.defaultView,e.ownerDocument),lastChecked:t},B.set(e,n)}return n.isVisible}function z(e){const t=(e.ownerDocument||e).defaultView;if(t&&t.IntersectionObserver)return E(()=>new t.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=F.get(e);if(!i)return;const s=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let c=q.get(o);if(!c||r-c.lastChecked>1e3){const e=o.ownerDocument.defaultView;c={isLarge:o.offsetHeight>e.innerHeight,lastChecked:r},q.set(o,c)}if(t.intersectionRatio>=.5||c.isLarge&&U(o)){const t=null==(n=i.elementConfigs)?void 0:n.get(o);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=o.ownerDocument.defaultView.setTimeout(async()=>{var t,n;if(U(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o);(null==r?void 0:r.context)&&await pe(r.context,o,r.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(o);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=F.get(e);if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),q.delete(t),B.delete(t)}(e,o)}},i.duration);i.timers.set(o,t)}return}}s&&(clearTimeout(s),i.timers.delete(o));const c=null==(r=i.elementConfigs)?void 0:r.get(o);(null==c?void 0:c.multiple)&&(c.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function _(e,t,n={multiple:!1}){var r;const o=e.settings.scope;if(!o)return;const i=F.get(o);(null==i?void 0:i.observer)&&t&&(i.elementConfigs||(i.elementConfigs=new WeakMap),i.elementConfigs.set(t,{multiple:null!=(r=n.multiple)&&r,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),i.observer.observe(t))}function Y(e){if(!e)return;const t=F.get(e);t&&(t.observer&&t.observer.disconnect(),F.delete(e))}function J(e,t,n,r,o,i,s){const{elb:c,settings:a}=e;if(v(t)&&t.startsWith("walker ")){if("walker init"===t&&e.initScope){const t=function(e,t){if(Q(e))return[e];if(Array.isArray(e)){const t=[];for(const n of e)Q(n)&&t.push(n);return t}if(void 0===e){const e=t.scope;if(Q(e))return[e];if(void 0!==globalThis.document)return[globalThis.document]}return[]}(n,a);for(const n of t)e.initScope(e,{...a,scope:n});return Promise.resolve(function(e){return{ok:!(null==e?void 0:e.failed),...e}}({ok:!0}))}return c(t,n)}if(w(t)){const e=t;if(!e.source&&a.scope){const t=a.scope.ownerDocument||a.scope,n=t.defaultView;e.source=K(n,t)}return!e.globals&&a.scope&&(e.globals=L(a.prefix,a.scope)),c(e)}const[l]=String(w(t)?t.name:t).split(" ");let u,f=w(n)?n:{},d={},g=!1;if(y(n)&&(u=n,g=!0),y(o)?u=o:w(o)&&Object.keys(o).length&&(d=o),u){const e=P(a.prefix||"data-elb",u).find(e=>e.entity===l);e&&(g&&(f=e.data),e.context&&(d=e.context))}const m=a.scope?a.scope.ownerDocument||a.scope:void 0,p=null==m?void 0:m.defaultView;"page"===l&&p&&(f.id=f.id||p.location.pathname);const b=L(a.prefix,a.scope);return c({name:String(t||""),data:f,context:d,globals:b,nested:i,custom:s,trigger:v(r)?r:"",source:p&&m?K(p,m):void 0})}function K(e,t){return{type:"browser",platform:"web",url:e.location.href,referrer:t.referrer}}function Q(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof Element&&e instanceof Element)return!0;if("undefined"!=typeof Document&&e instanceof Document)return!0;if("nodeType"in e){const t=e.nodeType;return 1===t||9===t}return!1}var X,Z,ee=[],te=[],ne=[];function re(){return Z||(Z=new AbortController),Z}var oe="click",ie="hover",se="load",ce="pulse",ae="scroll",le="submit",ue="impression",fe="visible",de="wait";function ge(e,t){if(!t.scope)return;!function(e,t){const n=t.scope;if(!n)return;Z&&Z.abort();Z=new AbortController;const{signal:r}=Z;n.addEventListener("click",E(function(t){ye.call(this,e,t)}),{signal:r}),n.addEventListener("submit",E(function(t){we.call(this,e,t)}),{signal:r})}(e,t)}function me(e,t){const n=t.scope;ee=[];const r=n;if(!r)return;Y(r),function(e,t=1e3){F.has(e)||F.set(e,{observer:z(e),timers:new WeakMap,duration:t})}(r,1e3);const o=A(t.prefix,x.Commands.Action,!1);r!==(r.ownerDocument||r)&&be(e,r,o,t),V(r,`[${o}]`,n=>{be(e,n,o,t)}),ee.length&&function(e,t){const n=t.ownerDocument||t,r=n.defaultView,o=(e,t)=>e.filter(([e,n])=>{const o=r.scrollY+r.innerHeight,i=e.offsetTop;if(o<i)return!0;const s=e.clientHeight;return!(100*(1-(i+s-o)/(s||1))>=n)||(pe(t,e,ae),!1)});X||(X=function(e,t=1e3){const{wait:n}=function(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}}(t,1e3);let r=null;return function(...t){if(null===r)return r=setTimeout(()=>{r=null},n),e(...t)}}(function(){ee=o.call(t,ee,e)}),t.addEventListener("scroll",X,{signal:re().signal}))}(e,r)}async function pe(e,t,n){const r=S(t,n,e.settings.prefix);return Promise.all(r.map(t=>J(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function be(e,t,n,r){const o=O(t,n);o&&Object.values(R(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case ie:!function(e,t){t.addEventListener("mouseenter",E(function(t){const n=he(t);n&&pe(e,n,ie)}),{signal:re().signal})}(e,t);break;case se:!function(e,t){pe(e,t,se)}(e,t);break;case ce:!function(e,t,n=""){const r=t.ownerDocument,o=setInterval(()=>{r.hidden||pe(e,t,ce)},parseInt(n||"")||15e3);te.push(o)}(e,t,n.triggerParams);break;case ae:!function(e,t=""){const n=parseInt(t||"")||50;if(n<0||n>100)return;ee.push([e,n])}(t,n.triggerParams);break;case ue:_(e,t);break;case fe:_(e,t,{multiple:!0});break;case de:!function(e,t,n=""){const r=setTimeout(()=>pe(e,t,de),parseInt(n||"")||15e3);ne.push(r)}(e,t,n.triggerParams)}}))}function he(e){var t;const n=null==(t=e.composedPath)?void 0:t.call(e),r=(null==n?void 0:n.length)?n[0]:e.target;if(r&&"object"==typeof r&&"tagName"in r)return r}function ye(e,t){const n=he(t);n&&pe(e,n,oe)}function we(e,t){const n=he(t);n&&pe(e,n,le)}function ve(e,t={}){var n;const r=t.name||"elbLayer",o=t.window,i=t.logger;if(!o)return;const s=o;s[r]||(s[r]=[]);const c=s[r],a=o.document;null==i||i.debug("initElbLayer enter",{layerName:r,queuedItems:c.length}),c.push=function(...n){if(Ce(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return Ee(e,t.prefix,r,a,i),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{Ee(e,t.prefix,n,a,i)}),r},Array.isArray(c)&&c.length>0&&(null==i||i.debug("initElbLayer drain walker commands",{count:c.length}),function(e,t,n,r,o){const i="walker ",s=[...n],c=new Set;s.forEach((n,s)=>{const a=ke(n);if(!a)return;const l=a[0];!w(l)&&v(l)&&l.startsWith(i)&&(c.add(s),Ee(e,t,a,r,o))});const a=[...c].sort((e,t)=>t-e);for(const e of a)n.splice(e,1);null==o||o.debug("drainWalkerCommands done",{consumed:c.size,remaining:n.length})}(e,null!=(n=t.prefix)?n:"data-elb",c,a,i))}function ke(e){const t=Ce(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 r=t[0];return w(r)&&0===Object.keys(r).length||!w(r)&&v(r)&&""===r.trim()?null:t}function Ee(e,t="data-elb",n,r,o){E(()=>{if(Array.isArray(n)){const[i,...s]=n;if(!i||v(i)&&""===i.trim())return void(null==o||o.debug("pushCommand skipped (empty/invalid action)",{item:n}));if(v(i)&&i.startsWith("walker "))return null==o||o.debug("pushCommand walker command",{action:i,data:s[0]}),void e(i,s[0]);null==o||o.debug("pushCommand event (translated)",{action:i,rest:s}),J({elb:e,settings:{prefix:t,scope:r,pageview:!1,elb:"",elbLayer:!1}},i,...s)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return void(null==o||o.debug("pushCommand skipped (empty object)"));null==o||o.debug("pushCommand object event",{item:n}),e(n)}},e=>{null==o||o.warn("pushCommand failed",{error:e,item:n})})()}function Ce(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}var xe={};function Oe(e={}){const t=e.prefix||"data-elb";return function(e){let n,r=e;const o={},i={},s={},c={},a={},l={};function u(e){return Object.entries(e).map(([e,t])=>`${e}:${function(e){if(!h(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,r=e,f),data(e,t){const n=null!=r?r:"";return o[n]||(o[n]={}),v(e)?o[n][e]=t:Object.assign(o[n],e),f},action(e,t){if(v(e))if(h(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(v(e))if(h(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)=>(v(e)?c[e]=t:Object.assign(c,e),f),globals:(e,t)=>(v(e)?a[e]=t:Object.assign(a,e),f),link:(e,t)=>(v(e)?l[e]=t:Object.assign(l,e),f),get(){const e={};return n&&(e[t]=n),Object.entries(o).forEach(([n,r])=>{if(Object.keys(r).length>0){e[n?`${t}-${n}`:`${t}-`]=u(r)}}),Object.keys(i).length>0&&(e[`${t}action`]=u(i)),Object.keys(s).length>0&&(e[`${t}actions`]=u(s)),Object.keys(c).length>0&&(e[`${t}context`]=u(c)),Object.keys(a).length>0&&(e[`${t}globals`]=u(a)),Object.keys(l).length>0&&(e[`${t}link`]=u(l)),e}};return f}}var je=0;function Ae(){je=0}var $e,De=async e=>{if(je>0&&void 0!==globalThis.window)throw new Error("walker.js browser source is single-instance per window. See packages/web/sources/browser/src/trigger.ts for the invariant note.");je+=1;const{config:t,env:n,logger:r}=e,{elb:o,command:i,window:s,document:c}=n,a=(null==t?void 0:t.settings)||{},l=s||(void 0!==globalThis.window?globalThis.window:void 0),u=c||(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}}(a,u),d={elb:o,settings:f,initScope:me},g=e=>{if(!e.pageview)return;const[t,n]=function(e,t){const n=t.ownerDocument||t,r=n.defaultView.location,o="page",i="body"in t?t.body:t,[s,c]=I(i,`[${A(e,o)}]`,e,o);return s.domain=r.hostname,s.title=n.title,s.referrer=n.referrer,r.search&&(s.search=r.search),r.hash&&(s.hash=r.hash),[s,c]}(e.prefix||"data-elb",e.scope);J(d,"page view",t,"load",n)};return{type:"browser",config:{settings:f},push:(...e)=>{const[t,n,r,o,i,s]=e;return J(d,t,n,r,o,i,s)},on:async e=>{if("run"===e)u&&l&&(!function(e,t){if(!t.scope)return;me(e,t)}(d,f),function(e,t,n,r){const o=v(t.elbLayer)?t.elbLayer:"elbLayer",i=t.prefix||"data-elb",s=n[o];if(!Array.isArray(s))return;const c=n.document;let a=-1;s.forEach((e,t)=>{const n=ke(e);n&&v(n[0])&&"walker run"===n[0]&&(a=t)});const l=[];for(let e=a+1;e<s.length;e++){const t=ke(s[e]);t&&l.push(t)}s.length=a+1,null==r||r.debug("drainNonWalkerEvents",{anchor:a,drained:l.length}),l.forEach(t=>Ee(e,i,t,c,r))}(o,f,l,r),g(f))},init:async()=>{l&&u&&(!1!==f.elbLayer&&o&&ve(o,{name:v(f.elbLayer)?f.elbLayer:"elbLayer",prefix:f.prefix,window:l,logger:r}),await async function(e,t,n){const r=()=>{e(t,n)},o=n.scope;if(!o)return void r();const i=o.ownerDocument||o;"loading"!==i.readyState?r():i.addEventListener("DOMContentLoaded",r)}(ge,d,f),v(f.elb)&&f.elb&&(l[f.elb]=(...e)=>{const[t,n,r,o,i,s]=e;return J(d,t,n,r,o,i,s)}))},destroy:async()=>{Z&&(Z.abort(),Z=void 0),X=void 0,ee=[],te.forEach(e=>clearInterval(e)),te=[],ne.forEach(e=>clearTimeout(e)),ne=[],u&&Y(f.scope||u)}}},Se=De;return $e=o,((o,i,s,c)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let a of n(i))r.call(o,a)||a===s||e(o,a,{get:()=>i[a],enumerable:!(c=t(i,a))||c.enumerable});return o})(e({},"__esModule",{value:!0}),$e)})();
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Elb, WalkerOS, Collector, Source
|
|
1
|
+
import { Elb, WalkerOS, Collector, Source } from '@walkeros/core';
|
|
2
2
|
import { z } from '@walkeros/core/dev';
|
|
3
3
|
import { DestinationWeb, Walker } from '@walkeros/web-core';
|
|
4
4
|
|
|
@@ -69,90 +69,27 @@ interface ELBLayerConfig {
|
|
|
69
69
|
}
|
|
70
70
|
type Scope = Document | Element;
|
|
71
71
|
|
|
72
|
-
type
|
|
73
|
-
type
|
|
74
|
-
type
|
|
75
|
-
type
|
|
76
|
-
type
|
|
77
|
-
type
|
|
78
|
-
type
|
|
79
|
-
type
|
|
80
|
-
type
|
|
81
|
-
type
|
|
82
|
-
type
|
|
83
|
-
type
|
|
84
|
-
type
|
|
85
|
-
type
|
|
86
|
-
type
|
|
87
|
-
type
|
|
88
|
-
type
|
|
89
|
-
type
|
|
90
|
-
type
|
|
91
|
-
declare namespace index$1 {
|
|
92
|
-
export type { index$1_BrowserArguments as BrowserArguments, index$1_BrowserPush as BrowserPush, index$1_BrowserPushContext as BrowserPushContext, index$1_BrowserPushData as BrowserPushData, index$1_BrowserPushOptions as BrowserPushOptions, index$1_Config as Config, index$1_Context as Context, index$1_ELBLayer as ELBLayer, index$1_ELBLayerConfig as ELBLayerConfig, index$1_Env as Env, index$1_InitSettings as InitSettings, index$1_Layer as Layer, index$1_Mapping as Mapping, index$1_Push as Push, index$1_PushResult as PushResult, index$1_Scope as Scope, index$1_Settings as Settings, index$1_Trigger as Trigger, index$1_Types as Types };
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Standard mock environment for testing browser source
|
|
97
|
-
*
|
|
98
|
-
* Use this for testing event capture, DOM interactions, and pageview tracking
|
|
99
|
-
* without requiring a real browser environment.
|
|
100
|
-
*/
|
|
101
|
-
declare const push: Env;
|
|
102
|
-
|
|
103
|
-
declare const env_push: typeof push;
|
|
104
|
-
declare namespace env {
|
|
105
|
-
export { env_push as push };
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
declare const pageView: Flow.StepExample;
|
|
109
|
-
declare const clickEvent: Flow.StepExample;
|
|
110
|
-
declare const submitEvent: Flow.StepExample;
|
|
111
|
-
declare const impressionEvent: Flow.StepExample;
|
|
112
|
-
declare const nestedEntities: Flow.StepExample;
|
|
113
|
-
declare const dataAttributeTypes: Flow.StepExample;
|
|
114
|
-
declare const contextAndGlobals: Flow.StepExample;
|
|
115
|
-
|
|
116
|
-
declare const step_clickEvent: typeof clickEvent;
|
|
117
|
-
declare const step_contextAndGlobals: typeof contextAndGlobals;
|
|
118
|
-
declare const step_dataAttributeTypes: typeof dataAttributeTypes;
|
|
119
|
-
declare const step_impressionEvent: typeof impressionEvent;
|
|
120
|
-
declare const step_nestedEntities: typeof nestedEntities;
|
|
121
|
-
declare const step_pageView: typeof pageView;
|
|
122
|
-
declare const step_submitEvent: typeof submitEvent;
|
|
123
|
-
declare namespace step {
|
|
124
|
-
export { step_clickEvent as clickEvent, step_contextAndGlobals as contextAndGlobals, step_dataAttributeTypes as dataAttributeTypes, step_impressionEvent as impressionEvent, step_nestedEntities as nestedEntities, step_pageView as pageView, step_submitEvent as submitEvent };
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Browser source createTrigger.
|
|
129
|
-
*
|
|
130
|
-
* Injects HTML into the DOM, lazily starts the flow, then calls
|
|
131
|
-
* handleTrigger directly — the same convergence point as production.
|
|
132
|
-
* For load triggers, the source's DOM scan during startFlow handles
|
|
133
|
-
* event capture automatically.
|
|
134
|
-
*
|
|
135
|
-
* @example
|
|
136
|
-
* const { trigger } = await createTrigger(config);
|
|
137
|
-
* await trigger('click', 'button')('<button data-elb="cta" data-elbaction="click:cta click">Click</button>');
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
* // Impression trigger — handleTrigger reads data-elbaction directly
|
|
141
|
-
* await trigger('impression', '[data-elb="promo"]')('<div data-elb="promo" data-elbaction="visible:promo seen">Ad</div>');
|
|
142
|
-
*/
|
|
143
|
-
declare const createTrigger: Trigger$1.CreateFn<string, void>;
|
|
144
|
-
/**
|
|
145
|
-
* Browser source trigger (legacy).
|
|
146
|
-
* Converts step example `in` data into DOM elements and dispatches events.
|
|
147
|
-
*/
|
|
148
|
-
declare const trigger: (input: unknown, env: Record<string, unknown>) => void | (() => void);
|
|
149
|
-
|
|
150
|
-
declare const index_createTrigger: typeof createTrigger;
|
|
151
|
-
declare const index_env: typeof env;
|
|
152
|
-
declare const index_step: typeof step;
|
|
153
|
-
declare const index_trigger: typeof trigger;
|
|
72
|
+
type index_BrowserArguments<R = Promise<Elb.PushResult>> = BrowserArguments<R>;
|
|
73
|
+
type index_BrowserPush<R = Promise<Elb.PushResult>> = BrowserPush<R>;
|
|
74
|
+
type index_BrowserPushContext = BrowserPushContext;
|
|
75
|
+
type index_BrowserPushData = BrowserPushData;
|
|
76
|
+
type index_BrowserPushOptions = BrowserPushOptions;
|
|
77
|
+
type index_Config = Config;
|
|
78
|
+
type index_Context = Context;
|
|
79
|
+
type index_ELBLayer = ELBLayer;
|
|
80
|
+
type index_ELBLayerConfig = ELBLayerConfig;
|
|
81
|
+
type index_Env = Env;
|
|
82
|
+
type index_InitSettings = InitSettings;
|
|
83
|
+
type index_Layer = Layer;
|
|
84
|
+
type index_Mapping = Mapping;
|
|
85
|
+
type index_Push = Push;
|
|
86
|
+
type index_PushResult = PushResult;
|
|
87
|
+
type index_Scope = Scope;
|
|
88
|
+
type index_Settings = Settings;
|
|
89
|
+
type index_Trigger = Trigger;
|
|
90
|
+
type index_Types = Types;
|
|
154
91
|
declare namespace index {
|
|
155
|
-
export {
|
|
92
|
+
export type { index_BrowserArguments as BrowserArguments, index_BrowserPush as BrowserPush, index_BrowserPushContext as BrowserPushContext, index_BrowserPushData as BrowserPushData, index_BrowserPushOptions as BrowserPushOptions, index_Config as Config, index_Context as Context, index_ELBLayer as ELBLayer, index_ELBLayerConfig as ELBLayerConfig, index_Env as Env, index_InitSettings as InitSettings, index_Layer as Layer, index_Mapping as Mapping, index_Push as Push, index_PushResult as PushResult, index_Scope as Scope, index_Settings as Settings, index_Trigger as Trigger, index_Types as Types };
|
|
156
93
|
}
|
|
157
94
|
|
|
158
95
|
declare function getElbAttributeName(prefix: string, name?: string, isProperty?: boolean): string;
|
|
@@ -197,4 +134,4 @@ declare function __resetInstanceCountForTests(): void;
|
|
|
197
134
|
*/
|
|
198
135
|
declare const sourceBrowser: Source.Init<Types>;
|
|
199
136
|
|
|
200
|
-
export { index
|
|
137
|
+
export { index as SourceBrowser, type TaggerConfig, type TaggerInstance, __resetInstanceCountForTests, createTagger, sourceBrowser as default, getAllEvents, getElbAttributeName, getElbValues, getEvents, getGlobals, sourceBrowser };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Elb, WalkerOS, Collector, Source
|
|
1
|
+
import { Elb, WalkerOS, Collector, Source } from '@walkeros/core';
|
|
2
2
|
import { z } from '@walkeros/core/dev';
|
|
3
3
|
import { DestinationWeb, Walker } from '@walkeros/web-core';
|
|
4
4
|
|
|
@@ -69,90 +69,27 @@ interface ELBLayerConfig {
|
|
|
69
69
|
}
|
|
70
70
|
type Scope = Document | Element;
|
|
71
71
|
|
|
72
|
-
type
|
|
73
|
-
type
|
|
74
|
-
type
|
|
75
|
-
type
|
|
76
|
-
type
|
|
77
|
-
type
|
|
78
|
-
type
|
|
79
|
-
type
|
|
80
|
-
type
|
|
81
|
-
type
|
|
82
|
-
type
|
|
83
|
-
type
|
|
84
|
-
type
|
|
85
|
-
type
|
|
86
|
-
type
|
|
87
|
-
type
|
|
88
|
-
type
|
|
89
|
-
type
|
|
90
|
-
type
|
|
91
|
-
declare namespace index$1 {
|
|
92
|
-
export type { index$1_BrowserArguments as BrowserArguments, index$1_BrowserPush as BrowserPush, index$1_BrowserPushContext as BrowserPushContext, index$1_BrowserPushData as BrowserPushData, index$1_BrowserPushOptions as BrowserPushOptions, index$1_Config as Config, index$1_Context as Context, index$1_ELBLayer as ELBLayer, index$1_ELBLayerConfig as ELBLayerConfig, index$1_Env as Env, index$1_InitSettings as InitSettings, index$1_Layer as Layer, index$1_Mapping as Mapping, index$1_Push as Push, index$1_PushResult as PushResult, index$1_Scope as Scope, index$1_Settings as Settings, index$1_Trigger as Trigger, index$1_Types as Types };
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Standard mock environment for testing browser source
|
|
97
|
-
*
|
|
98
|
-
* Use this for testing event capture, DOM interactions, and pageview tracking
|
|
99
|
-
* without requiring a real browser environment.
|
|
100
|
-
*/
|
|
101
|
-
declare const push: Env;
|
|
102
|
-
|
|
103
|
-
declare const env_push: typeof push;
|
|
104
|
-
declare namespace env {
|
|
105
|
-
export { env_push as push };
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
declare const pageView: Flow.StepExample;
|
|
109
|
-
declare const clickEvent: Flow.StepExample;
|
|
110
|
-
declare const submitEvent: Flow.StepExample;
|
|
111
|
-
declare const impressionEvent: Flow.StepExample;
|
|
112
|
-
declare const nestedEntities: Flow.StepExample;
|
|
113
|
-
declare const dataAttributeTypes: Flow.StepExample;
|
|
114
|
-
declare const contextAndGlobals: Flow.StepExample;
|
|
115
|
-
|
|
116
|
-
declare const step_clickEvent: typeof clickEvent;
|
|
117
|
-
declare const step_contextAndGlobals: typeof contextAndGlobals;
|
|
118
|
-
declare const step_dataAttributeTypes: typeof dataAttributeTypes;
|
|
119
|
-
declare const step_impressionEvent: typeof impressionEvent;
|
|
120
|
-
declare const step_nestedEntities: typeof nestedEntities;
|
|
121
|
-
declare const step_pageView: typeof pageView;
|
|
122
|
-
declare const step_submitEvent: typeof submitEvent;
|
|
123
|
-
declare namespace step {
|
|
124
|
-
export { step_clickEvent as clickEvent, step_contextAndGlobals as contextAndGlobals, step_dataAttributeTypes as dataAttributeTypes, step_impressionEvent as impressionEvent, step_nestedEntities as nestedEntities, step_pageView as pageView, step_submitEvent as submitEvent };
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Browser source createTrigger.
|
|
129
|
-
*
|
|
130
|
-
* Injects HTML into the DOM, lazily starts the flow, then calls
|
|
131
|
-
* handleTrigger directly — the same convergence point as production.
|
|
132
|
-
* For load triggers, the source's DOM scan during startFlow handles
|
|
133
|
-
* event capture automatically.
|
|
134
|
-
*
|
|
135
|
-
* @example
|
|
136
|
-
* const { trigger } = await createTrigger(config);
|
|
137
|
-
* await trigger('click', 'button')('<button data-elb="cta" data-elbaction="click:cta click">Click</button>');
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
* // Impression trigger — handleTrigger reads data-elbaction directly
|
|
141
|
-
* await trigger('impression', '[data-elb="promo"]')('<div data-elb="promo" data-elbaction="visible:promo seen">Ad</div>');
|
|
142
|
-
*/
|
|
143
|
-
declare const createTrigger: Trigger$1.CreateFn<string, void>;
|
|
144
|
-
/**
|
|
145
|
-
* Browser source trigger (legacy).
|
|
146
|
-
* Converts step example `in` data into DOM elements and dispatches events.
|
|
147
|
-
*/
|
|
148
|
-
declare const trigger: (input: unknown, env: Record<string, unknown>) => void | (() => void);
|
|
149
|
-
|
|
150
|
-
declare const index_createTrigger: typeof createTrigger;
|
|
151
|
-
declare const index_env: typeof env;
|
|
152
|
-
declare const index_step: typeof step;
|
|
153
|
-
declare const index_trigger: typeof trigger;
|
|
72
|
+
type index_BrowserArguments<R = Promise<Elb.PushResult>> = BrowserArguments<R>;
|
|
73
|
+
type index_BrowserPush<R = Promise<Elb.PushResult>> = BrowserPush<R>;
|
|
74
|
+
type index_BrowserPushContext = BrowserPushContext;
|
|
75
|
+
type index_BrowserPushData = BrowserPushData;
|
|
76
|
+
type index_BrowserPushOptions = BrowserPushOptions;
|
|
77
|
+
type index_Config = Config;
|
|
78
|
+
type index_Context = Context;
|
|
79
|
+
type index_ELBLayer = ELBLayer;
|
|
80
|
+
type index_ELBLayerConfig = ELBLayerConfig;
|
|
81
|
+
type index_Env = Env;
|
|
82
|
+
type index_InitSettings = InitSettings;
|
|
83
|
+
type index_Layer = Layer;
|
|
84
|
+
type index_Mapping = Mapping;
|
|
85
|
+
type index_Push = Push;
|
|
86
|
+
type index_PushResult = PushResult;
|
|
87
|
+
type index_Scope = Scope;
|
|
88
|
+
type index_Settings = Settings;
|
|
89
|
+
type index_Trigger = Trigger;
|
|
90
|
+
type index_Types = Types;
|
|
154
91
|
declare namespace index {
|
|
155
|
-
export {
|
|
92
|
+
export type { index_BrowserArguments as BrowserArguments, index_BrowserPush as BrowserPush, index_BrowserPushContext as BrowserPushContext, index_BrowserPushData as BrowserPushData, index_BrowserPushOptions as BrowserPushOptions, index_Config as Config, index_Context as Context, index_ELBLayer as ELBLayer, index_ELBLayerConfig as ELBLayerConfig, index_Env as Env, index_InitSettings as InitSettings, index_Layer as Layer, index_Mapping as Mapping, index_Push as Push, index_PushResult as PushResult, index_Scope as Scope, index_Settings as Settings, index_Trigger as Trigger, index_Types as Types };
|
|
156
93
|
}
|
|
157
94
|
|
|
158
95
|
declare function getElbAttributeName(prefix: string, name?: string, isProperty?: boolean): string;
|
|
@@ -197,4 +134,4 @@ declare function __resetInstanceCountForTests(): void;
|
|
|
197
134
|
*/
|
|
198
135
|
declare const sourceBrowser: Source.Init<Types>;
|
|
199
136
|
|
|
200
|
-
export { index
|
|
137
|
+
export { index as SourceBrowser, type TaggerConfig, type TaggerInstance, __resetInstanceCountForTests, createTagger, sourceBrowser as default, getAllEvents, getElbAttributeName, getElbValues, getEvents, getGlobals, sourceBrowser };
|