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