@walkeros/collector 4.7.1 → 4.7.2-next-1791147139360

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,5 +1,12 @@
1
1
  # @walkeros/collector
2
2
 
3
+ ## 4.7.2-next-1791147139360
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [ff23953]
8
+ - @walkeros/core@4.7.2-next-1791147139360
9
+
3
10
  ## 4.7.1
4
11
 
5
12
  ### Patch Changes
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:()=>z,addDestination:()=>Ot,buildReportError:()=>N,bumpDropped:()=>G,callDestinationOn:()=>We,commonHandleCommand:()=>Ht,completeEvent:()=>Gt,createEvent:()=>Ut,createPush:()=>on,createPushResult:()=>Mt,destinationInit:()=>Dt,destinationPush:()=>Rt,enrichEvent:()=>Nt,ensureDestStatus:()=>U,enterCascade:()=>Pe,errorMeta:()=>Q,fireCallbacks:()=>ot,flushSourceQueueOn:()=>ve,getCacheStore:()=>w,initDestinations:()=>$t,initSource:()=>we,initSources:()=>be,isBreakerProbePermitted:()=>H,isRequireSatisfied:()=>Ae,isSourceStarted:()=>ye,isStateDelivery:()=>Ie,isStatePresent:()=>je,mergeEnvironments:()=>Tt,on:()=>Ke,onApply:()=>gt,prepareEvent:()=>zt,processConsent:()=>d,pushToDestinations:()=>It,redeliverStateAtRun:()=>ft,registerDestination:()=>Pt,resolveBreakerConfig:()=>F,runCollector:()=>Yt,runCollectorNext:()=>Zt,runTransformerBefore:()=>le,runTransformerChain:()=>de,setMark:()=>De,shouldDeliver:()=>Re,startFlow:()=>bn,transformerInit:()=>Z,transformerPush:()=>ee,wrapEnv:()=>C}),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,r){e.status.in++;const s=h(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,n,e));s.skipReason="dropped",s.meta={by:o??"route",at:r},(0,p.emitStep)(e,s)}var y=require("@walkeros/core");function w(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,y.compileState)(e):void 0}function k(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,y.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 C(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 q=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>=q)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 A(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 x=require("@walkeros/core"),D=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 z=100;function U(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 Q(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 N(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??z},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=U(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",{...Q(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",Q(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:N(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:N(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`,Q(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?w(m,i):void 0;let y=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,...Q(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&&(y={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:y};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 C=await(0,X.tryCatchAsync)(ee,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",Q(e)),!1))(i,d,u,l,o,f);if(!1===C)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(C)&&1!==C.length){if(0===C.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<C.length;r++){const s=C[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 q=Array.isArray(C)?C[0]:C;let I;return q&&"object"==typeof q&&(q.respond&&(f=q.respond),q.event&&(l=q.event),I=q.next),l=await _(l),y&&v&&(0,X.storeCache)(v,y.key,l,y.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,...Q(t)})})(),Ie(n)&&!i&&De(e,t,n)}}function ye(e){return Boolean(e.config.init)&&!e.config.require?.length}async function we(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),y=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,o.droppedBy,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=w(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 y(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:O},C={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={})=>y(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:N(e,"source",t,O)},q=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,...Q(n)})})(C);if(!q)return;const I=q.type||"unknown",j=e.logger.scope(I).scope(t);return _.logger=j,i&&(q.config={...q.config,primary:i}),q}async function be(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await we(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,...Q(n)})})(),o||(n.config.init=!0,ye(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(ye(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Ae(e,t));r.length!==o.length&&(n.config.require=r,ye(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=>!Ae(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 x.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...Q(n)})}var Ce=["consent","user","globals","custom"];function qe(e){return Ce.includes(e)}function Ie(e){return qe(e)}function je(e,t){return qe(t)&&Object.keys(e[t]).length>0}function Ae(e,t){if(qe(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 xe(e,t){return e.cellVersion?.[String(t)]??0}function De(e,t,n){nt(e,t,n,xe(e,n))}function Re(e,t,n){return e.allowed&&xe(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,x.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?xe(e,o):0,c=i&&function(e,t,n,o){if(Ne.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:N(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,D.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=Ne.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),Qe(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,D.tryCatchAsync)(async()=>{await dt(e,t,n),!ze(t)&&t.queuePush?.length&&await It(e,void 0,{},{[n]:t})},e=>{o.error("state recovery failed",Q(e))})()}(e,t,n,i)};s.then(a,a)}(e,t,n,o,a,p,d):(Qe(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 ze(e){return He.get(e)}var Ue=new WeakMap,Ge=new WeakMap;function Qe(e,t,n){const o=Ge.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Ne=new WeakMap;function Ye(e,t){const n=Ne.get(e);n?n.add(String(t)):Ne.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!!Ne.get(t)?.size||Ce.some(n=>je(e,n)&&Re(e,t,n))}function et(e,t){Ue.set(e,(Ue.get(e)||0)+1),He.set(e,{type:t,since:Date.now()})}function tt(e,t){const n=(Ue.get(t)||0)-1;n>0?Ue.set(t,n):Ue.delete(t),function(e,t){if(!He.has(t))return;if(Ue.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,D.tryCatch)(t[n],t=>_e(e,"consent",t,{key:n}))(o,r)}),De(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,D.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,D.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,D.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,D.tryCatch)(n,n=>_e(e,"generic",n,{type:t}))(r,o),s&&De(e,n,t)))});break}}}function rt(e,t,n){if(qe(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?xe(e,o):0;s&&it.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,D.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,D.tryCatchAsync)(()=>ct(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",Q(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 Ce)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>=xe(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),De(e,t,o),void Ne.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&&(De(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 Ce)(je(e,o)||Ne.get(t)?.has(String(o)))&&await ut(e,t,n,o,rt(e,o))}finally{o()}}function lt(e){return(Ue.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 Ce)je(e,t)&&await ut(e,o,n,t,rt(e,t))};t.push(ht(n,o,r()))}for(const t of Ce){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])=>ye(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&&(ye(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))ye(n)&&n.queueOn?.length&&await ve(e,n,t);const u=Object.values(e.sources).some(e=>!ye(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,yt=1e3,wt=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)ze(t.destination)&&(t.drain=!0)}async function Ct(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!ze(n)&&n.queuePush?.length&&e.destinations[t]===n)return It(e,void 0,{},{[t]:n})}))).filter(f.isDefined)}function qt(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){U(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&&!ze(i)&&!lt(i)&&Ze(e,i)&&await dt(e,i,o);const m=ze(i);if(m&&!lt(i)&&Date.now()-m.since>=ge(i.config.timeout)&&await dt(e,i,o),ze(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 y=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 Dt(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(ze(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,y,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 C=new Set(i.queuePush);let q=!1;try{q=await Dt(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(!q)return l(),{id:o,destination:i,queue:v};if(ze(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||[],A=j.filter(e=>!C.has(e));if(A.length){i.queuePush=j.filter(e=>C.has(e));const t=S(A.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 x,D;i.dlq||(i.dlq=[]);const R=i.config.before,M=i.config.next,$=i.config?.cache,K=$?(0,f.compileCache)($):void 0,W=K?w(K,e):void 0,H=b(i.config?.state),N=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)(y,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:y}],d=n.respond;if(void 0!==R){const r=`destination.${o}.before`,i=await de(e,s,R,t,y,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,y,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)}N&&N.length>0&&t&&(t=await k(e,N,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",{...Q(n),event:t.name}),x=n,p=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??z},u=P(s,[t,n],c);if(u.dropped>0){U(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)||(D=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:x,response:D,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};U(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 At(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:N(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 xt=new WeakMap;async function Dt(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=xt.get(t);if(r)return r;const s=At(e,t,t.init,n);xt.set(t,s);try{return await s}finally{xt.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:N(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??wt,c=r.size??s.size??yt,d=r.age??s.age??wt,y=Tt(t.env,i.env),w=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:{...y,...a.respond?{respond:a.respond}:{}},reportError:N(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=U(e,d),p=F(t.config.breaker),w=(0,f.stepId)("destination",d),b=t=>{p&&V(e.status.breakers,w,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??z};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 C=s.entries.length;const q=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)),q,`Destination "${n}" batch delivery timed out after ${q}ms`),e=>{C=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),C=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:C,entries:s.entries.length,causes:[...t.values()]})}}var j;const A=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:"",A,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=A-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),C>0&&(l.count+=C,l.lastAt=Date.now(),e.status.out+=C,b("success"))},b=(0,f.debounce)(w,{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:"",y=g(o,r,e),w=Date.now(),b=h(e,(0,f.stepId)("destination",n),"destination","in",d,w,y);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,w,y);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=U(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=C({...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,A(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),A(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=qt(await It(e),await Ct(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 zt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Ut(e,t,n){return Qt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Gt(e,t,n){return Qt(e,zt(e,t),n,{globals:{},user:{},consent:{}})}function Qt(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:y=s,action:w=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 C=e.name??S.platform??"default",q=e.release??"4.7.1";_.release={...S.release,[C]:q};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:y,action:w,timestamp:a,timing:b,source:_}}function Nt(e,t,n){return Ut(e,zt(e,t),n)}async function Yt(e,t){const n=[];return qt(await Xt(e,t,n),await Ct(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,s.droppedBy,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){if(!(0,nn.getGrantedConsent)(c.consent,e.consent,t.event.consent))return Mt({ok:!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,o.droppedBy,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=Ut(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=Nt(e,p,h),y=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 y},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",{...Q(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=1e4,cn=6e4,un=.8;function dn(e={}){const t=e.maxEntries??an,n=e.lowWaterMark??un,o=e.sweepIntervalMs??cn,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 ln=require("@walkeros/core");function fn(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,ln.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,ln.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,ln.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,ln.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,ln.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,Q(n)):console.warn(o,n)}}function pn(e,t,n){const o=`store.${n}`,r=(0,sn.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,sn.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.emitStep)(e,i),r}}}async function gn(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:N(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=dn()),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]=fn(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&&pn(e,o,t);return n}async function hn(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=>zt(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",{...Q(t),command:n}),Mt({ok:!1})})(),"Command",e.hooks,e.logger)}(s,Ht),s.elb=function(e){return async(t,n,o,r,s)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let i;if("string"==typeof t)i={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Mt({ok:!1});i={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data={...i.data||{},...n})}return o&&"object"==typeof o&&(i.context=o),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),e.push(i)}}(s);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await gn(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=dn()),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:N(e,"transformer",o,p)},h=t??(e=>{const t=r.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o)){if("object"!=typeof r||null===r)continue;const o=r;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await(0,X.processEventMapping)(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),m=await h(g);void 0!==r.before&&void 0===m.config?.before&&(m.config={...m.config??{},before:r.before}),void 0!==r.next&&void 0===m.config?.next&&(m.config={...m.config??{},next:r.next}),void 0!==l&&void 0===m.config?.state&&(m.config={...m.config??{},state:l}),n[o]=m}return n}(s,e.transformers||{}),s}var mn=globalThis;function vn(e){try{const t=mn.window;if(!t)return;t.localStorage.getItem(en.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(en.OBSERVE_STORAGE_KEY)}catch{}}function yn(e,t){return void 0===t?e:n=>e({...n,release:t})}function wn(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=mn.window,t=mn.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 mn.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"),vn(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{mn.window?.localStorage.setItem(en.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=mn.window,t=mn.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&&(vn(r),i&&e.observers.delete(i))}});i=(0,en.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(yn(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)(yn((0,en.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function bn(e){e=e||{};const t=await hn(e);if(e.observers)for(const n of e.observers)t.observers.add(n);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?wn(t,e):e.observe&&t.logger.warn("observe: not in this build, config ignored"),await be(t,e.sources||{});const{consent:n,user:o,globals:r,custom:s}=e;n&&await t.command("consent",n),o&&await t.command("user",o),r&&await t.command("globals",r),s&&await t.command("custom",s),t.config.run&&await t.command("run");let i=t.elb;const a=Object.values(t.sources),c=a.find(e=>e.config.primary);return c?i=c.push:a.length>0&&(i=a[0].push),{collector:t,elb:i}}//# 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:()=>z,addDestination:()=>Ot,buildReportError:()=>N,bumpDropped:()=>G,callDestinationOn:()=>We,commonHandleCommand:()=>Ht,completeEvent:()=>Gt,createEvent:()=>Ut,createPush:()=>on,createPushResult:()=>Mt,destinationInit:()=>Dt,destinationPush:()=>Rt,enrichEvent:()=>Nt,ensureDestStatus:()=>U,enterCascade:()=>Pe,errorMeta:()=>Q,fireCallbacks:()=>ot,flushSourceQueueOn:()=>ve,getCacheStore:()=>w,initDestinations:()=>$t,initSource:()=>we,initSources:()=>be,isBreakerProbePermitted:()=>H,isRequireSatisfied:()=>Ae,isSourceStarted:()=>ye,isStateDelivery:()=>Ie,isStatePresent:()=>je,mergeEnvironments:()=>Tt,on:()=>Ke,onApply:()=>gt,prepareEvent:()=>zt,processConsent:()=>d,pushToDestinations:()=>It,redeliverStateAtRun:()=>ft,registerDestination:()=>Pt,resolveBreakerConfig:()=>F,runCollector:()=>Yt,runCollectorNext:()=>Zt,runTransformerBefore:()=>le,runTransformerChain:()=>de,setMark:()=>De,shouldDeliver:()=>Re,startFlow:()=>bn,transformerInit:()=>Z,transformerPush:()=>ee,wrapEnv:()=>C}),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,r){e.status.in++;const s=h(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),g(t,n,e));s.skipReason="dropped",s.meta={by:o??"route",at:r},(0,p.emitStep)(e,s)}var y=require("@walkeros/core");function w(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,y.compileState)(e):void 0}function k(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,y.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 C(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 q=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>=q)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 A(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 x=require("@walkeros/core"),D=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 z=100;function U(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 Q(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 N(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??z},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=U(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",{...Q(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",Q(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:N(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:N(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`,Q(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?w(m,i):void 0;let y=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,...Q(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&&(y={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:y};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 C=await(0,X.tryCatchAsync)(ee,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",Q(e)),!1))(i,d,u,l,o,f);if(!1===C)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(C)&&1!==C.length){if(0===C.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<C.length;r++){const s=C[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 q=Array.isArray(C)?C[0]:C;let I;return q&&"object"==typeof q&&(q.respond&&(f=q.respond),q.event&&(l=q.event),I=q.next),l=await _(l),y&&v&&(0,X.storeCache)(v,y.key,l,y.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,...Q(t)})})(),Ie(n)&&!i&&De(e,t,n)}}function ye(e){return Boolean(e.config.init)&&!e.config.require?.length}async function we(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),y=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,o.droppedBy,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=w(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 y(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:O},C={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={})=>y(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:N(e,"source",t,O)},q=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,...Q(n)})})(C);if(!q)return;const I=q.type||"unknown",j=e.logger.scope(I).scope(t);return _.logger=j,i&&(q.config={...q.config,primary:i}),q}async function be(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await we(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,...Q(n)})})(),o||(n.config.init=!0,ye(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(ye(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Ae(e,t));r.length!==o.length&&(n.config.require=r,ye(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=>!Ae(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 x.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...Q(n)})}var Ce=["consent","user","globals","custom"];function qe(e){return Ce.includes(e)}function Ie(e){return qe(e)}function je(e,t){return qe(t)&&Object.keys(e[t]).length>0}function Ae(e,t){if(qe(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 xe(e,t){return e.cellVersion?.[String(t)]??0}function De(e,t,n){nt(e,t,n,xe(e,n))}function Re(e,t,n){return e.allowed&&xe(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,x.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?xe(e,o):0,c=i&&function(e,t,n,o){if(Ne.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:N(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,D.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=Ne.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),Qe(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,D.tryCatchAsync)(async()=>{await dt(e,t,n),!ze(t)&&t.queuePush?.length&&await It(e,void 0,{},{[n]:t})},e=>{o.error("state recovery failed",Q(e))})()}(e,t,n,i)};s.then(a,a)}(e,t,n,o,a,p,d):(Qe(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 ze(e){return He.get(e)}var Ue=new WeakMap,Ge=new WeakMap;function Qe(e,t,n){const o=Ge.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Ne=new WeakMap;function Ye(e,t){const n=Ne.get(e);n?n.add(String(t)):Ne.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!!Ne.get(t)?.size||Ce.some(n=>je(e,n)&&Re(e,t,n))}function et(e,t){Ue.set(e,(Ue.get(e)||0)+1),He.set(e,{type:t,since:Date.now()})}function tt(e,t){const n=(Ue.get(t)||0)-1;n>0?Ue.set(t,n):Ue.delete(t),function(e,t){if(!He.has(t))return;if(Ue.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,D.tryCatch)(t[n],t=>_e(e,"consent",t,{key:n}))(o,r)}),De(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,D.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,D.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,D.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,D.tryCatch)(n,n=>_e(e,"generic",n,{type:t}))(r,o),s&&De(e,n,t)))});break}}}function rt(e,t,n){if(qe(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?xe(e,o):0;s&&it.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,D.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,D.tryCatchAsync)(()=>ct(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",Q(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 Ce)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>=xe(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),De(e,t,o),void Ne.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&&(De(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 Ce)(je(e,o)||Ne.get(t)?.has(String(o)))&&await ut(e,t,n,o,rt(e,o))}finally{o()}}function lt(e){return(Ue.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 Ce)je(e,t)&&await ut(e,o,n,t,rt(e,t))};t.push(ht(n,o,r()))}for(const t of Ce){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])=>ye(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&&(ye(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))ye(n)&&n.queueOn?.length&&await ve(e,n,t);const u=Object.values(e.sources).some(e=>!ye(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,yt=1e3,wt=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)ze(t.destination)&&(t.drain=!0)}async function Ct(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!ze(n)&&n.queuePush?.length&&e.destinations[t]===n)return It(e,void 0,{},{[t]:n})}))).filter(f.isDefined)}function qt(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){U(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&&!ze(i)&&!lt(i)&&Ze(e,i)&&await dt(e,i,o);const m=ze(i);if(m&&!lt(i)&&Date.now()-m.since>=ge(i.config.timeout)&&await dt(e,i,o),ze(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 y=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 Dt(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(ze(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,y,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 C=new Set(i.queuePush);let q=!1;try{q=await Dt(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(!q)return l(),{id:o,destination:i,queue:v};if(ze(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||[],A=j.filter(e=>!C.has(e));if(A.length){i.queuePush=j.filter(e=>C.has(e));const t=S(A.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 x,D;i.dlq||(i.dlq=[]);const R=i.config.before,M=i.config.next,$=i.config?.cache,K=$?(0,f.compileCache)($):void 0,W=K?w(K,e):void 0,H=b(i.config?.state),N=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)(y,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:y}],d=n.respond;if(void 0!==R){const r=`destination.${o}.before`,i=await de(e,s,R,t,y,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,y,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)}N&&N.length>0&&t&&(t=await k(e,N,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",{...Q(n),event:t.name}),x=n,p=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??z},u=P(s,[t,n],c);if(u.dropped>0){U(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)||(D=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:x,response:D,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};U(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 At(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:N(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 xt=new WeakMap;async function Dt(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=xt.get(t);if(r)return r;const s=At(e,t,t.init,n);xt.set(t,s);try{return await s}finally{xt.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:N(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??wt,c=r.size??s.size??yt,d=r.age??s.age??wt,y=Tt(t.env,i.env),w=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:{...y,...a.respond?{respond:a.respond}:{}},reportError:N(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=U(e,d),p=F(t.config.breaker),w=(0,f.stepId)("destination",d),b=t=>{p&&V(e.status.breakers,w,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??z};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 C=s.entries.length;const q=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)),q,`Destination "${n}" batch delivery timed out after ${q}ms`),e=>{C=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),C=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:C,entries:s.entries.length,causes:[...t.values()]})}}var j;const A=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:"",A,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=A-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),C>0&&(l.count+=C,l.lastAt=Date.now(),e.status.out+=C,b("success"))},b=(0,f.debounce)(w,{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:"",y=g(o,r,e),w=Date.now(),b=h(e,(0,f.stepId)("destination",n),"destination","in",d,w,y);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,w,y);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=U(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=C({...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,A(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),A(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=qt(await It(e),await Ct(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 zt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Ut(e,t,n){return Qt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Gt(e,t,n){return Qt(e,zt(e,t),n,{globals:{},user:{},consent:{}})}function Qt(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:y=s,action:w=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 C=e.name??S.platform??"default",q=e.release??"4.7.2-next-1791147139360";_.release={...S.release,[C]:q};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:y,action:w,timestamp:a,timing:b,source:_}}function Nt(e,t,n){return Ut(e,zt(e,t),n)}async function Yt(e,t){const n=[];return qt(await Xt(e,t,n),await Ct(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,s.droppedBy,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){if(!(0,nn.getGrantedConsent)(c.consent,e.consent,t.event.consent))return Mt({ok:!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,o.droppedBy,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=Ut(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=Nt(e,p,h),y=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 y},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",{...Q(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=1e4,cn=6e4,un=.8;function dn(e={}){const t=e.maxEntries??an,n=e.lowWaterMark??un,o=e.sweepIntervalMs??cn,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 ln=require("@walkeros/core");function fn(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,ln.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,ln.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,ln.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,ln.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,ln.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,Q(n)):console.warn(o,n)}}function pn(e,t,n){const o=`store.${n}`,r=(0,sn.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,sn.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.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,sn.emitStep)(e,i),r}}}async function gn(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:N(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=dn()),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]=fn(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&&pn(e,o,t);return n}async function hn(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=>zt(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",{...Q(t),command:n}),Mt({ok:!1})})(),"Command",e.hooks,e.logger)}(s,Ht),s.elb=function(e){return async(t,n,o,r,s)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let i;if("string"==typeof t)i={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Mt({ok:!1});i={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data={...i.data||{},...n})}return o&&"object"==typeof o&&(i.context=o),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),e.push(i)}}(s);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await gn(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=dn()),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:N(e,"transformer",o,p)},h=t??(e=>{const t=r.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o)){if("object"!=typeof r||null===r)continue;const o=r;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await(0,X.processEventMapping)(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),m=await h(g);void 0!==r.before&&void 0===m.config?.before&&(m.config={...m.config??{},before:r.before}),void 0!==r.next&&void 0===m.config?.next&&(m.config={...m.config??{},next:r.next}),void 0!==l&&void 0===m.config?.state&&(m.config={...m.config??{},state:l}),n[o]=m}return n}(s,e.transformers||{}),s}var mn=globalThis;function vn(e){try{const t=mn.window;if(!t)return;t.localStorage.getItem(en.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(en.OBSERVE_STORAGE_KEY)}catch{}}function yn(e,t){return void 0===t?e:n=>e({...n,release:t})}function wn(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=mn.window,t=mn.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 mn.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"),vn(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{mn.window?.localStorage.setItem(en.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=mn.window,t=mn.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&&(vn(r),i&&e.observers.delete(i))}});i=(0,en.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(yn(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)(yn((0,en.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function bn(e){e=e||{};const t=await hn(e);if(e.observers)for(const n of e.observers)t.observers.add(n);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?wn(t,e):e.observe&&t.logger.warn("observe: not in this build, config ignored"),await be(t,e.sources||{});const{consent:n,user:o,globals:r,custom:s}=e;n&&await t.command("consent",n),o&&await t.command("user",o),r&&await t.command("globals",r),s&&await t.command("custom",s),t.config.run&&await t.command("run");let i=t.elb;const a=Object.values(t.sources),c=a.find(e=>e.config.primary);return c?i=c.push:a.length>0&&(i=a[0].push),{collector:t,elb:i}}//# 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 w,isFunction as v,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 O}from"@walkeros/core";function q(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,s){e.status.in++;const r=C(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),q(t,n,e));r.skipReason="dropped",r.meta={by:o??"route",at:s},O(e,r)}import{applyState as I,compileState as $}from"@walkeros/core";function D(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function A(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?$(e):void 0}function M(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 P(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 we,storeCache as ve,applyUpdate as ye,createMappingRoot as be,stepId as ke}from"@walkeros/core";import{advanceChain as Se,clone as _e,createIngest as Ee,deriveSpanId as Oe,emitStep as qe,FatalError as Ce,isChainContinuation as xe,isObject as je,startChain as Ie,stepId as $e,tryCatchAsync as De,useHooks as Ae,compileCache as Me,checkCache as Pe,storeCache as Re,createMappingRoot as We,validateStepEntry as Te,processEventMapping as Be}from"@walkeros/core";function Ke(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 Le(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:Ze(t.config.env),reportError:ce(e,"transformer",n,s)};s.debug("init");const i=await Ae(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 ze(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:{...Ze(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=q(o,s,e),l=Date.now(),f=C(e,$e("transformer",n),"transformer","in",u,l,d);f.inEvent=o,qe(e,f);try{const s=await Ae(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),i=C(e,$e("transformer",n),"transformer","out",u,r,d);return i.durationMs=r-l,i.outEvent=s,qe(e,i),a.debug("push done"),s}catch(t){const o=Date.now(),s=C(e,$e("transformer",n),"transformer","error",u,o,d);throw s.durationMs=o-l,s.error=x(t),qe(e,s),t}}function Fe(e){return"string"==typeof e.id?e.id:""}function Ve(e,t){const n=Fe(e);return""!==n&&""===Fe(t)?{...t,id:n}:t}function Ue(e,t,n,o){const s=function(e){return{...e,_meta:{...e._meta,path:[...e._meta.path]}}}(n),r=_e(t),i=Fe(e);if(""===i)return{event:r,ingest:s};s._meta.parentEventId=i;const a=Fe(r);return""!==a&&a!==i||(r.id=Oe(i,o)),{event:r,ingest:s}}function He(e,t){return{copies:e,respond:t}}function Ge(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 Qe(e,t,n){const o=await Promise.all(t.map((t,n)=>De(Ne,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}:{}}:He(s,i)}async function Ne(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 He([{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 Qe(e,i.branches.map((e,o)=>({stack:e,...Ue(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 Ye(e,t,s,n,r,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Qe(e,c.copies,r);s=c.event,r=c.respond,o=c.stack}}async function Ye(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:Ve(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?Me(h):void 0,w=m?D(m,i):void 0;let v=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 De(Le,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&&w){const e=await Pe(m,w,We(o,l));if("HIT"===e?.status&&e.value){if(l=e.value,m.stop){return g({copies:[{event:Ve(n,l),ingest:o}],respond:f,stopped:!0})}return p()}"MISS"===e?.status&&(v={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await Je(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:v};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=A(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?M(i,k,e,o):e;b&&b.length>0&&(l=await M(i,b,l,o));const _=await De(ze,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:Ge(t,r.next),...Ue(e,i,o,s),respond:f})}return{kind:"fork",copies:n}}const E=Array.isArray(_)?_[0]:_;let O;return E&&"object"==typeof E&&(E.respond&&(f=E.respond),E.event&&(l=E.event),O=E.next),l=await S(l),v&&w&&Re(w,v.key,l,v.ttl),p(Ge(t,O))}async function Xe(e,t,n,o,s,r,i){const a=s??Ee("string"==typeof n?n:"chain");return void 0===n?He([{event:o,ingest:a}],r):(i&&(a._meta.chainPath=i),Ne({collector:e,transformers:t,chainContext:i},{stack:xe(n)?n:Ie(n),event:o,ingest:a,respond:r}))}async function Je(e,t,n,o,s,r,i){const a=t[n],c=a?a.config.before:void 0,u=await Xe(e,t,c,o,s,r,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}function Ze(e){return e&&je(e)?e:{}}var et=1e4;function tt(e){return"number"==typeof e&&e>0?e:et}var nt=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function ot(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new nt(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}async function st(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(ht(n)&&!bt(e,t,n))continue;const o=t.on;let i=!1;await he(()=>ot(Promise.resolve(o(n,r)),et,`Source "${s}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof de)throw t;t instanceof nt?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,...ae(t)})})(),ht(n)&&!i&&yt(e,t,n)}}function rt(e){return Boolean(e.config.init)&&!e.config.require?.length}async function it(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=A(l);P(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),w=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 Xe(e,e.transformers||{},c,u,r.ingest,r.respond,n);if(0===o.copies.length)return j(e,u,r.ingest,o.droppedBy,n),Sn({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=D(g,e);if(t){const n=be(r.ingest),o=await we(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=>{ve(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||ve(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await M(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},v=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 w(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 v(e),respond:t};return n({...b,push:(e,t={})=>w(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 at(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const t=await it(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,rt(n)&&await st(e,n,t))}return await ct(e),n}async function ct(e){for(const[t,n]of Object.entries(e.sources)){if(rt(n))continue;const o=n.config.require;if(!o?.length)continue;const s=o.filter(t=>!wt(e,t));s.length!==o.length&&(n.config.require=s,rt(n)&&await st(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=>!wt(e,t));if(n.config&&(n.config.require=s),s.length>0)continue;delete e.pending.destinations[t];const r=_n(n);!1!==r.config.queue&&(r.queuePush=[...e.queue]),e.destinations[t]=r,await Xt(e,r,t)}}function ut(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 dt=!1;function lt(){dt||(dt=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function ft(e,t,n,o){if(n instanceof F)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...ae(n)})}var pt=["consent","user","globals","custom"];function gt(e){return pt.includes(e)}function ht(e){return gt(e)}function mt(e,t){return gt(t)&&Object.keys(e[t]).length>0}function wt(e,t){if(gt(t))return mt(e,t);switch(t){case n.Commands.Run:case n.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function vt(e,t){return e.cellVersion?.[String(t)]??0}function yt(e,t,n){Ft(e,t,n,vt(e,n))}function bt(e,t,n){return e.allowed&&vt(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 kt=8;function St(e){const t=e.cascade;if(t&&!_t.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,_t.set(n,(_t.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(_t.get(n)||1)-1;t>0?_t.set(n,t):(_t.delete(n),e.cascade===n&&(e.cascade=void 0))}}var _t=new WeakMap;function Et(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<=kt||(i===kt+1&&e.logger.error("state delivery did not converge",{type:r}),!1)}function Ot(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function qt(e,t,n){if(!ut(e))return void lt();const o=e.on,s=o[t]||[],r=z(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,Vt(e,t,r)}async function Ct(e,t,n,o,s){const r=t.on;if(!r)return!0;const i=ht(o);if(i&&(xt.get(t)||jt.has(t)))return Bt(e,t,o),xt.get(t)||It.add(t),!1;const a=i?vt(e,o):0,c=i&&function(e,t,n,o){if(Rt.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)?Ut(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:On(t.env,t.config.env),reportError:ce(e,"destination",n,d,t)};i&&(Lt(t,o),function(e,t,n){let o=Mt.get(e);o||(o={},Mt.set(e,o));const s=String(t),r=o[s];(void 0===r||r<n)&&(o[s]=n)}(t,o,a),jt.add(t));const f=tt(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await U(()=>(p=Promise.resolve(r(o,l)),ot(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof nt&&(h=!0),ft(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){jt.delete(t),m&&It.delete(t);const s=Rt.get(t);g?(Ft(e,t,o,a),s?.delete(String(o))):Bt(e,t,o),h?function(e,t,n,o,s,r,i){xt.set(t,(xt.get(t)||0)+1);const a=()=>{const r=(xt.get(t)||0)-1;r>0?xt.set(t,r):xt.delete(t),Wt(t,o),Pt(t,o,s),zt(e,t),i.debug("late settle after timeout"),It.delete(t),e.allowed&&e.destinations[n]===t&&function(e,t,n,o){U(async()=>{await Xt(e,t,n),!Dt(t)&&t.queuePush?.length&&await mn(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):(Pt(t,o,a),zt(e,t))}}return i&&!h&&It.delete(t)&&await Xt(e,t,n),g}var xt=new WeakMap,jt=new WeakSet,It=new WeakSet;var $t=new WeakMap;function Dt(e){return $t.get(e)}var At=new WeakMap,Mt=new WeakMap;function Pt(e,t,n){const o=Mt.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Rt=new WeakMap;function Wt(e,t){const n=Rt.get(e);n?n.add(String(t)):Rt.set(e,new Set([String(t)]))}var Tt=new WeakMap;function Bt(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Wt(t,n),$t.set(t,{type:n,since:Date.now()})}function Kt(e,t){return!!Rt.get(t)?.size||pt.some(n=>mt(e,n)&&bt(e,t,n))}function Lt(e,t){At.set(e,(At.get(e)||0)+1),$t.set(e,{type:t,since:Date.now()})}function zt(e,t){const n=(At.get(t)||0)-1;n>0?At.set(t,n):At.delete(t),function(e,t){if(!$t.has(t))return;if(At.get(t))return;Kt(e,t)||$t.delete(t)}(e,t)}function Ft(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 Vt(e,t,o,s){if(!ut(e))return void lt();const r=Ut(e,t,s);if(o.length)switch(t){case n.Commands.Consent:!function(e,t,o){const s=o||e.consent,r=Ot(e,n.Commands.Consent);t.forEach(t=>{bt(e,t,n.Commands.Consent)&&Et(e,t,n.Commands.Consent)&&(Object.keys(s).filter(e=>e in t).forEach(n=>{V(t[n],t=>ft(e,"consent",t,{key:n}))(s,r)}),yt(e,t,n.Commands.Consent))})}(e,o,s);break;case n.Commands.Ready:!function(e,t){if(!e.allowed)return;const o=Ot(e,n.Commands.Ready);t.forEach(t=>{V(t,t=>ft(e,"ready",t))(void 0,o)})}(e,o);break;case n.Commands.Run:!function(e,t){if(!e.allowed)return;const o=Ot(e,n.Commands.Run);t.forEach(t=>{V(t,t=>ft(e,"run",t))(void 0,o)})}(e,o);break;case n.Commands.Session:!function(e,t){if(!e.session)return;const o=Ot(e,n.Commands.Session);t.forEach(t=>{V(t,t=>ft(e,"session",t))(e.session,o)})}(e,o);break;default:{const n=Ot(e,t),s=ht(t);o.forEach(o=>{"function"==typeof o&&(s&&!bt(e,o,t)||s&&!Et(e,o,t)||(V(o,n=>ft(e,"generic",n,{type:t}))(r,n),s&&yt(e,o,t)))});break}}}function Ut(e,t,o){if(gt(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 Ht(e,t,n,o,s){if(!t.on)return!1;if(ht(o)&&!bt(e,t,o))return!1;if(ht(o)&&!Et(e,t,o))return!1;const r=ht(o);if(r&&Gt.has(t))return Qt.add(t),!1;const i=r?vt(e,o):0;r&&Gt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await U(()=>(u=Promise.resolve(a(o,s)),ot(u,et,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof nt&&(d=!0),ft(e,"source",t,{sourceId:n,type:o})})()}finally{r&&!d&&Gt.delete(t)}if(r)if(d){const o=()=>{Gt.delete(t),Qt.delete(t),e.allowed&&e.sources[n]===t&&U(()=>Nt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",ae(t))})()};u.then(o,o)}else Ft(e,t,o,i),Qt.delete(t)&&await Nt(e,t,n);return!1===c}var Gt=new WeakSet,Qt=new WeakSet;async function Nt(e,t,n){const o=St(e);try{for(const o of pt)await Ht(e,t,n,o,Ut(e,o))}finally{o()}}async function Yt(e,t,n,o,s){if(!t.on)return;const r=ht(o);if(r&&!bt(e,t,o))return;const i=Mt.get(t)?.[String(o)];if(r&&void 0!==i&&i>=vt(e,o))return;if(r&&!Et(e,t,o)){if(t.config.init)return void Bt(e,t,o);const n=t.queueOn=t.queueOn||[],s={type:o,data:Ut(e,o)},r=n[n.length-1];return r&&r.type===o?n[n.length-1]=s:n.push(s),yt(e,t,o),void Rt.get(t)?.delete(String(o))}const a=Tt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:s}),void(r&&(yt(e,t,o),a&&!a.held&&(Lt(t,o),a.held=!0)));await Ct(e,t,n,o,s)}async function Xt(e,t,n){if(!t.on)return;const o=St(e);try{for(const o of pt)(mt(e,o)||Rt.get(t)?.has(String(o)))&&await Yt(e,t,n,o,Ut(e,o))}finally{o()}}function Jt(e){return(At.get(e)||0)>0}async function Zt(e){const t=await en(e);await Promise.all(t.map(({done:e})=>e))}async function en(e){if(!ut(e))return lt(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const s=async()=>{for(const t of pt)mt(e,t)&&await Yt(e,o,n,t,Ut(e,t))};t.push(nn(n,o,s()))}for(const t of pt){if(!mt(e,t))continue;const n=Ut(e,t);Vt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>rt(e)).map(([o,s])=>Ht(e,s,o,t,n)))}return t}async function tn(e,t,n,o){const{ok:s,deliveries:r}=await on(e,t,n,o);return await Promise.all(r.map(({done:e})=>e)),s}function nn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}async function on(e,t,n,o){if(!ut(e))return lt(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let s=n||[];n||(s=e.on[t]||[]);const r=Ut(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&&(rt(o)?i.push(Ht(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(nn(n,o,Yt(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))rt(n)&&n.queueOn?.length&&await st(e,n,t);const u=Object.values(e.sources).some(e=>!rt(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await ct(e),Vt(e,t,s,o),{ok:!c,deliveries:a}}var sn=1e3,rn=1e3,an=3e4,cn=Object.freeze({batched:!0});function un(e){return e===cn}var dn=" batch-all";function ln(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function fn(e,t){const{code:n,config:o={},env:s={},before:r,next:i,cache:a,state:c}=t;if(!v(n.push))return Sn({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(P(e,S("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await ct(e);const n=e.destinations[l];return n?mn(e,void 0,{},{[l]:n}):Sn({ok:!0})}const f={...n,config:d,env:On(n.env,s)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Xt(e,f,l),mn(e,void 0,{},{[l]:f})}function pn(e){for(const t of e)Dt(t.destination)&&(t.drain=!0)}async function gn(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:s})=>{if(await o,s&&e.allowed&&!Dt(n)&&n.queuePush?.length&&e.destinations[t]===n)return mn(e,void 0,{},{[t]:n})}))).filter(w)}function hn(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 mn(e,t,n={},o){if(!e.allowed)return Sn({ok:!1});if(!t)return wn(e,void 0,n,o);const s=await Hn(e,t,n);if(0===s.copies.length)return Sn({ok:!0,...s.dropped?{dropped:!0}:{}});const r=[];for(const t of s.copies)r.push(await wn(e,t.event,{id:n.id,ingest:t.ingest,respond:s.respond},o));return r[0]}async function wn(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,w=S("destination",h),v=te(p.config.breaker);if(v&&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,w,v.cooldown))return{id:o,destination:p,skipped:!0};const y=t=>{v&&ne(e.status.breakers,w,t,v.threshold,v.cooldown)},b=()=>{v&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,w)},k=t=>{if(!t.length)return;p.queuePush||(p.queuePush=[]);const n=p.queuePush,s=p.config.id||o,r={max:p.config.queueMax??sn};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&&!Dt(p)&&!Jt(p)&&Kt(e,p)&&await Xt(e,p,o);const E=Dt(p);if(E&&!Jt(p)&&Date.now()-E.since>=tt(p.config.timeout)&&await Xt(e,p,o),Dt(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 O=(p.queuePush||[]).map(t=>({...t,consent:e.consent}));p.queuePush=[],t&&O.push(c(t));const x=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:f("unknown");if(!O.length&&!p.queueOn?.length)return b(),{id:o,destination:p,skipped:!0};if(!O.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 bn(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(Dt(p))return b(),{id:o,destination:p,skipped:!0};if(!t||!p.queuePush?.length)return b(),{id:o,destination:p,skipped:!t};O=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(),q(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:$,skipped:P}=j(O);if(k(P),!$.length)return b(),{id:o,destination:p,queue:O};const R=new Set(p.queuePush);let W=!1;try{W=await bn(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:O};if(Dt(p))return b(),k($),{id:o,destination:p,queue:$};const T=[];if(e.consent!==I){const t=j($.map(t=>({...t,consent:e.consent})));$.splice(0,$.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})));$.push(...t.allowed),T.push(...t.skipped)}if(k(T),!$.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?D(H,e):void 0,N=A(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($.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 Xe(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(),q(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 M(e,J,t,n));const f=Date.now();let g=!1;const m=await _(kn,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&&!un(m)&&Z&&Z.length>0&&t&&(t=await M(e,Z,t,n)),void 0===m||un(m)||(z=m),un(m)&&ce++,!g&&V){void 0!==m&&(n._response=m);const s=await Xe(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:$.length,pushedCount:ue,canonicalId:h,breakerConfig:v}})),h={},w={},v={};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,v[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)w[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 Sn({event:t,...Object.keys(h).length&&{done:h},...Object.keys(w).length&&{queued:w},...Object.keys(v).length&&{failed:v}})}async function vn(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:On(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=St(e);!function(e){const t=e.queueOn?.find(({type:e})=>ht(e));t&&Lt(e,t.type),Tt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await Ct(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])ht(n)&&Bt(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Tt.get(t);Tt.delete(t),n?.held&&zt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}var yn=new WeakMap;async function bn(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=yn.get(t);if(s)return s;const r=vn(e,t,t.init,n);yn.set(t,r);try{return await r}finally{yn.delete(t)}}return!0}async function kn(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:{...On(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||"* *":dn;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=ln(l?.batch),r=ln(i.batch),a=s.wait??r.wait??an,c=s.size??r.size??rn,d=s.age??r.age??an,m=On(t.env,i.env),w=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),w=t=>{f&&ne(e.status.breakers,p,t,f.threshold,f.cooldown)},v=Date.now(),b=new Map;let k,O=!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 $=tt(i.timeout),D=await _((o,s)=>ot(Promise.resolve(E(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),$,`Destination "${n}" batch delivery timed out after ${$}ms`),e=>{I=0,O=!0,k=e,j(r.entries.map(t=>[t.event,e])),w("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:r.entries.length})})(r,c);if(y(A=D)&&Array.isArray(A.failed)&&D.failed.length>0){const e=[];for(const t of D.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 A;const M=Date.now();r.entries.forEach((t,o)=>{const s=O||b.has(o),i=q(t.event,t.ingest,e),a=C(e,S("destination",n),"destination",s?"error":"flush","string"==typeof t.event.id?t.event.id:"",M,i);if(a.batch={size:r.entries.length,index:o},a.durationMs=M-v,s){const e=O?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,w("success"))},{wait:a,size:c,age:d});t.batches[h]={batched:o,isDefault:!f,batchFn:()=>{w()},flush:async()=>{await w.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),w(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",m=q(o,s,e),v=Date.now(),b=C(e,S("destination",n),"destination","in",d,v,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,v,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 O=t.config.id||n,j=re(e,O);return j.inFlightBatch=(j.inFlightBatch??0)+1,c.batchFn(),cn}{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=q(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=tt(i.timeout),s=await ot(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),w(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 Sn(e){return{ok:!e?.failed,...e}}function _n(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:i}=Ke(e,"before"),{config:a}=Ke({...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=On(t.env,o);return{...t,config:c,env:u}}async function En(e,t={}){const n={};for(const[o,s]of Object.entries(t))P(e,S("destination",o),s.config?.state??s.code.config?.state??s.state),s.config?.require?.length?e.pending.destinations[o]=s:n[o]=_n(s);return n}function On(e,t){return e||t?t?e&&y(e)&&y(t)?{...e,...t}:t:e:{}}import{assign as qn,getSpanId as Cn,getTraceId as xn,InvalidEventError as jn,isFunction as In,isString as $n}from"@walkeros/core";import{isObject as Dn}from"@walkeros/core";var An=5e3;async function Mn(e){const t=e.logger;await Pn(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 Pn(e.destinations,"destination",t),await Pn(e.transformers,"transformer",t),await Pn(e.stores,"store",t)}async function Pn(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 Rn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Wn(e,t,o){let r,i,a=!1;const c=[],u=St(e);try{return await async function(){switch(t){case n.Commands.Config:Dn(o)&&(qn(e.config,o,{shallow:!1,merge:!1}),i=o,a=!0);break;case n.Commands.Consent:if(Dn(o)){const{update:t}=s(e,o);Rn(e,n.Commands.Consent),i=t,a=!0}break;case n.Commands.Custom:Dn(o)&&(e.custom=qn(e.custom,o),Rn(e,n.Commands.Custom),i=o,a=!0);break;case n.Commands.Destination:Dn(o)&&"code"in o&&Dn(o.code)&&(r=await fn(e,o));break;case n.Commands.Globals:Dn(o)&&(e.globals=qn(e.globals,o),Rn(e,n.Commands.Globals),i=o,a=!0);break;case n.Commands.Hook:if(Dn(o)&&$n(o.name)&&In(o.fn)){const{name:t,fn:n}=o;e.hooks[t]=n,i=o,a=!0}break;case n.Commands.On:if(Dn(o)&&$n(o.type)){const{type:t,rules:n}=o;await qt(e,t,n)}break;case n.Commands.Ready:a=!0;break;case n.Commands.Run:r=await Vn(e,o,c),a=!0;break;case n.Commands.Session:a=!0;break;case n.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Mn(e));break;case n.Commands.User:Dn(o)&&(qn(e.user,o,{shallow:!1}),Rn(e,n.Commands.User),i=o,a=!0);break;default:return e.logger.warn("unknown command",{command:t}),Sn({ok:!1})}if(a){const n=await on(e,t,void 0,i);c.push(...n.deliveries),pn(n.deliveries);const o=hn(await mn(e),await gn(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||Sn({ok:!0})}()}finally{u()}}function Tn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Bn(e,t,n){return Ln(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Kn(e,t,n){return Ln(e,Tn(e,t),n,{globals:{},user:{},consent:{}})}function Ln(e,t,n,o){const s=t.name;if("string"!=typeof s)throw new jn(void 0===s?"Event name is required":"Event name is invalid");if(!s)throw new jn("Event name is required");const[r,i]=s.split(" ");if(!r||!i)throw new jn("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=Cn(),trigger:w="",entity:v=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,O={...S,count:_};void 0!==E&&(O.trace=E);const q=e.name??S.platform??"default",C=e.release??"4.7.1";O.release={...S.release,[q]:C};return{name:c,data:u,context:d,globals:qn(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:w,entity:v,action:y,timestamp:a,timing:b,source:O}}function zn(e,t,n){return Bn(e,Tn(e,t),n)}async function Fn(e,t){const n=[];return hn(await Vn(e,t,n),await gn(e,n))}async function Vn(e,t,o){e.allowed=!0,e.timing=Date.now(),e.trace=xn(),e.count=0,t&&(t.consent&&(e.consent=qn(e.consent,t.consent),Rn(e,n.Commands.Consent)),t.user&&(e.user=qn(e.user,t.user),Rn(e,n.Commands.User)),t.globals&&(e.globals=qn(e.config.globalsStatic||{},t.globals),Rn(e,n.Commands.Globals)),t.custom&&(e.custom=qn(e.custom,t.custom),Rn(e,n.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await ct(e);const s=await en(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)}}pn(s);const a=await mn(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 Un="collector.next";async function Hn(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 Xe(e,e.transformers||{},s,t,o,n.respond,Un),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,i.droppedBy,Un),{copies:[],respond:a,dropped:!0}):i.stopped?{copies:[],respond:a}:{copies:i.copies.map(t=>({event:Kn(e,t.event,t.ingest),ingest:t.ingest})),respond:a}}import{OBSERVE_STORAGE_KEY as Gn,createBatchedPoster as Qn,createTelemetryObserver as Nn,parseObserveCredential as Yn}from"@walkeros/core";import{assign as Xn,createLogger as Jn}from"@walkeros/core";import{createIngest as Zn,emitStep as eo,FatalError as to,getGrantedConsent as no,getSpanId as oo,InvalidEventError as so,processEventMapping as ro,tryCatchAsync as io,useHooks as ao}from"@walkeros/core";function co(e,t){const n=ao(async(n,o={})=>await io(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}),Sn({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??Zn(r||"unknown");if(c){const t=await ro(p,c,e);if(t.ignore)return Sn({ok:!0});if(c.consent){if(!no(c.consent,e.consent,t.event.consent))return Sn({ok:!0})}p=t.event}if(void 0!==u){const n=r?`source.${r}.next`:void 0,o=await Xe(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,o.droppedBy,n??"collector.push.preChain"),Sn({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Sn({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Bn(e,t(n.event),n.ingest);return mn(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]??Sn({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=zn(e,p,h),w=await mn(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 w},t=>{if(t instanceof to)throw t;if(t instanceof so){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}),Sn({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...ae(t),event:n.name}),Sn({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id&&""!==t.id?t:{...t,id:oo()},r="string"==typeof s.id?s.id:"",i=q(s,o?.ingest,e),a=Date.now(),c=C(e,"collector.push","collector","in",r,a,i);c.inEvent=s,eo(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,eo(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),eo(e,o),t}}}import{FatalError as uo,useHooks as lo,tryCatchAsync as fo}from"@walkeros/core";import{emitStep as po,useHooks as go}from"@walkeros/core";function ho(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 mo,emitStep as wo,readCacheEnvelope as vo,wrapCacheEnvelope as yo}from"@walkeros/core";function bo(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},wo(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?mo(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=vo(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,yo(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),yo(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 ko(e,t,n){const o=`store.${n}`,s=go(t.get,"StoreGet",e.hooks,e.logger),r=go(t.set,"StoreSet",e.hooks,e.logger),i=go(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},po(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},po(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),po(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},po(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},po(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),po(e,r),n}},t.delete=async t=>{const n=Date.now(),s=C(e,o,"store","in","",n);s.meta={op:"delete",key:t},po(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},po(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),po(e,i),s}}}async function So(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=ho()),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]=bo(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&&ko(e,o,t);return n}async function _o(e){const t=Xn({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=Jn(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=co(r,e=>Tn(r,e)),r.command=function(e,t){return lo(async(n,o,s)=>await fo(async()=>await t(e,n,o,s),t=>{if(t instanceof uo)throw t;return e.status.failed++,e.logger.error("command failed",{...ae(t),command:n}),Sn({ok:!1})})(),"Command",e.hooks,e.logger)}(r,Wn),r.elb=function(e){return async(t,n,o,s,r)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let i;if("string"==typeof t)i={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Sn({ok:!1});i={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data={...i.data||{},...n})}return o&&"object"==typeof o&&(i.context=o),s&&Array.isArray(s)&&(i.nested=s),r&&"object"==typeof r&&(i.custom=r),e.push(i)}}(r);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(r.stores=await So(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=ho()),r.destinations=await En(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}=Ke(s,"before"),{config:a}=Ke({...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;P(e,$e("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=t??(e=>{const t=s.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,s]of Object.entries(o)){if("object"!=typeof s||null===s)continue;const o=s;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await Be(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),m=await h(g);void 0!==s.before&&void 0===m.config?.before&&(m.config={...m.config??{},before:s.before}),void 0!==s.next&&void 0===m.config?.next&&(m.config={...m.config??{},next:s.next}),void 0!==l&&void 0===m.config?.state&&(m.config={...m.config??{},state:l}),n[o]=m}return n}(r,e.transformers||{}),r}var Eo=globalThis;function Oo(e){try{const t=Eo.window;if(!t)return;t.localStorage.getItem(Gn)===e&&t.localStorage.removeItem(Gn)}catch{}}function qo(e,t){return void 0===t?e:n=>e({...n,release:t})}function Co(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=Eo.window,t=Eo.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Gn);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),s=t??function(){try{return Eo.window?.localStorage.getItem(Gn)??null}catch{return null}}();if(!s)return;const r=Yn(s);if(!r)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),Oo(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{Eo.window?.localStorage.setItem(Gn,e)}catch{}}(s),null!==t&&function(){const e=Eo.window,t=Eo.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(Gn);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${s}`)}catch{}}();const a=Qn({url:`${n.url}/ingest/${r.ses}`,token:r.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(Oo(s),i&&e.observers.delete(i))}});i=Nn(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(qo(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(Nn(qo(Qn({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function xo(e){e=e||{};const t=await _o(e);if(e.observers)for(const n of e.observers)t.observers.add(n);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?Co(t,e):e.observe&&t.logger.warn("observe: not in this build, config ignored"),await at(t,e.sources||{});const{consent:n,user:o,globals:s,custom:r}=e;n&&await t.command("consent",n),o&&await t.command("user",o),s&&await t.command("globals",s),r&&await t.command("custom",r),t.config.run&&await t.command("run");let i=t.elb;const a=Object.values(t.sources),c=a.find(e=>e.config.primary);return c?i=c.push:a.length>0&&(i=a[0].push),{collector:t,elb:i}}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,fn as addDestination,ce as buildReportError,ie as bumpDropped,Ct as callDestinationOn,Wn as commonHandleCommand,Kn as completeEvent,Bn as createEvent,co as createPush,Sn as createPushResult,bn as destinationInit,kn as destinationPush,zn as enrichEvent,re as ensureDestStatus,St as enterCascade,ae as errorMeta,Vt as fireCallbacks,st as flushSourceQueueOn,D as getCacheStore,En as initDestinations,it as initSource,at as initSources,oe as isBreakerProbePermitted,wt as isRequireSatisfied,rt as isSourceStarted,ht as isStateDelivery,mt as isStatePresent,On as mergeEnvironments,qt as on,tn as onApply,Tn as prepareEvent,s as processConsent,mn as pushToDestinations,Zt as redeliverStateAtRun,_n as registerDestination,te as resolveBreakerConfig,Fn as runCollector,Hn as runCollectorNext,Je as runTransformerBefore,Xe as runTransformerChain,yt as setMark,bt as shouldDeliver,xo as startFlow,Le as transformerInit,ze 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 w,isFunction as v,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 O}from"@walkeros/core";function q(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,s){e.status.in++;const r=C(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),q(t,n,e));r.skipReason="dropped",r.meta={by:o??"route",at:s},O(e,r)}import{applyState as I,compileState as $}from"@walkeros/core";function D(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function A(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?$(e):void 0}function M(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 P(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 we,storeCache as ve,applyUpdate as ye,createMappingRoot as be,stepId as ke}from"@walkeros/core";import{advanceChain as Se,clone as _e,createIngest as Ee,deriveSpanId as Oe,emitStep as qe,FatalError as Ce,isChainContinuation as xe,isObject as je,startChain as Ie,stepId as $e,tryCatchAsync as De,useHooks as Ae,compileCache as Me,checkCache as Pe,storeCache as Re,createMappingRoot as We,validateStepEntry as Te,processEventMapping as Be}from"@walkeros/core";function Ke(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 Le(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:Ze(t.config.env),reportError:ce(e,"transformer",n,s)};s.debug("init");const i=await Ae(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 ze(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:{...Ze(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=q(o,s,e),l=Date.now(),f=C(e,$e("transformer",n),"transformer","in",u,l,d);f.inEvent=o,qe(e,f);try{const s=await Ae(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),i=C(e,$e("transformer",n),"transformer","out",u,r,d);return i.durationMs=r-l,i.outEvent=s,qe(e,i),a.debug("push done"),s}catch(t){const o=Date.now(),s=C(e,$e("transformer",n),"transformer","error",u,o,d);throw s.durationMs=o-l,s.error=x(t),qe(e,s),t}}function Fe(e){return"string"==typeof e.id?e.id:""}function Ve(e,t){const n=Fe(e);return""!==n&&""===Fe(t)?{...t,id:n}:t}function Ue(e,t,n,o){const s=function(e){return{...e,_meta:{...e._meta,path:[...e._meta.path]}}}(n),r=_e(t),i=Fe(e);if(""===i)return{event:r,ingest:s};s._meta.parentEventId=i;const a=Fe(r);return""!==a&&a!==i||(r.id=Oe(i,o)),{event:r,ingest:s}}function He(e,t){return{copies:e,respond:t}}function Ge(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 Qe(e,t,n){const o=await Promise.all(t.map((t,n)=>De(Ne,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}:{}}:He(s,i)}async function Ne(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 He([{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 Qe(e,i.branches.map((e,o)=>({stack:e,...Ue(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 Ye(e,t,s,n,r,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Qe(e,c.copies,r);s=c.event,r=c.respond,o=c.stack}}async function Ye(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:Ve(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?Me(h):void 0,w=m?D(m,i):void 0;let v=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 De(Le,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&&w){const e=await Pe(m,w,We(o,l));if("HIT"===e?.status&&e.value){if(l=e.value,m.stop){return g({copies:[{event:Ve(n,l),ingest:o}],respond:f,stopped:!0})}return p()}"MISS"===e?.status&&(v={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await Je(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:v};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=A(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?M(i,k,e,o):e;b&&b.length>0&&(l=await M(i,b,l,o));const _=await De(ze,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:Ge(t,r.next),...Ue(e,i,o,s),respond:f})}return{kind:"fork",copies:n}}const E=Array.isArray(_)?_[0]:_;let O;return E&&"object"==typeof E&&(E.respond&&(f=E.respond),E.event&&(l=E.event),O=E.next),l=await S(l),v&&w&&Re(w,v.key,l,v.ttl),p(Ge(t,O))}async function Xe(e,t,n,o,s,r,i){const a=s??Ee("string"==typeof n?n:"chain");return void 0===n?He([{event:o,ingest:a}],r):(i&&(a._meta.chainPath=i),Ne({collector:e,transformers:t,chainContext:i},{stack:xe(n)?n:Ie(n),event:o,ingest:a,respond:r}))}async function Je(e,t,n,o,s,r,i){const a=t[n],c=a?a.config.before:void 0,u=await Xe(e,t,c,o,s,r,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}function Ze(e){return e&&je(e)?e:{}}var et=1e4;function tt(e){return"number"==typeof e&&e>0?e:et}var nt=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function ot(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new nt(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}async function st(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(ht(n)&&!bt(e,t,n))continue;const o=t.on;let i=!1;await he(()=>ot(Promise.resolve(o(n,r)),et,`Source "${s}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof de)throw t;t instanceof nt?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,...ae(t)})})(),ht(n)&&!i&&yt(e,t,n)}}function rt(e){return Boolean(e.config.init)&&!e.config.require?.length}async function it(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=A(l);P(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),w=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 Xe(e,e.transformers||{},c,u,r.ingest,r.respond,n);if(0===o.copies.length)return j(e,u,r.ingest,o.droppedBy,n),Sn({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=D(g,e);if(t){const n=be(r.ingest),o=await we(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=>{ve(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||ve(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await M(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},v=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 w(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 v(e),respond:t};return n({...b,push:(e,t={})=>w(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 at(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const t=await it(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,rt(n)&&await st(e,n,t))}return await ct(e),n}async function ct(e){for(const[t,n]of Object.entries(e.sources)){if(rt(n))continue;const o=n.config.require;if(!o?.length)continue;const s=o.filter(t=>!wt(e,t));s.length!==o.length&&(n.config.require=s,rt(n)&&await st(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=>!wt(e,t));if(n.config&&(n.config.require=s),s.length>0)continue;delete e.pending.destinations[t];const r=_n(n);!1!==r.config.queue&&(r.queuePush=[...e.queue]),e.destinations[t]=r,await Xt(e,r,t)}}function ut(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 dt=!1;function lt(){dt||(dt=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function ft(e,t,n,o){if(n instanceof F)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...ae(n)})}var pt=["consent","user","globals","custom"];function gt(e){return pt.includes(e)}function ht(e){return gt(e)}function mt(e,t){return gt(t)&&Object.keys(e[t]).length>0}function wt(e,t){if(gt(t))return mt(e,t);switch(t){case n.Commands.Run:case n.Commands.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function vt(e,t){return e.cellVersion?.[String(t)]??0}function yt(e,t,n){Ft(e,t,n,vt(e,n))}function bt(e,t,n){return e.allowed&&vt(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 kt=8;function St(e){const t=e.cascade;if(t&&!_t.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,_t.set(n,(_t.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(_t.get(n)||1)-1;t>0?_t.set(n,t):(_t.delete(n),e.cascade===n&&(e.cascade=void 0))}}var _t=new WeakMap;function Et(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<=kt||(i===kt+1&&e.logger.error("state delivery did not converge",{type:r}),!1)}function Ot(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function qt(e,t,n){if(!ut(e))return void lt();const o=e.on,s=o[t]||[],r=z(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,Vt(e,t,r)}async function Ct(e,t,n,o,s){const r=t.on;if(!r)return!0;const i=ht(o);if(i&&(xt.get(t)||jt.has(t)))return Bt(e,t,o),xt.get(t)||It.add(t),!1;const a=i?vt(e,o):0,c=i&&function(e,t,n,o){if(Rt.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)?Ut(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:On(t.env,t.config.env),reportError:ce(e,"destination",n,d,t)};i&&(Lt(t,o),function(e,t,n){let o=Mt.get(e);o||(o={},Mt.set(e,o));const s=String(t),r=o[s];(void 0===r||r<n)&&(o[s]=n)}(t,o,a),jt.add(t));const f=tt(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await U(()=>(p=Promise.resolve(r(o,l)),ot(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof nt&&(h=!0),ft(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){jt.delete(t),m&&It.delete(t);const s=Rt.get(t);g?(Ft(e,t,o,a),s?.delete(String(o))):Bt(e,t,o),h?function(e,t,n,o,s,r,i){xt.set(t,(xt.get(t)||0)+1);const a=()=>{const r=(xt.get(t)||0)-1;r>0?xt.set(t,r):xt.delete(t),Wt(t,o),Pt(t,o,s),zt(e,t),i.debug("late settle after timeout"),It.delete(t),e.allowed&&e.destinations[n]===t&&function(e,t,n,o){U(async()=>{await Xt(e,t,n),!Dt(t)&&t.queuePush?.length&&await mn(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):(Pt(t,o,a),zt(e,t))}}return i&&!h&&It.delete(t)&&await Xt(e,t,n),g}var xt=new WeakMap,jt=new WeakSet,It=new WeakSet;var $t=new WeakMap;function Dt(e){return $t.get(e)}var At=new WeakMap,Mt=new WeakMap;function Pt(e,t,n){const o=Mt.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Rt=new WeakMap;function Wt(e,t){const n=Rt.get(e);n?n.add(String(t)):Rt.set(e,new Set([String(t)]))}var Tt=new WeakMap;function Bt(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Wt(t,n),$t.set(t,{type:n,since:Date.now()})}function Kt(e,t){return!!Rt.get(t)?.size||pt.some(n=>mt(e,n)&&bt(e,t,n))}function Lt(e,t){At.set(e,(At.get(e)||0)+1),$t.set(e,{type:t,since:Date.now()})}function zt(e,t){const n=(At.get(t)||0)-1;n>0?At.set(t,n):At.delete(t),function(e,t){if(!$t.has(t))return;if(At.get(t))return;Kt(e,t)||$t.delete(t)}(e,t)}function Ft(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 Vt(e,t,o,s){if(!ut(e))return void lt();const r=Ut(e,t,s);if(o.length)switch(t){case n.Commands.Consent:!function(e,t,o){const s=o||e.consent,r=Ot(e,n.Commands.Consent);t.forEach(t=>{bt(e,t,n.Commands.Consent)&&Et(e,t,n.Commands.Consent)&&(Object.keys(s).filter(e=>e in t).forEach(n=>{V(t[n],t=>ft(e,"consent",t,{key:n}))(s,r)}),yt(e,t,n.Commands.Consent))})}(e,o,s);break;case n.Commands.Ready:!function(e,t){if(!e.allowed)return;const o=Ot(e,n.Commands.Ready);t.forEach(t=>{V(t,t=>ft(e,"ready",t))(void 0,o)})}(e,o);break;case n.Commands.Run:!function(e,t){if(!e.allowed)return;const o=Ot(e,n.Commands.Run);t.forEach(t=>{V(t,t=>ft(e,"run",t))(void 0,o)})}(e,o);break;case n.Commands.Session:!function(e,t){if(!e.session)return;const o=Ot(e,n.Commands.Session);t.forEach(t=>{V(t,t=>ft(e,"session",t))(e.session,o)})}(e,o);break;default:{const n=Ot(e,t),s=ht(t);o.forEach(o=>{"function"==typeof o&&(s&&!bt(e,o,t)||s&&!Et(e,o,t)||(V(o,n=>ft(e,"generic",n,{type:t}))(r,n),s&&yt(e,o,t)))});break}}}function Ut(e,t,o){if(gt(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 Ht(e,t,n,o,s){if(!t.on)return!1;if(ht(o)&&!bt(e,t,o))return!1;if(ht(o)&&!Et(e,t,o))return!1;const r=ht(o);if(r&&Gt.has(t))return Qt.add(t),!1;const i=r?vt(e,o):0;r&&Gt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await U(()=>(u=Promise.resolve(a(o,s)),ot(u,et,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof nt&&(d=!0),ft(e,"source",t,{sourceId:n,type:o})})()}finally{r&&!d&&Gt.delete(t)}if(r)if(d){const o=()=>{Gt.delete(t),Qt.delete(t),e.allowed&&e.sources[n]===t&&U(()=>Nt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",ae(t))})()};u.then(o,o)}else Ft(e,t,o,i),Qt.delete(t)&&await Nt(e,t,n);return!1===c}var Gt=new WeakSet,Qt=new WeakSet;async function Nt(e,t,n){const o=St(e);try{for(const o of pt)await Ht(e,t,n,o,Ut(e,o))}finally{o()}}async function Yt(e,t,n,o,s){if(!t.on)return;const r=ht(o);if(r&&!bt(e,t,o))return;const i=Mt.get(t)?.[String(o)];if(r&&void 0!==i&&i>=vt(e,o))return;if(r&&!Et(e,t,o)){if(t.config.init)return void Bt(e,t,o);const n=t.queueOn=t.queueOn||[],s={type:o,data:Ut(e,o)},r=n[n.length-1];return r&&r.type===o?n[n.length-1]=s:n.push(s),yt(e,t,o),void Rt.get(t)?.delete(String(o))}const a=Tt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:s}),void(r&&(yt(e,t,o),a&&!a.held&&(Lt(t,o),a.held=!0)));await Ct(e,t,n,o,s)}async function Xt(e,t,n){if(!t.on)return;const o=St(e);try{for(const o of pt)(mt(e,o)||Rt.get(t)?.has(String(o)))&&await Yt(e,t,n,o,Ut(e,o))}finally{o()}}function Jt(e){return(At.get(e)||0)>0}async function Zt(e){const t=await en(e);await Promise.all(t.map(({done:e})=>e))}async function en(e){if(!ut(e))return lt(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const s=async()=>{for(const t of pt)mt(e,t)&&await Yt(e,o,n,t,Ut(e,t))};t.push(nn(n,o,s()))}for(const t of pt){if(!mt(e,t))continue;const n=Ut(e,t);Vt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>rt(e)).map(([o,s])=>Ht(e,s,o,t,n)))}return t}async function tn(e,t,n,o){const{ok:s,deliveries:r}=await on(e,t,n,o);return await Promise.all(r.map(({done:e})=>e)),s}function nn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}async function on(e,t,n,o){if(!ut(e))return lt(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let s=n||[];n||(s=e.on[t]||[]);const r=Ut(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&&(rt(o)?i.push(Ht(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(nn(n,o,Yt(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))rt(n)&&n.queueOn?.length&&await st(e,n,t);const u=Object.values(e.sources).some(e=>!rt(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await ct(e),Vt(e,t,s,o),{ok:!c,deliveries:a}}var sn=1e3,rn=1e3,an=3e4,cn=Object.freeze({batched:!0});function un(e){return e===cn}var dn=" batch-all";function ln(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function fn(e,t){const{code:n,config:o={},env:s={},before:r,next:i,cache:a,state:c}=t;if(!v(n.push))return Sn({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(P(e,S("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await ct(e);const n=e.destinations[l];return n?mn(e,void 0,{},{[l]:n}):Sn({ok:!0})}const f={...n,config:d,env:On(n.env,s)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Xt(e,f,l),mn(e,void 0,{},{[l]:f})}function pn(e){for(const t of e)Dt(t.destination)&&(t.drain=!0)}async function gn(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:s})=>{if(await o,s&&e.allowed&&!Dt(n)&&n.queuePush?.length&&e.destinations[t]===n)return mn(e,void 0,{},{[t]:n})}))).filter(w)}function hn(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 mn(e,t,n={},o){if(!e.allowed)return Sn({ok:!1});if(!t)return wn(e,void 0,n,o);const s=await Hn(e,t,n);if(0===s.copies.length)return Sn({ok:!0,...s.dropped?{dropped:!0}:{}});const r=[];for(const t of s.copies)r.push(await wn(e,t.event,{id:n.id,ingest:t.ingest,respond:s.respond},o));return r[0]}async function wn(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,w=S("destination",h),v=te(p.config.breaker);if(v&&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,w,v.cooldown))return{id:o,destination:p,skipped:!0};const y=t=>{v&&ne(e.status.breakers,w,t,v.threshold,v.cooldown)},b=()=>{v&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,w)},k=t=>{if(!t.length)return;p.queuePush||(p.queuePush=[]);const n=p.queuePush,s=p.config.id||o,r={max:p.config.queueMax??sn};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&&!Dt(p)&&!Jt(p)&&Kt(e,p)&&await Xt(e,p,o);const E=Dt(p);if(E&&!Jt(p)&&Date.now()-E.since>=tt(p.config.timeout)&&await Xt(e,p,o),Dt(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 O=(p.queuePush||[]).map(t=>({...t,consent:e.consent}));p.queuePush=[],t&&O.push(c(t));const x=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:f("unknown");if(!O.length&&!p.queueOn?.length)return b(),{id:o,destination:p,skipped:!0};if(!O.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 bn(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(Dt(p))return b(),{id:o,destination:p,skipped:!0};if(!t||!p.queuePush?.length)return b(),{id:o,destination:p,skipped:!t};O=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(),q(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:$,skipped:P}=j(O);if(k(P),!$.length)return b(),{id:o,destination:p,queue:O};const R=new Set(p.queuePush);let W=!1;try{W=await bn(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:O};if(Dt(p))return b(),k($),{id:o,destination:p,queue:$};const T=[];if(e.consent!==I){const t=j($.map(t=>({...t,consent:e.consent})));$.splice(0,$.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})));$.push(...t.allowed),T.push(...t.skipped)}if(k(T),!$.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?D(H,e):void 0,N=A(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($.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 Xe(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(),q(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 M(e,J,t,n));const f=Date.now();let g=!1;const m=await _(kn,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&&!un(m)&&Z&&Z.length>0&&t&&(t=await M(e,Z,t,n)),void 0===m||un(m)||(z=m),un(m)&&ce++,!g&&V){void 0!==m&&(n._response=m);const s=await Xe(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:$.length,pushedCount:ue,canonicalId:h,breakerConfig:v}})),h={},w={},v={};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,v[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)w[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 Sn({event:t,...Object.keys(h).length&&{done:h},...Object.keys(w).length&&{queued:w},...Object.keys(v).length&&{failed:v}})}async function vn(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:On(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=St(e);!function(e){const t=e.queueOn?.find(({type:e})=>ht(e));t&&Lt(e,t.type),Tt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await Ct(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])ht(n)&&Bt(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Tt.get(t);Tt.delete(t),n?.held&&zt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}var yn=new WeakMap;async function bn(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=yn.get(t);if(s)return s;const r=vn(e,t,t.init,n);yn.set(t,r);try{return await r}finally{yn.delete(t)}}return!0}async function kn(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:{...On(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||"* *":dn;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=ln(l?.batch),r=ln(i.batch),a=s.wait??r.wait??an,c=s.size??r.size??rn,d=s.age??r.age??an,m=On(t.env,i.env),w=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),w=t=>{f&&ne(e.status.breakers,p,t,f.threshold,f.cooldown)},v=Date.now(),b=new Map;let k,O=!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 $=tt(i.timeout),D=await _((o,s)=>ot(Promise.resolve(E(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),$,`Destination "${n}" batch delivery timed out after ${$}ms`),e=>{I=0,O=!0,k=e,j(r.entries.map(t=>[t.event,e])),w("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:r.entries.length})})(r,c);if(y(A=D)&&Array.isArray(A.failed)&&D.failed.length>0){const e=[];for(const t of D.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 A;const M=Date.now();r.entries.forEach((t,o)=>{const s=O||b.has(o),i=q(t.event,t.ingest,e),a=C(e,S("destination",n),"destination",s?"error":"flush","string"==typeof t.event.id?t.event.id:"",M,i);if(a.batch={size:r.entries.length,index:o},a.durationMs=M-v,s){const e=O?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,w("success"))},{wait:a,size:c,age:d});t.batches[h]={batched:o,isDefault:!f,batchFn:()=>{w()},flush:async()=>{await w.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),w(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",m=q(o,s,e),v=Date.now(),b=C(e,S("destination",n),"destination","in",d,v,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,v,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 O=t.config.id||n,j=re(e,O);return j.inFlightBatch=(j.inFlightBatch??0)+1,c.batchFn(),cn}{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=q(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=tt(i.timeout),s=await ot(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),w(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 Sn(e){return{ok:!e?.failed,...e}}function _n(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:i}=Ke(e,"before"),{config:a}=Ke({...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=On(t.env,o);return{...t,config:c,env:u}}async function En(e,t={}){const n={};for(const[o,s]of Object.entries(t))P(e,S("destination",o),s.config?.state??s.code.config?.state??s.state),s.config?.require?.length?e.pending.destinations[o]=s:n[o]=_n(s);return n}function On(e,t){return e||t?t?e&&y(e)&&y(t)?{...e,...t}:t:e:{}}import{assign as qn,getSpanId as Cn,getTraceId as xn,InvalidEventError as jn,isFunction as In,isString as $n}from"@walkeros/core";import{isObject as Dn}from"@walkeros/core";var An=5e3;async function Mn(e){const t=e.logger;await Pn(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 Pn(e.destinations,"destination",t),await Pn(e.transformers,"transformer",t),await Pn(e.stores,"store",t)}async function Pn(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 Rn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Wn(e,t,o){let r,i,a=!1;const c=[],u=St(e);try{return await async function(){switch(t){case n.Commands.Config:Dn(o)&&(qn(e.config,o,{shallow:!1,merge:!1}),i=o,a=!0);break;case n.Commands.Consent:if(Dn(o)){const{update:t}=s(e,o);Rn(e,n.Commands.Consent),i=t,a=!0}break;case n.Commands.Custom:Dn(o)&&(e.custom=qn(e.custom,o),Rn(e,n.Commands.Custom),i=o,a=!0);break;case n.Commands.Destination:Dn(o)&&"code"in o&&Dn(o.code)&&(r=await fn(e,o));break;case n.Commands.Globals:Dn(o)&&(e.globals=qn(e.globals,o),Rn(e,n.Commands.Globals),i=o,a=!0);break;case n.Commands.Hook:if(Dn(o)&&$n(o.name)&&In(o.fn)){const{name:t,fn:n}=o;e.hooks[t]=n,i=o,a=!0}break;case n.Commands.On:if(Dn(o)&&$n(o.type)){const{type:t,rules:n}=o;await qt(e,t,n)}break;case n.Commands.Ready:a=!0;break;case n.Commands.Run:r=await Vn(e,o,c),a=!0;break;case n.Commands.Session:a=!0;break;case n.Commands.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await Mn(e));break;case n.Commands.User:Dn(o)&&(qn(e.user,o,{shallow:!1}),Rn(e,n.Commands.User),i=o,a=!0);break;default:return e.logger.warn("unknown command",{command:t}),Sn({ok:!1})}if(a){const n=await on(e,t,void 0,i);c.push(...n.deliveries),pn(n.deliveries);const o=hn(await mn(e),await gn(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||Sn({ok:!0})}()}finally{u()}}function Tn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Bn(e,t,n){return Ln(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Kn(e,t,n){return Ln(e,Tn(e,t),n,{globals:{},user:{},consent:{}})}function Ln(e,t,n,o){const s=t.name;if("string"!=typeof s)throw new jn(void 0===s?"Event name is required":"Event name is invalid");if(!s)throw new jn("Event name is required");const[r,i]=s.split(" ");if(!r||!i)throw new jn("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=Cn(),trigger:w="",entity:v=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,O={...S,count:_};void 0!==E&&(O.trace=E);const q=e.name??S.platform??"default",C=e.release??"4.7.2-next-1791147139360";O.release={...S.release,[q]:C};return{name:c,data:u,context:d,globals:qn(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:w,entity:v,action:y,timestamp:a,timing:b,source:O}}function zn(e,t,n){return Bn(e,Tn(e,t),n)}async function Fn(e,t){const n=[];return hn(await Vn(e,t,n),await gn(e,n))}async function Vn(e,t,o){e.allowed=!0,e.timing=Date.now(),e.trace=xn(),e.count=0,t&&(t.consent&&(e.consent=qn(e.consent,t.consent),Rn(e,n.Commands.Consent)),t.user&&(e.user=qn(e.user,t.user),Rn(e,n.Commands.User)),t.globals&&(e.globals=qn(e.config.globalsStatic||{},t.globals),Rn(e,n.Commands.Globals)),t.custom&&(e.custom=qn(e.custom,t.custom),Rn(e,n.Commands.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await ct(e);const s=await en(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)}}pn(s);const a=await mn(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 Un="collector.next";async function Hn(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 Xe(e,e.transformers||{},s,t,o,n.respond,Un),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,i.droppedBy,Un),{copies:[],respond:a,dropped:!0}):i.stopped?{copies:[],respond:a}:{copies:i.copies.map(t=>({event:Kn(e,t.event,t.ingest),ingest:t.ingest})),respond:a}}import{OBSERVE_STORAGE_KEY as Gn,createBatchedPoster as Qn,createTelemetryObserver as Nn,parseObserveCredential as Yn}from"@walkeros/core";import{assign as Xn,createLogger as Jn}from"@walkeros/core";import{createIngest as Zn,emitStep as eo,FatalError as to,getGrantedConsent as no,getSpanId as oo,InvalidEventError as so,processEventMapping as ro,tryCatchAsync as io,useHooks as ao}from"@walkeros/core";function co(e,t){const n=ao(async(n,o={})=>await io(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}),Sn({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??Zn(r||"unknown");if(c){const t=await ro(p,c,e);if(t.ignore)return Sn({ok:!0});if(c.consent){if(!no(c.consent,e.consent,t.event.consent))return Sn({ok:!0})}p=t.event}if(void 0!==u){const n=r?`source.${r}.next`:void 0,o=await Xe(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,o.droppedBy,n??"collector.push.preChain"),Sn({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Sn({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Bn(e,t(n.event),n.ingest);return mn(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]??Sn({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=zn(e,p,h),w=await mn(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 w},t=>{if(t instanceof to)throw t;if(t instanceof so){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}),Sn({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...ae(t),event:n.name}),Sn({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id&&""!==t.id?t:{...t,id:oo()},r="string"==typeof s.id?s.id:"",i=q(s,o?.ingest,e),a=Date.now(),c=C(e,"collector.push","collector","in",r,a,i);c.inEvent=s,eo(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,eo(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),eo(e,o),t}}}import{FatalError as uo,useHooks as lo,tryCatchAsync as fo}from"@walkeros/core";import{emitStep as po,useHooks as go}from"@walkeros/core";function ho(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 mo,emitStep as wo,readCacheEnvelope as vo,wrapCacheEnvelope as yo}from"@walkeros/core";function bo(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},wo(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?mo(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=vo(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,yo(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),yo(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 ko(e,t,n){const o=`store.${n}`,s=go(t.get,"StoreGet",e.hooks,e.logger),r=go(t.set,"StoreSet",e.hooks,e.logger),i=go(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},po(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},po(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),po(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},po(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},po(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),po(e,r),n}},t.delete=async t=>{const n=Date.now(),s=C(e,o,"store","in","",n);s.meta={op:"delete",key:t},po(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},po(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),po(e,i),s}}}async function So(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=ho()),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]=bo(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&&ko(e,o,t);return n}async function _o(e){const t=Xn({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=Jn(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=co(r,e=>Tn(r,e)),r.command=function(e,t){return lo(async(n,o,s)=>await fo(async()=>await t(e,n,o,s),t=>{if(t instanceof uo)throw t;return e.status.failed++,e.logger.error("command failed",{...ae(t),command:n}),Sn({ok:!1})})(),"Command",e.hooks,e.logger)}(r,Wn),r.elb=function(e){return async(t,n,o,s,r)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let i;if("string"==typeof t)i={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Sn({ok:!1});i={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data={...i.data||{},...n})}return o&&"object"==typeof o&&(i.context=o),s&&Array.isArray(s)&&(i.nested=s),r&&"object"==typeof r&&(i.custom=r),e.push(i)}}(r);const i=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(r.stores=await So(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=ho()),r.destinations=await En(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}=Ke(s,"before"),{config:a}=Ke({...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;P(e,$e("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=t??(e=>{const t=s.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,s]of Object.entries(o)){if("object"!=typeof s||null===s)continue;const o=s;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await Be(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),m=await h(g);void 0!==s.before&&void 0===m.config?.before&&(m.config={...m.config??{},before:s.before}),void 0!==s.next&&void 0===m.config?.next&&(m.config={...m.config??{},next:s.next}),void 0!==l&&void 0===m.config?.state&&(m.config={...m.config??{},state:l}),n[o]=m}return n}(r,e.transformers||{}),r}var Eo=globalThis;function Oo(e){try{const t=Eo.window;if(!t)return;t.localStorage.getItem(Gn)===e&&t.localStorage.removeItem(Gn)}catch{}}function qo(e,t){return void 0===t?e:n=>e({...n,release:t})}function Co(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=Eo.window,t=Eo.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Gn);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),s=t??function(){try{return Eo.window?.localStorage.getItem(Gn)??null}catch{return null}}();if(!s)return;const r=Yn(s);if(!r)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),Oo(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{Eo.window?.localStorage.setItem(Gn,e)}catch{}}(s),null!==t&&function(){const e=Eo.window,t=Eo.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(Gn);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${s}`)}catch{}}();const a=Qn({url:`${n.url}/ingest/${r.ses}`,token:r.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(Oo(s),i&&e.observers.delete(i))}});i=Nn(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(qo(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(Nn(qo(Qn({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}async function xo(e){e=e||{};const t=await _o(e);if(e.observers)for(const n of e.observers)t.observers.add(n);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?Co(t,e):e.observe&&t.logger.warn("observe: not in this build, config ignored"),await at(t,e.sources||{});const{consent:n,user:o,globals:s,custom:r}=e;n&&await t.command("consent",n),o&&await t.command("user",o),s&&await t.command("globals",s),r&&await t.command("custom",r),t.config.run&&await t.command("run");let i=t.elb;const a=Object.values(t.sources),c=a.find(e=>e.config.primary);return c?i=c.push:a.length>0&&(i=a[0].push),{collector:t,elb:i}}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,fn as addDestination,ce as buildReportError,ie as bumpDropped,Ct as callDestinationOn,Wn as commonHandleCommand,Kn as completeEvent,Bn as createEvent,co as createPush,Sn as createPushResult,bn as destinationInit,kn as destinationPush,zn as enrichEvent,re as ensureDestStatus,St as enterCascade,ae as errorMeta,Vt as fireCallbacks,st as flushSourceQueueOn,D as getCacheStore,En as initDestinations,it as initSource,at as initSources,oe as isBreakerProbePermitted,wt as isRequireSatisfied,rt as isSourceStarted,ht as isStateDelivery,mt as isStatePresent,On as mergeEnvironments,qt as on,tn as onApply,Tn as prepareEvent,s as processConsent,mn as pushToDestinations,Zt as redeliverStateAtRun,_n as registerDestination,te as resolveBreakerConfig,Fn as runCollector,Hn as runCollectorNext,Je as runTransformerBefore,Xe as runTransformerChain,yt as setMark,bt as shouldDeliver,xo as startFlow,Le as transformerInit,ze 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.7.1",
4
+ "version": "4.7.2-next-1791147139360",
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.7.1"
35
+ "@walkeros/core": "4.7.2-next-1791147139360"
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.7.1"
64
+ "@walkeros/core": "4.7.2-next-1791147139360"
65
65
  }
66
66
  }