@walkeros/collector 4.8.1-next-1792019907609 → 4.8.1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @walkeros/collector
2
2
 
3
- ## 4.8.1-next-1792019907609
3
+ ## 4.8.1
4
4
 
5
5
  ### Patch Changes
6
6
 
@@ -13,7 +13,7 @@
13
13
  string form takes `data` only when it is a plain object; before, any non-array
14
14
  object, such as an element or a date, was taken.
15
15
  - Updated dependencies [1062e99]
16
- - @walkeros/core@4.8.1-next-1792019907609
16
+ - @walkeros/core@4.8.1
17
17
 
18
18
  ## 4.8.0
19
19
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s={};((e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})})(s,{Code:()=>i,Commands:()=>a,Const:()=>c,DEFAULT_BREAKER_COOLDOWN_MS:()=>W,DEFAULT_BREAKER_THRESHOLD:()=>K,DEFAULT_DLQ_MAX:()=>U,ELB_IGNORED_ARGUMENTS:()=>an,addDestination:()=>Ot,buildReportError:()=>Q,bumpDropped:()=>G,callDestinationOn:()=>We,commonHandleCommand:()=>Ht,completeEvent:()=>Gt,createEvent:()=>zt,createPush:()=>on,createPushResult:()=>Mt,destinationInit:()=>At,destinationPush:()=>Rt,enrichEvent:()=>Qt,ensureDestStatus:()=>z,enterCascade:()=>Pe,errorMeta:()=>N,fireCallbacks:()=>ot,flushSourceQueueOn:()=>ve,getCacheStore:()=>y,initDestinations:()=>$t,initSource:()=>ye,initSources:()=>be,isBreakerProbePermitted:()=>H,isRequireSatisfied:()=>xe,isSourceStarted:()=>we,isStateDelivery:()=>Ie,isStatePresent:()=>je,mergeEnvironments:()=>Tt,on:()=>Ke,onApply:()=>gt,prepareEvent:()=>Ut,processConsent:()=>d,pushToDestinations:()=>It,redeliverStateAtRun:()=>ft,registerDestination:()=>Pt,resolveBreakerConfig:()=>F,runCollector:()=>Yt,runCollectorNext:()=>Zt,runTransformerBefore:()=>le,runTransformerChain:()=>de,setMark:()=>Ae,shouldDeliver:()=>Re,startFlow:()=>Sn,transformerInit:()=>Z,transformerPush:()=>ee,wrapEnv:()=>q}),module.exports=(e=s,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={},a={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"},c={Commands:a,Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}},u=require("@walkeros/core");function d(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,u.assign)(e.consent,n),{update:n}}var l=require("@walkeros/core"),f=require("@walkeros/core"),p=require("@walkeros/core");function g(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function h(e,t,n,o,r,s=Date.now(),i){const a={flowId:e.name??"default",stepId:t,stepType:n,phase:o,eventId:r,timestamp:new Date(s).toISOString(),elapsedMs:s-e.status.startedAt};return i?.traceId&&(a.traceId=i.traceId),i?.sourceId&&(a.sourceId=i.sourceId),i?.parentEventId&&(a.parentEventId=i.parentEventId),a}function m(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function v(e,t,n,o){e.status.in++;const r=h(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):r.meta={by:o.by??"route",at:o.at},(0,p.emitStep)(e,r)}var w=require("@walkeros/core");function y(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function b(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?(0,w.compileState)(e):void 0}function k(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,w.applyState)(t,t=>function(e,t){return e?t.stores[e]:t.stores.__cache}(t,e),n,e,o):Promise.resolve(n)}function S(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}var E=require("@walkeros/core"),O=8;function _(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=O||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))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(_(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:_(s,t,n+1);return r}function q(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:_(t,r,1);const s=(0,E.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}var C=6;function I(e,t){try{return e[t]}catch{return"[unreadable]"}}function j(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>=C)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(I(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 x(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=function(e){return e.map(e=>({fn:e.fn,args:j(e.args),ts:e.ts}))}(t))}var D=require("@walkeros/core"),A=require("@walkeros/core"),R=require("@walkeros/core");function M(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function P(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 $=new WeakMap;function T(e,t,n,o){$.get(e)||($.set(e,!0),t.warn(n,o))}function B(e){$.delete(e)}var K=5,W=3e4,L=()=>Date.now();function F(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:W}:{threshold:e.threshold??K,cooldown:e.cooldown??W}}function V(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=L()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=L()+r)))}function H(e,t){return!e||("closed"===e.state||"half-open"===e.state||void 0!==e.openUntil&&t>=e.openUntil)}var U=100;function z(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 G(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 N(e){const t={error:e instanceof Error?e.message:String(e)};if(e instanceof Error&&e.name&&"Error"!==e.name&&(t.name=e.name),"object"==typeof e&&null!==e&&"code"in e){const n=e;"number"!=typeof n.code&&"string"!=typeof n.code||(t.code=n.code)}return t}function Q(e,t,n,o,r){const s=(0,R.stepId)(t,n);return(t,i)=>{try{if(i)return r?function(e,t,n,o,r,s){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??U},c=P(i,[o,r],a);if(c.dropped>0){const t=G(e.status,(0,R.stepId)("destination",n),"dlq",c.dropped);T(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&B(i);const u=z(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=F(t.config.breaker);if(d){const o=t.config.id||n;V(e.status.breakers,(0,R.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...N(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",N(t))}catch{}}}var Y=require("@walkeros/core"),X=require("@walkeros/core");function J(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function Z(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:(0,X.createIngest)(n),config:t.config,env:fe(t.config.env),reportError:Q(e,"transformer",n,r)};r.debug("init");const i=await(0,X.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function ee(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...fe(t.config.env),...s?{respond:s}:{}},reportError:Q(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=g(o,r,e),l=Date.now(),f=h(e,(0,X.stepId)("transformer",n),"transformer","in",u,l,d);f.inEvent=o,(0,X.emitStep)(e,f);try{const r=await(0,X.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=h(e,(0,X.stepId)("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,(0,X.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=h(e,(0,X.stepId)("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=m(t),(0,X.emitStep)(e,r),t}}var te=256;function ne(e){return"string"==typeof e.id?e.id:""}function oe(e,t){const n=ne(e);return""!==n&&""===ne(t)?{...t,id:n}:t}function re(e,t,n,o){const r=function(e){return{...e,_meta:{...e._meta,path:[...e._meta.path]}}}(n),s=(0,X.clone)(t),i=ne(e);if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const a=ne(s);return""!==a&&a!==i||(s.id=(0,X.deriveSpanId)(i,o)),{event:s,ingest:r}}function se(e,t){return{copies:e,respond:t}}function ie(e,t){if(void 0===t)return e.rest;const n=e.ownNext?e.rest.slice(1):e.rest;return[{route:t,ancestry:e.ancestry},...n]}async function ae(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,X.tryCatchAsync)(ce,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,N(t)),{copies:[]}))(e,t))),r=[];let s,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===s&&(s=e.droppedBy):r.push(...e.copies)}),0===r.length?{copies:r,respond:i,...a?{stopped:!0}:{},...void 0!==s?{droppedBy:s}:{}}:se(r,i)}async function ce(e,t){const{ingest:n}=t;let{stack:o,event:r,respond:s}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=(0,X.advanceChain)(o,(0,X.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return se([{event:r,ingest:n}],s);if("stop"===i.kind)return{copies:[],respond:s,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=r;return ae(e,i.branches.map((e,o)=>({stack:e,...re(t,t,n,o),respond:void 0})),s)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await ue(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return ae(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function ue(e,t,n,o,r,s){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=r;const p=(e=t.rest)=>({kind:"continue",event:oe(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return i.logger.warn(`Transformer not found: ${u}`),p();const h=d.config?.cache,m=h?(0,X.compileCache)(h):void 0,v=m?y(m,i):void 0;let w=s?.cacheMiss;if(!s){if(o._meta.path.length>te)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});o._meta.hops++,o._meta.path.push(u);if(!await(0,X.tryCatchAsync)(Z,e=>{if(e instanceof X.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...N(e)}),!1})(i,d,u))return g({copies:[],respond:f});if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(m&&v){const e=await(0,X.checkCache)(m,v,(0,X.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value){if(l=e.value,m.stop){return g({copies:[{event:oe(n,l),ingest:o}],respond:f,stopped:!0})}return p()}"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await le(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const S=b(d.config?.state),E=S?.filter(e=>"get"===e.mode),O=S?.filter(e=>"set"===e.mode),_=async e=>O&&0!==O.length?k(i,O,e,o):e;E&&E.length>0&&(l=await k(i,E,l,o));const q=await(0,X.tryCatchAsync)(ee,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",N(e)),!1))(i,d,u,l,o,f);if(!1===q)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(q)&&1!==q.length){if(0===q.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<q.length;r++){const s=q[r],i=await _(s.event||e);n.push({stack:ie(t,s.next),...re(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const C=Array.isArray(q)?q[0]:q;let I;return C&&"object"==typeof C&&(C.respond&&(f=C.respond),C.event&&(l=C.event),I=C.next),l=await _(l),w&&v&&(0,X.storeCache)(v,w.key,l,w.ttl),p(ie(t,I))}async function de(e,t,n,o,r,s,i){const a=r??(0,X.createIngest)("string"==typeof n?n:"chain");return void 0===n?se([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),ce({collector:e,transformers:t,chainContext:i},{stack:(0,X.isChainContinuation)(n)?n:(0,X.startChain)(n),event:o,ingest:a,respond:s}))}async function le(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await de(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}function fe(e){return e&&(0,X.isObject)(e)?e:{}}var pe=1e4;function ge(e){return"number"==typeof e&&e>0?e:pe}var he=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function me(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new he(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function ve(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){if(Ie(n)&&!Re(e,t,n))continue;const o=t.on;let i=!1;await(0,Y.tryCatchAsync)(()=>me(Promise.resolve(o(n,s)),pe,`Source "${r}" on(${n}) did not settle within ${pe}ms`),t=>{if(t instanceof Y.FatalError)throw t;t instanceof he?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...N(t)})})(),Ie(n)&&!i&&Ae(e,t,n)}}function we(e){return Boolean(e.config.init)&&!e.config.require?.length}async function ye(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=r.state??n.state,f=b(l);S(e,(0,Y.stepId)("source",t),l);const p=u,g=p?(0,Y.compileCache)({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),w=async(n,o,s)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,Y.getSpanId)()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await de(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return v(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),Mt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),d=o.copies}if(g){const t=y(g,e);if(t){const n=(0,Y.createMappingRoot)(s.ingest),o=await(0,Y.checkCache)(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(0,Y.applyUpdate)(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,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{(0,Y.storeCache)(t,u,n,d),a?i=(async()=>{const t=await(0,Y.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,Y.storeCache)(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await k(e,f,t.event,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of d)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:s.respond,mapping:r,preChain:a});return i&&await i,l},E=async n=>{const o=(0,Y.createIngest)(t),s=(0,Y.parseTraceparent)((0,Y.isScope)(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 i=await(0,Y.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},O=e.logger.scope("source").scope(t),_={...s,push:async(e,n={})=>{const o={ingest:(0,Y.createIngest)(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:O},q={collector:e,logger:O,id:t,config:r,env:_,withScope:async(e,t,n)=>{const o={ingest:await E(e),respond:t};return n({..._,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:Q(e,"source",t,O)},C=await(0,Y.tryCatchAsync)(o,n=>{if(n instanceof Y.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...N(n)})})(q);if(!C)return;const I=C.type||"unknown",j=e.logger.scope(I).scope(t);return _.logger=j,i&&(C.config={...C.config,primary:i}),C}async function be(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await ye(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(0,Y.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof Y.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...N(n)})})(),o||(n.config.init=!0,we(n)&&await ve(e,n,t))}return await ke(e),n}async function ke(e){for(const[t,n]of Object.entries(e.sources)){if(we(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!xe(e,t));r.length!==o.length&&(n.config.require=r,we(n)&&await ve(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=>!xe(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Pt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await dt(e,s,t)}}function Se(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 Ee=!1;function Oe(){Ee||(Ee=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function _e(e,t,n,o){if(n instanceof D.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...N(n)})}var qe=["consent","user","globals","custom"];function Ce(e){return qe.includes(e)}function Ie(e){return Ce(e)}function je(e,t){return Ce(t)&&Object.keys(e[t]).length>0}function xe(e,t){if(Ce(t))return je(e,t);switch(t){case c.Commands.Run:case c.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function De(e,t){return e.cellVersion?.[String(t)]??0}function Ae(e,t,n){nt(e,t,n,De(e,n))}function Re(e,t,n){return e.allowed&&De(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)}var Me=8;function Pe(e){const t=e.cascade;if(t&&!$e.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,$e.set(n,($e.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=($e.get(n)||1)-1;t>0?$e.set(n,t):($e.delete(n),e.cascade===n&&(e.cascade=void 0))}}var $e=new WeakMap;function Te(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),i=(r[s]||0)+1;return r[s]=i,i<=Me||(i===Me+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Be(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function Ke(e,t,n){if(!Se(e))return void Oe();const o=e.on,r=o[t]||[],s=(0,D.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,ot(e,t,s)}async function We(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=Ie(o);if(i&&(Le.get(t)||Fe.has(t)))return Je(e,t,o),Le.get(t)||Ve.add(t),!1;const a=i?De(e,o):0,c=i&&function(e,t,n,o){if(Qe.get(t)?.has(String(n)))return!0;const r=e.delivery?.get(t)?.[String(n)];return void 0===r||r<o-1}(e,t,o,a)?rt(e,o):r,u=t.type||"unknown",d=e.logger.scope(u).scope("on").scope(o),l={collector:e,logger:d,id:n,config:t.config,data:c,env:Tt(t.env,t.config.env),reportError:Q(e,"destination",n,d,t)};i&&(et(t,o),function(e,t,n){let o=Ge.get(e);o||(o={},Ge.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),Fe.add(t));const f=ge(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await(0,A.tryCatchAsync)(()=>(p=Promise.resolve(s(o,l)),me(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof he&&(h=!0),_e(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){Fe.delete(t),m&&Ve.delete(t);const r=Qe.get(t);g?(nt(e,t,o,a),r?.delete(String(o))):Je(e,t,o),h?function(e,t,n,o,r,s,i){Le.set(t,(Le.get(t)||0)+1);const a=()=>{const s=(Le.get(t)||0)-1;s>0?Le.set(t,s):Le.delete(t),Ye(t,o),Ne(t,o,r),tt(e,t),i.debug("late settle after timeout"),Ve.delete(t),e.allowed&&e.destinations[n]===t&&function(e,t,n,o){(0,A.tryCatchAsync)(async()=>{await dt(e,t,n),!Ue(t)&&t.queuePush?.length&&await It(e,void 0,{},{[n]:t})},e=>{o.error("state recovery failed",N(e))})()}(e,t,n,i)};s.then(a,a)}(e,t,n,o,a,p,d):(Ne(t,o,a),tt(e,t))}}return i&&!h&&Ve.delete(t)&&await dt(e,t,n),g}var Le=new WeakMap,Fe=new WeakSet,Ve=new WeakSet;var He=new WeakMap;function Ue(e){return He.get(e)}var ze=new WeakMap,Ge=new WeakMap;function Ne(e,t,n){const o=Ge.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Qe=new WeakMap;function Ye(e,t){const n=Qe.get(e);n?n.add(String(t)):Qe.set(e,new Set([String(t)]))}var Xe=new WeakMap;function Je(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Ye(t,n),He.set(t,{type:n,since:Date.now()})}function Ze(e,t){return!!Qe.get(t)?.size||qe.some(n=>je(e,n)&&Re(e,t,n))}function et(e,t){ze.set(e,(ze.get(e)||0)+1),He.set(e,{type:t,since:Date.now()})}function tt(e,t){const n=(ze.get(t)||0)-1;n>0?ze.set(t,n):ze.delete(t),function(e,t){if(!He.has(t))return;if(ze.get(t))return;Ze(e,t)||He.delete(t)}(e,t)}function nt(e,t,n,o){let r=e.delivery.get(t);r||(r={},e.delivery.set(t,r));const s=String(n),i=r[s];(void 0===i||i<o)&&(r[s]=o)}function ot(e,t,n,o){if(!Se(e))return void Oe();const r=rt(e,t,o);if(n.length)switch(t){case c.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=Be(e,c.Commands.Consent);t.forEach(t=>{Re(e,t,c.Commands.Consent)&&Te(e,t,c.Commands.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,A.tryCatch)(t[n],t=>_e(e,"consent",t,{key:n}))(o,r)}),Ae(e,t,c.Commands.Consent))})}(e,n,o);break;case c.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=Be(e,c.Commands.Ready);t.forEach(t=>{(0,A.tryCatch)(t,t=>_e(e,"ready",t))(void 0,n)})}(e,n);break;case c.Commands.Run:!function(e,t){if(!e.allowed)return;const n=Be(e,c.Commands.Run);t.forEach(t=>{(0,A.tryCatch)(t,t=>_e(e,"run",t))(void 0,n)})}(e,n);break;case c.Commands.Session:!function(e,t){if(!e.session)return;const n=Be(e,c.Commands.Session);t.forEach(t=>{(0,A.tryCatch)(t,t=>_e(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Be(e,t),s=Ie(t);n.forEach(n=>{"function"==typeof n&&(s&&!Re(e,n,t)||s&&!Te(e,n,t)||((0,A.tryCatch)(n,n=>_e(e,"generic",n,{type:t}))(r,o),s&&Ae(e,n,t)))});break}}}function rt(e,t,n){if(Ce(t))return n||e[t];switch(t){case c.Commands.Session:return e.session;case c.Commands.Config:return n||e.config;default:return}}async function st(e,t,n,o,r){if(!t.on)return!1;if(Ie(o)&&!Re(e,t,o))return!1;if(Ie(o)&&!Te(e,t,o))return!1;const s=Ie(o);if(s&&it.has(t))return at.add(t),!1;const i=s?De(e,o):0;s&&it.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,A.tryCatchAsync)(()=>(u=Promise.resolve(a(o,r)),me(u,pe,`Source "${n}" on(${o}) did not settle within ${pe}ms`)),t=>{t instanceof he&&(d=!0),_e(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&it.delete(t)}if(s)if(d){const o=()=>{it.delete(t),at.delete(t),e.allowed&&e.sources[n]===t&&(0,A.tryCatchAsync)(()=>ct(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",N(t))})()};u.then(o,o)}else nt(e,t,o,i),at.delete(t)&&await ct(e,t,n);return!1===c}var it=new WeakSet,at=new WeakSet;async function ct(e,t,n){const o=Pe(e);try{for(const o of qe)await st(e,t,n,o,rt(e,o))}finally{o()}}async function ut(e,t,n,o,r){if(!t.on)return;const s=Ie(o);if(s&&!Re(e,t,o))return;const i=Ge.get(t)?.[String(o)];if(s&&void 0!==i&&i>=De(e,o))return;if(s&&!Te(e,t,o)){if(t.config.init)return void Je(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:rt(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),Ae(e,t,o),void Qe.get(t)?.delete(String(o))}const a=Xe.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(Ae(e,t,o),a&&!a.held&&(et(t,o),a.held=!0)));await We(e,t,n,o,r)}async function dt(e,t,n){if(!t.on)return;const o=Pe(e);try{for(const o of qe)(je(e,o)||Qe.get(t)?.has(String(o)))&&await ut(e,t,n,o,rt(e,o))}finally{o()}}function lt(e){return(ze.get(e)||0)>0}async function ft(e){const t=await pt(e);await Promise.all(t.map(({done:e})=>e))}async function pt(e){if(!Se(e))return Oe(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of qe)je(e,t)&&await ut(e,o,n,t,rt(e,t))};t.push(ht(n,o,r()))}for(const t of qe){if(!je(e,t))continue;const n=rt(e,t);ot(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>we(e)).map(([o,r])=>st(e,r,o,t,n)))}return t}async function gt(e,t,n,o){const{ok:r,deliveries:s}=await mt(e,t,n,o);return await Promise.all(s.map(({done:e})=>e)),r}function ht(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}async function mt(e,t,n,o){if(!Se(e))return Oe(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=rt(e,t,o),i=[];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)}o.on&&(we(o)?i.push(st(e,o,n,t,s)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(ht(n,o,ut(e,o,n,t,s)));let c=!1;if(i.length){c=(await Promise.all(i)).some(Boolean)}for(const[t,n]of Object.entries(e.sources))we(n)&&n.queueOn?.length&&await ve(e,n,t);const u=Object.values(e.sources).some(e=>!we(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await ke(e),ot(e,t,r,o),{ok:!c,deliveries:a}}var vt=1e3,wt=1e3,yt=3e4,bt=Object.freeze({batched:!0});function kt(e){return e===bt}var St=" batch-all";function Et(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function Ot(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,f.isFunction)(n.push))return Mt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=(0,f.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(S(e,(0,f.stepId)("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await ke(e);const n=e.destinations[l];return n?It(e,void 0,{},{[l]:n}):Mt({ok:!0})}const p={...n,config:d,env:Tt(n.env,r)};return e.destinations[l]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),await dt(e,p,l),It(e,void 0,{},{[l]:p})}function _t(e){for(const t of e)Ue(t.destination)&&(t.drain=!0)}async function qt(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!Ue(n)&&n.queuePush?.length&&e.destinations[t]===n)return It(e,void 0,{},{[t]:n})}))).filter(f.isDefined)}function Ct(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},r={...e.failed??{}};for(const e of t){for(const[t,r]of Object.entries(e.done??{}))n[t]=r,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))r[t]=n,delete o[t];Object.assign(o,e.queued??{})}const s={...e,ok:e.ok&&t.every(e=>e.ok)};return delete s.done,delete s.queued,delete s.failed,Object.keys(n).length&&(s.done=n),Object.keys(o).length&&(s.queued=o),Object.keys(r).length&&(s.failed=r),s}async function It(e,t,n={},o){if(!e.allowed)return Mt({ok:!1});if(!t)return jt(e,void 0,n,o);const r=await Zt(e,t,n);if(0===r.copies.length)return Mt({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await jt(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function jt(e,t,n,o){const{user:r}=e;if(t){const n=M(e.config.queueMax),o=P(e.queue,t,{max:n});if(o.dropped>0){const t=G(e.status,(0,f.stepId)("collector"),"queue",o.dropped);T(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&B(e.queue);e.status.in++}o||(o=e.destinations);const s=e.transformers||{},i=await Promise.all(Object.entries(o||{}).map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=(0,f.stepId)("destination",a),u=F(i.config.breaker);if(u&&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=L();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,c,u.cooldown))return{id:o,destination:i,skipped:!0};const d=t=>{u&&V(e.status.breakers,c,t,u.threshold,u.cooldown)},l=()=>{u&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,c)},p=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??vt};let a=0;for(const e of t){a+=P(n,e,s).dropped}if(a>0){z(e,r);const t=G(e.status,(0,f.stepId)("destination",r),"queue",a);T(n,e.logger.scope(i.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:r,cap:s.max,droppedCount:t})}else n.length<s.max&&B(n)};i.on&&i.config.init&&!Ue(i)&&!lt(i)&&Ze(e,i)&&await dt(e,i,o);const m=Ue(i);if(m&&!lt(i)&&Date.now()-m.since>=ge(i.config.timeout)&&await dt(e,i,o),Ue(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[(0,f.clone)(t)];return p(e),{id:o,destination:i,queue:e}}let v=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&v.push((0,f.clone)(t));const w=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,f.createIngest)("unknown");if(!v.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!v.length&&i.queueOn?.length){if(!(0,f.getGrantedConsent)(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await At(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),d("transport-failure")}if(Ue(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};v=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const S=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=(0,f.getGrantedConsent)(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=h(e,(0,f.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,w,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),(0,f.emitStep)(e,a),!0});return{allowed:r,skipped:s}},E=e.consent,{allowed:O,skipped:_}=S(v);if(p(_),!O.length)return l(),{id:o,destination:i,queue:v};const q=new Set(i.queuePush);let C=!1;try{C=await At(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),d("transport-failure")}if(!C)return l(),{id:o,destination:i,queue:v};if(Ue(i))return l(),p(O),{id:o,destination:i,queue:O};const I=[];if(e.consent!==E){const t=S(O.map(t=>({...t,consent:e.consent})));O.splice(0,O.length,...t.allowed),I.push(...t.skipped)}const j=i.queuePush||[],x=j.filter(e=>!q.has(e));if(x.length){i.queuePush=j.filter(e=>q.has(e));const t=S(x.map(t=>({...t,consent:e.consent})));O.push(...t.allowed),I.push(...t.skipped)}if(p(I),!O.length)return l(),I.length?{id:o,destination:i,queue:I}:{id:o,destination:i,skipped:!0};let D,A;i.dlq||(i.dlq=[]);const R=i.config.before,M=i.config.next,$=i.config?.cache,K=$?(0,f.compileCache)($):void 0,W=K?y(K,e):void 0,H=b(i.config?.state),Q=H?.filter(e=>"get"===e.mode),Y=H?.filter(e=>"set"===e.mode);let X=0,J=0,Z=0;return await Promise.all(O.map(async t=>{let a,c;if(t.user=(0,f.assign)(r,t.user),K?.stop&&W){const e=(0,f.createMappingRoot)(w,t),n=await(0,f.checkCache)(K,W,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:w}],d=n.respond;if(void 0!==R){const r=`destination.${o}.before`,i=await de(e,s,R,t,w,n.respond,r);if(0===i.copies.length){const n=h(e,(0,f.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,w,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},(0,f.emitStep)(e,n),t}i.respond&&(d=i.respond),u=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const l=async(t,n,r)=>{let a=r,u=!1;if(K&&!K.stop&&W){const e=(0,f.createMappingRoot)(n,t??void 0),o=await(0,f.checkCache)(K,W,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}Q&&Q.length>0&&t&&(t=await k(e,Q,t,n));const l=Date.now();let p=!1;const g=await(0,f.tryCatchAsync)(Rt,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...N(n),event:t.name}),D=n,p=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??U},u=P(s,[t,n],c);if(u.dropped>0){z(e,a);const t=G(e.status,(0,f.stepId)("destination",a),"dlq",u.dropped);T(s,e.logger.scope(i.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:c.max,droppedCount:t})}else s.length<c.max&&B(s)})(e,i,o,t,n,d);if(X+=Date.now()-l,a&&W&&void 0===i.config.mock&&(u?(0,f.storeCache)(W,a.key,g??!0,a.ttl):void 0===c&&(c=g??!0)),!p&&!kt(g)&&Y&&Y.length>0&&t&&(t=await k(e,Y,t,n)),void 0===g||kt(g)||(A=g),kt(g)&&J++,!p&&M){void 0!==g&&(n._response=g);const r=await de(e,s,M,t,n,d,`destination.${o}.next`);r.respond&&(d=r.respond)}return!0};for(const e of u)await l(e.event,e.ingest,a)&&Z++;return a&&W&&void 0!==c&&void 0===i.config.mock&&(0,f.storeCache)(W,a.key,c,a.ttl),t})),{id:o,destination:i,error:D,response:A,totalDuration:X,batchedCount:J,allowedCount:O.length,pushedCount:Z,canonicalId:a,breakerConfig:u}})),a={},c={},u={};for(const t of i){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};z(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 i=t.breakerConfig,d=t.canonicalId?(0,f.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&d&&V(e.status.breakers,d,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,u[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,l("transport-failure");else if(t.queue&&t.queue.length)c[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,c=t.pushedCount??i;(Math.max(0,c-n)>0||0===i)&&(a[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,l("success"))}}return Mt({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}async function xt(e,t,n,o){const r=await async function(e,t,n,o){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:o,config:t.config,env:Tt(t.env,t.config.env),reportError:Q(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;(0,f.emitStep)(e,h(e,(0,f.stepId)("destination",o),"destination","init","",a));try{c=await(0,f.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=h(e,(0,f.stepId)("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=m(t),(0,f.emitStep)(e,r),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===r)return!1;if(t.config=r,t.queueOn?.length){const n=Pe(e);!function(e){const t=e.queueOn?.find(({type:e})=>Ie(e));t&&et(e,t.type),Xe.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await We(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Ie(n)&&Je(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Xe.get(t);Xe.delete(t),n?.held&&tt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}var Dt=new WeakMap;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=Dt.get(t);if(r)return r;const s=xt(e,t,t.init,n);Dt.set(t,s);try{return await s}finally{Dt.delete(t)}}return!0}async function Rt(e,t,n,o,r,s){const{config:i}=t,a=await(0,f.processEventMapping)(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...Tt(t.env,i.env),...s?{respond:s}:{}},reportError:Q(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,p=void 0!==l?.batch,v=p?a.mappingKey||"* *":St;if((p||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[v]){const o={key:v,entries:[],events:[],data:[]},r=Et(l?.batch),s=Et(i.batch),a=r.wait??s.wait??yt,c=r.size??s.size??wt,d=r.age??s.age??yt,w=Tt(t.env,i.env),y=async()=>{const o=t.batches[v],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 a=s.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...w,...a.respond?{respond:a.respond}:{}},reportError:Q(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=z(e,d),p=F(t.config.breaker),y=(0,f.stepId)("destination",d),b=t=>{p&&V(e.status.breakers,y,t,p.threshold,p.cooldown)},k=Date.now(),S=new Map;let E,O=!1;const _=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??U};let s=0;for(const e of n){s+=P(o,e,r).dropped}if(s>0){const t=G(e.status,(0,f.stepId)("destination",d),"dlq",s);T(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&B(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let q=s.entries.length;const C=ge(i.timeout),I=await(0,f.tryCatchAsync)((o,r)=>me(Promise.resolve((0,f.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),C,`Destination "${n}" batch delivery timed out after ${C}ms`),e=>{q=0,O=!0,E=e,_(s.entries.map(t=>[t.event,e])),b("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(j=I,(0,f.isObject)(j)&&Array.isArray(j.failed)&&I.failed.length>0){const e=[];for(const t of I.failed){const n=s.entries[t.index];if(!n||S.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);S.set(t.index,o),e.push([n.event,o])}if(e.length>0){_(e),q=Math.max(0,s.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}u.error("Push batch partial failure",{failed:e.length,delivered:q,entries:s.entries.length,causes:[...t.values()]})}}var j;const x=Date.now();s.entries.forEach((t,o)=>{const r=O||S.has(o),i=g(t.event,t.ingest,e),a=h(e,(0,f.stepId)("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",x,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=x-k,r){const e=O?E:S.get(o);a.error=m(e)}(0,f.emitStep)(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),q>0&&(l.count+=q,l.lastAt=Date.now(),e.status.out+=q,b("success"))},b=(0,f.debounce)(y,{wait:a,size:c,age:d});t.batches[v]={batched:o,isDefault:!p,batchFn:()=>{b()},flush:async()=>{await b.flush()}}}const c=t.batches[v];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,f.isDefined)(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",w=g(o,r,e),y=Date.now(),b=h(e,(0,f.stepId)("destination",n),"destination","in",d,y,w);a.mappingKey&&(b.mappingKey=a.mappingKey),a.event.consent&&(b.consent={...a.event.consent}),b.inEvent=a.event,(0,f.emitStep)(e,b);const k=h(e,(0,f.stepId)("destination",n),"destination","out",d,y,w);a.mappingKey&&(k.mappingKey=a.mappingKey),k.outEvent=a.event,k.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,f.emitStep)(e,k);const S=t.config.id||n,E=z(e,S);return E.inFlightBatch=(E.inFlightBatch??0)+1,c.batchFn(),bt}{let s;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=q({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[f.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=g(o,r,e),p=Date.now(),v=h(e,(0,f.stepId)("destination",n),"destination","in",c,p,l);a.mappingKey&&(v.mappingKey=a.mappingKey),a.event.consent&&(v.consent={...a.event.consent}),v.inEvent=a.event,(0,f.emitStep)(e,v);try{const o=ge(i.timeout),r=await me(Promise.resolve((0,f.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),g=Date.now(),m=h(e,(0,f.stepId)("destination",n),"destination","out",c,g,l);return m.durationMs=g-p,m.outEvent=a.event,x(m,s),(0,f.isDefined)(r)&&(m.meta={...m.meta,response:r}),a.mappingKey&&(m.mappingKey=a.mappingKey),(0,f.emitStep)(e,m),u.debug("push done"),r}catch(t){const o=Date.now(),r=h(e,(0,f.stepId)("destination",n),"destination","error",c,o,l);throw r.durationMs=o-p,r.error=m(t),x(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,f.emitStep)(e,r),t}}}function Mt(e){return{ok:!e?.failed,...e}}function Pt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=J(e,"before"),{config:a}=J({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=Tt(t.env,o);return{...t,config:c,env:u}}async function $t(e,t={}){const n={};for(const[o,r]of Object.entries(t))S(e,(0,f.stepId)("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=Pt(r);return n}function Tt(e,t){return e||t?t?e&&(0,f.isObject)(e)&&(0,f.isObject)(t)?{...e,...t}:t:e:{}}var Bt=require("@walkeros/core"),Kt=require("@walkeros/core"),Wt=5e3;async function Lt(e){const t=e.logger;await Ft(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`)),Wt)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Ft(e.destinations,"destination",t),await Ft(e.transformers,"transformer",t),await Ft(e.stores,"store",t)}async function Ft(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",i=n.scope(s),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([r(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),Wt)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Vt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Ht(e,t,n){let o,r,s=!1;const i=[],a=Pe(e);try{return await async function(){switch(t){case c.Commands.Config:(0,Kt.isObject)(n)&&((0,Bt.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case c.Commands.Consent:if((0,Kt.isObject)(n)){const{update:t}=d(e,n);Vt(e,c.Commands.Consent),r=t,s=!0}break;case c.Commands.Custom:(0,Kt.isObject)(n)&&(e.custom=(0,Bt.assign)(e.custom,n),Vt(e,c.Commands.Custom),r=n,s=!0);break;case c.Commands.Destination:(0,Kt.isObject)(n)&&"code"in n&&(0,Kt.isObject)(n.code)&&(o=await Ot(e,n));break;case c.Commands.Globals:(0,Kt.isObject)(n)&&(e.globals=(0,Bt.assign)(e.globals,n),Vt(e,c.Commands.Globals),r=n,s=!0);break;case c.Commands.Hook:if((0,Kt.isObject)(n)&&(0,Bt.isString)(n.name)&&(0,Bt.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case c.Commands.On:if((0,Kt.isObject)(n)&&(0,Bt.isString)(n.type)){const{type:t,rules:o}=n;await Ke(e,t,o)}break;case c.Commands.Ready:s=!0;break;case c.Commands.Run:o=await Xt(e,n,i),s=!0;break;case c.Commands.Session:s=!0;break;case c.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Lt(e));break;case c.Commands.User:(0,Kt.isObject)(n)&&((0,Bt.assign)(e.user,n,{shallow:!1}),Vt(e,c.Commands.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Mt({ok:!1})}if(s){const n=await mt(e,t,void 0,r);i.push(...n.deliveries),_t(n.deliveries);const s=Ct(await It(e),await qt(e,i));if(o&&!1===o.ok){const e={...s.failed??{},...o.failed??{}};o={...s,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=s}return o||Mt({ok:!0})}()}finally{a()}}function Ut(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function zt(e,t,n){return Nt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Gt(e,t,n){return Nt(e,Ut(e,t),n,{globals:{},user:{},consent:{}})}function Nt(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new Bt.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new Bt.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new Bt.InvalidEventError("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${s} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:m=(0,Bt.getSpanId)(),trigger:v="",entity:w=s,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),O=S.trace??n?._meta.trace??e.trace,_={...S,count:E};void 0!==O&&(_.trace=O);const q=e.name??S.platform??"default",C=e.release??"4.8.1-next-1792019907609";_.release={...S.release,[q]:C};return{name:c,data:u,context:d,globals:(0,Bt.assign)(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:_}}function Qt(e,t,n){return zt(e,Ut(e,t),n)}async function Yt(e,t){const n=[];return Ct(await Xt(e,t,n),await qt(e,n))}async function Xt(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,Bt.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,Bt.assign)(e.consent,t.consent),Vt(e,c.Commands.Consent)),t.user&&(e.user=(0,Bt.assign)(e.user,t.user),Vt(e,c.Commands.User)),t.globals&&(e.globals=(0,Bt.assign)(e.config.globalsStatic||{},t.globals),Vt(e,c.Commands.Globals)),t.custom&&(e.custom=(0,Bt.assign)(e.custom,t.custom),Vt(e,c.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await ke(e);const o=await pt(e);let r=!0;const s={};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:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(s,t.failed)}}_t(o);const i=await It(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}var Jt="collector.next";async function Zt(e,t,n={}){const o=n.ingest??(0,l.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await de(e,e.transformers||{},r,t,o,n.respond,Jt),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),v(e,t,o,{reason:"dropped",by:s.droppedBy,at:Jt}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:Gt(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}var en=require("@walkeros/core"),tn=require("@walkeros/core"),nn=require("@walkeros/core");function on(e,t){const n=(0,nn.useHooks)(async(n,o={})=>await(0,nn.tryCatchAsync)(async()=>{if(!e.allowed){const t=M(e.config.queueMax),r=P(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=G(e.status,"collector.preRun","queue",r.dropped);T(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&B(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:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f=a,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;let h=i??(0,nn.createIngest)(s||"unknown");if(c){const t=await(0,nn.processEventMapping)(p,c,e);if(t.ignore)return Mt({ok:!0});if(c.consent){const n=t.event.consent;if(!(0,nn.getGrantedConsent)(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),v(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),Mt({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await de(e,e.transformers||{},u,p,h,f,n);if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),v(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),Mt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Mt({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=zt(e,t(n.event),n.ingest);return It(e,o,{id:s,ingest:n.ingest,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+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return n[0]??Mt({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=Qt(e,p,h),w=await It(e,m,{id:s,ingest:h,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 w},t=>{if(t instanceof nn.FatalError)throw t;if(t instanceof nn.InvalidEventError){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",{...N(t),event:n.name}),Mt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,nn.getSpanId)()},s="string"==typeof r.id?r.id:"",i=g(r,o?.ingest,e),a=Date.now(),c=h(e,"collector.push","collector","in",s,a,i);c.inEvent=r,(0,nn.emitStep)(e,c);try{const t=await n(r,o),c=Date.now(),u=h(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,(0,nn.emitStep)(e,u),t}catch(t){const n=Date.now(),o=h(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=m(t),(0,nn.emitStep)(e,o),t}}}var rn=require("@walkeros/core");var sn=require("@walkeros/core"),an="elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })";var cn=require("@walkeros/core"),un=1e4,dn=6e4,ln=.8;function fn(e={}){const t=e.maxEntries??un,n=e.lowWaterMark??ln,o=e.sweepIntervalMs??dn,r=Math.floor(t*n),s=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;o>0&&(a=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++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.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),i.evictions_ttl++,void i.misses++):(s.delete(e),s.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!s.has(e);a||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.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++}i.evictions_entries+=n}()},delete(e){s.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),s.clear()}}}var pn=require("@walkeros/core");function gn(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=h(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,pn.emitStep)(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?(0,pn.compileMatcher)(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=(0,pn.readCacheEnvelope)(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 i=p.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(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,(0,pn.wrapCacheEnvelope)(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,a),a},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),(0,pn.wrapCacheEnvelope)(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(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,N(n)):console.warn(o,n)}}function hn(e,t,n){const o=`store.${n}`,r=(0,cn.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,cn.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,cn.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=h(e,o,"store","in","",n);s.meta={op:"get",key:t},(0,cn.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=h(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},(0,cn.emitStep)(e,a),s}catch(r){const s=Date.now(),i=h(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=m(r),(0,cn.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=h(e,o,"store","in","",i);a.meta={op:"set",key:t},(0,cn.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=h(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},(0,cn.emitStep)(e,c)}catch(n){const r=Date.now(),s=h(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=m(n),(0,cn.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=h(e,o,"store","in","",n);r.meta={op:"delete",key:t},(0,cn.emitStep)(e,r);try{await i(t);const r=Date.now(),s=h(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},(0,cn.emitStep)(e,s)}catch(r){const s=Date.now(),i=h(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=m(r),(0,cn.emitStep)(e,i),r}}}async function mn(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i,reportError:Q(e,"store",o,a)},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 i=t[s];if("BLACK"===i)return;if("GRAY"===i){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 a=e[s].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${s}" cache.store references "${a}", which is not declared in flow.stores`);r(a)}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,i;void 0!==r.store?(s=n[r.store],i=r.store):(n.__cache||(n.__cache=fn()),s=n.__cache,i="__cache");const a=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=gn(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&hn(e,o,t);return n}async function vn(e){const t=(0,tn.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,tn.createLogger)(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),void 0!==e.next&&(t.next=e.next),s.push=on(s,e=>Ut(s,e)),s.command=function(e,t){return(0,rn.useHooks)(async(n,o,r)=>await(0,rn.tryCatchAsync)(async()=>await t(e,n,o,r),t=>{if(t instanceof rn.FatalError)throw t;return e.status.failed++,e.logger.error("command failed",{...N(t),command:n}),Mt({ok:!1})})(),"Command",e.hooks,e.logger)}(s,Ht),s.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error(an,{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,r,...s)=>{if("string"==typeof t&&t.startsWith("walker ")){o(s)&&n(t);const i=t.replace("walker ","");return e.command(i,r)}let i;if("string"==typeof t)i={name:t},(0,sn.isObject)(r)?i.data=r:void 0!==r&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return Mt({ok:!1});i={...t},void 0!==r&&n(String(i.name))}return o(s)&&n(String(i.name)),e.push(i)}}(s);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await mn(s,i),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)}}}(i,s.stores,e)):Object.keys(i).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=fn()),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;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=(0,X.validateStepEntry)(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=J(r,"before"),{config:a}=J({...r,config:i},"next"),c=Object.keys(s).length>0?{...a,env:s}:a,{cache:u}=r,d=u?{...c,cache:u}:c,l=r.config?.state??r.state;S(e,(0,X.stepId)("transformer",o),l);const f=void 0!==l&&void 0===d.state?{...d,state:l}:d,p=e.logger.scope("transformer").scope(o),g={collector:e,logger:p,id:o,ingest:(0,X.createIngest)(o),config:f,env:s,reportError:Q(e,"transformer",o,p)},h=(0,X.getTransformerMapping)(r);for(const t of(0,X.getTransformerMappingWarnings)(r))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await(0,X.processEventMapping)(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);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!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(s,e.transformers||{}),s}var wn=globalThis;function yn(e){try{const t=wn.window;if(!t)return;t.localStorage.getItem(en.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(en.OBSERVE_STORAGE_KEY)}catch{}}function bn(e,t){return void 0===t?e:n=>e({...n,release:t})}function kn(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=wn.window,t=wn.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(en.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return wn.window?.localStorage.getItem(en.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,en.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),yn(r)):e.logger.warn("observe: malformed credential ignored"));if(s.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{wn.window?.localStorage.setItem(en.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=wn.window,t=wn.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),r=o>=0?n.slice(o):"",s=o>=0?n.slice(0,o):n,i=s.indexOf("?"),a=i>=0?s.slice(0,i):s,c=new t(i>=0?s.slice(i+1):"");c.delete(en.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,en.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(yn(r),i&&e.observers.delete(i))}});i=(0,en.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(bn(a,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(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add((0,en.createTelemetryObserver)(bn((0,en.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function Sn(e){const t=e??{},n=await vn(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?kn(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await be(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}//# sourceMappingURL=index.js.map
1
+ "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s={};((e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})})(s,{Code:()=>i,Commands:()=>a,Const:()=>c,DEFAULT_BREAKER_COOLDOWN_MS:()=>W,DEFAULT_BREAKER_THRESHOLD:()=>K,DEFAULT_DLQ_MAX:()=>U,ELB_IGNORED_ARGUMENTS:()=>an,addDestination:()=>Ot,buildReportError:()=>Q,bumpDropped:()=>G,callDestinationOn:()=>We,commonHandleCommand:()=>Ht,completeEvent:()=>Gt,createEvent:()=>zt,createPush:()=>on,createPushResult:()=>Mt,destinationInit:()=>At,destinationPush:()=>Rt,enrichEvent:()=>Qt,ensureDestStatus:()=>z,enterCascade:()=>Pe,errorMeta:()=>N,fireCallbacks:()=>ot,flushSourceQueueOn:()=>ve,getCacheStore:()=>y,initDestinations:()=>$t,initSource:()=>ye,initSources:()=>be,isBreakerProbePermitted:()=>H,isRequireSatisfied:()=>xe,isSourceStarted:()=>we,isStateDelivery:()=>Ie,isStatePresent:()=>je,mergeEnvironments:()=>Tt,on:()=>Ke,onApply:()=>gt,prepareEvent:()=>Ut,processConsent:()=>d,pushToDestinations:()=>It,redeliverStateAtRun:()=>ft,registerDestination:()=>Pt,resolveBreakerConfig:()=>F,runCollector:()=>Yt,runCollectorNext:()=>Zt,runTransformerBefore:()=>le,runTransformerChain:()=>de,setMark:()=>Ae,shouldDeliver:()=>Re,startFlow:()=>Sn,transformerInit:()=>Z,transformerPush:()=>ee,wrapEnv:()=>q}),module.exports=(e=s,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var i={},a={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"},c={Commands:a,Utils:{Storage:{Cookie:"cookie",Local:"local",Session:"session"}}},u=require("@walkeros/core");function d(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,u.assign)(e.consent,n),{update:n}}var l=require("@walkeros/core"),f=require("@walkeros/core"),p=require("@walkeros/core");function g(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function h(e,t,n,o,r,s=Date.now(),i){const a={flowId:e.name??"default",stepId:t,stepType:n,phase:o,eventId:r,timestamp:new Date(s).toISOString(),elapsedMs:s-e.status.startedAt};return i?.traceId&&(a.traceId=i.traceId),i?.sourceId&&(a.sourceId=i.sourceId),i?.parentEventId&&(a.parentEventId=i.parentEventId),a}function m(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function v(e,t,n,o){e.status.in++;const r=h(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):r.meta={by:o.by??"route",at:o.at},(0,p.emitStep)(e,r)}var w=require("@walkeros/core");function y(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function b(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?(0,w.compileState)(e):void 0}function k(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,w.applyState)(t,t=>function(e,t){return e?t.stores[e]:t.stores.__cache}(t,e),n,e,o):Promise.resolve(n)}function S(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}var E=require("@walkeros/core"),O=8;function _(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=O||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))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(_(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:_(s,t,n+1);return r}function q(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:_(t,r,1);const s=(0,E.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}var C=6;function I(e,t){try{return e[t]}catch{return"[unreadable]"}}function j(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>=C)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(I(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 x(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=function(e){return e.map(e=>({fn:e.fn,args:j(e.args),ts:e.ts}))}(t))}var D=require("@walkeros/core"),A=require("@walkeros/core"),R=require("@walkeros/core");function M(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function P(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 $=new WeakMap;function T(e,t,n,o){$.get(e)||($.set(e,!0),t.warn(n,o))}function B(e){$.delete(e)}var K=5,W=3e4,L=()=>Date.now();function F(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:W}:{threshold:e.threshold??K,cooldown:e.cooldown??W}}function V(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=L()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=L()+r)))}function H(e,t){return!e||("closed"===e.state||"half-open"===e.state||void 0!==e.openUntil&&t>=e.openUntil)}var U=100;function z(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 G(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 N(e){const t={error:e instanceof Error?e.message:String(e)};if(e instanceof Error&&e.name&&"Error"!==e.name&&(t.name=e.name),"object"==typeof e&&null!==e&&"code"in e){const n=e;"number"!=typeof n.code&&"string"!=typeof n.code||(t.code=n.code)}return t}function Q(e,t,n,o,r){const s=(0,R.stepId)(t,n);return(t,i)=>{try{if(i)return r?function(e,t,n,o,r,s){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??U},c=P(i,[o,r],a);if(c.dropped>0){const t=G(e.status,(0,R.stepId)("destination",n),"dlq",c.dropped);T(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&B(i);const u=z(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=F(t.config.breaker);if(d){const o=t.config.id||n;V(e.status.breakers,(0,R.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...N(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",N(t))}catch{}}}var Y=require("@walkeros/core"),X=require("@walkeros/core");function J(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function Z(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:(0,X.createIngest)(n),config:t.config,env:fe(t.config.env),reportError:Q(e,"transformer",n,r)};r.debug("init");const i=await(0,X.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function ee(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...fe(t.config.env),...s?{respond:s}:{}},reportError:Q(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=g(o,r,e),l=Date.now(),f=h(e,(0,X.stepId)("transformer",n),"transformer","in",u,l,d);f.inEvent=o,(0,X.emitStep)(e,f);try{const r=await(0,X.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=h(e,(0,X.stepId)("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,(0,X.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=h(e,(0,X.stepId)("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=m(t),(0,X.emitStep)(e,r),t}}var te=256;function ne(e){return"string"==typeof e.id?e.id:""}function oe(e,t){const n=ne(e);return""!==n&&""===ne(t)?{...t,id:n}:t}function re(e,t,n,o){const r=function(e){return{...e,_meta:{...e._meta,path:[...e._meta.path]}}}(n),s=(0,X.clone)(t),i=ne(e);if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const a=ne(s);return""!==a&&a!==i||(s.id=(0,X.deriveSpanId)(i,o)),{event:s,ingest:r}}function se(e,t){return{copies:e,respond:t}}function ie(e,t){if(void 0===t)return e.rest;const n=e.ownNext?e.rest.slice(1):e.rest;return[{route:t,ancestry:e.ancestry},...n]}async function ae(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,X.tryCatchAsync)(ce,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,N(t)),{copies:[]}))(e,t))),r=[];let s,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===s&&(s=e.droppedBy):r.push(...e.copies)}),0===r.length?{copies:r,respond:i,...a?{stopped:!0}:{},...void 0!==s?{droppedBy:s}:{}}:se(r,i)}async function ce(e,t){const{ingest:n}=t;let{stack:o,event:r,respond:s}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=(0,X.advanceChain)(o,(0,X.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return se([{event:r,ingest:n}],s);if("stop"===i.kind)return{copies:[],respond:s,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=r;return ae(e,i.branches.map((e,o)=>({stack:e,...re(t,t,n,o),respond:void 0})),s)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await ue(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return ae(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function ue(e,t,n,o,r,s){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=r;const p=(e=t.rest)=>({kind:"continue",event:oe(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return i.logger.warn(`Transformer not found: ${u}`),p();const h=d.config?.cache,m=h?(0,X.compileCache)(h):void 0,v=m?y(m,i):void 0;let w=s?.cacheMiss;if(!s){if(o._meta.path.length>te)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});o._meta.hops++,o._meta.path.push(u);if(!await(0,X.tryCatchAsync)(Z,e=>{if(e instanceof X.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...N(e)}),!1})(i,d,u))return g({copies:[],respond:f});if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(m&&v){const e=await(0,X.checkCache)(m,v,(0,X.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value){if(l=e.value,m.stop){return g({copies:[{event:oe(n,l),ingest:o}],respond:f,stopped:!0})}return p()}"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await le(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const S=b(d.config?.state),E=S?.filter(e=>"get"===e.mode),O=S?.filter(e=>"set"===e.mode),_=async e=>O&&0!==O.length?k(i,O,e,o):e;E&&E.length>0&&(l=await k(i,E,l,o));const q=await(0,X.tryCatchAsync)(ee,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",N(e)),!1))(i,d,u,l,o,f);if(!1===q)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(q)&&1!==q.length){if(0===q.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<q.length;r++){const s=q[r],i=await _(s.event||e);n.push({stack:ie(t,s.next),...re(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const C=Array.isArray(q)?q[0]:q;let I;return C&&"object"==typeof C&&(C.respond&&(f=C.respond),C.event&&(l=C.event),I=C.next),l=await _(l),w&&v&&(0,X.storeCache)(v,w.key,l,w.ttl),p(ie(t,I))}async function de(e,t,n,o,r,s,i){const a=r??(0,X.createIngest)("string"==typeof n?n:"chain");return void 0===n?se([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),ce({collector:e,transformers:t,chainContext:i},{stack:(0,X.isChainContinuation)(n)?n:(0,X.startChain)(n),event:o,ingest:a,respond:s}))}async function le(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await de(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}function fe(e){return e&&(0,X.isObject)(e)?e:{}}var pe=1e4;function ge(e){return"number"==typeof e&&e>0?e:pe}var he=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function me(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new he(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function ve(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){if(Ie(n)&&!Re(e,t,n))continue;const o=t.on;let i=!1;await(0,Y.tryCatchAsync)(()=>me(Promise.resolve(o(n,s)),pe,`Source "${r}" on(${n}) did not settle within ${pe}ms`),t=>{if(t instanceof Y.FatalError)throw t;t instanceof he?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...N(t)})})(),Ie(n)&&!i&&Ae(e,t,n)}}function we(e){return Boolean(e.config.init)&&!e.config.require?.length}async function ye(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=r.state??n.state,f=b(l);S(e,(0,Y.stepId)("source",t),l);const p=u,g=p?(0,Y.compileCache)({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),w=async(n,o,s)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,Y.getSpanId)()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await de(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return v(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),Mt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),d=o.copies}if(g){const t=y(g,e);if(t){const n=(0,Y.createMappingRoot)(s.ingest),o=await(0,Y.checkCache)(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(0,Y.applyUpdate)(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,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{(0,Y.storeCache)(t,u,n,d),a?i=(async()=>{const t=await(0,Y.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,Y.storeCache)(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await k(e,f,t.event,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of d)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:s.respond,mapping:r,preChain:a});return i&&await i,l},E=async n=>{const o=(0,Y.createIngest)(t),s=(0,Y.parseTraceparent)((0,Y.isScope)(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 i=await(0,Y.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},O=e.logger.scope("source").scope(t),_={...s,push:async(e,n={})=>{const o={ingest:(0,Y.createIngest)(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:O},q={collector:e,logger:O,id:t,config:r,env:_,withScope:async(e,t,n)=>{const o={ingest:await E(e),respond:t};return n({..._,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:Q(e,"source",t,O)},C=await(0,Y.tryCatchAsync)(o,n=>{if(n instanceof Y.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...N(n)})})(q);if(!C)return;const I=C.type||"unknown",j=e.logger.scope(I).scope(t);return _.logger=j,i&&(C.config={...C.config,primary:i}),C}async function be(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await ye(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(0,Y.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof Y.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...N(n)})})(),o||(n.config.init=!0,we(n)&&await ve(e,n,t))}return await ke(e),n}async function ke(e){for(const[t,n]of Object.entries(e.sources)){if(we(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!xe(e,t));r.length!==o.length&&(n.config.require=r,we(n)&&await ve(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=>!xe(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Pt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await dt(e,s,t)}}function Se(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 Ee=!1;function Oe(){Ee||(Ee=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function _e(e,t,n,o){if(n instanceof D.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...N(n)})}var qe=["consent","user","globals","custom"];function Ce(e){return qe.includes(e)}function Ie(e){return Ce(e)}function je(e,t){return Ce(t)&&Object.keys(e[t]).length>0}function xe(e,t){if(Ce(t))return je(e,t);switch(t){case c.Commands.Run:case c.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function De(e,t){return e.cellVersion?.[String(t)]??0}function Ae(e,t,n){nt(e,t,n,De(e,n))}function Re(e,t,n){return e.allowed&&De(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)}var Me=8;function Pe(e){const t=e.cascade;if(t&&!$e.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,$e.set(n,($e.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=($e.get(n)||1)-1;t>0?$e.set(n,t):($e.delete(n),e.cascade===n&&(e.cascade=void 0))}}var $e=new WeakMap;function Te(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),i=(r[s]||0)+1;return r[s]=i,i<=Me||(i===Me+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Be(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function Ke(e,t,n){if(!Se(e))return void Oe();const o=e.on,r=o[t]||[],s=(0,D.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,ot(e,t,s)}async function We(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=Ie(o);if(i&&(Le.get(t)||Fe.has(t)))return Je(e,t,o),Le.get(t)||Ve.add(t),!1;const a=i?De(e,o):0,c=i&&function(e,t,n,o){if(Qe.get(t)?.has(String(n)))return!0;const r=e.delivery?.get(t)?.[String(n)];return void 0===r||r<o-1}(e,t,o,a)?rt(e,o):r,u=t.type||"unknown",d=e.logger.scope(u).scope("on").scope(o),l={collector:e,logger:d,id:n,config:t.config,data:c,env:Tt(t.env,t.config.env),reportError:Q(e,"destination",n,d,t)};i&&(et(t,o),function(e,t,n){let o=Ge.get(e);o||(o={},Ge.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),Fe.add(t));const f=ge(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await(0,A.tryCatchAsync)(()=>(p=Promise.resolve(s(o,l)),me(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof he&&(h=!0),_e(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){Fe.delete(t),m&&Ve.delete(t);const r=Qe.get(t);g?(nt(e,t,o,a),r?.delete(String(o))):Je(e,t,o),h?function(e,t,n,o,r,s,i){Le.set(t,(Le.get(t)||0)+1);const a=()=>{const s=(Le.get(t)||0)-1;s>0?Le.set(t,s):Le.delete(t),Ye(t,o),Ne(t,o,r),tt(e,t),i.debug("late settle after timeout"),Ve.delete(t),e.allowed&&e.destinations[n]===t&&function(e,t,n,o){(0,A.tryCatchAsync)(async()=>{await dt(e,t,n),!Ue(t)&&t.queuePush?.length&&await It(e,void 0,{},{[n]:t})},e=>{o.error("state recovery failed",N(e))})()}(e,t,n,i)};s.then(a,a)}(e,t,n,o,a,p,d):(Ne(t,o,a),tt(e,t))}}return i&&!h&&Ve.delete(t)&&await dt(e,t,n),g}var Le=new WeakMap,Fe=new WeakSet,Ve=new WeakSet;var He=new WeakMap;function Ue(e){return He.get(e)}var ze=new WeakMap,Ge=new WeakMap;function Ne(e,t,n){const o=Ge.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Qe=new WeakMap;function Ye(e,t){const n=Qe.get(e);n?n.add(String(t)):Qe.set(e,new Set([String(t)]))}var Xe=new WeakMap;function Je(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Ye(t,n),He.set(t,{type:n,since:Date.now()})}function Ze(e,t){return!!Qe.get(t)?.size||qe.some(n=>je(e,n)&&Re(e,t,n))}function et(e,t){ze.set(e,(ze.get(e)||0)+1),He.set(e,{type:t,since:Date.now()})}function tt(e,t){const n=(ze.get(t)||0)-1;n>0?ze.set(t,n):ze.delete(t),function(e,t){if(!He.has(t))return;if(ze.get(t))return;Ze(e,t)||He.delete(t)}(e,t)}function nt(e,t,n,o){let r=e.delivery.get(t);r||(r={},e.delivery.set(t,r));const s=String(n),i=r[s];(void 0===i||i<o)&&(r[s]=o)}function ot(e,t,n,o){if(!Se(e))return void Oe();const r=rt(e,t,o);if(n.length)switch(t){case c.Commands.Consent:!function(e,t,n){const o=n||e.consent,r=Be(e,c.Commands.Consent);t.forEach(t=>{Re(e,t,c.Commands.Consent)&&Te(e,t,c.Commands.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,A.tryCatch)(t[n],t=>_e(e,"consent",t,{key:n}))(o,r)}),Ae(e,t,c.Commands.Consent))})}(e,n,o);break;case c.Commands.Ready:!function(e,t){if(!e.allowed)return;const n=Be(e,c.Commands.Ready);t.forEach(t=>{(0,A.tryCatch)(t,t=>_e(e,"ready",t))(void 0,n)})}(e,n);break;case c.Commands.Run:!function(e,t){if(!e.allowed)return;const n=Be(e,c.Commands.Run);t.forEach(t=>{(0,A.tryCatch)(t,t=>_e(e,"run",t))(void 0,n)})}(e,n);break;case c.Commands.Session:!function(e,t){if(!e.session)return;const n=Be(e,c.Commands.Session);t.forEach(t=>{(0,A.tryCatch)(t,t=>_e(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Be(e,t),s=Ie(t);n.forEach(n=>{"function"==typeof n&&(s&&!Re(e,n,t)||s&&!Te(e,n,t)||((0,A.tryCatch)(n,n=>_e(e,"generic",n,{type:t}))(r,o),s&&Ae(e,n,t)))});break}}}function rt(e,t,n){if(Ce(t))return n||e[t];switch(t){case c.Commands.Session:return e.session;case c.Commands.Config:return n||e.config;default:return}}async function st(e,t,n,o,r){if(!t.on)return!1;if(Ie(o)&&!Re(e,t,o))return!1;if(Ie(o)&&!Te(e,t,o))return!1;const s=Ie(o);if(s&&it.has(t))return at.add(t),!1;const i=s?De(e,o):0;s&&it.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,A.tryCatchAsync)(()=>(u=Promise.resolve(a(o,r)),me(u,pe,`Source "${n}" on(${o}) did not settle within ${pe}ms`)),t=>{t instanceof he&&(d=!0),_e(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&it.delete(t)}if(s)if(d){const o=()=>{it.delete(t),at.delete(t),e.allowed&&e.sources[n]===t&&(0,A.tryCatchAsync)(()=>ct(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",N(t))})()};u.then(o,o)}else nt(e,t,o,i),at.delete(t)&&await ct(e,t,n);return!1===c}var it=new WeakSet,at=new WeakSet;async function ct(e,t,n){const o=Pe(e);try{for(const o of qe)await st(e,t,n,o,rt(e,o))}finally{o()}}async function ut(e,t,n,o,r){if(!t.on)return;const s=Ie(o);if(s&&!Re(e,t,o))return;const i=Ge.get(t)?.[String(o)];if(s&&void 0!==i&&i>=De(e,o))return;if(s&&!Te(e,t,o)){if(t.config.init)return void Je(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:rt(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),Ae(e,t,o),void Qe.get(t)?.delete(String(o))}const a=Xe.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(Ae(e,t,o),a&&!a.held&&(et(t,o),a.held=!0)));await We(e,t,n,o,r)}async function dt(e,t,n){if(!t.on)return;const o=Pe(e);try{for(const o of qe)(je(e,o)||Qe.get(t)?.has(String(o)))&&await ut(e,t,n,o,rt(e,o))}finally{o()}}function lt(e){return(ze.get(e)||0)>0}async function ft(e){const t=await pt(e);await Promise.all(t.map(({done:e})=>e))}async function pt(e){if(!Se(e))return Oe(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of qe)je(e,t)&&await ut(e,o,n,t,rt(e,t))};t.push(ht(n,o,r()))}for(const t of qe){if(!je(e,t))continue;const n=rt(e,t);ot(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>we(e)).map(([o,r])=>st(e,r,o,t,n)))}return t}async function gt(e,t,n,o){const{ok:r,deliveries:s}=await mt(e,t,n,o);return await Promise.all(s.map(({done:e})=>e)),r}function ht(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}async function mt(e,t,n,o){if(!Se(e))return Oe(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=rt(e,t,o),i=[];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)}o.on&&(we(o)?i.push(st(e,o,n,t,s)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(ht(n,o,ut(e,o,n,t,s)));let c=!1;if(i.length){c=(await Promise.all(i)).some(Boolean)}for(const[t,n]of Object.entries(e.sources))we(n)&&n.queueOn?.length&&await ve(e,n,t);const u=Object.values(e.sources).some(e=>!we(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await ke(e),ot(e,t,r,o),{ok:!c,deliveries:a}}var vt=1e3,wt=1e3,yt=3e4,bt=Object.freeze({batched:!0});function kt(e){return e===bt}var St=" batch-all";function Et(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function Ot(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,f.isFunction)(n.push))return Mt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=(0,f.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(S(e,(0,f.stepId)("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await ke(e);const n=e.destinations[l];return n?It(e,void 0,{},{[l]:n}):Mt({ok:!0})}const p={...n,config:d,env:Tt(n.env,r)};return e.destinations[l]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),await dt(e,p,l),It(e,void 0,{},{[l]:p})}function _t(e){for(const t of e)Ue(t.destination)&&(t.drain=!0)}async function qt(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!Ue(n)&&n.queuePush?.length&&e.destinations[t]===n)return It(e,void 0,{},{[t]:n})}))).filter(f.isDefined)}function Ct(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},r={...e.failed??{}};for(const e of t){for(const[t,r]of Object.entries(e.done??{}))n[t]=r,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))r[t]=n,delete o[t];Object.assign(o,e.queued??{})}const s={...e,ok:e.ok&&t.every(e=>e.ok)};return delete s.done,delete s.queued,delete s.failed,Object.keys(n).length&&(s.done=n),Object.keys(o).length&&(s.queued=o),Object.keys(r).length&&(s.failed=r),s}async function It(e,t,n={},o){if(!e.allowed)return Mt({ok:!1});if(!t)return jt(e,void 0,n,o);const r=await Zt(e,t,n);if(0===r.copies.length)return Mt({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await jt(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function jt(e,t,n,o){const{user:r}=e;if(t){const n=M(e.config.queueMax),o=P(e.queue,t,{max:n});if(o.dropped>0){const t=G(e.status,(0,f.stepId)("collector"),"queue",o.dropped);T(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&B(e.queue);e.status.in++}o||(o=e.destinations);const s=e.transformers||{},i=await Promise.all(Object.entries(o||{}).map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=(0,f.stepId)("destination",a),u=F(i.config.breaker);if(u&&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=L();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,c,u.cooldown))return{id:o,destination:i,skipped:!0};const d=t=>{u&&V(e.status.breakers,c,t,u.threshold,u.cooldown)},l=()=>{u&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,c)},p=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??vt};let a=0;for(const e of t){a+=P(n,e,s).dropped}if(a>0){z(e,r);const t=G(e.status,(0,f.stepId)("destination",r),"queue",a);T(n,e.logger.scope(i.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:r,cap:s.max,droppedCount:t})}else n.length<s.max&&B(n)};i.on&&i.config.init&&!Ue(i)&&!lt(i)&&Ze(e,i)&&await dt(e,i,o);const m=Ue(i);if(m&&!lt(i)&&Date.now()-m.since>=ge(i.config.timeout)&&await dt(e,i,o),Ue(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[(0,f.clone)(t)];return p(e),{id:o,destination:i,queue:e}}let v=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&v.push((0,f.clone)(t));const w=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,f.createIngest)("unknown");if(!v.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!v.length&&i.queueOn?.length){if(!(0,f.getGrantedConsent)(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await At(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),d("transport-failure")}if(Ue(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};v=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const S=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=(0,f.getGrantedConsent)(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=h(e,(0,f.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,w,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),(0,f.emitStep)(e,a),!0});return{allowed:r,skipped:s}},E=e.consent,{allowed:O,skipped:_}=S(v);if(p(_),!O.length)return l(),{id:o,destination:i,queue:v};const q=new Set(i.queuePush);let C=!1;try{C=await At(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),d("transport-failure")}if(!C)return l(),{id:o,destination:i,queue:v};if(Ue(i))return l(),p(O),{id:o,destination:i,queue:O};const I=[];if(e.consent!==E){const t=S(O.map(t=>({...t,consent:e.consent})));O.splice(0,O.length,...t.allowed),I.push(...t.skipped)}const j=i.queuePush||[],x=j.filter(e=>!q.has(e));if(x.length){i.queuePush=j.filter(e=>q.has(e));const t=S(x.map(t=>({...t,consent:e.consent})));O.push(...t.allowed),I.push(...t.skipped)}if(p(I),!O.length)return l(),I.length?{id:o,destination:i,queue:I}:{id:o,destination:i,skipped:!0};let D,A;i.dlq||(i.dlq=[]);const R=i.config.before,M=i.config.next,$=i.config?.cache,K=$?(0,f.compileCache)($):void 0,W=K?y(K,e):void 0,H=b(i.config?.state),Q=H?.filter(e=>"get"===e.mode),Y=H?.filter(e=>"set"===e.mode);let X=0,J=0,Z=0;return await Promise.all(O.map(async t=>{let a,c;if(t.user=(0,f.assign)(r,t.user),K?.stop&&W){const e=(0,f.createMappingRoot)(w,t),n=await(0,f.checkCache)(K,W,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:w}],d=n.respond;if(void 0!==R){const r=`destination.${o}.before`,i=await de(e,s,R,t,w,n.respond,r);if(0===i.copies.length){const n=h(e,(0,f.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,w,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},(0,f.emitStep)(e,n),t}i.respond&&(d=i.respond),u=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const l=async(t,n,r)=>{let a=r,u=!1;if(K&&!K.stop&&W){const e=(0,f.createMappingRoot)(n,t??void 0),o=await(0,f.checkCache)(K,W,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}Q&&Q.length>0&&t&&(t=await k(e,Q,t,n));const l=Date.now();let p=!1;const g=await(0,f.tryCatchAsync)(Rt,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...N(n),event:t.name}),D=n,p=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??U},u=P(s,[t,n],c);if(u.dropped>0){z(e,a);const t=G(e.status,(0,f.stepId)("destination",a),"dlq",u.dropped);T(s,e.logger.scope(i.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:c.max,droppedCount:t})}else s.length<c.max&&B(s)})(e,i,o,t,n,d);if(X+=Date.now()-l,a&&W&&void 0===i.config.mock&&(u?(0,f.storeCache)(W,a.key,g??!0,a.ttl):void 0===c&&(c=g??!0)),!p&&!kt(g)&&Y&&Y.length>0&&t&&(t=await k(e,Y,t,n)),void 0===g||kt(g)||(A=g),kt(g)&&J++,!p&&M){void 0!==g&&(n._response=g);const r=await de(e,s,M,t,n,d,`destination.${o}.next`);r.respond&&(d=r.respond)}return!0};for(const e of u)await l(e.event,e.ingest,a)&&Z++;return a&&W&&void 0!==c&&void 0===i.config.mock&&(0,f.storeCache)(W,a.key,c,a.ttl),t})),{id:o,destination:i,error:D,response:A,totalDuration:X,batchedCount:J,allowedCount:O.length,pushedCount:Z,canonicalId:a,breakerConfig:u}})),a={},c={},u={};for(const t of i){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};z(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 i=t.breakerConfig,d=t.canonicalId?(0,f.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&d&&V(e.status.breakers,d,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,u[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,l("transport-failure");else if(t.queue&&t.queue.length)c[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,c=t.pushedCount??i;(Math.max(0,c-n)>0||0===i)&&(a[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,l("success"))}}return Mt({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}async function xt(e,t,n,o){const r=await async function(e,t,n,o){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:o,config:t.config,env:Tt(t.env,t.config.env),reportError:Q(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;(0,f.emitStep)(e,h(e,(0,f.stepId)("destination",o),"destination","init","",a));try{c=await(0,f.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=h(e,(0,f.stepId)("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=m(t),(0,f.emitStep)(e,r),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===r)return!1;if(t.config=r,t.queueOn?.length){const n=Pe(e);!function(e){const t=e.queueOn?.find(({type:e})=>Ie(e));t&&et(e,t.type),Xe.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await We(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Ie(n)&&Je(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Xe.get(t);Xe.delete(t),n?.held&&tt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}var Dt=new WeakMap;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=Dt.get(t);if(r)return r;const s=xt(e,t,t.init,n);Dt.set(t,s);try{return await s}finally{Dt.delete(t)}}return!0}async function Rt(e,t,n,o,r,s){const{config:i}=t,a=await(0,f.processEventMapping)(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...Tt(t.env,i.env),...s?{respond:s}:{}},reportError:Q(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,p=void 0!==l?.batch,v=p?a.mappingKey||"* *":St;if((p||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[v]){const o={key:v,entries:[],events:[],data:[]},r=Et(l?.batch),s=Et(i.batch),a=r.wait??s.wait??yt,c=r.size??s.size??wt,d=r.age??s.age??yt,w=Tt(t.env,i.env),y=async()=>{const o=t.batches[v],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 a=s.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...w,...a.respond?{respond:a.respond}:{}},reportError:Q(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=z(e,d),p=F(t.config.breaker),y=(0,f.stepId)("destination",d),b=t=>{p&&V(e.status.breakers,y,t,p.threshold,p.cooldown)},k=Date.now(),S=new Map;let E,O=!1;const _=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??U};let s=0;for(const e of n){s+=P(o,e,r).dropped}if(s>0){const t=G(e.status,(0,f.stepId)("destination",d),"dlq",s);T(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&B(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let q=s.entries.length;const C=ge(i.timeout),I=await(0,f.tryCatchAsync)((o,r)=>me(Promise.resolve((0,f.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),C,`Destination "${n}" batch delivery timed out after ${C}ms`),e=>{q=0,O=!0,E=e,_(s.entries.map(t=>[t.event,e])),b("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(j=I,(0,f.isObject)(j)&&Array.isArray(j.failed)&&I.failed.length>0){const e=[];for(const t of I.failed){const n=s.entries[t.index];if(!n||S.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);S.set(t.index,o),e.push([n.event,o])}if(e.length>0){_(e),q=Math.max(0,s.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}u.error("Push batch partial failure",{failed:e.length,delivered:q,entries:s.entries.length,causes:[...t.values()]})}}var j;const x=Date.now();s.entries.forEach((t,o)=>{const r=O||S.has(o),i=g(t.event,t.ingest,e),a=h(e,(0,f.stepId)("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",x,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=x-k,r){const e=O?E:S.get(o);a.error=m(e)}(0,f.emitStep)(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),q>0&&(l.count+=q,l.lastAt=Date.now(),e.status.out+=q,b("success"))},b=(0,f.debounce)(y,{wait:a,size:c,age:d});t.batches[v]={batched:o,isDefault:!p,batchFn:()=>{b()},flush:async()=>{await b.flush()}}}const c=t.batches[v];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,f.isDefined)(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",w=g(o,r,e),y=Date.now(),b=h(e,(0,f.stepId)("destination",n),"destination","in",d,y,w);a.mappingKey&&(b.mappingKey=a.mappingKey),a.event.consent&&(b.consent={...a.event.consent}),b.inEvent=a.event,(0,f.emitStep)(e,b);const k=h(e,(0,f.stepId)("destination",n),"destination","out",d,y,w);a.mappingKey&&(k.mappingKey=a.mappingKey),k.outEvent=a.event,k.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,f.emitStep)(e,k);const S=t.config.id||n,E=z(e,S);return E.inFlightBatch=(E.inFlightBatch??0)+1,c.batchFn(),bt}{let s;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=q({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[f.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=g(o,r,e),p=Date.now(),v=h(e,(0,f.stepId)("destination",n),"destination","in",c,p,l);a.mappingKey&&(v.mappingKey=a.mappingKey),a.event.consent&&(v.consent={...a.event.consent}),v.inEvent=a.event,(0,f.emitStep)(e,v);try{const o=ge(i.timeout),r=await me(Promise.resolve((0,f.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),g=Date.now(),m=h(e,(0,f.stepId)("destination",n),"destination","out",c,g,l);return m.durationMs=g-p,m.outEvent=a.event,x(m,s),(0,f.isDefined)(r)&&(m.meta={...m.meta,response:r}),a.mappingKey&&(m.mappingKey=a.mappingKey),(0,f.emitStep)(e,m),u.debug("push done"),r}catch(t){const o=Date.now(),r=h(e,(0,f.stepId)("destination",n),"destination","error",c,o,l);throw r.durationMs=o-p,r.error=m(t),x(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,f.emitStep)(e,r),t}}}function Mt(e){return{ok:!e?.failed,...e}}function Pt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=J(e,"before"),{config:a}=J({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=Tt(t.env,o);return{...t,config:c,env:u}}async function $t(e,t={}){const n={};for(const[o,r]of Object.entries(t))S(e,(0,f.stepId)("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=Pt(r);return n}function Tt(e,t){return e||t?t?e&&(0,f.isObject)(e)&&(0,f.isObject)(t)?{...e,...t}:t:e:{}}var Bt=require("@walkeros/core"),Kt=require("@walkeros/core"),Wt=5e3;async function Lt(e){const t=e.logger;await Ft(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`)),Wt)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Ft(e.destinations,"destination",t),await Ft(e.transformers,"transformer",t),await Ft(e.stores,"store",t)}async function Ft(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",i=n.scope(s),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([r(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),Wt)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Vt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Ht(e,t,n){let o,r,s=!1;const i=[],a=Pe(e);try{return await async function(){switch(t){case c.Commands.Config:(0,Kt.isObject)(n)&&((0,Bt.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case c.Commands.Consent:if((0,Kt.isObject)(n)){const{update:t}=d(e,n);Vt(e,c.Commands.Consent),r=t,s=!0}break;case c.Commands.Custom:(0,Kt.isObject)(n)&&(e.custom=(0,Bt.assign)(e.custom,n),Vt(e,c.Commands.Custom),r=n,s=!0);break;case c.Commands.Destination:(0,Kt.isObject)(n)&&"code"in n&&(0,Kt.isObject)(n.code)&&(o=await Ot(e,n));break;case c.Commands.Globals:(0,Kt.isObject)(n)&&(e.globals=(0,Bt.assign)(e.globals,n),Vt(e,c.Commands.Globals),r=n,s=!0);break;case c.Commands.Hook:if((0,Kt.isObject)(n)&&(0,Bt.isString)(n.name)&&(0,Bt.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case c.Commands.On:if((0,Kt.isObject)(n)&&(0,Bt.isString)(n.type)){const{type:t,rules:o}=n;await Ke(e,t,o)}break;case c.Commands.Ready:s=!0;break;case c.Commands.Run:o=await Xt(e,n,i),s=!0;break;case c.Commands.Session:s=!0;break;case c.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Lt(e));break;case c.Commands.User:(0,Kt.isObject)(n)&&((0,Bt.assign)(e.user,n,{shallow:!1}),Vt(e,c.Commands.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Mt({ok:!1})}if(s){const n=await mt(e,t,void 0,r);i.push(...n.deliveries),_t(n.deliveries);const s=Ct(await It(e),await qt(e,i));if(o&&!1===o.ok){const e={...s.failed??{},...o.failed??{}};o={...s,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=s}return o||Mt({ok:!0})}()}finally{a()}}function Ut(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function zt(e,t,n){return Nt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Gt(e,t,n){return Nt(e,Ut(e,t),n,{globals:{},user:{},consent:{}})}function Nt(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new Bt.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new Bt.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new Bt.InvalidEventError("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${s} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:m=(0,Bt.getSpanId)(),trigger:v="",entity:w=s,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),O=S.trace??n?._meta.trace??e.trace,_={...S,count:E};void 0!==O&&(_.trace=O);const q=e.name??S.platform??"default",C=e.release??"4.8.1";_.release={...S.release,[q]:C};return{name:c,data:u,context:d,globals:(0,Bt.assign)(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:_}}function Qt(e,t,n){return zt(e,Ut(e,t),n)}async function Yt(e,t){const n=[];return Ct(await Xt(e,t,n),await qt(e,n))}async function Xt(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,Bt.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,Bt.assign)(e.consent,t.consent),Vt(e,c.Commands.Consent)),t.user&&(e.user=(0,Bt.assign)(e.user,t.user),Vt(e,c.Commands.User)),t.globals&&(e.globals=(0,Bt.assign)(e.config.globalsStatic||{},t.globals),Vt(e,c.Commands.Globals)),t.custom&&(e.custom=(0,Bt.assign)(e.custom,t.custom),Vt(e,c.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await ke(e);const o=await pt(e);let r=!0;const s={};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:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(s,t.failed)}}_t(o);const i=await It(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}var Jt="collector.next";async function Zt(e,t,n={}){const o=n.ingest??(0,l.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await de(e,e.transformers||{},r,t,o,n.respond,Jt),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),v(e,t,o,{reason:"dropped",by:s.droppedBy,at:Jt}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:Gt(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}var en=require("@walkeros/core"),tn=require("@walkeros/core"),nn=require("@walkeros/core");function on(e,t){const n=(0,nn.useHooks)(async(n,o={})=>await(0,nn.tryCatchAsync)(async()=>{if(!e.allowed){const t=M(e.config.queueMax),r=P(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=G(e.status,"collector.preRun","queue",r.dropped);T(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&B(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:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f=a,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;let h=i??(0,nn.createIngest)(s||"unknown");if(c){const t=await(0,nn.processEventMapping)(p,c,e);if(t.ignore)return Mt({ok:!0});if(c.consent){const n=t.event.consent;if(!(0,nn.getGrantedConsent)(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),v(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),Mt({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await de(e,e.transformers||{},u,p,h,f,n);if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),v(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),Mt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Mt({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=zt(e,t(n.event),n.ingest);return It(e,o,{id:s,ingest:n.ingest,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+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return n[0]??Mt({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=Qt(e,p,h),w=await It(e,m,{id:s,ingest:h,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 w},t=>{if(t instanceof nn.FatalError)throw t;if(t instanceof nn.InvalidEventError){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",{...N(t),event:n.name}),Mt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,nn.getSpanId)()},s="string"==typeof r.id?r.id:"",i=g(r,o?.ingest,e),a=Date.now(),c=h(e,"collector.push","collector","in",s,a,i);c.inEvent=r,(0,nn.emitStep)(e,c);try{const t=await n(r,o),c=Date.now(),u=h(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,(0,nn.emitStep)(e,u),t}catch(t){const n=Date.now(),o=h(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=m(t),(0,nn.emitStep)(e,o),t}}}var rn=require("@walkeros/core");var sn=require("@walkeros/core"),an="elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })";var cn=require("@walkeros/core"),un=1e4,dn=6e4,ln=.8;function fn(e={}){const t=e.maxEntries??un,n=e.lowWaterMark??ln,o=e.sweepIntervalMs??dn,r=Math.floor(t*n),s=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;o>0&&(a=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++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.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),i.evictions_ttl++,void i.misses++):(s.delete(e),s.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!s.has(e);a||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.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++}i.evictions_entries+=n}()},delete(e){s.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),s.clear()}}}var pn=require("@walkeros/core");function gn(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=h(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,pn.emitStep)(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?(0,pn.compileMatcher)(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=(0,pn.readCacheEnvelope)(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 i=p.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(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,(0,pn.wrapCacheEnvelope)(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,a),a},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),(0,pn.wrapCacheEnvelope)(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(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,N(n)):console.warn(o,n)}}function hn(e,t,n){const o=`store.${n}`,r=(0,cn.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,cn.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,cn.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=h(e,o,"store","in","",n);s.meta={op:"get",key:t},(0,cn.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=h(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},(0,cn.emitStep)(e,a),s}catch(r){const s=Date.now(),i=h(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=m(r),(0,cn.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=h(e,o,"store","in","",i);a.meta={op:"set",key:t},(0,cn.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=h(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},(0,cn.emitStep)(e,c)}catch(n){const r=Date.now(),s=h(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=m(n),(0,cn.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=h(e,o,"store","in","",n);r.meta={op:"delete",key:t},(0,cn.emitStep)(e,r);try{await i(t);const r=Date.now(),s=h(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},(0,cn.emitStep)(e,s)}catch(r){const s=Date.now(),i=h(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=m(r),(0,cn.emitStep)(e,i),r}}}async function mn(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i,reportError:Q(e,"store",o,a)},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 i=t[s];if("BLACK"===i)return;if("GRAY"===i){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 a=e[s].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${s}" cache.store references "${a}", which is not declared in flow.stores`);r(a)}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,i;void 0!==r.store?(s=n[r.store],i=r.store):(n.__cache||(n.__cache=fn()),s=n.__cache,i="__cache");const a=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=gn(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&hn(e,o,t);return n}async function vn(e){const t=(0,tn.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,tn.createLogger)(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),void 0!==e.next&&(t.next=e.next),s.push=on(s,e=>Ut(s,e)),s.command=function(e,t){return(0,rn.useHooks)(async(n,o,r)=>await(0,rn.tryCatchAsync)(async()=>await t(e,n,o,r),t=>{if(t instanceof rn.FatalError)throw t;return e.status.failed++,e.logger.error("command failed",{...N(t),command:n}),Mt({ok:!1})})(),"Command",e.hooks,e.logger)}(s,Ht),s.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error(an,{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,r,...s)=>{if("string"==typeof t&&t.startsWith("walker ")){o(s)&&n(t);const i=t.replace("walker ","");return e.command(i,r)}let i;if("string"==typeof t)i={name:t},(0,sn.isObject)(r)?i.data=r:void 0!==r&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return Mt({ok:!1});i={...t},void 0!==r&&n(String(i.name))}return o(s)&&n(String(i.name)),e.push(i)}}(s);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await mn(s,i),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)}}}(i,s.stores,e)):Object.keys(i).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=fn()),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;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=(0,X.validateStepEntry)(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=J(r,"before"),{config:a}=J({...r,config:i},"next"),c=Object.keys(s).length>0?{...a,env:s}:a,{cache:u}=r,d=u?{...c,cache:u}:c,l=r.config?.state??r.state;S(e,(0,X.stepId)("transformer",o),l);const f=void 0!==l&&void 0===d.state?{...d,state:l}:d,p=e.logger.scope("transformer").scope(o),g={collector:e,logger:p,id:o,ingest:(0,X.createIngest)(o),config:f,env:s,reportError:Q(e,"transformer",o,p)},h=(0,X.getTransformerMapping)(r);for(const t of(0,X.getTransformerMappingWarnings)(r))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await(0,X.processEventMapping)(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);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!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(s,e.transformers||{}),s}var wn=globalThis;function yn(e){try{const t=wn.window;if(!t)return;t.localStorage.getItem(en.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(en.OBSERVE_STORAGE_KEY)}catch{}}function bn(e,t){return void 0===t?e:n=>e({...n,release:t})}function kn(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=wn.window,t=wn.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(en.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return wn.window?.localStorage.getItem(en.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,en.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),yn(r)):e.logger.warn("observe: malformed credential ignored"));if(s.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{wn.window?.localStorage.setItem(en.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=wn.window,t=wn.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),r=o>=0?n.slice(o):"",s=o>=0?n.slice(0,o):n,i=s.indexOf("?"),a=i>=0?s.slice(0,i):s,c=new t(i>=0?s.slice(i+1):"");c.delete(en.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,en.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(yn(r),i&&e.observers.delete(i))}});i=(0,en.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(bn(a,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(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add((0,en.createTelemetryObserver)(bn((0,en.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function Sn(e){const t=e??{},n=await vn(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?kn(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await be(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}//# sourceMappingURL=index.js.map
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 s(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=o(e.consent,n),{update:n}}import{createIngest as r}from"@walkeros/core";import{assign as i,createMappingRoot as a,clone as c,compileCache as u,checkCache as d,storeCache as l,createIngest as f,debounce as p,emitStep as g,getId as h,getGrantedConsent as m,isDefined as v,isFunction as w,isObject as y,OBSERVE_ENV_KEY as b,processEventMapping as k,stepId as S,tryCatchAsync as _,useHooks as E}from"@walkeros/core";import{emitStep as q}from"@walkeros/core";function O(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function C(e,t,n,o,s,r=Date.now(),i){const a={flowId:e.name??"default",stepId:t,stepType:n,phase:o,eventId:s,timestamp:new Date(r).toISOString(),elapsedMs:r-e.status.startedAt};return i?.traceId&&(a.traceId=i.traceId),i?.sourceId&&(a.sourceId=i.sourceId),i?.parentEventId&&(a.parentEventId=i.parentEventId),a}function x(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function j(e,t,n,o){e.status.in++;const s=C(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),O(t,n,e));s.skipReason=o.reason,"consent"===o.reason?(s.consent={...o.consent},s.meta={at:o.at,required:{...o.required}}):s.meta={by:o.by??"route",at:o.at},q(e,s)}import{applyState as I,compileState as D}from"@walkeros/core";function $(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function M(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?D(e):void 0}function P(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?I(t,t=>function(e,t){return e?t.stores[e]:t.stores.__cache}(t,e),n,e,o):Promise.resolve(n)}function A(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}import{observeEnv as R}from"@walkeros/core";function W(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))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 s of e)o.push(W(s,t,n+1));return o}const s={};t.set(e,s);for(const[o,r]of Object.entries(e))s[o]="function"==typeof r?r:W(r,t,n+1);return s}function T(e){const{simulation:t,...n}=e,o={},s=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:W(t,s,1);const r=R(o,t);return{wrappedEnv:r.env,calls:r.calls,unresolved:r.unresolved}}function B(e,t){try{return e[t]}catch{return"[unreadable]"}}function K(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 s=e;if(t.has(s))return"[circular]";if(o>=6)return"[truncated]";let r;t.add(s);try{if(Array.isArray(s))r=s.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(s)){const e={};for(const t of Object.keys(s))e[t]=n(B(s,t),o+1);r=e}else r=function(e){try{return String(e)}catch{return"[object]"}}(s)}catch{r="[unreadable]"}return t.delete(s),r};return e.map(e=>n(e,0))}function L(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=function(e){return e.map(e=>({fn:e.fn,args:K(e.args),ts:e.ts}))}(t))}import{isArray as z,FatalError as F}from"@walkeros/core";import{tryCatch as V,tryCatchAsync as U}from"@walkeros/core";import{stepId as H}from"@walkeros/core";function G(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function Q(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 s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var N=new WeakMap;function Y(e,t,n,o){N.get(e)||(N.set(e,!0),t.warn(n,o))}function X(e){N.delete(e)}var J=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,s){if("partial"===n)return;const r=function(e,t){return e[t]||(e[t]={state:"closed",consecutiveFailures:0}),e[t]}(e,t);return"success"===n?(r.consecutiveFailures=0,r.state="closed",r.probing=!1,void(r.openUntil=void 0)):(r.consecutiveFailures+=1,"half-open"===r.state?(r.state="open",r.probing=!1,void(r.openUntil=ee()+s)):void(r.consecutiveFailures>=o&&(r.state="open",r.probing=!1,r.openUntil=ee()+s)))}function oe(e,t){return!e||("closed"===e.state||"half-open"===e.state||void 0!==e.openUntil&&t>=e.openUntil)}var se=100;function re(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function ie(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(s[n]??0)+o,s[n]}function ae(e){const t={error:e instanceof Error?e.message:String(e)};if(e instanceof Error&&e.name&&"Error"!==e.name&&(t.name=e.name),"object"==typeof e&&null!==e&&"code"in e){const n=e;"number"!=typeof n.code&&"string"!=typeof n.code||(t.code=n.code)}return t}function ce(e,t,n,o,s){const r=H(t,n);return(t,i)=>{try{if(i)return s?function(e,t,n,o,s,r){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??se},c=Q(i,[o,s],a);if(c.dropped>0){const t=ie(e.status,H("destination",n),"dlq",c.dropped);Y(i,r,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&X(i);const u=re(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=te(t.config.breaker);if(d){const o=t.config.id||n;ne(e.status.breakers,H("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,s,n,i,t,o):e.status.failed++,void o.error("report error",{...ae(t),event:i.name});e.status.connectionErrors[r]=(e.status.connectionErrors[r]??0)+1,o.error("connection error",ae(t))}catch{}}}import{createIngest as ue,FatalError as de,getMappingValue as le,getSpanId as fe,parseTraceparent as pe,isScope as ge,tryCatchAsync as he,compileCache as me,checkCache as ve,storeCache as we,applyUpdate as ye,createMappingRoot as be,stepId as ke}from"@walkeros/core";import{advanceChain as Se,clone as _e,createIngest as Ee,deriveSpanId as qe,emitStep as Oe,FatalError as Ce,isChainContinuation as xe,isObject as je,startChain as Ie,stepId as De,tryCatchAsync as $e,useHooks as Me,compileCache as Pe,checkCache as Ae,storeCache as Re,createMappingRoot as We,validateStepEntry as Te,processEventMapping as Be,getTransformerMapping as Ke,getTransformerMappingWarnings as Le}from"@walkeros/core";function ze(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function Fe(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",s=e.logger.scope(`transformer:${o}`),r={collector:e,logger:s,id:n,ingest:Ee(n),config:t.config,env:tt(t.config.env),reportError:ce(e,"transformer",n,s)};s.debug("init");const i=await Me(t.init,"TransformerInit",e.hooks,e.logger)(r);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},s.debug("init done")}return!0}async function Ve(e,t,n,o,s,r){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:s,config:t.config,env:{...tt(t.config.env),...r?{respond:r}:{}},reportError:ce(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=O(o,s,e),l=Date.now(),f=C(e,De("transformer",n),"transformer","in",u,l,d);f.inEvent=o,Oe(e,f);try{const s=await Me(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),i=C(e,De("transformer",n),"transformer","out",u,r,d);return i.durationMs=r-l,i.outEvent=s,Oe(e,i),a.debug("push done"),s}catch(t){const o=Date.now(),s=C(e,De("transformer",n),"transformer","error",u,o,d);throw s.durationMs=o-l,s.error=x(t),Oe(e,s),t}}function Ue(e){return"string"==typeof e.id?e.id:""}function He(e,t){const n=Ue(e);return""!==n&&""===Ue(t)?{...t,id:n}:t}function Ge(e,t,n,o){const s=function(e){return{...e,_meta:{...e._meta,path:[...e._meta.path]}}}(n),r=_e(t),i=Ue(e);if(""===i)return{event:r,ingest:s};s._meta.parentEventId=i;const a=Ue(r);return""!==a&&a!==i||(r.id=qe(i,o)),{event:r,ingest:s}}function Qe(e,t){return{copies:e,respond:t}}function Ne(e,t){if(void 0===t)return e.rest;const n=e.ownNext?e.rest.slice(1):e.rest;return[{route:t,ancestry:e.ancestry},...n]}async function Ye(e,t,n){const o=await Promise.all(t.map((t,n)=>$e(Xe,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,ae(t)),{copies:[]}))(e,t))),s=[];let r,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===r&&(r=e.droppedBy):s.push(...e.copies)}),0===s.length?{copies:s,respond:i,...a?{stopped:!0}:{},...void 0!==r?{droppedBy:r}:{}}:Qe(s,i)}async function Xe(e,t){const{ingest:n}=t;let{stack:o,event:s,respond:r}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=Se(o,We(n,s),e.transformers);if("done"===i.kind)return Qe([{event:s,ingest:n}],r);if("stop"===i.kind)return{copies:[],respond:r,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=s;return Ye(e,i.branches.map((e,o)=>({stack:e,...Ge(t,t,n,o),respond:void 0})),r)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await Je(e,t,s,n,r,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Ye(e,c.copies,r);s=c.event,r=c.respond,o=c.stack}}async function Je(e,t,n,o,s,r){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=s;const p=(e=t.rest)=>({kind:"continue",event:He(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return i.logger.warn(`Transformer not found: ${u}`),p();const h=d.config?.cache,m=h?Pe(h):void 0,v=m?$(m,i):void 0;let w=r?.cacheMiss;if(!r){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});o._meta.hops++,o._meta.path.push(u);if(!await $e(Fe,e=>{if(e instanceof Ce)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...ae(e)}),!1})(i,d,u))return g({copies:[],respond:f});if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(m&&v){const e=await Ae(m,v,We(o,l));if("HIT"===e?.status&&e.value){if(l=e.value,m.stop){return g({copies:[{event:He(n,l),ingest:o}],respond:f,stopped:!0})}return p()}"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await et(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[s]=e.copies;if(e.copies.length>1||s.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=s.event}}const y=M(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?P(i,k,e,o):e;b&&b.length>0&&(l=await P(i,b,l,o));const _=await $e(Ve,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",ae(e)),!1))(i,d,u,l,o,f);if(!1===_)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(_)&&1!==_.length){if(0===_.length)return g({copies:[],respond:f});const e=l,n=[];for(let s=0;s<_.length;s++){const r=_[s],i=await S(r.event||e);n.push({stack:Ne(t,r.next),...Ge(e,i,o,s),respond:f})}return{kind:"fork",copies:n}}const E=Array.isArray(_)?_[0]:_;let q;return E&&"object"==typeof E&&(E.respond&&(f=E.respond),E.event&&(l=E.event),q=E.next),l=await S(l),w&&v&&Re(v,w.key,l,w.ttl),p(Ne(t,q))}async function Ze(e,t,n,o,s,r,i){const a=s??Ee("string"==typeof n?n:"chain");return void 0===n?Qe([{event:o,ingest:a}],r):(i&&(a._meta.chainPath=i),Xe({collector:e,transformers:t,chainContext:i},{stack:xe(n)?n:Ie(n),event:o,ingest:a,respond:r}))}async function et(e,t,n,o,s,r,i){const a=t[n],c=a?a.config.before:void 0,u=await Ze(e,t,c,o,s,r,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}function tt(e){return e&&je(e)?e:{}}var nt=1e4;function ot(e){return"number"==typeof e&&e>0?e:nt}var st=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function rt(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new st(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}async function it(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const s=n||t.config?.id||"unknown";for(const{type:n,data:r}of o){if(vt(n)&&!St(e,t,n))continue;const o=t.on;let i=!1;await he(()=>rt(Promise.resolve(o(n,r)),nt,`Source "${s}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof de)throw t;t instanceof st?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,...ae(t)})})(),vt(n)&&!i&&kt(e,t,n)}}function at(e){return Boolean(e.config.init)&&!e.config.require?.length}async function ct(e,t,n){const{code:o,config:s={},env:r={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=s.state??n.state,f=M(l);A(e,ke("source",t),l);const p=u,g=p?me({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),v=async(n,o,r)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:fe()};let d=[{event:u,ingest:r.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Ze(e,e.transformers||{},c,u,r.ingest,r.respond,n);if(0===o.copies.length)return j(e,u,r.ingest,{reason:"dropped",by:o.droppedBy,at:n}),En({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),d=o.copies}if(g){const t=$(g,e);if(t){const n=be(r.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 ye(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),r.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&r.respond){const s=r.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{we(t,u,n,d),a?i=(async()=>{const t=await ye(n,a,c,e);s(t)})():s(n)};r.respond=l}"MISS"!==o.status||g.stop||we(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await P(e,f,t.event,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of d)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:r.respond,mapping:s,preChain:a});return i&&await i,l},w=async n=>{const o=ue(t),r=pe(ge(n)?n?.headers?.traceparent:void 0);if(r&&(o._meta.trace=r.trace,o._meta.parentEventId=r.parentSpan),!s.ingest||void 0===n)return o;const i=await le(n,s.ingest,{collector:e});return{...o,...i,_meta:o._meta}},y=e.logger.scope("source").scope(t),b={...r,push:async(e,n={})=>{const o={ingest:ue(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:y},k={collector:e,logger:y,id:t,config:s,env:b,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ce(e,"source",t,y)},S=await he(o,n=>{if(n instanceof de)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...ae(n)})})(k);if(!S)return;const _=S.type||"unknown",E=e.logger.scope(_).scope(t);return b.logger=E,i&&(S.config={...S.config,primary:i}),S}async function ut(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const t=await ct(e,o,s);if(!t)continue;const r=s.config?.require;t.config={...t.config,init:!1,...r?{require:[...r]}:{}},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 he(n.init.bind(n),n=>{if(n instanceof de)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...ae(n)})})(),o||(n.config.init=!0,at(n)&&await it(e,n,t))}return await dt(e),n}async function dt(e){for(const[t,n]of Object.entries(e.sources)){if(at(n))continue;const o=n.config.require;if(!o?.length)continue;const s=o.filter(t=>!yt(e,t));s.length!==o.length&&(n.config.require=s,at(n)&&await it(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 s=o.filter(t=>!yt(e,t));if(n.config&&(n.config.require=s),s.length>0)continue;delete e.pending.destinations[t];const r=qn(n);!1!==r.config.queue&&(r.queuePush=[...e.queue]),e.destinations[t]=r,await Zt(e,r,t)}}function lt(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 ft=!1;function pt(){ft||(ft=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function gt(e,t,n,o){if(n instanceof F)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...ae(n)})}var ht=["consent","user","globals","custom"];function mt(e){return ht.includes(e)}function vt(e){return mt(e)}function wt(e,t){return mt(t)&&Object.keys(e[t]).length>0}function yt(e,t){if(mt(t))return wt(e,t);switch(t){case n.Commands.Run:case n.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function bt(e,t){return e.cellVersion?.[String(t)]??0}function kt(e,t,n){Ut(e,t,n,bt(e,n))}function St(e,t,n){return e.allowed&&bt(e,n)>function(e,t,n){const o=e.delivery.get(t),s=o?.[String(n)];return void 0===s?-1:s}(e,t,n)}var _t=8;function Et(e){const t=e.cascade;if(t&&!qt.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,qt.set(n,(qt.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(qt.get(n)||1)-1;t>0?qt.set(n,t):(qt.delete(n),e.cascade===n&&(e.cascade=void 0))}}var qt=new WeakMap;function Ot(e,t,n){const o=e.cascade;if(!o)return!0;let s=o.counts.get(t);s||(s={},o.counts.set(t,s));const r=String(n),i=(s[r]||0)+1;return s[r]=i,i<=_t||(i===_t+1&&e.logger.error("state delivery did not converge",{type:r}),!1)}function Ct(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function xt(e,t,n){if(!lt(e))return void pt();const o=e.on,s=o[t]||[],r=z(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,Ht(e,t,r)}async function jt(e,t,n,o,s){const r=t.on;if(!r)return!0;const i=vt(o);if(i&&(It.get(t)||Dt.has(t)))return Lt(e,t,o),It.get(t)||$t.add(t),!1;const a=i?bt(e,o):0,c=i&&function(e,t,n,o){if(Tt.get(t)?.has(String(n)))return!0;const s=e.delivery?.get(t)?.[String(n)];return void 0===s||s<o-1}(e,t,o,a)?Gt(e,o):s,u=t.type||"unknown",d=e.logger.scope(u).scope("on").scope(o),l={collector:e,logger:d,id:n,config:t.config,data:c,env:Cn(t.env,t.config.env),reportError:ce(e,"destination",n,d,t)};i&&(Ft(t,o),function(e,t,n){let o=Rt.get(e);o||(o={},Rt.set(e,o));const s=String(t),r=o[s];(void 0===r||r<n)&&(o[s]=n)}(t,o,a),Dt.add(t));const f=ot(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await U(()=>(p=Promise.resolve(r(o,l)),rt(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof st&&(h=!0),gt(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){Dt.delete(t),m&&$t.delete(t);const s=Tt.get(t);g?(Ut(e,t,o,a),s?.delete(String(o))):Lt(e,t,o),h?function(e,t,n,o,s,r,i){It.set(t,(It.get(t)||0)+1);const a=()=>{const r=(It.get(t)||0)-1;r>0?It.set(t,r):It.delete(t),Bt(t,o),Wt(t,o,s),Vt(e,t),i.debug("late settle after timeout"),$t.delete(t),e.allowed&&e.destinations[n]===t&&function(e,t,n,o){U(async()=>{await Zt(e,t,n),!Pt(t)&&t.queuePush?.length&&await wn(e,void 0,{},{[n]:t})},e=>{o.error("state recovery failed",ae(e))})()}(e,t,n,i)};r.then(a,a)}(e,t,n,o,a,p,d):(Wt(t,o,a),Vt(e,t))}}return i&&!h&&$t.delete(t)&&await Zt(e,t,n),g}var It=new WeakMap,Dt=new WeakSet,$t=new WeakSet;var Mt=new WeakMap;function Pt(e){return Mt.get(e)}var At=new WeakMap,Rt=new WeakMap;function Wt(e,t,n){const o=Rt.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Tt=new WeakMap;function Bt(e,t){const n=Tt.get(e);n?n.add(String(t)):Tt.set(e,new Set([String(t)]))}var Kt=new WeakMap;function Lt(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Bt(t,n),Mt.set(t,{type:n,since:Date.now()})}function zt(e,t){return!!Tt.get(t)?.size||ht.some(n=>wt(e,n)&&St(e,t,n))}function Ft(e,t){At.set(e,(At.get(e)||0)+1),Mt.set(e,{type:t,since:Date.now()})}function Vt(e,t){const n=(At.get(t)||0)-1;n>0?At.set(t,n):At.delete(t),function(e,t){if(!Mt.has(t))return;if(At.get(t))return;zt(e,t)||Mt.delete(t)}(e,t)}function Ut(e,t,n,o){let s=e.delivery.get(t);s||(s={},e.delivery.set(t,s));const r=String(n),i=s[r];(void 0===i||i<o)&&(s[r]=o)}function Ht(e,t,o,s){if(!lt(e))return void pt();const r=Gt(e,t,s);if(o.length)switch(t){case n.Commands.Consent:!function(e,t,o){const s=o||e.consent,r=Ct(e,n.Commands.Consent);t.forEach(t=>{St(e,t,n.Commands.Consent)&&Ot(e,t,n.Commands.Consent)&&(Object.keys(s).filter(e=>e in t).forEach(n=>{V(t[n],t=>gt(e,"consent",t,{key:n}))(s,r)}),kt(e,t,n.Commands.Consent))})}(e,o,s);break;case n.Commands.Ready:!function(e,t){if(!e.allowed)return;const o=Ct(e,n.Commands.Ready);t.forEach(t=>{V(t,t=>gt(e,"ready",t))(void 0,o)})}(e,o);break;case n.Commands.Run:!function(e,t){if(!e.allowed)return;const o=Ct(e,n.Commands.Run);t.forEach(t=>{V(t,t=>gt(e,"run",t))(void 0,o)})}(e,o);break;case n.Commands.Session:!function(e,t){if(!e.session)return;const o=Ct(e,n.Commands.Session);t.forEach(t=>{V(t,t=>gt(e,"session",t))(e.session,o)})}(e,o);break;default:{const n=Ct(e,t),s=vt(t);o.forEach(o=>{"function"==typeof o&&(s&&!St(e,o,t)||s&&!Ot(e,o,t)||(V(o,n=>gt(e,"generic",n,{type:t}))(r,n),s&&kt(e,o,t)))});break}}}function Gt(e,t,o){if(mt(t))return o||e[t];switch(t){case n.Commands.Session:return e.session;case n.Commands.Config:return o||e.config;default:return}}async function Qt(e,t,n,o,s){if(!t.on)return!1;if(vt(o)&&!St(e,t,o))return!1;if(vt(o)&&!Ot(e,t,o))return!1;const r=vt(o);if(r&&Nt.has(t))return Yt.add(t),!1;const i=r?bt(e,o):0;r&&Nt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await U(()=>(u=Promise.resolve(a(o,s)),rt(u,nt,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof st&&(d=!0),gt(e,"source",t,{sourceId:n,type:o})})()}finally{r&&!d&&Nt.delete(t)}if(r)if(d){const o=()=>{Nt.delete(t),Yt.delete(t),e.allowed&&e.sources[n]===t&&U(()=>Xt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",ae(t))})()};u.then(o,o)}else Ut(e,t,o,i),Yt.delete(t)&&await Xt(e,t,n);return!1===c}var Nt=new WeakSet,Yt=new WeakSet;async function Xt(e,t,n){const o=Et(e);try{for(const o of ht)await Qt(e,t,n,o,Gt(e,o))}finally{o()}}async function Jt(e,t,n,o,s){if(!t.on)return;const r=vt(o);if(r&&!St(e,t,o))return;const i=Rt.get(t)?.[String(o)];if(r&&void 0!==i&&i>=bt(e,o))return;if(r&&!Ot(e,t,o)){if(t.config.init)return void Lt(e,t,o);const n=t.queueOn=t.queueOn||[],s={type:o,data:Gt(e,o)},r=n[n.length-1];return r&&r.type===o?n[n.length-1]=s:n.push(s),kt(e,t,o),void Tt.get(t)?.delete(String(o))}const a=Kt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:s}),void(r&&(kt(e,t,o),a&&!a.held&&(Ft(t,o),a.held=!0)));await jt(e,t,n,o,s)}async function Zt(e,t,n){if(!t.on)return;const o=Et(e);try{for(const o of ht)(wt(e,o)||Tt.get(t)?.has(String(o)))&&await Jt(e,t,n,o,Gt(e,o))}finally{o()}}function en(e){return(At.get(e)||0)>0}async function tn(e){const t=await nn(e);await Promise.all(t.map(({done:e})=>e))}async function nn(e){if(!lt(e))return pt(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const s=async()=>{for(const t of ht)wt(e,t)&&await Jt(e,o,n,t,Gt(e,t))};t.push(sn(n,o,s()))}for(const t of ht){if(!wt(e,t))continue;const n=Gt(e,t);Ht(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>at(e)).map(([o,s])=>Qt(e,s,o,t,n)))}return t}async function on(e,t,n,o){const{ok:s,deliveries:r}=await rn(e,t,n,o);return await Promise.all(r.map(({done:e})=>e)),s}function sn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}async function rn(e,t,n,o){if(!lt(e))return pt(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let s=n||[];n||(s=e.on[t]||[]);const r=Gt(e,t,o),i=[];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)}o.on&&(at(o)?i.push(Qt(e,o,n,t,r)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:r})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(sn(n,o,Jt(e,o,n,t,r)));let c=!1;if(i.length){c=(await Promise.all(i)).some(Boolean)}for(const[t,n]of Object.entries(e.sources))at(n)&&n.queueOn?.length&&await it(e,n,t);const u=Object.values(e.sources).some(e=>!at(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await dt(e),Ht(e,t,s,o),{ok:!c,deliveries:a}}var an=1e3,cn=1e3,un=3e4,dn=Object.freeze({batched:!0});function ln(e){return e===dn}var fn=" batch-all";function pn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function gn(e,t){const{code:n,config:o={},env:s={},before:r,next:i,cache:a,state:c}=t;if(!w(n.push))return En({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=r?{...u,before:r}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=h(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(A(e,S("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await dt(e);const n=e.destinations[l];return n?wn(e,void 0,{},{[l]:n}):En({ok:!0})}const f={...n,config:d,env:Cn(n.env,s)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Zt(e,f,l),wn(e,void 0,{},{[l]:f})}function hn(e){for(const t of e)Pt(t.destination)&&(t.drain=!0)}async function mn(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:s})=>{if(await o,s&&e.allowed&&!Pt(n)&&n.queuePush?.length&&e.destinations[t]===n)return wn(e,void 0,{},{[t]:n})}))).filter(v)}function vn(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},s={...e.failed??{}};for(const e of t){for(const[t,s]of Object.entries(e.done??{}))n[t]=s,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))s[t]=n,delete o[t];Object.assign(o,e.queued??{})}const r={...e,ok:e.ok&&t.every(e=>e.ok)};return delete r.done,delete r.queued,delete r.failed,Object.keys(n).length&&(r.done=n),Object.keys(o).length&&(r.queued=o),Object.keys(s).length&&(r.failed=s),r}async function wn(e,t,n={},o){if(!e.allowed)return En({ok:!1});if(!t)return yn(e,void 0,n,o);const s=await Qn(e,t,n);if(0===s.copies.length)return En({ok:!0,...s.dropped?{dropped:!0}:{}});const r=[];for(const t of s.copies)r.push(await yn(e,t.event,{id:n.id,ingest:t.ingest,respond:s.respond},o));return r[0]}async function yn(e,t,n,o){const{user:s}=e;if(t){const n=G(e.config.queueMax),o=Q(e.queue,t,{max:n});if(o.dropped>0){const t=ie(e.status,S("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&&X(e.queue);e.status.in++}o||(o=e.destinations);const r=e.transformers||{},p=await Promise.all(Object.entries(o||{}).map(async([o,p])=>{if(p.config.disabled)return{id:o,destination:p,skipped:!0};const h=p.config.id||o,v=S("destination",h),w=te(p.config.breaker);if(w&&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 s=ee();return void 0!==o.openUntil&&s<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=s+n,!1)}(e.status.breakers,v,w.cooldown))return{id:o,destination:p,skipped:!0};const y=t=>{w&&ne(e.status.breakers,v,t,w.threshold,w.cooldown)},b=()=>{w&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,v)},k=t=>{if(!t.length)return;p.queuePush||(p.queuePush=[]);const n=p.queuePush,s=p.config.id||o,r={max:p.config.queueMax??an};let i=0;for(const e of t){i+=Q(n,e,r).dropped}if(i>0){re(e,s);const t=ie(e.status,S("destination",s),"queue",i);Y(n,e.logger.scope(p.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:s,cap:r.max,droppedCount:t})}else n.length<r.max&&X(n)};p.on&&p.config.init&&!Pt(p)&&!en(p)&&zt(e,p)&&await Zt(e,p,o);const E=Pt(p);if(E&&!en(p)&&Date.now()-E.since>=ot(p.config.timeout)&&await Zt(e,p,o),Pt(p)){if(b(),!t)return{id:o,destination:p,skipped:!0};const e=[c(t)];return k(e),{id:o,destination:p,queue:e}}let q=(p.queuePush||[]).map(t=>({...t,consent:e.consent}));p.queuePush=[],t&&q.push(c(t));const x=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:f("unknown");if(!q.length&&!p.queueOn?.length)return b(),{id:o,destination:p,skipped:!0};if(!q.length&&p.queueOn?.length){if(!m(p.config.consent,e.consent))return b(),{id:o,destination:p,skipped:!0};let t=!1;try{t=await Sn(e,p,o,!0)}catch(t){e.status.failed++;const n=p.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),y("transport-failure")}if(Pt(p))return b(),{id:o,destination:p,skipped:!0};if(!t||!p.queuePush?.length)return b(),{id:o,destination:p,skipped:!t};q=p.queuePush.map(t=>({...t,consent:e.consent})),p.queuePush=[]}const j=t=>{const n=e.consent,s=[],r=t.filter(t=>{const r=m(p.config.consent,n,t.consent);if(r)return t.consent=r,s.push(t),!1;const i=C(e,S("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),O(t,x,e));return i.skipReason="consent",n&&(i.consent={...n}),p.config.consent&&(i.meta={required:{...p.config.consent}}),g(e,i),!0});return{allowed:s,skipped:r}},I=e.consent,{allowed:D,skipped:A}=j(q);if(k(A),!D.length)return b(),{id:o,destination:p,queue:q};const R=new Set(p.queuePush);let W=!1;try{W=await Sn(e,p,o,!0)}catch(t){e.status.failed++;const n=p.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),y("transport-failure")}if(!W)return b(),{id:o,destination:p,queue:q};if(Pt(p))return b(),k(D),{id:o,destination:p,queue:D};const T=[];if(e.consent!==I){const t=j(D.map(t=>({...t,consent:e.consent})));D.splice(0,D.length,...t.allowed),T.push(...t.skipped)}const B=p.queuePush||[],K=B.filter(e=>!R.has(e));if(K.length){p.queuePush=B.filter(e=>R.has(e));const t=j(K.map(t=>({...t,consent:e.consent})));D.push(...t.allowed),T.push(...t.skipped)}if(k(T),!D.length)return b(),T.length?{id:o,destination:p,queue:T}:{id:o,destination:p,skipped:!0};let L,z;p.dlq||(p.dlq=[]);const F=p.config.before,V=p.config.next,U=p.config?.cache,H=U?u(U):void 0,G=H?$(H,e):void 0,N=M(p.config?.state),J=N?.filter(e=>"get"===e.mode),Z=N?.filter(e=>"set"===e.mode);let oe=0,ce=0,ue=0;return await Promise.all(D.map(async t=>{let c,u;if(t.user=i(s,t.user),H?.stop&&G){const e=a(x,t),n=await d(H,G,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(c={key:n.key,ttl:n.rule.ttl})}let f=[{event:t,ingest:x}],h=n.respond;if(void 0!==F){const s=`destination.${o}.before`,i=await Ze(e,r,F,t,x,n.respond,s);if(0===i.copies.length){const n=C(e,S("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),O(t,x,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:s},g(e,n),t}i.respond&&(h=i.respond),f=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const m=async(t,n,s)=>{let i=s,c=!1;if(H&&!H.stop&&G){const e=a(n,t??void 0),o=await d(H,G,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(i={key:o.key,ttl:o.rule.ttl},c=!0)}J&&J.length>0&&t&&(t=await P(e,J,t,n));const f=Date.now();let g=!1;const m=await _(_n,n=>{const s=p.type||"unknown";e.logger.scope(s).error("Push failed",{...ae(n),event:t.name}),L=n,g=!0;const r=p.dlq,i=p.config.id||o,a={max:p.config.dlqMax??se},c=Q(r,[t,n],a);if(c.dropped>0){re(e,i);const t=ie(e.status,S("destination",i),"dlq",c.dropped);Y(r,e.logger.scope(p.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:i,cap:a.max,droppedCount:t})}else r.length<a.max&&X(r)})(e,p,o,t,n,h);if(oe+=Date.now()-f,i&&G&&void 0===p.config.mock&&(c?l(G,i.key,m??!0,i.ttl):void 0===u&&(u=m??!0)),!g&&!ln(m)&&Z&&Z.length>0&&t&&(t=await P(e,Z,t,n)),void 0===m||ln(m)||(z=m),ln(m)&&ce++,!g&&V){void 0!==m&&(n._response=m);const s=await Ze(e,r,V,t,n,h,`destination.${o}.next`);s.respond&&(h=s.respond)}return!0};for(const e of f)await m(e.event,e.ingest,c)&&ue++;return c&&G&&void 0!==u&&void 0===p.config.mock&&l(G,c.key,u,c.ttl),t})),{id:o,destination:p,error:L,response:z,totalDuration:oe,batchedCount:ce,allowedCount:D.length,pushedCount:ue,canonicalId:h,breakerConfig:w}})),h={},v={},w={};for(const t of p){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};re(e,t.id);const s=e.status.destinations[t.id],r=Date.now();s.queuePushSize=n.queuePush?.length??0,s.dlqSize=n.dlq?.length??0;const i=t.breakerConfig,a=t.canonicalId?S("destination",t.canonicalId):void 0,c=t=>{i&&a&&ne(e.status.breakers,a,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,w[t.id]=o,s.failed++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.failed++,c("transport-failure");else if(t.queue&&t.queue.length)v[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,a=t.pushedCount??i;(Math.max(0,a-n)>0||0===i)&&(h[t.id]=o,s.count++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return En({event:t,...Object.keys(h).length&&{done:h},...Object.keys(v).length&&{queued:v},...Object.keys(w).length&&{failed:w}})}async function bn(e,t,n,o){const s=await async function(e,t,n,o){const s=t.type||"unknown",r=e.logger.scope(s),i={collector:e,logger:r,id:o,config:t.config,env:Cn(t.env,t.config.env),reportError:ce(e,"destination",o,r,t)};r.debug("init");const a=Date.now();let c;g(e,C(e,S("destination",o),"destination","init","",a));try{c=await E(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),s=C(e,S("destination",o),"destination","error","",n);throw s.durationMs=n-a,s.error=x(t),g(e,s),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===s)return!1;if(t.config=s,t.queueOn?.length){const n=Et(e);!function(e){const t=e.queueOn?.find(({type:e})=>vt(e));t&&Ft(e,t.type),Kt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await jt(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])vt(n)&&Lt(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Kt.get(t);Kt.delete(t),n?.held&&Vt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}var kn=new WeakMap;async function Sn(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 s=kn.get(t);if(s)return s;const r=bn(e,t,t.init,n);kn.set(t,r);try{return await r}finally{kn.delete(t)}}return!0}async function _n(e,t,n,o,s,r){const{config:i}=t,a=await k(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:s,env:{...Cn(t.env,i.env),...r?{respond:r}:{}},reportError:ce(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,f=void 0!==l?.batch,h=f?a.mappingKey||"* *":fn;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[h]){const o={key:h,entries:[],events:[],data:[]},s=pn(l?.batch),r=pn(i.batch),a=s.wait??r.wait??un,c=s.size??r.size??cn,d=s.age??r.age??un,m=Cn(t.env,i.env),v=p(async()=>{const o=t.batches[h],s=o.batched;if(0===s.entries.length)return;const r={key:s.key,entries:s.entries,events:s.events,data:s.data};s.entries=[],s.events=[],s.data=[];const a=r.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...m,...a.respond?{respond:a.respond}:{}},reportError:ce(e,"destination",n,u,t)};u.debug("push batch",{events:r.entries.length});const d=t.config.id||n,l=re(e,d),f=te(t.config.breaker),p=S("destination",d),v=t=>{f&&ne(e.status.breakers,p,t,f.threshold,f.cooldown)},w=Date.now(),b=new Map;let k,q=!1;const j=n=>{const o=t.dlq=t.dlq||[],s={max:t.config.dlqMax??se};let r=0;for(const e of n){r+=Q(o,e,s).dropped}if(r>0){const t=ie(e.status,S("destination",d),"dlq",r);Y(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:s.max,droppedCount:t})}else o.length<s.max&&X(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=r.entries.length;const D=ot(i.timeout),$=await _((o,s)=>rt(Promise.resolve(E(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),D,`Destination "${n}" batch delivery timed out after ${D}ms`),e=>{I=0,q=!0,k=e,j(r.entries.map(t=>[t.event,e])),v("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:r.entries.length})})(r,c);if(y(M=$)&&Array.isArray(M.failed)&&$.failed.length>0){const e=[];for(const t of $.failed){const n=r.entries[t.index];if(!n||b.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);b.set(t.index,o),e.push([n.event,o])}if(e.length>0){j(e),I=Math.max(0,r.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}u.error("Push batch partial failure",{failed:e.length,delivered:I,entries:r.entries.length,causes:[...t.values()]})}}var M;const P=Date.now();r.entries.forEach((t,o)=>{const s=q||b.has(o),i=O(t.event,t.ingest,e),a=C(e,S("destination",n),"destination",s?"error":"flush","string"==typeof t.event.id?t.event.id:"",P,i);if(a.batch={size:r.entries.length,index:o},a.durationMs=P-w,s){const e=q?k:b.get(o);a.error=x(e)}g(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-r.entries.length),I>0&&(l.count+=I,l.lastAt=Date.now(),e.status.out+=I,v("success"))},{wait:a,size:c,age:d});t.batches[h]={batched:o,isDefault:!f,batchFn:()=>{v()},flush:async()=>{await v.flush()}}}const c=t.batches[h];c.batched.entries.push({event:a.event,ingest:s,respond:r,rule:l,data:a.data}),c.batched.events.push(a.event),v(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",m=O(o,s,e),w=Date.now(),b=C(e,S("destination",n),"destination","in",d,w,m);a.mappingKey&&(b.mappingKey=a.mappingKey),a.event.consent&&(b.consent={...a.event.consent}),b.inEvent=a.event,g(e,b);const k=C(e,S("destination",n),"destination","out",d,w,m);a.mappingKey&&(k.mappingKey=a.mappingKey),k.outEvent=a.event,k.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},g(e,k);const q=t.config.id||n,j=re(e,q);return j.inFlightBatch=(j.inFlightBatch??0)+1,c.batchFn(),dn}{let r;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=T({...d.env,simulation:t.calls});d.env=e.wrappedEnv,r=e.calls,e.unresolved.length>0&&(e.wrappedEnv[b]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=O(o,s,e),f=Date.now(),p=C(e,S("destination",n),"destination","in",c,f,l);a.mappingKey&&(p.mappingKey=a.mappingKey),a.event.consent&&(p.consent={...a.event.consent}),p.inEvent=a.event,g(e,p);try{const o=ot(i.timeout),s=await rt(Promise.resolve(E(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),h=C(e,S("destination",n),"destination","out",c,p,l);return h.durationMs=p-f,h.outEvent=a.event,L(h,r),v(s)&&(h.meta={...h.meta,response:s}),a.mappingKey&&(h.mappingKey=a.mappingKey),g(e,h),u.debug("push done"),s}catch(t){const o=Date.now(),s=C(e,S("destination",n),"destination","error",c,o,l);throw s.durationMs=o-f,s.error=x(t),L(s,r),a.mappingKey&&(s.mappingKey=a.mappingKey),g(e,s),t}}}function En(e){return{ok:!e?.failed,...e}}function qn(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:i}=ze(e,"before"),{config:a}=ze({...e,config:i},"next"),c={...t.config,...n,...a};s&&(c.cache=s),void 0!==r&&void 0===c.state&&(c.state=r);const u=Cn(t.env,o);return{...t,config:c,env:u}}async function On(e,t={}){const n={};for(const[o,s]of Object.entries(t))A(e,S("destination",o),s.config?.state??s.code.config?.state??s.state),s.config?.require?.length?e.pending.destinations[o]=s:n[o]=qn(s);return n}function Cn(e,t){return e||t?t?e&&y(e)&&y(t)?{...e,...t}:t:e:{}}import{assign as xn,getSpanId as jn,getTraceId as In,InvalidEventError as Dn,isFunction as $n,isString as Mn}from"@walkeros/core";import{isObject as Pn}from"@walkeros/core";var An=5e3;async function Rn(e){const t=e.logger;await Wn(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 s=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`)),An)})])}catch(t){s.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Wn(e.destinations,"destination",t),await Wn(e.transformers,"transformer",t),await Wn(e.stores,"store",t)}async function Wn(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const s=o.destroy;if(!s)return;const r=o.type||"unknown",i=n.scope(r),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([s(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),An)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Tn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Bn(e,t,o){let r,i,a=!1;const c=[],u=Et(e);try{return await async function(){switch(t){case n.Commands.Config:Pn(o)&&(xn(e.config,o,{shallow:!1,merge:!1}),i=o,a=!0);break;case n.Commands.Consent:if(Pn(o)){const{update:t}=s(e,o);Tn(e,n.Commands.Consent),i=t,a=!0}break;case n.Commands.Custom:Pn(o)&&(e.custom=xn(e.custom,o),Tn(e,n.Commands.Custom),i=o,a=!0);break;case n.Commands.Destination:Pn(o)&&"code"in o&&Pn(o.code)&&(r=await gn(e,o));break;case n.Commands.Globals:Pn(o)&&(e.globals=xn(e.globals,o),Tn(e,n.Commands.Globals),i=o,a=!0);break;case n.Commands.Hook:if(Pn(o)&&Mn(o.name)&&$n(o.fn)){const{name:t,fn:n}=o;e.hooks[t]=n,i=o,a=!0}break;case n.Commands.On:if(Pn(o)&&Mn(o.type)){const{type:t,rules:n}=o;await xt(e,t,n)}break;case n.Commands.Ready:a=!0;break;case n.Commands.Run:r=await Hn(e,o,c),a=!0;break;case n.Commands.Session:a=!0;break;case n.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Rn(e));break;case n.Commands.User:Pn(o)&&(xn(e.user,o,{shallow:!1}),Tn(e,n.Commands.User),i=o,a=!0);break;default:return e.logger.warn("unknown command",{command:t}),En({ok:!1})}if(a){const n=await rn(e,t,void 0,i);c.push(...n.deliveries),hn(n.deliveries);const o=vn(await wn(e),await mn(e,c));if(r&&!1===r.ok){const e={...o.failed??{},...r.failed??{}};r={...o,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else r=o}return r||En({ok:!0})}()}finally{u()}}function Kn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Ln(e,t,n){return Fn(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function zn(e,t,n){return Fn(e,Kn(e,t),n,{globals:{},user:{},consent:{}})}function Fn(e,t,n,o){const s=t.name;if("string"!=typeof s)throw new Dn(void 0===s?"Event name is required":"Event name is invalid");if(!s)throw new Dn("Event name is required");const[r,i]=s.split(" ");if(!r||!i)throw new Dn("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${r} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:m=jn(),trigger:v="",entity:w=r,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},_=S.count??(e.count+=1),E=S.trace??n?._meta.trace??e.trace,q={...S,count:_};void 0!==E&&(q.trace=E);const O=e.name??S.platform??"default",C=e.release??"4.8.1-next-1792019907609";q.release={...S.release,[O]:C};return{name:c,data:u,context:d,globals:xn(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:q}}function Vn(e,t,n){return Ln(e,Kn(e,t),n)}async function Un(e,t){const n=[];return vn(await Hn(e,t,n),await mn(e,n))}async function Hn(e,t,o){e.allowed=!0,e.timing=Date.now(),e.trace=In(),e.count=0,t&&(t.consent&&(e.consent=xn(e.consent,t.consent),Tn(e,n.Commands.Consent)),t.user&&(e.user=xn(e.user,t.user),Tn(e,n.Commands.User)),t.globals&&(e.globals=xn(e.config.globalsStatic||{},t.globals),Tn(e,n.Commands.Globals)),t.custom&&(e.custom=xn(e.custom,t.custom),Tn(e,n.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await dt(e);const s=await nn(e);let r=!0;const i={};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:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(i,t.failed)}}hn(s);const a=await wn(e);if(o.push(...s),r)return a;const c={...a.failed??{},...i};return{...a,ok:!1,...Object.keys(c).length>0?{failed:c}:{}}}var Gn="collector.next";async function Qn(e,t,n={}){const o=n.ingest??r(n.id||"unknown"),s=e.config.next;if(void 0===s)return{copies:[{event:t,ingest:o}],respond:n.respond};const i=await Ze(e,e.transformers||{},s,t,o,n.respond,Gn),a=i.respond??n.respond;return 0===i.copies.length?(e.logger.debug("Event dropped by collector.next"+(i.droppedBy?` (${i.droppedBy})`:"")),j(e,t,o,{reason:"dropped",by:i.droppedBy,at:Gn}),{copies:[],respond:a,dropped:!0}):i.stopped?{copies:[],respond:a}:{copies:i.copies.map(t=>({event:zn(e,t.event,t.ingest),ingest:t.ingest})),respond:a}}import{OBSERVE_STORAGE_KEY as Nn,createBatchedPoster as Yn,createTelemetryObserver as Xn,parseObserveCredential as Jn}from"@walkeros/core";import{assign as Zn,createLogger as eo}from"@walkeros/core";import{createIngest as to,emitStep as no,FatalError as oo,getGrantedConsent as so,getSpanId as ro,InvalidEventError as io,processEventMapping as ao,tryCatchAsync as co,useHooks as uo}from"@walkeros/core";function lo(e,t){const n=uo(async(n,o={})=>await co(async()=>{if(!e.allowed){const t=G(e.config.queueMax),s=Q(e.preRunQueue,{event:n,options:o},{max:t});if(s.dropped>0){const n=ie(e.status,"collector.preRun","queue",s.dropped);Y(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&X(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:s.dropped}),En({ok:!0})}const s=Date.now(),{id:r,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f=a,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;let h=i??to(r||"unknown");if(c){const t=await ao(p,c,e);if(t.ignore)return En({ok:!0});if(c.consent){const n=t.event.consent;if(!so(c.consent,e.consent,n)){const o=r?`source.${r}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),j(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),En({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=r?`source.${r}.next`:void 0,o=await Ze(e,e.transformers||{},u,p,h,f,n);if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),j(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),En({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),En({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Ln(e,t(n.event),n.ingest);return wn(e,o,{id:r,ingest:n.ingest,respond:f},g)}));if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return n[0]??En({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=Vn(e,p,h),v=await wn(e,m,{id:r,ingest:h,respond:f},g);if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return v},t=>{if(t instanceof oo)throw t;if(t instanceof io){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}),En({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...ae(t),event:n.name}),En({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id&&""!==t.id?t:{...t,id:ro()},r="string"==typeof s.id?s.id:"",i=O(s,o?.ingest,e),a=Date.now(),c=C(e,"collector.push","collector","in",r,a,i);c.inEvent=s,no(e,c);try{const t=await n(s,o),c=Date.now(),u=C(e,"collector.push","collector","out",r,c,i);return u.durationMs=c-a,u.outEvent=t,no(e,u),t}catch(t){const n=Date.now(),o=C(e,"collector.push","collector","error",r,n,i);throw o.durationMs=n-a,o.error=x(t),no(e,o),t}}}import{FatalError as fo,useHooks as po,tryCatchAsync as go}from"@walkeros/core";import{isObject as ho}from"@walkeros/core";var mo="elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })";import{emitStep as vo,useHooks as wo}from"@walkeros/core";function yo(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,s=Math.floor(t*n),r=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of r)void 0!==o.expires&&o.expires<=e&&(r.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref());return{type:"memory",config:{},get(e){const t=r.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(r.delete(e),i.evictions_ttl++,void i.misses++):(r.delete(e),r.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!r.has(e);a||r.delete(e),r.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,r.size>t&&function(){if(r.size<=t)return;const e=r.size-s;let n=0;for(const t of r.keys()){if(n>=e)break;r.delete(t),n++}i.evictions_entries+=n}()},delete(e){r.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),r.clear()}}}import{compileMatcher as bo,emitStep as ko,readCacheEnvelope as So,wrapCacheEnvelope as _o}from"@walkeros/core";function Eo(e,t){const{cacheConfig:n,cacheStore:o,namespace:s,logger:r,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=C(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},ko(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?bo(e.match):()=>!0,ttl:e.ttl})),l=e=>`${s}:${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),s=await o.get(n),r=So(s);if(void 0!==r){if(!("expired"in r))return u.hits++,c(t,"hit"),r.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=p.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(async()=>{try{const s=await e.get(t);if(void 0===s)return;const r=f(t,s);if(r)try{const e=1e3*r.ttl;await o.set(n,_o(s,e),e),u.populates++}catch(e){g("set",t,e)}return s}finally{p.delete(n)}})();return p.set(n,a),a},async set(t,n,s){u.writes++,await e.set(t,n,s);const r=f(t,n);if(r)try{const e=1e3*r.ttl;await o.set(l(t),_o(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(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;r?r.warn(o,ae(n)):console.warn(o,n)}}function qo(e,t,n){const o=`store.${n}`,s=wo(t.get,"StoreGet",e.hooks,e.logger),r=wo(t.set,"StoreSet",e.hooks,e.logger),i=wo(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),r=C(e,o,"store","in","",n);r.meta={op:"get",key:t},vo(e,r);try{const r=await s(t),i=Date.now(),a=C(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},vo(e,a),r}catch(s){const r=Date.now(),i=C(e,o,"store","error","",r);throw i.durationMs=r-n,i.meta={op:"get",key:t},i.error=x(s),vo(e,i),s}},t.set=async(t,n,s)=>{const i=Date.now(),a=C(e,o,"store","in","",i);a.meta={op:"set",key:t},vo(e,a);try{await r(t,n,s);const a=Date.now(),c=C(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},vo(e,c)}catch(n){const s=Date.now(),r=C(e,o,"store","error","",s);throw r.durationMs=s-i,r.meta={op:"set",key:t},r.error=x(n),vo(e,r),n}},t.delete=async t=>{const n=Date.now(),s=C(e,o,"store","in","",n);s.meta={op:"delete",key:t},vo(e,s);try{await i(t);const s=Date.now(),r=C(e,o,"store","out","",s);r.durationMs=s-n,r.meta={op:"delete",key:t},vo(e,r)}catch(s){const r=Date.now(),i=C(e,o,"store","error","",r);throw i.durationMs=r-n,i.meta={op:"delete",key:t},i.error=x(s),vo(e,i),s}}}async function Oo(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,config:r={},env:i={}}=s,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:r,env:i,reportError:ce(e,"store",o,a)},u=await t(c);n[o]=u}const o=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function s(r){const i=t[r];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(r),t=o.slice(-1===e?0:e).concat(r).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[r]="GRAY",o.push(r);const a=e[r].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${r}" cache.store references "${a}", which is not declared in flow.stores`);s(a)}o.pop(),t[r]="BLACK",n.push(r)}for(const n of Object.keys(e))"WHITE"===t[n]&&s(n);return n}(o);for(const t of s){const s=o[t].cache;if(!s)continue;let r,i;void 0!==s.store?(r=n[s.store],i=s.store):(n.__cache||(n.__cache=yo()),r=n.__cache,i="__cache");const a=s.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=Eo(n[t],{storeId:t,cacheConfig:s,cacheStore:r,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&qo(e,o,t);return n}async function Co(e){const t=Zn({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=eo(n),s={...t.globalsStatic,...e.globals},r={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,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&&(r.name=e.name),void 0!==e.release&&(r.release=e.release),void 0!==e.next&&(t.next=e.next),r.push=lo(r,e=>Kn(r,e)),r.command=function(e,t){return po(async(n,o,s)=>await go(async()=>await t(e,n,o,s),t=>{if(t instanceof fo)throw t;return e.status.failed++,e.logger.error("command failed",{...ae(t),command:n}),En({ok:!1})})(),"Command",e.hooks,e.logger)}(r,Bn),r.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error(mo,{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,s,...r)=>{if("string"==typeof t&&t.startsWith("walker ")){o(r)&&n(t);const i=t.replace("walker ","");return e.command(i,s)}let i;if("string"==typeof t)i={name:t},ho(s)?i.data=s:void 0!==s&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return En({ok:!1});i={...t},void 0!==s&&n(String(i.name))}return o(r)&&n(String(i.name)),e.push(i)}}(r);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(r.stores=await Oo(r,i),function(e,t,n){const o=new Map;for(const[n,s]of Object.entries(e))t[n]&&o.set(s,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))s(t.env);function s(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const s=o.get(n);s&&(e[t]=s)}}}(i,r.stores,e)):Object.keys(i).length>0&&o.warn("stores: not in this build, config ignored"),r.stores.__cache||(r.stores.__cache=yo()),r.destinations=await On(r,e.destinations||{}),r.transformers=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,env:r={}}=s;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=Te(s,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=ze(s,"before"),{config:a}=ze({...s,config:i},"next"),c=Object.keys(r).length>0?{...a,env:r}:a,{cache:u}=s,d=u?{...c,cache:u}:c,l=s.config?.state??s.state;A(e,De("transformer",o),l);const f=void 0!==l&&void 0===d.state?{...d,state:l}:d,p=e.logger.scope("transformer").scope(o),g={collector:e,logger:p,id:o,ingest:Ee(o),config:f,env:r,reportError:ce(e,"transformer",o,p)},h=Ke(s);for(const t of Le(s))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await Be(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);void 0!==s.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:s.before}),void 0!==s.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:s.next}),void 0!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(r,e.transformers||{}),r}var xo=globalThis;function jo(e){try{const t=xo.window;if(!t)return;t.localStorage.getItem(Nn)===e&&t.localStorage.removeItem(Nn)}catch{}}function Io(e,t){return void 0===t?e:n=>e({...n,release:t})}function Do(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=xo.window,t=xo.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Nn);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),s=t??function(){try{return xo.window?.localStorage.getItem(Nn)??null}catch{return null}}();if(!s)return;const r=Jn(s);if(!r)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),jo(s)):e.logger.warn("observe: malformed credential ignored"));if(r.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{xo.window?.localStorage.setItem(Nn,e)}catch{}}(s),null!==t&&function(){const e=xo.window,t=xo.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),s=o>=0?n.slice(o):"",r=o>=0?n.slice(0,o):n,i=r.indexOf("?"),a=i>=0?r.slice(0,i):r,c=new t(i>=0?r.slice(i+1):"");c.delete(Nn);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${s}`)}catch{}}();const a=Yn({url:`${n.url}/ingest/${r.ses}`,token:r.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(jo(s),i&&e.observers.delete(i))}});i=Xn(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Io(a,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(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const s=n.level;void 0!==s&&(e.observeLevel=()=>s),e.observers.add(Xn(Io(Yn({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function $o(e){const t=e??{},n=await Co(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?Do(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await ut(n,t.sources||{});const{consent:o,user:s,globals:r,custom:i}=t;o&&await n.command("consent",o),s&&await n.command("user",s),r&&await n.command("globals",r),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}export{e as Code,t as Commands,n as Const,Z as DEFAULT_BREAKER_COOLDOWN_MS,J as DEFAULT_BREAKER_THRESHOLD,se as DEFAULT_DLQ_MAX,mo as ELB_IGNORED_ARGUMENTS,gn as addDestination,ce as buildReportError,ie as bumpDropped,jt as callDestinationOn,Bn as commonHandleCommand,zn as completeEvent,Ln as createEvent,lo as createPush,En as createPushResult,Sn as destinationInit,_n as destinationPush,Vn as enrichEvent,re as ensureDestStatus,Et as enterCascade,ae as errorMeta,Ht as fireCallbacks,it as flushSourceQueueOn,$ as getCacheStore,On as initDestinations,ct as initSource,ut as initSources,oe as isBreakerProbePermitted,yt as isRequireSatisfied,at as isSourceStarted,vt as isStateDelivery,wt as isStatePresent,Cn as mergeEnvironments,xt as on,on as onApply,Kn as prepareEvent,s as processConsent,wn as pushToDestinations,tn as redeliverStateAtRun,qn as registerDestination,te as resolveBreakerConfig,Un as runCollector,Qn as runCollectorNext,et as runTransformerBefore,Ze as runTransformerChain,kt as setMark,St as shouldDeliver,$o as startFlow,Fe as transformerInit,Ve as transformerPush,T 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 s(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=o(e.consent,n),{update:n}}import{createIngest as r}from"@walkeros/core";import{assign as i,createMappingRoot as a,clone as c,compileCache as u,checkCache as d,storeCache as l,createIngest as f,debounce as p,emitStep as g,getId as h,getGrantedConsent as m,isDefined as v,isFunction as w,isObject as y,OBSERVE_ENV_KEY as b,processEventMapping as k,stepId as S,tryCatchAsync as _,useHooks as E}from"@walkeros/core";import{emitStep as q}from"@walkeros/core";function O(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function C(e,t,n,o,s,r=Date.now(),i){const a={flowId:e.name??"default",stepId:t,stepType:n,phase:o,eventId:s,timestamp:new Date(r).toISOString(),elapsedMs:r-e.status.startedAt};return i?.traceId&&(a.traceId=i.traceId),i?.sourceId&&(a.sourceId=i.sourceId),i?.parentEventId&&(a.parentEventId=i.parentEventId),a}function x(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function j(e,t,n,o){e.status.in++;const s=C(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),O(t,n,e));s.skipReason=o.reason,"consent"===o.reason?(s.consent={...o.consent},s.meta={at:o.at,required:{...o.required}}):s.meta={by:o.by??"route",at:o.at},q(e,s)}import{applyState as I,compileState as D}from"@walkeros/core";function $(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function M(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?D(e):void 0}function P(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?I(t,t=>function(e,t){return e?t.stores[e]:t.stores.__cache}(t,e),n,e,o):Promise.resolve(n)}function A(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}import{observeEnv as R}from"@walkeros/core";function W(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))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 s of e)o.push(W(s,t,n+1));return o}const s={};t.set(e,s);for(const[o,r]of Object.entries(e))s[o]="function"==typeof r?r:W(r,t,n+1);return s}function T(e){const{simulation:t,...n}=e,o={},s=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:W(t,s,1);const r=R(o,t);return{wrappedEnv:r.env,calls:r.calls,unresolved:r.unresolved}}function B(e,t){try{return e[t]}catch{return"[unreadable]"}}function K(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 s=e;if(t.has(s))return"[circular]";if(o>=6)return"[truncated]";let r;t.add(s);try{if(Array.isArray(s))r=s.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(s)){const e={};for(const t of Object.keys(s))e[t]=n(B(s,t),o+1);r=e}else r=function(e){try{return String(e)}catch{return"[object]"}}(s)}catch{r="[unreadable]"}return t.delete(s),r};return e.map(e=>n(e,0))}function L(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=function(e){return e.map(e=>({fn:e.fn,args:K(e.args),ts:e.ts}))}(t))}import{isArray as z,FatalError as F}from"@walkeros/core";import{tryCatch as V,tryCatchAsync as U}from"@walkeros/core";import{stepId as H}from"@walkeros/core";function G(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function Q(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 s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var N=new WeakMap;function Y(e,t,n,o){N.get(e)||(N.set(e,!0),t.warn(n,o))}function X(e){N.delete(e)}var J=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,s){if("partial"===n)return;const r=function(e,t){return e[t]||(e[t]={state:"closed",consecutiveFailures:0}),e[t]}(e,t);return"success"===n?(r.consecutiveFailures=0,r.state="closed",r.probing=!1,void(r.openUntil=void 0)):(r.consecutiveFailures+=1,"half-open"===r.state?(r.state="open",r.probing=!1,void(r.openUntil=ee()+s)):void(r.consecutiveFailures>=o&&(r.state="open",r.probing=!1,r.openUntil=ee()+s)))}function oe(e,t){return!e||("closed"===e.state||"half-open"===e.state||void 0!==e.openUntil&&t>=e.openUntil)}var se=100;function re(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function ie(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(s[n]??0)+o,s[n]}function ae(e){const t={error:e instanceof Error?e.message:String(e)};if(e instanceof Error&&e.name&&"Error"!==e.name&&(t.name=e.name),"object"==typeof e&&null!==e&&"code"in e){const n=e;"number"!=typeof n.code&&"string"!=typeof n.code||(t.code=n.code)}return t}function ce(e,t,n,o,s){const r=H(t,n);return(t,i)=>{try{if(i)return s?function(e,t,n,o,s,r){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??se},c=Q(i,[o,s],a);if(c.dropped>0){const t=ie(e.status,H("destination",n),"dlq",c.dropped);Y(i,r,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&X(i);const u=re(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=te(t.config.breaker);if(d){const o=t.config.id||n;ne(e.status.breakers,H("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,s,n,i,t,o):e.status.failed++,void o.error("report error",{...ae(t),event:i.name});e.status.connectionErrors[r]=(e.status.connectionErrors[r]??0)+1,o.error("connection error",ae(t))}catch{}}}import{createIngest as ue,FatalError as de,getMappingValue as le,getSpanId as fe,parseTraceparent as pe,isScope as ge,tryCatchAsync as he,compileCache as me,checkCache as ve,storeCache as we,applyUpdate as ye,createMappingRoot as be,stepId as ke}from"@walkeros/core";import{advanceChain as Se,clone as _e,createIngest as Ee,deriveSpanId as qe,emitStep as Oe,FatalError as Ce,isChainContinuation as xe,isObject as je,startChain as Ie,stepId as De,tryCatchAsync as $e,useHooks as Me,compileCache as Pe,checkCache as Ae,storeCache as Re,createMappingRoot as We,validateStepEntry as Te,processEventMapping as Be,getTransformerMapping as Ke,getTransformerMappingWarnings as Le}from"@walkeros/core";function ze(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function Fe(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",s=e.logger.scope(`transformer:${o}`),r={collector:e,logger:s,id:n,ingest:Ee(n),config:t.config,env:tt(t.config.env),reportError:ce(e,"transformer",n,s)};s.debug("init");const i=await Me(t.init,"TransformerInit",e.hooks,e.logger)(r);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},s.debug("init done")}return!0}async function Ve(e,t,n,o,s,r){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:s,config:t.config,env:{...tt(t.config.env),...r?{respond:r}:{}},reportError:ce(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=O(o,s,e),l=Date.now(),f=C(e,De("transformer",n),"transformer","in",u,l,d);f.inEvent=o,Oe(e,f);try{const s=await Me(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),i=C(e,De("transformer",n),"transformer","out",u,r,d);return i.durationMs=r-l,i.outEvent=s,Oe(e,i),a.debug("push done"),s}catch(t){const o=Date.now(),s=C(e,De("transformer",n),"transformer","error",u,o,d);throw s.durationMs=o-l,s.error=x(t),Oe(e,s),t}}function Ue(e){return"string"==typeof e.id?e.id:""}function He(e,t){const n=Ue(e);return""!==n&&""===Ue(t)?{...t,id:n}:t}function Ge(e,t,n,o){const s=function(e){return{...e,_meta:{...e._meta,path:[...e._meta.path]}}}(n),r=_e(t),i=Ue(e);if(""===i)return{event:r,ingest:s};s._meta.parentEventId=i;const a=Ue(r);return""!==a&&a!==i||(r.id=qe(i,o)),{event:r,ingest:s}}function Qe(e,t){return{copies:e,respond:t}}function Ne(e,t){if(void 0===t)return e.rest;const n=e.ownNext?e.rest.slice(1):e.rest;return[{route:t,ancestry:e.ancestry},...n]}async function Ye(e,t,n){const o=await Promise.all(t.map((t,n)=>$e(Xe,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,ae(t)),{copies:[]}))(e,t))),s=[];let r,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===r&&(r=e.droppedBy):s.push(...e.copies)}),0===s.length?{copies:s,respond:i,...a?{stopped:!0}:{},...void 0!==r?{droppedBy:r}:{}}:Qe(s,i)}async function Xe(e,t){const{ingest:n}=t;let{stack:o,event:s,respond:r}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=Se(o,We(n,s),e.transformers);if("done"===i.kind)return Qe([{event:s,ingest:n}],r);if("stop"===i.kind)return{copies:[],respond:r,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=s;return Ye(e,i.branches.map((e,o)=>({stack:e,...Ge(t,t,n,o),respond:void 0})),r)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await Je(e,t,s,n,r,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Ye(e,c.copies,r);s=c.event,r=c.respond,o=c.stack}}async function Je(e,t,n,o,s,r){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=s;const p=(e=t.rest)=>({kind:"continue",event:He(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return i.logger.warn(`Transformer not found: ${u}`),p();const h=d.config?.cache,m=h?Pe(h):void 0,v=m?$(m,i):void 0;let w=r?.cacheMiss;if(!r){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});o._meta.hops++,o._meta.path.push(u);if(!await $e(Fe,e=>{if(e instanceof Ce)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...ae(e)}),!1})(i,d,u))return g({copies:[],respond:f});if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(m&&v){const e=await Ae(m,v,We(o,l));if("HIT"===e?.status&&e.value){if(l=e.value,m.stop){return g({copies:[{event:He(n,l),ingest:o}],respond:f,stopped:!0})}return p()}"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await et(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[s]=e.copies;if(e.copies.length>1||s.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=s.event}}const y=M(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?P(i,k,e,o):e;b&&b.length>0&&(l=await P(i,b,l,o));const _=await $e(Ve,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",ae(e)),!1))(i,d,u,l,o,f);if(!1===_)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(_)&&1!==_.length){if(0===_.length)return g({copies:[],respond:f});const e=l,n=[];for(let s=0;s<_.length;s++){const r=_[s],i=await S(r.event||e);n.push({stack:Ne(t,r.next),...Ge(e,i,o,s),respond:f})}return{kind:"fork",copies:n}}const E=Array.isArray(_)?_[0]:_;let q;return E&&"object"==typeof E&&(E.respond&&(f=E.respond),E.event&&(l=E.event),q=E.next),l=await S(l),w&&v&&Re(v,w.key,l,w.ttl),p(Ne(t,q))}async function Ze(e,t,n,o,s,r,i){const a=s??Ee("string"==typeof n?n:"chain");return void 0===n?Qe([{event:o,ingest:a}],r):(i&&(a._meta.chainPath=i),Xe({collector:e,transformers:t,chainContext:i},{stack:xe(n)?n:Ie(n),event:o,ingest:a,respond:r}))}async function et(e,t,n,o,s,r,i){const a=t[n],c=a?a.config.before:void 0,u=await Ze(e,t,c,o,s,r,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}function tt(e){return e&&je(e)?e:{}}var nt=1e4;function ot(e){return"number"==typeof e&&e>0?e:nt}var st=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function rt(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new st(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}async function it(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const s=n||t.config?.id||"unknown";for(const{type:n,data:r}of o){if(vt(n)&&!St(e,t,n))continue;const o=t.on;let i=!1;await he(()=>rt(Promise.resolve(o(n,r)),nt,`Source "${s}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof de)throw t;t instanceof st?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,...ae(t)})})(),vt(n)&&!i&&kt(e,t,n)}}function at(e){return Boolean(e.config.init)&&!e.config.require?.length}async function ct(e,t,n){const{code:o,config:s={},env:r={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=s.state??n.state,f=M(l);A(e,ke("source",t),l);const p=u,g=p?me({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),v=async(n,o,r)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:fe()};let d=[{event:u,ingest:r.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Ze(e,e.transformers||{},c,u,r.ingest,r.respond,n);if(0===o.copies.length)return j(e,u,r.ingest,{reason:"dropped",by:o.droppedBy,at:n}),En({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),d=o.copies}if(g){const t=$(g,e);if(t){const n=be(r.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 ye(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),r.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&r.respond){const s=r.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{we(t,u,n,d),a?i=(async()=>{const t=await ye(n,a,c,e);s(t)})():s(n)};r.respond=l}"MISS"!==o.status||g.stop||we(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await P(e,f,t.event,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of d)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:r.respond,mapping:s,preChain:a});return i&&await i,l},w=async n=>{const o=ue(t),r=pe(ge(n)?n?.headers?.traceparent:void 0);if(r&&(o._meta.trace=r.trace,o._meta.parentEventId=r.parentSpan),!s.ingest||void 0===n)return o;const i=await le(n,s.ingest,{collector:e});return{...o,...i,_meta:o._meta}},y=e.logger.scope("source").scope(t),b={...r,push:async(e,n={})=>{const o={ingest:ue(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:y},k={collector:e,logger:y,id:t,config:s,env:b,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ce(e,"source",t,y)},S=await he(o,n=>{if(n instanceof de)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...ae(n)})})(k);if(!S)return;const _=S.type||"unknown",E=e.logger.scope(_).scope(t);return b.logger=E,i&&(S.config={...S.config,primary:i}),S}async function ut(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const t=await ct(e,o,s);if(!t)continue;const r=s.config?.require;t.config={...t.config,init:!1,...r?{require:[...r]}:{}},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 he(n.init.bind(n),n=>{if(n instanceof de)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...ae(n)})})(),o||(n.config.init=!0,at(n)&&await it(e,n,t))}return await dt(e),n}async function dt(e){for(const[t,n]of Object.entries(e.sources)){if(at(n))continue;const o=n.config.require;if(!o?.length)continue;const s=o.filter(t=>!yt(e,t));s.length!==o.length&&(n.config.require=s,at(n)&&await it(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 s=o.filter(t=>!yt(e,t));if(n.config&&(n.config.require=s),s.length>0)continue;delete e.pending.destinations[t];const r=qn(n);!1!==r.config.queue&&(r.queuePush=[...e.queue]),e.destinations[t]=r,await Zt(e,r,t)}}function lt(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 ft=!1;function pt(){ft||(ft=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function gt(e,t,n,o){if(n instanceof F)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...ae(n)})}var ht=["consent","user","globals","custom"];function mt(e){return ht.includes(e)}function vt(e){return mt(e)}function wt(e,t){return mt(t)&&Object.keys(e[t]).length>0}function yt(e,t){if(mt(t))return wt(e,t);switch(t){case n.Commands.Run:case n.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function bt(e,t){return e.cellVersion?.[String(t)]??0}function kt(e,t,n){Ut(e,t,n,bt(e,n))}function St(e,t,n){return e.allowed&&bt(e,n)>function(e,t,n){const o=e.delivery.get(t),s=o?.[String(n)];return void 0===s?-1:s}(e,t,n)}var _t=8;function Et(e){const t=e.cascade;if(t&&!qt.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,qt.set(n,(qt.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(qt.get(n)||1)-1;t>0?qt.set(n,t):(qt.delete(n),e.cascade===n&&(e.cascade=void 0))}}var qt=new WeakMap;function Ot(e,t,n){const o=e.cascade;if(!o)return!0;let s=o.counts.get(t);s||(s={},o.counts.set(t,s));const r=String(n),i=(s[r]||0)+1;return s[r]=i,i<=_t||(i===_t+1&&e.logger.error("state delivery did not converge",{type:r}),!1)}function Ct(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function xt(e,t,n){if(!lt(e))return void pt();const o=e.on,s=o[t]||[],r=z(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,Ht(e,t,r)}async function jt(e,t,n,o,s){const r=t.on;if(!r)return!0;const i=vt(o);if(i&&(It.get(t)||Dt.has(t)))return Lt(e,t,o),It.get(t)||$t.add(t),!1;const a=i?bt(e,o):0,c=i&&function(e,t,n,o){if(Tt.get(t)?.has(String(n)))return!0;const s=e.delivery?.get(t)?.[String(n)];return void 0===s||s<o-1}(e,t,o,a)?Gt(e,o):s,u=t.type||"unknown",d=e.logger.scope(u).scope("on").scope(o),l={collector:e,logger:d,id:n,config:t.config,data:c,env:Cn(t.env,t.config.env),reportError:ce(e,"destination",n,d,t)};i&&(Ft(t,o),function(e,t,n){let o=Rt.get(e);o||(o={},Rt.set(e,o));const s=String(t),r=o[s];(void 0===r||r<n)&&(o[s]=n)}(t,o,a),Dt.add(t));const f=ot(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await U(()=>(p=Promise.resolve(r(o,l)),rt(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof st&&(h=!0),gt(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){Dt.delete(t),m&&$t.delete(t);const s=Tt.get(t);g?(Ut(e,t,o,a),s?.delete(String(o))):Lt(e,t,o),h?function(e,t,n,o,s,r,i){It.set(t,(It.get(t)||0)+1);const a=()=>{const r=(It.get(t)||0)-1;r>0?It.set(t,r):It.delete(t),Bt(t,o),Wt(t,o,s),Vt(e,t),i.debug("late settle after timeout"),$t.delete(t),e.allowed&&e.destinations[n]===t&&function(e,t,n,o){U(async()=>{await Zt(e,t,n),!Pt(t)&&t.queuePush?.length&&await wn(e,void 0,{},{[n]:t})},e=>{o.error("state recovery failed",ae(e))})()}(e,t,n,i)};r.then(a,a)}(e,t,n,o,a,p,d):(Wt(t,o,a),Vt(e,t))}}return i&&!h&&$t.delete(t)&&await Zt(e,t,n),g}var It=new WeakMap,Dt=new WeakSet,$t=new WeakSet;var Mt=new WeakMap;function Pt(e){return Mt.get(e)}var At=new WeakMap,Rt=new WeakMap;function Wt(e,t,n){const o=Rt.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Tt=new WeakMap;function Bt(e,t){const n=Tt.get(e);n?n.add(String(t)):Tt.set(e,new Set([String(t)]))}var Kt=new WeakMap;function Lt(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Bt(t,n),Mt.set(t,{type:n,since:Date.now()})}function zt(e,t){return!!Tt.get(t)?.size||ht.some(n=>wt(e,n)&&St(e,t,n))}function Ft(e,t){At.set(e,(At.get(e)||0)+1),Mt.set(e,{type:t,since:Date.now()})}function Vt(e,t){const n=(At.get(t)||0)-1;n>0?At.set(t,n):At.delete(t),function(e,t){if(!Mt.has(t))return;if(At.get(t))return;zt(e,t)||Mt.delete(t)}(e,t)}function Ut(e,t,n,o){let s=e.delivery.get(t);s||(s={},e.delivery.set(t,s));const r=String(n),i=s[r];(void 0===i||i<o)&&(s[r]=o)}function Ht(e,t,o,s){if(!lt(e))return void pt();const r=Gt(e,t,s);if(o.length)switch(t){case n.Commands.Consent:!function(e,t,o){const s=o||e.consent,r=Ct(e,n.Commands.Consent);t.forEach(t=>{St(e,t,n.Commands.Consent)&&Ot(e,t,n.Commands.Consent)&&(Object.keys(s).filter(e=>e in t).forEach(n=>{V(t[n],t=>gt(e,"consent",t,{key:n}))(s,r)}),kt(e,t,n.Commands.Consent))})}(e,o,s);break;case n.Commands.Ready:!function(e,t){if(!e.allowed)return;const o=Ct(e,n.Commands.Ready);t.forEach(t=>{V(t,t=>gt(e,"ready",t))(void 0,o)})}(e,o);break;case n.Commands.Run:!function(e,t){if(!e.allowed)return;const o=Ct(e,n.Commands.Run);t.forEach(t=>{V(t,t=>gt(e,"run",t))(void 0,o)})}(e,o);break;case n.Commands.Session:!function(e,t){if(!e.session)return;const o=Ct(e,n.Commands.Session);t.forEach(t=>{V(t,t=>gt(e,"session",t))(e.session,o)})}(e,o);break;default:{const n=Ct(e,t),s=vt(t);o.forEach(o=>{"function"==typeof o&&(s&&!St(e,o,t)||s&&!Ot(e,o,t)||(V(o,n=>gt(e,"generic",n,{type:t}))(r,n),s&&kt(e,o,t)))});break}}}function Gt(e,t,o){if(mt(t))return o||e[t];switch(t){case n.Commands.Session:return e.session;case n.Commands.Config:return o||e.config;default:return}}async function Qt(e,t,n,o,s){if(!t.on)return!1;if(vt(o)&&!St(e,t,o))return!1;if(vt(o)&&!Ot(e,t,o))return!1;const r=vt(o);if(r&&Nt.has(t))return Yt.add(t),!1;const i=r?bt(e,o):0;r&&Nt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await U(()=>(u=Promise.resolve(a(o,s)),rt(u,nt,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof st&&(d=!0),gt(e,"source",t,{sourceId:n,type:o})})()}finally{r&&!d&&Nt.delete(t)}if(r)if(d){const o=()=>{Nt.delete(t),Yt.delete(t),e.allowed&&e.sources[n]===t&&U(()=>Xt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",ae(t))})()};u.then(o,o)}else Ut(e,t,o,i),Yt.delete(t)&&await Xt(e,t,n);return!1===c}var Nt=new WeakSet,Yt=new WeakSet;async function Xt(e,t,n){const o=Et(e);try{for(const o of ht)await Qt(e,t,n,o,Gt(e,o))}finally{o()}}async function Jt(e,t,n,o,s){if(!t.on)return;const r=vt(o);if(r&&!St(e,t,o))return;const i=Rt.get(t)?.[String(o)];if(r&&void 0!==i&&i>=bt(e,o))return;if(r&&!Ot(e,t,o)){if(t.config.init)return void Lt(e,t,o);const n=t.queueOn=t.queueOn||[],s={type:o,data:Gt(e,o)},r=n[n.length-1];return r&&r.type===o?n[n.length-1]=s:n.push(s),kt(e,t,o),void Tt.get(t)?.delete(String(o))}const a=Kt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:s}),void(r&&(kt(e,t,o),a&&!a.held&&(Ft(t,o),a.held=!0)));await jt(e,t,n,o,s)}async function Zt(e,t,n){if(!t.on)return;const o=Et(e);try{for(const o of ht)(wt(e,o)||Tt.get(t)?.has(String(o)))&&await Jt(e,t,n,o,Gt(e,o))}finally{o()}}function en(e){return(At.get(e)||0)>0}async function tn(e){const t=await nn(e);await Promise.all(t.map(({done:e})=>e))}async function nn(e){if(!lt(e))return pt(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const s=async()=>{for(const t of ht)wt(e,t)&&await Jt(e,o,n,t,Gt(e,t))};t.push(sn(n,o,s()))}for(const t of ht){if(!wt(e,t))continue;const n=Gt(e,t);Ht(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>at(e)).map(([o,s])=>Qt(e,s,o,t,n)))}return t}async function on(e,t,n,o){const{ok:s,deliveries:r}=await rn(e,t,n,o);return await Promise.all(r.map(({done:e})=>e)),s}function sn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}async function rn(e,t,n,o){if(!lt(e))return pt(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let s=n||[];n||(s=e.on[t]||[]);const r=Gt(e,t,o),i=[];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)}o.on&&(at(o)?i.push(Qt(e,o,n,t,r)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:r})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(sn(n,o,Jt(e,o,n,t,r)));let c=!1;if(i.length){c=(await Promise.all(i)).some(Boolean)}for(const[t,n]of Object.entries(e.sources))at(n)&&n.queueOn?.length&&await it(e,n,t);const u=Object.values(e.sources).some(e=>!at(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await dt(e),Ht(e,t,s,o),{ok:!c,deliveries:a}}var an=1e3,cn=1e3,un=3e4,dn=Object.freeze({batched:!0});function ln(e){return e===dn}var fn=" batch-all";function pn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function gn(e,t){const{code:n,config:o={},env:s={},before:r,next:i,cache:a,state:c}=t;if(!w(n.push))return En({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=r?{...u,before:r}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=h(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(A(e,S("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await dt(e);const n=e.destinations[l];return n?wn(e,void 0,{},{[l]:n}):En({ok:!0})}const f={...n,config:d,env:Cn(n.env,s)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Zt(e,f,l),wn(e,void 0,{},{[l]:f})}function hn(e){for(const t of e)Pt(t.destination)&&(t.drain=!0)}async function mn(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:s})=>{if(await o,s&&e.allowed&&!Pt(n)&&n.queuePush?.length&&e.destinations[t]===n)return wn(e,void 0,{},{[t]:n})}))).filter(v)}function vn(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},s={...e.failed??{}};for(const e of t){for(const[t,s]of Object.entries(e.done??{}))n[t]=s,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))s[t]=n,delete o[t];Object.assign(o,e.queued??{})}const r={...e,ok:e.ok&&t.every(e=>e.ok)};return delete r.done,delete r.queued,delete r.failed,Object.keys(n).length&&(r.done=n),Object.keys(o).length&&(r.queued=o),Object.keys(s).length&&(r.failed=s),r}async function wn(e,t,n={},o){if(!e.allowed)return En({ok:!1});if(!t)return yn(e,void 0,n,o);const s=await Qn(e,t,n);if(0===s.copies.length)return En({ok:!0,...s.dropped?{dropped:!0}:{}});const r=[];for(const t of s.copies)r.push(await yn(e,t.event,{id:n.id,ingest:t.ingest,respond:s.respond},o));return r[0]}async function yn(e,t,n,o){const{user:s}=e;if(t){const n=G(e.config.queueMax),o=Q(e.queue,t,{max:n});if(o.dropped>0){const t=ie(e.status,S("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&&X(e.queue);e.status.in++}o||(o=e.destinations);const r=e.transformers||{},p=await Promise.all(Object.entries(o||{}).map(async([o,p])=>{if(p.config.disabled)return{id:o,destination:p,skipped:!0};const h=p.config.id||o,v=S("destination",h),w=te(p.config.breaker);if(w&&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 s=ee();return void 0!==o.openUntil&&s<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=s+n,!1)}(e.status.breakers,v,w.cooldown))return{id:o,destination:p,skipped:!0};const y=t=>{w&&ne(e.status.breakers,v,t,w.threshold,w.cooldown)},b=()=>{w&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,v)},k=t=>{if(!t.length)return;p.queuePush||(p.queuePush=[]);const n=p.queuePush,s=p.config.id||o,r={max:p.config.queueMax??an};let i=0;for(const e of t){i+=Q(n,e,r).dropped}if(i>0){re(e,s);const t=ie(e.status,S("destination",s),"queue",i);Y(n,e.logger.scope(p.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:s,cap:r.max,droppedCount:t})}else n.length<r.max&&X(n)};p.on&&p.config.init&&!Pt(p)&&!en(p)&&zt(e,p)&&await Zt(e,p,o);const E=Pt(p);if(E&&!en(p)&&Date.now()-E.since>=ot(p.config.timeout)&&await Zt(e,p,o),Pt(p)){if(b(),!t)return{id:o,destination:p,skipped:!0};const e=[c(t)];return k(e),{id:o,destination:p,queue:e}}let q=(p.queuePush||[]).map(t=>({...t,consent:e.consent}));p.queuePush=[],t&&q.push(c(t));const x=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:f("unknown");if(!q.length&&!p.queueOn?.length)return b(),{id:o,destination:p,skipped:!0};if(!q.length&&p.queueOn?.length){if(!m(p.config.consent,e.consent))return b(),{id:o,destination:p,skipped:!0};let t=!1;try{t=await Sn(e,p,o,!0)}catch(t){e.status.failed++;const n=p.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),y("transport-failure")}if(Pt(p))return b(),{id:o,destination:p,skipped:!0};if(!t||!p.queuePush?.length)return b(),{id:o,destination:p,skipped:!t};q=p.queuePush.map(t=>({...t,consent:e.consent})),p.queuePush=[]}const j=t=>{const n=e.consent,s=[],r=t.filter(t=>{const r=m(p.config.consent,n,t.consent);if(r)return t.consent=r,s.push(t),!1;const i=C(e,S("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),O(t,x,e));return i.skipReason="consent",n&&(i.consent={...n}),p.config.consent&&(i.meta={required:{...p.config.consent}}),g(e,i),!0});return{allowed:s,skipped:r}},I=e.consent,{allowed:D,skipped:A}=j(q);if(k(A),!D.length)return b(),{id:o,destination:p,queue:q};const R=new Set(p.queuePush);let W=!1;try{W=await Sn(e,p,o,!0)}catch(t){e.status.failed++;const n=p.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),y("transport-failure")}if(!W)return b(),{id:o,destination:p,queue:q};if(Pt(p))return b(),k(D),{id:o,destination:p,queue:D};const T=[];if(e.consent!==I){const t=j(D.map(t=>({...t,consent:e.consent})));D.splice(0,D.length,...t.allowed),T.push(...t.skipped)}const B=p.queuePush||[],K=B.filter(e=>!R.has(e));if(K.length){p.queuePush=B.filter(e=>R.has(e));const t=j(K.map(t=>({...t,consent:e.consent})));D.push(...t.allowed),T.push(...t.skipped)}if(k(T),!D.length)return b(),T.length?{id:o,destination:p,queue:T}:{id:o,destination:p,skipped:!0};let L,z;p.dlq||(p.dlq=[]);const F=p.config.before,V=p.config.next,U=p.config?.cache,H=U?u(U):void 0,G=H?$(H,e):void 0,N=M(p.config?.state),J=N?.filter(e=>"get"===e.mode),Z=N?.filter(e=>"set"===e.mode);let oe=0,ce=0,ue=0;return await Promise.all(D.map(async t=>{let c,u;if(t.user=i(s,t.user),H?.stop&&G){const e=a(x,t),n=await d(H,G,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(c={key:n.key,ttl:n.rule.ttl})}let f=[{event:t,ingest:x}],h=n.respond;if(void 0!==F){const s=`destination.${o}.before`,i=await Ze(e,r,F,t,x,n.respond,s);if(0===i.copies.length){const n=C(e,S("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),O(t,x,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:s},g(e,n),t}i.respond&&(h=i.respond),f=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const m=async(t,n,s)=>{let i=s,c=!1;if(H&&!H.stop&&G){const e=a(n,t??void 0),o=await d(H,G,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(i={key:o.key,ttl:o.rule.ttl},c=!0)}J&&J.length>0&&t&&(t=await P(e,J,t,n));const f=Date.now();let g=!1;const m=await _(_n,n=>{const s=p.type||"unknown";e.logger.scope(s).error("Push failed",{...ae(n),event:t.name}),L=n,g=!0;const r=p.dlq,i=p.config.id||o,a={max:p.config.dlqMax??se},c=Q(r,[t,n],a);if(c.dropped>0){re(e,i);const t=ie(e.status,S("destination",i),"dlq",c.dropped);Y(r,e.logger.scope(p.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:i,cap:a.max,droppedCount:t})}else r.length<a.max&&X(r)})(e,p,o,t,n,h);if(oe+=Date.now()-f,i&&G&&void 0===p.config.mock&&(c?l(G,i.key,m??!0,i.ttl):void 0===u&&(u=m??!0)),!g&&!ln(m)&&Z&&Z.length>0&&t&&(t=await P(e,Z,t,n)),void 0===m||ln(m)||(z=m),ln(m)&&ce++,!g&&V){void 0!==m&&(n._response=m);const s=await Ze(e,r,V,t,n,h,`destination.${o}.next`);s.respond&&(h=s.respond)}return!0};for(const e of f)await m(e.event,e.ingest,c)&&ue++;return c&&G&&void 0!==u&&void 0===p.config.mock&&l(G,c.key,u,c.ttl),t})),{id:o,destination:p,error:L,response:z,totalDuration:oe,batchedCount:ce,allowedCount:D.length,pushedCount:ue,canonicalId:h,breakerConfig:w}})),h={},v={},w={};for(const t of p){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};re(e,t.id);const s=e.status.destinations[t.id],r=Date.now();s.queuePushSize=n.queuePush?.length??0,s.dlqSize=n.dlq?.length??0;const i=t.breakerConfig,a=t.canonicalId?S("destination",t.canonicalId):void 0,c=t=>{i&&a&&ne(e.status.breakers,a,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,w[t.id]=o,s.failed++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.failed++,c("transport-failure");else if(t.queue&&t.queue.length)v[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,a=t.pushedCount??i;(Math.max(0,a-n)>0||0===i)&&(h[t.id]=o,s.count++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return En({event:t,...Object.keys(h).length&&{done:h},...Object.keys(v).length&&{queued:v},...Object.keys(w).length&&{failed:w}})}async function bn(e,t,n,o){const s=await async function(e,t,n,o){const s=t.type||"unknown",r=e.logger.scope(s),i={collector:e,logger:r,id:o,config:t.config,env:Cn(t.env,t.config.env),reportError:ce(e,"destination",o,r,t)};r.debug("init");const a=Date.now();let c;g(e,C(e,S("destination",o),"destination","init","",a));try{c=await E(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),s=C(e,S("destination",o),"destination","error","",n);throw s.durationMs=n-a,s.error=x(t),g(e,s),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===s)return!1;if(t.config=s,t.queueOn?.length){const n=Et(e);!function(e){const t=e.queueOn?.find(({type:e})=>vt(e));t&&Ft(e,t.type),Kt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await jt(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])vt(n)&&Lt(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Kt.get(t);Kt.delete(t),n?.held&&Vt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}var kn=new WeakMap;async function Sn(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 s=kn.get(t);if(s)return s;const r=bn(e,t,t.init,n);kn.set(t,r);try{return await r}finally{kn.delete(t)}}return!0}async function _n(e,t,n,o,s,r){const{config:i}=t,a=await k(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:s,env:{...Cn(t.env,i.env),...r?{respond:r}:{}},reportError:ce(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,f=void 0!==l?.batch,h=f?a.mappingKey||"* *":fn;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[h]){const o={key:h,entries:[],events:[],data:[]},s=pn(l?.batch),r=pn(i.batch),a=s.wait??r.wait??un,c=s.size??r.size??cn,d=s.age??r.age??un,m=Cn(t.env,i.env),v=p(async()=>{const o=t.batches[h],s=o.batched;if(0===s.entries.length)return;const r={key:s.key,entries:s.entries,events:s.events,data:s.data};s.entries=[],s.events=[],s.data=[];const a=r.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...m,...a.respond?{respond:a.respond}:{}},reportError:ce(e,"destination",n,u,t)};u.debug("push batch",{events:r.entries.length});const d=t.config.id||n,l=re(e,d),f=te(t.config.breaker),p=S("destination",d),v=t=>{f&&ne(e.status.breakers,p,t,f.threshold,f.cooldown)},w=Date.now(),b=new Map;let k,q=!1;const j=n=>{const o=t.dlq=t.dlq||[],s={max:t.config.dlqMax??se};let r=0;for(const e of n){r+=Q(o,e,s).dropped}if(r>0){const t=ie(e.status,S("destination",d),"dlq",r);Y(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:s.max,droppedCount:t})}else o.length<s.max&&X(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=r.entries.length;const D=ot(i.timeout),$=await _((o,s)=>rt(Promise.resolve(E(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),D,`Destination "${n}" batch delivery timed out after ${D}ms`),e=>{I=0,q=!0,k=e,j(r.entries.map(t=>[t.event,e])),v("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:r.entries.length})})(r,c);if(y(M=$)&&Array.isArray(M.failed)&&$.failed.length>0){const e=[];for(const t of $.failed){const n=r.entries[t.index];if(!n||b.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);b.set(t.index,o),e.push([n.event,o])}if(e.length>0){j(e),I=Math.max(0,r.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}u.error("Push batch partial failure",{failed:e.length,delivered:I,entries:r.entries.length,causes:[...t.values()]})}}var M;const P=Date.now();r.entries.forEach((t,o)=>{const s=q||b.has(o),i=O(t.event,t.ingest,e),a=C(e,S("destination",n),"destination",s?"error":"flush","string"==typeof t.event.id?t.event.id:"",P,i);if(a.batch={size:r.entries.length,index:o},a.durationMs=P-w,s){const e=q?k:b.get(o);a.error=x(e)}g(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-r.entries.length),I>0&&(l.count+=I,l.lastAt=Date.now(),e.status.out+=I,v("success"))},{wait:a,size:c,age:d});t.batches[h]={batched:o,isDefault:!f,batchFn:()=>{v()},flush:async()=>{await v.flush()}}}const c=t.batches[h];c.batched.entries.push({event:a.event,ingest:s,respond:r,rule:l,data:a.data}),c.batched.events.push(a.event),v(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",m=O(o,s,e),w=Date.now(),b=C(e,S("destination",n),"destination","in",d,w,m);a.mappingKey&&(b.mappingKey=a.mappingKey),a.event.consent&&(b.consent={...a.event.consent}),b.inEvent=a.event,g(e,b);const k=C(e,S("destination",n),"destination","out",d,w,m);a.mappingKey&&(k.mappingKey=a.mappingKey),k.outEvent=a.event,k.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},g(e,k);const q=t.config.id||n,j=re(e,q);return j.inFlightBatch=(j.inFlightBatch??0)+1,c.batchFn(),dn}{let r;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=T({...d.env,simulation:t.calls});d.env=e.wrappedEnv,r=e.calls,e.unresolved.length>0&&(e.wrappedEnv[b]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=O(o,s,e),f=Date.now(),p=C(e,S("destination",n),"destination","in",c,f,l);a.mappingKey&&(p.mappingKey=a.mappingKey),a.event.consent&&(p.consent={...a.event.consent}),p.inEvent=a.event,g(e,p);try{const o=ot(i.timeout),s=await rt(Promise.resolve(E(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),h=C(e,S("destination",n),"destination","out",c,p,l);return h.durationMs=p-f,h.outEvent=a.event,L(h,r),v(s)&&(h.meta={...h.meta,response:s}),a.mappingKey&&(h.mappingKey=a.mappingKey),g(e,h),u.debug("push done"),s}catch(t){const o=Date.now(),s=C(e,S("destination",n),"destination","error",c,o,l);throw s.durationMs=o-f,s.error=x(t),L(s,r),a.mappingKey&&(s.mappingKey=a.mappingKey),g(e,s),t}}}function En(e){return{ok:!e?.failed,...e}}function qn(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:i}=ze(e,"before"),{config:a}=ze({...e,config:i},"next"),c={...t.config,...n,...a};s&&(c.cache=s),void 0!==r&&void 0===c.state&&(c.state=r);const u=Cn(t.env,o);return{...t,config:c,env:u}}async function On(e,t={}){const n={};for(const[o,s]of Object.entries(t))A(e,S("destination",o),s.config?.state??s.code.config?.state??s.state),s.config?.require?.length?e.pending.destinations[o]=s:n[o]=qn(s);return n}function Cn(e,t){return e||t?t?e&&y(e)&&y(t)?{...e,...t}:t:e:{}}import{assign as xn,getSpanId as jn,getTraceId as In,InvalidEventError as Dn,isFunction as $n,isString as Mn}from"@walkeros/core";import{isObject as Pn}from"@walkeros/core";var An=5e3;async function Rn(e){const t=e.logger;await Wn(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 s=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`)),An)})])}catch(t){s.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Wn(e.destinations,"destination",t),await Wn(e.transformers,"transformer",t),await Wn(e.stores,"store",t)}async function Wn(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const s=o.destroy;if(!s)return;const r=o.type||"unknown",i=n.scope(r),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([s(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),An)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Tn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Bn(e,t,o){let r,i,a=!1;const c=[],u=Et(e);try{return await async function(){switch(t){case n.Commands.Config:Pn(o)&&(xn(e.config,o,{shallow:!1,merge:!1}),i=o,a=!0);break;case n.Commands.Consent:if(Pn(o)){const{update:t}=s(e,o);Tn(e,n.Commands.Consent),i=t,a=!0}break;case n.Commands.Custom:Pn(o)&&(e.custom=xn(e.custom,o),Tn(e,n.Commands.Custom),i=o,a=!0);break;case n.Commands.Destination:Pn(o)&&"code"in o&&Pn(o.code)&&(r=await gn(e,o));break;case n.Commands.Globals:Pn(o)&&(e.globals=xn(e.globals,o),Tn(e,n.Commands.Globals),i=o,a=!0);break;case n.Commands.Hook:if(Pn(o)&&Mn(o.name)&&$n(o.fn)){const{name:t,fn:n}=o;e.hooks[t]=n,i=o,a=!0}break;case n.Commands.On:if(Pn(o)&&Mn(o.type)){const{type:t,rules:n}=o;await xt(e,t,n)}break;case n.Commands.Ready:a=!0;break;case n.Commands.Run:r=await Hn(e,o,c),a=!0;break;case n.Commands.Session:a=!0;break;case n.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Rn(e));break;case n.Commands.User:Pn(o)&&(xn(e.user,o,{shallow:!1}),Tn(e,n.Commands.User),i=o,a=!0);break;default:return e.logger.warn("unknown command",{command:t}),En({ok:!1})}if(a){const n=await rn(e,t,void 0,i);c.push(...n.deliveries),hn(n.deliveries);const o=vn(await wn(e),await mn(e,c));if(r&&!1===r.ok){const e={...o.failed??{},...r.failed??{}};r={...o,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else r=o}return r||En({ok:!0})}()}finally{u()}}function Kn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Ln(e,t,n){return Fn(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function zn(e,t,n){return Fn(e,Kn(e,t),n,{globals:{},user:{},consent:{}})}function Fn(e,t,n,o){const s=t.name;if("string"!=typeof s)throw new Dn(void 0===s?"Event name is required":"Event name is invalid");if(!s)throw new Dn("Event name is required");const[r,i]=s.split(" ");if(!r||!i)throw new Dn("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${r} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:m=jn(),trigger:v="",entity:w=r,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},_=S.count??(e.count+=1),E=S.trace??n?._meta.trace??e.trace,q={...S,count:_};void 0!==E&&(q.trace=E);const O=e.name??S.platform??"default",C=e.release??"4.8.1";q.release={...S.release,[O]:C};return{name:c,data:u,context:d,globals:xn(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:q}}function Vn(e,t,n){return Ln(e,Kn(e,t),n)}async function Un(e,t){const n=[];return vn(await Hn(e,t,n),await mn(e,n))}async function Hn(e,t,o){e.allowed=!0,e.timing=Date.now(),e.trace=In(),e.count=0,t&&(t.consent&&(e.consent=xn(e.consent,t.consent),Tn(e,n.Commands.Consent)),t.user&&(e.user=xn(e.user,t.user),Tn(e,n.Commands.User)),t.globals&&(e.globals=xn(e.config.globalsStatic||{},t.globals),Tn(e,n.Commands.Globals)),t.custom&&(e.custom=xn(e.custom,t.custom),Tn(e,n.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await dt(e);const s=await nn(e);let r=!0;const i={};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:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(i,t.failed)}}hn(s);const a=await wn(e);if(o.push(...s),r)return a;const c={...a.failed??{},...i};return{...a,ok:!1,...Object.keys(c).length>0?{failed:c}:{}}}var Gn="collector.next";async function Qn(e,t,n={}){const o=n.ingest??r(n.id||"unknown"),s=e.config.next;if(void 0===s)return{copies:[{event:t,ingest:o}],respond:n.respond};const i=await Ze(e,e.transformers||{},s,t,o,n.respond,Gn),a=i.respond??n.respond;return 0===i.copies.length?(e.logger.debug("Event dropped by collector.next"+(i.droppedBy?` (${i.droppedBy})`:"")),j(e,t,o,{reason:"dropped",by:i.droppedBy,at:Gn}),{copies:[],respond:a,dropped:!0}):i.stopped?{copies:[],respond:a}:{copies:i.copies.map(t=>({event:zn(e,t.event,t.ingest),ingest:t.ingest})),respond:a}}import{OBSERVE_STORAGE_KEY as Nn,createBatchedPoster as Yn,createTelemetryObserver as Xn,parseObserveCredential as Jn}from"@walkeros/core";import{assign as Zn,createLogger as eo}from"@walkeros/core";import{createIngest as to,emitStep as no,FatalError as oo,getGrantedConsent as so,getSpanId as ro,InvalidEventError as io,processEventMapping as ao,tryCatchAsync as co,useHooks as uo}from"@walkeros/core";function lo(e,t){const n=uo(async(n,o={})=>await co(async()=>{if(!e.allowed){const t=G(e.config.queueMax),s=Q(e.preRunQueue,{event:n,options:o},{max:t});if(s.dropped>0){const n=ie(e.status,"collector.preRun","queue",s.dropped);Y(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&X(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:s.dropped}),En({ok:!0})}const s=Date.now(),{id:r,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f=a,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;let h=i??to(r||"unknown");if(c){const t=await ao(p,c,e);if(t.ignore)return En({ok:!0});if(c.consent){const n=t.event.consent;if(!so(c.consent,e.consent,n)){const o=r?`source.${r}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),j(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),En({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=r?`source.${r}.next`:void 0,o=await Ze(e,e.transformers||{},u,p,h,f,n);if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),j(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),En({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),En({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Ln(e,t(n.event),n.ingest);return wn(e,o,{id:r,ingest:n.ingest,respond:f},g)}));if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return n[0]??En({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=Vn(e,p,h),v=await wn(e,m,{id:r,ingest:h,respond:f},g);if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return v},t=>{if(t instanceof oo)throw t;if(t instanceof io){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}),En({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...ae(t),event:n.name}),En({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id&&""!==t.id?t:{...t,id:ro()},r="string"==typeof s.id?s.id:"",i=O(s,o?.ingest,e),a=Date.now(),c=C(e,"collector.push","collector","in",r,a,i);c.inEvent=s,no(e,c);try{const t=await n(s,o),c=Date.now(),u=C(e,"collector.push","collector","out",r,c,i);return u.durationMs=c-a,u.outEvent=t,no(e,u),t}catch(t){const n=Date.now(),o=C(e,"collector.push","collector","error",r,n,i);throw o.durationMs=n-a,o.error=x(t),no(e,o),t}}}import{FatalError as fo,useHooks as po,tryCatchAsync as go}from"@walkeros/core";import{isObject as ho}from"@walkeros/core";var mo="elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })";import{emitStep as vo,useHooks as wo}from"@walkeros/core";function yo(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,s=Math.floor(t*n),r=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of r)void 0!==o.expires&&o.expires<=e&&(r.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref());return{type:"memory",config:{},get(e){const t=r.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(r.delete(e),i.evictions_ttl++,void i.misses++):(r.delete(e),r.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!r.has(e);a||r.delete(e),r.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,r.size>t&&function(){if(r.size<=t)return;const e=r.size-s;let n=0;for(const t of r.keys()){if(n>=e)break;r.delete(t),n++}i.evictions_entries+=n}()},delete(e){r.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),r.clear()}}}import{compileMatcher as bo,emitStep as ko,readCacheEnvelope as So,wrapCacheEnvelope as _o}from"@walkeros/core";function Eo(e,t){const{cacheConfig:n,cacheStore:o,namespace:s,logger:r,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=C(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},ko(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?bo(e.match):()=>!0,ttl:e.ttl})),l=e=>`${s}:${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),s=await o.get(n),r=So(s);if(void 0!==r){if(!("expired"in r))return u.hits++,c(t,"hit"),r.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=p.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(async()=>{try{const s=await e.get(t);if(void 0===s)return;const r=f(t,s);if(r)try{const e=1e3*r.ttl;await o.set(n,_o(s,e),e),u.populates++}catch(e){g("set",t,e)}return s}finally{p.delete(n)}})();return p.set(n,a),a},async set(t,n,s){u.writes++,await e.set(t,n,s);const r=f(t,n);if(r)try{const e=1e3*r.ttl;await o.set(l(t),_o(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(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;r?r.warn(o,ae(n)):console.warn(o,n)}}function qo(e,t,n){const o=`store.${n}`,s=wo(t.get,"StoreGet",e.hooks,e.logger),r=wo(t.set,"StoreSet",e.hooks,e.logger),i=wo(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),r=C(e,o,"store","in","",n);r.meta={op:"get",key:t},vo(e,r);try{const r=await s(t),i=Date.now(),a=C(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},vo(e,a),r}catch(s){const r=Date.now(),i=C(e,o,"store","error","",r);throw i.durationMs=r-n,i.meta={op:"get",key:t},i.error=x(s),vo(e,i),s}},t.set=async(t,n,s)=>{const i=Date.now(),a=C(e,o,"store","in","",i);a.meta={op:"set",key:t},vo(e,a);try{await r(t,n,s);const a=Date.now(),c=C(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},vo(e,c)}catch(n){const s=Date.now(),r=C(e,o,"store","error","",s);throw r.durationMs=s-i,r.meta={op:"set",key:t},r.error=x(n),vo(e,r),n}},t.delete=async t=>{const n=Date.now(),s=C(e,o,"store","in","",n);s.meta={op:"delete",key:t},vo(e,s);try{await i(t);const s=Date.now(),r=C(e,o,"store","out","",s);r.durationMs=s-n,r.meta={op:"delete",key:t},vo(e,r)}catch(s){const r=Date.now(),i=C(e,o,"store","error","",r);throw i.durationMs=r-n,i.meta={op:"delete",key:t},i.error=x(s),vo(e,i),s}}}async function Oo(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,config:r={},env:i={}}=s,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:r,env:i,reportError:ce(e,"store",o,a)},u=await t(c);n[o]=u}const o=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function s(r){const i=t[r];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(r),t=o.slice(-1===e?0:e).concat(r).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[r]="GRAY",o.push(r);const a=e[r].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${r}" cache.store references "${a}", which is not declared in flow.stores`);s(a)}o.pop(),t[r]="BLACK",n.push(r)}for(const n of Object.keys(e))"WHITE"===t[n]&&s(n);return n}(o);for(const t of s){const s=o[t].cache;if(!s)continue;let r,i;void 0!==s.store?(r=n[s.store],i=s.store):(n.__cache||(n.__cache=yo()),r=n.__cache,i="__cache");const a=s.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=Eo(n[t],{storeId:t,cacheConfig:s,cacheStore:r,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&qo(e,o,t);return n}async function Co(e){const t=Zn({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=eo(n),s={...t.globalsStatic,...e.globals},r={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,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&&(r.name=e.name),void 0!==e.release&&(r.release=e.release),void 0!==e.next&&(t.next=e.next),r.push=lo(r,e=>Kn(r,e)),r.command=function(e,t){return po(async(n,o,s)=>await go(async()=>await t(e,n,o,s),t=>{if(t instanceof fo)throw t;return e.status.failed++,e.logger.error("command failed",{...ae(t),command:n}),En({ok:!1})})(),"Command",e.hooks,e.logger)}(r,Bn),r.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error(mo,{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,s,...r)=>{if("string"==typeof t&&t.startsWith("walker ")){o(r)&&n(t);const i=t.replace("walker ","");return e.command(i,s)}let i;if("string"==typeof t)i={name:t},ho(s)?i.data=s:void 0!==s&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return En({ok:!1});i={...t},void 0!==s&&n(String(i.name))}return o(r)&&n(String(i.name)),e.push(i)}}(r);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(r.stores=await Oo(r,i),function(e,t,n){const o=new Map;for(const[n,s]of Object.entries(e))t[n]&&o.set(s,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))s(t.env);function s(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const s=o.get(n);s&&(e[t]=s)}}}(i,r.stores,e)):Object.keys(i).length>0&&o.warn("stores: not in this build, config ignored"),r.stores.__cache||(r.stores.__cache=yo()),r.destinations=await On(r,e.destinations||{}),r.transformers=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,env:r={}}=s;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=Te(s,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=ze(s,"before"),{config:a}=ze({...s,config:i},"next"),c=Object.keys(r).length>0?{...a,env:r}:a,{cache:u}=s,d=u?{...c,cache:u}:c,l=s.config?.state??s.state;A(e,De("transformer",o),l);const f=void 0!==l&&void 0===d.state?{...d,state:l}:d,p=e.logger.scope("transformer").scope(o),g={collector:e,logger:p,id:o,ingest:Ee(o),config:f,env:r,reportError:ce(e,"transformer",o,p)},h=Ke(s);for(const t of Le(s))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await Be(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);void 0!==s.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:s.before}),void 0!==s.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:s.next}),void 0!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(r,e.transformers||{}),r}var xo=globalThis;function jo(e){try{const t=xo.window;if(!t)return;t.localStorage.getItem(Nn)===e&&t.localStorage.removeItem(Nn)}catch{}}function Io(e,t){return void 0===t?e:n=>e({...n,release:t})}function Do(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=xo.window,t=xo.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Nn);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),s=t??function(){try{return xo.window?.localStorage.getItem(Nn)??null}catch{return null}}();if(!s)return;const r=Jn(s);if(!r)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),jo(s)):e.logger.warn("observe: malformed credential ignored"));if(r.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{xo.window?.localStorage.setItem(Nn,e)}catch{}}(s),null!==t&&function(){const e=xo.window,t=xo.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),s=o>=0?n.slice(o):"",r=o>=0?n.slice(0,o):n,i=r.indexOf("?"),a=i>=0?r.slice(0,i):r,c=new t(i>=0?r.slice(i+1):"");c.delete(Nn);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${s}`)}catch{}}();const a=Yn({url:`${n.url}/ingest/${r.ses}`,token:r.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(jo(s),i&&e.observers.delete(i))}});i=Xn(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Io(a,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(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const s=n.level;void 0!==s&&(e.observeLevel=()=>s),e.observers.add(Xn(Io(Yn({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function $o(e){const t=e??{},n=await Co(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?Do(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await ut(n,t.sources||{});const{consent:o,user:s,globals:r,custom:i}=t;o&&await n.command("consent",o),s&&await n.command("user",s),r&&await n.command("globals",r),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}export{e as Code,t as Commands,n as Const,Z as DEFAULT_BREAKER_COOLDOWN_MS,J as DEFAULT_BREAKER_THRESHOLD,se as DEFAULT_DLQ_MAX,mo as ELB_IGNORED_ARGUMENTS,gn as addDestination,ce as buildReportError,ie as bumpDropped,jt as callDestinationOn,Bn as commonHandleCommand,zn as completeEvent,Ln as createEvent,lo as createPush,En as createPushResult,Sn as destinationInit,_n as destinationPush,Vn as enrichEvent,re as ensureDestStatus,Et as enterCascade,ae as errorMeta,Ht as fireCallbacks,it as flushSourceQueueOn,$ as getCacheStore,On as initDestinations,ct as initSource,ut as initSources,oe as isBreakerProbePermitted,yt as isRequireSatisfied,at as isSourceStarted,vt as isStateDelivery,wt as isStatePresent,Cn as mergeEnvironments,xt as on,on as onApply,Kn as prepareEvent,s as processConsent,wn as pushToDestinations,tn as redeliverStateAtRun,qn as registerDestination,te as resolveBreakerConfig,Un as runCollector,Qn as runCollectorNext,et as runTransformerBefore,Ze as runTransformerChain,kt as setMark,St as shouldDeliver,$o as startFlow,Fe as transformerInit,Ve as transformerPush,T as wrapEnv};//# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/collector",
3
3
  "description": "Unified platform-agnostic collector for walkerOS",
4
- "version": "4.8.1-next-1792019907609",
4
+ "version": "4.8.1",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "update": "npx npm-check-updates -u && npm update"
33
33
  },
34
34
  "devDependencies": {
35
- "@walkeros/core": "4.8.1-next-1792019907609"
35
+ "@walkeros/core": "4.8.1"
36
36
  },
37
37
  "repository": {
38
38
  "url": "git+https://github.com/elbwalker/walkerOS.git",
@@ -61,6 +61,6 @@
61
61
  }
62
62
  ],
63
63
  "dependencies": {
64
- "@walkeros/core": "4.8.1-next-1792019907609"
64
+ "@walkeros/core": "4.8.1"
65
65
  }
66
66
  }