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