@walkeros/core 4.1.0-next-1778668930820 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,t={},n={},r={},o={},a={},i={},s={};((t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})})(s,{Level:()=>c});var c=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(c||{}),l={},u={},f={},p={},d={},m={},g={},y={},h={},v={},b={},w={},j={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function k(e){return{_meta:{hops:0,path:[e]}}}function $(e,t){return{event:e,next:t}}function x(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function O(e){throw new Error(String(e))}var A=new Set(["description","examples","title","$comment"]);function S(e){const t={},n=new Set;function r(o){if(t[o])return t[o];n.has(o)&&O(`Circular extends chain detected: ${[...n,o].join(" → ")}`);const a=e[o];a||O(`Contract "${o}" not found`),n.add(o);let i={};if(a.extends){i=function(e,t){const n={};void 0===e.tagging&&void 0===t.tagging||(n.tagging=t.tagging??e.tagging);void 0===e.description&&void 0===t.description||(n.description=t.description??e.description);e.schema&&t.schema?n.schema=_(e.schema,t.schema):(e.schema||t.schema)&&(n.schema={...e.schema||t.schema});if(e.events||t.events){const r={},o=new Set([...Object.keys(e.events||{}),...Object.keys(t.events||{})]);for(const n of o){const o=e.events?.[n]||{},a=t.events?.[n]||{},i=new Set([...Object.keys(o),...Object.keys(a)]);r[n]={};for(const e of i){const t=o[e],i=a[e];r[n][e]=t&&i?_(t,i):{...t||i}}}n.events=r}return n}(r(a.extends),a)}else i={...a};if(delete i.extends,i.events&&(i.events=function(e){const t={};for(const n of Object.keys(e))if("*"!==n){t[n]={};for(const r of Object.keys(e[n]||{})){let o={};const a=e["*"]?.["*"];a&&(o=_(o,a));const i=e["*"]?.[r];i&&"*"!==r&&(o=_(o,i));const s=e[n]?.["*"];s&&"*"!==r&&(o=_(o,s));const c=e[n]?.[r];c&&(o=_(o,c)),t[n][r]=o}}e["*"]&&(t["*"]={...e["*"]});return t}(i.events)),i.events){const e={};for(const[t,n]of Object.entries(i.events)){e[t]={};for(const[r,o]of Object.entries(n))e[t][r]=E(o)}i.events=e}return n.delete(o),t[o]=i,i}for(const t of Object.keys(e))r(t);return t}function _(e,t){const n={...e};for(const r of Object.keys(t)){const o=e[r],a=t[r];"required"===r&&Array.isArray(o)&&Array.isArray(a)?n[r]=[...new Set([...o,...a])]:N(o)&&N(a)?n[r]=_(o,a):n[r]=a}return n}function E(e){const t={};for(const[n,r]of Object.entries(e))A.has(n)||(null===r||"object"!=typeof r||Array.isArray(r)?t[n]=r:t[n]=E(r));return t}function N(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var C=/^\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/,z=/\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,M=/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,P=/^\$contract\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.(.+))?$/,T=/^\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?$/,R=/^\$store\.([a-zA-Z_][a-zA-Z0-9_]*)$/,I=/^\$secret\.([A-Z0-9_]+)$/,U="$code:";function Z(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var W="__WALKEROS_ENV:";function F(e,t,n){const r=`$flow.${e}${t?`.${t}`:""}`;if("unknown-flow"===n)return`${r} cannot resolve: flow "${e}" does not exist in this config.`;return`${r} is empty. Set ${t?`flows.${e}.config.${t}`:`flows.${e}.config`}, or run \`walkeros deploy ${e}\` first.`}function H(e,t,n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const a=r[e];if(null==o||"object"!=typeof o){const o=r.slice(0,e).join(".");O(`Path "${t}" not found in "${n}": "${a}" does not exist${o?` in "${o}"`:""}`)}const i=o;if(!(a in i)){const o=r.slice(0,e).join(".");O(`Path "${t}" not found in "${n}": "${a}" does not exist${o?` in "${o}"`:""}`)}o=i[a]}return o}function D(e,t,n,r,o,a){if("string"==typeof e){const i=e.match(C);if(i){const e=i[1].split("."),s=e[0],c=e.slice(1).join(".");void 0===t[s]&&O(`Variable "${s}" not found`);const l=a??new Set;if(l.has(s)){O(`Cyclic $var reference: ${[...l,s].join(" -> ")}`)}let u;l.add(s);try{u=D(t[s],t,n,r,o,l)}finally{l.delete(s)}return c&&(u=H(u,c,`$var.${s}`)),u}const s=e.match(P);if(s&&r){const e=s[1],t=s[2];e in r||O(`Contract "${e}" not found`);let n=r[e];return t&&(n=H(n,t,`$contract.${e}`)),n}const c=e.match(T);if(c){const t=c[1],r=c[2],a=!1===n?.strictFlowRefs;o||O(`$flow.${t}${r?`.${r}`:""} cannot be resolved without a flow resolver`);const i=o(t);if(!i){if(a)return n?.onWarning?.(F(t,r,"unknown-flow")),e;O(`Flow "${t}" not found in $flow.${t}`)}let s=i;if(r)if(a){try{s=H(s,r,`$flow.${t}`)}catch{return n?.onWarning?.(F(t,r,"missing-key")),e}if(null==s||""===s)return n?.onWarning?.(F(t,r,"missing-key")),e}else s=H(s,r,`$flow.${t}`);return s}let l=e.replace(z,(e,i)=>{const s=i.split("."),c=s[0],l=s.slice(1).join(".");void 0===t[c]&&O(`Variable "${c}" not found`);const u=a??new Set;if(u.has(c)){O(`Cyclic $var reference: ${[...u,c].join(" -> ")}`)}let f;u.add(c);try{f=D(t[c],t,n,r,o,u)}finally{u.delete(c)}if(l&&(f=H(f,l,`$var.${c}`)),null===f||"string"!=typeof f&&"number"!=typeof f&&"boolean"!=typeof f){O(`Variable "${i}" resolves to non-scalar (${Array.isArray(f)?"array":typeof f}) and cannot be inlined into a string. Use it as a whole-string reference: "$var.${i}"`)}return String(f)});return l=l.replace(M,(e,t,r)=>n?.deferred?void 0!==r?`${W}${t}:${r}`:`${W}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==r?r:void O(`Environment variable "${t}" not found and no default provided`)),l}if(Array.isArray(e))return e.map(e=>D(e,t,n,r,o,a));if(null!==e&&"object"==typeof e){const i={};for(const[s,c]of Object.entries(e))i[s]=D(c,t,n,r,o,a);return i}return e}function L(e){const t=e.startsWith("@"),n=e.replace("@","").replace(/[/-]/g,"_").split("_").filter(e=>e.length>0).map((e,t)=>0===t?e:e.charAt(0).toUpperCase()+e.slice(1)).join("");return t?"_"+n:n}function K(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?L(e):void 0}function V(e,t,n){const r=new Map,o=new Set,a=[],i=t=>{if(r.has(t))return r.get(t);const s=e.flows[t];if(s){if(o.has(t)){O(`Cyclic $flow reference: ${[...a,t].join(" -> ")}`)}o.add(t),a.push(t);try{const o=Z(e.variables,s.variables),a=D(s.config??{},o,n,void 0,i);return r.set(t,a),a}finally{o.delete(t),a.pop()}}},s=Object.keys(e.flows);t||(1===s.length?t=s[0]:O(`Multiple flows found (${s.join(", ")}). Please specify a flow.`));const c=e.flows[t];c||O(`Flow "${t}" not found. Available: ${s.join(", ")}`),o.add(t),a.push(t);try{return function(e,t,n,r){const o=JSON.parse(JSON.stringify(t));let a;if(e.contract){const o=Z(e.variables,t.variables);a=S(D(e.contract,o,n,void 0,r))}if(o.config){const i=Z(e.variables,t.variables);o.config=D(o.config,i,n,a,r)}if(o.sources)for(const[i,s]of Object.entries(o.sources)){const c=Z(e.variables,t.variables,s.variables),l=D(s.config,c,n,a,r),u=D(s.env,c,n,a,r),f=K(s.package,s.code,o.config?.bundle?.packages),p="string"==typeof s.code||"object"==typeof s.code?s.code:void 0,d=f||p;o.sources[i]={package:s.package,config:l,env:u,primary:s.primary,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:d}}if(o.destinations)for(const[i,s]of Object.entries(o.destinations)){const c=Z(e.variables,t.variables,s.variables),l=D(s.config,c,n,a,r),u=D(s.env,c,n,a,r),f=K(s.package,s.code,o.config?.bundle?.packages),p="string"==typeof s.code||"object"==typeof s.code?s.code:void 0,d=f||p;o.destinations[i]={package:s.package,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:d}}if(o.stores)for(const[i,s]of Object.entries(o.stores)){const c=Z(e.variables,t.variables,s.variables),l=D(s.config,c,n,a,r),u=D(s.env,c,n,a,r),f=K(s.package,s.code,o.config?.bundle?.packages),p="string"==typeof s.code||"object"==typeof s.code?s.code:void 0,d=f||p;o.stores[i]={package:s.package,config:l,env:u,variables:s.variables,code:d}}if(o.transformers)for(const[i,s]of Object.entries(o.transformers)){const c=Z(e.variables,t.variables,s.variables),l=D(s.config,c,n,a,r),u=D(s.env,c,n,a,r),f=K(s.package,s.code,o.config?.bundle?.packages),p="string"==typeof s.code||"object"==typeof s.code?s.code:void 0,d=f||p;o.transformers[i]={package:s.package,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:d}}if(o.collector){const i=Z(e.variables,t.variables),s=D(o.collector,i,n,a,r);o.collector=s}return o}(e,c,n,i)}finally{o.delete(t),a.pop()}}function q(e){const t=e.config?.platform;if("web"===t||"server"===t)return t;O('Flow must have config.platform set to "web" or "server"')}var B={merge:!0,shallow:!0,extend:!0};function J(e,t={},n={}){n={...B,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const a=e[r];return n.merge&&Array.isArray(a)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...a]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function X(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function G(e){return Array.isArray(e)}function Y(e){return"boolean"==typeof e}function Q(e){return"walker"===e}function ee(e){return void 0!==e}function te(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function ne(e){return"function"==typeof e}function re(e){return"number"==typeof e&&!Number.isNaN(e)}function oe(e){return"object"==typeof e&&null!==e&&!G(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ae(e,t){return typeof e==typeof t}function ie(e){return"string"==typeof e}function se(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 r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=se(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(se(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 ce(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&G(o)){const t=r.slice(e+1).join("."),a=[];for(const e of o){const r=ce(e,t,n);a.push(r)}return a}if(o=o instanceof Object?o[t]:void 0,void 0===o)break}return ee(o)?o:n}function le(e,t,n){if(!oe(e))return e;const r=se(e),o=t.split(".");let a=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?a[t]=n:(t in a&&"object"==typeof a[t]&&null!==a[t]||(a[t]={}),a=a[t])}return r}var ue={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 fe(e,t){const n={},r=t.includes("all")?Object.keys(ue):t;for(const t of r){const r=ue[t];if(!r)continue;const o=r(e);if(oe(o))for(const[e,r]of Object.entries(o)){if(void 0===r)continue;const o="context"===t&&Array.isArray(r)?r[0]:r;n[`${t}_${e}`]=o}}return n}function pe(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function de(e,t={},n={}){const r={...t,...n},o={};let a=!e||0===Object.keys(e).length;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(a=!0))}),!!a&&o}function me(e,t){const n={...e};return n.config=J(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=J(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=J(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function ge(e,t){if(!oe(t))return e;for(const n of Object.keys(t)){const r=t[n];void 0!==r&&(oe(r)&&oe(e[n])?ge(e[n],r):e[n]=r)}return e}function ye(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function he(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=J({name:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{entity:"child",data:{is:"subordinated"}}],consent:{functional:!0},id:e.id||ye(),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,source:{type:"collector",schema:"4"}},e,{merge:!1});if(e.name){const[t,r]=e.name.split(" ")??[];t&&r&&(n.entity=t,n.action=r)}return n}function ve(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),r={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return he({...{"cart view":{data:{currency:"EUR",value:2*r.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...r.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:r.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...o,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["complete",0]},nested:[]},{entity:"product",...o,context:{shopping:["complete",0]},nested:[]},{entity:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.walkeros.io/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...r,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...r,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...r.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:n,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,name:e})}function be(e=6,t){if(t){const n=t.length;let r="";for(let o=0;o<e;o++)r+=t[Math.random()*n|0];return r}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}var we=[{param:"gclid",platform:"google"},{param:"wbraid",platform:"google"},{param:"gbraid",platform:"google"},{param:"dclid",platform:"google"},{param:"gclsrc",platform:"google"},{param:"fbclid",platform:"meta"},{param:"igshid",platform:"meta"},{param:"msclkid",platform:"microsoft"},{param:"ttclid",platform:"tiktok"},{param:"twclid",platform:"twitter"},{param:"li_fat_id",platform:"linkedin"},{param:"epik",platform:"pinterest"},{param:"sclid",platform:"snapchat"},{param:"sccid",platform:"snapchat"},{param:"rdt_cid",platform:"reddit"},{param:"qclid",platform:"quora"},{param:"yclid",platform:"yandex"},{param:"ymclid",platform:"yandex"},{param:"ysclid",platform:"yandex"},{param:"dicbo",platform:"outbrain"},{param:"obclid",platform:"outbrain"},{param:"tblci",platform:"taboola"},{param:"mc_cid",platform:"mailchimp"},{param:"mc_eid",platform:"mailchimp"},{param:"_kx",platform:"klaviyo"},{param:"_hsenc",platform:"hubspot"},{param:"_hsmi",platform:"hubspot"},{param:"s_kwcid",platform:"adobe"},{param:"ef_id",platform:"adobe"},{param:"mkt_tok",platform:"adobe"},{param:"irclickid",platform:"impact"},{param:"cjevent",platform:"cj"},{param:"_branch_match_id",platform:"branch"}];function je(e,t={},n=[]){const r={};Object.entries(J({utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term"},t)).forEach(([t,n])=>{const o=e.searchParams.get(t);o&&(r[n]=o)});const o=n.length?function(e){const t=new Map(e.map(e=>[e.param,e.platform])),n=new Set(we.map(e=>e.param));return[...we.map(e=>t.has(e.param)?{param:e.param,platform:t.get(e.param)}:e),...e.filter(e=>!n.has(e.param))]}(n):we,a=new Map;e.searchParams.forEach((e,t)=>{e&&a.set(t.toLowerCase(),e)});for(const e of o){const t=a.get(e.param);t&&(r[e.param]=t,r.clickId||(r.clickId=e.param,r.platform=e.platform))}return r}function ke(e,t=1e3,n=!1){let r,o=null,a=!1;return(...i)=>new Promise(s=>{const c=n&&!a;o&&clearTimeout(o),o=setTimeout(()=>{o=null,n&&!a||(r=e(...i),s(r))},t),c&&(a=!0,r=e(...i),s(r))})}function $e(e,t=1e3){let n=null;return function(...r){if(null===n)return n=setTimeout(()=>{n=null},t),e(...r)}}function xe(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function Oe(e,t){let n,r={};return e instanceof Error?(n=e.message,r.error=xe(e)):n=e,void 0!==t&&(t instanceof Error?r.error=xe(t):"object"==typeof t&&null!==t?(r={...r,...t},"error"in r&&r.error instanceof Error&&(r.error=xe(r.error))):r.value=t),{message:n,context:r}}var Ae=(e,t,n,r)=>{const o=`${c[e]}${r.length>0?` [${r.join(":")}]`:""}`,a=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;a?i(o,t,n):i(o,t)};function Se(e={}){return _e({level:void 0!==e.level?function(e){return"string"==typeof e?c[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function _e(e){const{level:t,handler:n,jsonHandler:r,scope:o}=e,a=(e,r,a)=>{if(e<=t){const t=Oe(r,a);n?n(e,t.message,t.context,o,Ae):Ae(e,t.message,t.context,o)}};return{error:(e,t)=>a(0,e,t),warn:(e,t)=>a(1,e,t),info:(e,t)=>a(2,e,t),debug:(e,t)=>a(3,e,t),throw:(e,t)=>{const r=Oe(e,t);throw n?n(0,r.message,r.context,o,Ae):Ae(0,r.message,r.context,o),new Error(r.message)},json:e=>{r?r(e):console.log(JSON.stringify(e,null,2))},scope:e=>_e({level:t,handler:n,jsonHandler:r,scope:[...o,e]})}}function Ee(e){return Y(e)||ie(e)||re(e)||!ee(e)||G(e)&&e.every(Ee)||oe(e)&&Object.values(e).every(Ee)}function Ne(e){return Y(e)||ie(e)||re(e)?e:X(e)?Ne(Array.from(e)):G(e)?e.map(e=>Ne(e)).filter(e=>void 0!==e):oe(e)?Object.entries(e).reduce((e,[t,n])=>{const r=Ne(n);return void 0!==r&&(e[t]=r),e},{}):void 0}function Ce(e){return Ee(e)?e:void 0}function ze(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function Me(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(n?.())}}}async function Pe(e,t,n){const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let a,i="",s=r,c=o;const l=t=>{if(!t)return;return(G(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const r={event:e,mapping:t,collector:n,logger:n.logger,consent:oe(e)&&e.consent||n.consent};return Boolean(t.condition(e,r))})};t[s]||(s="*");const u=t[s];return u&&(u[c]||(c="*"),a=l(u[c])),a||(s="*",c="*",a=l(t[s]?.[c])),a&&(i=`${s} ${c}`),{eventMapping:a,mappingKey:i}}async function Te(e,t={},n={}){if(!ee(e))return;const r=oe(e)&&e.consent||n.consent||n.collector?.consent,o=n.event??(oe(e)?e:{});if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:o,mapping:t,collector:n.collector,logger:n.collector.logger,consent:r},i=G(t)?t:[t];for(const t of i){const n=await Me(Re)(e,t,{...a,mapping:t});if(ee(n))return n}}async function Re(e,t,n){return(G(t)?t:[t]).reduce(async(t,r)=>{const o=await t;if(o)return o;const a=ie(r)?{key:r}:r;if(!Object.keys(a).length)return;const{condition:i,consent:s,fn:c,key:l,loop:u,map:f,set:p,validate:d,value:m}=a,g={...n,mapping:r};if(i&&!await Me(i)(e,g))return;if(s&&!de(s,g.consent))return m;let y=ee(m)?m:e;if(c&&(y=await Me(c)(e,g)),l&&(y=ce(e,l,m)),u){const[t,n]=u,r="this"===t?[e]:await Te(e,t,g);G(r)&&(y=(await Promise.all(r.map(e=>Te(e,n,g)))).filter(ee))}else f?y=await Object.entries(f).reduce(async(t,[n,r])=>{const o=await t,a=await Te(e,r,g);return ee(a)&&(o[n]=a),o},Promise.resolve({})):p&&(y=await Promise.all(p.map(t=>Re(e,t,g))));d&&!await Me(d)(y,g)&&(y=void 0);const h=Ce(y);return ee(h)?h:Ce(m)},Promise.resolve(void 0))}async function Ie(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,r])=>{const o=await Te(e,r,{collector:n,event:e});e=le(e,t,o)}));const{eventMapping:r,mappingKey:o}=await Pe(e,t.mapping,n);r?.policy&&await Promise.all(Object.entries(r.policy).map(async([t,r])=>{const o=await Te(e,r,{collector:n,event:e});e=le(e,t,o)}));let a=t.data&&await Te(e,t.data,{collector:n,event:e});const i=Boolean(r?.silent);if(r){if(r.ignore)return{event:e,data:a,mapping:r,mappingKey:o,ignore:!0,silent:i};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await Te(e,r.data,{collector:n,event:e});a=oe(a)&&oe(t)?J(a,t):t}}const s=r?.include??t.include;if(s&&s.length>0){const t=fe(e,s);Object.keys(t).length>0&&(a=oe(a)?J(t,a):a??t)}return{event:e,data:a,mapping:r,mappingKey:o,ignore:!1,silent:i}}function Ue(e,t){const n=(e,r=[])=>new Proxy(e,{get(e,o){const a=e[o],i=[...r,o];return"function"==typeof a?a.prototype&&a.prototype.constructor===a?a:(...e)=>{const r=t(i,e,a);if(r&&"object"==typeof r)return n(r,i);const o=a(...e);return o&&"object"==typeof o?n(o,i):r}:a&&"object"==typeof a?n(a,i):a}});return n(e)}function Ze(e,t){const n=(e,r=[])=>{if(!e||"object"!=typeof e)return e;const o=Array.isArray(e)?[]:{};for(const[a,i]of Object.entries(e)){const e=[...r,a];Array.isArray(o)?o[Number(a)]=t(i,e):o[a]=t(i,e),i&&"object"==typeof i&&"function"!=typeof i&&(Array.isArray(o)?o[Number(a)]=n(i,e):o[a]=n(i,e))}return o};return n(e)}function We(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=We();return e.push(n),n});return{error:jest.fn(),warn:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,json:jest.fn(),scope:n,scopedLoggers:e}}function Fe(e={}){return{collector:{},config:{},env:{},logger:We(),id:"test",ingest:k("test"),...e}}function He(e){const t=String(e),n=t.split("?")[1]||t;return ze(()=>{const e=new URLSearchParams(n),t={};return e.forEach((e,n)=>{const r=n.split(/[[\]]+/).filter(Boolean);let o=t;r.forEach((t,n)=>{const a=n===r.length-1;if(G(o)){const i=parseInt(t,10);a?o[i]=pe(e):(o[i]=o[i]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[i])}else oe(o)&&(a?o[t]=pe(e):(o[t]=o[t]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[t]))})}),t})()}function De(e){if(!e)return"";const t=[],n=encodeURIComponent;function r(e,o){null!=o&&(G(o)?o.forEach((t,n)=>r(`${e}[${n}]`,t)):oe(o)?Object.entries(o).forEach(([t,n])=>r(`${e}[${t}]`,n)):t.push(`${n(e)}=${n(String(o))}`))}return"object"!=typeof e?n(e):(Object.entries(e).forEach(([e,t])=>r(e,t)),t.join("&"))}function Le(e){return void 0===e||ae(e,"")?e:JSON.stringify(e)}function Ke(e={}){return J({"Content-Type":"application/json; charset=utf-8"},e)}function Ve(e,t){return!1===e||void 0===e?null:!0===e?t:{...t,...e}}function qe(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function Be(e,t,n,r){return function(...o){let a;const i="pre"+t,s="post"+t,c=n[i],l=n[s],u=(e,t)=>{r?r.warn(e,{error:t}):console.warn(e,t)};if(c)try{a=c({fn:e},...o)}catch(t){u(`Hook ${String(i)} failed, falling back to original function`,t),a=e(...o)}else a=e(...o);if(l)try{a=l({fn:e,result:a},...o)}catch(e){u(`Hook ${String(s)} failed, keeping original result`,e)}return a}}function Je(e){return e?{userAgent:e,browser:Xe(e),browserVersion:Ge(e),os:Ye(e),osVersion:Qe(e),deviceType:et(e)}:{}}function Xe(e){const t=[{name:"Edge",substr:"Edg"},{name:"Chrome",substr:"Chrome"},{name:"Safari",substr:"Safari",exclude:"Chrome"},{name:"Firefox",substr:"Firefox"},{name:"IE",substr:"MSIE"},{name:"IE",substr:"Trident"}];for(const n of t)if(e.includes(n.substr)&&(!n.exclude||!e.includes(n.exclude)))return n.name}function Ge(e){const t=[/Edg\/([0-9]+)/,/Chrome\/([0-9]+)/,/Version\/([0-9]+).*Safari/,/Firefox\/([0-9]+)/,/MSIE ([0-9]+)/,/rv:([0-9]+).*Trident/];for(const n of t){const t=e.match(n);if(t)return t[1]}}function Ye(e){const t=[{name:"Windows",substr:"Windows NT"},{name:"macOS",substr:"Mac OS X"},{name:"Android",substr:"Android"},{name:"iOS",substr:"iPhone OS"},{name:"Linux",substr:"Linux"}];for(const n of t)if(e.includes(n.substr))return n.name}function Qe(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function et(e){let t="Desktop";return/Tablet|iPad/i.test(e)?t="Tablet":/Mobi|Android|iPhone|iPod|BlackBerry|Opera Mini|IEMobile|WPDesktop/i.test(e)&&(t="Mobile"),t}function tt(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function nt(e){const t=tt(e);return new Function("value","context",t)}function rt(e){const t=tt(e);return new Function("value","context",t)}function ot(e){const t=tt(e);return new Function("value","context",t)}function at(e){return"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}async function it(e,t){const n=t?.version||"latest",r=t?.timeout||1e4,o=new AbortController,a=setTimeout(()=>o.abort(),r),i=o.signal,s=t?.client?{"X-Walkeros-Client":t.client}:void 0;try{if(t?.baseUrl){const r=`${t.baseUrl}/api/packages/${encodeURIComponent(e)}?version=${encodeURIComponent(n)}&expand=all`,o=await fetch(r,{signal:i,...s&&{headers:s}});if(!o.ok)throw new Error(`Failed to fetch ${r} (HTTP ${o.status})`);return function(e,t,n){const r=n.schemas||{},o=n.examples||{},a=n.hints,i=n.hintKeys??(a?Object.keys(a):[]),s=n.exampleSummaries??[],c=n.platform;return{packageName:n.package||e,version:"string"==typeof n.version?n.version:t,...void 0!==n.description&&{description:n.description},...void 0!==n.type&&{type:n.type},...void 0!==c&&{platform:c},schemas:r,examples:o,...void 0!==n.docs&&{docs:n.docs},...void 0!==n.source&&{source:n.source},...a&&Object.keys(a).length>0?{hints:a}:{},hintKeys:i,exampleSummaries:s}}(e,n,await o.json())}const r=`https://cdn.jsdelivr.net/npm/${e}@${n}`,o=await st(`${r}/package.json`,i,s);return function(e,t,n,r){const o=r.$meta||{},a=r.schemas||{},i=r.examples||{},s=r.hints,c=s?Object.keys(s):[],l=[],u=i.step||{};for(const[e,t]of Object.entries(u)){const n=t,r={name:e};"string"==typeof n?.description&&(r.description=n.description),l.push(r)}const f="string"==typeof o.docs?o.docs:void 0,p="string"==typeof o.source?o.source:void 0;return{packageName:e,version:"string"==typeof n.version?n.version:t,description:"string"==typeof n.description?n.description:void 0,type:"string"==typeof o.type?o.type:void 0,platform:at(o.platform),schemas:a,examples:i,...f?{docs:f}:{},...p?{source:p}:{},...s&&Object.keys(s).length>0?{hints:s}:{},hintKeys:c,exampleSummaries:l}}(e,n,o,await st(`${r}/dist/walkerOS.json`,i,s))}finally{clearTimeout(a)}}async function st(e,t,n){const r=await fetch(e,{signal:t,...n&&{headers:n}});if(!r.ok)throw new Error(`Failed to fetch ${e} (HTTP ${r.status})`);return await r.json()}async function ct(e,t){const n=await it(e,t);return{packageName:n.packageName,version:n.version,type:n.type,platform:n.platform,schemas:n.schemas,examples:n.examples,...n.hints?{hints:n.hints}:{}}}function lt(e,t){const n=t?{...e,_hints:t}:e;return{content:[{type:"text",text:JSON.stringify(n,null,2)}],structuredContent:n}}function ut(e,t){let n,r,o,a;if(e instanceof Error){n=e.message;const t=e;t.code&&(o=t.code),Array.isArray(t.details)&&(a=t.details)}else if("string"==typeof e)n=e;else if(e&&"object"==typeof e&&"issues"in e&&Array.isArray(e.issues)){const t=e.issues;n=t.map(e=>e.message).join("; "),r=t[0]?.path?.join(".")||void 0}else n=e&&"object"==typeof e&&"message"in e?String(e.message):"Unknown error";const i={error:n};return t&&(i.hint=t),r&&(i.path=r),o&&(i.code=o),a&&(i.details=a),{content:[{type:"text",text:JSON.stringify(i)}],structuredContent:i,isError:!0}}function ft(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}function pt(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(pt);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(pt);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:r,not:o}=e,a=function(e,t){switch(e){case"eq":return e=>String(e??"")===t;case"contains":return e=>String(e??"").includes(t);case"prefix":return e=>String(e??"").startsWith(t);case"suffix":return e=>String(e??"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(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,r);return e=>{const n=ce(e,t),r=a(n);return o?!r:r}}(e)}function dt(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||"case"in e)}(e))}function mt(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(dt(e))return mt({case:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=mt(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:pt(t.match),next:mt(t.next)}:mt(t.next);if("case"in t&&t.case){const e=t.case.map(e=>{if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:mt(e)};const t=e;return{match:t.match?pt(t.match):()=>!0,next:mt(t)??{type:"chain",value:[]}}});return t.match?{type:"gate",match:pt(t.match),next:{type:"case",routes:e}}:{type:"case",routes:e}}return t.match?{type:"gate",match:pt(t.match)}:void 0}function gt(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 gt(e.next,t)}if("sequence"===e.type){const n=[];for(const r of e.value){const e=gt(r,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 gt(n.next,t)}}function yt(e,t){const n={ingest:e??{}};return void 0!==t&&(n.event=t),n}function ht(e){return{stop:e.stop??!1,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?pt(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}function vt(e,t,n,r){const o=e.rules.find(e=>e.match(n));if(!o)return null;const a=o.key.map(e=>String(ce(n,e)??""));if(a.every(e=>""===e))return null;const i=a.join(":"),s=r??e.namespace,c=s?`${s}:${i}`:i,l=t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:o}:{status:"MISS",key:c,rule:o}}function bt(e,t,n,r){e.set(t,n,1e3*r)}async function wt(e,t,n,r){if(!t)return e;let o=e;for(const[e,a]of Object.entries(t)){o=le(o,e,await Te(n,a,{collector:r}))}return o}var jt=["code","package","before","next","cache","mapping"],kt=new Set([...jt,"config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"]);function $t(e){for(const t of Object.keys(e))if(!kt.has(t))return{ok:!1,code:"UNKNOWN_KEY",key:t,reason:`Unknown key "${t}". Allowed: ${[...kt].join(", ")}.`};return void 0!==e.code&&void 0!==e.package?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:{ok:!0}}function xt(e){return void 0===e.code&&void 0===e.package&&(void 0!==e.before||void 0!==e.next||void 0!==e.cache||void 0!==e.mapping)}function Ot(e){return 0===e.length?"// no output":e.map(At).join(";\n\n")}function At(e){const[t,...n]=e,r=n.map(St).join(", ");return"return"===t?r?`return ${r}`:"return":`${t}(${r})`}function St(e){return void 0===e?"undefined":null===e?"null":"function"==typeof e?"[Function]":JSON.stringify(e,null,2)}export{t as Cache,n as Collector,j as Const,r as Context,o as Destination,W as ENV_MARKER_PREFIX,a as Elb,w as Hint,i as Hooks,c as Level,y as Lifecycle,s as Logger,l as Mapping,b as Matcher,u as On,U as REF_CODE_PREFIX,P as REF_CONTRACT,M as REF_ENV,T as REF_FLOW,I as REF_SECRET,R as REF_STORE,C as REF_VAR_FULL,z as REF_VAR_INLINE,p as Request,v as Simulation,d as Source,m as Store,jt as TRANSFORMER_OPERATIVE_FIELDS,f as Transformer,g as Trigger,h as WalkerOS,x as anonymizeIP,wt as applyUpdate,J as assign,$ as branch,yt as buildCacheContext,Ce as castToProperty,pe as castValue,vt as checkCache,se as clone,ht as compileCache,pt as compileMatcher,mt as compileNext,me as createDestination,he as createEvent,k as createIngest,Se as createLogger,Fe as createMockContext,We as createMockLogger,ft as createRespond,ke as debounce,ge as deepMerge,we as defaultClickIds,it as fetchPackage,ct as fetchPackageSchema,Ne as filterValues,fe as flattenIncludeSections,Ot as formatOut,Xe as getBrowser,Ge as getBrowserVersion,ce as getByPath,et as getDeviceType,ve as getEvent,V as getFlowSettings,de as getGrantedConsent,Ke as getHeaders,be as getId,Pe as getMappingEvent,Te as getMappingValue,je as getMarketingParameters,Ye as getOS,Qe as getOSVersion,q as getPlatform,ye as getSpanId,X as isArguments,G as isArray,Y as isBoolean,Q as isCommand,ee as isDefined,te as isElementOrDocument,ne as isFunction,re as isNumber,oe as isObject,xt as isPathTransformerEntry,Ee as isPropertyType,dt as isRouteArray,ae as isSameType,ie as isString,ut as mcpError,lt as mcpResult,_ as mergeContractSchemas,Ue as mockEnv,L as packageNameToVariable,Je as parseUserAgent,Ie as processEventMapping,He as requestToData,De as requestToParameter,S as resolveContracts,gt as resolveNext,Ve as resolveSetup,le as setByPath,bt as storeCache,$e as throttle,O as throwError,Le as transformData,Ze as traverseEnv,qe as trim,ze as tryCatch,Me as tryCatchAsync,Be as useHooks,$t as validateTransformerEntry,H as walkPath,nt as wrapCondition,rt as wrapFn,ot as wrapValidate};//# sourceMappingURL=index.mjs.map
1
+ var e=Object.defineProperty,t=(t,n)=>{for(var r in n)e(t,r,{get:n[r],enumerable:!0})},n={},r={};function o(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}t(r,{stepId:()=>o});var a={},i={};function s(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}t(i,{getDestination:()=>s});var c={},l={},u={};t(u,{Level:()=>f});var f=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(f||{}),p={},d={},m={};function g(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}t(m,{getTransformer:()=>g});var y={},h={};function v(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}t(h,{getSource:()=>v});var b={};function w(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}t(b,{getStore:()=>w});var k={},$={},j={},x={},A={},O={},S={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function E(e){return{_meta:{hops:0,path:[e]}}}function _(e,t){return{event:e,next:t}}function N(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function C(e){throw new Error(String(e))}var T=new Set(["description","examples","title","$comment"]);function z(e){const t={},n=new Set;function r(o){if(t[o])return t[o];n.has(o)&&C(`Circular extends chain detected: ${[...n,o].join(" → ")}`);const a=e[o];a||C(`Contract "${o}" not found`),n.add(o);let i={};if(a.extends){i=function(e,t){const n={};void 0===e.tagging&&void 0===t.tagging||(n.tagging=t.tagging??e.tagging);void 0===e.description&&void 0===t.description||(n.description=t.description??e.description);e.schema&&t.schema?n.schema=I(e.schema,t.schema):(e.schema||t.schema)&&(n.schema={...e.schema||t.schema});if(e.events||t.events){const r={},o=new Set([...Object.keys(e.events||{}),...Object.keys(t.events||{})]);for(const n of o){const o=e.events?.[n]||{},a=t.events?.[n]||{},i=new Set([...Object.keys(o),...Object.keys(a)]);r[n]={};for(const e of i){const t=o[e],i=a[e];r[n][e]=t&&i?I(t,i):{...t||i}}}n.events=r}return n}(r(a.extends),a)}else i={...a};if(delete i.extends,i.events&&(i.events=function(e){const t={};for(const n of Object.keys(e))if("*"!==n){t[n]={};for(const r of Object.keys(e[n]||{})){let o={};const a=e["*"]?.["*"];a&&(o=I(o,a));const i=e["*"]?.[r];i&&"*"!==r&&(o=I(o,i));const s=e[n]?.["*"];s&&"*"!==r&&(o=I(o,s));const c=e[n]?.[r];c&&(o=I(o,c)),t[n][r]=o}}e["*"]&&(t["*"]={...e["*"]});return t}(i.events)),i.events){const e={};for(const[t,n]of Object.entries(i.events)){e[t]={};for(const[r,o]of Object.entries(n))e[t][r]=P(o)}i.events=e}return n.delete(o),t[o]=i,i}for(const t of Object.keys(e))r(t);return t}function I(e,t){const n={...e};for(const r of Object.keys(t)){const o=e[r],a=t[r];"required"===r&&Array.isArray(o)&&Array.isArray(a)?n[r]=[...new Set([...o,...a])]:M(o)&&M(a)?n[r]=I(o,a):n[r]=a}return n}function P(e){const t={};for(const[n,r]of Object.entries(e))T.has(n)||(null===r||"object"!=typeof r||Array.isArray(r)?t[n]=r:t[n]=P(r));return t}function M(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var R=/^\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/,Z=/\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,D=/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,U=/^\$contract\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.(.+))?$/,F=/^\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?$/,W=/^\$store\.([a-zA-Z_][a-zA-Z0-9_]*)$/,H=/^\$secret\.([A-Z0-9_]+)$/,L="$code:";function V(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var q="__WALKEROS_ENV:";function K(e,t,n){const r=`$flow.${e}${t?`.${t}`:""}`;if("unknown-flow"===n)return`${r} cannot resolve: flow "${e}" does not exist in this config.`;return`${r} is empty. Set ${t?`flows.${e}.config.${t}`:`flows.${e}.config`}, or run \`walkeros deploy ${e}\` first.`}function B(e,t,n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const a=r[e];if(null==o||"object"!=typeof o){const o=r.slice(0,e).join(".");C(`Path "${t}" not found in "${n}": "${a}" does not exist${o?` in "${o}"`:""}`)}const i=o;if(!(a in i)){const o=r.slice(0,e).join(".");C(`Path "${t}" not found in "${n}": "${a}" does not exist${o?` in "${o}"`:""}`)}o=i[a]}return o}function J(e,t,n,r,o,a){if("string"==typeof e){const i=e.match(R);if(i){const e=i[1].split("."),s=e[0],c=e.slice(1).join(".");void 0===t[s]&&C(`Variable "${s}" not found`);const l=a??new Set;if(l.has(s)){C(`Cyclic $var reference: ${[...l,s].join(" -> ")}`)}let u;l.add(s);try{u=J(t[s],t,n,r,o,l)}finally{l.delete(s)}return c&&(u=B(u,c,`$var.${s}`)),u}const s=e.match(U);if(s&&r){const e=s[1],t=s[2];e in r||C(`Contract "${e}" not found`);let n=r[e];return t&&(n=B(n,t,`$contract.${e}`)),n}const c=e.match(F);if(c){const t=c[1],r=c[2],a=!1===n?.strictFlowRefs;o||C(`$flow.${t}${r?`.${r}`:""} cannot be resolved without a flow resolver`);const i=o(t);if(!i){if(a)return n?.onWarning?.(K(t,r,"unknown-flow")),e;C(`Flow "${t}" not found in $flow.${t}`)}let s=i;if(r)if(a){try{s=B(s,r,`$flow.${t}`)}catch{return n?.onWarning?.(K(t,r,"missing-key")),e}if(null==s||""===s)return n?.onWarning?.(K(t,r,"missing-key")),e}else s=B(s,r,`$flow.${t}`);return s}let l=e.replace(Z,(e,i)=>{const s=i.split("."),c=s[0],l=s.slice(1).join(".");void 0===t[c]&&C(`Variable "${c}" not found`);const u=a??new Set;if(u.has(c)){C(`Cyclic $var reference: ${[...u,c].join(" -> ")}`)}let f;u.add(c);try{f=J(t[c],t,n,r,o,u)}finally{u.delete(c)}if(l&&(f=B(f,l,`$var.${c}`)),null===f||"string"!=typeof f&&"number"!=typeof f&&"boolean"!=typeof f){C(`Variable "${i}" resolves to non-scalar (${Array.isArray(f)?"array":typeof f}) and cannot be inlined into a string. Use it as a whole-string reference: "$var.${i}"`)}return String(f)});return l=l.replace(D,(e,t,r)=>n?.deferred?void 0!==r?`${q}${t}:${r}`:`${q}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==r?r:void C(`Environment variable "${t}" not found and no default provided`)),l}if(Array.isArray(e))return e.map(e=>J(e,t,n,r,o,a));if(null!==e&&"object"==typeof e){const i={};for(const[s,c]of Object.entries(e))i[s]=J(c,t,n,r,o,a);return i}return e}function G(e){const t=e.startsWith("@"),n=e.replace("@","").replace(/[/-]/g,"_").split("_").filter(e=>e.length>0).map((e,t)=>0===t?e:e.charAt(0).toUpperCase()+e.slice(1)).join("");return t?"_"+n:n}function X(e,t,n){const r=new Map,o=new Set,a=[],i=t=>{if(r.has(t))return r.get(t);const s=e.flows[t];if(s){if(o.has(t)){C(`Cyclic $flow reference: ${[...a,t].join(" -> ")}`)}o.add(t),a.push(t);try{const o=V(e.variables,s.variables),a=J(s.config??{},o,n,void 0,i);return r.set(t,a),a}finally{o.delete(t),a.pop()}}},s=Object.keys(e.flows);t||(1===s.length?t=s[0]:C(`Multiple flows found (${s.join(", ")}). Please specify a flow.`));const c=e.flows[t];c||C(`Flow "${t}" not found. Available: ${s.join(", ")}`),o.add(t),a.push(t);try{return function(e,t,n,r){const o=JSON.parse(JSON.stringify(t));let a;if(e.contract){const o=V(e.variables,t.variables);a=z(J(e.contract,o,n,void 0,r))}if(o.config){const i=V(e.variables,t.variables);o.config=J(o.config,i,n,a,r)}if(o.sources)for(const[i,s]of Object.entries(o.sources)){const c=V(e.variables,t.variables,s.variables),l=J(s.config,c,n,a,r),u=J(s.env,c,n,a,r);o.sources[i]={package:s.package,import:s.import,config:l,env:u,primary:s.primary,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.destinations)for(const[i,s]of Object.entries(o.destinations)){const c=V(e.variables,t.variables,s.variables),l=J(s.config,c,n,a,r),u=J(s.env,c,n,a,r);o.destinations[i]={package:s.package,import:s.import,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.stores)for(const[i,s]of Object.entries(o.stores)){const c=V(e.variables,t.variables,s.variables),l=J(s.config,c,n,a,r),u=J(s.env,c,n,a,r);o.stores[i]={package:s.package,import:s.import,config:l,env:u,cache:s.cache,variables:s.variables,code:s.code}}if(o.transformers)for(const[i,s]of Object.entries(o.transformers)){const c=V(e.variables,t.variables,s.variables),l=J(s.config,c,n,a,r),u=J(s.env,c,n,a,r);o.transformers[i]={package:s.package,import:s.import,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.collector){const i=V(e.variables,t.variables),s=J(o.collector,i,n,a,r);o.collector=s}return o}(e,c,n,i)}finally{o.delete(t),a.pop()}}function Y(e){const t=e.config?.platform;if("web"===t||"server"===t)return t;C('Flow must have config.platform set to "web" or "server"')}var Q={merge:!0,shallow:!0,extend:!0};function ee(e,t={},n={}){n={...Q,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const a=e[r];return n.merge&&Array.isArray(a)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...a]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function te(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function ne(e){return Array.isArray(e)}function re(e){return"boolean"==typeof e}function oe(e){return"walker"===e}function ae(e){return void 0!==e}function ie(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function se(e){return"function"==typeof e}function ce(e){return"number"==typeof e&&!Number.isNaN(e)}function le(e){return"object"==typeof e&&null!==e&&!ne(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ue(e,t){return typeof e==typeof t}function fe(e){return"string"==typeof e}function pe(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 r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=pe(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(pe(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 de(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&ne(o)){const t=r.slice(e+1).join("."),a=[];for(const e of o){const r=de(e,t,n);a.push(r)}return a}if(o=le(o)||ne(o)?o[t]:void 0,void 0===o)break}return ae(o)?o:n}function me(e,t,n){if(!le(e))return e;const r=pe(e),o=t.split(".");let a=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?a[t]=n:(t in a&&"object"==typeof a[t]&&null!==a[t]||(a[t]={}),a=a[t])}return r}var ge={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 ye(e,t){const n={},r=t.includes("all")?Object.keys(ge):t;for(const t of r){const r=ge[t];if(!r)continue;const o=r(e);if(le(o))for(const[e,r]of Object.entries(o)){if(void 0===r)continue;const o="context"===t&&Array.isArray(r)?r[0]:r;n[`${t}_${e}`]=o}}return n}function he(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function ve(e,t={},n={}){const r={...t,...n},o={};let a=!e||0===Object.keys(e).length;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(a=!0))}),!!a&&o}function be(e,t){const n={...e};return n.config=ee(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=ee(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=ee(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function we(e,t){if(!le(t))return e;for(const n of Object.keys(t)){const r=t[n];void 0!==r&&(le(r)&&le(e[n])?we(e[n],r):e[n]=r)}return e}function ke(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function $e(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=ee({name:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{entity:"child",data:{is:"subordinated"}}],consent:{functional:!0},id:e.id||ke(),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,source:{type:"collector",schema:"4"}},e,{merge:!1});if(e.name){const[t,r]=e.name.split(" ")??[];t&&r&&(n.entity=t,n.action=r)}return n}function je(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),r={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return $e({...{"cart view":{data:{currency:"EUR",value:2*r.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...r.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:r.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...o,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["complete",0]},nested:[]},{entity:"product",...o,context:{shopping:["complete",0]},nested:[]},{entity:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.walkeros.io/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...r,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...r,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...r.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:n,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,name:e})}function xe(e=6,t){if(t){const n=t.length;let r="";for(let o=0;o<e;o++)r+=t[Math.random()*n|0];return r}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}var Ae=[{param:"gclid",platform:"google"},{param:"wbraid",platform:"google"},{param:"gbraid",platform:"google"},{param:"dclid",platform:"google"},{param:"gclsrc",platform:"google"},{param:"fbclid",platform:"meta"},{param:"igshid",platform:"meta"},{param:"msclkid",platform:"microsoft"},{param:"ttclid",platform:"tiktok"},{param:"twclid",platform:"twitter"},{param:"li_fat_id",platform:"linkedin"},{param:"epik",platform:"pinterest"},{param:"sclid",platform:"snapchat"},{param:"sccid",platform:"snapchat"},{param:"rdt_cid",platform:"reddit"},{param:"qclid",platform:"quora"},{param:"yclid",platform:"yandex"},{param:"ymclid",platform:"yandex"},{param:"ysclid",platform:"yandex"},{param:"dicbo",platform:"outbrain"},{param:"obclid",platform:"outbrain"},{param:"tblci",platform:"taboola"},{param:"mc_cid",platform:"mailchimp"},{param:"mc_eid",platform:"mailchimp"},{param:"_kx",platform:"klaviyo"},{param:"_hsenc",platform:"hubspot"},{param:"_hsmi",platform:"hubspot"},{param:"s_kwcid",platform:"adobe"},{param:"ef_id",platform:"adobe"},{param:"mkt_tok",platform:"adobe"},{param:"irclickid",platform:"impact"},{param:"cjevent",platform:"cj"},{param:"_branch_match_id",platform:"branch"}];function Oe(e,t={},n=[]){const r={};Object.entries(ee({utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term"},t)).forEach(([t,n])=>{const o=e.searchParams.get(t);o&&(r[n]=o)});const o=n.length?function(e){const t=new Map(e.map(e=>[e.param,e.platform])),n=new Set(Ae.map(e=>e.param));return[...Ae.map(e=>t.has(e.param)?{param:e.param,platform:t.get(e.param)}:e),...e.filter(e=>!n.has(e.param))]}(n):Ae,a=new Map;e.searchParams.forEach((e,t)=>{e&&a.set(t.toLowerCase(),e)});for(const e of o){const t=a.get(e.param);t&&(r[e.param]=t,r.clickId||(r.clickId=e.param,r.platform=e.platform))}return r}function Se(e,t){return"number"==typeof e?{wait:e}:e?{wait:e.wait??t,size:e.size,age:e.age}:{wait:t}}function Ee(e,t=1e3,n=!1){const{wait:r,size:o,age:a}=Se(t,1e3);let i,s,c=null,l=null,u=!1,f=[],p=0;const d=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),p=0,s=void 0},m=()=>{const t=s,n=f;if(d(),f=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},g=(...t)=>new Promise(d=>{const g=n&&!u;if(s=t,p+=1,f.push(d),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||m()},r),void 0===a||l||(l=setTimeout(()=>{l=null,m()},a)),void 0!==o&&p>=o)m();else if(g){u=!0,i=e(...t);const n=f;f=[],n.forEach(e=>e(i))}});return g.flush=()=>s||0!==f.length?new Promise(e=>{f.push(e),m()}):Promise.resolve(void 0),g.cancel=()=>{const e=f;f=[],d(),e.forEach(e=>e(void 0))},g.size=()=>p,g}function _e(e,t=1e3){const{wait:n}=Se(t,1e3);let r=null;return function(...t){if(null===r)return r=setTimeout(()=>{r=null},n),e(...t)}}function Ne(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function Ce(e,t){let n,r={};return e instanceof Error?(n=e.message,r.error=Ne(e)):n=e,void 0!==t&&(t instanceof Error?r.error=Ne(t):"object"==typeof t&&null!==t?(r={...r,...t},"error"in r&&r.error instanceof Error&&(r.error=Ne(r.error))):r.value=t),{message:n,context:r}}var Te=(e,t,n,r)=>{const o=`${f[e]}${r.length>0?` [${r.join(":")}]`:""}`,a=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;a?i(o,t,n):i(o,t)};function ze(e={}){return Ie({level:void 0!==e.level?function(e){return"string"==typeof e?f[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function Ie(e){const{level:t,handler:n,jsonHandler:r,scope:o}=e,a=(e,r,a)=>{if(e<=t){const t=Ce(r,a);n?n(e,t.message,t.context,o,Te):Te(e,t.message,t.context,o)}};return{error:(e,t)=>a(0,e,t),warn:(e,t)=>a(1,e,t),info:(e,t)=>a(2,e,t),debug:(e,t)=>a(3,e,t),throw:(e,t)=>{const r=Ce(e,t);throw n?n(0,r.message,r.context,o,Te):Te(0,r.message,r.context,o),new Error(r.message)},json:e=>{r?r(e):console.log(JSON.stringify(e,null,2))},scope:e=>Ie({level:t,handler:n,jsonHandler:r,scope:[...o,e]})}}function Pe(e){return re(e)||fe(e)||ce(e)||!ae(e)||ne(e)&&e.every(Pe)||le(e)&&Object.values(e).every(Pe)}function Me(e){return re(e)||fe(e)||ce(e)?e:te(e)?Me(Array.from(e)):ne(e)?e.map(e=>Me(e)).filter(e=>void 0!==e):le(e)?Object.entries(e).reduce((e,[t,n])=>{const r=Me(n);return void 0!==r&&(e[t]=r),e},{}):void 0}function Re(e){return Pe(e)?e:void 0}function Ze(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function De(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(n?.())}}}var Ue=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function Fe(e,t,n){const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let a,i="",s=r,c=o;const l=t=>{if(!t)return;return(ne(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const r={event:e,mapping:t,collector:n,logger:n.logger,consent:le(e)&&e.consent||n.consent};return Boolean(t.condition(e,r))})};t[s]||(s="*");const u=t[s];return u&&(u[c]||(c="*"),a=l(u[c])),a||(s="*",c="*",a=l(t[s]?.[c])),a&&(i=`${s} ${c}`),{eventMapping:a,mappingKey:i}}async function We(e,t={},n={}){if(!ae(e))return;const r=le(e)&&e.consent||n.consent||n.collector?.consent,o=n.event??(le(e)?e:{});if(!n.collector)throw new Error("getMappingValue: context.collector is required");const a={event:o,mapping:t,collector:n.collector,logger:n.collector.logger,consent:r},i=ne(t)?t:[t];for(const t of i){const r=await De(He,e=>{if(e instanceof Ue)throw e;n.collector&&n.collector.status.failed++,a.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...a,mapping:t});if(ae(r))return r}}async function He(e,t,n){return(ne(t)?t:[t]).reduce(async(t,r)=>{const o=await t;if(o)return o;const a=fe(r)?{key:r}:r;if(!Object.keys(a).length)return;const{condition:i,consent:s,fn:c,key:l,loop:u,map:f,set:p,validate:d,value:m}=a,g={...n,mapping:r};if(i&&!await De(i,e=>{if(e instanceof Ue)throw e;return g.logger.error("mapping condition failed",{event:g.event,error:e}),!1})(e,g))return;if(s&&!ve(s,g.consent))return m;let y=ae(m)?m:e;if(c&&(y=await De(c,e=>{if(e instanceof Ue)throw e;g.logger.error("mapping fn failed",{event:g.event,error:e})})(e,g)),l&&(y=de(e,l,m)),u){const[t,n]=u,r="this"===t?[e]:await We(e,t,g);ne(r)&&(y=(await Promise.all(r.map(e=>We(e,n,g)))).filter(ae))}else f?y=await Object.entries(f).reduce(async(t,[n,r])=>{const o=await t,a=await We(e,r,g);return ae(a)&&(o[n]=a),o},Promise.resolve({})):p&&(y=await Promise.all(p.map(t=>He(e,t,g))));d&&!await De(d,e=>{if(e instanceof Ue)throw e;return g.logger.error("mapping validate failed",{event:g.event,error:e}),!1})(y,g)&&(y=void 0);const h=Re(y);return ae(h)?h:Re(m)},Promise.resolve(void 0))}async function Le(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,r])=>{const o=await We(e,r,{collector:n,event:e});e=me(e,t,o)}));const{eventMapping:r,mappingKey:o}=await Fe(e,t.mapping,n);r?.policy&&await Promise.all(Object.entries(r.policy).map(async([t,r])=>{const o=await We(e,r,{collector:n,event:e});e=me(e,t,o)}));let a=t.data&&await We(e,t.data,{collector:n,event:e});const i=Boolean(r?.silent);if(r){if(r.ignore)return{event:e,data:a,mapping:r,mappingKey:o,ignore:!0,silent:i};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await We(e,r.data,{collector:n,event:e});a=le(a)&&le(t)?ee(a,t):t}}const s=r?.include??t.include;if(s&&s.length>0){const t=ye(e,s);Object.keys(t).length>0&&(a=le(a)?ee(t,a):a??t)}return{event:e,data:a,mapping:r,mappingKey:o,ignore:!1,silent:i}}function Ve(e,t){const n=(e,r=[])=>new Proxy(e,{get(e,o){const a=e[o],i=[...r,o];return"function"==typeof a?a.prototype&&a.prototype.constructor===a?a:(...e)=>{const r=t(i,e,a);if(r&&"object"==typeof r)return n(r,i);const o=a(...e);return o&&"object"==typeof o?n(o,i):r}:a&&"object"==typeof a?n(a,i):a}});return n(e)}function qe(e,t){const n=(e,r=[])=>{if(!e||"object"!=typeof e)return e;const o=Array.isArray(e)?[]:{};for(const[a,i]of Object.entries(e)){const e=[...r,a];Array.isArray(o)?o[Number(a)]=t(i,e):o[a]=t(i,e),i&&"object"==typeof i&&"function"!=typeof i&&(Array.isArray(o)?o[Number(a)]=n(i,e):o[a]=n(i,e))}return o};return n(e)}function Ke(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=Ke();return e.push(n),n});return{error:jest.fn(),warn:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,json:jest.fn(),scope:n,scopedLoggers:e}}function Be(e={}){return{collector:{},config:{},env:{},logger:Ke(),id:"test",ingest:E("test"),...e}}function Je(e){const t=String(e),n=t.split("?")[1]||t;return Ze(()=>{const e=new URLSearchParams(n),t={};return e.forEach((e,n)=>{const r=n.split(/[[\]]+/).filter(Boolean);let o=t;r.forEach((t,n)=>{const a=n===r.length-1;if(ne(o)){const i=parseInt(t,10);a?o[i]=he(e):(o[i]=o[i]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[i])}else le(o)&&(a?o[t]=he(e):(o[t]=o[t]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[t]))})}),t})()}function Ge(e){if(!e)return"";const t=[],n=encodeURIComponent;function r(e,o){null!=o&&(ne(o)?o.forEach((t,n)=>r(`${e}[${n}]`,t)):le(o)?Object.entries(o).forEach(([t,n])=>r(`${e}[${t}]`,n)):t.push(`${n(e)}=${n(String(o))}`))}return"object"!=typeof e?n(e):(Object.entries(e).forEach(([e,t])=>r(e,t)),t.join("&"))}function Xe(e){return void 0===e||ue(e,"")?e:JSON.stringify(e)}function Ye(e={}){return ee({"Content-Type":"application/json; charset=utf-8"},e)}function Qe(e,t){return!1===e||void 0===e?null:!0===e?t:{...t,...e}}function et(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function tt(e,t,n,r){return function(...o){let a;const i="pre"+t,s="post"+t,c=n[i],l=n[s],u=(e,t)=>{r?r.warn(e,{error:t}):console.warn(e,t)};if(c)try{a=c({fn:e},...o)}catch(t){u(`Hook ${String(i)} failed, falling back to original function`,t),a=e(...o)}else a=e(...o);if(l)try{a=l({fn:e,result:a},...o)}catch(e){u(`Hook ${String(s)} failed, keeping original result`,e)}return a}}function nt(e){return e?{userAgent:e,browser:rt(e),browserVersion:ot(e),os:at(e),osVersion:it(e),deviceType:st(e)}:{}}function rt(e){const t=[{name:"Edge",substr:"Edg"},{name:"Chrome",substr:"Chrome"},{name:"Safari",substr:"Safari",exclude:"Chrome"},{name:"Firefox",substr:"Firefox"},{name:"IE",substr:"MSIE"},{name:"IE",substr:"Trident"}];for(const n of t)if(e.includes(n.substr)&&(!n.exclude||!e.includes(n.exclude)))return n.name}function ot(e){const t=[/Edg\/([0-9]+)/,/Chrome\/([0-9]+)/,/Version\/([0-9]+).*Safari/,/Firefox\/([0-9]+)/,/MSIE ([0-9]+)/,/rv:([0-9]+).*Trident/];for(const n of t){const t=e.match(n);if(t)return t[1]}}function at(e){const t=[{name:"Windows",substr:"Windows NT"},{name:"macOS",substr:"Mac OS X"},{name:"Android",substr:"Android"},{name:"iOS",substr:"iPhone OS"},{name:"Linux",substr:"Linux"}];for(const n of t)if(e.includes(n.substr))return n.name}function it(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function st(e){let t="Desktop";return/Tablet|iPad/i.test(e)?t="Tablet":/Mobi|Android|iPhone|iPod|BlackBerry|Opera Mini|IEMobile|WPDesktop/i.test(e)&&(t="Mobile"),t}function ct(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function lt(e){const t=ct(e);return new Function("value","context",t)}function ut(e){const t=ct(e);return new Function("value","context",t)}function ft(e){const t=ct(e);return new Function("value","context",t)}function pt(e){return"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}async function dt(e,t){const n=t?.version||"latest",r=t?.timeout||1e4,o=new AbortController,a=setTimeout(()=>o.abort(),r),i=o.signal,s=t?.client?{"X-Walkeros-Client":t.client}:void 0;try{if(t?.baseUrl){const r=`${t.baseUrl}/api/packages/${encodeURIComponent(e)}?version=${encodeURIComponent(n)}&expand=all`,o=await fetch(r,{signal:i,...s&&{headers:s}});if(!o.ok)throw new Error(`Failed to fetch ${r} (HTTP ${o.status})`);return function(e,t,n){const r=n.schemas||{},o=n.examples||{},a=n.hints,i=n.hintKeys??(a?Object.keys(a):[]),s=n.exampleSummaries??[],c=n.platform;return{packageName:n.package||e,version:"string"==typeof n.version?n.version:t,...void 0!==n.description&&{description:n.description},...void 0!==n.type&&{type:n.type},...void 0!==c&&{platform:c},schemas:r,examples:o,...void 0!==n.docs&&{docs:n.docs},...void 0!==n.source&&{source:n.source},...a&&Object.keys(a).length>0?{hints:a}:{},hintKeys:i,exampleSummaries:s}}(e,n,await o.json())}const r=`https://cdn.jsdelivr.net/npm/${e}@${n}`,o=await mt(`${r}/package.json`,i,s);return function(e,t,n,r){const o=r.$meta||{},a=r.schemas||{},i=r.examples||{},s=r.hints,c=s?Object.keys(s):[],l=[],u=i.step||{};for(const[e,t]of Object.entries(u)){const n=t,r={name:e};"string"==typeof n?.description&&(r.description=n.description),l.push(r)}const f="string"==typeof o.docs?o.docs:void 0,p="string"==typeof o.source?o.source:void 0;return{packageName:e,version:"string"==typeof n.version?n.version:t,description:"string"==typeof n.description?n.description:void 0,type:"string"==typeof o.type?o.type:void 0,platform:pt(o.platform),schemas:a,examples:i,...f?{docs:f}:{},...p?{source:p}:{},...s&&Object.keys(s).length>0?{hints:s}:{},hintKeys:c,exampleSummaries:l}}(e,n,o,await mt(`${r}/dist/walkerOS.json`,i,s))}finally{clearTimeout(a)}}async function mt(e,t,n){const r=await fetch(e,{signal:t,...n&&{headers:n}});if(!r.ok)throw new Error(`Failed to fetch ${e} (HTTP ${r.status})`);return await r.json()}async function gt(e,t){const n=await dt(e,t);return{packageName:n.packageName,version:n.version,type:n.type,platform:n.platform,schemas:n.schemas,examples:n.examples,...n.hints?{hints:n.hints}:{}}}function yt(e,t){const n=t?{...e,_hints:t}:e;return{content:[{type:"text",text:JSON.stringify(n,null,2)}],structuredContent:n}}function ht(e,t){let n,r,o,a;if(e instanceof Error){n=e.message;const t=e;t.code&&(o=t.code),Array.isArray(t.details)&&(a=t.details)}else if("string"==typeof e)n=e;else if(e&&"object"==typeof e&&"issues"in e&&Array.isArray(e.issues)){const t=e.issues;n=t.map(e=>e.message).join("; "),r=t[0]?.path?.join(".")||void 0}else n=e&&"object"==typeof e&&"message"in e?String(e.message):"Unknown error";const i={error:n};return t&&(i.hint=t),r&&(i.path=r),o&&(i.code=o),a&&(i.details=a),{content:[{type:"text",text:JSON.stringify(i)}],structuredContent:i,isError:!0}}function vt(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}function bt(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(bt);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(bt);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:r,not:o}=e,a=function(e,t){switch(e){case"eq":return e=>String(e??"")===t;case"contains":return e=>String(e??"").includes(t);case"prefix":return e=>String(e??"").startsWith(t);case"suffix":return e=>String(e??"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(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,r);return e=>{const n=de(e,t),r=a(n);return o?!r:r}}(e)}function wt(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 kt(e){return e.map(e=>{if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:$t(e)??{type:"chain",value:[]}};const t=e;return{match:t.match?bt(t.match):()=>!0,next:$t(t)??{type:"chain",value:[]}}})}function $t(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(wt(e))return $t({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=$t(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:bt(t.match),next:$t(t.next)}:$t(t.next);if("one"in t&&t.one){const e=kt(t.one);return t.match?{type:"gate",match:bt(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=kt(t.many);return t.match?{type:"gate",match:bt(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:bt(t.match)}:void 0}var jt=new WeakMap;function xt(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=jt.get(e);t?n=t:(n=$t(e),n&&jt.set(e,n))}else n=$t(e);if(!n)return[];const r=At(n,t);return void 0===r?[]:Array.isArray(r)?r:[r]}function At(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 At(e.next,t)}if("sequence"===e.type){const n=[];for(const r of e.value){const e=At(r,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 r of e.routes){if(!r.match(t))continue;const e=At(r.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 At(n.next,t)}}function Ot(e,t){const n={ingest:e??{}};return void 0!==t&&(n.event=t),n}function St(e){return{stop:e.stop??!1,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?bt(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function Et(e,t,n,r){const o=e.rules.find(e=>e.match(n));if(!o)return null;const a=o.key.map(e=>String(de(n,e)??""));if(a.every(e=>""===e))return null;const i=a.join(":"),s=r??e.namespace,c=s?`${s}:${i}`:i,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:o}:{status:"MISS",key:c,rule:o}}function _t(e,t,n,r){e.set(t,n,1e3*r)}async function Nt(e,t,n,r){if(!t)return e;let o=e;for(const[e,a]of Object.entries(t)){o=me(o,e,await We(n,a,{collector:r}))}return o}var Ct={Source:["code","package","import","before","next","cache"],Transformer:["code","package","import","before","next","cache","mapping"],Destination:["code","package","import","before","next","cache"],Store:["code","package","import","cache"]},Tt=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],zt={Source:["primary"],Transformer:[],Destination:[],Store:[]},It=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Pt(e,t){const n=function(e){return new Set([...Ct[e],...Tt,...zt[e]])}(t);for(const r of Object.keys(e))if(!n.has(r))return{ok:!1,code:"UNKNOWN_KEY",key:r,reason:`Unknown key "${r}" on ${t}. Allowed: ${[...n].sort().join(", ")}.`};const r=void 0!==e.package,o=void 0!==e.import,a=void 0!==e.code;return a&&"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.`}:a&&("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."}:a&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:a&&o?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:o&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!o||"string"==typeof e.import&&It.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${It.source}. Got: ${JSON.stringify(e.import)}.`}}function Mt(e,t){return"Transformer"===t&&(void 0===e.code&&void 0===e.package&&void 0===e.import&&(void 0!==e.before||void 0!==e.next||void 0!==e.cache||void 0!==e.mapping))}function Rt(e){return 0===e.length?"// no output":e.map(Zt).join(";\n\n")}function Zt(e){const[t,...n]=e,r=n.map(Dt).join(", ");return"return"===t?r?`return ${r}`:"return":`${t}(${r})`}function Dt(e){return void 0===e?"undefined":null===e?"null":"function"==typeof e?"[Function]":JSON.stringify(e,null,2)}export{n as Cache,r as Collector,S as Const,a as Context,i as Destination,q as ENV_MARKER_PREFIX,c as Elb,Ue as FatalError,O as Hint,l as Hooks,f as Level,$ as Lifecycle,u as Logger,p as Mapping,A as Matcher,d as On,L as REF_CODE_PREFIX,U as REF_CONTRACT,D as REF_ENV,F as REF_FLOW,H as REF_SECRET,W as REF_STORE,R as REF_VAR_FULL,Z as REF_VAR_INLINE,y as Request,Ct as STEP_OPERATIVE_FIELDS,x as Simulation,h as Source,b as Store,m as Transformer,k as Trigger,j as WalkerOS,N as anonymizeIP,Nt as applyUpdate,ee as assign,_ as branch,Ot as buildCacheContext,Re as castToProperty,he as castValue,Et as checkCache,pe as clone,St as compileCache,bt as compileMatcher,be as createDestination,$e as createEvent,E as createIngest,ze as createLogger,Be as createMockContext,Ke as createMockLogger,vt as createRespond,Ee as debounce,we as deepMerge,Ae as defaultClickIds,dt as fetchPackage,gt as fetchPackageSchema,Me as filterValues,ye as flattenIncludeSections,Rt as formatOut,rt as getBrowser,ot as getBrowserVersion,de as getByPath,st as getDeviceType,je as getEvent,X as getFlowSettings,ve as getGrantedConsent,Ye as getHeaders,xe as getId,Fe as getMappingEvent,We as getMappingValue,Oe as getMarketingParameters,xt as getNextSteps,at as getOS,it as getOSVersion,Y as getPlatform,ke as getSpanId,te as isArguments,ne as isArray,re as isBoolean,oe as isCommand,ae as isDefined,ie as isElementOrDocument,se as isFunction,ce as isNumber,le as isObject,Mt as isPathStepEntry,Pe as isPropertyType,ue as isSameType,fe as isString,ht as mcpError,yt as mcpResult,I as mergeContractSchemas,Ve as mockEnv,G as packageNameToVariable,nt as parseUserAgent,Le as processEventMapping,Je as requestToData,Ge as requestToParameter,z as resolveContracts,Qe as resolveSetup,me as setByPath,o as stepId,_t as storeCache,_e as throttle,C as throwError,Xe as transformData,qe as traverseEnv,et as trim,Ze as tryCatch,De as tryCatchAsync,tt as useHooks,Pt as validateStepEntry,B as walkPath,lt as wrapCondition,ut as wrapFn,ft as wrapValidate};//# sourceMappingURL=index.mjs.map