@walkeros/source-demo 4.8.0-next-1791496487198 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # @walkeros/source-demo
2
2
 
3
- ## 4.8.0-next-1791496487198
3
+ ## 4.8.0
4
4
 
5
5
  ### Patch Changes
6
6
 
7
7
  - Updated dependencies [7132619]
8
8
  - Updated dependencies [5593d7b]
9
9
  - Updated dependencies [421233d]
10
- - @walkeros/core@4.8.0-next-1791496487198
10
+ - @walkeros/core@4.8.0
11
11
 
12
12
  ## 4.7.2
13
13
 
package/dist/dev.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})},i={};s(i,{examples:()=>g,schemas:()=>a}),module.exports=(e=i,((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 a={};s(a,{MappingSchema:()=>l,SettingsSchema:()=>d,mapping:()=>p,settings:()=>f});var c=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),d=u.z.object({events:u.z.array(u.z.object({delay:u.z.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")}),l=require("@walkeros/core/dev").z.object({}),f=(0,c.zodToSchema)(d),p=(0,c.zodToSchema)(l),g={};s(g,{createTrigger:()=>sn,env:()=>h,step:()=>S});var h={};s(h,{init:()=>w,push:()=>b,simulation:()=>k});var v=async()=>({ok:!0}),m=()=>{},y={error:m,warn:m,info:m,debug:m,throw:e=>{throw"string"==typeof e?new Error(e):e},json:m,scope:()=>y},w=void 0,b={push:v,command:v,elb:v,logger:y},k=["call:elb"],S={};s(S,{delayedEvent:()=>O,pageView:()=>E});var E={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},O={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]},_=require("@walkeros/core"),q=require("@walkeros/core"),I=require("@walkeros/core"),j=require("@walkeros/core"),x=require("@walkeros/core"),C=require("@walkeros/core"),A=require("@walkeros/core"),M=require("@walkeros/core"),D=require("@walkeros/core"),P=require("@walkeros/core"),R=require("@walkeros/core"),$=require("@walkeros/core"),T=require("@walkeros/core"),B=require("@walkeros/core"),K=require("@walkeros/core"),W=require("@walkeros/core"),z=require("@walkeros/core"),L=require("@walkeros/core"),V=require("@walkeros/core"),F={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"};function H(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function G(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 U(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function Y(e,t,n,o){e.status.in++;const r=G(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),H(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):r.meta={by:o.by??"route",at:o.at},(0,j.emitStep)(e,r)}function Q(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function N(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?(0,x.compileState)(e):void 0}function X(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,x.applyState)(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function J(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}function Z(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 r of e)o.push(Z(r,t,n+1));return o}const r={};t.set(e,r);for(const[o,s]of Object.entries(e))r[o]="function"==typeof s?s:Z(s,t,n+1);return r}function ee(e,t){try{return e[t]}catch{return"[unreadable]"}}function te(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(ee(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 ne(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:te(e.args),ts:e.ts})))}function oe(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function re(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 se=new WeakMap;function ie(e,t,n,o){se.get(e)||(se.set(e,!0),t.warn(n,o))}function ae(e){se.delete(e)}var ce=()=>Date.now();function ue(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function de(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;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=ce()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ce()+r)))}function le(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 fe(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 pe(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 ge(e,t,n,o,r){const s=(0,D.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??100},c=re(i,[o,r],a);if(c.dropped>0){const t=fe(e.status,(0,D.stepId)("destination",n),"dlq",c.dropped);ie(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&ae(i);const u=le(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=ue(t.config.breaker);if(d){const o=t.config.id||n;de(e.status.breakers,(0,D.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...pe(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",pe(t))}catch{}}}function he(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 ve(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,R.createIngest)(n),config:t.config,env:Ie(t.config.env),reportError:ge(e,"transformer",n,r)};r.debug("init");const i=await(0,R.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 me(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:{...Ie(t.config.env),...s?{respond:s}:{}},reportError:ge(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=H(o,r,e),l=Date.now(),f=G(e,(0,R.stepId)("transformer",n),"transformer","in",u,l,d);f.inEvent=o,(0,R.emitStep)(e,f);try{const r=await(0,R.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=G(e,(0,R.stepId)("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,(0,R.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=G(e,(0,R.stepId)("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=U(t),(0,R.emitStep)(e,r),t}}function ye(e){return"string"==typeof e.id?e.id:""}function we(e,t){const n=ye(e);return""!==n&&""===ye(t)?{...t,id:n}:t}function be(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=(0,R.clone)(t),i=ye(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=ye(s);return""!==c&&c!==i||(s.id=(0,R.deriveSpanId)(i,o)),{event:s,ingest:r}}function ke(e,t){return{copies:e,respond:t}}function Se(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 Ee(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,R.tryCatchAsync)(Oe,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,pe(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}:{}}:ke(r,i)}async function Oe(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,R.advanceChain)(o,(0,R.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return ke([{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 Ee(e,i.branches.map((e,o)=>({stack:e,...be(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 _e(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Ee(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function _e(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:we(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,v=h?(0,R.compileCache)(h):void 0,m=v?Q(v,i):void 0;let y=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});if(o._meta.hops++,o._meta.path.push(u),!await(0,R.tryCatchAsync)(ve,e=>{if(e instanceof R.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...pe(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(v&&m){const e=await(0,R.checkCache)(v,m,(0,R.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value)return l=e.value,v.stop?g({copies:[{event:we(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(y={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await qe(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(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 w=N(d.config?.state),b=w?.filter(e=>"get"===e.mode),k=w?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?X(i,k,e,o):e;b&&b.length>0&&(l=await X(i,b,l,o));const E=await(0,R.tryCatchAsync)(me,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",pe(e)),!1))(i,d,u,l,o,f);if(!1===E)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(E)&&1!==E.length){if(0===E.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<E.length;r++){const s=E[r],i=await S(s.event||e);n.push({stack:Se(t,s.next),...be(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const O=Array.isArray(E)?E[0]:E;let _;return O&&"object"==typeof O&&(O.respond&&(f=O.respond),O.event&&(l=O.event),_=O.next),l=await S(l),y&&m&&(0,R.storeCache)(m,y.key,l,y.ttl),p(Se(t,_))}async function qe(e,t,n,o,r,s,i){const a=r??(0,R.createIngest)("string"==typeof n?n:"chain");return void 0===n?ke([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),Oe({collector:e,transformers:t,chainContext:i},{stack:(0,R.isChainContinuation)(n)?n:(0,R.startChain)(n),event:o,ingest:a,respond:s}))}function Ie(e){return e&&(0,R.isObject)(e)?e:{}}var je=1e4;function xe(e){return"number"==typeof e&&e>0?e:je}var Ce=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Ae(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Ce(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function Me(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(Le(n)&&!Ue(e,t,n))continue;const o=t.on;let i=!1;await(0,P.tryCatchAsync)(()=>Ae(Promise.resolve(o(n,s)),je,`Source "${r}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof P.FatalError)throw t;t instanceof Ce?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...pe(t)})})(),Le(n)&&!i&&Ge(e,t,n)}}function De(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Pe(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=N(l);J(e,(0,P.stepId)("source",t),l);const p=u,g=p?(0,P.compileCache)({...p,stop:p.stop??!0}):void 0,h=d??e.push,v=Boolean(d),m=async(n,o,s)=>{if(v)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,P.getSpanId)()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await qe(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return Y(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),Kt({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=Q(g,e);if(t){const n=(0,P.createMappingRoot)(s.ingest),o=await(0,P.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,P.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,P.storeCache)(t,u,n,d),a?i=(async()=>{const t=await(0,P.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,P.storeCache)(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await X(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},y=async n=>{const o=(0,P.createIngest)(t),s=(0,P.parseTraceparent)((0,P.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,P.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},w=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:(0,P.createIngest)(t),respond:void 0};return m(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:w},k={collector:e,logger:w,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await y(e),respond:t};return n({...b,push:(e,t={})=>m(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ge(e,"source",t,w)},S=await(0,P.tryCatchAsync)(o,n=>{if(n instanceof P.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...pe(n)})})(k);if(!S)return;const E=S.type||"unknown",O=e.logger.scope(E).scope(t);return b.logger=O,i&&(S.config={...S.config,primary:i}),S}async function Re(e){for(const[t,n]of Object.entries(e.sources)){if(De(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Fe(e,t));r.length!==o.length&&(n.config.require=r,De(n)&&await Me(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=>!Fe(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Wt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await Et(e,s,t)}}function $e(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 Te=!1;function Be(){Te||(Te=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Ke(e,t,n,o){if(n instanceof A.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...pe(n)})}var We=["consent","user","globals","custom"];function ze(e){return We.includes(e)}function Le(e){return ze(e)}function Ve(e,t){return ze(t)&&Object.keys(e[t]).length>0}function Fe(e,t){if(ze(t))return Ve(e,t);switch(t){case F.Run:case F.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function He(e,t){return e.cellVersion?.[String(t)]??0}function Ge(e,t,n){ht(e,t,n,He(e,n))}function Ue(e,t,n){return e.allowed&&He(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 Ye=8;function Qe(e){const t=e.cascade;if(t&&!Ne.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,Ne.set(n,(Ne.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(Ne.get(n)||1)-1;t>0?Ne.set(n,t):(Ne.delete(n),e.cascade===n&&(e.cascade=void 0))}}var Ne=new WeakMap;function Xe(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<=Ye||(i===Ye+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Je(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function Ze(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=Le(o);if(i&&(et.get(t)||tt.has(t)))return lt(e,t,o),et.get(t)||nt.add(t),!1;const a=i?He(e,o):0,c=i&&function(e,t,n,o){if(ct.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)?mt(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:zt(t.env,t.config.env),reportError:ge(e,"destination",n,d,t)};i&&(pt(t,o),function(e,t,n){let o=it.get(e);o||(o={},it.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),tt.add(t));const f=xe(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,v=!0;try{await(0,M.tryCatchAsync)(()=>(p=Promise.resolve(s(o,l)),Ae(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof Ce&&(h=!0),Ke(e,"destination",t,{destId:n,type:o})})(),v=!1}finally{if(i){tt.delete(t),v&&nt.delete(t);const r=ct.get(t);g?(ht(e,t,o,a),r?.delete(String(o))):lt(e,t,o),h?function(e,t,n,o,r,s,i){et.set(t,(et.get(t)||0)+1);const a=()=>{const s=(et.get(t)||0)-1;var a,c,u,d;s>0?et.set(t,s):et.delete(t),ut(t,o),at(t,o,r),gt(e,t),i.debug("late settle after timeout"),nt.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,(0,M.tryCatchAsync)(async()=>{await Et(a,c,u),!rt(c)&&c.queuePush?.length&&await Pt(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",pe(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(at(t,o,a),gt(e,t))}}return i&&!h&&nt.delete(t)&&await Et(e,t,n),g}var et=new WeakMap,tt=new WeakSet,nt=new WeakSet,ot=new WeakMap;function rt(e){return ot.get(e)}var st=new WeakMap,it=new WeakMap;function at(e,t,n){const o=it.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var ct=new WeakMap;function ut(e,t){const n=ct.get(e);n?n.add(String(t)):ct.set(e,new Set([String(t)]))}var dt=new WeakMap;function lt(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),ut(t,n),ot.set(t,{type:n,since:Date.now()})}function ft(e,t){return!!ct.get(t)?.size||We.some(n=>Ve(e,n)&&Ue(e,t,n))}function pt(e,t){st.set(e,(st.get(e)||0)+1),ot.set(e,{type:t,since:Date.now()})}function gt(e,t){const n=(st.get(t)||0)-1;var o,r;n>0?st.set(t,n):st.delete(t),o=e,r=t,ot.has(r)&&(st.get(r)||ft(o,r)||ot.delete(r))}function ht(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 vt(e,t,n,o){if(!$e(e))return void Be();const r=mt(e,t,o);if(n.length)switch(t){case F.Consent:!function(e,t,n){const o=n||e.consent,r=Je(e,F.Consent);t.forEach(t=>{Ue(e,t,F.Consent)&&Xe(e,t,F.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,M.tryCatch)(t[n],t=>Ke(e,"consent",t,{key:n}))(o,r)}),Ge(e,t,F.Consent))})}(e,n,o);break;case F.Ready:!function(e,t){if(!e.allowed)return;const n=Je(e,F.Ready);t.forEach(t=>{(0,M.tryCatch)(t,t=>Ke(e,"ready",t))(void 0,n)})}(e,n);break;case F.Run:!function(e,t){if(!e.allowed)return;const n=Je(e,F.Run);t.forEach(t=>{(0,M.tryCatch)(t,t=>Ke(e,"run",t))(void 0,n)})}(e,n);break;case F.Session:!function(e,t){if(!e.session)return;const n=Je(e,F.Session);t.forEach(t=>{(0,M.tryCatch)(t,t=>Ke(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Je(e,t),s=Le(t);n.forEach(n=>{"function"==typeof n&&(s&&!Ue(e,n,t)||s&&!Xe(e,n,t)||((0,M.tryCatch)(n,n=>Ke(e,"generic",n,{type:t}))(r,o),s&&Ge(e,n,t)))});break}}}function mt(e,t,n){if(ze(t))return n||e[t];switch(t){case F.Session:return e.session;case F.Config:return n||e.config;default:return}}async function yt(e,t,n,o,r){if(!t.on)return!1;if(Le(o)&&!Ue(e,t,o))return!1;if(Le(o)&&!Xe(e,t,o))return!1;const s=Le(o);if(s&&wt.has(t))return bt.add(t),!1;const i=s?He(e,o):0;s&&wt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,M.tryCatchAsync)(()=>(u=Promise.resolve(a(o,r)),Ae(u,je,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof Ce&&(d=!0),Ke(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&wt.delete(t)}if(s)if(d){const o=()=>{wt.delete(t),bt.delete(t),e.allowed&&e.sources[n]===t&&(0,M.tryCatchAsync)(()=>kt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",pe(t))})()};u.then(o,o)}else ht(e,t,o,i),bt.delete(t)&&await kt(e,t,n);return!1===c}var wt=new WeakSet,bt=new WeakSet;async function kt(e,t,n){const o=Qe(e);try{for(const o of We)await yt(e,t,n,o,mt(e,o))}finally{o()}}async function St(e,t,n,o,r){if(!t.on)return;const s=Le(o);if(s&&!Ue(e,t,o))return;const i=it.get(t)?.[String(o)];if(s&&void 0!==i&&i>=He(e,o))return;if(s&&!Xe(e,t,o)){if(t.config.init)return void lt(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:mt(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),Ge(e,t,o),void ct.get(t)?.delete(String(o))}const a=dt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(Ge(e,t,o),a&&!a.held&&(pt(t,o),a.held=!0)));await Ze(e,t,n,o,r)}async function Et(e,t,n){if(!t.on)return;const o=Qe(e);try{for(const o of We)(Ve(e,o)||ct.get(t)?.has(String(o)))&&await St(e,t,n,o,mt(e,o))}finally{o()}}function Ot(e){return(st.get(e)||0)>0}function _t(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var qt=1e3,It=1e3,jt=3e4,xt=Object.freeze({batched:!0});function Ct(e){return e===xt}var At=" batch-all";function Mt(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Dt(e){for(const t of e)rt(t.destination)&&(t.drain=!0)}async function Pt(e,t,n={},o){if(!e.allowed)return Kt({ok:!1});if(!t)return Rt(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??(0,q.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await qe(e,e.transformers||{},r,t,o,n.respond,Qt),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),Y(e,t,o,{reason:"dropped",by:s.droppedBy,at:Qt}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:Ut(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===r.copies.length)return Kt({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await Rt(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function Rt(e,t,n,o){const{user:r}=e;if(t){const n=oe(e.config.queueMax),o=re(e.queue,t,{max:n});if(o.dropped>0){const t=fe(e.status,(0,I.stepId)("collector"),"queue",o.dropped);ie(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&ae(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,I.stepId)("destination",a),u=ue(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=ce();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&&de(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)},f=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??qt};let a=0;for(const e of t)a+=re(n,e,s).dropped;if(a>0){le(e,r);const t=fe(e.status,(0,I.stepId)("destination",r),"queue",a);ie(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&&ae(n)};i.on&&i.config.init&&!rt(i)&&!Ot(i)&&ft(e,i)&&await Et(e,i,o);const p=rt(i);if(p&&!Ot(i)&&Date.now()-p.since>=xe(i.config.timeout)&&await Et(e,i,o),rt(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[(0,I.clone)(t)];return f(e),{id:o,destination:i,queue:e}}let g=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&g.push((0,I.clone)(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,I.createIngest)("unknown");if(!g.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!g.length&&i.queueOn?.length){if(!(0,I.getGrantedConsent)(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await Tt(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(rt(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};g=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const v=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=(0,I.getGrantedConsent)(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=G(e,(0,I.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),H(t,h,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),(0,I.emitStep)(e,a),!0});return{allowed:r,skipped:s}},m=e.consent,{allowed:y,skipped:w}=v(g);if(f(w),!y.length)return l(),{id:o,destination:i,queue:g};const b=new Set(i.queuePush);let k=!1;try{k=await Tt(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(!k)return l(),{id:o,destination:i,queue:g};if(rt(i))return l(),f(y),{id:o,destination:i,queue:y};const S=[];if(e.consent!==m){const t=v(y.map(t=>({...t,consent:e.consent})));y.splice(0,y.length,...t.allowed),S.push(...t.skipped)}const E=i.queuePush||[],O=E.filter(e=>!b.has(e));if(O.length){i.queuePush=E.filter(e=>b.has(e));const t=v(O.map(t=>({...t,consent:e.consent})));y.push(...t.allowed),S.push(...t.skipped)}if(f(S),!y.length)return l(),S.length?{id:o,destination:i,queue:S}:{id:o,destination:i,skipped:!0};let _,q;i.dlq||(i.dlq=[]);const j=i.config.before,x=i.config.next,C=i.config?.cache,A=C?(0,I.compileCache)(C):void 0,M=A?Q(A,e):void 0,D=N(i.config?.state),P=D?.filter(e=>"get"===e.mode),R=D?.filter(e=>"set"===e.mode);let $=0,T=0,B=0;return await Promise.all(y.map(async t=>{let a,c;if(t.user=(0,I.assign)(r,t.user),A?.stop&&M){const e=(0,I.createMappingRoot)(h,t),n=await(0,I.checkCache)(A,M,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:h}],d=n.respond;if(void 0!==j){const r=`destination.${o}.before`,i=await qe(e,s,j,t,h,n.respond,r);if(0===i.copies.length){const n=G(e,(0,I.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),H(t,h,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},(0,I.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(A&&!A.stop&&M){const e=(0,I.createMappingRoot)(n,t??void 0),o=await(0,I.checkCache)(A,M,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}P&&P.length>0&&t&&(t=await X(e,P,t,n));const l=Date.now();let f=!1;const p=await(0,I.tryCatchAsync)(Bt,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...pe(n),event:t.name}),_=n,f=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},u=re(s,[t,n],c);if(u.dropped>0){le(e,a);const t=fe(e.status,(0,I.stepId)("destination",a),"dlq",u.dropped);ie(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&&ae(s)})(e,i,o,t,n,d);if($+=Date.now()-l,a&&M&&void 0===i.config.mock&&(u?(0,I.storeCache)(M,a.key,p??!0,a.ttl):void 0===c&&(c=p??!0)),!f&&!Ct(p)&&R&&R.length>0&&t&&(t=await X(e,R,t,n)),void 0===p||Ct(p)||(q=p),Ct(p)&&T++,!f&&x){void 0!==p&&(n._response=p);const r=await qe(e,s,x,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)&&B++;return a&&M&&void 0!==c&&void 0===i.config.mock&&(0,I.storeCache)(M,a.key,c,a.ttl),t})),{id:o,destination:i,error:_,response:q,totalDuration:$,batchedCount:T,allowedCount:y.length,pushedCount:B,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};le(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,I.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&d&&de(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 Kt({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}var $t=new WeakMap;async function Tt(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const r=$t.get(t);if(r)return r;const s=async function(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:zt(t.env,t.config.env),reportError:ge(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;(0,I.emitStep)(e,G(e,(0,I.stepId)("destination",o),"destination","init","",a));try{c=await(0,I.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=G(e,(0,I.stepId)("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=U(t),(0,I.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=Qe(e);!function(e){const t=e.queueOn?.find(({type:e})=>Le(e));t&&pt(e,t.type),dt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await Ze(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Le(n)&&lt(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=dt.get(t);dt.delete(t),n?.held&&gt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);$t.set(t,s);try{return await s}finally{$t.delete(t)}}return!0}async function Bt(e,t,n,o,r,s){const{config:i}=t,a=await(0,I.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:{...zt(t.env,i.env),...s?{respond:s}:{}},reportError:ge(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,p=f?a.mappingKey||"* *":At;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=Mt(l?.batch),s=Mt(i.batch),a=r.wait??s.wait??jt,c=r.size??s.size??It,d=r.age??s.age??jt,g=zt(t.env,i.env),h=(0,I.debounce)(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const 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:{...g,...a.respond?{respond:a.respond}:{}},reportError:ge(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=le(e,d),f=ue(t.config.breaker),h=(0,I.stepId)("destination",d),v=t=>{f&&de(e.status.breakers,h,t,f.threshold,f.cooldown)},m=Date.now(),y=new Map;let w,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??100};let s=0;for(const e of n)s+=re(o,e,r).dropped;if(s>0){const t=fe(e.status,(0,I.stepId)("destination",d),"dlq",s);ie(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&ae(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let S=s.entries.length;const E=xe(i.timeout),O=await(0,I.tryCatchAsync)((o,r)=>Ae(Promise.resolve((0,I.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{S=0,b=!0,w=e,k(s.entries.map(t=>[t.event,e])),v("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if((0,I.isObject)(_=O)&&Array.isArray(_.failed)&&O.failed.length>0){const e=[];for(const t of O.failed){const n=s.entries[t.index];if(!n||y.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);y.set(t.index,o),e.push([n.event,o])}if(e.length>0){k(e),S=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:S,entries:s.entries.length,causes:[...t.values()]})}}var _;const q=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),i=H(t.event,t.ingest,e),a=G(e,(0,I.stepId)("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",q,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=q-m,r){const e=b?w:y.get(o);a.error=U(e)}(0,I.emitStep)(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),S>0&&(l.count+=S,l.lastAt=Date.now(),e.status.out+=S,v("success"))},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,I.isDefined)(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=H(o,r,e),h=Date.now(),v=G(e,(0,I.stepId)("destination",n),"destination","in",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),a.event.consent&&(v.consent={...a.event.consent}),v.inEvent=a.event,(0,I.emitStep)(e,v);const m=G(e,(0,I.stepId)("destination",n),"destination","out",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),m.outEvent=a.event,m.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,I.emitStep)(e,m);const y=t.config.id||n,w=le(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),xt}{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=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:Z(t,r,1);const s=(0,C.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[I.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=H(o,r,e),f=Date.now(),p=G(e,(0,I.stepId)("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,(0,I.emitStep)(e,p);try{const o=xe(i.timeout),r=await Ae(Promise.resolve((0,I.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=G(e,(0,I.stepId)("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,ne(g,s),(0,I.isDefined)(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),(0,I.emitStep)(e,g),u.debug("push done"),r}catch(t){const o=Date.now(),r=G(e,(0,I.stepId)("destination",n),"destination","error",c,o,l);throw r.durationMs=o-f,r.error=U(t),ne(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,I.emitStep)(e,r),t}}}function Kt(e){return{ok:!e?.failed,...e}}function Wt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=he(e,"before"),{config:a}=he({...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=zt(t.env,o);return{...t,config:c,env:u}}function zt(e,t){return e||t?t?e&&(0,I.isObject)(e)&&(0,I.isObject)(t)?{...e,...t}:t:e:{}}async function Lt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",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`)),5e3)})])}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 Ft(e,t,n){let o,r,s=!1;const i=[],a=Qe(e);try{return await async function(){switch(t){case F.Config:(0,T.isObject)(n)&&((0,$.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case F.Consent:if((0,T.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,_.assign)(e.consent,n),{update:n}}(e,n);Vt(e,F.Consent),r=t,s=!0}break;case F.Custom:(0,T.isObject)(n)&&(e.custom=(0,$.assign)(e.custom,n),Vt(e,F.Custom),r=n,s=!0);break;case F.Destination:(0,T.isObject)(n)&&"code"in n&&(0,T.isObject)(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,I.isFunction)(n.push))return Kt({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,I.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(J(e,(0,I.stepId)("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Re(e);const n=e.destinations[l];return n?Pt(e,void 0,{},{[l]:n}):Kt({ok:!0})}const f={...n,config:d,env:zt(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Et(e,f,l),Pt(e,void 0,{},{[l]:f})}(e,n));break;case F.Globals:(0,T.isObject)(n)&&(e.globals=(0,$.assign)(e.globals,n),Vt(e,F.Globals),r=n,s=!0);break;case F.Hook:if((0,T.isObject)(n)&&(0,$.isString)(n.name)&&(0,$.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case F.On:if((0,T.isObject)(n)&&(0,$.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!$e(e))return void Be();const o=e.on,r=o[t]||[],s=(0,A.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,vt(e,t,s)}(e,t,o)}break;case F.Ready:s=!0;break;case F.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,$.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,$.assign)(e.consent,t.consent),Vt(e,F.Consent)),t.user&&(e.user=(0,$.assign)(e.user,t.user),Vt(e,F.User)),t.globals&&(e.globals=(0,$.assign)(e.config.globalsStatic||{},t.globals),Vt(e,F.Globals)),t.custom&&(e.custom=(0,$.assign)(e.custom,t.custom),Vt(e,F.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Re(e);const o=await async function(e){if(!$e(e))return Be(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of We)Ve(e,t)&&await St(e,o,n,t,mt(e,t))};t.push(_t(n,o,r()))}for(const t of We){if(!Ve(e,t))continue;const n=mt(e,t);vt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>De(e)).map(([o,r])=>yt(e,r,o,t,n)))}return t}(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)}}Dt(o);const i=await Pt(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case F.Session:s=!0;break;case F.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Lt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const r=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Lt(e.destinations,"destination",t),await Lt(e.transformers,"transformer",t),await Lt(e.stores,"store",t)}(e));break;case F.User:(0,T.isObject)(n)&&((0,$.assign)(e.user,n,{shallow:!1}),Vt(e,F.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Kt({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!$e(e))return Be(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=mt(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&&(De(o)?i.push(yt(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(_t(n,o,St(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))De(n)&&n.queueOn?.length&&await Me(e,n,t);const u=Object.values(e.sources).some(e=>!De(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Re(e),vt(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),Dt(n.deliveries);const s=function(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}(await Pt(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!rt(n)&&n.queuePush?.length&&e.destinations[t]===n)return Pt(e,void 0,{},{[t]:n})}))).filter(I.isDefined)}(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||Kt({ok:!0})}()}finally{a()}}function Ht(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Gt(e,t,n){return Yt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Ut(e,t,n){return Yt(e,Ht(e,t),n,{globals:{},user:{},consent:{}})}function Yt(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new $.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new $.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new $.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:v=(0,$.getSpanId)(),trigger:m="",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 q=e.name??S.platform??"default",I=e.release??"4.8.0-next-1791496487198";return _.release={...S.release,[q]:I},{name:c,data:u,context:d,globals:(0,$.assign)(o.globals,l),custom:f,user:p,nested:g,consent:h,id:v,trigger:m,entity:y,action:w,timestamp:a,timing:b,source:_}}var Qt="collector.next";function Nt(e,t){const n=(0,W.useHooks)(async(n,o={})=>await(0,W.tryCatchAsync)(async()=>{if(!e.allowed){const t=oe(e.config.queueMax),r=re(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=fe(e.status,"collector.preRun","queue",r.dropped);ie(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&ae(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Kt({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,W.createIngest)(s||"unknown");if(c){const t=await(0,W.processEventMapping)(p,c,e);if(t.ignore)return Kt({ok:!0});if(c.consent){const n=t.event.consent;if(!(0,W.getGrantedConsent)(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),Y(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),Kt({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await qe(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})`:"")),Y(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),Kt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Kt({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Gt(e,t(n.event),n.ingest);return Pt(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]??Kt({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const v=function(e,t,n){return Gt(e,Ht(e,t),n)}(e,p,h),m=await Pt(e,v,{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 m},t=>{if(t instanceof W.FatalError)throw t;if(t instanceof W.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}),Kt({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...pe(t),event:n.name}),Kt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,W.getSpanId)()},s="string"==typeof r.id?r.id:"",i=H(r,o?.ingest,e),a=Date.now(),c=G(e,"collector.push","collector","in",s,a,i);c.inEvent=r,(0,W.emitStep)(e,c);try{const t=await n(r,o),c=Date.now(),u=G(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,(0,W.emitStep)(e,u),t}catch(t){const n=Date.now(),o=G(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=U(t),(0,W.emitStep)(e,o),t}}}function Xt(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,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;return 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()),{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()}}}function Jt(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=G(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,V.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,V.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,V.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,V.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,V.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,pe(n)):console.warn(o,n)}}function Zt(e,t,n){const o=`store.${n}`,r=(0,L.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,L.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,L.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=G(e,o,"store","in","",n);s.meta={op:"get",key:t},(0,L.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=G(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},(0,L.emitStep)(e,a),s}catch(r){const s=Date.now(),i=G(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=U(r),(0,L.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=G(e,o,"store","in","",i);a.meta={op:"set",key:t},(0,L.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=G(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},(0,L.emitStep)(e,c)}catch(n){const r=Date.now(),s=G(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=U(n),(0,L.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=G(e,o,"store","in","",n);r.meta={op:"delete",key:t},(0,L.emitStep)(e,r);try{await i(t);const r=Date.now(),s=G(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},(0,L.emitStep)(e,s)}catch(r){const s=Date.now(),i=G(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=U(r),(0,L.emitStep)(e,i),r}}}async function en(e){const t=(0,K.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,K.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};var i,a;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=Nt(s,e=>Ht(s,e)),s.command=(i=s,a=Ft,(0,z.useHooks)(async(e,t,n)=>await(0,z.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof z.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...pe(t),command:e}),Kt({ok:!1})})(),"Command",i.hooks,i.logger)),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 Kt({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 c=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(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:ge(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=Xt()),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]=Jt(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&&Zt(e,o,t);return n}(s,c),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)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=Xt()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))J(e,(0,I.stepId)("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=Wt(r);return n}(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,R.validateStepEntry)(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=he(r,"before"),{config:a}=he({...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;J(e,(0,R.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,R.createIngest)(o),config:f,env:s,reportError:ge(e,"transformer",o,p)},h=(0,R.getTransformerMapping)(r);for(const t of(0,R.getTransformerMappingWarnings)(r))e.logger.warn(`Transformer ${o}: ${t}`);const v=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await(0,R.processEventMapping)(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),m=await v(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 tn=globalThis;function nn(e){try{const t=tn.window;if(!t)return;t.localStorage.getItem(B.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(B.OBSERVE_STORAGE_KEY)}catch{}}function on(e,t){return void 0===t?e:n=>e({...n,release:t})}async function rn(e){const t=e??{},n=await en(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=tn.window,t=tn.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(B.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return tn.window?.localStorage.getItem(B.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,B.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),nn(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{tn.window?.localStorage.setItem(B.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=tn.window,t=tn.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(B.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,B.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(nn(r),i&&e.observers.delete(i))}});i=(0,B.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(on(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,B.createTelemetryObserver)(on((0,B.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Pe(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,P.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof P.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...pe(n)})})(),o||(n.config.init=!0,De(n)&&await Me(e,n,t))}return await Re(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var sn=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await rn({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};//# sourceMappingURL=dev.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})},i={};s(i,{examples:()=>g,schemas:()=>a}),module.exports=(e=i,((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 a={};s(a,{MappingSchema:()=>l,SettingsSchema:()=>d,mapping:()=>p,settings:()=>f});var c=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),d=u.z.object({events:u.z.array(u.z.object({delay:u.z.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")}),l=require("@walkeros/core/dev").z.object({}),f=(0,c.zodToSchema)(d),p=(0,c.zodToSchema)(l),g={};s(g,{createTrigger:()=>sn,env:()=>h,step:()=>S});var h={};s(h,{init:()=>w,push:()=>b,simulation:()=>k});var v=async()=>({ok:!0}),m=()=>{},y={error:m,warn:m,info:m,debug:m,throw:e=>{throw"string"==typeof e?new Error(e):e},json:m,scope:()=>y},w=void 0,b={push:v,command:v,elb:v,logger:y},k=["call:elb"],S={};s(S,{delayedEvent:()=>O,pageView:()=>E});var E={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},O={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]},_=require("@walkeros/core"),q=require("@walkeros/core"),I=require("@walkeros/core"),j=require("@walkeros/core"),x=require("@walkeros/core"),C=require("@walkeros/core"),A=require("@walkeros/core"),M=require("@walkeros/core"),D=require("@walkeros/core"),P=require("@walkeros/core"),R=require("@walkeros/core"),$=require("@walkeros/core"),T=require("@walkeros/core"),B=require("@walkeros/core"),K=require("@walkeros/core"),W=require("@walkeros/core"),z=require("@walkeros/core"),L=require("@walkeros/core"),V=require("@walkeros/core"),F={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"};function H(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function G(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 U(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function Y(e,t,n,o){e.status.in++;const r=G(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),H(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):r.meta={by:o.by??"route",at:o.at},(0,j.emitStep)(e,r)}function Q(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function N(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?(0,x.compileState)(e):void 0}function X(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,x.applyState)(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function J(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}function Z(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 r of e)o.push(Z(r,t,n+1));return o}const r={};t.set(e,r);for(const[o,s]of Object.entries(e))r[o]="function"==typeof s?s:Z(s,t,n+1);return r}function ee(e,t){try{return e[t]}catch{return"[unreadable]"}}function te(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(ee(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 ne(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:te(e.args),ts:e.ts})))}function oe(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function re(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 se=new WeakMap;function ie(e,t,n,o){se.get(e)||(se.set(e,!0),t.warn(n,o))}function ae(e){se.delete(e)}var ce=()=>Date.now();function ue(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function de(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;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=ce()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ce()+r)))}function le(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 fe(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 pe(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 ge(e,t,n,o,r){const s=(0,D.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??100},c=re(i,[o,r],a);if(c.dropped>0){const t=fe(e.status,(0,D.stepId)("destination",n),"dlq",c.dropped);ie(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&ae(i);const u=le(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=ue(t.config.breaker);if(d){const o=t.config.id||n;de(e.status.breakers,(0,D.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...pe(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",pe(t))}catch{}}}function he(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 ve(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,R.createIngest)(n),config:t.config,env:Ie(t.config.env),reportError:ge(e,"transformer",n,r)};r.debug("init");const i=await(0,R.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 me(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:{...Ie(t.config.env),...s?{respond:s}:{}},reportError:ge(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=H(o,r,e),l=Date.now(),f=G(e,(0,R.stepId)("transformer",n),"transformer","in",u,l,d);f.inEvent=o,(0,R.emitStep)(e,f);try{const r=await(0,R.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=G(e,(0,R.stepId)("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,(0,R.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=G(e,(0,R.stepId)("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=U(t),(0,R.emitStep)(e,r),t}}function ye(e){return"string"==typeof e.id?e.id:""}function we(e,t){const n=ye(e);return""!==n&&""===ye(t)?{...t,id:n}:t}function be(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=(0,R.clone)(t),i=ye(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=ye(s);return""!==c&&c!==i||(s.id=(0,R.deriveSpanId)(i,o)),{event:s,ingest:r}}function ke(e,t){return{copies:e,respond:t}}function Se(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 Ee(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,R.tryCatchAsync)(Oe,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,pe(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}:{}}:ke(r,i)}async function Oe(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,R.advanceChain)(o,(0,R.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return ke([{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 Ee(e,i.branches.map((e,o)=>({stack:e,...be(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 _e(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Ee(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function _e(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:we(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,v=h?(0,R.compileCache)(h):void 0,m=v?Q(v,i):void 0;let y=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});if(o._meta.hops++,o._meta.path.push(u),!await(0,R.tryCatchAsync)(ve,e=>{if(e instanceof R.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...pe(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(v&&m){const e=await(0,R.checkCache)(v,m,(0,R.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value)return l=e.value,v.stop?g({copies:[{event:we(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(y={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await qe(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(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 w=N(d.config?.state),b=w?.filter(e=>"get"===e.mode),k=w?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?X(i,k,e,o):e;b&&b.length>0&&(l=await X(i,b,l,o));const E=await(0,R.tryCatchAsync)(me,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",pe(e)),!1))(i,d,u,l,o,f);if(!1===E)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(E)&&1!==E.length){if(0===E.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<E.length;r++){const s=E[r],i=await S(s.event||e);n.push({stack:Se(t,s.next),...be(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const O=Array.isArray(E)?E[0]:E;let _;return O&&"object"==typeof O&&(O.respond&&(f=O.respond),O.event&&(l=O.event),_=O.next),l=await S(l),y&&m&&(0,R.storeCache)(m,y.key,l,y.ttl),p(Se(t,_))}async function qe(e,t,n,o,r,s,i){const a=r??(0,R.createIngest)("string"==typeof n?n:"chain");return void 0===n?ke([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),Oe({collector:e,transformers:t,chainContext:i},{stack:(0,R.isChainContinuation)(n)?n:(0,R.startChain)(n),event:o,ingest:a,respond:s}))}function Ie(e){return e&&(0,R.isObject)(e)?e:{}}var je=1e4;function xe(e){return"number"==typeof e&&e>0?e:je}var Ce=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Ae(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Ce(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function Me(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(Le(n)&&!Ue(e,t,n))continue;const o=t.on;let i=!1;await(0,P.tryCatchAsync)(()=>Ae(Promise.resolve(o(n,s)),je,`Source "${r}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof P.FatalError)throw t;t instanceof Ce?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...pe(t)})})(),Le(n)&&!i&&Ge(e,t,n)}}function De(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Pe(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=N(l);J(e,(0,P.stepId)("source",t),l);const p=u,g=p?(0,P.compileCache)({...p,stop:p.stop??!0}):void 0,h=d??e.push,v=Boolean(d),m=async(n,o,s)=>{if(v)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,P.getSpanId)()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await qe(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return Y(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),Kt({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=Q(g,e);if(t){const n=(0,P.createMappingRoot)(s.ingest),o=await(0,P.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,P.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,P.storeCache)(t,u,n,d),a?i=(async()=>{const t=await(0,P.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,P.storeCache)(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await X(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},y=async n=>{const o=(0,P.createIngest)(t),s=(0,P.parseTraceparent)((0,P.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,P.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},w=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:(0,P.createIngest)(t),respond:void 0};return m(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:w},k={collector:e,logger:w,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await y(e),respond:t};return n({...b,push:(e,t={})=>m(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ge(e,"source",t,w)},S=await(0,P.tryCatchAsync)(o,n=>{if(n instanceof P.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...pe(n)})})(k);if(!S)return;const E=S.type||"unknown",O=e.logger.scope(E).scope(t);return b.logger=O,i&&(S.config={...S.config,primary:i}),S}async function Re(e){for(const[t,n]of Object.entries(e.sources)){if(De(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Fe(e,t));r.length!==o.length&&(n.config.require=r,De(n)&&await Me(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=>!Fe(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Wt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await Et(e,s,t)}}function $e(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 Te=!1;function Be(){Te||(Te=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Ke(e,t,n,o){if(n instanceof A.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...pe(n)})}var We=["consent","user","globals","custom"];function ze(e){return We.includes(e)}function Le(e){return ze(e)}function Ve(e,t){return ze(t)&&Object.keys(e[t]).length>0}function Fe(e,t){if(ze(t))return Ve(e,t);switch(t){case F.Run:case F.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function He(e,t){return e.cellVersion?.[String(t)]??0}function Ge(e,t,n){ht(e,t,n,He(e,n))}function Ue(e,t,n){return e.allowed&&He(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 Ye=8;function Qe(e){const t=e.cascade;if(t&&!Ne.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,Ne.set(n,(Ne.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(Ne.get(n)||1)-1;t>0?Ne.set(n,t):(Ne.delete(n),e.cascade===n&&(e.cascade=void 0))}}var Ne=new WeakMap;function Xe(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<=Ye||(i===Ye+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Je(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function Ze(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=Le(o);if(i&&(et.get(t)||tt.has(t)))return lt(e,t,o),et.get(t)||nt.add(t),!1;const a=i?He(e,o):0,c=i&&function(e,t,n,o){if(ct.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)?mt(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:zt(t.env,t.config.env),reportError:ge(e,"destination",n,d,t)};i&&(pt(t,o),function(e,t,n){let o=it.get(e);o||(o={},it.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),tt.add(t));const f=xe(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,v=!0;try{await(0,M.tryCatchAsync)(()=>(p=Promise.resolve(s(o,l)),Ae(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof Ce&&(h=!0),Ke(e,"destination",t,{destId:n,type:o})})(),v=!1}finally{if(i){tt.delete(t),v&&nt.delete(t);const r=ct.get(t);g?(ht(e,t,o,a),r?.delete(String(o))):lt(e,t,o),h?function(e,t,n,o,r,s,i){et.set(t,(et.get(t)||0)+1);const a=()=>{const s=(et.get(t)||0)-1;var a,c,u,d;s>0?et.set(t,s):et.delete(t),ut(t,o),at(t,o,r),gt(e,t),i.debug("late settle after timeout"),nt.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,(0,M.tryCatchAsync)(async()=>{await Et(a,c,u),!rt(c)&&c.queuePush?.length&&await Pt(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",pe(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(at(t,o,a),gt(e,t))}}return i&&!h&&nt.delete(t)&&await Et(e,t,n),g}var et=new WeakMap,tt=new WeakSet,nt=new WeakSet,ot=new WeakMap;function rt(e){return ot.get(e)}var st=new WeakMap,it=new WeakMap;function at(e,t,n){const o=it.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var ct=new WeakMap;function ut(e,t){const n=ct.get(e);n?n.add(String(t)):ct.set(e,new Set([String(t)]))}var dt=new WeakMap;function lt(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),ut(t,n),ot.set(t,{type:n,since:Date.now()})}function ft(e,t){return!!ct.get(t)?.size||We.some(n=>Ve(e,n)&&Ue(e,t,n))}function pt(e,t){st.set(e,(st.get(e)||0)+1),ot.set(e,{type:t,since:Date.now()})}function gt(e,t){const n=(st.get(t)||0)-1;var o,r;n>0?st.set(t,n):st.delete(t),o=e,r=t,ot.has(r)&&(st.get(r)||ft(o,r)||ot.delete(r))}function ht(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 vt(e,t,n,o){if(!$e(e))return void Be();const r=mt(e,t,o);if(n.length)switch(t){case F.Consent:!function(e,t,n){const o=n||e.consent,r=Je(e,F.Consent);t.forEach(t=>{Ue(e,t,F.Consent)&&Xe(e,t,F.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,M.tryCatch)(t[n],t=>Ke(e,"consent",t,{key:n}))(o,r)}),Ge(e,t,F.Consent))})}(e,n,o);break;case F.Ready:!function(e,t){if(!e.allowed)return;const n=Je(e,F.Ready);t.forEach(t=>{(0,M.tryCatch)(t,t=>Ke(e,"ready",t))(void 0,n)})}(e,n);break;case F.Run:!function(e,t){if(!e.allowed)return;const n=Je(e,F.Run);t.forEach(t=>{(0,M.tryCatch)(t,t=>Ke(e,"run",t))(void 0,n)})}(e,n);break;case F.Session:!function(e,t){if(!e.session)return;const n=Je(e,F.Session);t.forEach(t=>{(0,M.tryCatch)(t,t=>Ke(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Je(e,t),s=Le(t);n.forEach(n=>{"function"==typeof n&&(s&&!Ue(e,n,t)||s&&!Xe(e,n,t)||((0,M.tryCatch)(n,n=>Ke(e,"generic",n,{type:t}))(r,o),s&&Ge(e,n,t)))});break}}}function mt(e,t,n){if(ze(t))return n||e[t];switch(t){case F.Session:return e.session;case F.Config:return n||e.config;default:return}}async function yt(e,t,n,o,r){if(!t.on)return!1;if(Le(o)&&!Ue(e,t,o))return!1;if(Le(o)&&!Xe(e,t,o))return!1;const s=Le(o);if(s&&wt.has(t))return bt.add(t),!1;const i=s?He(e,o):0;s&&wt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,M.tryCatchAsync)(()=>(u=Promise.resolve(a(o,r)),Ae(u,je,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof Ce&&(d=!0),Ke(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&wt.delete(t)}if(s)if(d){const o=()=>{wt.delete(t),bt.delete(t),e.allowed&&e.sources[n]===t&&(0,M.tryCatchAsync)(()=>kt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",pe(t))})()};u.then(o,o)}else ht(e,t,o,i),bt.delete(t)&&await kt(e,t,n);return!1===c}var wt=new WeakSet,bt=new WeakSet;async function kt(e,t,n){const o=Qe(e);try{for(const o of We)await yt(e,t,n,o,mt(e,o))}finally{o()}}async function St(e,t,n,o,r){if(!t.on)return;const s=Le(o);if(s&&!Ue(e,t,o))return;const i=it.get(t)?.[String(o)];if(s&&void 0!==i&&i>=He(e,o))return;if(s&&!Xe(e,t,o)){if(t.config.init)return void lt(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:mt(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),Ge(e,t,o),void ct.get(t)?.delete(String(o))}const a=dt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(Ge(e,t,o),a&&!a.held&&(pt(t,o),a.held=!0)));await Ze(e,t,n,o,r)}async function Et(e,t,n){if(!t.on)return;const o=Qe(e);try{for(const o of We)(Ve(e,o)||ct.get(t)?.has(String(o)))&&await St(e,t,n,o,mt(e,o))}finally{o()}}function Ot(e){return(st.get(e)||0)>0}function _t(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var qt=1e3,It=1e3,jt=3e4,xt=Object.freeze({batched:!0});function Ct(e){return e===xt}var At=" batch-all";function Mt(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Dt(e){for(const t of e)rt(t.destination)&&(t.drain=!0)}async function Pt(e,t,n={},o){if(!e.allowed)return Kt({ok:!1});if(!t)return Rt(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??(0,q.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await qe(e,e.transformers||{},r,t,o,n.respond,Qt),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),Y(e,t,o,{reason:"dropped",by:s.droppedBy,at:Qt}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:Ut(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===r.copies.length)return Kt({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await Rt(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function Rt(e,t,n,o){const{user:r}=e;if(t){const n=oe(e.config.queueMax),o=re(e.queue,t,{max:n});if(o.dropped>0){const t=fe(e.status,(0,I.stepId)("collector"),"queue",o.dropped);ie(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&ae(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,I.stepId)("destination",a),u=ue(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=ce();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&&de(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)},f=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??qt};let a=0;for(const e of t)a+=re(n,e,s).dropped;if(a>0){le(e,r);const t=fe(e.status,(0,I.stepId)("destination",r),"queue",a);ie(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&&ae(n)};i.on&&i.config.init&&!rt(i)&&!Ot(i)&&ft(e,i)&&await Et(e,i,o);const p=rt(i);if(p&&!Ot(i)&&Date.now()-p.since>=xe(i.config.timeout)&&await Et(e,i,o),rt(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[(0,I.clone)(t)];return f(e),{id:o,destination:i,queue:e}}let g=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&g.push((0,I.clone)(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,I.createIngest)("unknown");if(!g.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!g.length&&i.queueOn?.length){if(!(0,I.getGrantedConsent)(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await Tt(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(rt(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};g=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const v=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=(0,I.getGrantedConsent)(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=G(e,(0,I.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),H(t,h,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),(0,I.emitStep)(e,a),!0});return{allowed:r,skipped:s}},m=e.consent,{allowed:y,skipped:w}=v(g);if(f(w),!y.length)return l(),{id:o,destination:i,queue:g};const b=new Set(i.queuePush);let k=!1;try{k=await Tt(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(!k)return l(),{id:o,destination:i,queue:g};if(rt(i))return l(),f(y),{id:o,destination:i,queue:y};const S=[];if(e.consent!==m){const t=v(y.map(t=>({...t,consent:e.consent})));y.splice(0,y.length,...t.allowed),S.push(...t.skipped)}const E=i.queuePush||[],O=E.filter(e=>!b.has(e));if(O.length){i.queuePush=E.filter(e=>b.has(e));const t=v(O.map(t=>({...t,consent:e.consent})));y.push(...t.allowed),S.push(...t.skipped)}if(f(S),!y.length)return l(),S.length?{id:o,destination:i,queue:S}:{id:o,destination:i,skipped:!0};let _,q;i.dlq||(i.dlq=[]);const j=i.config.before,x=i.config.next,C=i.config?.cache,A=C?(0,I.compileCache)(C):void 0,M=A?Q(A,e):void 0,D=N(i.config?.state),P=D?.filter(e=>"get"===e.mode),R=D?.filter(e=>"set"===e.mode);let $=0,T=0,B=0;return await Promise.all(y.map(async t=>{let a,c;if(t.user=(0,I.assign)(r,t.user),A?.stop&&M){const e=(0,I.createMappingRoot)(h,t),n=await(0,I.checkCache)(A,M,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:h}],d=n.respond;if(void 0!==j){const r=`destination.${o}.before`,i=await qe(e,s,j,t,h,n.respond,r);if(0===i.copies.length){const n=G(e,(0,I.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),H(t,h,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},(0,I.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(A&&!A.stop&&M){const e=(0,I.createMappingRoot)(n,t??void 0),o=await(0,I.checkCache)(A,M,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}P&&P.length>0&&t&&(t=await X(e,P,t,n));const l=Date.now();let f=!1;const p=await(0,I.tryCatchAsync)(Bt,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...pe(n),event:t.name}),_=n,f=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},u=re(s,[t,n],c);if(u.dropped>0){le(e,a);const t=fe(e.status,(0,I.stepId)("destination",a),"dlq",u.dropped);ie(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&&ae(s)})(e,i,o,t,n,d);if($+=Date.now()-l,a&&M&&void 0===i.config.mock&&(u?(0,I.storeCache)(M,a.key,p??!0,a.ttl):void 0===c&&(c=p??!0)),!f&&!Ct(p)&&R&&R.length>0&&t&&(t=await X(e,R,t,n)),void 0===p||Ct(p)||(q=p),Ct(p)&&T++,!f&&x){void 0!==p&&(n._response=p);const r=await qe(e,s,x,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)&&B++;return a&&M&&void 0!==c&&void 0===i.config.mock&&(0,I.storeCache)(M,a.key,c,a.ttl),t})),{id:o,destination:i,error:_,response:q,totalDuration:$,batchedCount:T,allowedCount:y.length,pushedCount:B,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};le(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,I.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&d&&de(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 Kt({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}var $t=new WeakMap;async function Tt(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const r=$t.get(t);if(r)return r;const s=async function(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:zt(t.env,t.config.env),reportError:ge(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;(0,I.emitStep)(e,G(e,(0,I.stepId)("destination",o),"destination","init","",a));try{c=await(0,I.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=G(e,(0,I.stepId)("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=U(t),(0,I.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=Qe(e);!function(e){const t=e.queueOn?.find(({type:e})=>Le(e));t&&pt(e,t.type),dt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await Ze(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Le(n)&&lt(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=dt.get(t);dt.delete(t),n?.held&&gt(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);$t.set(t,s);try{return await s}finally{$t.delete(t)}}return!0}async function Bt(e,t,n,o,r,s){const{config:i}=t,a=await(0,I.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:{...zt(t.env,i.env),...s?{respond:s}:{}},reportError:ge(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,p=f?a.mappingKey||"* *":At;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=Mt(l?.batch),s=Mt(i.batch),a=r.wait??s.wait??jt,c=r.size??s.size??It,d=r.age??s.age??jt,g=zt(t.env,i.env),h=(0,I.debounce)(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const 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:{...g,...a.respond?{respond:a.respond}:{}},reportError:ge(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=le(e,d),f=ue(t.config.breaker),h=(0,I.stepId)("destination",d),v=t=>{f&&de(e.status.breakers,h,t,f.threshold,f.cooldown)},m=Date.now(),y=new Map;let w,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??100};let s=0;for(const e of n)s+=re(o,e,r).dropped;if(s>0){const t=fe(e.status,(0,I.stepId)("destination",d),"dlq",s);ie(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&ae(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let S=s.entries.length;const E=xe(i.timeout),O=await(0,I.tryCatchAsync)((o,r)=>Ae(Promise.resolve((0,I.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{S=0,b=!0,w=e,k(s.entries.map(t=>[t.event,e])),v("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if((0,I.isObject)(_=O)&&Array.isArray(_.failed)&&O.failed.length>0){const e=[];for(const t of O.failed){const n=s.entries[t.index];if(!n||y.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);y.set(t.index,o),e.push([n.event,o])}if(e.length>0){k(e),S=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:S,entries:s.entries.length,causes:[...t.values()]})}}var _;const q=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),i=H(t.event,t.ingest,e),a=G(e,(0,I.stepId)("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",q,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=q-m,r){const e=b?w:y.get(o);a.error=U(e)}(0,I.emitStep)(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),S>0&&(l.count+=S,l.lastAt=Date.now(),e.status.out+=S,v("success"))},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,I.isDefined)(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=H(o,r,e),h=Date.now(),v=G(e,(0,I.stepId)("destination",n),"destination","in",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),a.event.consent&&(v.consent={...a.event.consent}),v.inEvent=a.event,(0,I.emitStep)(e,v);const m=G(e,(0,I.stepId)("destination",n),"destination","out",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),m.outEvent=a.event,m.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,I.emitStep)(e,m);const y=t.config.id||n,w=le(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),xt}{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=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:Z(t,r,1);const s=(0,C.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[I.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=H(o,r,e),f=Date.now(),p=G(e,(0,I.stepId)("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,(0,I.emitStep)(e,p);try{const o=xe(i.timeout),r=await Ae(Promise.resolve((0,I.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=G(e,(0,I.stepId)("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,ne(g,s),(0,I.isDefined)(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),(0,I.emitStep)(e,g),u.debug("push done"),r}catch(t){const o=Date.now(),r=G(e,(0,I.stepId)("destination",n),"destination","error",c,o,l);throw r.durationMs=o-f,r.error=U(t),ne(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,I.emitStep)(e,r),t}}}function Kt(e){return{ok:!e?.failed,...e}}function Wt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=he(e,"before"),{config:a}=he({...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=zt(t.env,o);return{...t,config:c,env:u}}function zt(e,t){return e||t?t?e&&(0,I.isObject)(e)&&(0,I.isObject)(t)?{...e,...t}:t:e:{}}async function Lt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",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`)),5e3)})])}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 Ft(e,t,n){let o,r,s=!1;const i=[],a=Qe(e);try{return await async function(){switch(t){case F.Config:(0,T.isObject)(n)&&((0,$.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case F.Consent:if((0,T.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,_.assign)(e.consent,n),{update:n}}(e,n);Vt(e,F.Consent),r=t,s=!0}break;case F.Custom:(0,T.isObject)(n)&&(e.custom=(0,$.assign)(e.custom,n),Vt(e,F.Custom),r=n,s=!0);break;case F.Destination:(0,T.isObject)(n)&&"code"in n&&(0,T.isObject)(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,I.isFunction)(n.push))return Kt({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,I.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(J(e,(0,I.stepId)("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Re(e);const n=e.destinations[l];return n?Pt(e,void 0,{},{[l]:n}):Kt({ok:!0})}const f={...n,config:d,env:zt(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Et(e,f,l),Pt(e,void 0,{},{[l]:f})}(e,n));break;case F.Globals:(0,T.isObject)(n)&&(e.globals=(0,$.assign)(e.globals,n),Vt(e,F.Globals),r=n,s=!0);break;case F.Hook:if((0,T.isObject)(n)&&(0,$.isString)(n.name)&&(0,$.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case F.On:if((0,T.isObject)(n)&&(0,$.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!$e(e))return void Be();const o=e.on,r=o[t]||[],s=(0,A.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,vt(e,t,s)}(e,t,o)}break;case F.Ready:s=!0;break;case F.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,$.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,$.assign)(e.consent,t.consent),Vt(e,F.Consent)),t.user&&(e.user=(0,$.assign)(e.user,t.user),Vt(e,F.User)),t.globals&&(e.globals=(0,$.assign)(e.config.globalsStatic||{},t.globals),Vt(e,F.Globals)),t.custom&&(e.custom=(0,$.assign)(e.custom,t.custom),Vt(e,F.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Re(e);const o=await async function(e){if(!$e(e))return Be(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of We)Ve(e,t)&&await St(e,o,n,t,mt(e,t))};t.push(_t(n,o,r()))}for(const t of We){if(!Ve(e,t))continue;const n=mt(e,t);vt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>De(e)).map(([o,r])=>yt(e,r,o,t,n)))}return t}(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)}}Dt(o);const i=await Pt(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case F.Session:s=!0;break;case F.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Lt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const r=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Lt(e.destinations,"destination",t),await Lt(e.transformers,"transformer",t),await Lt(e.stores,"store",t)}(e));break;case F.User:(0,T.isObject)(n)&&((0,$.assign)(e.user,n,{shallow:!1}),Vt(e,F.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Kt({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!$e(e))return Be(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=mt(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&&(De(o)?i.push(yt(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(_t(n,o,St(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))De(n)&&n.queueOn?.length&&await Me(e,n,t);const u=Object.values(e.sources).some(e=>!De(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Re(e),vt(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),Dt(n.deliveries);const s=function(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}(await Pt(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!rt(n)&&n.queuePush?.length&&e.destinations[t]===n)return Pt(e,void 0,{},{[t]:n})}))).filter(I.isDefined)}(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||Kt({ok:!0})}()}finally{a()}}function Ht(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Gt(e,t,n){return Yt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Ut(e,t,n){return Yt(e,Ht(e,t),n,{globals:{},user:{},consent:{}})}function Yt(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new $.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new $.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new $.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:v=(0,$.getSpanId)(),trigger:m="",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 q=e.name??S.platform??"default",I=e.release??"4.8.0";return _.release={...S.release,[q]:I},{name:c,data:u,context:d,globals:(0,$.assign)(o.globals,l),custom:f,user:p,nested:g,consent:h,id:v,trigger:m,entity:y,action:w,timestamp:a,timing:b,source:_}}var Qt="collector.next";function Nt(e,t){const n=(0,W.useHooks)(async(n,o={})=>await(0,W.tryCatchAsync)(async()=>{if(!e.allowed){const t=oe(e.config.queueMax),r=re(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=fe(e.status,"collector.preRun","queue",r.dropped);ie(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&ae(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Kt({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,W.createIngest)(s||"unknown");if(c){const t=await(0,W.processEventMapping)(p,c,e);if(t.ignore)return Kt({ok:!0});if(c.consent){const n=t.event.consent;if(!(0,W.getGrantedConsent)(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),Y(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),Kt({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await qe(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})`:"")),Y(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),Kt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Kt({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Gt(e,t(n.event),n.ingest);return Pt(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]??Kt({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const v=function(e,t,n){return Gt(e,Ht(e,t),n)}(e,p,h),m=await Pt(e,v,{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 m},t=>{if(t instanceof W.FatalError)throw t;if(t instanceof W.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}),Kt({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...pe(t),event:n.name}),Kt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,W.getSpanId)()},s="string"==typeof r.id?r.id:"",i=H(r,o?.ingest,e),a=Date.now(),c=G(e,"collector.push","collector","in",s,a,i);c.inEvent=r,(0,W.emitStep)(e,c);try{const t=await n(r,o),c=Date.now(),u=G(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,(0,W.emitStep)(e,u),t}catch(t){const n=Date.now(),o=G(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=U(t),(0,W.emitStep)(e,o),t}}}function Xt(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,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;return 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()),{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()}}}function Jt(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=G(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,V.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,V.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,V.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,V.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,V.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,pe(n)):console.warn(o,n)}}function Zt(e,t,n){const o=`store.${n}`,r=(0,L.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,L.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,L.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=G(e,o,"store","in","",n);s.meta={op:"get",key:t},(0,L.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=G(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},(0,L.emitStep)(e,a),s}catch(r){const s=Date.now(),i=G(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=U(r),(0,L.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=G(e,o,"store","in","",i);a.meta={op:"set",key:t},(0,L.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=G(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},(0,L.emitStep)(e,c)}catch(n){const r=Date.now(),s=G(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=U(n),(0,L.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=G(e,o,"store","in","",n);r.meta={op:"delete",key:t},(0,L.emitStep)(e,r);try{await i(t);const r=Date.now(),s=G(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},(0,L.emitStep)(e,s)}catch(r){const s=Date.now(),i=G(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=U(r),(0,L.emitStep)(e,i),r}}}async function en(e){const t=(0,K.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,K.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};var i,a;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=Nt(s,e=>Ht(s,e)),s.command=(i=s,a=Ft,(0,z.useHooks)(async(e,t,n)=>await(0,z.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof z.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...pe(t),command:e}),Kt({ok:!1})})(),"Command",i.hooks,i.logger)),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 Kt({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 c=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(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:ge(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=Xt()),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]=Jt(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&&Zt(e,o,t);return n}(s,c),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)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=Xt()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))J(e,(0,I.stepId)("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=Wt(r);return n}(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,R.validateStepEntry)(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=he(r,"before"),{config:a}=he({...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;J(e,(0,R.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,R.createIngest)(o),config:f,env:s,reportError:ge(e,"transformer",o,p)},h=(0,R.getTransformerMapping)(r);for(const t of(0,R.getTransformerMappingWarnings)(r))e.logger.warn(`Transformer ${o}: ${t}`);const v=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await(0,R.processEventMapping)(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),m=await v(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 tn=globalThis;function nn(e){try{const t=tn.window;if(!t)return;t.localStorage.getItem(B.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(B.OBSERVE_STORAGE_KEY)}catch{}}function on(e,t){return void 0===t?e:n=>e({...n,release:t})}async function rn(e){const t=e??{},n=await en(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=tn.window,t=tn.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(B.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return tn.window?.localStorage.getItem(B.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,B.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),nn(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{tn.window?.localStorage.setItem(B.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=tn.window,t=tn.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(B.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,B.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(nn(r),i&&e.observers.delete(i))}});i=(0,B.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(on(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,B.createTelemetryObserver)(on((0,B.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Pe(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,P.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof P.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...pe(n)})})(),o||(n.config.init=!0,De(n)&&await Me(e,n,t))}return await Re(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var sn=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await rn({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};//# sourceMappingURL=dev.js.map
package/dist/dev.mjs CHANGED
@@ -1 +1 @@
1
- var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{MappingSchema:()=>a,SettingsSchema:()=>s,mapping:()=>u,settings:()=>c});import{zodToSchema as o}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var s=r.object({events:r.array(r.object({delay:r.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")});import{z as i}from"@walkeros/core/dev";var a=i.object({}),c=o(s),u=o(a),d={};t(d,{createTrigger:()=>_o,env:()=>l,step:()=>w});var l={};t(l,{init:()=>h,push:()=>m,simulation:()=>v});var f=async()=>({ok:!0}),p=()=>{},g={error:p,warn:p,info:p,debug:p,throw:e=>{throw"string"==typeof e?new Error(e):e},json:p,scope:()=>g},h=void 0,m={push:f,command:f,elb:f,logger:g},v=["call:elb"],w={};t(w,{delayedEvent:()=>b,pageView:()=>y});var y={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},b={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]};import{assign as k}from"@walkeros/core";import{createIngest as S}from"@walkeros/core";import{assign as E,createMappingRoot as _,clone as O,compileCache as q,checkCache as x,storeCache as j,createIngest as I,debounce as A,emitStep as M,getId as D,getGrantedConsent as C,isDefined as P,isFunction as $,isObject as R,OBSERVE_ENV_KEY as T,processEventMapping as W,stepId as B,tryCatchAsync as K,useHooks as L}from"@walkeros/core";import{emitStep as z}from"@walkeros/core";import{applyState as V,compileState as F}from"@walkeros/core";import{observeEnv as H}from"@walkeros/core";import{isArray as U,FatalError as G}from"@walkeros/core";import{tryCatch as Q,tryCatchAsync as N}from"@walkeros/core";import{stepId as Y}from"@walkeros/core";import{createIngest as X,FatalError as J,getMappingValue as Z,getSpanId as ee,parseTraceparent as te,isScope as ne,tryCatchAsync as oe,compileCache as re,checkCache as se,storeCache as ie,applyUpdate as ae,createMappingRoot as ce,stepId as ue}from"@walkeros/core";import{advanceChain as de,clone as le,createIngest as fe,deriveSpanId as pe,emitStep as ge,FatalError as he,isChainContinuation as me,isObject as ve,startChain as we,stepId as ye,tryCatchAsync as be,useHooks as ke,compileCache as Se,checkCache as Ee,storeCache as _e,createMappingRoot as Oe,validateStepEntry as qe,processEventMapping as xe,getTransformerMapping as je,getTransformerMappingWarnings as Ie}from"@walkeros/core";import{assign as Ae,getSpanId as Me,getTraceId as De,InvalidEventError as Ce,isFunction as Pe,isString as $e}from"@walkeros/core";import{isObject as Re}from"@walkeros/core";import{OBSERVE_STORAGE_KEY as Te,createBatchedPoster as We,createTelemetryObserver as Be,parseObserveCredential as Ke}from"@walkeros/core";import{assign as Le,createLogger as ze}from"@walkeros/core";import{createIngest as Ve,emitStep as Fe,FatalError as He,getGrantedConsent as Ue,getSpanId as Ge,InvalidEventError as Qe,processEventMapping as Ne,tryCatchAsync as Ye,useHooks as Xe}from"@walkeros/core";import{FatalError as Je,useHooks as Ze,tryCatchAsync as et}from"@walkeros/core";import{emitStep as tt,useHooks as nt}from"@walkeros/core";import{compileMatcher as ot,emitStep as rt,readCacheEnvelope as st,wrapCacheEnvelope as it}from"@walkeros/core";var at={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"};function ct(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function ut(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 dt(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function lt(e,t,n,o){e.status.in++;const r=ut(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),ct(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):r.meta={by:o.by??"route",at:o.at},z(e,r)}function ft(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function pt(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?F(e):void 0}function gt(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?V(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function ht(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}function mt(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 r of e)o.push(mt(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:mt(s,t,n+1);return r}function vt(e,t){try{return e[t]}catch{return"[unreadable]"}}function wt(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(vt(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 yt(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:wt(e.args),ts:e.ts})))}function bt(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function kt(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 St=new WeakMap;function Et(e,t,n,o){St.get(e)||(St.set(e,!0),t.warn(n,o))}function _t(e){St.delete(e)}var Ot=()=>Date.now();function qt(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function xt(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;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=Ot()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=Ot()+r)))}function jt(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 It(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 At(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 Mt(e,t,n,o,r){const s=Y(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??100},c=kt(i,[o,r],a);if(c.dropped>0){const t=It(e.status,Y("destination",n),"dlq",c.dropped);Et(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&_t(i);const u=jt(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=qt(t.config.breaker);if(d){const o=t.config.id||n;xt(e.status.breakers,Y("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...At(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",At(t))}catch{}}}function Dt(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 Ct(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:fe(n),config:t.config,env:Ft(t.config.env),reportError:Mt(e,"transformer",n,r)};r.debug("init");const i=await ke(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 Pt(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:{...Ft(t.config.env),...s?{respond:s}:{}},reportError:Mt(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=ct(o,r,e),l=Date.now(),f=ut(e,ye("transformer",n),"transformer","in",u,l,d);f.inEvent=o,ge(e,f);try{const r=await ke(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=ut(e,ye("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,ge(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=ut(e,ye("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=dt(t),ge(e,r),t}}function $t(e){return"string"==typeof e.id?e.id:""}function Rt(e,t){const n=$t(e);return""!==n&&""===$t(t)?{...t,id:n}:t}function Tt(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=le(t),i=$t(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=$t(s);return""!==c&&c!==i||(s.id=pe(i,o)),{event:s,ingest:r}}function Wt(e,t){return{copies:e,respond:t}}function Bt(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 Kt(e,t,n){const o=await Promise.all(t.map((t,n)=>be(Lt,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,At(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}:{}}:Wt(r,i)}async function Lt(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=de(o,Oe(n,r),e.transformers);if("done"===i.kind)return Wt([{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 Kt(e,i.branches.map((e,o)=>({stack:e,...Tt(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 zt(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Kt(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function zt(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:Rt(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?Se(h):void 0,v=m?ft(m,i):void 0;let w=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});if(o._meta.hops++,o._meta.path.push(u),!await be(Ct,e=>{if(e instanceof he)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...At(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 Ee(m,v,Oe(o,l));if("HIT"===e?.status&&e.value)return l=e.value,m.stop?g({copies:[{event:Rt(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await Vt(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const y=pt(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?gt(i,k,e,o):e;b&&b.length>0&&(l=await gt(i,b,l,o));const E=await be(Pt,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",At(e)),!1))(i,d,u,l,o,f);if(!1===E)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(E)&&1!==E.length){if(0===E.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<E.length;r++){const s=E[r],i=await S(s.event||e);n.push({stack:Bt(t,s.next),...Tt(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const _=Array.isArray(E)?E[0]:E;let O;return _&&"object"==typeof _&&(_.respond&&(f=_.respond),_.event&&(l=_.event),O=_.next),l=await S(l),w&&v&&_e(v,w.key,l,w.ttl),p(Bt(t,O))}async function Vt(e,t,n,o,r,s,i){const a=r??fe("string"==typeof n?n:"chain");return void 0===n?Wt([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),Lt({collector:e,transformers:t,chainContext:i},{stack:me(n)?n:we(n),event:o,ingest:a,respond:s}))}function Ft(e){return e&&ve(e)?e:{}}var Ht=1e4;function Ut(e){return"number"==typeof e&&e>0?e:Ht}var Gt=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Qt(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Gt(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function Nt(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(sn(n)&&!ln(e,t,n))continue;const o=t.on;let i=!1;await oe(()=>Qt(Promise.resolve(o(n,s)),Ht,`Source "${r}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof J)throw t;t instanceof Gt?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...At(t)})})(),sn(n)&&!i&&dn(e,t,n)}}function Yt(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Xt(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=pt(l);ht(e,ue("source",t),l);const p=u,g=p?re({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),v=async(n,o,s)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:ee()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Vt(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return lt(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),oo({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=ft(g,e);if(t){const n=ce(s.ingest),o=await se(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 ae(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=>{ie(t,u,n,d),a?i=(async()=>{const t=await ae(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||ie(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await gt(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},w=async n=>{const o=X(t),s=te(ne(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 Z(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},y=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:X(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:y},k={collector:e,logger:y,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:Mt(e,"source",t,y)},S=await oe(o,n=>{if(n instanceof J)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...At(n)})})(k);if(!S)return;const E=S.type||"unknown",_=e.logger.scope(E).scope(t);return b.logger=_,i&&(S.config={...S.config,primary:i}),S}async function Jt(e){for(const[t,n]of Object.entries(e.sources)){if(Yt(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!cn(e,t));r.length!==o.length&&(n.config.require=r,Yt(n)&&await Nt(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=>!cn(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=ro(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await Ln(e,s,t)}}function Zt(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 en=!1;function tn(){en||(en=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function nn(e,t,n,o){if(n instanceof G)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...At(n)})}var on=["consent","user","globals","custom"];function rn(e){return on.includes(e)}function sn(e){return rn(e)}function an(e,t){return rn(t)&&Object.keys(e[t]).length>0}function cn(e,t){if(rn(t))return an(e,t);switch(t){case at.Run:case at.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function un(e,t){return e.cellVersion?.[String(t)]??0}function dn(e,t,n){Cn(e,t,n,un(e,n))}function ln(e,t,n){return e.allowed&&un(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 fn=8;function pn(e){const t=e.cascade;if(t&&!gn.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,gn.set(n,(gn.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(gn.get(n)||1)-1;t>0?gn.set(n,t):(gn.delete(n),e.cascade===n&&(e.cascade=void 0))}}var gn=new WeakMap;function hn(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<=fn||(i===fn+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function mn(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function vn(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=sn(o);if(i&&(wn.get(t)||yn.has(t)))return In(e,t,o),wn.get(t)||bn.add(t),!1;const a=i?un(e,o):0,c=i&&function(e,t,n,o){if(qn.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)?$n(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:so(t.env,t.config.env),reportError:Mt(e,"destination",n,d,t)};i&&(Mn(t,o),function(e,t,n){let o=_n.get(e);o||(o={},_n.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),yn.add(t));const f=Ut(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await N(()=>(p=Promise.resolve(s(o,l)),Qt(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof Gt&&(h=!0),nn(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){yn.delete(t),m&&bn.delete(t);const r=qn.get(t);g?(Cn(e,t,o,a),r?.delete(String(o))):In(e,t,o),h?function(e,t,n,o,r,s,i){wn.set(t,(wn.get(t)||0)+1);const a=()=>{const s=(wn.get(t)||0)-1;var a,c,u,d;s>0?wn.set(t,s):wn.delete(t),xn(t,o),On(t,o,r),Dn(e,t),i.debug("late settle after timeout"),bn.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,N(async()=>{await Ln(a,c,u),!Sn(c)&&c.queuePush?.length&&await Jn(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",At(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(On(t,o,a),Dn(e,t))}}return i&&!h&&bn.delete(t)&&await Ln(e,t,n),g}var wn=new WeakMap,yn=new WeakSet,bn=new WeakSet,kn=new WeakMap;function Sn(e){return kn.get(e)}var En=new WeakMap,_n=new WeakMap;function On(e,t,n){const o=_n.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var qn=new WeakMap;function xn(e,t){const n=qn.get(e);n?n.add(String(t)):qn.set(e,new Set([String(t)]))}var jn=new WeakMap;function In(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),xn(t,n),kn.set(t,{type:n,since:Date.now()})}function An(e,t){return!!qn.get(t)?.size||on.some(n=>an(e,n)&&ln(e,t,n))}function Mn(e,t){En.set(e,(En.get(e)||0)+1),kn.set(e,{type:t,since:Date.now()})}function Dn(e,t){const n=(En.get(t)||0)-1;var o,r;n>0?En.set(t,n):En.delete(t),o=e,r=t,kn.has(r)&&(En.get(r)||An(o,r)||kn.delete(r))}function Cn(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 Pn(e,t,n,o){if(!Zt(e))return void tn();const r=$n(e,t,o);if(n.length)switch(t){case at.Consent:!function(e,t,n){const o=n||e.consent,r=mn(e,at.Consent);t.forEach(t=>{ln(e,t,at.Consent)&&hn(e,t,at.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{Q(t[n],t=>nn(e,"consent",t,{key:n}))(o,r)}),dn(e,t,at.Consent))})}(e,n,o);break;case at.Ready:!function(e,t){if(!e.allowed)return;const n=mn(e,at.Ready);t.forEach(t=>{Q(t,t=>nn(e,"ready",t))(void 0,n)})}(e,n);break;case at.Run:!function(e,t){if(!e.allowed)return;const n=mn(e,at.Run);t.forEach(t=>{Q(t,t=>nn(e,"run",t))(void 0,n)})}(e,n);break;case at.Session:!function(e,t){if(!e.session)return;const n=mn(e,at.Session);t.forEach(t=>{Q(t,t=>nn(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=mn(e,t),s=sn(t);n.forEach(n=>{"function"==typeof n&&(s&&!ln(e,n,t)||s&&!hn(e,n,t)||(Q(n,n=>nn(e,"generic",n,{type:t}))(r,o),s&&dn(e,n,t)))});break}}}function $n(e,t,n){if(rn(t))return n||e[t];switch(t){case at.Session:return e.session;case at.Config:return n||e.config;default:return}}async function Rn(e,t,n,o,r){if(!t.on)return!1;if(sn(o)&&!ln(e,t,o))return!1;if(sn(o)&&!hn(e,t,o))return!1;const s=sn(o);if(s&&Tn.has(t))return Wn.add(t),!1;const i=s?un(e,o):0;s&&Tn.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await N(()=>(u=Promise.resolve(a(o,r)),Qt(u,Ht,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof Gt&&(d=!0),nn(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&Tn.delete(t)}if(s)if(d){const o=()=>{Tn.delete(t),Wn.delete(t),e.allowed&&e.sources[n]===t&&N(()=>Bn(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",At(t))})()};u.then(o,o)}else Cn(e,t,o,i),Wn.delete(t)&&await Bn(e,t,n);return!1===c}var Tn=new WeakSet,Wn=new WeakSet;async function Bn(e,t,n){const o=pn(e);try{for(const o of on)await Rn(e,t,n,o,$n(e,o))}finally{o()}}async function Kn(e,t,n,o,r){if(!t.on)return;const s=sn(o);if(s&&!ln(e,t,o))return;const i=_n.get(t)?.[String(o)];if(s&&void 0!==i&&i>=un(e,o))return;if(s&&!hn(e,t,o)){if(t.config.init)return void In(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:$n(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),dn(e,t,o),void qn.get(t)?.delete(String(o))}const a=jn.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(dn(e,t,o),a&&!a.held&&(Mn(t,o),a.held=!0)));await vn(e,t,n,o,r)}async function Ln(e,t,n){if(!t.on)return;const o=pn(e);try{for(const o of on)(an(e,o)||qn.get(t)?.has(String(o)))&&await Kn(e,t,n,o,$n(e,o))}finally{o()}}function zn(e){return(En.get(e)||0)>0}function Vn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var Fn=1e3,Hn=1e3,Un=3e4,Gn=Object.freeze({batched:!0});function Qn(e){return e===Gn}var Nn=" batch-all";function Yn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Xn(e){for(const t of e)Sn(t.destination)&&(t.drain=!0)}async function Jn(e,t,n={},o){if(!e.allowed)return oo({ok:!1});if(!t)return Zn(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??S(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await Vt(e,e.transformers||{},r,t,o,n.respond,go),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),lt(e,t,o,{reason:"dropped",by:s.droppedBy,at:go}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:fo(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===r.copies.length)return oo({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await Zn(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function Zn(e,t,n,o){const{user:r}=e;if(t){const n=bt(e.config.queueMax),o=kt(e.queue,t,{max:n});if(o.dropped>0){const t=It(e.status,B("collector"),"queue",o.dropped);Et(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&_t(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=B("destination",a),u=qt(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=Ot();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&&xt(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)},f=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??Fn};let a=0;for(const e of t)a+=kt(n,e,s).dropped;if(a>0){jt(e,r);const t=It(e.status,B("destination",r),"queue",a);Et(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&&_t(n)};i.on&&i.config.init&&!Sn(i)&&!zn(i)&&An(e,i)&&await Ln(e,i,o);const p=Sn(i);if(p&&!zn(i)&&Date.now()-p.since>=Ut(i.config.timeout)&&await Ln(e,i,o),Sn(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[O(t)];return f(e),{id:o,destination:i,queue:e}}let g=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&g.push(O(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:I("unknown");if(!g.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!g.length&&i.queueOn?.length){if(!C(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await to(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(Sn(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};g=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const m=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=C(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=ut(e,B("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),ct(t,h,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),M(e,a),!0});return{allowed:r,skipped:s}},v=e.consent,{allowed:w,skipped:y}=m(g);if(f(y),!w.length)return l(),{id:o,destination:i,queue:g};const b=new Set(i.queuePush);let k=!1;try{k=await to(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(!k)return l(),{id:o,destination:i,queue:g};if(Sn(i))return l(),f(w),{id:o,destination:i,queue:w};const S=[];if(e.consent!==v){const t=m(w.map(t=>({...t,consent:e.consent})));w.splice(0,w.length,...t.allowed),S.push(...t.skipped)}const A=i.queuePush||[],D=A.filter(e=>!b.has(e));if(D.length){i.queuePush=A.filter(e=>b.has(e));const t=m(D.map(t=>({...t,consent:e.consent})));w.push(...t.allowed),S.push(...t.skipped)}if(f(S),!w.length)return l(),S.length?{id:o,destination:i,queue:S}:{id:o,destination:i,skipped:!0};let P,$;i.dlq||(i.dlq=[]);const R=i.config.before,T=i.config.next,W=i.config?.cache,L=W?q(W):void 0,z=L?ft(L,e):void 0,V=pt(i.config?.state),F=V?.filter(e=>"get"===e.mode),H=V?.filter(e=>"set"===e.mode);let U=0,G=0,Q=0;return await Promise.all(w.map(async t=>{let a,c;if(t.user=E(r,t.user),L?.stop&&z){const e=_(h,t),n=await x(L,z,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:h}],d=n.respond;if(void 0!==R){const r=`destination.${o}.before`,i=await Vt(e,s,R,t,h,n.respond,r);if(0===i.copies.length){const n=ut(e,B("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),ct(t,h,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},M(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(L&&!L.stop&&z){const e=_(n,t??void 0),o=await x(L,z,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}F&&F.length>0&&t&&(t=await gt(e,F,t,n));const l=Date.now();let f=!1;const p=await K(no,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...At(n),event:t.name}),P=n,f=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},u=kt(s,[t,n],c);if(u.dropped>0){jt(e,a);const t=It(e.status,B("destination",a),"dlq",u.dropped);Et(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&&_t(s)})(e,i,o,t,n,d);if(U+=Date.now()-l,a&&z&&void 0===i.config.mock&&(u?j(z,a.key,p??!0,a.ttl):void 0===c&&(c=p??!0)),!f&&!Qn(p)&&H&&H.length>0&&t&&(t=await gt(e,H,t,n)),void 0===p||Qn(p)||($=p),Qn(p)&&G++,!f&&T){void 0!==p&&(n._response=p);const r=await Vt(e,s,T,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)&&Q++;return a&&z&&void 0!==c&&void 0===i.config.mock&&j(z,a.key,c,a.ttl),t})),{id:o,destination:i,error:P,response:$,totalDuration:U,batchedCount:G,allowedCount:w.length,pushedCount:Q,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};jt(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?B("destination",t.canonicalId):void 0,l=t=>{i&&d&&xt(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 oo({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}var eo=new WeakMap;async function to(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=eo.get(t);if(r)return r;const s=async function(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:so(t.env,t.config.env),reportError:Mt(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;M(e,ut(e,B("destination",o),"destination","init","",a));try{c=await L(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=ut(e,B("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=dt(t),M(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=pn(e);!function(e){const t=e.queueOn?.find(({type:e})=>sn(e));t&&Mn(e,t.type),jn.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await vn(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])sn(n)&&In(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=jn.get(t);jn.delete(t),n?.held&&Dn(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);eo.set(t,s);try{return await s}finally{eo.delete(t)}}return!0}async function no(e,t,n,o,r,s){const{config:i}=t,a=await W(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:{...so(t.env,i.env),...s?{respond:s}:{}},reportError:Mt(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,p=f?a.mappingKey||"* *":Nn;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=Yn(l?.batch),s=Yn(i.batch),a=r.wait??s.wait??Un,c=r.size??s.size??Hn,d=r.age??s.age??Un,g=so(t.env,i.env),h=A(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const 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:{...g,...a.respond?{respond:a.respond}:{}},reportError:Mt(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=jt(e,d),f=qt(t.config.breaker),h=B("destination",d),m=t=>{f&&xt(e.status.breakers,h,t,f.threshold,f.cooldown)},v=Date.now(),w=new Map;let y,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??100};let s=0;for(const e of n)s+=kt(o,e,r).dropped;if(s>0){const t=It(e.status,B("destination",d),"dlq",s);Et(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&_t(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let S=s.entries.length;const E=Ut(i.timeout),_=await K((o,r)=>Qt(Promise.resolve(L(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{S=0,b=!0,y=e,k(s.entries.map(t=>[t.event,e])),m("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(R(O=_)&&Array.isArray(O.failed)&&_.failed.length>0){const e=[];for(const t of _.failed){const n=s.entries[t.index];if(!n||w.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);w.set(t.index,o),e.push([n.event,o])}if(e.length>0){k(e),S=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:S,entries:s.entries.length,causes:[...t.values()]})}}var O;const q=Date.now();s.entries.forEach((t,o)=>{const r=b||w.has(o),i=ct(t.event,t.ingest,e),a=ut(e,B("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",q,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=q-v,r){const e=b?y:w.get(o);a.error=dt(e)}M(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),S>0&&(l.count+=S,l.lastAt=Date.now(),e.status.out+=S,m("success"))},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),P(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=ct(o,r,e),h=Date.now(),m=ut(e,B("destination",n),"destination","in",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),a.event.consent&&(m.consent={...a.event.consent}),m.inEvent=a.event,M(e,m);const v=ut(e,B("destination",n),"destination","out",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),v.outEvent=a.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},M(e,v);const w=t.config.id||n,y=jt(e,w);return y.inFlightBatch=(y.inFlightBatch??0)+1,c.batchFn(),Gn}{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=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:mt(t,r,1);const s=H(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[T]={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=ct(o,r,e),f=Date.now(),p=ut(e,B("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,M(e,p);try{const o=Ut(i.timeout),r=await Qt(Promise.resolve(L(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=ut(e,B("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,yt(g,s),P(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),M(e,g),u.debug("push done"),r}catch(t){const o=Date.now(),r=ut(e,B("destination",n),"destination","error",c,o,l);throw r.durationMs=o-f,r.error=dt(t),yt(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),M(e,r),t}}}function oo(e){return{ok:!e?.failed,...e}}function ro(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=Dt(e,"before"),{config:a}=Dt({...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=so(t.env,o);return{...t,config:c,env:u}}function so(e,t){return e||t?t?e&&R(e)&&R(t)?{...e,...t}:t:e:{}}async function io(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`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function ao(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function co(e,t,n){let o,r,s=!1;const i=[],a=pn(e);try{return await async function(){switch(t){case at.Config:Re(n)&&(Ae(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case at.Consent:if(Re(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=k(e.consent,n),{update:n}}(e,n);ao(e,at.Consent),r=t,s=!0}break;case at.Custom:Re(n)&&(e.custom=Ae(e.custom,n),ao(e,at.Custom),r=n,s=!0);break;case at.Destination:Re(n)&&"code"in n&&Re(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!$(n.push))return oo({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=D(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(ht(e,B("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Jt(e);const n=e.destinations[l];return n?Jn(e,void 0,{},{[l]:n}):oo({ok:!0})}const f={...n,config:d,env:so(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Ln(e,f,l),Jn(e,void 0,{},{[l]:f})}(e,n));break;case at.Globals:Re(n)&&(e.globals=Ae(e.globals,n),ao(e,at.Globals),r=n,s=!0);break;case at.Hook:if(Re(n)&&$e(n.name)&&Pe(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case at.On:if(Re(n)&&$e(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Zt(e))return void tn();const o=e.on,r=o[t]||[],s=U(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Pn(e,t,s)}(e,t,o)}break;case at.Ready:s=!0;break;case at.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=De(),e.count=0,t&&(t.consent&&(e.consent=Ae(e.consent,t.consent),ao(e,at.Consent)),t.user&&(e.user=Ae(e.user,t.user),ao(e,at.User)),t.globals&&(e.globals=Ae(e.config.globalsStatic||{},t.globals),ao(e,at.Globals)),t.custom&&(e.custom=Ae(e.custom,t.custom),ao(e,at.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Jt(e);const o=await async function(e){if(!Zt(e))return tn(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of on)an(e,t)&&await Kn(e,o,n,t,$n(e,t))};t.push(Vn(n,o,r()))}for(const t of on){if(!an(e,t))continue;const n=$n(e,t);Pn(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>Yt(e)).map(([o,r])=>Rn(e,r,o,t,n)))}return t}(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)}}Xn(o);const i=await Jn(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case at.Session:s=!0;break;case at.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await io(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`)),5e3)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await io(e.destinations,"destination",t),await io(e.transformers,"transformer",t),await io(e.stores,"store",t)}(e));break;case at.User:Re(n)&&(Ae(e.user,n,{shallow:!1}),ao(e,at.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),oo({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!Zt(e))return tn(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=$n(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&&(Yt(o)?i.push(Rn(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(Vn(n,o,Kn(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))Yt(n)&&n.queueOn?.length&&await Nt(e,n,t);const u=Object.values(e.sources).some(e=>!Yt(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Jt(e),Pn(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),Xn(n.deliveries);const s=function(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}(await Jn(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!Sn(n)&&n.queuePush?.length&&e.destinations[t]===n)return Jn(e,void 0,{},{[t]:n})}))).filter(P)}(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||oo({ok:!0})}()}finally{a()}}function uo(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function lo(e,t,n){return po(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function fo(e,t,n){return po(e,uo(e,t),n,{globals:{},user:{},consent:{}})}function po(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new Ce(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new Ce("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new Ce("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=Me(),trigger:v="",entity:w=s,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),_=S.trace??n?._meta.trace??e.trace,O={...S,count:E};void 0!==_&&(O.trace=_);const q=e.name??S.platform??"default",x=e.release??"4.8.0-next-1791496487198";return O.release={...S.release,[q]:x},{name:c,data:u,context:d,globals:Ae(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:O}}var go="collector.next";function ho(e,t){const n=Xe(async(n,o={})=>await Ye(async()=>{if(!e.allowed){const t=bt(e.config.queueMax),r=kt(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=It(e.status,"collector.preRun","queue",r.dropped);Et(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&_t(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),oo({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??Ve(s||"unknown");if(c){const t=await Ne(p,c,e);if(t.ignore)return oo({ok:!0});if(c.consent){const n=t.event.consent;if(!Ue(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),lt(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),oo({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await Vt(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})`:"")),lt(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),oo({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),oo({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=lo(e,t(n.event),n.ingest);return Jn(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]??oo({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=function(e,t,n){return lo(e,uo(e,t),n)}(e,p,h),v=await Jn(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 v},t=>{if(t instanceof He)throw t;if(t instanceof Qe){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}),oo({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...At(t),event:n.name}),oo({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:Ge()},s="string"==typeof r.id?r.id:"",i=ct(r,o?.ingest,e),a=Date.now(),c=ut(e,"collector.push","collector","in",s,a,i);c.inEvent=r,Fe(e,c);try{const t=await n(r,o),c=Date.now(),u=ut(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,Fe(e,u),t}catch(t){const n=Date.now(),o=ut(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=dt(t),Fe(e,o),t}}}function mo(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,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;return 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()),{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()}}}function vo(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=ut(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},rt(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?ot(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=st(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,it(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),it(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,At(n)):console.warn(o,n)}}function wo(e,t,n){const o=`store.${n}`,r=nt(t.get,"StoreGet",e.hooks,e.logger),s=nt(t.set,"StoreSet",e.hooks,e.logger),i=nt(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=ut(e,o,"store","in","",n);s.meta={op:"get",key:t},tt(e,s);try{const s=await r(t),i=Date.now(),a=ut(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},tt(e,a),s}catch(r){const s=Date.now(),i=ut(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=dt(r),tt(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=ut(e,o,"store","in","",i);a.meta={op:"set",key:t},tt(e,a);try{await s(t,n,r);const a=Date.now(),c=ut(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},tt(e,c)}catch(n){const r=Date.now(),s=ut(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=dt(n),tt(e,s),n}},t.delete=async t=>{const n=Date.now(),r=ut(e,o,"store","in","",n);r.meta={op:"delete",key:t},tt(e,r);try{await i(t);const r=Date.now(),s=ut(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},tt(e,s)}catch(r){const s=Date.now(),i=ut(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=dt(r),tt(e,i),r}}}async function yo(e){const t=Le({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=ze(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};var i,a;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=ho(s,e=>uo(s,e)),s.command=(a=co,Ze(async(e,t,n)=>await et(async()=>await a(i,e,t,n),t=>{if(t instanceof Je)throw t;return i.status.failed++,i.logger.error("command failed",{...At(t),command:e}),oo({ok:!1})})(),"Command",(i=s).hooks,i.logger)),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 oo({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 c=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(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:Mt(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=mo()),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]=vo(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&&wo(e,o,t);return n}(s,c),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)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=mo()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))ht(e,B("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=ro(r);return n}(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=qe(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=Dt(r,"before"),{config:a}=Dt({...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;ht(e,ye("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:fe(o),config:f,env:s,reportError:Mt(e,"transformer",o,p)},h=je(r);for(const t of Ie(r))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await xe(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);void 0!==r.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:r.before}),void 0!==r.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:r.next}),void 0!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(s,e.transformers||{}),s}var bo=globalThis;function ko(e){try{const t=bo.window;if(!t)return;t.localStorage.getItem(Te)===e&&t.localStorage.removeItem(Te)}catch{}}function So(e,t){return void 0===t?e:n=>e({...n,release:t})}async function Eo(e){const t=e??{},n=await yo(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=bo.window,t=bo.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Te);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return bo.window?.localStorage.getItem(Te)??null}catch{return null}}();if(!r)return;const s=Ke(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),ko(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{bo.window?.localStorage.setItem(Te,e)}catch{}}(r),null!==t&&function(){const e=bo.window,t=bo.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(Te);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=We({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(ko(r),i&&e.observers.delete(i))}});i=Be(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(So(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(Be(So(We({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Xt(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 oe(n.init.bind(n),n=>{if(n instanceof J)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...At(n)})})(),o||(n.config.init=!0,Yt(n)&&await Nt(e,n,t))}return await Jt(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var _o=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Eo({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};export{d as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
1
+ var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{MappingSchema:()=>a,SettingsSchema:()=>s,mapping:()=>u,settings:()=>c});import{zodToSchema as o}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var s=r.object({events:r.array(r.object({delay:r.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")});import{z as i}from"@walkeros/core/dev";var a=i.object({}),c=o(s),u=o(a),d={};t(d,{createTrigger:()=>_o,env:()=>l,step:()=>w});var l={};t(l,{init:()=>h,push:()=>m,simulation:()=>v});var f=async()=>({ok:!0}),p=()=>{},g={error:p,warn:p,info:p,debug:p,throw:e=>{throw"string"==typeof e?new Error(e):e},json:p,scope:()=>g},h=void 0,m={push:f,command:f,elb:f,logger:g},v=["call:elb"],w={};t(w,{delayedEvent:()=>b,pageView:()=>y});var y={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},b={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]};import{assign as k}from"@walkeros/core";import{createIngest as S}from"@walkeros/core";import{assign as E,createMappingRoot as _,clone as O,compileCache as q,checkCache as x,storeCache as j,createIngest as I,debounce as A,emitStep as M,getId as D,getGrantedConsent as C,isDefined as P,isFunction as $,isObject as R,OBSERVE_ENV_KEY as T,processEventMapping as W,stepId as B,tryCatchAsync as K,useHooks as L}from"@walkeros/core";import{emitStep as z}from"@walkeros/core";import{applyState as V,compileState as F}from"@walkeros/core";import{observeEnv as H}from"@walkeros/core";import{isArray as U,FatalError as G}from"@walkeros/core";import{tryCatch as Q,tryCatchAsync as N}from"@walkeros/core";import{stepId as Y}from"@walkeros/core";import{createIngest as X,FatalError as J,getMappingValue as Z,getSpanId as ee,parseTraceparent as te,isScope as ne,tryCatchAsync as oe,compileCache as re,checkCache as se,storeCache as ie,applyUpdate as ae,createMappingRoot as ce,stepId as ue}from"@walkeros/core";import{advanceChain as de,clone as le,createIngest as fe,deriveSpanId as pe,emitStep as ge,FatalError as he,isChainContinuation as me,isObject as ve,startChain as we,stepId as ye,tryCatchAsync as be,useHooks as ke,compileCache as Se,checkCache as Ee,storeCache as _e,createMappingRoot as Oe,validateStepEntry as qe,processEventMapping as xe,getTransformerMapping as je,getTransformerMappingWarnings as Ie}from"@walkeros/core";import{assign as Ae,getSpanId as Me,getTraceId as De,InvalidEventError as Ce,isFunction as Pe,isString as $e}from"@walkeros/core";import{isObject as Re}from"@walkeros/core";import{OBSERVE_STORAGE_KEY as Te,createBatchedPoster as We,createTelemetryObserver as Be,parseObserveCredential as Ke}from"@walkeros/core";import{assign as Le,createLogger as ze}from"@walkeros/core";import{createIngest as Ve,emitStep as Fe,FatalError as He,getGrantedConsent as Ue,getSpanId as Ge,InvalidEventError as Qe,processEventMapping as Ne,tryCatchAsync as Ye,useHooks as Xe}from"@walkeros/core";import{FatalError as Je,useHooks as Ze,tryCatchAsync as et}from"@walkeros/core";import{emitStep as tt,useHooks as nt}from"@walkeros/core";import{compileMatcher as ot,emitStep as rt,readCacheEnvelope as st,wrapCacheEnvelope as it}from"@walkeros/core";var at={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"};function ct(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function ut(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 dt(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function lt(e,t,n,o){e.status.in++;const r=ut(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),ct(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):r.meta={by:o.by??"route",at:o.at},z(e,r)}function ft(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function pt(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?F(e):void 0}function gt(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?V(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function ht(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}function mt(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 r of e)o.push(mt(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:mt(s,t,n+1);return r}function vt(e,t){try{return e[t]}catch{return"[unreadable]"}}function wt(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(vt(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 yt(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:wt(e.args),ts:e.ts})))}function bt(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function kt(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 St=new WeakMap;function Et(e,t,n,o){St.get(e)||(St.set(e,!0),t.warn(n,o))}function _t(e){St.delete(e)}var Ot=()=>Date.now();function qt(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function xt(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;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=Ot()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=Ot()+r)))}function jt(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 It(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 At(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 Mt(e,t,n,o,r){const s=Y(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??100},c=kt(i,[o,r],a);if(c.dropped>0){const t=It(e.status,Y("destination",n),"dlq",c.dropped);Et(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&_t(i);const u=jt(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=qt(t.config.breaker);if(d){const o=t.config.id||n;xt(e.status.breakers,Y("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...At(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",At(t))}catch{}}}function Dt(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 Ct(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:fe(n),config:t.config,env:Ft(t.config.env),reportError:Mt(e,"transformer",n,r)};r.debug("init");const i=await ke(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 Pt(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:{...Ft(t.config.env),...s?{respond:s}:{}},reportError:Mt(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=ct(o,r,e),l=Date.now(),f=ut(e,ye("transformer",n),"transformer","in",u,l,d);f.inEvent=o,ge(e,f);try{const r=await ke(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=ut(e,ye("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,ge(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=ut(e,ye("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=dt(t),ge(e,r),t}}function $t(e){return"string"==typeof e.id?e.id:""}function Rt(e,t){const n=$t(e);return""!==n&&""===$t(t)?{...t,id:n}:t}function Tt(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=le(t),i=$t(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=$t(s);return""!==c&&c!==i||(s.id=pe(i,o)),{event:s,ingest:r}}function Wt(e,t){return{copies:e,respond:t}}function Bt(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 Kt(e,t,n){const o=await Promise.all(t.map((t,n)=>be(Lt,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,At(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}:{}}:Wt(r,i)}async function Lt(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=de(o,Oe(n,r),e.transformers);if("done"===i.kind)return Wt([{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 Kt(e,i.branches.map((e,o)=>({stack:e,...Tt(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 zt(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Kt(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function zt(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:Rt(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?Se(h):void 0,v=m?ft(m,i):void 0;let w=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});if(o._meta.hops++,o._meta.path.push(u),!await be(Ct,e=>{if(e instanceof he)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...At(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 Ee(m,v,Oe(o,l));if("HIT"===e?.status&&e.value)return l=e.value,m.stop?g({copies:[{event:Rt(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await Vt(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const y=pt(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?gt(i,k,e,o):e;b&&b.length>0&&(l=await gt(i,b,l,o));const E=await be(Pt,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",At(e)),!1))(i,d,u,l,o,f);if(!1===E)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(E)&&1!==E.length){if(0===E.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<E.length;r++){const s=E[r],i=await S(s.event||e);n.push({stack:Bt(t,s.next),...Tt(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const _=Array.isArray(E)?E[0]:E;let O;return _&&"object"==typeof _&&(_.respond&&(f=_.respond),_.event&&(l=_.event),O=_.next),l=await S(l),w&&v&&_e(v,w.key,l,w.ttl),p(Bt(t,O))}async function Vt(e,t,n,o,r,s,i){const a=r??fe("string"==typeof n?n:"chain");return void 0===n?Wt([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),Lt({collector:e,transformers:t,chainContext:i},{stack:me(n)?n:we(n),event:o,ingest:a,respond:s}))}function Ft(e){return e&&ve(e)?e:{}}var Ht=1e4;function Ut(e){return"number"==typeof e&&e>0?e:Ht}var Gt=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Qt(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Gt(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function Nt(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(sn(n)&&!ln(e,t,n))continue;const o=t.on;let i=!1;await oe(()=>Qt(Promise.resolve(o(n,s)),Ht,`Source "${r}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof J)throw t;t instanceof Gt?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...At(t)})})(),sn(n)&&!i&&dn(e,t,n)}}function Yt(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Xt(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=pt(l);ht(e,ue("source",t),l);const p=u,g=p?re({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),v=async(n,o,s)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:ee()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Vt(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return lt(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),oo({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=ft(g,e);if(t){const n=ce(s.ingest),o=await se(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 ae(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=>{ie(t,u,n,d),a?i=(async()=>{const t=await ae(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||ie(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await gt(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},w=async n=>{const o=X(t),s=te(ne(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 Z(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},y=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:X(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:y},k={collector:e,logger:y,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:Mt(e,"source",t,y)},S=await oe(o,n=>{if(n instanceof J)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...At(n)})})(k);if(!S)return;const E=S.type||"unknown",_=e.logger.scope(E).scope(t);return b.logger=_,i&&(S.config={...S.config,primary:i}),S}async function Jt(e){for(const[t,n]of Object.entries(e.sources)){if(Yt(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!cn(e,t));r.length!==o.length&&(n.config.require=r,Yt(n)&&await Nt(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=>!cn(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=ro(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await Ln(e,s,t)}}function Zt(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 en=!1;function tn(){en||(en=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function nn(e,t,n,o){if(n instanceof G)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...At(n)})}var on=["consent","user","globals","custom"];function rn(e){return on.includes(e)}function sn(e){return rn(e)}function an(e,t){return rn(t)&&Object.keys(e[t]).length>0}function cn(e,t){if(rn(t))return an(e,t);switch(t){case at.Run:case at.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function un(e,t){return e.cellVersion?.[String(t)]??0}function dn(e,t,n){Cn(e,t,n,un(e,n))}function ln(e,t,n){return e.allowed&&un(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 fn=8;function pn(e){const t=e.cascade;if(t&&!gn.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,gn.set(n,(gn.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(gn.get(n)||1)-1;t>0?gn.set(n,t):(gn.delete(n),e.cascade===n&&(e.cascade=void 0))}}var gn=new WeakMap;function hn(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<=fn||(i===fn+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function mn(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function vn(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=sn(o);if(i&&(wn.get(t)||yn.has(t)))return In(e,t,o),wn.get(t)||bn.add(t),!1;const a=i?un(e,o):0,c=i&&function(e,t,n,o){if(qn.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)?$n(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:so(t.env,t.config.env),reportError:Mt(e,"destination",n,d,t)};i&&(Mn(t,o),function(e,t,n){let o=_n.get(e);o||(o={},_n.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),yn.add(t));const f=Ut(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await N(()=>(p=Promise.resolve(s(o,l)),Qt(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof Gt&&(h=!0),nn(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){yn.delete(t),m&&bn.delete(t);const r=qn.get(t);g?(Cn(e,t,o,a),r?.delete(String(o))):In(e,t,o),h?function(e,t,n,o,r,s,i){wn.set(t,(wn.get(t)||0)+1);const a=()=>{const s=(wn.get(t)||0)-1;var a,c,u,d;s>0?wn.set(t,s):wn.delete(t),xn(t,o),On(t,o,r),Dn(e,t),i.debug("late settle after timeout"),bn.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,N(async()=>{await Ln(a,c,u),!Sn(c)&&c.queuePush?.length&&await Jn(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",At(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(On(t,o,a),Dn(e,t))}}return i&&!h&&bn.delete(t)&&await Ln(e,t,n),g}var wn=new WeakMap,yn=new WeakSet,bn=new WeakSet,kn=new WeakMap;function Sn(e){return kn.get(e)}var En=new WeakMap,_n=new WeakMap;function On(e,t,n){const o=_n.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var qn=new WeakMap;function xn(e,t){const n=qn.get(e);n?n.add(String(t)):qn.set(e,new Set([String(t)]))}var jn=new WeakMap;function In(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),xn(t,n),kn.set(t,{type:n,since:Date.now()})}function An(e,t){return!!qn.get(t)?.size||on.some(n=>an(e,n)&&ln(e,t,n))}function Mn(e,t){En.set(e,(En.get(e)||0)+1),kn.set(e,{type:t,since:Date.now()})}function Dn(e,t){const n=(En.get(t)||0)-1;var o,r;n>0?En.set(t,n):En.delete(t),o=e,r=t,kn.has(r)&&(En.get(r)||An(o,r)||kn.delete(r))}function Cn(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 Pn(e,t,n,o){if(!Zt(e))return void tn();const r=$n(e,t,o);if(n.length)switch(t){case at.Consent:!function(e,t,n){const o=n||e.consent,r=mn(e,at.Consent);t.forEach(t=>{ln(e,t,at.Consent)&&hn(e,t,at.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{Q(t[n],t=>nn(e,"consent",t,{key:n}))(o,r)}),dn(e,t,at.Consent))})}(e,n,o);break;case at.Ready:!function(e,t){if(!e.allowed)return;const n=mn(e,at.Ready);t.forEach(t=>{Q(t,t=>nn(e,"ready",t))(void 0,n)})}(e,n);break;case at.Run:!function(e,t){if(!e.allowed)return;const n=mn(e,at.Run);t.forEach(t=>{Q(t,t=>nn(e,"run",t))(void 0,n)})}(e,n);break;case at.Session:!function(e,t){if(!e.session)return;const n=mn(e,at.Session);t.forEach(t=>{Q(t,t=>nn(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=mn(e,t),s=sn(t);n.forEach(n=>{"function"==typeof n&&(s&&!ln(e,n,t)||s&&!hn(e,n,t)||(Q(n,n=>nn(e,"generic",n,{type:t}))(r,o),s&&dn(e,n,t)))});break}}}function $n(e,t,n){if(rn(t))return n||e[t];switch(t){case at.Session:return e.session;case at.Config:return n||e.config;default:return}}async function Rn(e,t,n,o,r){if(!t.on)return!1;if(sn(o)&&!ln(e,t,o))return!1;if(sn(o)&&!hn(e,t,o))return!1;const s=sn(o);if(s&&Tn.has(t))return Wn.add(t),!1;const i=s?un(e,o):0;s&&Tn.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await N(()=>(u=Promise.resolve(a(o,r)),Qt(u,Ht,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof Gt&&(d=!0),nn(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&Tn.delete(t)}if(s)if(d){const o=()=>{Tn.delete(t),Wn.delete(t),e.allowed&&e.sources[n]===t&&N(()=>Bn(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",At(t))})()};u.then(o,o)}else Cn(e,t,o,i),Wn.delete(t)&&await Bn(e,t,n);return!1===c}var Tn=new WeakSet,Wn=new WeakSet;async function Bn(e,t,n){const o=pn(e);try{for(const o of on)await Rn(e,t,n,o,$n(e,o))}finally{o()}}async function Kn(e,t,n,o,r){if(!t.on)return;const s=sn(o);if(s&&!ln(e,t,o))return;const i=_n.get(t)?.[String(o)];if(s&&void 0!==i&&i>=un(e,o))return;if(s&&!hn(e,t,o)){if(t.config.init)return void In(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:$n(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),dn(e,t,o),void qn.get(t)?.delete(String(o))}const a=jn.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(dn(e,t,o),a&&!a.held&&(Mn(t,o),a.held=!0)));await vn(e,t,n,o,r)}async function Ln(e,t,n){if(!t.on)return;const o=pn(e);try{for(const o of on)(an(e,o)||qn.get(t)?.has(String(o)))&&await Kn(e,t,n,o,$n(e,o))}finally{o()}}function zn(e){return(En.get(e)||0)>0}function Vn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var Fn=1e3,Hn=1e3,Un=3e4,Gn=Object.freeze({batched:!0});function Qn(e){return e===Gn}var Nn=" batch-all";function Yn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Xn(e){for(const t of e)Sn(t.destination)&&(t.drain=!0)}async function Jn(e,t,n={},o){if(!e.allowed)return oo({ok:!1});if(!t)return Zn(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??S(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await Vt(e,e.transformers||{},r,t,o,n.respond,go),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),lt(e,t,o,{reason:"dropped",by:s.droppedBy,at:go}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:fo(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===r.copies.length)return oo({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await Zn(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function Zn(e,t,n,o){const{user:r}=e;if(t){const n=bt(e.config.queueMax),o=kt(e.queue,t,{max:n});if(o.dropped>0){const t=It(e.status,B("collector"),"queue",o.dropped);Et(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&_t(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=B("destination",a),u=qt(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=Ot();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&&xt(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)},f=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??Fn};let a=0;for(const e of t)a+=kt(n,e,s).dropped;if(a>0){jt(e,r);const t=It(e.status,B("destination",r),"queue",a);Et(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&&_t(n)};i.on&&i.config.init&&!Sn(i)&&!zn(i)&&An(e,i)&&await Ln(e,i,o);const p=Sn(i);if(p&&!zn(i)&&Date.now()-p.since>=Ut(i.config.timeout)&&await Ln(e,i,o),Sn(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[O(t)];return f(e),{id:o,destination:i,queue:e}}let g=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&g.push(O(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:I("unknown");if(!g.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!g.length&&i.queueOn?.length){if(!C(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await to(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(Sn(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};g=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const m=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=C(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=ut(e,B("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),ct(t,h,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),M(e,a),!0});return{allowed:r,skipped:s}},v=e.consent,{allowed:w,skipped:y}=m(g);if(f(y),!w.length)return l(),{id:o,destination:i,queue:g};const b=new Set(i.queuePush);let k=!1;try{k=await to(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(!k)return l(),{id:o,destination:i,queue:g};if(Sn(i))return l(),f(w),{id:o,destination:i,queue:w};const S=[];if(e.consent!==v){const t=m(w.map(t=>({...t,consent:e.consent})));w.splice(0,w.length,...t.allowed),S.push(...t.skipped)}const A=i.queuePush||[],D=A.filter(e=>!b.has(e));if(D.length){i.queuePush=A.filter(e=>b.has(e));const t=m(D.map(t=>({...t,consent:e.consent})));w.push(...t.allowed),S.push(...t.skipped)}if(f(S),!w.length)return l(),S.length?{id:o,destination:i,queue:S}:{id:o,destination:i,skipped:!0};let P,$;i.dlq||(i.dlq=[]);const R=i.config.before,T=i.config.next,W=i.config?.cache,L=W?q(W):void 0,z=L?ft(L,e):void 0,V=pt(i.config?.state),F=V?.filter(e=>"get"===e.mode),H=V?.filter(e=>"set"===e.mode);let U=0,G=0,Q=0;return await Promise.all(w.map(async t=>{let a,c;if(t.user=E(r,t.user),L?.stop&&z){const e=_(h,t),n=await x(L,z,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:h}],d=n.respond;if(void 0!==R){const r=`destination.${o}.before`,i=await Vt(e,s,R,t,h,n.respond,r);if(0===i.copies.length){const n=ut(e,B("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),ct(t,h,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},M(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(L&&!L.stop&&z){const e=_(n,t??void 0),o=await x(L,z,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}F&&F.length>0&&t&&(t=await gt(e,F,t,n));const l=Date.now();let f=!1;const p=await K(no,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...At(n),event:t.name}),P=n,f=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},u=kt(s,[t,n],c);if(u.dropped>0){jt(e,a);const t=It(e.status,B("destination",a),"dlq",u.dropped);Et(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&&_t(s)})(e,i,o,t,n,d);if(U+=Date.now()-l,a&&z&&void 0===i.config.mock&&(u?j(z,a.key,p??!0,a.ttl):void 0===c&&(c=p??!0)),!f&&!Qn(p)&&H&&H.length>0&&t&&(t=await gt(e,H,t,n)),void 0===p||Qn(p)||($=p),Qn(p)&&G++,!f&&T){void 0!==p&&(n._response=p);const r=await Vt(e,s,T,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)&&Q++;return a&&z&&void 0!==c&&void 0===i.config.mock&&j(z,a.key,c,a.ttl),t})),{id:o,destination:i,error:P,response:$,totalDuration:U,batchedCount:G,allowedCount:w.length,pushedCount:Q,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};jt(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?B("destination",t.canonicalId):void 0,l=t=>{i&&d&&xt(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 oo({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}var eo=new WeakMap;async function to(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=eo.get(t);if(r)return r;const s=async function(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:so(t.env,t.config.env),reportError:Mt(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;M(e,ut(e,B("destination",o),"destination","init","",a));try{c=await L(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=ut(e,B("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=dt(t),M(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=pn(e);!function(e){const t=e.queueOn?.find(({type:e})=>sn(e));t&&Mn(e,t.type),jn.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await vn(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])sn(n)&&In(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=jn.get(t);jn.delete(t),n?.held&&Dn(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);eo.set(t,s);try{return await s}finally{eo.delete(t)}}return!0}async function no(e,t,n,o,r,s){const{config:i}=t,a=await W(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:{...so(t.env,i.env),...s?{respond:s}:{}},reportError:Mt(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,p=f?a.mappingKey||"* *":Nn;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=Yn(l?.batch),s=Yn(i.batch),a=r.wait??s.wait??Un,c=r.size??s.size??Hn,d=r.age??s.age??Un,g=so(t.env,i.env),h=A(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const 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:{...g,...a.respond?{respond:a.respond}:{}},reportError:Mt(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=jt(e,d),f=qt(t.config.breaker),h=B("destination",d),m=t=>{f&&xt(e.status.breakers,h,t,f.threshold,f.cooldown)},v=Date.now(),w=new Map;let y,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??100};let s=0;for(const e of n)s+=kt(o,e,r).dropped;if(s>0){const t=It(e.status,B("destination",d),"dlq",s);Et(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&_t(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let S=s.entries.length;const E=Ut(i.timeout),_=await K((o,r)=>Qt(Promise.resolve(L(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{S=0,b=!0,y=e,k(s.entries.map(t=>[t.event,e])),m("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(R(O=_)&&Array.isArray(O.failed)&&_.failed.length>0){const e=[];for(const t of _.failed){const n=s.entries[t.index];if(!n||w.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);w.set(t.index,o),e.push([n.event,o])}if(e.length>0){k(e),S=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:S,entries:s.entries.length,causes:[...t.values()]})}}var O;const q=Date.now();s.entries.forEach((t,o)=>{const r=b||w.has(o),i=ct(t.event,t.ingest,e),a=ut(e,B("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",q,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=q-v,r){const e=b?y:w.get(o);a.error=dt(e)}M(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),S>0&&(l.count+=S,l.lastAt=Date.now(),e.status.out+=S,m("success"))},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),P(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=ct(o,r,e),h=Date.now(),m=ut(e,B("destination",n),"destination","in",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),a.event.consent&&(m.consent={...a.event.consent}),m.inEvent=a.event,M(e,m);const v=ut(e,B("destination",n),"destination","out",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),v.outEvent=a.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},M(e,v);const w=t.config.id||n,y=jt(e,w);return y.inFlightBatch=(y.inFlightBatch??0)+1,c.batchFn(),Gn}{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=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:mt(t,r,1);const s=H(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[T]={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=ct(o,r,e),f=Date.now(),p=ut(e,B("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,M(e,p);try{const o=Ut(i.timeout),r=await Qt(Promise.resolve(L(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=ut(e,B("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,yt(g,s),P(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),M(e,g),u.debug("push done"),r}catch(t){const o=Date.now(),r=ut(e,B("destination",n),"destination","error",c,o,l);throw r.durationMs=o-f,r.error=dt(t),yt(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),M(e,r),t}}}function oo(e){return{ok:!e?.failed,...e}}function ro(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=Dt(e,"before"),{config:a}=Dt({...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=so(t.env,o);return{...t,config:c,env:u}}function so(e,t){return e||t?t?e&&R(e)&&R(t)?{...e,...t}:t:e:{}}async function io(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`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function ao(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function co(e,t,n){let o,r,s=!1;const i=[],a=pn(e);try{return await async function(){switch(t){case at.Config:Re(n)&&(Ae(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case at.Consent:if(Re(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=k(e.consent,n),{update:n}}(e,n);ao(e,at.Consent),r=t,s=!0}break;case at.Custom:Re(n)&&(e.custom=Ae(e.custom,n),ao(e,at.Custom),r=n,s=!0);break;case at.Destination:Re(n)&&"code"in n&&Re(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!$(n.push))return oo({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=D(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(ht(e,B("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Jt(e);const n=e.destinations[l];return n?Jn(e,void 0,{},{[l]:n}):oo({ok:!0})}const f={...n,config:d,env:so(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Ln(e,f,l),Jn(e,void 0,{},{[l]:f})}(e,n));break;case at.Globals:Re(n)&&(e.globals=Ae(e.globals,n),ao(e,at.Globals),r=n,s=!0);break;case at.Hook:if(Re(n)&&$e(n.name)&&Pe(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case at.On:if(Re(n)&&$e(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Zt(e))return void tn();const o=e.on,r=o[t]||[],s=U(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Pn(e,t,s)}(e,t,o)}break;case at.Ready:s=!0;break;case at.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=De(),e.count=0,t&&(t.consent&&(e.consent=Ae(e.consent,t.consent),ao(e,at.Consent)),t.user&&(e.user=Ae(e.user,t.user),ao(e,at.User)),t.globals&&(e.globals=Ae(e.config.globalsStatic||{},t.globals),ao(e,at.Globals)),t.custom&&(e.custom=Ae(e.custom,t.custom),ao(e,at.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Jt(e);const o=await async function(e){if(!Zt(e))return tn(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of on)an(e,t)&&await Kn(e,o,n,t,$n(e,t))};t.push(Vn(n,o,r()))}for(const t of on){if(!an(e,t))continue;const n=$n(e,t);Pn(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>Yt(e)).map(([o,r])=>Rn(e,r,o,t,n)))}return t}(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)}}Xn(o);const i=await Jn(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case at.Session:s=!0;break;case at.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await io(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`)),5e3)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await io(e.destinations,"destination",t),await io(e.transformers,"transformer",t),await io(e.stores,"store",t)}(e));break;case at.User:Re(n)&&(Ae(e.user,n,{shallow:!1}),ao(e,at.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),oo({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!Zt(e))return tn(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=$n(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&&(Yt(o)?i.push(Rn(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(Vn(n,o,Kn(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))Yt(n)&&n.queueOn?.length&&await Nt(e,n,t);const u=Object.values(e.sources).some(e=>!Yt(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Jt(e),Pn(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),Xn(n.deliveries);const s=function(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}(await Jn(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!Sn(n)&&n.queuePush?.length&&e.destinations[t]===n)return Jn(e,void 0,{},{[t]:n})}))).filter(P)}(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||oo({ok:!0})}()}finally{a()}}function uo(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function lo(e,t,n){return po(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function fo(e,t,n){return po(e,uo(e,t),n,{globals:{},user:{},consent:{}})}function po(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new Ce(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new Ce("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new Ce("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=Me(),trigger:v="",entity:w=s,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),_=S.trace??n?._meta.trace??e.trace,O={...S,count:E};void 0!==_&&(O.trace=_);const q=e.name??S.platform??"default",x=e.release??"4.8.0";return O.release={...S.release,[q]:x},{name:c,data:u,context:d,globals:Ae(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:O}}var go="collector.next";function ho(e,t){const n=Xe(async(n,o={})=>await Ye(async()=>{if(!e.allowed){const t=bt(e.config.queueMax),r=kt(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=It(e.status,"collector.preRun","queue",r.dropped);Et(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&_t(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),oo({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??Ve(s||"unknown");if(c){const t=await Ne(p,c,e);if(t.ignore)return oo({ok:!0});if(c.consent){const n=t.event.consent;if(!Ue(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),lt(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),oo({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await Vt(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})`:"")),lt(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),oo({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),oo({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=lo(e,t(n.event),n.ingest);return Jn(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]??oo({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=function(e,t,n){return lo(e,uo(e,t),n)}(e,p,h),v=await Jn(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 v},t=>{if(t instanceof He)throw t;if(t instanceof Qe){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}),oo({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...At(t),event:n.name}),oo({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:Ge()},s="string"==typeof r.id?r.id:"",i=ct(r,o?.ingest,e),a=Date.now(),c=ut(e,"collector.push","collector","in",s,a,i);c.inEvent=r,Fe(e,c);try{const t=await n(r,o),c=Date.now(),u=ut(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,Fe(e,u),t}catch(t){const n=Date.now(),o=ut(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=dt(t),Fe(e,o),t}}}function mo(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,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;return 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()),{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()}}}function vo(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=ut(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},rt(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?ot(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=st(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,it(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),it(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,At(n)):console.warn(o,n)}}function wo(e,t,n){const o=`store.${n}`,r=nt(t.get,"StoreGet",e.hooks,e.logger),s=nt(t.set,"StoreSet",e.hooks,e.logger),i=nt(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=ut(e,o,"store","in","",n);s.meta={op:"get",key:t},tt(e,s);try{const s=await r(t),i=Date.now(),a=ut(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},tt(e,a),s}catch(r){const s=Date.now(),i=ut(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=dt(r),tt(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=ut(e,o,"store","in","",i);a.meta={op:"set",key:t},tt(e,a);try{await s(t,n,r);const a=Date.now(),c=ut(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},tt(e,c)}catch(n){const r=Date.now(),s=ut(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=dt(n),tt(e,s),n}},t.delete=async t=>{const n=Date.now(),r=ut(e,o,"store","in","",n);r.meta={op:"delete",key:t},tt(e,r);try{await i(t);const r=Date.now(),s=ut(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},tt(e,s)}catch(r){const s=Date.now(),i=ut(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=dt(r),tt(e,i),r}}}async function yo(e){const t=Le({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=ze(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};var i,a;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=ho(s,e=>uo(s,e)),s.command=(a=co,Ze(async(e,t,n)=>await et(async()=>await a(i,e,t,n),t=>{if(t instanceof Je)throw t;return i.status.failed++,i.logger.error("command failed",{...At(t),command:e}),oo({ok:!1})})(),"Command",(i=s).hooks,i.logger)),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 oo({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 c=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(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:Mt(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=mo()),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]=vo(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&&wo(e,o,t);return n}(s,c),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)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=mo()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))ht(e,B("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=ro(r);return n}(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=qe(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=Dt(r,"before"),{config:a}=Dt({...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;ht(e,ye("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:fe(o),config:f,env:s,reportError:Mt(e,"transformer",o,p)},h=je(r);for(const t of Ie(r))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await xe(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);void 0!==r.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:r.before}),void 0!==r.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:r.next}),void 0!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(s,e.transformers||{}),s}var bo=globalThis;function ko(e){try{const t=bo.window;if(!t)return;t.localStorage.getItem(Te)===e&&t.localStorage.removeItem(Te)}catch{}}function So(e,t){return void 0===t?e:n=>e({...n,release:t})}async function Eo(e){const t=e??{},n=await yo(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=bo.window,t=bo.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Te);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return bo.window?.localStorage.getItem(Te)??null}catch{return null}}();if(!r)return;const s=Ke(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),ko(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{bo.window?.localStorage.setItem(Te,e)}catch{}}(r),null!==t&&function(){const e=bo.window,t=bo.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(Te);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=We({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(ko(r),i&&e.observers.delete(i))}});i=Be(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(So(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(Be(So(We({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Xt(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 oe(n.init.bind(n),n=>{if(n instanceof J)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...At(n)})})(),o||(n.config.init=!0,Yt(n)&&await Nt(e,n,t))}return await Jt(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var _o=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Eo({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};export{d as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$meta": {
3
3
  "package": "@walkeros/source-demo",
4
- "version": "4.8.0-next-1791496487198",
4
+ "version": "4.8.0",
5
5
  "type": "source",
6
6
  "platform": [
7
7
  "web",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@walkeros/source-demo",
3
3
  "description": "Demo source for walkerOS - generates events from config",
4
- "version": "4.8.0-next-1791496487198",
4
+ "version": "4.8.0",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
@@ -39,10 +39,10 @@
39
39
  "test": "jest"
40
40
  },
41
41
  "dependencies": {
42
- "@walkeros/core": "4.8.0-next-1791496487198"
42
+ "@walkeros/core": "4.8.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@walkeros/collector": "4.8.0-next-1791496487198"
45
+ "@walkeros/collector": "4.8.0"
46
46
  },
47
47
  "repository": {
48
48
  "url": "git+https://github.com/elbwalker/walkerOS.git",