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