@walkeros/collector 4.4.0 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- 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/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={},t={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",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},n={Commands:t,Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};import{assign as o}from"@walkeros/core";function r(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=o(e.consent,n),{update:n}}import{OBSERVE_STORAGE_KEY as s,createBatchedPoster as a,createTelemetryObserver as i,parseObserveCredential as c}from"@walkeros/core";import{assign as u,createLogger as d}from"@walkeros/core";import{assign as l,buildCacheContext as f,clone as p,compileCache as g,checkCache as m,storeCache as h,createIngest as v,debounce as y,emitStep as w,getId as b,getGrantedConsent as k,getNextSteps as I,isDefined as C,isFunction as E,isObject as S,OBSERVE_ENV_KEY as q,processEventMapping as x,stepId as O,tryCatchAsync as j,useHooks as $,compileState as A,applyState as D}from"@walkeros/core";import{emitStep as M}from"@walkeros/core";function T(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function _(e,t){const n=e.status.startedAt,o={flowId:e.name??"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n};return t.traceId&&(o.traceId=t.traceId),t.sourceId&&(o.sourceId=t.sourceId),t.parentEventId&&(o.parentEventId=t.parentEventId),o}import{parseCallPath as P}from"@walkeros/core";function R(e){return"object"==typeof e&&null!==e}function z(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8)return e;const o=t.get(e);if(void 0!==o)return o;if(Array.isArray(e)){const o=[];t.set(e,o);for(const r of e)o.push(z(r,t,n+1));return o}const r={};t.set(e,r);for(const[o,s]of Object.entries(e))r[o]="function"==typeof s?s:z(s,t,n+1);return r}function U(e){const t=[],n=[],{simulation:o,...r}=e,s=z(r,new WeakMap,0);for(const e of o){const o=P(e);if(0===o.length)continue;const r=o.join(".");if(o.length-1>=8){n.push(r);continue}let a=s,i=!0;for(let e=0;e<o.length-1;e++){const t=a[o[e]];if(!R(t)){i=!1;break}a=t}const c=o[o.length-1];if(!i||!(c in a)){n.push(r);continue}const u=a[c];"function"==typeof u?a[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),u.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function K(e,t){try{return e[t]}catch{return"[unreadable]"}}function B(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(K(r,t),o+1);s=e}else s=function(e){try{return String(e)}catch{return"[object]"}}(r)}catch{s="[unreadable]"}return t.delete(r),s};return e.map(e=>n(e,0))}function F(e){return e.map(e=>({fn:e.fn,args:B(e.args),ts:e.ts}))}import{isArray as H,FatalError as G}from"@walkeros/core";import{tryCatch as W,tryCatchAsync as L}from"@walkeros/core";import{stepId as Q}from"@walkeros/core";function V(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const r=[];for(;e.length>=n.max;)r.push(e.shift());return e.push(t),r.length>0&&o&&o(r),{appended:!0,dropped:r.length}}var N=new WeakMap;function Y(e,t,n,o){N.get(e)||(N.set(e,!0),t.warn(n,o))}function J(e){N.delete(e)}var X=5,Z=3e4,ee=()=>Date.now();function te(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:Z}:{threshold:e.threshold??5,cooldown:e.cooldown??Z}}function ne(e,t,n,o,r){if("partial"===n)return;const s=function(e,t){return e[t]||(e[t]={state:"closed",consecutiveFailures:0}),e[t]}(e,t);return"success"===n?(s.consecutiveFailures=0,s.state="closed",s.probing=!1,void(s.openUntil=void 0)):(s.consecutiveFailures+=1,"half-open"===s.state?(s.state="open",s.probing=!1,void(s.openUntil=ee()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ee()+r)))}function oe(e,t){return!e||("closed"===e.state||"half-open"===e.state||void 0!==e.openUntil&&t>=e.openUntil)}var re=100;function se(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 ae(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const r=e.dropped[t];return r[n]=(r[n]??0)+o,r[n]}function ie(e,t,n,o,r){const s=Q(t,n);return(t,a)=>{try{if(a)return r?function(e,t,n,o,r,s){const a=t.dlq=t.dlq||[],i={max:t.config.dlqMax??re},c=V(a,[o,r],i);if(c.dropped>0){const t=ae(e.status,Q("destination",n),"dlq",c.dropped);Y(a,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:i.max,droppedCount:t})}else a.length<i.max&&J(a);const u=se(e,n);u.failed++,u.dlqSize=a.length,e.status.failed++;const d=te(t.config.breaker);if(d){const o=t.config.id||n;ne(e.status.breakers,Q("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,a,t,o):e.status.failed++,void o.error("report error",{error:t instanceof Error?t.message:String(t),event:a.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch{}}}import{createIngest as ce,FatalError as ue,getMappingValue as de,getSpanId as le,parseTraceparent as fe,tryCatchAsync as pe,getNextSteps as ge,compileCache as me,checkCache as he,storeCache as ve,applyUpdate as ye,buildCacheContext as we,compileState as be,applyState as ke}from"@walkeros/core";import{createIngest as Ie,emitStep as Ce,FatalError as Ee,isObject as Se,stepId as qe,tryCatchAsync as xe,useHooks as Oe,getNextSteps as je,compileCache as $e,checkCache as Ae,storeCache as De,buildCacheContext as Me,validateStepEntry as Te,processEventMapping as _e,compileState as Pe,applyState as Re}from"@walkeros/core";function ze(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function Ue(e,t){return e?t.stores[e]:t.stores.__cache}function Ke(e){const t={};for(const[n,o]of Object.entries(e)){const e=o.config?.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?t[n]={next:e}:t[n]={}}return t}function Be(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 Fe(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function He(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:Ie(n),config:t.config,env:Qe(t.config.env),reportError:ie(e,"transformer",n,r)};r.debug("init");const a=await Oe(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===a)return!1;t.config={...a||t.config,env:a?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function Ge(e,t,n,o,r,s){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:r,config:t.config,env:{...Qe(t.config.env),...s?{respond:s}:{}},reportError:ie(e,"transformer",n,i)};i.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",{traceId:d,sourceId:l,parentEventId:f}=T(o,r,e),p=Date.now(),g=_(e,{stepId:qe("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:p,traceId:d,sourceId:l,parentEventId:f});g.inEvent=o,Ce(e,g);try{const r=await Oe(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),a=_(e,{stepId:qe("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s,traceId:d,sourceId:l,parentEventId:f});return a.durationMs=s-p,a.outEvent=r,Ce(e,a),i.debug("push done"),r}catch(t){const o=Date.now(),r=_(e,{stepId:qe("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o,traceId:d,sourceId:l,parentEventId:f});throw r.durationMs=o-p,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Ce(e,r),t}}function We(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:Ie(t)}async function Le(e,t,n,o,r,s,a){r||(r=Ie(n[0]??"chain")),a&&r._meta&&(r._meta.chainPath=a);let i=o,c=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:c};r&&r._meta&&(r._meta.hops++,r._meta.path.push(o));if(!await xe(He,t=>{if(t instanceof Ee)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:c};if(a&&void 0!==s.config?.chainMocks?.[a]){const t=s.config.chainMocks[a];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:a}),i=t;continue}if(void 0!==s.config?.mock){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),i=s.config.mock;continue}if(s.config?.disabled)continue;const u=s.config?.cache,d=u?$e(u):void 0,l=d?ze(d,e):void 0,f=s.config?.state?Pe(s.config.state):void 0,p=f?.filter(e=>"get"===e.mode),g=f?.filter(e=>"set"===e.mode),m=async t=>g&&0!==g.length?Re(g,t=>Ue(t,e),t,e):t;let h;if(d&&l){const e=Me(r,i),t=await Ae(d,l,e);if("HIT"===t?.status&&t.value){if(i=t.value,d.stop)return{event:i,respond:c,stopped:!0};continue}"MISS"===t?.status&&(h={key:t.key,ttl:t.rule.ttl})}const v=s.config.before;if(v){const n=je(v,Me(r,i));if(1===n.length){const o=Fe(n[0],Ke(t));if(o.length>0){const n=await Le(e,t,o,i,r,c,a);if(null===n.event)return{event:null,respond:n.respond??c};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:n.respond??c,stopped:!0};n.respond&&(c=n.respond),i=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>xe(Le,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,Fe(n,Ke(t)),i,We(r,n),void 0,a)))}p&&p.length>0&&(i=await Re(p,t=>Ue(t,e),i,e));const y=await xe(Ge,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,i,r,c);if(!1===y)return{event:null,respond:c,droppedBy:o};if(Array.isArray(y)){const s=n.slice(n.indexOf(o)+1),u=await Promise.all(y.map(async n=>{const o=await m(n.event||i),u=We(r,"unknown");if(n.next){const r=je(n.next,Me(u,o));if(0===r.length)return{event:o,respond:c};if(1===r.length){const n=Fe(r[0],Ke(t));return n.length>0?Le(e,t,n,o,u,c,a):{event:o,respond:c}}return(await Promise.all(r.map(n=>xe(Le,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,Fe(n,Ke(t)),o,We(u,n),void 0,a)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?Le(e,t,s,o,u,c,a):{event:o,respond:c}}));let d=c;const l=[];for(const e of u.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(d=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:d}:1===l.length?{event:l[0],respond:d}:{event:l,respond:d}}if(y&&"object"==typeof y){const{event:n,respond:o,next:s}=y;if(o&&(c=o),void 0!==s){const o=await m(n||i),u=je(s,Me(r,o));if(0===u.length){i=o;continue}if(1===u.length){const n=Fe(u[0],Ke(t));return n.length>0?Le(e,t,n,o,r,c,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:c})}return await Promise.all(u.map(n=>xe(Le,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,Fe(n,Ke(t)),o,We(r,n),void 0,a))),{event:null,respond:void 0}}n&&(i=n)}g&&g.length>0&&(i=await Re(g,t=>Ue(t,e),i,e)),h&&l&&De(l,h.key,i,h.ttl);const w=s.config.next,b="string"==typeof w||Array.isArray(w)&&w.every(e=>"string"==typeof e),k=void 0!==w&&!b;if((!y||"object"==typeof y&&!y.next)&&k){const n=je(s.config.next,Me(r,i));if(1===n.length){const o=Fe(n[0],Ke(t));return o.length>0?Le(e,t,o,i,r,c,a):{event:i,respond:c}}return n.length>1?(await Promise.all(n.map(n=>xe(Le,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,Fe(n,Ke(t)),i,We(r,n),void 0,a))),{event:null,respond:void 0}):{event:i,respond:c}}}return{event:i,respond:c}}function Qe(e){return e&&Se(e)?e:{}}function Ve(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function Ne(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const r=n||t.config?.id||"unknown";for(const{type:n,data:s}of o)at(n)&&!lt(e,t,n)||(await pe(t.on,t=>{if(t instanceof ue)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,error:t})})(n,s),at(n)&&dt(e,t,n))}function Ye(e){return Boolean(e.config.init)&&!e.config.require?.length}function Je(e){return"object"==typeof e&&null!==e}async function Xe(e,t,n){const{code:o,config:r={},env:s={},primary:a,next:i,before:c,cache:u,terminus:d}=n,l=r.state??n.state,f=l?be(l):void 0,p=u,g=p?me({...p,stop:p.stop??!0}):void 0,m=Ve(i)?Fe(i,Ke(e.transformers)):void 0,h=Ve(c)?Fe(c,Ke(e.transformers)):void 0,v=d??e.push,y=Boolean(d),w=async(n,o,s)=>{if(y)return v(n);let a;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:le()},d=h??(void 0!==c?(()=>{const t=ge(c,we(s.ingest));if(0===t.length)return[];return Fe(1===t.length?t[0]:t,Ke(e.transformers))})():[]);let l=[u];if(d.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Le(e,e.transformers,d,u,s.ingest,s.respond,`source.${t}.before`);if(null===n.event)return{ok:!0};if(n.stopped)return n.respond&&(s.respond=n.respond),{ok:!0};n.respond&&(s.respond=n.respond);const o="string"==typeof u.id?u.id:"";if(Array.isArray(n.event))l=n.event.map(e=>""!==o&&e.id===o?{...e,id:le()}:e);else{const e=n.event;l=""===o||"string"==typeof e.id&&""!==e.id?[e]:[{...e,id:o}]}}if(g){const t=ze(g,e);if(t){const n=we(s.ingest),o=await he(g,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await ye(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),s.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&s.respond){const r=s.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{ve(t,u,n,d),i?a=(async()=>{const t=await ye(n,i,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||ve(t,o.key,!0,o.rule.ttl)}}}const p=m?{kind:"single",preChain:m}:void 0!==i?(()=>{const t=ge(i,we(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:Fe(t[0],Ke(e.transformers))}:{kind:"many",branches:t.map(t=>Fe(t,Ke(e.transformers)))}})():{kind:"single",preChain:[]};f&&f.length>0&&(l=await Promise.all(l.map(t=>ke(f,t=>Ue(t,e),t,e))));let w={ok:!0};for(const n of l)"many"===p.kind?(await Promise.all(p.branches.map((a,i)=>pe(async()=>v(n,{...o,id:t,ingest:We(s.ingest,`${t}.${i}`),respond:void 0,mapping:r,preChain:a}),t=>(e.logger.scope("source:many").error(`many branch ${i} failed`,{error:t}),{ok:!0}))())),w={ok:!0}):w=await v(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:r,preChain:p.preChain});return a&&await a,w},b=async n=>{const o=ce(t),s=fe(function(e){if(!Je(e))return;const t=e.headers;if(Je(t)){if(function(e){return"get"in e&&"function"==typeof e.get}(t))return t.get("traceparent")??void 0;if("traceparent"in t)return t.traceparent;for(const e of Object.keys(t))if("traceparent"===e.toLowerCase())return t[e]}}(n));if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!r.ingest||void 0===n)return o;const a=await de(n,r.ingest,{collector:e});return{...o,...a,_meta:o._meta}},k=e.logger.scope("source").scope(t),I={...s,push:async(e,n={})=>{const o={ingest:ce(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:k},C={collector:e,logger:k,id:t,config:r,env:I,withScope:async(e,t,n)=>{const o={ingest:await b(e),respond:t};return n({...I,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ie(e,"source",t,k)},E=await pe(o,n=>{if(n instanceof ue)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(C);if(!E)return;const S=E.type||"unknown",q=e.logger.scope(S).scope(t);return I.logger=q,a&&(E.config={...E.config,primary:a}),E}async function Ze(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Xe(e,o,r);if(!t)continue;const s=r.config?.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await pe(n.init.bind(n),n=>{if(n instanceof ue)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,Ye(n)&&await Ne(e,n,t))}return await et(e),n}async function et(e){for(const[t,n]of Object.entries(e.sources)){if(Ye(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!ct(e,t));r.length!==o.length&&(n.config.require=r,Ye(n)&&await Ne(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const r=o.filter(t=>!ct(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Tt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function tt(e){if("object"!=typeof e||null===e)return!1;if(!("logger"in e))return!1;const t=e.logger;return"object"==typeof t&&null!==t&&("scope"in t&&"function"==typeof t.scope)}var nt=!1;function ot(){nt||(nt=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function rt(e,t,n,o){if(n instanceof G)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var st=[n.Commands.Consent,n.Commands.User,n.Commands.Globals,n.Commands.Custom];function at(e){return st.includes(e)}function it(e,t){switch(t){case n.Commands.Consent:return Object.keys(e.consent).length>0;case n.Commands.User:return Object.keys(e.user).length>0;case n.Commands.Globals:return Object.keys(e.globals).length>0;case n.Commands.Custom:return Object.keys(e.custom).length>0;default:return!1}}function ct(e,t){switch(t){case n.Commands.Consent:case n.Commands.User:case n.Commands.Globals:case n.Commands.Custom:return it(e,t);case n.Commands.Run:case n.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function ut(e,t){return e.cellVersion[String(t)]??0}function dt(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=ut(e,n)}function lt(e,t,n){return e.allowed&&ut(e,n)>function(e,t,n){const o=e.delivery.get(t),r=o?.[String(n)];return void 0===r?-1:r}(e,t,n)}function ft(e){return e.cascade?()=>{}:(e.cascade={counts:new WeakMap},()=>{e.cascade=void 0})}function pt(e,t,n){const o=e.cascade;if(!o)return!0;let r=o.counts.get(t);r||(r={},o.counts.set(t,r));const s=String(n),a=(r[s]||0)+1;return r[s]=a,a<=8||(9===a&&e.logger.error("state delivery did not converge",{type:s}),!1)}function gt(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function mt(e,t,n){if(!tt(e))return void ot();const o=e.on,r=o[t]||[],s=H(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,vt(e,t,s)}function ht(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",a=e.logger.scope(s).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:r,env:Pt(t.env,t.config.env),reportError:ie(e,"destination",n,a,t)};W(t.on,t=>rt(e,"destination",t,{destId:n,type:o}))(o,i)}function vt(e,t,o,r){if(!tt(e))return void ot();const s=yt(e,t,r);if(o.length)switch(t){case n.Commands.Consent:!function(e,t,o){const r=o||e.consent,s=gt(e,n.Commands.Consent);t.forEach(t=>{lt(e,t,n.Commands.Consent)&&pt(e,t,n.Commands.Consent)&&(Object.keys(r).filter(e=>e in t).forEach(n=>{W(t[n],t=>rt(e,"consent",t,{key:n}))(r,s)}),dt(e,t,n.Commands.Consent))})}(e,o,r);break;case n.Commands.Ready:!function(e,t){if(!e.allowed)return;const o=gt(e,n.Commands.Ready);t.forEach(t=>{W(t,t=>rt(e,"ready",t))(void 0,o)})}(e,o);break;case n.Commands.Run:!function(e,t){if(!e.allowed)return;const o=gt(e,n.Commands.Run);t.forEach(t=>{W(t,t=>rt(e,"run",t))(void 0,o)})}(e,o);break;case n.Commands.Session:!function(e,t){if(!e.session)return;const o=gt(e,n.Commands.Session);t.forEach(t=>{W(t,t=>rt(e,"session",t))(e.session,o)})}(e,o);break;default:{const n=gt(e,t),r=at(t);o.forEach(o=>{"function"==typeof o&&(r&&!lt(e,o,t)||r&&!pt(e,o,t)||(W(o,n=>rt(e,"generic",n,{type:t}))(s,n),r&&dt(e,o,t)))});break}}}function yt(e,t,o){switch(t){case n.Commands.Consent:return o||e.consent;case n.Commands.Session:return e.session;case n.Commands.User:return o||e.user;case n.Commands.Custom:return o||e.custom;case n.Commands.Globals:return o||e.globals;case n.Commands.Config:return o||e.config;default:return}}async function wt(e,t,n,o,r){if(!t.on)return!1;if(at(o)&&!lt(e,t,o))return!1;if(at(o)&&!pt(e,t,o))return!1;const s=await L(t.on,t=>rt(e,"source",t,{sourceId:n,type:o}))(o,r);return at(o)&&dt(e,t,o),!1===s}async function bt(e){if(tt(e))for(const t of st){if(!it(e,t))continue;const n=yt(e,t);vt(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))Ye(r)&&await wt(e,r,o,t,n)}else ot()}async function kt(e,t,n,o){if(!tt(e))return ot(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=yt(e,t,o);let a=!1;for(const[n,o]of Object.entries(e.sources)){if(o.config.require?.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}if(o.on)if(Ye(o)){await wt(e,o,n,t,s)&&(a=!0)}else o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})}Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:s});ht(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))Ye(n)&&n.queueOn?.length&&await Ne(e,n,t);const i=Object.values(e.sources).some(e=>!Ye(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||i)&&await et(e),vt(e,t,r,o),!a}function It(e){return"number"==typeof e&&e>0?e:1e4}var Ct=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Et(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Ct(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var St=Object.freeze({batched:!0});function qt(e){return e===St}function xt(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Ot(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return Fe(e,t);if("string"==typeof e)return Fe(e,t);const o=I(e,f(n));return 0===o.length?[]:1===o.length?Fe(o[0],t):Fe(o,t)}async function jt(e,t){const{code:n,config:o={},env:r={},before:s,next:a,cache:i,state:c}=t;if(!E(n.push))return Mt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=o||{init:!1};let d=s?{...u,before:s}:{...u};a&&(d={...d,next:a}),i&&(d={...d,cache:i}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=b(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(d.require?.length){e.pending.destinations[l]=t,await et(e);const n=e.destinations[l];return n?$t(e,void 0,{},{[l]:n}):Mt({ok:!0})}const f={...n,config:d,env:Pt(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),$t(e,void 0,{},{[l]:f})}async function $t(e,t,n={},o){const{allowed:r,consent:s,user:a}=e;if(!r)return Mt({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=V(e.queue,t,{max:n});if(o.dropped>0){const t=ae(e.status,O("collector"),"queue",o.dropped);Y(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&J(e.queue);e.status.in++}o||(o=e.destinations);const i=e.transformers?Ke(e.transformers):{},c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{if(r.config.disabled)return{id:o,destination:r,skipped:!0};const c=r.config.id||o,u=O("destination",c),d=te(r.config.breaker);if(d&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const r=ee();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,u,d.cooldown))return{id:o,destination:r,skipped:!0};const y=t=>{d&&ne(e.status.breakers,u,t,d.threshold,d.cooldown)},b=()=>{d&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,u)};let I=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],t&&I.push(p(t));const C=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:v("unknown");if(!I.length&&!r.queueOn?.length)return b(),{id:o,destination:r,skipped:!0};if(!I.length&&r.queueOn?.length){if(!k(r.config.consent,s))return b(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await At(e,r,o,!0)}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)}),y("transport-failure")}return b(),{id:o,destination:r,skipped:!t}}const E=[],S=I.filter(t=>{const n=k(r.config.consent,s,t.consent);if(n)return t.consent=n,E.push(t),!1;const a=_(e,{stepId:O("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...T(t,C,e)});return a.skipReason="consent",s&&(a.consent={...s}),r.config.consent&&(a.meta={required:{...r.config.consent}}),w(e,a),!0});if(S.length>0){const t=r.queuePush,n=r.config.id||o,s={max:r.config.queueMax??1e3};let a=0;for(const e of S){a+=V(t,e,s).dropped}if(a>0){se(e,n);const o=ae(e.status,O("destination",n),"queue",a);Y(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&&J(t)}if(!E.length)return b(),{id:o,destination:r,queue:I};let q,x,$=!1;try{$=await At(e,r,o,!0)}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)}),y("transport-failure")}if(!$)return b(),{id:o,destination:r,queue:I};r.dlq||(r.dlq=[]);const M=Ot(r.config.before,i,C),P=r.config.next,R=r.config?.cache,z=R?g(R):void 0,U=z?ze(z,e):void 0,K=r.config?.state?A(r.config.state):void 0,B=K?.filter(e=>"get"===e.mode),F=K?.filter(e=>"set"===e.mode);let H=0,G=0;return await Promise.all(E.map(async t=>{let s;if(t.user=l(a,t.user),z?.stop&&U){const e=f(C,t),n=await m(z,U,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}let c=t,u=n.respond;if(M.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Le(e,e.transformers,M,t,C,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(u=r.respond),c=Array.isArray(r.event)?r.event[0]:r.event}if(z&&!z.stop&&U){const e=f(C,c),n=await m(z,U,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}B&&B.length>0&&c&&(c=await D(B,t=>Ue(t,e),c,e));const d=Date.now();let p=!1;const g=await j(Dt,t=>{const n=r.type||"unknown";e.logger.scope(n).error("Push failed",{error:t,event:c.name}),q=t,p=!0;const s=r.dlq,a=r.config.id||o,i={max:r.config.dlqMax??re},u=V(s,[c,t],i);if(u.dropped>0){se(e,a);const t=ae(e.status,O("destination",a),"dlq",u.dropped);Y(s,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:i.max,droppedCount:t})}else s.length<i.max&&J(s)})(e,r,o,c,C,u);if(H+=Date.now()-d,s&&U&&void 0===r.config.mock&&h(U,s.key,g??!0,s.ttl),!p&&!qt(g)&&F&&F.length>0&&c&&(c=await D(F,t=>Ue(t,e),c,e)),void 0===g||qt(g)||(x=g),qt(g)&&G++,!p&&P){void 0!==g&&(C._response=g);const t=Ot(P,i,C);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Le(e,e.transformers,t,c,C,u,`destination.${o}.next`);n.respond&&(u=n.respond)}}return t})),{id:o,destination:r,error:q,response:x,totalDuration:H,batchedCount:G,allowedCount:E.length,canonicalId:c,breakerConfig:d}})),u={},d={},y={};for(const t of c){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};se(e,t.id);const r=e.status.destinations[t.id],s=Date.now();r.queuePushSize=n.queuePush?.length??0,r.dlqSize=n.dlq?.length??0;const a=t.breakerConfig,i=t.canonicalId?O("destination",t.canonicalId):void 0,c=t=>{a&&i&&ne(e.status.breakers,i,t,a.threshold,a.cooldown)};if(t.error)o.error=t.error,y[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,c("transport-failure");else if(t.queue&&t.queue.length)d[t.id]=o;else{const n=t.batchedCount??0,a=t.allowedCount??0;(Math.max(0,a-n)>0||0===a)&&(u[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return Mt({event:t,...Object.keys(u).length&&{done:u},...Object.keys(d).length&&{queued:d},...Object.keys(y).length&&{failed:y}})}async function At(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const r=t.type||"unknown",s=e.logger.scope(r),a={collector:e,logger:s,id:n,config:t.config,env:Pt(t.env,t.config.env),reportError:ie(e,"destination",n,s,t)};s.debug("init");const i=Date.now();let c;w(e,_(e,{stepId:O("destination",n),stepType:"destination",phase:"init",eventId:"",now:i}));try{c=await $(t.init,"DestinationInit",e.hooks,e.logger)(a)}catch(t){const o=Date.now(),r=_(e,{stepId:O("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-i,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},w(e,r),t}if(!1===c)return c;if(t.config={...c||t.config,init:!0},t.queueOn?.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)ht(e,t,n,r,s)}s.debug("init done")}return!0}async function Dt(e,t,n,o,r,s){const{config:a}=t,i=await x(o,a,e);if(i.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:a,data:i.data,rule:i.mapping,ingest:r,env:{...Pt(t.env,a.env),...s?{respond:s}:{}},reportError:ie(e,"destination",n,u,t)};if(void 0!==a.mock)return u.debug("mock",{event:i.event.name}),a.mock;const l=i.mapping,f=void 0!==l?.batch,p=f?i.mappingKey||"* *":" batch-all";if((f||void 0!==a.batch)&&t.pushBatch&&void 0===a.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=xt(l?.batch),s=xt(a.batch),i=r.wait??s.wait??3e4,c=r.size??s.size??1e3,d=r.age??s.age??3e4,g=Pt(t.env,a.env),m=y(async()=>{const o=t.batches[p],r=o.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],c={collector:e,logger:u,id:n,config:a,data:void 0,rule:o.isDefault?void 0:i.rule,ingest:i.ingest,env:{...g,...i.respond?{respond:i.respond}:{}},reportError:ie(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=se(e,d),f=te(t.config.breaker),m=O("destination",d),h=t=>{f&&ne(e.status.breakers,m,t,f.threshold,f.cooldown)},v=Date.now(),y=new Map;let b,k=!1;const I=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??re};let s=0;for(const e of n){s+=V(o,e,r).dropped}if(s>0){const t=ae(e.status,O("destination",d),"dlq",s);Y(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&J(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let C=s.entries.length;const E=It(a.timeout),q=await j((o,r)=>Et(Promise.resolve($(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{C=0,k=!0,b=e,I(s.entries.map(t=>[t.event,e])),h("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(S(x=q)&&Array.isArray(x.failed)&&q.failed.length>0){const e=[];for(const t of q.failed){const n=s.entries[t.index];if(!n||y.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);y.set(t.index,o),e.push([n.event,o])}e.length>0&&(I(e),C=Math.max(0,s.entries.length-e.length),u.error("Push batch partial failure",{failed:e.length,delivered:C,entries:s.entries.length}))}var x;const A=Date.now();s.entries.forEach((t,o)=>{const r=k||y.has(o),a=T(t.event,t.ingest,e),i=_(e,{stepId:O("destination",n),stepType:"destination",phase:r?"error":"flush",eventId:"string"==typeof t.event.id?t.event.id:"",now:A,traceId:a.traceId,sourceId:a.sourceId,parentEventId:a.parentEventId});if(i.batch={size:s.entries.length,index:o},i.durationMs=A-v,r){const e=k?b:y.get(o);i.error=e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}w(e,i)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),C>0&&(l.count+=C,l.lastAt=Date.now(),e.status.out+=C,h("success"))},{wait:i,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{m()},flush:async()=>{await m.flush()}}}const c=t.batches[p];c.batched.entries.push({event:i.event,ingest:r,respond:s,rule:l,data:i.data}),c.batched.events.push(i.event),C(i.data)&&c.batched.data.push(i.data);const d="string"==typeof i.event.id?i.event.id:"",g=T(o,r,e),m=Date.now(),h=_(e,{stepId:O("destination",n),stepType:"destination",phase:"in",eventId:d,now:m,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});i.mappingKey&&(h.mappingKey=i.mappingKey),i.event.consent&&(h.consent={...i.event.consent}),h.inEvent=i.event,w(e,h);const v=_(e,{stepId:O("destination",n),stepType:"destination",phase:"out",eventId:d,now:m,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});i.mappingKey&&(v.mappingKey=i.mappingKey),v.outEvent=i.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},w(e,v);const b=t.config.id||n,k=se(e,b);return k.inFlightBatch=(k.inFlightBatch??0)+1,c.batchFn(),St}{let s;if(u.debug("push",{event:i.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=U({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[q]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof i.event.id?i.event.id:"",{traceId:l,sourceId:f,parentEventId:p}=T(o,r,e),g=Date.now(),m=_(e,{stepId:O("destination",n),stepType:"destination",phase:"in",eventId:c,now:g,traceId:l,sourceId:f,parentEventId:p});i.mappingKey&&(m.mappingKey=i.mappingKey),i.event.consent&&(m.consent={...i.event.consent}),m.inEvent=i.event,w(e,m);try{const o=It(a.timeout),r=await Et(Promise.resolve($(t.push,"DestinationPush",e.hooks,e.logger)(i.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),m=Date.now(),h=_(e,{stepId:O("destination",n),stepType:"destination",phase:"out",eventId:c,now:m,traceId:l,sourceId:f,parentEventId:p});return h.durationMs=m-g,h.outEvent=i.event,s&&s.length>0&&(h.calls=F(s)),C(r)&&(h.meta={...h.meta,response:r}),i.mappingKey&&(h.mappingKey=i.mappingKey),w(e,h),u.debug("push done"),r}catch(t){const o=Date.now(),r=_(e,{stepId:O("destination",n),stepType:"destination",phase:"error",eventId:c,now:o,traceId:l,sourceId:f,parentEventId:p});throw r.durationMs=o-g,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s&&s.length>0&&(r.calls=F(s)),i.mappingKey&&(r.mappingKey=i.mappingKey),w(e,r),t}}}function Mt(e){return{ok:!e?.failed,...e}}function Tt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:a}=Be(e,"before"),{config:i}=Be({...e,config:a},"next"),c={...t.config,...n,...i};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=Pt(t.env,o);return{...t,config:c,env:u}}async function _t(e,t={}){const n={};for(const[o,r]of Object.entries(t))r.config?.require?.length?e.pending.destinations[o]=r:n[o]=Tt(r);return n}function Pt(e,t){return e||t?t?e&&S(e)&&S(t)?{...e,...t}:t:e:{}}import{assign as Rt,getSpanId as zt,getTraceId as Ut,isFunction as Kt,isString as Bt}from"@walkeros/core";import{isObject as Ft}from"@walkeros/core";var Ht=5e3;async function Gt(e){const t=e.logger;await Wt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const r=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),Ht)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Wt(e.destinations,"destination",t),await Wt(e.transformers,"transformer",t),await Wt(e.stores,"store",t)}async function Wt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",a=n.scope(s),i={id:e,config:o.config,env:o.env??{},logger:a};let c;try{await Promise.race([r(i),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),Ht)})])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Lt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Qt(e,t,o){let s,a,i=!1;const c=ft(e);try{return await async function(){switch(t){case n.Commands.Config:Ft(o)&&(Rt(e.config,o,{shallow:!1}),a=o,i=!0);break;case n.Commands.Consent:if(Ft(o)){const{update:t}=r(e,o);Lt(e,n.Commands.Consent),a=t,i=!0}break;case n.Commands.Custom:Ft(o)&&(e.custom=Rt(e.custom,o),Lt(e,n.Commands.Custom),a=o,i=!0);break;case n.Commands.Destination:Ft(o)&&"code"in o&&Ft(o.code)&&(s=await jt(e,o));break;case n.Commands.Globals:Ft(o)&&(e.globals=Rt(e.globals,o),Lt(e,n.Commands.Globals),a=o,i=!0);break;case n.Commands.Hook:if(Ft(o)&&Bt(o.name)&&Kt(o.fn)){const{name:t,fn:n}=o;e.hooks[t]=n,a=o,i=!0}break;case n.Commands.On:if(Ft(o)&&Bt(o.type)){const{type:t,rules:n}=o;await mt(e,t,n)}break;case n.Commands.Ready:i=!0;break;case n.Commands.Run:s=await Jt(e,o),i=!0;break;case n.Commands.Session:i=!0;break;case n.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Gt(e));break;case n.Commands.User:Ft(o)&&(Rt(e.user,o,{shallow:!1}),Lt(e,n.Commands.User),a=o,i=!0);break;default:return e.logger.warn("unknown command",{command:t}),Mt({ok:!1})}if(i){await kt(e,t,void 0,a);const n=await $t(e);if(s&&!1===s.ok){const e={...n.failed??{},...s.failed??{}};s={...n,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else s=n}return s||Mt({ok:!0})}()}finally{c()}}function Vt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Nt(e,t,n){if(!t.name)throw new Error("Event name is required");const[o,r]=t.name.split(" ");if(!o||!r)throw new Error("Event name is invalid");const{timestamp:s=Date.now(),name:a=`${o} ${r}`,data:i={},context:c={},globals:u={},custom:d={},user:l=e.user,nested:f=[],consent:p=e.consent,id:g=zt(),trigger:m="",entity:h=o,action:v=r,timing:y=0,source:w={type:"collector",schema:"4"}}=t,b=w.count??(e.count+=1),k=w.trace??n?._meta.trace??e.trace,I={...w,count:b};void 0!==k&&(I.trace=k);const C=e.name??w.platform??"default",E=e.release??"4.4.0";I.release={...w.release,[C]:E};return{name:a,data:i,context:c,globals:Rt(e.globals,u),custom:d,user:l,nested:f,consent:p,id:g,trigger:m,entity:h,action:v,timestamp:s,timing:y,source:I}}function Yt(e,t,n){return Nt(e,Vt(e,t),n)}async function Jt(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=Ut(),e.count=0,t&&(t.consent&&(e.consent=Rt(e.consent,t.consent),Lt(e,n.Commands.Consent)),t.user&&(e.user=Rt(e.user,t.user),Lt(e,n.Commands.User)),t.globals&&(e.globals=Rt(e.config.globalsStatic||{},t.globals),Lt(e,n.Commands.Globals)),t.custom&&(e.custom=Rt(e.custom,t.custom),Lt(e,n.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await et(e),await bt(e);let o=!0;const r={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:s}of t){const t=await e.push(n,s);!1===t.ok&&(o=!1),t.failed&&Object.assign(r,t.failed)}}const s=await $t(e);if(o)return s;const a={...s.failed??{},...r};return{...s,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}import{createIngest as Xt,emitStep as Zt,FatalError as en,getGrantedConsent as tn,getSpanId as nn,processEventMapping as on,tryCatchAsync as rn,useHooks as sn}from"@walkeros/core";function an(e,t){const n=sn(async(n,o={})=>await rn(async()=>{if(!e.allowed){const t=e.config.queueMax;if(void 0===t)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const r=V(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=ae(e.status,"collector.preRun","queue",r.dropped);Y(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&J(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Mt({ok:!0})}const r=Date.now(),{id:s,ingest:a,respond:i,mapping:c,preChain:u,include:d,exclude:l}=o;let f=i,p=n;const g=d||l?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,l):void 0,m=a??Xt(s||"unknown");if(c){const t=await on(p,c,e);if(t.ignore)return Mt({ok:!0});if(c.consent){if(!tn(c.consent,e.consent,t.event.consent))return Mt({ok:!0})}p=t.event}if(u?.length&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Le(e,e.transformers,u,p,m,f,s?`source.${s}.next`:void 0);if(null===n.event)return e.logger.debug("Event dropped by transformer chain"+(n.droppedBy?` (${n.droppedBy})`:"")),Mt({ok:!0,dropped:!0});if(n.stopped)return n.respond&&(f=n.respond),Mt({ok:!0});n.respond&&(f=n.respond);const o="string"==typeof p.id?p.id:"";if(Array.isArray(n.event)){const a=await Promise.all(n.event.map(async n=>{const r=""!==o&&n.id===o?{...n,id:nn()}:n,a=t(r),i=Nt(e,a,m);return $t(e,i,{id:s,ingest:m,respond:f},g)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return a[0]??Mt({ok:!0})}p=""===o||"string"==typeof n.event.id&&""!==n.event.id?n.event:{...n.event,id:o}}const h=Yt(e,p,m),v=await $t(e,h,{id:s,ingest:m,respond:f},g);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return v},t=>{if(t instanceof en)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Mt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:nn()},s="string"==typeof r.id?r.id:"",{traceId:a,sourceId:i,parentEventId:c}=T(r,o?.ingest,e),u=Date.now(),d=_(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:u,traceId:a,sourceId:i,parentEventId:c});d.inEvent=r,Zt(e,d);try{const t=await n(r,o),d=Date.now(),l=_(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:d,traceId:a,sourceId:i,parentEventId:c});return l.durationMs=d-u,l.outEvent=t,Zt(e,l),t}catch(t){const n=Date.now(),o=_(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:a,sourceId:i,parentEventId:c});throw o.durationMs=n-u,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Zt(e,o),t}}}import{FatalError as cn,useHooks as un,tryCatchAsync as dn}from"@walkeros/core";import{emitStep as ln,useHooks as fn}from"@walkeros/core";function pn(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=new Map,a={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let i;o>0&&(i=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);a.evictions_ttl+=t},o),i&&"function"==typeof i.unref&&i.unref());return{type:"memory",config:{},get(e){const t=s.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(s.delete(e),a.evictions_ttl++,void a.misses++):(s.delete(e),s.set(e,t),a.hits++,t.value);a.misses++},set(e,n,o){const i=!s.has(e);i||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),a.writes++,i&&a.populates++,s.size>t&&function(){if(s.size<=t)return;const e=s.size-r;let n=0;for(const t of s.keys()){if(n>=e)break;s.delete(t),n++}a.evictions_entries+=n}()},delete(e){s.delete(e)&&a.deletes++},get counters(){return{...a}},destroy(){void 0!==i&&(clearInterval(i),i=void 0),s.clear()}}}import{compileMatcher as gn,emitStep as mn,readCacheEnvelope as hn,wrapCacheEnvelope as vn}from"@walkeros/core";function yn(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:a,collector:i}=t,c=(e,t)=>{if(!i)return;const n=_(i,{stepId:`store.${a}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},mn(i,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?gn(e.match):()=>!0,ttl:e.ttl})),l=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return d.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),r=await o.get(n),s=hn(r);if(void 0!==s){if(!("expired"in s))return u.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const a=p.get(n);if(a)return u.inflight_dedups++,c(t,"hit"),a;u.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{const e=1e3*s.ttl;await o.set(n,vn(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){u.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{const e=1e3*s.ttl;await o.set(l(t),vn(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${a}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function wn(e,t,n){const o=`store.${n}`,r=fn(t.get,"StoreGet",e.hooks,e.logger),s=fn(t.set,"StoreSet",e.hooks,e.logger),a=fn(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=_(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},ln(e,s);try{const s=await r(t),a=Date.now(),i=_(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});return i.durationMs=a-n,i.meta={op:"get",key:t},ln(e,i),s}catch(r){const s=Date.now(),a=_(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"get",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},ln(e,a),r}},t.set=async(t,n,r)=>{const a=Date.now(),i=_(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:a});i.meta={op:"set",key:t},ln(e,i);try{await s(t,n,r);const i=Date.now(),c=_(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});c.durationMs=i-a,c.meta={op:"set",key:t},ln(e,c)}catch(n){const r=Date.now(),s=_(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-a,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},ln(e,s),n}},t.delete=async t=>{const n=Date.now(),r=_(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},ln(e,r);try{await a(t);const r=Date.now(),s=_(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},ln(e,s)}catch(r){const s=Date.now(),a=_(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"delete",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},ln(e,a),r}}}async function bn(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:a={}}=r,i=e.logger.scope("store").scope(o),c={collector:e,logger:i,id:o,config:s,env:a,reportError:ie(e,"store",o,i)},u=await t(c);n[o]=u}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){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 i=e[s].cache?.store;if(void 0!==i){if(!(i in e))throw new Error(`Store "${s}" cache.store references "${i}", which is not declared in flow.stores`);r(i)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(o);for(const t of r){const r=o[t].cache;if(!r)continue;let s,a;void 0!==r.store?(s=n[r.store],a=r.store):(n.__cache||(n.__cache=pn()),s=n.__cache,a="__cache");const i=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${i}:" via ${a}`),n[t]=yn(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:i,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&wn(e,o,t);return n}async function kn(e){const t=u({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=d(n),r={...t.globalsStatic,...e.globals},s={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:r,hooks:e.hooks||{},observers:new Set,logger:o,on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),s.push=an(s,e=>Vt(s,e)),s.command=function(e,t){return un(async(n,o,r)=>await dn(async()=>await t(e,n,o,r),t=>{if(t instanceof cn)throw t;return e.status.failed++,e.logger.error("command failed",{command:n,data:o,error:t}),Mt({ok:!1})})(),"Command",e.hooks,e.logger)}(s,Qt),s.elb=function(e){return async(t,n,o,r,s)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let a;if("string"==typeof t)a={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Mt({ok:!1});a={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return o&&"object"==typeof o&&(a.context=o),r&&Array.isArray(r)&&(a.nested=r),s&&"object"==typeof s&&(a.custom=s),e.push(a)}}(s);const a=e.stores||{};return s.stores=await bn(s,a),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)}}}(a,s.stores,e),s.stores.__cache||(s.stores.__cache=pn()),s.destinations=await _t(s,e.destinations||{}),s.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r,a=Te(r,"Transformer");if(!a.ok){e.logger.warn(`Transformer ${o} invalid (${a.code}): ${a.reason}. Skipping.`);continue}const{config:i}=Be(r,"before"),{config:c}=Be({...r,config:i},"next"),u=Object.keys(s).length>0?{...c,env:s}:c,{cache:d}=r,l=d?{...u,cache:d}:u,f=r.config?.state??r.state,p=void 0!==f&&void 0===l.state?{...l,state:f}:l,g=e.logger.scope("transformer").scope(o),m={collector:e,logger:g,id:o,ingest:Ie(o),config:p,env:s,reportError:ie(e,"transformer",o,g)},h=t??(e=>{const t=r.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 ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await _e(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),v=await h(m);void 0!==r.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:r.before}),void 0!==r.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:r.next}),void 0!==f&&void 0===v.config?.state&&(v.config={...v.config??{},state:f}),n[o]=v}return n}(s,e.transformers||{}),s}var In=globalThis;function Cn(e){try{const t=In.window;if(!t)return;t.localStorage.getItem(s)===e&&t.localStorage.removeItem(s)}catch{}}function En(e,t){return void 0===t?e:n=>e({...n,release:t})}function Sn(e,t){if(t.observers)for(const n of t.observers)e.observers.add(n);const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=In.window,t=In.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(s);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return In.window?.localStorage.getItem(s)??null}catch{return null}}();if(!r)return;const u=c(r);if(!u)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),Cn(r)):e.logger.warn("observe: malformed credential ignored"));if(u.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let d;!function(e){try{In.window?.localStorage.setItem(s,e)}catch{}}(r),null!==t&&function(){const e=In.window,t=In.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),r=o>=0?n.slice(o):"",a=o>=0?n.slice(0,o):n,i=a.indexOf("?"),c=i>=0?a.slice(0,i):a,u=new t(i>=0?a.slice(i+1):"");u.delete(s);const d=u.toString();e.history.replaceState({},"",`${c}${d?`?${d}`:""}${r}`)}catch{}}();const l=a({url:`${n.url}/ingest/${u.ses}`,token:u.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(Cn(r),d&&e.observers.delete(d))}});d=i(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(En(l,e.release),n.flowId),{flowId:n.flowId??o,...void 0!==n.level?{level:n.level}:{},...void 0!==n.sample?{sample:n.sample}:{}}),e.observers.add(d);const f=n.level;return void(void 0!==f&&(e.observeLevel=()=>f))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add(i(En(a({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function qn(e){e=e||{};const t=await kn(e);Sn(t,e),await Ze(t,e.sources||{});const{consent:n,user:o,globals:r,custom:s}=e;n&&await t.command("consent",n),o&&await t.command("user",o),r&&await t.command("globals",r),s&&await t.command("custom",s),t.config.run&&await t.command("run");let a=t.elb;const i=Object.values(t.sources),c=i.find(e=>e.config.primary);return c?a=c.push:i.length>0&&(a=i[0].push),{collector:t,elb:a}}export{e as Code,t as Commands,n as Const,Z as DEFAULT_BREAKER_COOLDOWN_MS,X as DEFAULT_BREAKER_THRESHOLD,re as DEFAULT_DLQ_MAX,jt as addDestination,ie as buildReportError,ae as bumpDropped,ht as callDestinationOn,Qt as commonHandleCommand,Nt as createEvent,an as createPush,Mt as createPushResult,At as destinationInit,Dt as destinationPush,Yt as enrichEvent,se as ensureDestStatus,ft as enterCascade,Ke as extractTransformerNextMap,vt as fireCallbacks,Ne as flushSourceQueueOn,ze as getCacheStore,_t as initDestinations,Xe as initSource,Ze as initSources,oe as isBreakerProbePermitted,ct as isRequireSatisfied,Ye as isSourceStarted,at as isStateDelivery,it as isStatePresent,Pt as mergeEnvironments,mt as on,kt as onApply,Vt as prepareEvent,r as processConsent,$t as pushToDestinations,bt as redeliverStateAtRun,Tt as registerDestination,te as resolveBreakerConfig,Jt as runCollector,Le as runTransformerChain,dt as setMark,lt as shouldDeliver,qn as startFlow,He as transformerInit,Ge as transformerPush,Fe as walkChain,U as wrapEnv};//# sourceMappingURL=index.mjs.map
|
|
1
|
+
var e={},t={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",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"},n={Commands:t,Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}};import{assign as o}from"@walkeros/core";function r(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=o(e.consent,n),{update:n}}import{OBSERVE_STORAGE_KEY as s,createBatchedPoster as a,createTelemetryObserver as i,parseObserveCredential as c}from"@walkeros/core";import{assign as u,createLogger as d}from"@walkeros/core";import{assign as l,buildCacheContext as f,clone as p,compileCache as g,checkCache as m,storeCache as h,createIngest as v,debounce as y,emitStep as w,getId as b,getGrantedConsent as k,getNextSteps as I,isDefined as C,isFunction as E,isObject as S,OBSERVE_ENV_KEY as q,processEventMapping as x,stepId as O,tryCatchAsync as j,useHooks as $,compileState as A,applyState as D}from"@walkeros/core";import{emitStep as M}from"@walkeros/core";function T(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function _(e,t){const n=e.status.startedAt,o={flowId:e.name??"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n};return t.traceId&&(o.traceId=t.traceId),t.sourceId&&(o.sourceId=t.sourceId),t.parentEventId&&(o.parentEventId=t.parentEventId),o}import{parseCallPath as P}from"@walkeros/core";function R(e){return"object"==typeof e&&null!==e}function z(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8)return e;const o=t.get(e);if(void 0!==o)return o;if(Array.isArray(e)){const o=[];t.set(e,o);for(const r of e)o.push(z(r,t,n+1));return o}const r={};t.set(e,r);for(const[o,s]of Object.entries(e))r[o]="function"==typeof s?s:z(s,t,n+1);return r}function U(e){const t=[],n=[],{simulation:o,...r}=e,s=z(r,new WeakMap,0);for(const e of o){const o=P(e);if(0===o.length)continue;const r=o.join(".");if(o.length-1>=8){n.push(r);continue}let a=s,i=!0;for(let e=0;e<o.length-1;e++){const t=a[o[e]];if(!R(t)){i=!1;break}a=t}const c=o[o.length-1];if(!i||!(c in a)){n.push(r);continue}const u=a[c];"function"==typeof u?a[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),u.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function K(e,t){try{return e[t]}catch{return"[unreadable]"}}function B(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(K(r,t),o+1);s=e}else s=function(e){try{return String(e)}catch{return"[object]"}}(r)}catch{s="[unreadable]"}return t.delete(r),s};return e.map(e=>n(e,0))}function F(e){return e.map(e=>({fn:e.fn,args:B(e.args),ts:e.ts}))}import{isArray as H,FatalError as G}from"@walkeros/core";import{tryCatch as W,tryCatchAsync as L}from"@walkeros/core";import{stepId as Q}from"@walkeros/core";function V(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const r=[];for(;e.length>=n.max;)r.push(e.shift());return e.push(t),r.length>0&&o&&o(r),{appended:!0,dropped:r.length}}var N=new WeakMap;function Y(e,t,n,o){N.get(e)||(N.set(e,!0),t.warn(n,o))}function J(e){N.delete(e)}var X=5,Z=3e4,ee=()=>Date.now();function te(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:Z}:{threshold:e.threshold??5,cooldown:e.cooldown??Z}}function ne(e,t,n,o,r){if("partial"===n)return;const s=function(e,t){return e[t]||(e[t]={state:"closed",consecutiveFailures:0}),e[t]}(e,t);return"success"===n?(s.consecutiveFailures=0,s.state="closed",s.probing=!1,void(s.openUntil=void 0)):(s.consecutiveFailures+=1,"half-open"===s.state?(s.state="open",s.probing=!1,void(s.openUntil=ee()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ee()+r)))}function oe(e,t){return!e||("closed"===e.state||"half-open"===e.state||void 0!==e.openUntil&&t>=e.openUntil)}var re=100;function se(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 ae(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const r=e.dropped[t];return r[n]=(r[n]??0)+o,r[n]}function ie(e,t,n,o,r){const s=Q(t,n);return(t,a)=>{try{if(a)return r?function(e,t,n,o,r,s){const a=t.dlq=t.dlq||[],i={max:t.config.dlqMax??re},c=V(a,[o,r],i);if(c.dropped>0){const t=ae(e.status,Q("destination",n),"dlq",c.dropped);Y(a,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:i.max,droppedCount:t})}else a.length<i.max&&J(a);const u=se(e,n);u.failed++,u.dlqSize=a.length,e.status.failed++;const d=te(t.config.breaker);if(d){const o=t.config.id||n;ne(e.status.breakers,Q("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,a,t,o):e.status.failed++,void o.error("report error",{error:t instanceof Error?t.message:String(t),event:a.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch{}}}import{createIngest as ce,FatalError as ue,getMappingValue as de,getSpanId as le,parseTraceparent as fe,isScope as pe,tryCatchAsync as ge,getNextSteps as me,compileCache as he,checkCache as ve,storeCache as ye,applyUpdate as we,buildCacheContext as be,compileState as ke,applyState as Ie}from"@walkeros/core";import{createIngest as Ce,emitStep as Ee,FatalError as Se,isObject as qe,stepId as xe,tryCatchAsync as Oe,useHooks as je,getNextSteps as $e,compileCache as Ae,checkCache as De,storeCache as Me,buildCacheContext as Te,validateStepEntry as _e,processEventMapping as Pe,compileState as Re,applyState as ze}from"@walkeros/core";function Ue(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function Ke(e,t){return e?t.stores[e]:t.stores.__cache}function Be(e){const t={};for(const[n,o]of Object.entries(e)){const e=o.config?.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?t[n]={next:e}:t[n]={}}return t}function Fe(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 He(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 Ge(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:Ce(n),config:t.config,env:Ve(t.config.env),reportError:ie(e,"transformer",n,r)};r.debug("init");const a=await je(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===a)return!1;t.config={...a||t.config,env:a?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function We(e,t,n,o,r,s){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:r,config:t.config,env:{...Ve(t.config.env),...s?{respond:s}:{}},reportError:ie(e,"transformer",n,i)};i.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",{traceId:d,sourceId:l,parentEventId:f}=T(o,r,e),p=Date.now(),g=_(e,{stepId:xe("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:p,traceId:d,sourceId:l,parentEventId:f});g.inEvent=o,Ee(e,g);try{const r=await je(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),a=_(e,{stepId:xe("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s,traceId:d,sourceId:l,parentEventId:f});return a.durationMs=s-p,a.outEvent=r,Ee(e,a),i.debug("push done"),r}catch(t){const o=Date.now(),r=_(e,{stepId:xe("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o,traceId:d,sourceId:l,parentEventId:f});throw r.durationMs=o-p,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Ee(e,r),t}}function Le(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:Ce(t)}async function Qe(e,t,n,o,r,s,a){r||(r=Ce(n[0]??"chain")),a&&r._meta&&(r._meta.chainPath=a);let i=o,c=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:c};r&&r._meta&&(r._meta.hops++,r._meta.path.push(o));if(!await Oe(Ge,t=>{if(t instanceof Se)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:c};if(a&&void 0!==s.config?.chainMocks?.[a]){const t=s.config.chainMocks[a];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:a}),i=t;continue}if(void 0!==s.config?.mock){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),i=s.config.mock;continue}if(s.config?.disabled)continue;const u=s.config?.cache,d=u?Ae(u):void 0,l=d?Ue(d,e):void 0,f=s.config?.state?Re(s.config.state):void 0,p=f?.filter(e=>"get"===e.mode),g=f?.filter(e=>"set"===e.mode),m=async t=>g&&0!==g.length?ze(g,t=>Ke(t,e),t,e):t;let h;if(d&&l){const e=Te(r,i),t=await De(d,l,e);if("HIT"===t?.status&&t.value){if(i=t.value,d.stop)return{event:i,respond:c,stopped:!0};continue}"MISS"===t?.status&&(h={key:t.key,ttl:t.rule.ttl})}const v=s.config.before;if(v){const n=$e(v,Te(r,i));if(1===n.length){const o=He(n[0],Be(t));if(o.length>0){const n=await Qe(e,t,o,i,r,c,a);if(null===n.event)return{event:null,respond:n.respond??c};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:n.respond??c,stopped:!0};n.respond&&(c=n.respond),i=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>Oe(Qe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,He(n,Be(t)),i,Le(r,n),void 0,a)))}p&&p.length>0&&(i=await ze(p,t=>Ke(t,e),i,e));const y=await Oe(We,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,i,r,c);if(!1===y)return{event:null,respond:c,droppedBy:o};if(Array.isArray(y)){const s=n.slice(n.indexOf(o)+1),u=await Promise.all(y.map(async n=>{const o=await m(n.event||i),u=Le(r,"unknown");if(n.next){const r=$e(n.next,Te(u,o));if(0===r.length)return{event:o,respond:c};if(1===r.length){const n=He(r[0],Be(t));return n.length>0?Qe(e,t,n,o,u,c,a):{event:o,respond:c}}return(await Promise.all(r.map(n=>Oe(Qe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,He(n,Be(t)),o,Le(u,n),void 0,a)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?Qe(e,t,s,o,u,c,a):{event:o,respond:c}}));let d=c;const l=[];for(const e of u.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(d=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:d}:1===l.length?{event:l[0],respond:d}:{event:l,respond:d}}if(y&&"object"==typeof y){const{event:n,respond:o,next:s}=y;if(o&&(c=o),void 0!==s){const o=await m(n||i),u=$e(s,Te(r,o));if(0===u.length){i=o;continue}if(1===u.length){const n=He(u[0],Be(t));return n.length>0?Qe(e,t,n,o,r,c,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:c})}return await Promise.all(u.map(n=>Oe(Qe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,He(n,Be(t)),o,Le(r,n),void 0,a))),{event:null,respond:void 0}}n&&(i=n)}g&&g.length>0&&(i=await ze(g,t=>Ke(t,e),i,e)),h&&l&&Me(l,h.key,i,h.ttl);const w=s.config.next,b="string"==typeof w||Array.isArray(w)&&w.every(e=>"string"==typeof e),k=void 0!==w&&!b;if((!y||"object"==typeof y&&!y.next)&&k){const n=$e(s.config.next,Te(r,i));if(1===n.length){const o=He(n[0],Be(t));return o.length>0?Qe(e,t,o,i,r,c,a):{event:i,respond:c}}return n.length>1?(await Promise.all(n.map(n=>Oe(Qe,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,He(n,Be(t)),i,Le(r,n),void 0,a))),{event:null,respond:void 0}):{event:i,respond:c}}}return{event:i,respond:c}}function Ve(e){return e&&qe(e)?e:{}}function Ne(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function Ye(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const r=n||t.config?.id||"unknown";for(const{type:n,data:s}of o)at(n)&&!lt(e,t,n)||(await ge(t.on,t=>{if(t instanceof ue)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,error:t})})(n,s),at(n)&&dt(e,t,n))}function Je(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Xe(e,t,n){const{code:o,config:r={},env:s={},primary:a,next:i,before:c,cache:u,terminus:d}=n,l=r.state??n.state,f=l?ke(l):void 0,p=u,g=p?he({...p,stop:p.stop??!0}):void 0,m=Ne(i)?He(i,Be(e.transformers)):void 0,h=Ne(c)?He(c,Be(e.transformers)):void 0,v=d??e.push,y=Boolean(d),w=async(n,o,s)=>{if(y)return v(n);let a;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:le()},d=h??(void 0!==c?(()=>{const t=me(c,be(s.ingest));if(0===t.length)return[];return He(1===t.length?t[0]:t,Be(e.transformers))})():[]);let l=[u];if(d.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Qe(e,e.transformers,d,u,s.ingest,s.respond,`source.${t}.before`);if(null===n.event)return{ok:!0};if(n.stopped)return n.respond&&(s.respond=n.respond),{ok:!0};n.respond&&(s.respond=n.respond);const o="string"==typeof u.id?u.id:"";if(Array.isArray(n.event))l=n.event.map(e=>""!==o&&e.id===o?{...e,id:le()}:e);else{const e=n.event;l=""===o||"string"==typeof e.id&&""!==e.id?[e]:[{...e,id:o}]}}if(g){const t=Ue(g,e);if(t){const n=be(s.ingest),o=await ve(g,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await we(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),s.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&s.respond){const r=s.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{ye(t,u,n,d),i?a=(async()=>{const t=await we(n,i,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||ye(t,o.key,!0,o.rule.ttl)}}}const p=m?{kind:"single",preChain:m}:void 0!==i?(()=>{const t=me(i,be(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:He(t[0],Be(e.transformers))}:{kind:"many",branches:t.map(t=>He(t,Be(e.transformers)))}})():{kind:"single",preChain:[]};f&&f.length>0&&(l=await Promise.all(l.map(t=>Ie(f,t=>Ke(t,e),t,e))));let w={ok:!0};for(const n of l)"many"===p.kind?(await Promise.all(p.branches.map((a,i)=>ge(async()=>v(n,{...o,id:t,ingest:Le(s.ingest,`${t}.${i}`),respond:void 0,mapping:r,preChain:a}),t=>(e.logger.scope("source:many").error(`many branch ${i} failed`,{error:t}),{ok:!0}))())),w={ok:!0}):w=await v(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:r,preChain:p.preChain});return a&&await a,w},b=async n=>{const o=ce(t),s=fe(pe(n)?n?.headers?.traceparent:void 0);if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!r.ingest||void 0===n)return o;const a=await de(n,r.ingest,{collector:e});return{...o,...a,_meta:o._meta}},k=e.logger.scope("source").scope(t),I={...s,push:async(e,n={})=>{const o={ingest:ce(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:k},C={collector:e,logger:k,id:t,config:r,env:I,withScope:async(e,t,n)=>{const o={ingest:await b(e),respond:t};return n({...I,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ie(e,"source",t,k)},E=await ge(o,n=>{if(n instanceof ue)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(C);if(!E)return;const S=E.type||"unknown",q=e.logger.scope(S).scope(t);return I.logger=q,a&&(E.config={...E.config,primary:a}),E}async function Ze(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Xe(e,o,r);if(!t)continue;const s=r.config?.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await ge(n.init.bind(n),n=>{if(n instanceof ue)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,Je(n)&&await Ye(e,n,t))}return await et(e),n}async function et(e){for(const[t,n]of Object.entries(e.sources)){if(Je(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!ct(e,t));r.length!==o.length&&(n.config.require=r,Je(n)&&await Ye(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const r=o.filter(t=>!ct(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Tt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function tt(e){if("object"!=typeof e||null===e)return!1;if(!("logger"in e))return!1;const t=e.logger;return"object"==typeof t&&null!==t&&("scope"in t&&"function"==typeof t.scope)}var nt=!1;function ot(){nt||(nt=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function rt(e,t,n,o){if(n instanceof G)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var st=[n.Commands.Consent,n.Commands.User,n.Commands.Globals,n.Commands.Custom];function at(e){return st.includes(e)}function it(e,t){switch(t){case n.Commands.Consent:return Object.keys(e.consent).length>0;case n.Commands.User:return Object.keys(e.user).length>0;case n.Commands.Globals:return Object.keys(e.globals).length>0;case n.Commands.Custom:return Object.keys(e.custom).length>0;default:return!1}}function ct(e,t){switch(t){case n.Commands.Consent:case n.Commands.User:case n.Commands.Globals:case n.Commands.Custom:return it(e,t);case n.Commands.Run:case n.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function ut(e,t){return e.cellVersion[String(t)]??0}function dt(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=ut(e,n)}function lt(e,t,n){return e.allowed&&ut(e,n)>function(e,t,n){const o=e.delivery.get(t),r=o?.[String(n)];return void 0===r?-1:r}(e,t,n)}function ft(e){return e.cascade?()=>{}:(e.cascade={counts:new WeakMap},()=>{e.cascade=void 0})}function pt(e,t,n){const o=e.cascade;if(!o)return!0;let r=o.counts.get(t);r||(r={},o.counts.set(t,r));const s=String(n),a=(r[s]||0)+1;return r[s]=a,a<=8||(9===a&&e.logger.error("state delivery did not converge",{type:s}),!1)}function gt(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function mt(e,t,n){if(!tt(e))return void ot();const o=e.on,r=o[t]||[],s=H(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,vt(e,t,s)}function ht(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",a=e.logger.scope(s).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:r,env:Pt(t.env,t.config.env),reportError:ie(e,"destination",n,a,t)};W(t.on,t=>rt(e,"destination",t,{destId:n,type:o}))(o,i)}function vt(e,t,o,r){if(!tt(e))return void ot();const s=yt(e,t,r);if(o.length)switch(t){case n.Commands.Consent:!function(e,t,o){const r=o||e.consent,s=gt(e,n.Commands.Consent);t.forEach(t=>{lt(e,t,n.Commands.Consent)&&pt(e,t,n.Commands.Consent)&&(Object.keys(r).filter(e=>e in t).forEach(n=>{W(t[n],t=>rt(e,"consent",t,{key:n}))(r,s)}),dt(e,t,n.Commands.Consent))})}(e,o,r);break;case n.Commands.Ready:!function(e,t){if(!e.allowed)return;const o=gt(e,n.Commands.Ready);t.forEach(t=>{W(t,t=>rt(e,"ready",t))(void 0,o)})}(e,o);break;case n.Commands.Run:!function(e,t){if(!e.allowed)return;const o=gt(e,n.Commands.Run);t.forEach(t=>{W(t,t=>rt(e,"run",t))(void 0,o)})}(e,o);break;case n.Commands.Session:!function(e,t){if(!e.session)return;const o=gt(e,n.Commands.Session);t.forEach(t=>{W(t,t=>rt(e,"session",t))(e.session,o)})}(e,o);break;default:{const n=gt(e,t),r=at(t);o.forEach(o=>{"function"==typeof o&&(r&&!lt(e,o,t)||r&&!pt(e,o,t)||(W(o,n=>rt(e,"generic",n,{type:t}))(s,n),r&&dt(e,o,t)))});break}}}function yt(e,t,o){switch(t){case n.Commands.Consent:return o||e.consent;case n.Commands.Session:return e.session;case n.Commands.User:return o||e.user;case n.Commands.Custom:return o||e.custom;case n.Commands.Globals:return o||e.globals;case n.Commands.Config:return o||e.config;default:return}}async function wt(e,t,n,o,r){if(!t.on)return!1;if(at(o)&&!lt(e,t,o))return!1;if(at(o)&&!pt(e,t,o))return!1;const s=await L(t.on,t=>rt(e,"source",t,{sourceId:n,type:o}))(o,r);return at(o)&&dt(e,t,o),!1===s}async function bt(e){if(tt(e))for(const t of st){if(!it(e,t))continue;const n=yt(e,t);vt(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))Je(r)&&await wt(e,r,o,t,n)}else ot()}async function kt(e,t,n,o){if(!tt(e))return ot(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=yt(e,t,o);let a=!1;for(const[n,o]of Object.entries(e.sources)){if(o.config.require?.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}if(o.on)if(Je(o)){await wt(e,o,n,t,s)&&(a=!0)}else o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})}Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:s});ht(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))Je(n)&&n.queueOn?.length&&await Ye(e,n,t);const i=Object.values(e.sources).some(e=>!Je(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||i)&&await et(e),vt(e,t,r,o),!a}function It(e){return"number"==typeof e&&e>0?e:1e4}var Ct=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Et(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Ct(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var St=Object.freeze({batched:!0});function qt(e){return e===St}function xt(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Ot(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return He(e,t);if("string"==typeof e)return He(e,t);const o=I(e,f(n));return 0===o.length?[]:1===o.length?He(o[0],t):He(o,t)}async function jt(e,t){const{code:n,config:o={},env:r={},before:s,next:a,cache:i,state:c}=t;if(!E(n.push))return Mt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=o||{init:!1};let d=s?{...u,before:s}:{...u};a&&(d={...d,next:a}),i&&(d={...d,cache:i}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=b(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(d.require?.length){e.pending.destinations[l]=t,await et(e);const n=e.destinations[l];return n?$t(e,void 0,{},{[l]:n}):Mt({ok:!0})}const f={...n,config:d,env:Pt(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),$t(e,void 0,{},{[l]:f})}async function $t(e,t,n={},o){const{allowed:r,consent:s,user:a}=e;if(!r)return Mt({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=V(e.queue,t,{max:n});if(o.dropped>0){const t=ae(e.status,O("collector"),"queue",o.dropped);Y(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&J(e.queue);e.status.in++}o||(o=e.destinations);const i=e.transformers?Be(e.transformers):{},c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{if(r.config.disabled)return{id:o,destination:r,skipped:!0};const c=r.config.id||o,u=O("destination",c),d=te(r.config.breaker);if(d&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const r=ee();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,u,d.cooldown))return{id:o,destination:r,skipped:!0};const y=t=>{d&&ne(e.status.breakers,u,t,d.threshold,d.cooldown)},b=()=>{d&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,u)};let I=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],t&&I.push(p(t));const C=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:v("unknown");if(!I.length&&!r.queueOn?.length)return b(),{id:o,destination:r,skipped:!0};if(!I.length&&r.queueOn?.length){if(!k(r.config.consent,s))return b(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await At(e,r,o,!0)}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)}),y("transport-failure")}return b(),{id:o,destination:r,skipped:!t}}const E=[],S=I.filter(t=>{const n=k(r.config.consent,s,t.consent);if(n)return t.consent=n,E.push(t),!1;const a=_(e,{stepId:O("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...T(t,C,e)});return a.skipReason="consent",s&&(a.consent={...s}),r.config.consent&&(a.meta={required:{...r.config.consent}}),w(e,a),!0});if(S.length>0){const t=r.queuePush,n=r.config.id||o,s={max:r.config.queueMax??1e3};let a=0;for(const e of S){a+=V(t,e,s).dropped}if(a>0){se(e,n);const o=ae(e.status,O("destination",n),"queue",a);Y(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&&J(t)}if(!E.length)return b(),{id:o,destination:r,queue:I};let q,x,$=!1;try{$=await At(e,r,o,!0)}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)}),y("transport-failure")}if(!$)return b(),{id:o,destination:r,queue:I};r.dlq||(r.dlq=[]);const M=Ot(r.config.before,i,C),P=r.config.next,R=r.config?.cache,z=R?g(R):void 0,U=z?Ue(z,e):void 0,K=r.config?.state?A(r.config.state):void 0,B=K?.filter(e=>"get"===e.mode),F=K?.filter(e=>"set"===e.mode);let H=0,G=0,W=0;return await Promise.all(E.map(async t=>{let s,c;if(t.user=l(a,t.user),z?.stop&&U){const e=f(C,t),n=await m(z,U,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}let u=[t],d=n.respond;if(M.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Qe(e,e.transformers,M,t,C,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(d=r.respond),u=Array.isArray(r.event)?r.event:[r.event]}const p=async(t,n)=>{let s=n,a=!1;if(z&&!z.stop&&U){const e=f(C,t),n=await m(z,U,e);if("HIT"===n?.status)return!1;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl},a=!0)}B&&B.length>0&&t&&(t=await D(B,t=>Ke(t,e),t,e));const u=Date.now();let l=!1;const p=await j(Dt,n=>{const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:n,event:t.name}),q=n,l=!0;const a=r.dlq,i=r.config.id||o,c={max:r.config.dlqMax??re},u=V(a,[t,n],c);if(u.dropped>0){se(e,i);const t=ae(e.status,O("destination",i),"dlq",u.dropped);Y(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:i,cap:c.max,droppedCount:t})}else a.length<c.max&&J(a)})(e,r,o,t,C,d);if(H+=Date.now()-u,s&&U&&void 0===r.config.mock&&(a?h(U,s.key,p??!0,s.ttl):void 0===c&&(c=p??!0)),!l&&!qt(p)&&F&&F.length>0&&t&&(t=await D(F,t=>Ke(t,e),t,e)),void 0===p||qt(p)||(x=p),qt(p)&&G++,!l&&P){void 0!==p&&(C._response=p);const n=Ot(P,i,C);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Qe(e,e.transformers,n,t,C,d,`destination.${o}.next`);r.respond&&(d=r.respond)}}return!0};for(const e of u)await p(e,s)&&W++;return s&&U&&void 0!==c&&void 0===r.config.mock&&h(U,s.key,c,s.ttl),t})),{id:o,destination:r,error:q,response:x,totalDuration:H,batchedCount:G,allowedCount:E.length,pushedCount:W,canonicalId:c,breakerConfig:d}})),u={},d={},y={};for(const t of c){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};se(e,t.id);const r=e.status.destinations[t.id],s=Date.now();r.queuePushSize=n.queuePush?.length??0,r.dlqSize=n.dlq?.length??0;const a=t.breakerConfig,i=t.canonicalId?O("destination",t.canonicalId):void 0,c=t=>{a&&i&&ne(e.status.breakers,i,t,a.threshold,a.cooldown)};if(t.error)o.error=t.error,y[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,c("transport-failure");else if(t.queue&&t.queue.length)d[t.id]=o;else{const n=t.batchedCount??0,a=t.allowedCount??0,i=t.pushedCount??a;(Math.max(0,i-n)>0||0===a)&&(u[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return Mt({event:t,...Object.keys(u).length&&{done:u},...Object.keys(d).length&&{queued:d},...Object.keys(y).length&&{failed:y}})}async function At(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const r=t.type||"unknown",s=e.logger.scope(r),a={collector:e,logger:s,id:n,config:t.config,env:Pt(t.env,t.config.env),reportError:ie(e,"destination",n,s,t)};s.debug("init");const i=Date.now();let c;w(e,_(e,{stepId:O("destination",n),stepType:"destination",phase:"init",eventId:"",now:i}));try{c=await $(t.init,"DestinationInit",e.hooks,e.logger)(a)}catch(t){const o=Date.now(),r=_(e,{stepId:O("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-i,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},w(e,r),t}if(!1===c)return c;if(t.config={...c||t.config,init:!0},t.queueOn?.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)ht(e,t,n,r,s)}s.debug("init done")}return!0}async function Dt(e,t,n,o,r,s){const{config:a}=t,i=await x(o,a,e);if(i.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:a,data:i.data,rule:i.mapping,ingest:r,env:{...Pt(t.env,a.env),...s?{respond:s}:{}},reportError:ie(e,"destination",n,u,t)};if(void 0!==a.mock)return u.debug("mock",{event:i.event.name}),a.mock;const l=i.mapping,f=void 0!==l?.batch,p=f?i.mappingKey||"* *":" batch-all";if((f||void 0!==a.batch)&&t.pushBatch&&void 0===a.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=xt(l?.batch),s=xt(a.batch),i=r.wait??s.wait??3e4,c=r.size??s.size??1e3,d=r.age??s.age??3e4,g=Pt(t.env,a.env),m=y(async()=>{const o=t.batches[p],r=o.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],c={collector:e,logger:u,id:n,config:a,data:void 0,rule:o.isDefault?void 0:i.rule,ingest:i.ingest,env:{...g,...i.respond?{respond:i.respond}:{}},reportError:ie(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=se(e,d),f=te(t.config.breaker),m=O("destination",d),h=t=>{f&&ne(e.status.breakers,m,t,f.threshold,f.cooldown)},v=Date.now(),y=new Map;let b,k=!1;const I=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??re};let s=0;for(const e of n){s+=V(o,e,r).dropped}if(s>0){const t=ae(e.status,O("destination",d),"dlq",s);Y(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&J(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let C=s.entries.length;const E=It(a.timeout),q=await j((o,r)=>Et(Promise.resolve($(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{C=0,k=!0,b=e,I(s.entries.map(t=>[t.event,e])),h("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(S(x=q)&&Array.isArray(x.failed)&&q.failed.length>0){const e=[];for(const t of q.failed){const n=s.entries[t.index];if(!n||y.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);y.set(t.index,o),e.push([n.event,o])}e.length>0&&(I(e),C=Math.max(0,s.entries.length-e.length),u.error("Push batch partial failure",{failed:e.length,delivered:C,entries:s.entries.length}))}var x;const A=Date.now();s.entries.forEach((t,o)=>{const r=k||y.has(o),a=T(t.event,t.ingest,e),i=_(e,{stepId:O("destination",n),stepType:"destination",phase:r?"error":"flush",eventId:"string"==typeof t.event.id?t.event.id:"",now:A,traceId:a.traceId,sourceId:a.sourceId,parentEventId:a.parentEventId});if(i.batch={size:s.entries.length,index:o},i.durationMs=A-v,r){const e=k?b:y.get(o);i.error=e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}w(e,i)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),C>0&&(l.count+=C,l.lastAt=Date.now(),e.status.out+=C,h("success"))},{wait:i,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{m()},flush:async()=>{await m.flush()}}}const c=t.batches[p];c.batched.entries.push({event:i.event,ingest:r,respond:s,rule:l,data:i.data}),c.batched.events.push(i.event),C(i.data)&&c.batched.data.push(i.data);const d="string"==typeof i.event.id?i.event.id:"",g=T(o,r,e),m=Date.now(),h=_(e,{stepId:O("destination",n),stepType:"destination",phase:"in",eventId:d,now:m,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});i.mappingKey&&(h.mappingKey=i.mappingKey),i.event.consent&&(h.consent={...i.event.consent}),h.inEvent=i.event,w(e,h);const v=_(e,{stepId:O("destination",n),stepType:"destination",phase:"out",eventId:d,now:m,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});i.mappingKey&&(v.mappingKey=i.mappingKey),v.outEvent=i.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},w(e,v);const b=t.config.id||n,k=se(e,b);return k.inFlightBatch=(k.inFlightBatch??0)+1,c.batchFn(),St}{let s;if(u.debug("push",{event:i.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=U({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[q]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof i.event.id?i.event.id:"",{traceId:l,sourceId:f,parentEventId:p}=T(o,r,e),g=Date.now(),m=_(e,{stepId:O("destination",n),stepType:"destination",phase:"in",eventId:c,now:g,traceId:l,sourceId:f,parentEventId:p});i.mappingKey&&(m.mappingKey=i.mappingKey),i.event.consent&&(m.consent={...i.event.consent}),m.inEvent=i.event,w(e,m);try{const o=It(a.timeout),r=await Et(Promise.resolve($(t.push,"DestinationPush",e.hooks,e.logger)(i.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),m=Date.now(),h=_(e,{stepId:O("destination",n),stepType:"destination",phase:"out",eventId:c,now:m,traceId:l,sourceId:f,parentEventId:p});return h.durationMs=m-g,h.outEvent=i.event,s&&s.length>0&&(h.calls=F(s)),C(r)&&(h.meta={...h.meta,response:r}),i.mappingKey&&(h.mappingKey=i.mappingKey),w(e,h),u.debug("push done"),r}catch(t){const o=Date.now(),r=_(e,{stepId:O("destination",n),stepType:"destination",phase:"error",eventId:c,now:o,traceId:l,sourceId:f,parentEventId:p});throw r.durationMs=o-g,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s&&s.length>0&&(r.calls=F(s)),i.mappingKey&&(r.mappingKey=i.mappingKey),w(e,r),t}}}function Mt(e){return{ok:!e?.failed,...e}}function Tt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:a}=Fe(e,"before"),{config:i}=Fe({...e,config:a},"next"),c={...t.config,...n,...i};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=Pt(t.env,o);return{...t,config:c,env:u}}async function _t(e,t={}){const n={};for(const[o,r]of Object.entries(t))r.config?.require?.length?e.pending.destinations[o]=r:n[o]=Tt(r);return n}function Pt(e,t){return e||t?t?e&&S(e)&&S(t)?{...e,...t}:t:e:{}}import{assign as Rt,getSpanId as zt,getTraceId as Ut,InvalidEventError as Kt,isFunction as Bt,isString as Ft}from"@walkeros/core";import{isObject as Ht}from"@walkeros/core";var Gt=5e3;async function Wt(e){const t=e.logger;await Lt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const r=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),Gt)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Lt(e.destinations,"destination",t),await Lt(e.transformers,"transformer",t),await Lt(e.stores,"store",t)}async function Lt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",a=n.scope(s),i={id:e,config:o.config,env:o.env??{},logger:a};let c;try{await Promise.race([r(i),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),Gt)})])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Qt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Vt(e,t,o){let s,a,i=!1;const c=ft(e);try{return await async function(){switch(t){case n.Commands.Config:Ht(o)&&(Rt(e.config,o,{shallow:!1}),a=o,i=!0);break;case n.Commands.Consent:if(Ht(o)){const{update:t}=r(e,o);Qt(e,n.Commands.Consent),a=t,i=!0}break;case n.Commands.Custom:Ht(o)&&(e.custom=Rt(e.custom,o),Qt(e,n.Commands.Custom),a=o,i=!0);break;case n.Commands.Destination:Ht(o)&&"code"in o&&Ht(o.code)&&(s=await jt(e,o));break;case n.Commands.Globals:Ht(o)&&(e.globals=Rt(e.globals,o),Qt(e,n.Commands.Globals),a=o,i=!0);break;case n.Commands.Hook:if(Ht(o)&&Ft(o.name)&&Bt(o.fn)){const{name:t,fn:n}=o;e.hooks[t]=n,a=o,i=!0}break;case n.Commands.On:if(Ht(o)&&Ft(o.type)){const{type:t,rules:n}=o;await mt(e,t,n)}break;case n.Commands.Ready:i=!0;break;case n.Commands.Run:s=await Xt(e,o),i=!0;break;case n.Commands.Session:i=!0;break;case n.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Wt(e));break;case n.Commands.User:Ht(o)&&(Rt(e.user,o,{shallow:!1}),Qt(e,n.Commands.User),a=o,i=!0);break;default:return e.logger.warn("unknown command",{command:t}),Mt({ok:!1})}if(i){await kt(e,t,void 0,a);const n=await $t(e);if(s&&!1===s.ok){const e={...n.failed??{},...s.failed??{}};s={...n,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else s=n}return s||Mt({ok:!0})}()}finally{c()}}function Nt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Yt(e,t,n){const o=t.name;if("string"!=typeof o)throw new Kt(void 0===o?"Event name is required":"Event name is invalid");if(!o)throw new Kt("Event name is required");const[r,s]=o.split(" ");if(!r||!s)throw new Kt("Event name is invalid");const{timestamp:a=Date.now(),name:i=`${r} ${s}`,data:c={},context:u={},globals:d={},custom:l={},user:f=e.user,nested:p=[],consent:g=e.consent,id:m=zt(),trigger:h="",entity:v=r,action:y=s,timing:w=0,source:b={type:"collector",schema:"4"}}=t,k=b??{type:"collector",schema:"4"},I=k.count??(e.count+=1),C=k.trace??n?._meta.trace??e.trace,E={...k,count:I};void 0!==C&&(E.trace=C);const S=e.name??k.platform??"default",q=e.release??"4.5.0";E.release={...k.release,[S]:q};return{name:i,data:c,context:u,globals:Rt(e.globals,d),custom:l,user:f,nested:p,consent:g,id:m,trigger:h,entity:v,action:y,timestamp:a,timing:w,source:E}}function Jt(e,t,n){return Yt(e,Nt(e,t),n)}async function Xt(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=Ut(),e.count=0,t&&(t.consent&&(e.consent=Rt(e.consent,t.consent),Qt(e,n.Commands.Consent)),t.user&&(e.user=Rt(e.user,t.user),Qt(e,n.Commands.User)),t.globals&&(e.globals=Rt(e.config.globalsStatic||{},t.globals),Qt(e,n.Commands.Globals)),t.custom&&(e.custom=Rt(e.custom,t.custom),Qt(e,n.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await et(e),await bt(e);let o=!0;const r={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:s}of t){const t=await e.push(n,s);!1===t.ok&&(o=!1),t.failed&&Object.assign(r,t.failed)}}const s=await $t(e);if(o)return s;const a={...s.failed??{},...r};return{...s,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}import{createIngest as Zt,emitStep as en,FatalError as tn,getGrantedConsent as nn,getSpanId as on,InvalidEventError as rn,processEventMapping as sn,tryCatchAsync as an,useHooks as cn}from"@walkeros/core";function un(e,t){const n=cn(async(n,o={})=>await an(async()=>{if(!e.allowed){const t=e.config.queueMax;if(void 0===t)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const r=V(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=ae(e.status,"collector.preRun","queue",r.dropped);Y(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&J(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Mt({ok:!0})}const r=Date.now(),{id:s,ingest:a,respond:i,mapping:c,preChain:u,include:d,exclude:l}=o;let f=i,p=n;const g=d||l?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,l):void 0,m=a??Zt(s||"unknown");if(c){const t=await sn(p,c,e);if(t.ignore)return Mt({ok:!0});if(c.consent){if(!nn(c.consent,e.consent,t.event.consent))return Mt({ok:!0})}p=t.event}if(u?.length&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Qe(e,e.transformers,u,p,m,f,s?`source.${s}.next`:void 0);if(null===n.event)return e.logger.debug("Event dropped by transformer chain"+(n.droppedBy?` (${n.droppedBy})`:"")),Mt({ok:!0,dropped:!0});if(n.stopped)return n.respond&&(f=n.respond),Mt({ok:!0});n.respond&&(f=n.respond);const o="string"==typeof p.id?p.id:"";if(Array.isArray(n.event)){const a=await Promise.all(n.event.map(async n=>{const r=""!==o&&n.id===o?{...n,id:on()}:n,a=t(r),i=Yt(e,a,m);return $t(e,i,{id:s,ingest:m,respond:f},g)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return a[0]??Mt({ok:!0})}p=""===o||"string"==typeof n.event.id&&""!==n.event.id?n.event:{...n.event,id:o}}const h=Jt(e,p,m),v=await $t(e,h,{id:s,ingest:m,respond:f},g);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return v},t=>{if(t instanceof tn)throw t;if(t instanceof rn){const n=o.id;if(n){e.status.sources[n]||(e.status.sources[n]={count:0,duration:0});const t=e.status.sources[n];t.rejected=(t.rejected??0)+1}return e.logger.warn("invalid event rejected",{error:t.message}),Mt({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Mt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:on()},s="string"==typeof r.id?r.id:"",{traceId:a,sourceId:i,parentEventId:c}=T(r,o?.ingest,e),u=Date.now(),d=_(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:u,traceId:a,sourceId:i,parentEventId:c});d.inEvent=r,en(e,d);try{const t=await n(r,o),d=Date.now(),l=_(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:d,traceId:a,sourceId:i,parentEventId:c});return l.durationMs=d-u,l.outEvent=t,en(e,l),t}catch(t){const n=Date.now(),o=_(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:a,sourceId:i,parentEventId:c});throw o.durationMs=n-u,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},en(e,o),t}}}import{FatalError as dn,useHooks as ln,tryCatchAsync as fn}from"@walkeros/core";import{emitStep as pn,useHooks as gn}from"@walkeros/core";function mn(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=new Map,a={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let i;o>0&&(i=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);a.evictions_ttl+=t},o),i&&"function"==typeof i.unref&&i.unref());return{type:"memory",config:{},get(e){const t=s.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(s.delete(e),a.evictions_ttl++,void a.misses++):(s.delete(e),s.set(e,t),a.hits++,t.value);a.misses++},set(e,n,o){const i=!s.has(e);i||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),a.writes++,i&&a.populates++,s.size>t&&function(){if(s.size<=t)return;const e=s.size-r;let n=0;for(const t of s.keys()){if(n>=e)break;s.delete(t),n++}a.evictions_entries+=n}()},delete(e){s.delete(e)&&a.deletes++},get counters(){return{...a}},destroy(){void 0!==i&&(clearInterval(i),i=void 0),s.clear()}}}import{compileMatcher as hn,emitStep as vn,readCacheEnvelope as yn,wrapCacheEnvelope as wn}from"@walkeros/core";function bn(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:a,collector:i}=t,c=(e,t)=>{if(!i)return;const n=_(i,{stepId:`store.${a}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},vn(i,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?hn(e.match):()=>!0,ttl:e.ttl})),l=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return d.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),r=await o.get(n),s=yn(r);if(void 0!==s){if(!("expired"in s))return u.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const a=p.get(n);if(a)return u.inflight_dedups++,c(t,"hit"),a;u.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{const e=1e3*s.ttl;await o.set(n,wn(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){u.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{const e=1e3*s.ttl;await o.set(l(t),wn(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${a}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function kn(e,t,n){const o=`store.${n}`,r=gn(t.get,"StoreGet",e.hooks,e.logger),s=gn(t.set,"StoreSet",e.hooks,e.logger),a=gn(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=_(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},pn(e,s);try{const s=await r(t),a=Date.now(),i=_(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});return i.durationMs=a-n,i.meta={op:"get",key:t},pn(e,i),s}catch(r){const s=Date.now(),a=_(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"get",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},pn(e,a),r}},t.set=async(t,n,r)=>{const a=Date.now(),i=_(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:a});i.meta={op:"set",key:t},pn(e,i);try{await s(t,n,r);const i=Date.now(),c=_(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});c.durationMs=i-a,c.meta={op:"set",key:t},pn(e,c)}catch(n){const r=Date.now(),s=_(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-a,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},pn(e,s),n}},t.delete=async t=>{const n=Date.now(),r=_(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},pn(e,r);try{await a(t);const r=Date.now(),s=_(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},pn(e,s)}catch(r){const s=Date.now(),a=_(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"delete",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},pn(e,a),r}}}async function In(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:a={}}=r,i=e.logger.scope("store").scope(o),c={collector:e,logger:i,id:o,config:s,env:a,reportError:ie(e,"store",o,i)},u=await t(c);n[o]=u}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){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 i=e[s].cache?.store;if(void 0!==i){if(!(i in e))throw new Error(`Store "${s}" cache.store references "${i}", which is not declared in flow.stores`);r(i)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(o);for(const t of r){const r=o[t].cache;if(!r)continue;let s,a;void 0!==r.store?(s=n[r.store],a=r.store):(n.__cache||(n.__cache=mn()),s=n.__cache,a="__cache");const i=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${i}:" via ${a}`),n[t]=bn(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:i,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&kn(e,o,t);return n}async function Cn(e){const t=u({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=d(n),r={...t.globalsStatic,...e.globals},s={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:r,hooks:e.hooks||{},observers:new Set,logger:o,on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),s.push=un(s,e=>Nt(s,e)),s.command=function(e,t){return ln(async(n,o,r)=>await fn(async()=>await t(e,n,o,r),t=>{if(t instanceof dn)throw t;return e.status.failed++,e.logger.error("command failed",{command:n,data:o,error:t}),Mt({ok:!1})})(),"Command",e.hooks,e.logger)}(s,Vt),s.elb=function(e){return async(t,n,o,r,s)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let a;if("string"==typeof t)a={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Mt({ok:!1});a={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return o&&"object"==typeof o&&(a.context=o),r&&Array.isArray(r)&&(a.nested=r),s&&"object"==typeof s&&(a.custom=s),e.push(a)}}(s);const a=e.stores||{};return s.stores=await In(s,a),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)}}}(a,s.stores,e),s.stores.__cache||(s.stores.__cache=mn()),s.destinations=await _t(s,e.destinations||{}),s.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r,a=_e(r,"Transformer");if(!a.ok){e.logger.warn(`Transformer ${o} invalid (${a.code}): ${a.reason}. Skipping.`);continue}const{config:i}=Fe(r,"before"),{config:c}=Fe({...r,config:i},"next"),u=Object.keys(s).length>0?{...c,env:s}:c,{cache:d}=r,l=d?{...u,cache:d}:u,f=r.config?.state??r.state,p=void 0!==f&&void 0===l.state?{...l,state:f}:l,g=e.logger.scope("transformer").scope(o),m={collector:e,logger:g,id:o,ingest:Ce(o),config:p,env:s,reportError:ie(e,"transformer",o,g)},h=t??(e=>{const t=r.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 ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await Pe(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),v=await h(m);void 0!==r.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:r.before}),void 0!==r.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:r.next}),void 0!==f&&void 0===v.config?.state&&(v.config={...v.config??{},state:f}),n[o]=v}return n}(s,e.transformers||{}),s}var En=globalThis;function Sn(e){try{const t=En.window;if(!t)return;t.localStorage.getItem(s)===e&&t.localStorage.removeItem(s)}catch{}}function qn(e,t){return void 0===t?e:n=>e({...n,release:t})}function xn(e,t){if(t.observers)for(const n of t.observers)e.observers.add(n);const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=En.window,t=En.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(s);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return En.window?.localStorage.getItem(s)??null}catch{return null}}();if(!r)return;const u=c(r);if(!u)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),Sn(r)):e.logger.warn("observe: malformed credential ignored"));if(u.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let d;!function(e){try{En.window?.localStorage.setItem(s,e)}catch{}}(r),null!==t&&function(){const e=En.window,t=En.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),r=o>=0?n.slice(o):"",a=o>=0?n.slice(0,o):n,i=a.indexOf("?"),c=i>=0?a.slice(0,i):a,u=new t(i>=0?a.slice(i+1):"");u.delete(s);const d=u.toString();e.history.replaceState({},"",`${c}${d?`?${d}`:""}${r}`)}catch{}}();const l=a({url:`${n.url}/ingest/${u.ses}`,token:u.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(Sn(r),d&&e.observers.delete(d))}});d=i(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(qn(l,e.release),n.flowId),{flowId:n.flowId??o,...void 0!==n.level?{level:n.level}:{},...void 0!==n.sample?{sample:n.sample}:{}}),e.observers.add(d);const f=n.level;return void(void 0!==f&&(e.observeLevel=()=>f))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add(i(qn(a({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function On(e){e=e||{};const t=await Cn(e);xn(t,e),await Ze(t,e.sources||{});const{consent:n,user:o,globals:r,custom:s}=e;n&&await t.command("consent",n),o&&await t.command("user",o),r&&await t.command("globals",r),s&&await t.command("custom",s),t.config.run&&await t.command("run");let a=t.elb;const i=Object.values(t.sources),c=i.find(e=>e.config.primary);return c?a=c.push:i.length>0&&(a=i[0].push),{collector:t,elb:a}}export{e as Code,t as Commands,n as Const,Z as DEFAULT_BREAKER_COOLDOWN_MS,X as DEFAULT_BREAKER_THRESHOLD,re as DEFAULT_DLQ_MAX,jt as addDestination,ie as buildReportError,ae as bumpDropped,ht as callDestinationOn,Vt as commonHandleCommand,Yt as createEvent,un as createPush,Mt as createPushResult,At as destinationInit,Dt as destinationPush,Jt as enrichEvent,se as ensureDestStatus,ft as enterCascade,Be as extractTransformerNextMap,vt as fireCallbacks,Ye as flushSourceQueueOn,Ue as getCacheStore,_t as initDestinations,Xe as initSource,Ze as initSources,oe as isBreakerProbePermitted,ct as isRequireSatisfied,Je as isSourceStarted,at as isStateDelivery,it as isStatePresent,Pt as mergeEnvironments,mt as on,kt as onApply,Nt as prepareEvent,r as processConsent,$t as pushToDestinations,bt as redeliverStateAtRun,Tt as registerDestination,te as resolveBreakerConfig,Xt as runCollector,Qe as runTransformerChain,dt as setMark,lt as shouldDeliver,On as startFlow,Ge as transformerInit,We as transformerPush,He as walkChain,U as wrapEnv};//# sourceMappingURL=index.mjs.map
|