@walkeros/source-demo 4.8.1-next-1792019907609 → 4.8.2
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 +18 -2
- package/README.md +4 -1
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/walkerOS.json +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
# @walkeros/source-demo
|
|
2
2
|
|
|
3
|
-
## 4.8.
|
|
3
|
+
## 4.8.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [2374f54]
|
|
8
|
+
- Updated dependencies [7e5fc27]
|
|
9
|
+
- Updated dependencies [2374f54]
|
|
10
|
+
- Updated dependencies [964590a]
|
|
11
|
+
- Updated dependencies [4100ede]
|
|
12
|
+
- Updated dependencies [2374f54]
|
|
13
|
+
- Updated dependencies [2374f54]
|
|
14
|
+
- Updated dependencies [15eb7b2]
|
|
15
|
+
- Updated dependencies [33a2779]
|
|
16
|
+
- Updated dependencies [33a2779]
|
|
17
|
+
- @walkeros/core@4.8.2
|
|
18
|
+
|
|
19
|
+
## 4.8.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
6
22
|
|
|
7
23
|
- Updated dependencies [1062e99]
|
|
8
|
-
- @walkeros/core@4.8.1
|
|
24
|
+
- @walkeros/core@4.8.1
|
|
9
25
|
|
|
10
26
|
## 4.8.0
|
|
11
27
|
|
package/README.md
CHANGED
|
@@ -28,7 +28,10 @@ npm install @walkeros/source-demo
|
|
|
28
28
|
"default": {
|
|
29
29
|
"config": { "platform": "web" },
|
|
30
30
|
"sources": {
|
|
31
|
-
"demo": {
|
|
31
|
+
"demo": {
|
|
32
|
+
"package": "@walkeros/source-demo",
|
|
33
|
+
"config": { "settings": { "events": [{ "name": "page view" }] } }
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
}
|
package/dist/dev.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},i={};s(i,{examples:()=>g,schemas:()=>a}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={};s(a,{MappingSchema:()=>l,SettingsSchema:()=>d,mapping:()=>p,settings:()=>f});var c=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),d=u.z.object({events:u.z.array(u.z.object({delay:u.z.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")}),l=require("@walkeros/core/dev").z.object({}),f=(0,c.zodToSchema)(d),p=(0,c.zodToSchema)(l),g={};s(g,{createTrigger:()=>an,env:()=>h,step:()=>S});var h={};s(h,{init:()=>y,push:()=>b,simulation:()=>k});var v=async()=>({ok:!0}),m=()=>{},w={error:m,warn:m,info:m,debug:m,throw:e=>{throw"string"==typeof e?new Error(e):e},json:m,scope:()=>w},y=void 0,b={push:v,command:v,elb:v,logger:w},k=["call:elb"],S={};s(S,{delayedEvent:()=>O,pageView:()=>E});var E={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},O={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]},q=require("@walkeros/core"),_=require("@walkeros/core"),I=require("@walkeros/core"),j=require("@walkeros/core"),x=require("@walkeros/core"),C=require("@walkeros/core"),A=require("@walkeros/core"),M=require("@walkeros/core"),D=require("@walkeros/core"),P=require("@walkeros/core"),R=require("@walkeros/core"),$=require("@walkeros/core"),T=require("@walkeros/core"),B=require("@walkeros/core"),K=require("@walkeros/core"),W=require("@walkeros/core"),z=require("@walkeros/core"),L=require("@walkeros/core"),V=require("@walkeros/core"),F=require("@walkeros/core"),H={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function G(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function U(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 Y(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function Q(e,t,n,o){e.status.in++;const r=U(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,j.emitStep)(e,r)}function N(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function X(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?(0,x.compileState)(e):void 0}function J(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,x.applyState)(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function Z(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}function ee(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))return e;const o=t.get(e);if(void 0!==o)return o;if(Array.isArray(e)){const o=[];t.set(e,o);for(const r of e)o.push(ee(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:ee(s,t,n+1);return r}function te(e,t){try{return e[t]}catch{return"[unreadable]"}}function ne(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(te(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 oe(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:ne(e.args),ts:e.ts})))}function re(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function se(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 ie=new WeakMap;function ae(e,t,n,o){ie.get(e)||(ie.set(e,!0),t.warn(n,o))}function ce(e){ie.delete(e)}var ue=()=>Date.now();function de(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function le(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;return"success"===n?(s.consecutiveFailures=0,s.state="closed",s.probing=!1,void(s.openUntil=void 0)):(s.consecutiveFailures+=1,"half-open"===s.state?(s.state="open",s.probing=!1,void(s.openUntil=ue()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ue()+r)))}function fe(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 pe(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 ge(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 he(e,t,n,o,r){const s=(0,D.stepId)(t,n);return(t,i)=>{try{if(i)return r?function(e,t,n,o,r,s){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??100},c=se(i,[o,r],a);if(c.dropped>0){const t=pe(e.status,(0,D.stepId)("destination",n),"dlq",c.dropped);ae(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&ce(i);const u=fe(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=de(t.config.breaker);if(d){const o=t.config.id||n;le(e.status.breakers,(0,D.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...ge(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",ge(t))}catch{}}}function ve(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 me(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:(0,R.createIngest)(n),config:t.config,env:je(t.config.env),reportError:he(e,"transformer",n,r)};r.debug("init");const i=await(0,R.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function we(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:{...je(t.config.env),...s?{respond:s}:{}},reportError:he(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=U(e,(0,R.stepId)("transformer",n),"transformer","in",u,l,d);f.inEvent=o,(0,R.emitStep)(e,f);try{const r=await(0,R.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=U(e,(0,R.stepId)("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,(0,R.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=U(e,(0,R.stepId)("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=Y(t),(0,R.emitStep)(e,r),t}}function ye(e){return"string"==typeof e.id?e.id:""}function be(e,t){const n=ye(e);return""!==n&&""===ye(t)?{...t,id:n}:t}function ke(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=(0,R.clone)(t),i=ye(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=ye(s);return""!==c&&c!==i||(s.id=(0,R.deriveSpanId)(i,o)),{event:s,ingest:r}}function Se(e,t){return{copies:e,respond:t}}function Ee(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 Oe(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,R.tryCatchAsync)(qe,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,ge(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 qe(e,t){const{ingest:n}=t;let{stack:o,event:r,respond:s}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=(0,R.advanceChain)(o,(0,R.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return 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 Oe(e,i.branches.map((e,o)=>({stack:e,...ke(t,t,n,o),respond:void 0})),s)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await _e(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Oe(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function _e(e,t,n,o,r,s){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=r;const p=(e=t.rest)=>({kind:"continue",event:be(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return i.logger.warn(`Transformer not found: ${u}`),p();const h=d.config?.cache,v=h?(0,R.compileCache)(h):void 0,m=v?N(v,i):void 0;let w=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});if(o._meta.hops++,o._meta.path.push(u),!await(0,R.tryCatchAsync)(me,e=>{if(e instanceof R.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...ge(e)}),!1})(i,d,u))return g({copies:[],respond:f});if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(v&&m){const e=await(0,R.checkCache)(v,m,(0,R.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value)return l=e.value,v.stop?g({copies:[{event:be(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await Ie(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const y=X(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?J(i,k,e,o):e;b&&b.length>0&&(l=await J(i,b,l,o));const E=await(0,R.tryCatchAsync)(we,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",ge(e)),!1))(i,d,u,l,o,f);if(!1===E)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(E)&&1!==E.length){if(0===E.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<E.length;r++){const s=E[r],i=await S(s.event||e);n.push({stack:Ee(t,s.next),...ke(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const O=Array.isArray(E)?E[0]:E;let q;return O&&"object"==typeof O&&(O.respond&&(f=O.respond),O.event&&(l=O.event),q=O.next),l=await S(l),w&&m&&(0,R.storeCache)(m,w.key,l,w.ttl),p(Ee(t,q))}async function Ie(e,t,n,o,r,s,i){const a=r??(0,R.createIngest)("string"==typeof n?n:"chain");return void 0===n?Se([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),qe({collector:e,transformers:t,chainContext:i},{stack:(0,R.isChainContinuation)(n)?n:(0,R.startChain)(n),event:o,ingest:a,respond:s}))}function je(e){return e&&(0,R.isObject)(e)?e:{}}var xe=1e4;function Ce(e){return"number"==typeof e&&e>0?e:xe}var Ae=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 Ae(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}async function De(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const r=n||t.config?.id||"unknown";for(const{type:n,data:s}of o){if(Ve(n)&&!Ye(e,t,n))continue;const o=t.on;let i=!1;await(0,P.tryCatchAsync)(()=>Me(Promise.resolve(o(n,s)),xe,`Source "${r}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof P.FatalError)throw t;t instanceof Ae?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...ge(t)})})(),Ve(n)&&!i&&Ue(e,t,n)}}function Pe(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Re(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=X(l);Z(e,(0,P.stepId)("source",t),l);const p=u,g=p?(0,P.compileCache)({...p,stop:p.stop??!0}):void 0,h=d??e.push,v=Boolean(d),m=async(n,o,s)=>{if(v)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,P.getSpanId)()};let d=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Ie(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(0===o.copies.length)return Q(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),Wt({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=N(g,e);if(t){const n=(0,P.createMappingRoot)(s.ingest),o=await(0,P.checkCache)(g,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await(0,P.applyUpdate)(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),s.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&s.respond){const r=s.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{(0,P.storeCache)(t,u,n,d),a?i=(async()=>{const t=await(0,P.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,P.storeCache)(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await J(e,f,t.event,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of d)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:s.respond,mapping:r,preChain:a});return i&&await i,l},w=async n=>{const o=(0,P.createIngest)(t),s=(0,P.parseTraceparent)((0,P.isScope)(n)?n?.headers?.traceparent:void 0);if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!r.ingest||void 0===n)return o;const i=await(0,P.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},y=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:(0,P.createIngest)(t),respond:void 0};return m(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:y},k={collector:e,logger:y,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...b,push:(e,t={})=>m(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:he(e,"source",t,y)},S=await(0,P.tryCatchAsync)(o,n=>{if(n instanceof P.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...ge(n)})})(k);if(!S)return;const E=S.type||"unknown",O=e.logger.scope(E).scope(t);return b.logger=O,i&&(S.config={...S.config,primary:i}),S}async function $e(e){for(const[t,n]of Object.entries(e.sources)){if(Pe(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!He(e,t));r.length!==o.length&&(n.config.require=r,Pe(n)&&await De(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const r=o.filter(t=>!He(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=zt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s,await Ot(e,s,t)}}function Te(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 Be=!1;function Ke(){Be||(Be=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function We(e,t,n,o){if(n instanceof A.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...ge(n)})}var ze=["consent","user","globals","custom"];function Le(e){return ze.includes(e)}function Ve(e){return Le(e)}function Fe(e,t){return Le(t)&&Object.keys(e[t]).length>0}function He(e,t){if(Le(t))return Fe(e,t);switch(t){case H.Run:case H.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Ge(e,t){return e.cellVersion?.[String(t)]??0}function Ue(e,t,n){vt(e,t,n,Ge(e,n))}function Ye(e,t,n){return e.allowed&&Ge(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 Qe=8;function Ne(e){const t=e.cascade;if(t&&!Xe.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,Xe.set(n,(Xe.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(Xe.get(n)||1)-1;t>0?Xe.set(n,t):(Xe.delete(n),e.cascade===n&&(e.cascade=void 0))}}var Xe=new WeakMap;function Je(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<=Qe||(i===Qe+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Ze(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function et(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=Ve(o);if(i&&(tt.get(t)||nt.has(t)))return ft(e,t,o),tt.get(t)||ot.add(t),!1;const a=i?Ge(e,o):0,c=i&&function(e,t,n,o){if(ut.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)?wt(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:Lt(t.env,t.config.env),reportError:he(e,"destination",n,d,t)};i&&(gt(t,o),function(e,t,n){let o=at.get(e);o||(o={},at.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),nt.add(t));const f=Ce(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,v=!0;try{await(0,M.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 Ae&&(h=!0),We(e,"destination",t,{destId:n,type:o})})(),v=!1}finally{if(i){nt.delete(t),v&&ot.delete(t);const r=ut.get(t);g?(vt(e,t,o,a),r?.delete(String(o))):ft(e,t,o),h?function(e,t,n,o,r,s,i){tt.set(t,(tt.get(t)||0)+1);const a=()=>{const s=(tt.get(t)||0)-1;var a,c,u,d;s>0?tt.set(t,s):tt.delete(t),dt(t,o),ct(t,o,r),ht(e,t),i.debug("late settle after timeout"),ot.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,(0,M.tryCatchAsync)(async()=>{await Ot(a,c,u),!st(c)&&c.queuePush?.length&&await Rt(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",ge(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(ct(t,o,a),ht(e,t))}}return i&&!h&&ot.delete(t)&&await Ot(e,t,n),g}var tt=new WeakMap,nt=new WeakSet,ot=new WeakSet,rt=new WeakMap;function st(e){return rt.get(e)}var it=new WeakMap,at=new WeakMap;function ct(e,t,n){const o=at.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var ut=new WeakMap;function dt(e,t){const n=ut.get(e);n?n.add(String(t)):ut.set(e,new Set([String(t)]))}var lt=new WeakMap;function ft(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),dt(t,n),rt.set(t,{type:n,since:Date.now()})}function pt(e,t){return!!ut.get(t)?.size||ze.some(n=>Fe(e,n)&&Ye(e,t,n))}function gt(e,t){it.set(e,(it.get(e)||0)+1),rt.set(e,{type:t,since:Date.now()})}function ht(e,t){const n=(it.get(t)||0)-1;var o,r;n>0?it.set(t,n):it.delete(t),o=e,r=t,rt.has(r)&&(it.get(r)||pt(o,r)||rt.delete(r))}function vt(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 mt(e,t,n,o){if(!Te(e))return void Ke();const r=wt(e,t,o);if(n.length)switch(t){case H.Consent:!function(e,t,n){const o=n||e.consent,r=Ze(e,H.Consent);t.forEach(t=>{Ye(e,t,H.Consent)&&Je(e,t,H.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,M.tryCatch)(t[n],t=>We(e,"consent",t,{key:n}))(o,r)}),Ue(e,t,H.Consent))})}(e,n,o);break;case H.Ready:!function(e,t){if(!e.allowed)return;const n=Ze(e,H.Ready);t.forEach(t=>{(0,M.tryCatch)(t,t=>We(e,"ready",t))(void 0,n)})}(e,n);break;case H.Run:!function(e,t){if(!e.allowed)return;const n=Ze(e,H.Run);t.forEach(t=>{(0,M.tryCatch)(t,t=>We(e,"run",t))(void 0,n)})}(e,n);break;case H.Session:!function(e,t){if(!e.session)return;const n=Ze(e,H.Session);t.forEach(t=>{(0,M.tryCatch)(t,t=>We(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Ze(e,t),s=Ve(t);n.forEach(n=>{"function"==typeof n&&(s&&!Ye(e,n,t)||s&&!Je(e,n,t)||((0,M.tryCatch)(n,n=>We(e,"generic",n,{type:t}))(r,o),s&&Ue(e,n,t)))});break}}}function wt(e,t,n){if(Le(t))return n||e[t];switch(t){case H.Session:return e.session;case H.Config:return n||e.config;default:return}}async function yt(e,t,n,o,r){if(!t.on)return!1;if(Ve(o)&&!Ye(e,t,o))return!1;if(Ve(o)&&!Je(e,t,o))return!1;const s=Ve(o);if(s&&bt.has(t))return kt.add(t),!1;const i=s?Ge(e,o):0;s&&bt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,M.tryCatchAsync)(()=>(u=Promise.resolve(a(o,r)),Me(u,xe,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof Ae&&(d=!0),We(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&bt.delete(t)}if(s)if(d){const o=()=>{bt.delete(t),kt.delete(t),e.allowed&&e.sources[n]===t&&(0,M.tryCatchAsync)(()=>St(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",ge(t))})()};u.then(o,o)}else vt(e,t,o,i),kt.delete(t)&&await St(e,t,n);return!1===c}var bt=new WeakSet,kt=new WeakSet;async function St(e,t,n){const o=Ne(e);try{for(const o of ze)await yt(e,t,n,o,wt(e,o))}finally{o()}}async function Et(e,t,n,o,r){if(!t.on)return;const s=Ve(o);if(s&&!Ye(e,t,o))return;const i=at.get(t)?.[String(o)];if(s&&void 0!==i&&i>=Ge(e,o))return;if(s&&!Je(e,t,o)){if(t.config.init)return void ft(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:wt(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),Ue(e,t,o),void ut.get(t)?.delete(String(o))}const a=lt.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:r}),void(s&&(Ue(e,t,o),a&&!a.held&&(gt(t,o),a.held=!0)));await et(e,t,n,o,r)}async function Ot(e,t,n){if(!t.on)return;const o=Ne(e);try{for(const o of ze)(Fe(e,o)||ut.get(t)?.has(String(o)))&&await Et(e,t,n,o,wt(e,o))}finally{o()}}function qt(e){return(it.get(e)||0)>0}function _t(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var It=1e3,jt=1e3,xt=3e4,Ct=Object.freeze({batched:!0});function At(e){return e===Ct}var Mt=" batch-all";function Dt(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Pt(e){for(const t of e)st(t.destination)&&(t.drain=!0)}async function Rt(e,t,n={},o){if(!e.allowed)return Wt({ok:!1});if(!t)return $t(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??(0,_.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await Ie(e,e.transformers||{},r,t,o,n.respond,Nt),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),Q(e,t,o,{reason:"dropped",by:s.droppedBy,at:Nt}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:Yt(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===r.copies.length)return Wt({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await $t(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function $t(e,t,n,o){const{user:r}=e;if(t){const n=re(e.config.queueMax),o=se(e.queue,t,{max:n});if(o.dropped>0){const t=pe(e.status,(0,I.stepId)("collector"),"queue",o.dropped);ae(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&ce(e.queue);e.status.in++}o||(o=e.destinations);const s=e.transformers||{},i=await Promise.all(Object.entries(o||{}).map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=(0,I.stepId)("destination",a),u=de(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=ue();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&&le(e.status.breakers,c,t,u.threshold,u.cooldown)},l=()=>{u&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,c)},f=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,r=i.config.id||o,s={max:i.config.queueMax??It};let a=0;for(const e of t)a+=se(n,e,s).dropped;if(a>0){fe(e,r);const t=pe(e.status,(0,I.stepId)("destination",r),"queue",a);ae(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&&ce(n)};i.on&&i.config.init&&!st(i)&&!qt(i)&&pt(e,i)&&await Ot(e,i,o);const p=st(i);if(p&&!qt(i)&&Date.now()-p.since>=Ce(i.config.timeout)&&await Ot(e,i,o),st(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[(0,I.clone)(t)];return f(e),{id:o,destination:i,queue:e}}let g=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&g.push((0,I.clone)(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,I.createIngest)("unknown");if(!g.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!g.length&&i.queueOn?.length){if(!(0,I.getGrantedConsent)(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await Bt(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(st(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};g=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const v=t=>{const n=e.consent,r=[],s=t.filter(t=>{const s=(0,I.getGrantedConsent)(i.config.consent,n,t.consent);if(s)return t.consent=s,r.push(t),!1;const a=U(e,(0,I.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),G(t,h,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),(0,I.emitStep)(e,a),!0});return{allowed:r,skipped:s}},m=e.consent,{allowed:w,skipped:y}=v(g);if(f(y),!w.length)return l(),{id:o,destination:i,queue:g};const b=new Set(i.queuePush);let k=!1;try{k=await Bt(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),d("transport-failure")}if(!k)return l(),{id:o,destination:i,queue:g};if(st(i))return l(),f(w),{id:o,destination:i,queue:w};const S=[];if(e.consent!==m){const t=v(w.map(t=>({...t,consent:e.consent})));w.splice(0,w.length,...t.allowed),S.push(...t.skipped)}const E=i.queuePush||[],O=E.filter(e=>!b.has(e));if(O.length){i.queuePush=E.filter(e=>b.has(e));const t=v(O.map(t=>({...t,consent:e.consent})));w.push(...t.allowed),S.push(...t.skipped)}if(f(S),!w.length)return l(),S.length?{id:o,destination:i,queue:S}:{id:o,destination:i,skipped:!0};let q,_;i.dlq||(i.dlq=[]);const j=i.config.before,x=i.config.next,C=i.config?.cache,A=C?(0,I.compileCache)(C):void 0,M=A?N(A,e):void 0,D=X(i.config?.state),P=D?.filter(e=>"get"===e.mode),R=D?.filter(e=>"set"===e.mode);let $=0,T=0,B=0;return await Promise.all(w.map(async t=>{let a,c;if(t.user=(0,I.assign)(r,t.user),A?.stop&&M){const e=(0,I.createMappingRoot)(h,t),n=await(0,I.checkCache)(A,M,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:h}],d=n.respond;if(void 0!==j){const r=`destination.${o}.before`,i=await Ie(e,s,j,t,h,n.respond,r);if(0===i.copies.length){const n=U(e,(0,I.stepId)("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),G(t,h,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:r},(0,I.emitStep)(e,n),t}i.respond&&(d=i.respond),u=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const l=async(t,n,r)=>{let a=r,u=!1;if(A&&!A.stop&&M){const e=(0,I.createMappingRoot)(n,t??void 0),o=await(0,I.checkCache)(A,M,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}P&&P.length>0&&t&&(t=await J(e,P,t,n));const l=Date.now();let f=!1;const p=await(0,I.tryCatchAsync)(Kt,n=>{const r=i.type||"unknown";e.logger.scope(r).error("Push failed",{...ge(n),event:t.name}),q=n,f=!0;const s=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},u=se(s,[t,n],c);if(u.dropped>0){fe(e,a);const t=pe(e.status,(0,I.stepId)("destination",a),"dlq",u.dropped);ae(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&&ce(s)})(e,i,o,t,n,d);if($+=Date.now()-l,a&&M&&void 0===i.config.mock&&(u?(0,I.storeCache)(M,a.key,p??!0,a.ttl):void 0===c&&(c=p??!0)),!f&&!At(p)&&R&&R.length>0&&t&&(t=await J(e,R,t,n)),void 0===p||At(p)||(_=p),At(p)&&T++,!f&&x){void 0!==p&&(n._response=p);const r=await Ie(e,s,x,t,n,d,`destination.${o}.next`);r.respond&&(d=r.respond)}return!0};for(const e of u)await l(e.event,e.ingest,a)&&B++;return a&&M&&void 0!==c&&void 0===i.config.mock&&(0,I.storeCache)(M,a.key,c,a.ttl),t})),{id:o,destination:i,error:q,response:_,totalDuration:$,batchedCount:T,allowedCount:w.length,pushedCount:B,canonicalId:a,breakerConfig:u}})),a={},c={},u={};for(const t of i){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};fe(e,t.id);const r=e.status.destinations[t.id],s=Date.now();r.queuePushSize=n.queuePush?.length??0,r.dlqSize=n.dlq?.length??0;const i=t.breakerConfig,d=t.canonicalId?(0,I.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&d&&le(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 Wt({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}var Tt=new WeakMap;async function Bt(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=Tt.get(t);if(r)return r;const s=async function(e,t,n,o){const r=await async function(e,t,n,o){const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:o,config:t.config,env:Lt(t.env,t.config.env),reportError:he(e,"destination",o,s,t)};s.debug("init");const a=Date.now();let c;(0,I.emitStep)(e,U(e,(0,I.stepId)("destination",o),"destination","init","",a));try{c=await(0,I.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),r=U(e,(0,I.stepId)("destination",o),"destination","error","",n);throw r.durationMs=n-a,r.error=Y(t),(0,I.emitStep)(e,r),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===r)return!1;if(t.config=r,t.queueOn?.length){const n=Ne(e);!function(e){const t=e.queueOn?.find(({type:e})=>Ve(e));t&>(e,t.type),lt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await et(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Ve(n)&&ft(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=lt.get(t);lt.delete(t),n?.held&&ht(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);Tt.set(t,s);try{return await s}finally{Tt.delete(t)}}return!0}async function Kt(e,t,n,o,r,s){const{config:i}=t,a=await(0,I.processEventMapping)(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...Lt(t.env,i.env),...s?{respond:s}:{}},reportError:he(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,f=void 0!==l?.batch,p=f?a.mappingKey||"* *":Mt;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=Dt(l?.batch),s=Dt(i.batch),a=r.wait??s.wait??xt,c=r.size??s.size??jt,d=r.age??s.age??xt,g=Lt(t.env,i.env),h=(0,I.debounce)(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const a=s.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:he(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=fe(e,d),f=de(t.config.breaker),h=(0,I.stepId)("destination",d),v=t=>{f&&le(e.status.breakers,h,t,f.threshold,f.cooldown)},m=Date.now(),w=new Map;let y,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??100};let s=0;for(const e of n)s+=se(o,e,r).dropped;if(s>0){const t=pe(e.status,(0,I.stepId)("destination",d),"dlq",s);ae(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&ce(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let S=s.entries.length;const E=Ce(i.timeout),O=await(0,I.tryCatchAsync)((o,r)=>Me(Promise.resolve((0,I.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{S=0,b=!0,y=e,k(s.entries.map(t=>[t.event,e])),v("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if((0,I.isObject)(q=O)&&Array.isArray(q.failed)&&O.failed.length>0){const e=[];for(const t of O.failed){const n=s.entries[t.index];if(!n||w.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);w.set(t.index,o),e.push([n.event,o])}if(e.length>0){k(e),S=Math.max(0,s.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}u.error("Push batch partial failure",{failed:e.length,delivered:S,entries:s.entries.length,causes:[...t.values()]})}}var q;const _=Date.now();s.entries.forEach((t,o)=>{const r=b||w.has(o),i=G(t.event,t.ingest,e),a=U(e,(0,I.stepId)("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",_,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=_-m,r){const e=b?y:w.get(o);a.error=Y(e)}(0,I.emitStep)(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),S>0&&(l.count+=S,l.lastAt=Date.now(),e.status.out+=S,v("success"))},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,I.isDefined)(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=G(o,r,e),h=Date.now(),v=U(e,(0,I.stepId)("destination",n),"destination","in",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),a.event.consent&&(v.consent={...a.event.consent}),v.inEvent=a.event,(0,I.emitStep)(e,v);const m=U(e,(0,I.stepId)("destination",n),"destination","out",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),m.outEvent=a.event,m.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,I.emitStep)(e,m);const w=t.config.id||n,y=fe(e,w);return y.inFlightBatch=(y.inFlightBatch??0)+1,c.batchFn(),Ct}{let s;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:ee(t,r,1);const s=(0,C.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[I.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=G(o,r,e),f=Date.now(),p=U(e,(0,I.stepId)("destination",n),"destination","in",c,f,l);a.mappingKey&&(p.mappingKey=a.mappingKey),a.event.consent&&(p.consent={...a.event.consent}),p.inEvent=a.event,(0,I.emitStep)(e,p);try{const o=Ce(i.timeout),r=await Me(Promise.resolve((0,I.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=U(e,(0,I.stepId)("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,oe(g,s),(0,I.isDefined)(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),(0,I.emitStep)(e,g),u.debug("push done"),r}catch(t){const o=Date.now(),r=U(e,(0,I.stepId)("destination",n),"destination","error",c,o,l);throw r.durationMs=o-f,r.error=Y(t),oe(r,s),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,I.emitStep)(e,r),t}}}function Wt(e){return{ok:!e?.failed,...e}}function zt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=ve(e,"before"),{config:a}=ve({...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=Lt(t.env,o);return{...t,config:c,env:u}}function Lt(e,t){return e||t?t?e&&(0,I.isObject)(e)&&(0,I.isObject)(t)?{...e,...t}:t:e:{}}async function Vt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",i=n.scope(s),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([r(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function Ft(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Ht(e,t,n){let o,r,s=!1;const i=[],a=Ne(e);try{return await async function(){switch(t){case H.Config:(0,T.isObject)(n)&&((0,$.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case H.Consent:if((0,T.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,q.assign)(e.consent,n),{update:n}}(e,n);Ft(e,H.Consent),r=t,s=!0}break;case H.Custom:(0,T.isObject)(n)&&(e.custom=(0,$.assign)(e.custom,n),Ft(e,H.Custom),r=n,s=!0);break;case H.Destination:(0,T.isObject)(n)&&"code"in n&&(0,T.isObject)(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,I.isFunction)(n.push))return Wt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=(0,I.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(Z(e,(0,I.stepId)("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await $e(e);const n=e.destinations[l];return n?Rt(e,void 0,{},{[l]:n}):Wt({ok:!0})}const f={...n,config:d,env:Lt(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await Ot(e,f,l),Rt(e,void 0,{},{[l]:f})}(e,n));break;case H.Globals:(0,T.isObject)(n)&&(e.globals=(0,$.assign)(e.globals,n),Ft(e,H.Globals),r=n,s=!0);break;case H.Hook:if((0,T.isObject)(n)&&(0,$.isString)(n.name)&&(0,$.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case H.On:if((0,T.isObject)(n)&&(0,$.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Te(e))return void Ke();const o=e.on,r=o[t]||[],s=(0,A.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,mt(e,t,s)}(e,t,o)}break;case H.Ready:s=!0;break;case H.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,$.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,$.assign)(e.consent,t.consent),Ft(e,H.Consent)),t.user&&(e.user=(0,$.assign)(e.user,t.user),Ft(e,H.User)),t.globals&&(e.globals=(0,$.assign)(e.config.globalsStatic||{},t.globals),Ft(e,H.Globals)),t.custom&&(e.custom=(0,$.assign)(e.custom,t.custom),Ft(e,H.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await $e(e);const o=await async function(e){if(!Te(e))return Ke(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of ze)Fe(e,t)&&await Et(e,o,n,t,wt(e,t))};t.push(_t(n,o,r()))}for(const t of ze){if(!Fe(e,t))continue;const n=wt(e,t);mt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>Pe(e)).map(([o,r])=>yt(e,r,o,t,n)))}return t}(e);let r=!0;const s={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(s,t.failed)}}Pt(o);const i=await Rt(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case H.Session:s=!0;break;case H.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Vt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const r=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Vt(e.destinations,"destination",t),await Vt(e.transformers,"transformer",t),await Vt(e.stores,"store",t)}(e));break;case H.User:(0,T.isObject)(n)&&((0,$.assign)(e.user,n,{shallow:!1}),Ft(e,H.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Wt({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!Te(e))return Ke(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=wt(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&&(Pe(o)?i.push(yt(e,o,n,t,s)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(_t(n,o,Et(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))Pe(n)&&n.queueOn?.length&&await De(e,n,t);const u=Object.values(e.sources).some(e=>!Pe(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await $e(e),mt(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),Pt(n.deliveries);const s=function(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},r={...e.failed??{}};for(const e of t){for(const[t,r]of Object.entries(e.done??{}))n[t]=r,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))r[t]=n,delete o[t];Object.assign(o,e.queued??{})}const s={...e,ok:e.ok&&t.every(e=>e.ok)};return delete s.done,delete s.queued,delete s.failed,Object.keys(n).length&&(s.done=n),Object.keys(o).length&&(s.queued=o),Object.keys(r).length&&(s.failed=r),s}(await Rt(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!st(n)&&n.queuePush?.length&&e.destinations[t]===n)return Rt(e,void 0,{},{[t]:n})}))).filter(I.isDefined)}(e,i));if(o&&!1===o.ok){const e={...s.failed??{},...o.failed??{}};o={...s,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=s}return o||Wt({ok:!0})}()}finally{a()}}function Gt(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 Yt(e,t,n){return Qt(e,Gt(e,t),n,{globals:{},user:{},consent:{}})}function Qt(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new $.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new $.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new $.InvalidEventError("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${s} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:v=(0,$.getSpanId)(),trigger:m="",entity:w=s,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),O=S.trace??n?._meta.trace??e.trace,q={...S,count:E};void 0!==O&&(q.trace=O);const _=e.name??S.platform??"default",I=e.release??"4.8.1-next-1792019907609";return q.release={...S.release,[_]:I},{name:c,data:u,context:d,globals:(0,$.assign)(o.globals,l),custom:f,user:p,nested:g,consent:h,id:v,trigger:m,entity:w,action:y,timestamp:a,timing:b,source:q}}var Nt="collector.next";function Xt(e,t){const n=(0,W.useHooks)(async(n,o={})=>await(0,W.tryCatchAsync)(async()=>{if(!e.allowed){const t=re(e.config.queueMax),r=se(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=pe(e.status,"collector.preRun","queue",r.dropped);ae(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&ce(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Wt({ok:!0})}const r=Date.now(),{id:s,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f=a,p=n;const g=d||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,l):void 0;let h=i??(0,W.createIngest)(s||"unknown");if(c){const t=await(0,W.processEventMapping)(p,c,e);if(t.ignore)return Wt({ok:!0});if(c.consent){const n=t.event.consent;if(!(0,W.getGrantedConsent)(c.consent,e.consent,n)){const o=s?`source.${s}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),Q(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),Wt({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await Ie(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})`:"")),Q(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),Wt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),Wt({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 Rt(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]??Wt({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const v=function(e,t,n){return Ut(e,Gt(e,t),n)}(e,p,h),m=await Rt(e,v,{id:s,ingest:h,respond:f},g);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return m},t=>{if(t instanceof W.FatalError)throw t;if(t instanceof W.InvalidEventError){const n=o.id;if(n){e.status.sources[n]||(e.status.sources[n]={count:0,duration:0});const t=e.status.sources[n];t.rejected=(t.rejected??0)+1}return e.logger.warn("invalid event rejected",{error:t.message}),Wt({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...ge(t),event:n.name}),Wt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,W.getSpanId)()},s="string"==typeof r.id?r.id:"",i=G(r,o?.ingest,e),a=Date.now(),c=U(e,"collector.push","collector","in",s,a,i);c.inEvent=r,(0,W.emitStep)(e,c);try{const t=await n(r,o),c=Date.now(),u=U(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,(0,W.emitStep)(e,u),t}catch(t){const n=Date.now(),o=U(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=Y(t),(0,W.emitStep)(e,o),t}}}function Jt(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;return o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref()),{type:"memory",config:{},get(e){const t=s.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(s.delete(e),i.evictions_ttl++,void i.misses++):(s.delete(e),s.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!s.has(e);a||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,s.size>t&&function(){if(s.size<=t)return;const e=s.size-r;let n=0;for(const t of s.keys()){if(n>=e)break;s.delete(t),n++}i.evictions_entries+=n}()},delete(e){s.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),s.clear()}}}function Zt(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=U(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,F.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,F.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,F.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,F.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,F.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,ge(n)):console.warn(o,n)}}function en(e,t,n){const o=`store.${n}`,r=(0,V.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,V.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,V.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=U(e,o,"store","in","",n);s.meta={op:"get",key:t},(0,V.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=U(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},(0,V.emitStep)(e,a),s}catch(r){const s=Date.now(),i=U(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=Y(r),(0,V.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=U(e,o,"store","in","",i);a.meta={op:"set",key:t},(0,V.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=U(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},(0,V.emitStep)(e,c)}catch(n){const r=Date.now(),s=U(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=Y(n),(0,V.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=U(e,o,"store","in","",n);r.meta={op:"delete",key:t},(0,V.emitStep)(e,r);try{await i(t);const r=Date.now(),s=U(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},(0,V.emitStep)(e,s)}catch(r){const s=Date.now(),i=U(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=Y(r),(0,V.emitStep)(e,i),r}}}async function tn(e){const t=(0,K.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,K.createLogger)(n),r={...t.globalsStatic,...e.globals},s={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:r,hooks:e.hooks||{},observers:new Set,logger:o,on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};var i,a;void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),void 0!==e.next&&(t.next=e.next),s.push=Xt(s,e=>Gt(s,e)),s.command=(i=s,a=Ht,(0,z.useHooks)(async(e,t,n)=>await(0,z.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof z.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...ge(t),command:e}),Wt({ok:!1})})(),"Command",i.hooks,i.logger)),s.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error("elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })",{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,r,...s)=>{if("string"==typeof t&&t.startsWith("walker ")){o(s)&&n(t);const i=t.replace("walker ","");return e.command(i,r)}let i;if("string"==typeof t)i={name:t},(0,L.isObject)(r)?i.data=r:void 0!==r&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return Wt({ok:!1});i={...t},void 0!==r&&n(String(i.name))}return o(s)&&n(String(i.name)),e.push(i)}}(s);const c=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i,reportError:he(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=Jt()),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]=Zt(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&&en(e,o,t);return n}(s,c),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.warn("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=Jt()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))Z(e,(0,I.stepId)("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:n[o]=zt(r);return n}(s,e.destinations||{}),s.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=(0,R.validateStepEntry)(r,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=ve(r,"before"),{config:a}=ve({...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;Z(e,(0,R.stepId)("transformer",o),l);const f=void 0!==l&&void 0===d.state?{...d,state:l}:d,p=e.logger.scope("transformer").scope(o),g={collector:e,logger:p,id:o,ingest:(0,R.createIngest)(o),config:f,env:s,reportError:he(e,"transformer",o,p)},h=(0,R.getTransformerMapping)(r);for(const t of(0,R.getTransformerMappingWarnings)(r))e.logger.warn(`Transformer ${o}: ${t}`);const v=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await(0,R.processEventMapping)(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),m=await v(g);void 0!==r.before&&void 0===m.config?.before&&(m.config={...m.config??{},before:r.before}),void 0!==r.next&&void 0===m.config?.next&&(m.config={...m.config??{},next:r.next}),void 0!==l&&void 0===m.config?.state&&(m.config={...m.config??{},state:l}),n[o]=m}return n}(s,e.transformers||{}),s}var nn=globalThis;function on(e){try{const t=nn.window;if(!t)return;t.localStorage.getItem(B.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(B.OBSERVE_STORAGE_KEY)}catch{}}function rn(e,t){return void 0===t?e:n=>e({...n,release:t})}async function sn(e){const t=e??{},n=await tn(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=nn.window,t=nn.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(B.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return nn.window?.localStorage.getItem(B.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,B.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),on(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{nn.window?.localStorage.setItem(B.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=nn.window,t=nn.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),r=o>=0?n.slice(o):"",s=o>=0?n.slice(0,o):n,i=s.indexOf("?"),a=i>=0?s.slice(0,i):s,c=new t(i>=0?s.slice(i+1):"");c.delete(B.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,B.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(on(r),i&&e.observers.delete(i))}});i=(0,B.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(rn(a,e.release),n.flowId),{flowId:n.flowId??o,...void 0!==n.level?{level:n.level}:{},...void 0!==n.sample?{sample:n.sample}:{}}),e.observers.add(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add((0,B.createTelemetryObserver)(rn((0,B.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Re(e,o,r);if(!t)continue;const s=r.config?.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await(0,P.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof P.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...ge(n)})})(),o||(n.config.init=!0,Pe(n)&&await De(e,n,t))}return await $e(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var an=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await sn({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};//# sourceMappingURL=dev.js.map
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},i={};s(i,{examples:()=>g,schemas:()=>a}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={};s(a,{MappingSchema:()=>l,SettingsSchema:()=>d,mapping:()=>p,settings:()=>f});var c=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),d=u.z.object({events:u.z.array(u.z.object({delay:u.z.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")}),l=require("@walkeros/core/dev").z.object({}),f=(0,c.zodToSchema)(d),p=(0,c.zodToSchema)(l),g={};s(g,{createTrigger:()=>Vn,env:()=>h,step:()=>S});var h={};s(h,{init:()=>w,push:()=>b,simulation:()=>k});var v=async()=>({ok:!0}),m=()=>{},y={error:m,warn:m,info:m,debug:m,throw:e=>{throw"string"==typeof e?new Error(e):e},json:m,scope:()=>y},w=void 0,b={push:v,command:v,elb:v,logger:y},k=["call:elb"],S={};s(S,{delayedEvent:()=>_,pageView:()=>E});var E={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},_={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]},O=require("@walkeros/core"),q=require("@walkeros/core"),I=require("@walkeros/core"),A=require("@walkeros/core"),j=require("@walkeros/core"),$=require("@walkeros/core"),D=require("@walkeros/core"),M=require("@walkeros/core"),x=require("@walkeros/core"),C=require("@walkeros/core"),P=require("@walkeros/core"),T=require("@walkeros/core"),R=require("@walkeros/core"),W=require("@walkeros/core"),L=require("@walkeros/core"),K=require("@walkeros/core"),B=require("@walkeros/core"),F=require("@walkeros/core"),z=require("@walkeros/core"),V=require("@walkeros/core"),H=require("@walkeros/core"),U=require("@walkeros/core"),N=require("@walkeros/core"),G=require("@walkeros/core"),Q=require("@walkeros/core"),Y=require("@walkeros/core"),X={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Flush:"flush",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function J(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function Z(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 ee(e,t="transport"){const n=e instanceof Error?e.message:String(e),o=(0,A.toFailureReason)(e instanceof A.StepError?e:new A.StepError(n,{code:t}));return{...e instanceof Error?{name:e.name,message:n}:{message:n},code:o.code,retryable:o.retryable,...void 0!==o.status?{status:o.status}:{}}}function te(e,t,n,o,r,s){const i=Z(e,(0,A.stepId)("destination",t),"destination",n,o&&"string"==typeof o.id?o.id:"",Date.now(),o?J(o,r,e):void 0);s?.(i),(0,A.emitStep)(e,i)}function ne(e,t,n,o){e.status.in++;const r=Z(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),J(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):"ignored"===o.reason?r.meta={at:o.at}:r.meta={by:o.by??"route",at:o.at},(0,A.emitStep)(e,r)}function oe(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function re(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const r=[];for(;e.length>=n.max;)r.push(e.shift());return e.push(t),r.length>0&&o&&o(r),{appended:!0,dropped:r.length}}var se=new WeakMap;function ie(e,t,n,o,r){se.get(e)||(se.set(e,!0),t[n](o,r))}function ae(e){se.delete(e)}function ce(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 ue(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 de(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 le(e,t,n,o,r){const s=(0,$.stepId)(t,n);return(t,i)=>{try{if(i){if(r)ke(e,r,n,[i],t,{message:"report error"});else{e.status.failed++;const n=(0,$.toFailureReason)(t);(0,$.reportCause)(e,o,{step:s,code:n.code,status:n.status},"report error",{event:i.name,retryable:n.retryable,error:n.message})}return}e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.warn("connection error",de(t))}catch{}}}var fe=5,pe=3e4,ge=()=>Date.now();function he(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:pe}:{threshold:e.threshold??fe,cooldown:e.cooldown??pe}}function ve(e,t,n,o){const r=he(t.config.breaker);r&&function(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;"success"===n?(s.consecutiveFailures=0,s.state="closed",s.probing=!1,s.openUntil=void 0):(s.consecutiveFailures+=1,("half-open"===s.state||s.consecutiveFailures>=o)&&(s.state="open",s.probing=!1,s.openUntil=ge()+r))}(e.status.breakers,(0,D.stepId)("destination",t.config.id||n),o,r.threshold,r.cooldown)}var me=["breaker-open","blocked","queue-full","not-ready","mapping"];function ye(e){return e.retryable&&!me.includes(e.code)}function we(e){return!1===e}function be(){return new j.StepError("init returned false: throw a StepError that names the missing setting",{code:"not-ready"})}function ke(e,t,n,o,r,s={}){const i=(0,j.toFailureReason)(r),a=(0,j.stepId)("destination",n),c=ce(e,n),u=Date.now();if(o.length){c.failed+=o.length,c.lastAt=u,e.status.failed+=o.length;const n=t.dlq=t.dlq||[],s=t.config.dlqMax??100;let i=0;for(const e of o)i+=re(n,[e,r],{max:s}).dropped;if(i>0){const n=ue(e.status,a,"dlq",i);(0,j.reportCause)(e,e.logger,{step:a,code:"dlq-overflow"},`destination.dlq full (dlqMax ${s}): oldest failed entries dropped`,{type:t.type,count:n})}else n.length<s&&ae(n);c.dlqSize=n.length}if(!1!==s.breaker&&ye(i)&&ve(e,t,n,"transport-failure"),!s.observed)for(const t of o)te(e,n,"error",t,void 0,e=>{e.error=ee(r)});return!1===s.report||(0,j.reportCause)(e,e.logger,{step:a,code:i.code,status:i.status},s.message??"Push failed",{type:t.type,event:o[0]?.name,retryable:i.retryable,error:i.message,...o.length>1?{count:o.length}:{}}),i}function Se(e,t,n,o,r){const s=ce(e,n);s.skipped=(s.skipped??0)+1,e.logger.scope(t.type||"unknown").debug("event skipped",{reason:r,event:o.name})}function Ee(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function _e(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?(0,R.compileState)(e):void 0}function Oe(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?(0,R.applyState)(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function qe(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.error(`state: not in this build, ${t} state ignored`)}var Ie=class extends W.StepError{constructor(e){super(e,{code:"timeout"}),this.name="DestinationTimeoutError"}};function Ae(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Ie(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}function je(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function $e(e,t,n,o){const r=(0,L.resolveDestinationTimeout)(e.config.timeout);return Ae(Promise.resolve(o),r,`Transformer "${t}" ${n} timed out after ${r}ms`)}async function De(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,T.createIngest)(n),config:t.config,env:Ue(t.config.env),reportError:le(e,"transformer",n,r)};r.debug("init");const i=await $e(t,n,"init",(0,T.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s));if(we(i))return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function Me(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...Ue(t.config.env),...s?{respond:s}:{}},reportError:le(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=J(o,r,e),l=Date.now(),f=Z(e,(0,T.stepId)("transformer",n),"transformer","in",u,l,d);f.inEvent=o,(0,T.emitStep)(e,f);try{const r=await $e(t,n,"push",(0,T.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c)),s=Date.now(),i=Z(e,(0,T.stepId)("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,(0,T.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=Z(e,(0,T.stepId)("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=ee(t,"transformer"),(0,T.emitStep)(e,r),t}}var xe=new WeakMap;function Ce(e,t,n){let o=xe.get(e);o||(o=new Set,xe.set(e,o)),o.has(t)||(o.add(t),e.logger.error(`Transformer not found: ${t} (named in ${n}); the chain goes on without it`))}function Pe(e,t,n){if(void 0===n)return;const o=e.transformers||{},r=(0,T.tryCatch)(T.getRouteGraph,()=>[])(n,o);for(const n of r)for(const r of n.targets)o[r]||Ce(e,r,t)}function Te(e,t,n,o,r){const s=(0,T.toFailureReason)((i=o)instanceof j.StepError?i:new j.StepError(i instanceof Error?i.message:String(i),{code:"transformer",cause:i}));var i;return e.status.failed++,(0,T.reportCause)(e,e.logger,{step:(0,T.stepId)("transformer",t),code:s.code,status:s.status},r,{type:n,retryable:s.retryable,error:s.message}),{by:t,reason:s}}function Re(e){return"string"==typeof e.id?e.id:""}function We(e,t){const n=Re(e);return""!==n&&""===Re(t)?{...t,id:n}:t}function Le(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=(0,T.clone)(t),i=Re(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=Re(s);return""!==c&&c!==i||(s.id=(0,T.deriveSpanId)(i,o)),{event:s,ingest:r}}function Ke(e,t){return{copies:e,respond:t}}function Be(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 Fe(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,T.tryCatchAsync)(ze,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,de(t)),{copies:[]}))(e,t))),r=[];let s,i,a=n,c=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(a=e.respond),e.stopped||(c=!1),!i&&e.failure&&(i=e.failure),e.stopped||0===e.copies.length?void 0===s&&(s=e.droppedBy):r.push(...e.copies)}),0===r.length?{copies:r,respond:a,...c?{stopped:!0}:{},...void 0!==s?{droppedBy:s}:{},...i?{failure:i}:{}}:{...Ke(r,a),...i?{failure:i}:{}}}async function ze(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,T.advanceChain)(o,(0,T.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return Ke([{event:r,ingest:n}],s);if("stop"===i.kind)return{copies:[],respond:s,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=r;return Fe(e,i.branches.map((e,o)=>({stack:e,...Le(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 Ve(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Fe(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function Ve(e,t,n,o,r,s){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=r;const p=(e=t.rest)=>({kind:"continue",event:We(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return Ce(i,u,c??"a chain"),p();const h=d.config?.cache,v=h?(0,T.compileCache)(h):void 0,m=v?Ee(v,i):void 0;let y=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});let e;if(o._meta.hops++,o._meta.path.push(u),!await(0,T.tryCatchAsync)(De,t=>{if(t instanceof T.FatalError)throw t;return e=t,!1})(i,d,u)){const t=e??be();return g({copies:[],respond:f,failure:Te(i,u,d.type,t,"transformer init failed")})}if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(v&&m){const e=await(0,T.checkCache)(v,m,(0,T.createMappingRoot)(o,l),void 0,i);if("HIT"===e?.status&&e.value)return l=e.value,v.stop?g({copies:[{event:We(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(y={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await He(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:y};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const w=_e(d.config?.state),b=w?.filter(e=>"get"===e.mode),k=w?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?Oe(i,k,e,o):e;let E;b&&b.length>0&&(l=await Oe(i,b,l,o));const _=await(0,T.tryCatchAsync)(Me,e=>{E=Te(i,u,d.type,e,"Push failed")})(i,d,u,l,o,f);if(E)return g({copies:[],respond:f,failure:E});if(!1===_)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(_)&&1!==_.length){if(0===_.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<_.length;r++){const s=_[r],i=await S(s.event||e);n.push({stack:Be(t,s.next),...Le(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const O=Array.isArray(_)?_[0]:_;let q;return O&&"object"==typeof O&&(O.respond&&(f=O.respond),O.event&&(l=O.event),q=O.next),l=await S(l),y&&m&&(0,T.storeCache)(m,y.key,l,y.ttl),p(Be(t,q))}async function He(e,t,n,o,r,s,i){const a=r??(0,T.createIngest)("string"==typeof n?n:"chain");return void 0===n?Ke([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),ze({collector:e,transformers:t,chainContext:i},{stack:(0,T.isChainContinuation)(n)?n:(0,T.startChain)(n),event:o,ingest:a,respond:s}))}function Ue(e){return e&&(0,T.isObject)(e)?e:{}}async function Ne(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(ot(n)&&!ct(e,t,n))continue;const o=t.on;let i=!1;await(0,P.tryCatchAsync)(()=>Ae(Promise.resolve(o(n,s)),L.DEFAULT_DESTINATION_TIMEOUT_MS,`Source "${r}" on(${n}) did not settle within ${L.DEFAULT_DESTINATION_TIMEOUT_MS}ms`),t=>{if(t instanceof P.FatalError)throw t;t instanceof Ie?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...de(t)})})(),ot(n)&&!i&&at(e,t,n)}}function Ge(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Qe(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:u,terminus:d}=n;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const n=(0,P.getMappingNoOpPaths)("source",r,"config");n.length&&e.logger.scope("source").error(`Source ${t}: ${(0,P.getMappingNoOpMessage)("source",n)}`),Pe(e,`source.${t}.before`,c),Pe(e,`source.${t}.next`,a)}const l=r.state??n.state,f=_e(l);qe(e,(0,P.stepId)("source",t),l);const p=u,g=p?(0,P.compileCache)({...p,stop:p.stop??!0}):void 0,h=d??e.push,v=Boolean(d),m=async(n,o,s)=>{if(v)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,P.getSpanId)()};let d,l=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await He(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(o.failure&&(d=cn(o.failure),0===o.copies.length))return d;if(0===o.copies.length)return ne(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),En({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),l=o.copies}if(g){const t=Ee(g,e);if(t){const n=(0,P.createMappingRoot)(s.ingest),o=await(0,P.checkCache)(g,t,n,void 0,e);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await(0,P.applyUpdate)(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),s.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&s.respond){const r=s.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{(0,P.storeCache)(t,u,n,d),a?i=(async()=>{const t=await(0,P.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,P.storeCache)(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(l=await Promise.all(l.map(async t=>({event:await Oe(e,f,t.event,t.ingest),ingest:t.ingest}))));const p=[];for(const e of l)p.push(await h(e.event,{...o,id:t,ingest:e.ingest,respond:s.respond,mapping:r,preChain:a}));const[m,...y]=p,w=an(m??En({ok:!0}),d?[...y,d]:y);return i&&await i,w},y=async n=>{const o=(0,P.createIngest)(t),s=(0,P.parseTraceparent)((0,P.isScope)(n)?n?.headers?.traceparent:void 0);if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!r.ingest||void 0===n)return o;const i=await(0,P.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},w=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:(0,P.createIngest)(t),respond:void 0};return m(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:w},k={collector:e,logger:w,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await y(e),respond:t};return n({...b,push:(e,t={})=>m(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:le(e,"source",t,w)},S=await(0,P.tryCatchAsync)(o,n=>{if(n instanceof P.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...de(n)})})(k);if(!S)return;const E=S.type||"unknown",_=e.logger.scope(E).scope(t);return b.logger=_,i&&(S.config={...S.config,primary:i}),S}async function Ye(e){for(const[t,n]of Object.entries(e.sources)){if(Ge(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!st(e,t));r.length!==o.length&&(n.config.require=r,Ge(n)&&await Ne(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=>!st(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=_n(n);On(e,t,s,!0),!1!==s.config.queue&&(s.queuePush=e.queue.map(e=>({event:e}))),e.destinations[t]=s,await Lt(e,s,t)}}function Xe(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 Je=!1;function Ze(){Je||(Je=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function et(e,t,n,o){if(n instanceof x.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...de(n)})}var tt=["consent","user","globals","custom"];function nt(e){return tt.includes(e)}function ot(e){return nt(e)}function rt(e,t){return nt(t)&&Object.keys(e[t]).length>0}function st(e,t){if(nt(t))return rt(e,t);switch(t){case X.Run:case X.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function it(e,t){return e.cellVersion?.[String(t)]??0}function at(e,t,n){Dt(e,t,n,it(e,n))}function ct(e,t,n){return e.allowed&&it(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 ut=8;function dt(e){const t=e.cascade;if(t&&!lt.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,lt.set(n,(lt.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(lt.get(n)||1)-1;t>0?lt.set(n,t):(lt.delete(n),e.cascade===n&&(e.cascade=void 0))}}var lt=new WeakMap;function ft(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<=ut||(i===ut+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function pt(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function gt(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=ot(o);if(i&&(ht.get(t)||vt.has(t)))return It(e,t,o,!1),ht.get(t)||mt.add(t),!1;const a=i?it(e,o):0,c=i&&function(e,t,n,o){if(_t.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)?xt(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:qn(t.env,t.config.env),reportError:le(e,"destination",n,d,t)};i&&(jt(t,o),function(e,t,n){let o=St.get(e);o||(o={},St.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),vt.add(t));const f=(0,L.resolveDestinationTimeout)(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,v=!0;try{await(0,C.tryCatchAsync)(()=>(p=Promise.resolve(s(o,l)),Ae(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),r=>{if(g=!1,r instanceof Ie&&(h=!0),"consent"===o){if(r instanceof x.FatalError)throw r;(0,x.reportCause)(e,e.logger,{step:(0,x.stepId)("destination",n),code:"consent-not-applied"},"consent not applied: the destination on(consent) handler failed; its events are held until a retry succeeds",{type:t.type,...de(r)})}else et(e,"destination",r,{destId:n,type:o})})(),v=!1}finally{if(i){vt.delete(t),v&&mt.delete(t);const r=_t.get(t);g?(Dt(e,t,o,a),r?.delete(String(o))):It(e,t,o),h?function(e,t,n,o,r,s,i){ht.set(t,(ht.get(t)||0)+1);const a=()=>{const s=(ht.get(t)||0)-1;var a,c,u,d;s>0?ht.set(t,s):ht.delete(t),Ot(t,o),Et(t,o,r),$t(e,t),i.debug("late settle after timeout"),mt.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,(0,C.tryCatchAsync)(async()=>{await Lt(a,c,u),!bt(c)&&c.queuePush?.length&&await un(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",de(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(Et(t,o,a),$t(e,t))}}return i&&!h&&mt.delete(t)&&await Lt(e,t,n),g}var ht=new WeakMap,vt=new WeakSet,mt=new WeakSet;function yt(e,t,n){const o=Date.now(),r=wt.get(e)?.failedAt;wt.set(e,{type:t,since:o,...void 0!==r||n?{failedAt:r??o}:{}})}var wt=new WeakMap;function bt(e){return wt.get(e)}var kt=new WeakMap,St=new WeakMap;function Et(e,t,n){const o=St.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var _t=new WeakMap;function Ot(e,t){const n=_t.get(e);n?n.add(String(t)):_t.set(e,new Set([String(t)]))}var qt=new WeakMap;function It(e,t,n,o=!0){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),Ot(t,n),yt(t,n,o)}function At(e,t){return!!_t.get(t)?.size||tt.some(n=>rt(e,n)&&ct(e,t,n))}function jt(e,t){kt.set(e,(kt.get(e)||0)+1),yt(e,t,!1)}function $t(e,t){const n=(kt.get(t)||0)-1;var o,r;n>0?kt.set(t,n):kt.delete(t),o=e,r=t,wt.has(r)&&(kt.get(r)||At(o,r)||wt.delete(r))}function Dt(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 Mt(e,t,n,o){if(!Xe(e))return void Ze();const r=xt(e,t,o);if(n.length)switch(t){case X.Consent:!function(e,t,n){const o=n||e.consent,r=pt(e,X.Consent);t.forEach(t=>{ct(e,t,X.Consent)&&ft(e,t,X.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,C.tryCatch)(t[n],t=>et(e,"consent",t,{key:n}))(o,r)}),at(e,t,X.Consent))})}(e,n,o);break;case X.Ready:!function(e,t){if(!e.allowed)return;const n=pt(e,X.Ready);t.forEach(t=>{(0,C.tryCatch)(t,t=>et(e,"ready",t))(void 0,n)})}(e,n);break;case X.Run:!function(e,t){if(!e.allowed)return;const n=pt(e,X.Run);t.forEach(t=>{(0,C.tryCatch)(t,t=>et(e,"run",t))(void 0,n)})}(e,n);break;case X.Session:!function(e,t){if(!e.session)return;const n=pt(e,X.Session);t.forEach(t=>{(0,C.tryCatch)(t,t=>et(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=pt(e,t),s=ot(t);n.forEach(n=>{"function"==typeof n&&(s&&!ct(e,n,t)||s&&!ft(e,n,t)||((0,C.tryCatch)(n,n=>et(e,"generic",n,{type:t}))(r,o),s&&at(e,n,t)))});break}}}function xt(e,t,n){if(nt(t))return n||e[t];switch(t){case X.Session:return e.session;case X.Config:return n||e.config;default:return}}async function Ct(e,t,n,o,r){if(!t.on)return!1;if(ot(o)&&!ct(e,t,o))return!1;if(ot(o)&&!ft(e,t,o))return!1;const s=ot(o);if(s&&Pt.has(t))return Tt.add(t),!1;const i=s?it(e,o):0;s&&Pt.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await(0,C.tryCatchAsync)(()=>(u=Promise.resolve(a(o,r)),Ae(u,L.DEFAULT_DESTINATION_TIMEOUT_MS,`Source "${n}" on(${o}) did not settle within ${L.DEFAULT_DESTINATION_TIMEOUT_MS}ms`)),t=>{t instanceof Ie&&(d=!0),et(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&Pt.delete(t)}if(s)if(d){const o=()=>{Pt.delete(t),Tt.delete(t),e.allowed&&e.sources[n]===t&&(0,C.tryCatchAsync)(()=>Rt(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",de(t))})()};u.then(o,o)}else Dt(e,t,o,i),Tt.delete(t)&&await Rt(e,t,n);return!1===c}var Pt=new WeakSet,Tt=new WeakSet;async function Rt(e,t,n){const o=dt(e);try{for(const o of tt)await Ct(e,t,n,o,xt(e,o))}finally{o()}}async function Wt(e,t,n,o,r){if(!t.on)return;const s=ot(o);if(s&&!ct(e,t,o))return;const i=St.get(t)?.[String(o)];if(s&&void 0!==i&&i>=it(e,o))return;if(s&&!ft(e,t,o)){if(t.config.init)return void It(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:xt(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),at(e,t,o),void _t.get(t)?.delete(String(o))}const a=qt.get(t);if(!t.config.init||a){const i=t.queueOn=t.queueOn||[],c=s&&!a?i.findIndex(e=>e.type===o):-1;if(-1!==c)i[c]={type:o,data:xt(e,o)};else if(s)i.push({type:o,data:r});else{const s=t.config.queueMax??1e3,a=i.filter(e=>!ot(e.type));if(a.length>=s){i.splice(i.indexOf(a[0]),1);const o=(0,x.stepId)("destination",t.config.id||n);ue(e.status,o,"queue",1),(0,x.reportCause)(e,e.logger,{step:o,code:"on-overflow"},`destination.queueOn full (queueMax ${s}): oldest on() delivery dropped`,{type:t.type})}i.push({type:o,data:r})}return void(s&&(at(e,t,o),a&&!a.held&&(jt(t,o),a.held=!0)))}await gt(e,t,n,o,r)}async function Lt(e,t,n){if(!t.on)return;const o=dt(e);try{for(const o of tt)(rt(e,o)||_t.get(t)?.has(String(o)))&&await Wt(e,t,n,o,xt(e,o))}finally{o()}}function Kt(e){return(kt.get(e)||0)>0}function Bt(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var Ft={code:"consent",message:"required consent is not granted"},zt={code:"batch",message:"waiting in a batch window until it flushes"},Vt={code:"held",message:"a state delivery to the destination is running or failed"},Ht={state:"ready"};var Ut=8;function Nt(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=Ut||!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(Nt(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:Nt(s,t,n+1);return r}var Gt=6;function Qt(e,t){try{return e[t]}catch{return"[unreadable]"}}function Yt(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>=Gt)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(Qt(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 Xt(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:Yt(e.args),ts:e.ts})))}var Jt=1e3,Zt=3e4,en=Object.freeze({batched:!0});function tn(e){return e===en}var nn=Object.freeze({ignored:!0}),on=" batch-all";function rn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function sn(e){for(const t of e)bt(t.destination)&&(t.drain=!0)}function an(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},r={...e.failed??{}};let s=e.reason,i=e.error;for(const e of t){for(const[t,s]of Object.entries(e.done??{}))r[t]||(n[t]=s,delete o[t]);for(const[t,s]of Object.entries(e.failed??{}))r[t]=s,delete n[t],delete o[t];for(const[t,n]of Object.entries(e.queued??{}))r[t]||(o[t]=n);s=s??e.reason,i=i??e.error}const a={...e,ok:e.ok&&t.every(e=>e.ok)};return delete a.done,delete a.queued,delete a.failed,delete a.reason,delete a.error,Object.keys(n).length&&(a.done=n),Object.keys(o).length&&(a.queued=o),Object.keys(r).length&&(a.failed=r),s&&(a.reason=s),void 0!==i&&(a.error=i),a}function cn(e){return En({ok:!1,reason:e.reason,error:`Transformer "${e.by}" failed: ${e.reason.message}`})}async function un(e,t,n={},o){if(!e.allowed)return En({ok:!1});if(!t)return wn(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??(0,q.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await He(e,e.transformers||{},r,t,o,n.respond,Pn),i=s.respond??n.respond,a=s.failure;return a&&0===s.copies.length?{copies:[],respond:i,failure:a}:0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),ne(e,t,o,{reason:"dropped",by:s.droppedBy,at:Pn}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:xn(e,t.event,t.ingest),ingest:t.ingest})),respond:i,...a?{failure:a}:{}}}(e,t,n),s=r.failure?cn(r.failure):void 0;if(0===r.copies.length)return s??En({ok:!0,...r.dropped?{dropped:!0}:{}});const i=[];for(const t of r.copies)i.push(await wn(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));const[a,...c]=i;return an(a,s?[...c,s]:c)}var dn=new WeakMap;function ln(e,t){for(const n of e){const e=dn.get(n);e&&(dn.delete(n),e(t))}}function fn(e){bn.has(e)||pn.has(e)||vn(e.queuePush||[])}var pn=new WeakMap;function gn(e){pn.set(e,(pn.get(e)??0)+1)}function hn(e){const t=(pn.get(e)??1)-1;t>0?pn.set(e,t):pn.delete(e)}function vn(e){for(const t of e)ln([t],{kind:"queued",reason:"consent"===t.reason?Ft:Vt})}function mn(e){vn(e.queuePush||[]),e.queuePush=[]}function yn(e,t,n,o=0){let r,s,i,a=0,c=0;for(const e of n)"failed"===e.kind?r=r??e:"delivered"===e.kind?(a++,void 0!==e.response&&(i=e.response)):"batched"===e.kind?c++:"queued"===e.kind&&(s=s??e.reason);return{id:e,destination:t,totalDuration:o,delivered:a,batched:c,response:i,...r?{failed:r.reason,error:r.error}:{},...s?{queued:s}:{}}}async function wn(e,t,n,o){const{user:r}=e;if(t){const n=oe(e.config.queueMax),o=re(e.queue,t,{max:n});if(o.dropped>0){const t=ue(e.status,(0,I.stepId)("collector"),"queue",o.dropped);ie(e.queue,e.logger,"info","collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&ae(e.queue);e.status.in++}o||(o=e.destinations);const s=e.transformers||{},i=Object.entries(o||{});let a;try{a=await Promise.all(i.map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=()=>{return t=e,r=o,void(he((n=i).config.breaker)&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(t.status.breakers,(0,D.stepId)("destination",n.config.id||r)));var t,n,r},u=i.config.queueMax??1e3,d=(0,I.stepId)("destination",a),l=e.logger.scope(i.type||"unknown"),f=(t,n)=>{const o=[];if(!t.length)return o;i.queuePush||(i.queuePush=[]);const r=i.queuePush;let s=0;for(const e of t){if(e.reason=n,r.length>=u){const t=r.findIndex(e=>"consent"===e.reason);if(-1===t){if("consent"===n){ln([e],{kind:"queued",reason:Ft}),s++;continue}o.push(e);continue}ln(r.splice(t,1),{kind:"queued",reason:Ft}),s++}r.push(e)}if(s>0){ce(e,a);const t=ue(e.status,d,"queue",s);ie(i,l,"debug","destination.queuePush overflow; oldest consent-waiting events dropped",{buffer:"queuePush",destination:a,cap:u,droppedCount:t})}else r.length<u&&ae(i);return o},p=e=>{f(e,"consent")},g=()=>{const e=i.queuePush||[];return i.queuePush=e.filter(e=>!dn.has(e)),e.filter(e=>dn.has(e))},h=t=>{const n=f(t,"held");if(!n.length)return{id:o,destination:i,queued:Vt};const r=new I.StepError(`destination.queuePush full (queueMax ${u}) while the destination is held: newest event refused`,{code:"queue-full"}),s=ke(e,i,o,n.map(e=>e.event),r);return ln(n,{kind:"failed",reason:s,error:r}),{id:o,destination:i,failed:s,error:r}},v=t=>(dn.has(t)||"held"===t.reason||(t.event={...t.event,consent:e.consent}),t),m=e.config.consentDenied??"queue",y=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,I.createIngest)("unknown"),w=t=>{const n=e.consent,r=[],s=[];for(const a of t){const t=a.event,c=(0,I.getGrantedConsent)(i.config.consent,n,t.consent);c?(t.consent=c,r.push(a)):(te(e,o,"skip",t,y,e=>{e.skipReason="consent",n&&(e.consent={...n}),i.config.consent&&(e.meta={required:{...i.config.consent}})}),"skip"===m?(Se(e,i,o,t,"consent"),ln([a],{kind:"skipped"})):s.push(a))}return{allowed:r,denied:s}};i.on&&i.config.init&&!bt(i)&&!Kt(i)&&At(e,i)&&await Lt(e,i,o);const b=(0,L.resolveDestinationTimeout)(i.config.timeout),k=bt(i);k&&!Kt(i)&&Date.now()-k.since>=b&&await Lt(e,i,o);const S=function(e,t,n=Date.now()){const o=bt(e);return o?void 0===o.failedAt||n-o.failedAt<t?{state:"waiting",reason:Vt}:{state:"blocked",error:new M.StepError(`destination blocked: its ${String(o.type)} delivery failed and was not recovered within ${t}ms; events fail until a retry succeeds`,{code:"blocked"})}:Ht}(i,b);if("ready"!==S.state){if(!t)return{id:o,destination:i,skipped:!0};const{allowed:n,denied:r}=w([{event:(0,I.clone)(t)}]);if(p(r),!n.length)return r.length?{id:o,destination:i,queued:Ft}:{id:o,destination:i,skipped:!0};if("blocked"===S.state){const t=(i.queuePush||[]).filter(e=>"held"===e.reason);i.queuePush=(i.queuePush||[]).filter(e=>"held"!==e.reason);const r=S.error,s=ke(e,i,o,[...t,...n].map(e=>e.event),r);return ln(t,{kind:"failed",reason:s,error:r}),{id:o,destination:i,failed:s,error:r}}return h(n)}let E=(i.queuePush||[]).map(v);if(i.queuePush=[],t&&E.push({event:(0,I.clone)(t)}),!E.length&&!i.queueOn?.length)return{id:o,destination:i,skipped:!0};if(!E.length&&i.queueOn?.length){if(!(0,I.getGrantedConsent)(i.config.consent,e.consent))return{id:o,destination:i,skipped:!0};let t=!1;gn(i);try{t=await kn(e,i,o,!0)}catch(t){const n=g(),r=ke(e,i,o,n.map(e=>e.event),t,{message:"destination init failed"});ln(n,{kind:"failed",reason:r,error:t})}finally{hn(i)}if(bt(i))return{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return{id:o,destination:i,skipped:!0};E=i.queuePush.map(v),i.queuePush=[]}const _=e.consent,{allowed:O,denied:q}=w(E);if(p(q),!O.length)return q.length?{id:o,destination:i,queued:Ft}:{id:o,destination:i,skipped:!0};const A=function(e,t,n){const o=he(t.config.breaker);if(!o)return Ht;const r=(0,M.stepId)("destination",n);if(!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=ge();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,r,o.cooldown))return Ht;const s=e.status.breakers[r]?.openUntil;return{state:"blocked",error:new M.StepError(`breaker open after ${o.threshold} consecutive failures; events fail until ${s?new Date(s).toISOString():"a probe succeeds"}; see the first failure's line`,{code:"breaker-open"})}}(e,i,a);if("blocked"===A.state){const t=A.error,n=ke(e,i,o,O.map(e=>e.event),t);return ln(O,{kind:"failed",reason:n,error:t}),{id:o,destination:i,failed:n,error:t}}const j=new Set(i.queuePush);if(bn.has(i)){c();const e=O.filter(e=>!dn.has(e)).map(e=>new Promise(t=>dn.set(e,t)));return h(O),yn(o,i,await Promise.all(e))}gn(i);try{await kn(e,i,o,!0)}catch(t){const n=g(),r=ke(e,i,o,[...O,...n].map(e=>e.event),t,{message:"destination init failed"});return ln([...O,...n],{kind:"failed",reason:r,error:t}),ye(r)||c(),{id:o,destination:i,failed:r,error:t}}finally{hn(i)}if(bt(i))return c(),h(O);const $=[];if(e.consent!==_){const e=w(O.map(v));O.splice(0,O.length,...e.allowed),$.push(...e.denied)}const x=i.queuePush||[],C=x.filter(e=>!j.has(e));if(C.length){i.queuePush=x.filter(e=>j.has(e));const e=w(C.map(v));O.push(...e.allowed),$.push(...e.denied)}if(p($),!O.length)return c(),$.length?{id:o,destination:i,queued:Ft}:{id:o,destination:i,skipped:!0};let P=!1;const T=i.config.before,R=i.config.next,W=i.config?.cache,K=W?(0,I.compileCache)(W):void 0,B=K?Ee(K,e):void 0,F=_e(i.config?.state),z=F?.filter(e=>"get"===e.mode),V=F?.filter(e=>"set"===e.mode);let H=0,U=0,N=0;const G=await Promise.all(O.map(async t=>{const a=t.event,c={delivered:0,batched:0},u=()=>c.failure?{kind:"failed",...c.failure}:c.delivered?{kind:"delivered",response:c.response}:c.batched?{kind:"batched"}:{kind:"skipped"};let d,l;if(a.user=(0,I.assign)(r,a.user),K?.stop&&B){const t=(0,I.createMappingRoot)(y,a),n=await(0,I.checkCache)(K,B,t,void 0,e);if("HIT"===n?.status)return u();"MISS"===n?.status&&(d={key:n.key,ttl:n.rule.ttl})}let f=[{event:a,ingest:y}],p=n.respond;if(void 0!==T){const t=`destination.${o}.before`,r=await He(e,s,T,a,y,n.respond,t);if(r.failure&&(c.failure={reason:r.failure.reason,error:`Transformer "${r.failure.by}" failed: ${r.failure.reason.message}`},ce(e,o).failed++),0===r.copies.length)return r.failure||te(e,o,"skip",a,y,e=>{e.skipReason="dropped",e.meta={by:r.droppedBy??"route",at:t}}),u();r.respond&&(p=r.respond),f=r.copies.map(e=>({event:e.event,ingest:e.ingest}))}const g=async(t,n,r)=>{let a=r,u=!1;if(K&&!K.stop&&B){const o=(0,I.createMappingRoot)(n,t??void 0),r=await(0,I.checkCache)(K,B,o,void 0,e);if("HIT"===r?.status)return!1;"MISS"===r?.status&&(a={key:r.key,ttl:r.rule.ttl},u=!0)}z&&z.length>0&&t&&(t=await Oe(e,z,t,n));const d=Date.now();let f=!1;const g=await(0,I.tryCatchAsync)(Sn,n=>{const r=ke(e,i,o,[t],n,{observed:!0});c.failure={reason:r,error:n},ye(r)&&(P=!0),f=!0})(e,i,o,t,n,p);if(H+=Date.now()-d,g===nn)return!1;if(a&&B&&void 0===i.config.mock&&(u?(0,I.storeCache)(B,a.key,g??!0,a.ttl):void 0===l&&(l=g??!0)),!f&&!tn(g)&&V&&V.length>0&&t&&(t=await Oe(e,V,t,n)),void 0===g||tn(g)||(c.response=g),tn(g))return c.batched++,U++,!1;if(f)return!1;if(R){void 0!==g&&(n._response=g);const r=await He(e,s,R,t,n,p,`destination.${o}.next`);r.respond&&(p=r.respond)}return!0};for(const e of f)await g(e.event,e.ingest,d)&&(c.delivered++,N++);return d&&B&&void 0!==l&&void 0===i.config.mock&&(0,I.storeCache)(B,d.key,l,d.ttl),u()})),Q=[];return O.forEach((e,t)=>{dn.has(e)?ln([e],G[t]):Q.push(G[t])}),P||(N?ve(e,i,o,"success"):U||c()),yn(o,i,Q,H)}))}finally{for(const[,e]of i)fn(e)}const c={},u={},d={};for(const t of a){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};ce(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.delivered??0;i>0&&(r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++),t.failed?(o.error=t.error,o.reason=t.failed,d[t.id]=o,r.lastAt=s,i||(r.duration+=t.totalDuration||0)):i>0?c[t.id]=o:(t.batched??0)>0?(o.reason=zt,u[t.id]=o):t.queued&&(o.reason=t.queued,u[t.id]=o)}return En({event:t,...Object.keys(c).length&&{done:c},...Object.keys(u).length&&{queued:u},...Object.keys(d).length&&{failed:d}})}var bn=new WeakMap;async function kn(e,t,n,o=!1){if(!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=bn.get(t);if(r)return r;if(!t.init&&!t.queueOn?.length)return t.config={...t.config,init:!0},!0;const s=async function(e,t,n,o){if(t.config=n?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:qn(t.env,t.config.env),reportError:le(e,"destination",o,s,t)};s.debug("init");const a=Date.now();te(e,o,"init",void 0,void 0);const c=(0,L.resolveDestinationTimeout)(t.config.timeout);let u;try{u=await Ae(Promise.resolve((0,I.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)),c,`Destination "${o}" init timed out after ${c}ms`)}catch(t){throw te(e,o,"error",void 0,void 0,e=>{e.durationMs=Date.now()-a,e.error=ee(t)}),t}if(we(u))throw be();return{...u||t.config,init:!0}}(e,t,n,o):{...t.config,init:!0},t.queueOn?.length){const n=dt(e);!function(e){const t=e.queueOn?.find(({type:e})=>ot(e));t&&jt(e,t.type),qt.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await gt(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])ot(n)&&It(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=qt.get(t);qt.delete(t),n?.held&&$t(e,t)}(e,t),n()}}return n&&e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);bn.set(t,s);try{return await s}finally{bn.delete(t)}}return!0}async function Sn(e,t,n,o,r,s){const{config:i}=t;let a;try{a=await(0,I.processEventMapping)(o,i,e)}catch(t){throw te(e,n,"error",o,r,e=>{e.error=ee(t)}),t}if(a.ignore){Se(e,t,n,o,"ignored");const{mappingKey:s}=a;return te(e,n,"skip",o,r,e=>{e.skipReason="ignored",s&&(e.mappingKey=s)}),nn}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:{...qn(t.env,i.env),...s?{respond:s}:{}},reportError:le(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,f=void 0!==l?.batch,p=f?a.mappingKey||"* *":on;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=rn(l?.batch),s=rn(i.batch),a=r.wait??s.wait??Zt,c=r.size??s.size??Jt,d=r.age??s.age??Zt,g=qn(t.env,i.env),h=(0,I.debounce)(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const a=s.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:le(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=ce(e,d),f=Date.now(),h=new Map;let v,m,y=!1,w=s.entries.length;const b=(0,L.resolveDestinationTimeout)(i.timeout),k=await(0,I.tryCatchAsync)((o,r)=>Ae(Promise.resolve((0,I.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),b,`Destination "${n}" batch delivery timed out after ${b}ms`),n=>{w=0,y=!0,v=n,m=ke(e,t,d,s.entries.map(e=>e.event),n,{observed:!0,message:"Push batch failed"})})(s,c);if((0,I.isObject)(S=k)&&Array.isArray(S.failed)&&k.failed.length>0){for(const e of k.failed){if(!s.entries[e.index]||h.has(e.index))continue;const t=e.error??new Error(`Push batch entry ${e.index} failed (no per-row error provided)`);h.set(e.index,t)}const n=new Map;for(const[o,r]of h){const i=ke(e,t,d,[s.entries[o].event],r,{observed:!0,report:!1,breaker:!1});m=m??i;const a=r instanceof Error&&"code"in r&&"string"==typeof r.code?r.code:r instanceof Error?r.name:"Error",c=n.get(a);c?c.count++:n.set(a,{code:a,count:1})}w=Math.max(0,s.entries.length-h.size),m&&(0,I.reportCause)(e,e.logger,{step:(0,I.stepId)("destination",d),code:m.code,status:m.status},`Push batch partial failure: ${h.size} of ${s.entries.length} entries failed (${[...n.values()].map(e=>`${e.code} x${e.count}`).join(", ")})`,{type:t.type,count:h.size,retryable:m.retryable,error:m.message})}var S;const E=Date.now();return s.entries.forEach((t,o)=>{const r=y||h.has(o),i=J(t.event,t.ingest,e),a=Z(e,(0,I.stepId)("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",E,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=E-f,r){const e=y?v:h.get(o);a.error=ee(e)}(0,I.emitStep)(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),w>0&&(l.count+=w,l.lastAt=Date.now(),e.status.out+=w,ve(e,t,n,"success")),{delivered:w,failed:s.entries.length-w,...m?{reason:m}:{}}},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>await h.flush()??void 0}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,I.isDefined)(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=J(o,r,e),h=Date.now(),v=Z(e,(0,I.stepId)("destination",n),"destination","in",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),a.event.consent&&(v.consent={...a.event.consent}),v.inEvent=a.event,(0,I.emitStep)(e,v);const m=Z(e,(0,I.stepId)("destination",n),"destination","out",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),m.outEvent=a.event,m.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,I.emitStep)(e,m);const y=t.config.id||n,w=ce(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),en}{let s;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:Nt(t,r,1);const s=(0,K.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[I.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=J(o,r,e),f=Date.now(),p=Z(e,(0,I.stepId)("destination",n),"destination","in",c,f,l);a.mappingKey&&(p.mappingKey=a.mappingKey),a.event.consent&&(p.consent={...a.event.consent}),p.inEvent=a.event,(0,I.emitStep)(e,p);try{const o=(0,L.resolveDestinationTimeout)(i.timeout),r=await Ae(Promise.resolve((0,I.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=Z(e,(0,I.stepId)("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,Xt(g,s),(0,I.isDefined)(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),(0,I.emitStep)(e,g),u.debug("push done"),r}catch(t){const{mappingKey:o}=a;throw te(e,n,"error",a.event,r,e=>{e.durationMs=Date.now()-f,e.error=ee(t),Xt(e,s),o&&(e.mappingKey=o)}),t}}}function En(e){return{ok:!e?.failed,...e}}function _n(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=je(e,"before"),{config:a}=je({...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=qn(t.env,o);return{...t,config:c,env:u}}function On(e,t,n,o=!1){const{config:r}=n,s=e.logger.scope(n.type||"unknown");if(!n.pushBatch){const e=(0,I.getMappingKeyPaths)(r,"config",{config:["batch"],rule:["batch"]});e.length&&s.error(`Destination ${t}: ${e.map(e=>`\`${e}\``).join(", ")} has no effect: the destination has no pushBatch, so events go to push one by one`)}if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const n=(0,I.getMappingNoOpPaths)("destination",r,"config");n.length&&s.error(`Destination ${t}: ${(0,I.getMappingNoOpMessage)("destination",n)}`),o&&(Pe(e,`destination.${t}.before`,r.before),Pe(e,`destination.${t}.next`,r.next))}}function qn(e,t){return e||t?t?e&&(0,I.isObject)(e)&&(0,I.isObject)(t)?{...e,...t}:t:e:{}}async function In(e){const t={},n={},o=Object.entries(e.destinations).map(async([o,r])=>{const s=Object.values(r.batches||{}),i=s.reduce((e,t)=>e+t.batched.entries.length,0),a={type:r.type||"unknown"},c=await Promise.all(s.map(async t=>{let n;try{return await Promise.race([t.flush(),new Promise((e,t)=>{n=setTimeout(()=>t(new z.StepError(`destination '${o}' batch flush timed out`,{code:"timeout"})),5e3)})])}catch(t){const n=(0,z.toFailureReason)(t);return a.reason=n,void(0,z.reportCause)(e,e.logger,{step:(0,z.stepId)("destination",o),code:n.code,status:n.status},"batch flush failed",{type:r.type,retryable:n.retryable,error:n.message})}finally{n&&clearTimeout(n)}}));if(i){for(const e of c)e&&e.reason&&!a.reason&&(a.reason=e.reason);a.reason?n[o]=a:t[o]=a}});return await Promise.all(o),En({...Object.keys(t).length&&{done:t},...Object.keys(n).length&&{failed:n}})}async function An(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",i=n.scope(s),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([r(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function jn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function $n(e,t,n){let o,r,s=!1;const i=[],a=dt(e);try{return await async function(){switch(t){case X.Config:(0,F.isObject)(n)&&((0,B.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case X.Consent:if((0,F.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,O.assign)(e.consent,n),{update:n}}(e,n);jn(e,X.Consent),r=t,s=!0}break;case X.Custom:(0,F.isObject)(n)&&(e.custom=(0,B.assign)(e.custom,n),jn(e,X.Custom),r=n,s=!0);break;case X.Destination:(0,F.isObject)(n)&&"code"in n&&(0,F.isObject)(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,I.isFunction)(n.push))return En({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=(0,I.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(qe(e,(0,I.stepId)("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Ye(e);const n=e.destinations[l];return n?un(e,void 0,{},{[l]:n}):En({ok:!0})}const f={...n,config:d,env:qn(n.env,r)};return On(e,l,f,!0),e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=e.queue.map(e=>({event:e}))),await Lt(e,f,l),un(e,void 0,{},{[l]:f})}(e,n));break;case X.Globals:(0,F.isObject)(n)&&(e.globals=(0,B.assign)(e.globals,n),jn(e,X.Globals),r=n,s=!0);break;case X.Flush:o=await In(e);break;case X.Hook:if((0,F.isObject)(n)&&(0,B.isString)(n.name)&&(0,B.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case X.On:if((0,F.isObject)(n)&&(0,B.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Xe(e))return void Ze();const o=e.on,r=o[t]||[],s=(0,x.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Mt(e,t,s)}(e,t,o)}break;case X.Ready:s=!0;break;case X.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,B.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,B.assign)(e.consent,t.consent),jn(e,X.Consent)),t.user&&(e.user=(0,B.assign)(e.user,t.user),jn(e,X.User)),t.globals&&(e.globals=(0,B.assign)(e.config.globalsStatic||{},t.globals),jn(e,X.Globals)),t.custom&&(e.custom=(0,B.assign)(e.custom,t.custom),jn(e,X.Custom))),Object.values(e.destinations).forEach(mn),e.queue=[],e.round++,await Ye(e);const o=await async function(e){if(!Xe(e))return Ze(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of tt)rt(e,t)&&await Wt(e,o,n,t,xt(e,t))};t.push(Bt(n,o,r()))}for(const t of tt){if(!rt(e,t))continue;const n=xt(e,t);Mt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>Ge(e)).map(([o,r])=>Ct(e,r,o,t,n)))}return t}(e);let r=!0;const s={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(s,t.failed)}}sn(o);const i=await un(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case X.Session:s=!0;break;case X.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await An(e.sources,"source",t),await In(e),await An(e.destinations,"destination",t),await An(e.transformers,"transformer",t),await An(e.stores,"store",t),e.causeLog?.flush()}(e));break;case X.User:(0,F.isObject)(n)&&((0,B.assign)(e.user,n,{shallow:!1}),jn(e,X.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),En({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!Xe(e))return Ze(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=xt(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&&(Ge(o)?i.push(Ct(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(Bt(n,o,Wt(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))Ge(n)&&n.queueOn?.length&&await Ne(e,n,t);const u=Object.values(e.sources).some(e=>!Ge(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Ye(e),Mt(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),sn(n.deliveries);const s=an(await un(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!bt(n)&&n.queuePush?.length&&e.destinations[t]===n)return un(e,void 0,{},{[t]:n})}))).filter(I.isDefined)}(e,i));if(o&&!1===o.ok){const e={...s.failed??{},...o.failed??{}};o={...s,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=s}return o||En({ok:!0})}()}finally{a()}}function Dn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Mn(e,t,n){return Cn(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function xn(e,t,n){return Cn(e,Dn(e,t),n,{globals:{},user:{},consent:{}})}function Cn(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new B.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new B.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new B.InvalidEventError("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${s} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:v=(0,B.getSpanId)(),trigger:m="",entity:y=s,action:w=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),_=S.trace??n?._meta.trace??e.trace,O={...S,count:E};void 0!==_&&(O.trace=_);const q=e.name??S.platform??"default",I=e.release??"4.8.2";return O.release={...S.release,[q]:I},{name:c,data:u,context:d,globals:(0,B.assign)(o.globals,l),custom:f,user:p,nested:g,consent:h,id:v,trigger:m,entity:y,action:w,timestamp:a,timing:b,source:O}}var Pn="collector.next";function Tn(e,t){const n=(0,U.useHooks)(async(n,o={})=>await(0,U.tryCatchAsync)(async()=>{if(!e.allowed){const t=oe(e.config.queueMax);if(!re(e.preRunQueue,{event:n,options:o},{max:t,onOverflow:"dropNewest"}).appended){const o=(0,U.toFailureReason)(new U.StepError(`collector.preRunQueue full (queueMax ${t}): event refused before run`,{code:"queue-full"}));return e.status.failed++,(0,U.reportCause)(e,e.logger,{step:"collector",code:o.code},"Push refused",{event:n.name,retryable:o.retryable,error:o.message}),En({ok:!1,reason:o,error:o.message})}return e.logger.debug("event held until run",{name:n.name}),En({ok:!0})}const r=Date.now(),{id:s,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f,p=a,g=n;const h=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 v=i??(0,U.createIngest)(s||"unknown");if(c){const t=await(0,U.processEventMapping)(g,c,e);if(t.ignore){const n=s?`source.${s}`:"collector.push";return e.logger.debug("Event ignored by source mapping",{at:n,mappingKey:t.mappingKey}),ne(e,t.event,v,{reason:"ignored",at:n}),En({ok:!0,dropped:!0})}if(c.consent){const n=t.event.consent;if(!(0,U.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}),ne(e,t.event,v,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),En({ok:!0,dropped:!0})}}g=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await He(e,e.transformers||{},u,g,v,p,n),i=o.failure?cn(o.failure):void 0;if(i&&0===o.copies.length)return i;if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),ne(e,g,v,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),En({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(p=o.respond),En({ok:!0});if(o.respond&&(p=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Mn(e,t(n.event),n.ingest);return un(e,o,{id:s,ingest:n.ingest,respond:p},h)}));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}const[a,...c]=n;return an(a,i?[...c,i]:c)}g=o.copies[0].event,v=o.copies[0].ingest,i&&(f=i)}const m=function(e,t,n){return Mn(e,Dn(e,t),n)}(e,g,v),y=await un(e,m,{id:s,ingest:v,respond:p},h);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 f?an(y,[f]):y},t=>{if(t instanceof U.FatalError)throw t;if(t instanceof U.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(0,U.reportCause)(e,e.logger,{step:n?`source.${n}`:"collector",code:"invalid"},"invalid event rejected",{error:t.message},"warn"),En({ok:!1,invalid:!0,error:t.message})}e.status.failed++;const r=(0,U.toFailureReason)(t);return(0,U.reportCause)(e,e.logger,{step:"collector",code:r.code,status:r.status},o.id?`push failed at source.${o.id}`:"push failed",{event:n.name,retryable:r.retryable,error:r.message}),En({ok:!1,reason:r,error:r.message})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,U.getSpanId)()},s="string"==typeof r.id?r.id:"",i=J(r,o?.ingest,e),a=Date.now(),c=Z(e,"collector.push","collector","in",s,a,i);c.inEvent=r,(0,U.emitStep)(e,c);try{const t=await n(r,o),c=Date.now(),u=Z(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,(0,U.emitStep)(e,u),t}catch(t){const n=Date.now(),o=Z(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=ee(t),(0,U.emitStep)(e,o),t}}}function Rn(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;return o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref()),{type:"memory",config:{},get(e){const t=s.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(s.delete(e),i.evictions_ttl++,void i.misses++):(s.delete(e),s.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!s.has(e);a||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,s.size>t&&function(){if(s.size<=t)return;const e=s.size-r;let n=0;for(const t of s.keys()){if(n>=e)break;s.delete(t),n++}i.evictions_entries+=n}()},delete(e){s.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),s.clear()}}}function Wn(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=Z(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,Y.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,Y.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,Y.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,Y.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,Y.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,de(n)):console.warn(o,n)}}function Ln(e,t,n){const o=`store.${n}`,r=(0,Q.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,Q.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,Q.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=Z(e,o,"store","in","",n);s.meta={op:"get",key:t},(0,Q.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=Z(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},(0,Q.emitStep)(e,a),s}catch(r){const s=Date.now(),i=Z(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=ee(r),(0,Q.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=Z(e,o,"store","in","",i);a.meta={op:"set",key:t},(0,Q.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=Z(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},(0,Q.emitStep)(e,c)}catch(n){const r=Date.now(),s=Z(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=ee(n),(0,Q.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=Z(e,o,"store","in","",n);r.meta={op:"delete",key:t},(0,Q.emitStep)(e,r);try{await i(t);const r=Date.now(),s=Z(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},(0,Q.emitStep)(e,s)}catch(r){const s=Date.now(),i=Z(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=ee(r),(0,Q.emitStep)(e,i),r}}}async function Kn(e){const t=(0,H.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3,consentDenied:"queue"},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,H.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,causeLog:(0,H.createCauseLog)(o),on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};var i,a;void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),void 0!==e.next&&(t.next=e.next),s.push=Tn(s,e=>Dn(s,e)),s.command=(i=s,a=$n,(0,N.useHooks)(async(e,t,n)=>await(0,N.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof N.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...de(t),command:e}),En({ok:!1})})(),"Command",i.hooks,i.logger)),s.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error("elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })",{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,r,...s)=>{if("string"==typeof t&&t.startsWith("walker ")){o(s)&&n(t);const i=t.replace("walker ","");return e.command(i,r)}let i;if("string"==typeof t)i={name:t},(0,G.isObject)(r)?i.data=r:void 0!==r&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return En({ok:!1});i={...t},void 0!==r&&n(String(i.name))}return o(s)&&n(String(i.name)),e.push(i)}}(s);const c=e.stores||{};if("undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i,reportError:le(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=Rn()),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]=Wn(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&&Ln(e,o,t);return n}(s,c),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.error("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=Rn()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))qe(e,(0,I.stepId)("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:(n[o]=_n(r),On(e,o,n[o]));return n}(s,e.destinations||{}),s.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=(0,T.validateStepEntry)(r,"Transformer");if(!t.ok){e.logger.error(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=je(r,"before"),{config:a}=je({...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;qe(e,(0,T.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,T.createIngest)(o),config:f,env:s,reportError:le(e,"transformer",o,p)},h=(0,T.getTransformerMapping)(r);if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__)for(const t of(0,T.getTransformerMappingWarnings)(r))e.logger.error(`Transformer ${o}: ${t}`);const v=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await(0,T.processEventMapping)(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),m=await v(g);void 0!==r.before&&void 0===m.config?.before&&(m.config={...m.config??{},before:r.before}),void 0!==r.next&&void 0===m.config?.next&&(m.config={...m.config??{},next:r.next}),void 0!==l&&void 0===m.config?.state&&(m.config={...m.config??{},state:l}),n[o]=m}return n}(s,e.transformers||{}),"undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){Pe(s,"collector.next",t.next);for(const[e,t]of Object.entries(s.destinations))Pe(s,`destination.${e}.before`,t.config.before),Pe(s,`destination.${e}.next`,t.config.next);for(const[e,t]of Object.entries(s.transformers))Pe(s,`transformer.${e}.before`,t.config.before),Pe(s,`transformer.${e}.next`,t.config.next)}return s}function Bn(e,t){return void 0===t?e:n=>e({...n,release:t})}function Fn(e,t){try{return{value:t()}}catch(t){const n=t instanceof Error?t.message:String(t);return void e.logger.error(`observe: the slot failed, Observe is off: ${n}`)}}async function zn(e){const t=e??{},n=await Kn(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=n.slot;if(!t)return void e.logger.error("observe: a web observe config needs slot: pageObserveSlot() from @walkeros/web-core");const r=Fn(e,()=>t.read());if(!r?.value)return;const{raw:s,fromUrl:i}=r.value,a=(0,V.parseObserveCredential)(s);if(!a)return void(i?e.logger.warn("observe: malformed credential ignored"):(e.logger.warn("observe: malformed stored credential cleared"),Fn(e,()=>t.clear(s))));if(a.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");if(!Fn(e,()=>t.keep(s,i)))return;let c;const u=(0,V.createBatchedPoster)({url:`${n.url}/ingest/${a.ses}`,token:a.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:n=>{401===n&&(Fn(e,()=>t.clear(s)),c&&e.observers.delete(c))}});c=(0,V.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Bn(u,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(c);const d=n.level;return void(void 0!==d&&(e.observeLevel=()=>d))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add((0,V.createTelemetryObserver)(Bn((0,V.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.error("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Qe(e,o,r);if(!t)continue;const s=r.config?.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await(0,P.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof P.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...de(n)})})(),o||(n.config.init=!0,Ge(n)&&await Ne(e,n,t))}return await Ye(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var Vn=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await zn({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};//# sourceMappingURL=dev.js.map
|
package/dist/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,cAA4B;;;ACA5B,iBAAkB;AAEX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,QAAQ,aACL;AAAA,IACC,aACG,OAAO;AAAA,MACN,OAAO,aACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,IAAAC,cAAkB;AAEX,IAAM,gBAAgB,cAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,eAAW,yBAAY,cAAc;AAC3C,IAAM,cAAU,yBAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A
|
|
1
|
+
{"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,cAA4B;;;ACA5B,iBAAkB;AAEX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,QAAQ,aACL;AAAA,IACC,aACG,OAAO;AAAA,MACN,OAAO,aACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,IAAAC,cAAkB;AAEX,IAAM,gBAAgB,cAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,eAAW,yBAAY,cAAc;AAC3C,IAAM,cAAU,yBAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA,IAAM,gBAAmE,OACvE,WACG;AACH,MAAI;AAEJ,QAAM,UACJ,MAAM,OAAO,YAAuC;AAElD,QAAI,CAAC,MAAM;AACT,YAAM,SAAS,MAAM,GAAU,EAAE,GAAG,QAAQ,KAAK,OAAO,OAAO,KAAK,CAAC;AACrE,aAAO,EAAE,WAAW,OAAO,WAAW,KAAK,OAAO,IAAI;AAAA,IACxD;AAIA,UAAM,KAAK,IAAI,OAAO;AAAA,EACxB;AAEF,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;","names":["import_dev","import_dev"]}
|
package/dist/dev.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{MappingSchema:()=>a,SettingsSchema:()=>r,mapping:()=>u,settings:()=>c});import{zodToSchema as o}from"@walkeros/core/dev";import{z as s}from"@walkeros/core/dev";var r=s.object({events:s.array(s.object({delay:s.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")});import{z as i}from"@walkeros/core/dev";var a=i.object({}),c=o(r),u=o(a),d={};t(d,{createTrigger:()=>Oo,env:()=>l,step:()=>w});var l={};t(l,{init:()=>h,push:()=>m,simulation:()=>v});var f=async()=>({ok:!0}),p=()=>{},g={error:p,warn:p,info:p,debug:p,throw:e=>{throw"string"==typeof e?new Error(e):e},json:p,scope:()=>g},h=void 0,m={push:f,command:f,elb:f,logger:g},v=["call:elb"],w={};t(w,{delayedEvent:()=>b,pageView:()=>y});var y={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},b={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]};import{assign as k}from"@walkeros/core";import{createIngest as S}from"@walkeros/core";import{assign as E,createMappingRoot as _,clone as O,compileCache as q,checkCache as x,storeCache as j,createIngest as I,debounce as M,emitStep as D,getId as C,getGrantedConsent as A,isDefined as P,isFunction as $,isObject as R,OBSERVE_ENV_KEY as T,processEventMapping as W,stepId as B,tryCatchAsync as K,useHooks as L}from"@walkeros/core";import{emitStep as z}from"@walkeros/core";import{applyState as V,compileState as F}from"@walkeros/core";import{observeEnv as H}from"@walkeros/core";import{isArray as U,FatalError as G}from"@walkeros/core";import{tryCatch as Q,tryCatchAsync as N}from"@walkeros/core";import{stepId as Y}from"@walkeros/core";import{createIngest as X,FatalError as J,getMappingValue as Z,getSpanId as ee,parseTraceparent as te,isScope as ne,tryCatchAsync as oe,compileCache as se,checkCache as re,storeCache as ie,applyUpdate as ae,createMappingRoot as ce,stepId as ue}from"@walkeros/core";import{advanceChain as de,clone as le,createIngest as fe,deriveSpanId as pe,emitStep as ge,FatalError as he,isChainContinuation as me,isObject as ve,startChain as we,stepId as ye,tryCatchAsync as be,useHooks as ke,compileCache as Se,checkCache as Ee,storeCache as _e,createMappingRoot as Oe,validateStepEntry as qe,processEventMapping as xe,getTransformerMapping as je,getTransformerMappingWarnings as Ie}from"@walkeros/core";import{assign as Me,getSpanId as De,getTraceId as Ce,InvalidEventError as Ae,isFunction as Pe,isString as $e}from"@walkeros/core";import{isObject as Re}from"@walkeros/core";import{OBSERVE_STORAGE_KEY as Te,createBatchedPoster as We,createTelemetryObserver as Be,parseObserveCredential as Ke}from"@walkeros/core";import{assign as Le,createLogger as ze}from"@walkeros/core";import{createIngest as Ve,emitStep as Fe,FatalError as He,getGrantedConsent as Ue,getSpanId as Ge,InvalidEventError as Qe,processEventMapping as Ne,tryCatchAsync as Ye,useHooks as Xe}from"@walkeros/core";import{FatalError as Je,useHooks as Ze,tryCatchAsync as et}from"@walkeros/core";import{isObject as tt}from"@walkeros/core";import{emitStep as nt,useHooks as ot}from"@walkeros/core";import{compileMatcher as st,emitStep as rt,readCacheEnvelope as it,wrapCacheEnvelope as at}from"@walkeros/core";var ct={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ut(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function dt(e,t,n,o,s,r=Date.now(),i){const a={flowId:e.name??"default",stepId:t,stepType:n,phase:o,eventId:s,timestamp:new Date(r).toISOString(),elapsedMs:r-e.status.startedAt};return i?.traceId&&(a.traceId=i.traceId),i?.sourceId&&(a.sourceId=i.sourceId),i?.parentEventId&&(a.parentEventId=i.parentEventId),a}function lt(e){return e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}function ft(e,t,n,o){e.status.in++;const s=dt(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),ut(t,n,e));s.skipReason=o.reason,"consent"===o.reason?(s.consent={...o.consent},s.meta={at:o.at,required:{...o.required}}):s.meta={by:o.by??"route",at:o.at},z(e,s)}function pt(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function gt(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?F(e):void 0}function ht(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?V(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function mt(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.warn(`state: not in this build, ${t} state ignored`)}function vt(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))return e;const o=t.get(e);if(void 0!==o)return o;if(Array.isArray(e)){const o=[];t.set(e,o);for(const s of e)o.push(vt(s,t,n+1));return o}const s={};t.set(e,s);for(const[o,r]of Object.entries(e))s[o]="function"==typeof r?r:vt(r,t,n+1);return s}function wt(e,t){try{return e[t]}catch{return"[unreadable]"}}function yt(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const s=e;if(t.has(s))return"[circular]";if(o>=6)return"[truncated]";let r;t.add(s);try{if(Array.isArray(s))r=s.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(s)){const e={};for(const t of Object.keys(s))e[t]=n(wt(s,t),o+1);r=e}else r=function(e){try{return String(e)}catch{return"[object]"}}(s)}catch{r="[unreadable]"}return t.delete(s),r};return e.map(e=>n(e,0))}function bt(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:yt(e.args),ts:e.ts})))}function kt(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function St(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var Et=new WeakMap;function _t(e,t,n,o){Et.get(e)||(Et.set(e,!0),t.warn(n,o))}function Ot(e){Et.delete(e)}var qt=()=>Date.now();function xt(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function jt(e,t,n,o,s){if("partial"===n)return;const r=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;return"success"===n?(r.consecutiveFailures=0,r.state="closed",r.probing=!1,void(r.openUntil=void 0)):(r.consecutiveFailures+=1,"half-open"===r.state?(r.state="open",r.probing=!1,void(r.openUntil=qt()+s)):void(r.consecutiveFailures>=o&&(r.state="open",r.probing=!1,r.openUntil=qt()+s)))}function It(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 Mt(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(s[n]??0)+o,s[n]}function Dt(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 Ct(e,t,n,o,s){const r=Y(t,n);return(t,i)=>{try{if(i)return s?function(e,t,n,o,s,r){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??100},c=St(i,[o,s],a);if(c.dropped>0){const t=Mt(e.status,Y("destination",n),"dlq",c.dropped);_t(i,r,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&Ot(i);const u=It(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=xt(t.config.breaker);if(d){const o=t.config.id||n;jt(e.status.breakers,Y("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,s,n,i,t,o):e.status.failed++,void o.error("report error",{...Dt(t),event:i.name});e.status.connectionErrors[r]=(e.status.connectionErrors[r]??0)+1,o.error("connection error",Dt(t))}catch{}}}function At(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function Pt(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",s=e.logger.scope(`transformer:${o}`),r={collector:e,logger:s,id:n,ingest:fe(n),config:t.config,env:Ht(t.config.env),reportError:Ct(e,"transformer",n,s)};s.debug("init");const i=await ke(t.init,"TransformerInit",e.hooks,e.logger)(r);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},s.debug("init done")}return!0}async function $t(e,t,n,o,s,r){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:s,config:t.config,env:{...Ht(t.config.env),...r?{respond:r}:{}},reportError:Ct(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=ut(o,s,e),l=Date.now(),f=dt(e,ye("transformer",n),"transformer","in",u,l,d);f.inEvent=o,ge(e,f);try{const s=await ke(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),i=dt(e,ye("transformer",n),"transformer","out",u,r,d);return i.durationMs=r-l,i.outEvent=s,ge(e,i),a.debug("push done"),s}catch(t){const o=Date.now(),s=dt(e,ye("transformer",n),"transformer","error",u,o,d);throw s.durationMs=o-l,s.error=lt(t),ge(e,s),t}}function Rt(e){return"string"==typeof e.id?e.id:""}function Tt(e,t){const n=Rt(e);return""!==n&&""===Rt(t)?{...t,id:n}:t}function Wt(e,t,n,o){const s=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),r=le(t),i=Rt(e);var a;if(""===i)return{event:r,ingest:s};s._meta.parentEventId=i;const c=Rt(r);return""!==c&&c!==i||(r.id=pe(i,o)),{event:r,ingest:s}}function Bt(e,t){return{copies:e,respond:t}}function Kt(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 Lt(e,t,n){const o=await Promise.all(t.map((t,n)=>be(zt,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,Dt(t)),{copies:[]}))(e,t))),s=[];let r,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===r&&(r=e.droppedBy):s.push(...e.copies)}),0===s.length?{copies:s,respond:i,...a?{stopped:!0}:{},...void 0!==r?{droppedBy:r}:{}}:Bt(s,i)}async function zt(e,t){const{ingest:n}=t;let{stack:o,event:s,respond:r}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=de(o,Oe(n,s),e.transformers);if("done"===i.kind)return Bt([{event:s,ingest:n}],r);if("stop"===i.kind)return{copies:[],respond:r,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=s;return Lt(e,i.branches.map((e,o)=>({stack:e,...Wt(t,t,n,o),respond:void 0})),r)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await Vt(e,t,s,n,r,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Lt(e,c.copies,r);s=c.event,r=c.respond,o=c.stack}}async function Vt(e,t,n,o,s,r){const{collector:i,transformers:a,chainContext:c}=e,u=t.id,d=a[u];let l=n,f=s;const p=(e=t.rest)=>({kind:"continue",event:Tt(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return i.logger.warn(`Transformer not found: ${u}`),p();const h=d.config?.cache,m=h?Se(h):void 0,v=m?pt(m,i):void 0;let w=r?.cacheMiss;if(!r){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});if(o._meta.hops++,o._meta.path.push(u),!await be(Pt,e=>{if(e instanceof he)throw e;return i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("transformer init failed",{transformer:u,...Dt(e)}),!1})(i,d,u))return g({copies:[],respond:f});if(c&&void 0!==d.config?.chainMocks?.[c]){const e=d.config.chainMocks[c];return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,p()}if(void 0!==d.config?.mock)return i.logger.scope(`transformer:${d.type||"unknown"}`).debug("mock"),l=d.config.mock,p();if(d.config?.disabled)return p();if(m&&v){const e=await Ee(m,v,Oe(o,l));if("HIT"===e?.status&&e.value)return l=e.value,m.stop?g({copies:[{event:Tt(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(w={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,s,r,i){const a=t[n],c=a?a.config.before:void 0,u=await Ft(e,t,c,o,s,r,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[s]=e.copies;if(e.copies.length>1||s.ingest!==o){const n={member:t,cacheMiss:w};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=s.event}}const y=gt(d.config?.state),b=y?.filter(e=>"get"===e.mode),k=y?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?ht(i,k,e,o):e;b&&b.length>0&&(l=await ht(i,b,l,o));const E=await be($t,e=>(i.status.failed++,i.logger.scope(`transformer:${d.type||"unknown"}`).error("Push failed",Dt(e)),!1))(i,d,u,l,o,f);if(!1===E)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(E)&&1!==E.length){if(0===E.length)return g({copies:[],respond:f});const e=l,n=[];for(let s=0;s<E.length;s++){const r=E[s],i=await S(r.event||e);n.push({stack:Kt(t,r.next),...Wt(e,i,o,s),respond:f})}return{kind:"fork",copies:n}}const _=Array.isArray(E)?E[0]:E;let O;return _&&"object"==typeof _&&(_.respond&&(f=_.respond),_.event&&(l=_.event),O=_.next),l=await S(l),w&&v&&_e(v,w.key,l,w.ttl),p(Kt(t,O))}async function Ft(e,t,n,o,s,r,i){const a=s??fe("string"==typeof n?n:"chain");return void 0===n?Bt([{event:o,ingest:a}],r):(i&&(a._meta.chainPath=i),zt({collector:e,transformers:t,chainContext:i},{stack:me(n)?n:we(n),event:o,ingest:a,respond:r}))}function Ht(e){return e&&ve(e)?e:{}}var Ut=1e4;function Gt(e){return"number"==typeof e&&e>0?e:Ut}var Qt=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Nt(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new Qt(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}async function Yt(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const s=n||t.config?.id||"unknown";for(const{type:n,data:r}of o){if(an(n)&&!fn(e,t,n))continue;const o=t.on;let i=!1;await oe(()=>Nt(Promise.resolve(o(n,r)),Ut,`Source "${s}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof J)throw t;t instanceof Qt?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,...Dt(t)})})(),an(n)&&!i&&ln(e,t,n)}}function Xt(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Jt(e,t,n){const{code:o,config:s={},env:r={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=s.state??n.state,f=gt(l);mt(e,ue("source",t),l);const p=u,g=p?se({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),v=async(n,o,r)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:ee()};let d=[{event:u,ingest:r.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Ft(e,e.transformers||{},c,u,r.ingest,r.respond,n);if(0===o.copies.length)return ft(e,u,r.ingest,{reason:"dropped",by:o.droppedBy,at:n}),so({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),d=o.copies}if(g){const t=pt(g,e);if(t){const n=ce(r.ingest),o=await re(g,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await ae(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),r.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&r.respond){const s=r.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{ie(t,u,n,d),a?i=(async()=>{const t=await ae(n,a,c,e);s(t)})():s(n)};r.respond=l}"MISS"!==o.status||g.stop||ie(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(d=await Promise.all(d.map(async t=>({event:await ht(e,f,t.event,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of d)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:r.respond,mapping:s,preChain:a});return i&&await i,l},w=async n=>{const o=X(t),r=te(ne(n)?n?.headers?.traceparent:void 0);if(r&&(o._meta.trace=r.trace,o._meta.parentEventId=r.parentSpan),!s.ingest||void 0===n)return o;const i=await Z(n,s.ingest,{collector:e});return{...o,...i,_meta:o._meta}},y=e.logger.scope("source").scope(t),b={...r,push:async(e,n={})=>{const o={ingest:X(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:y},k={collector:e,logger:y,id:t,config:s,env:b,withScope:async(e,t,n)=>{const o={ingest:await w(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:Ct(e,"source",t,y)},S=await oe(o,n=>{if(n instanceof J)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...Dt(n)})})(k);if(!S)return;const E=S.type||"unknown",_=e.logger.scope(E).scope(t);return b.logger=_,i&&(S.config={...S.config,primary:i}),S}async function Zt(e){for(const[t,n]of Object.entries(e.sources)){if(Xt(n))continue;const o=n.config.require;if(!o?.length)continue;const s=o.filter(t=>!un(e,t));s.length!==o.length&&(n.config.require=s,Xt(n)&&await Yt(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const s=o.filter(t=>!un(e,t));if(n.config&&(n.config.require=s),s.length>0)continue;delete e.pending.destinations[t];const r=ro(n);!1!==r.config.queue&&(r.queuePush=[...e.queue]),e.destinations[t]=r,await zn(e,r,t)}}function en(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 tn=!1;function nn(){tn||(tn=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function on(e,t,n,o){if(n instanceof G)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...Dt(n)})}var sn=["consent","user","globals","custom"];function rn(e){return sn.includes(e)}function an(e){return rn(e)}function cn(e,t){return rn(t)&&Object.keys(e[t]).length>0}function un(e,t){if(rn(t))return cn(e,t);switch(t){case ct.Run:case ct.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function dn(e,t){return e.cellVersion?.[String(t)]??0}function ln(e,t,n){Pn(e,t,n,dn(e,n))}function fn(e,t,n){return e.allowed&&dn(e,n)>function(e,t,n){const o=e.delivery.get(t),s=o?.[String(n)];return void 0===s?-1:s}(e,t,n)}var pn=8;function gn(e){const t=e.cascade;if(t&&!hn.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,hn.set(n,(hn.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(hn.get(n)||1)-1;t>0?hn.set(n,t):(hn.delete(n),e.cascade===n&&(e.cascade=void 0))}}var hn=new WeakMap;function mn(e,t,n){const o=e.cascade;if(!o)return!0;let s=o.counts.get(t);s||(s={},o.counts.set(t,s));const r=String(n),i=(s[r]||0)+1;return s[r]=i,i<=pn||(i===pn+1&&e.logger.error("state delivery did not converge",{type:r}),!1)}function vn(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function wn(e,t,n,o,s){const r=t.on;if(!r)return!0;const i=an(o);if(i&&(yn.get(t)||bn.has(t)))return Mn(e,t,o),yn.get(t)||kn.add(t),!1;const a=i?dn(e,o):0,c=i&&function(e,t,n,o){if(xn.get(t)?.has(String(n)))return!0;const s=e.delivery?.get(t)?.[String(n)];return void 0===s||s<o-1}(e,t,o,a)?Rn(e,o):s,u=t.type||"unknown",d=e.logger.scope(u).scope("on").scope(o),l={collector:e,logger:d,id:n,config:t.config,data:c,env:io(t.env,t.config.env),reportError:Ct(e,"destination",n,d,t)};i&&(Cn(t,o),function(e,t,n){let o=On.get(e);o||(o={},On.set(e,o));const s=String(t),r=o[s];(void 0===r||r<n)&&(o[s]=n)}(t,o,a),bn.add(t));const f=Gt(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await N(()=>(p=Promise.resolve(r(o,l)),Nt(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),t=>{g=!1,t instanceof Qt&&(h=!0),on(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){bn.delete(t),m&&kn.delete(t);const s=xn.get(t);g?(Pn(e,t,o,a),s?.delete(String(o))):Mn(e,t,o),h?function(e,t,n,o,s,r,i){yn.set(t,(yn.get(t)||0)+1);const a=()=>{const r=(yn.get(t)||0)-1;var a,c,u,d;r>0?yn.set(t,r):yn.delete(t),jn(t,o),qn(t,o,s),An(e,t),i.debug("late settle after timeout"),kn.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,N(async()=>{await zn(a,c,u),!En(c)&&c.queuePush?.length&&await Zn(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",Dt(e))})())};r.then(a,a)}(e,t,n,o,a,p,d):(qn(t,o,a),An(e,t))}}return i&&!h&&kn.delete(t)&&await zn(e,t,n),g}var yn=new WeakMap,bn=new WeakSet,kn=new WeakSet,Sn=new WeakMap;function En(e){return Sn.get(e)}var _n=new WeakMap,On=new WeakMap;function qn(e,t,n){const o=On.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var xn=new WeakMap;function jn(e,t){const n=xn.get(e);n?n.add(String(t)):xn.set(e,new Set([String(t)]))}var In=new WeakMap;function Mn(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),jn(t,n),Sn.set(t,{type:n,since:Date.now()})}function Dn(e,t){return!!xn.get(t)?.size||sn.some(n=>cn(e,n)&&fn(e,t,n))}function Cn(e,t){_n.set(e,(_n.get(e)||0)+1),Sn.set(e,{type:t,since:Date.now()})}function An(e,t){const n=(_n.get(t)||0)-1;var o,s;n>0?_n.set(t,n):_n.delete(t),o=e,s=t,Sn.has(s)&&(_n.get(s)||Dn(o,s)||Sn.delete(s))}function Pn(e,t,n,o){let s=e.delivery.get(t);s||(s={},e.delivery.set(t,s));const r=String(n),i=s[r];(void 0===i||i<o)&&(s[r]=o)}function $n(e,t,n,o){if(!en(e))return void nn();const s=Rn(e,t,o);if(n.length)switch(t){case ct.Consent:!function(e,t,n){const o=n||e.consent,s=vn(e,ct.Consent);t.forEach(t=>{fn(e,t,ct.Consent)&&mn(e,t,ct.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{Q(t[n],t=>on(e,"consent",t,{key:n}))(o,s)}),ln(e,t,ct.Consent))})}(e,n,o);break;case ct.Ready:!function(e,t){if(!e.allowed)return;const n=vn(e,ct.Ready);t.forEach(t=>{Q(t,t=>on(e,"ready",t))(void 0,n)})}(e,n);break;case ct.Run:!function(e,t){if(!e.allowed)return;const n=vn(e,ct.Run);t.forEach(t=>{Q(t,t=>on(e,"run",t))(void 0,n)})}(e,n);break;case ct.Session:!function(e,t){if(!e.session)return;const n=vn(e,ct.Session);t.forEach(t=>{Q(t,t=>on(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=vn(e,t),r=an(t);n.forEach(n=>{"function"==typeof n&&(r&&!fn(e,n,t)||r&&!mn(e,n,t)||(Q(n,n=>on(e,"generic",n,{type:t}))(s,o),r&&ln(e,n,t)))});break}}}function Rn(e,t,n){if(rn(t))return n||e[t];switch(t){case ct.Session:return e.session;case ct.Config:return n||e.config;default:return}}async function Tn(e,t,n,o,s){if(!t.on)return!1;if(an(o)&&!fn(e,t,o))return!1;if(an(o)&&!mn(e,t,o))return!1;const r=an(o);if(r&&Wn.has(t))return Bn.add(t),!1;const i=r?dn(e,o):0;r&&Wn.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await N(()=>(u=Promise.resolve(a(o,s)),Nt(u,Ut,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof Qt&&(d=!0),on(e,"source",t,{sourceId:n,type:o})})()}finally{r&&!d&&Wn.delete(t)}if(r)if(d){const o=()=>{Wn.delete(t),Bn.delete(t),e.allowed&&e.sources[n]===t&&N(()=>Kn(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",Dt(t))})()};u.then(o,o)}else Pn(e,t,o,i),Bn.delete(t)&&await Kn(e,t,n);return!1===c}var Wn=new WeakSet,Bn=new WeakSet;async function Kn(e,t,n){const o=gn(e);try{for(const o of sn)await Tn(e,t,n,o,Rn(e,o))}finally{o()}}async function Ln(e,t,n,o,s){if(!t.on)return;const r=an(o);if(r&&!fn(e,t,o))return;const i=On.get(t)?.[String(o)];if(r&&void 0!==i&&i>=dn(e,o))return;if(r&&!mn(e,t,o)){if(t.config.init)return void Mn(e,t,o);const n=t.queueOn=t.queueOn||[],s={type:o,data:Rn(e,o)},r=n[n.length-1];return r&&r.type===o?n[n.length-1]=s:n.push(s),ln(e,t,o),void xn.get(t)?.delete(String(o))}const a=In.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:s}),void(r&&(ln(e,t,o),a&&!a.held&&(Cn(t,o),a.held=!0)));await wn(e,t,n,o,s)}async function zn(e,t,n){if(!t.on)return;const o=gn(e);try{for(const o of sn)(cn(e,o)||xn.get(t)?.has(String(o)))&&await Ln(e,t,n,o,Rn(e,o))}finally{o()}}function Vn(e){return(_n.get(e)||0)>0}function Fn(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var Hn=1e3,Un=1e3,Gn=3e4,Qn=Object.freeze({batched:!0});function Nn(e){return e===Qn}var Yn=" batch-all";function Xn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Jn(e){for(const t of e)En(t.destination)&&(t.drain=!0)}async function Zn(e,t,n={},o){if(!e.allowed)return so({ok:!1});if(!t)return eo(e,void 0,n,o);const s=await async function(e,t,n={}){const o=n.ingest??S(n.id||"unknown"),s=e.config.next;if(void 0===s)return{copies:[{event:t,ingest:o}],respond:n.respond};const r=await Ft(e,e.transformers||{},s,t,o,n.respond,ho),i=r.respond??n.respond;return 0===r.copies.length?(e.logger.debug("Event dropped by collector.next"+(r.droppedBy?` (${r.droppedBy})`:"")),ft(e,t,o,{reason:"dropped",by:r.droppedBy,at:ho}),{copies:[],respond:i,dropped:!0}):r.stopped?{copies:[],respond:i}:{copies:r.copies.map(t=>({event:po(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===s.copies.length)return so({ok:!0,...s.dropped?{dropped:!0}:{}});const r=[];for(const t of s.copies)r.push(await eo(e,t.event,{id:n.id,ingest:t.ingest,respond:s.respond},o));return r[0]}async function eo(e,t,n,o){const{user:s}=e;if(t){const n=kt(e.config.queueMax),o=St(e.queue,t,{max:n});if(o.dropped>0){const t=Mt(e.status,B("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&&Ot(e.queue);e.status.in++}o||(o=e.destinations);const r=e.transformers||{},i=await Promise.all(Object.entries(o||{}).map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=B("destination",a),u=xt(i.config.breaker);if(u&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const s=qt();return void 0!==o.openUntil&&s<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=s+n,!1)}(e.status.breakers,c,u.cooldown))return{id:o,destination:i,skipped:!0};const d=t=>{u&&jt(e.status.breakers,c,t,u.threshold,u.cooldown)},l=()=>{u&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,c)},f=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,s=i.config.id||o,r={max:i.config.queueMax??Hn};let a=0;for(const e of t)a+=St(n,e,r).dropped;if(a>0){It(e,s);const t=Mt(e.status,B("destination",s),"queue",a);_t(n,e.logger.scope(i.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:s,cap:r.max,droppedCount:t})}else n.length<r.max&&Ot(n)};i.on&&i.config.init&&!En(i)&&!Vn(i)&&Dn(e,i)&&await zn(e,i,o);const p=En(i);if(p&&!Vn(i)&&Date.now()-p.since>=Gt(i.config.timeout)&&await zn(e,i,o),En(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[O(t)];return f(e),{id:o,destination:i,queue:e}}let g=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&g.push(O(t));const h=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:I("unknown");if(!g.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!g.length&&i.queueOn?.length){if(!A(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await no(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(En(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};g=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const m=t=>{const n=e.consent,s=[],r=t.filter(t=>{const r=A(i.config.consent,n,t.consent);if(r)return t.consent=r,s.push(t),!1;const a=dt(e,B("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),ut(t,h,e));return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),D(e,a),!0});return{allowed:s,skipped:r}},v=e.consent,{allowed:w,skipped:y}=m(g);if(f(y),!w.length)return l(),{id:o,destination:i,queue:g};const b=new Set(i.queuePush);let k=!1;try{k=await no(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),d("transport-failure")}if(!k)return l(),{id:o,destination:i,queue:g};if(En(i))return l(),f(w),{id:o,destination:i,queue:w};const S=[];if(e.consent!==v){const t=m(w.map(t=>({...t,consent:e.consent})));w.splice(0,w.length,...t.allowed),S.push(...t.skipped)}const M=i.queuePush||[],C=M.filter(e=>!b.has(e));if(C.length){i.queuePush=M.filter(e=>b.has(e));const t=m(C.map(t=>({...t,consent:e.consent})));w.push(...t.allowed),S.push(...t.skipped)}if(f(S),!w.length)return l(),S.length?{id:o,destination:i,queue:S}:{id:o,destination:i,skipped:!0};let P,$;i.dlq||(i.dlq=[]);const R=i.config.before,T=i.config.next,W=i.config?.cache,L=W?q(W):void 0,z=L?pt(L,e):void 0,V=gt(i.config?.state),F=V?.filter(e=>"get"===e.mode),H=V?.filter(e=>"set"===e.mode);let U=0,G=0,Q=0;return await Promise.all(w.map(async t=>{let a,c;if(t.user=E(s,t.user),L?.stop&&z){const e=_(h,t),n=await x(L,z,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let u=[{event:t,ingest:h}],d=n.respond;if(void 0!==R){const s=`destination.${o}.before`,i=await Ft(e,r,R,t,h,n.respond,s);if(0===i.copies.length){const n=dt(e,B("destination",o),"destination","skip","string"==typeof t.id?t.id:"",Date.now(),ut(t,h,e));return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:s},D(e,n),t}i.respond&&(d=i.respond),u=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const l=async(t,n,s)=>{let a=s,u=!1;if(L&&!L.stop&&z){const e=_(n,t??void 0),o=await x(L,z,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},u=!0)}F&&F.length>0&&t&&(t=await ht(e,F,t,n));const l=Date.now();let f=!1;const p=await K(oo,n=>{const s=i.type||"unknown";e.logger.scope(s).error("Push failed",{...Dt(n),event:t.name}),P=n,f=!0;const r=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},u=St(r,[t,n],c);if(u.dropped>0){It(e,a);const t=Mt(e.status,B("destination",a),"dlq",u.dropped);_t(r,e.logger.scope(i.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:c.max,droppedCount:t})}else r.length<c.max&&Ot(r)})(e,i,o,t,n,d);if(U+=Date.now()-l,a&&z&&void 0===i.config.mock&&(u?j(z,a.key,p??!0,a.ttl):void 0===c&&(c=p??!0)),!f&&!Nn(p)&&H&&H.length>0&&t&&(t=await ht(e,H,t,n)),void 0===p||Nn(p)||($=p),Nn(p)&&G++,!f&&T){void 0!==p&&(n._response=p);const s=await Ft(e,r,T,t,n,d,`destination.${o}.next`);s.respond&&(d=s.respond)}return!0};for(const e of u)await l(e.event,e.ingest,a)&&Q++;return a&&z&&void 0!==c&&void 0===i.config.mock&&j(z,a.key,c,a.ttl),t})),{id:o,destination:i,error:P,response:$,totalDuration:U,batchedCount:G,allowedCount:w.length,pushedCount:Q,canonicalId:a,breakerConfig:u}})),a={},c={},u={};for(const t of i){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};It(e,t.id);const s=e.status.destinations[t.id],r=Date.now();s.queuePushSize=n.queuePush?.length??0,s.dlqSize=n.dlq?.length??0;const i=t.breakerConfig,d=t.canonicalId?B("destination",t.canonicalId):void 0,l=t=>{i&&d&&jt(e.status.breakers,d,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,u[t.id]=o,s.failed++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.failed++,l("transport-failure");else if(t.queue&&t.queue.length)c[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,c=t.pushedCount??i;(Math.max(0,c-n)>0||0===i)&&(a[t.id]=o,s.count++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.out++,l("success"))}}return so({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(u).length&&{failed:u}})}var to=new WeakMap;async function no(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const s=to.get(t);if(s)return s;const r=async function(e,t,n,o){const s=await async function(e,t,n,o){const s=t.type||"unknown",r=e.logger.scope(s),i={collector:e,logger:r,id:o,config:t.config,env:io(t.env,t.config.env),reportError:Ct(e,"destination",o,r,t)};r.debug("init");const a=Date.now();let c;D(e,dt(e,B("destination",o),"destination","init","",a));try{c=await L(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),s=dt(e,B("destination",o),"destination","error","",n);throw s.durationMs=n-a,s.error=lt(t),D(e,s),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===s)return!1;if(t.config=s,t.queueOn?.length){const n=gn(e);!function(e){const t=e.queueOn?.find(({type:e})=>an(e));t&&Cn(e,t.type),In.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await wn(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])an(n)&&Mn(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=In.get(t);In.delete(t),n?.held&&An(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);to.set(t,r);try{return await r}finally{to.delete(t)}}return!0}async function oo(e,t,n,o,s,r){const{config:i}=t,a=await W(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:s,env:{...io(t.env,i.env),...r?{respond:r}:{}},reportError:Ct(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,f=void 0!==l?.batch,p=f?a.mappingKey||"* *":Yn;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},s=Xn(l?.batch),r=Xn(i.batch),a=s.wait??r.wait??Gn,c=s.size??r.size??Un,d=s.age??r.age??Gn,g=io(t.env,i.env),h=M(async()=>{const o=t.batches[p],s=o.batched;if(0===s.entries.length)return;const r={key:s.key,entries:s.entries,events:s.events,data:s.data};s.entries=[],s.events=[],s.data=[];const a=r.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:Ct(e,"destination",n,u,t)};u.debug("push batch",{events:r.entries.length});const d=t.config.id||n,l=It(e,d),f=xt(t.config.breaker),h=B("destination",d),m=t=>{f&&jt(e.status.breakers,h,t,f.threshold,f.cooldown)},v=Date.now(),w=new Map;let y,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],s={max:t.config.dlqMax??100};let r=0;for(const e of n)r+=St(o,e,s).dropped;if(r>0){const t=Mt(e.status,B("destination",d),"dlq",r);_t(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:s.max,droppedCount:t})}else o.length<s.max&&Ot(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let S=r.entries.length;const E=Gt(i.timeout),_=await K((o,s)=>Nt(Promise.resolve(L(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),E,`Destination "${n}" batch delivery timed out after ${E}ms`),e=>{S=0,b=!0,y=e,k(r.entries.map(t=>[t.event,e])),m("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:r.entries.length})})(r,c);if(R(O=_)&&Array.isArray(O.failed)&&_.failed.length>0){const e=[];for(const t of _.failed){const n=r.entries[t.index];if(!n||w.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);w.set(t.index,o),e.push([n.event,o])}if(e.length>0){k(e),S=Math.max(0,r.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}u.error("Push batch partial failure",{failed:e.length,delivered:S,entries:r.entries.length,causes:[...t.values()]})}}var O;const q=Date.now();r.entries.forEach((t,o)=>{const s=b||w.has(o),i=ut(t.event,t.ingest,e),a=dt(e,B("destination",n),"destination",s?"error":"flush","string"==typeof t.event.id?t.event.id:"",q,i);if(a.batch={size:r.entries.length,index:o},a.durationMs=q-v,s){const e=b?y:w.get(o);a.error=lt(e)}D(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-r.entries.length),S>0&&(l.count+=S,l.lastAt=Date.now(),e.status.out+=S,m("success"))},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:s,respond:r,rule:l,data:a.data}),c.batched.events.push(a.event),P(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=ut(o,s,e),h=Date.now(),m=dt(e,B("destination",n),"destination","in",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),a.event.consent&&(m.consent={...a.event.consent}),m.inEvent=a.event,D(e,m);const v=dt(e,B("destination",n),"destination","out",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),v.outEvent=a.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},D(e,v);const w=t.config.id||n,y=It(e,w);return y.inFlightBatch=(y.inFlightBatch??0)+1,c.batchFn(),Qn}{let r;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=function(e){const{simulation:t,...n}=e,o={},s=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:vt(t,s,1);const r=H(o,t);return{wrappedEnv:r.env,calls:r.calls,unresolved:r.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,r=e.calls,e.unresolved.length>0&&(e.wrappedEnv[T]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",l=ut(o,s,e),f=Date.now(),p=dt(e,B("destination",n),"destination","in",c,f,l);a.mappingKey&&(p.mappingKey=a.mappingKey),a.event.consent&&(p.consent={...a.event.consent}),p.inEvent=a.event,D(e,p);try{const o=Gt(i.timeout),s=await Nt(Promise.resolve(L(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=dt(e,B("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,bt(g,r),P(s)&&(g.meta={...g.meta,response:s}),a.mappingKey&&(g.mappingKey=a.mappingKey),D(e,g),u.debug("push done"),s}catch(t){const o=Date.now(),s=dt(e,B("destination",n),"destination","error",c,o,l);throw s.durationMs=o-f,s.error=lt(t),bt(s,r),a.mappingKey&&(s.mappingKey=a.mappingKey),D(e,s),t}}}function so(e){return{ok:!e?.failed,...e}}function ro(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:i}=At(e,"before"),{config:a}=At({...e,config:i},"next"),c={...t.config,...n,...a};s&&(c.cache=s),void 0!==r&&void 0===c.state&&(c.state=r);const u=io(t.env,o);return{...t,config:c,env:u}}function io(e,t){return e||t?t?e&&R(e)&&R(t)?{...e,...t}:t:e:{}}async function ao(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const s=o.destroy;if(!s)return;const r=o.type||"unknown",i=n.scope(r),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([s(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function co(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function uo(e,t,n){let o,s,r=!1;const i=[],a=gn(e);try{return await async function(){switch(t){case ct.Config:Re(n)&&(Me(e.config,n,{shallow:!1,merge:!1}),s=n,r=!0);break;case ct.Consent:if(Re(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=k(e.consent,n),{update:n}}(e,n);co(e,ct.Consent),s=t,r=!0}break;case ct.Custom:Re(n)&&(e.custom=Me(e.custom,n),co(e,ct.Custom),s=n,r=!0);break;case ct.Destination:Re(n)&&"code"in n&&Re(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:s={},before:r,next:i,cache:a,state:c}=t;if(!$(n.push))return so({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=r?{...u,before:r}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=C(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(mt(e,B("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Zt(e);const n=e.destinations[l];return n?Zn(e,void 0,{},{[l]:n}):so({ok:!0})}const f={...n,config:d,env:io(n.env,s)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),await zn(e,f,l),Zn(e,void 0,{},{[l]:f})}(e,n));break;case ct.Globals:Re(n)&&(e.globals=Me(e.globals,n),co(e,ct.Globals),s=n,r=!0);break;case ct.Hook:if(Re(n)&&$e(n.name)&&Pe(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,s=n,r=!0}break;case ct.On:if(Re(n)&&$e(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!en(e))return void nn();const o=e.on,s=o[t]||[],r=U(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,$n(e,t,r)}(e,t,o)}break;case ct.Ready:r=!0;break;case ct.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=Ce(),e.count=0,t&&(t.consent&&(e.consent=Me(e.consent,t.consent),co(e,ct.Consent)),t.user&&(e.user=Me(e.user,t.user),co(e,ct.User)),t.globals&&(e.globals=Me(e.config.globalsStatic||{},t.globals),co(e,ct.Globals)),t.custom&&(e.custom=Me(e.custom,t.custom),co(e,ct.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Zt(e);const o=await async function(e){if(!en(e))return nn(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const s=async()=>{for(const t of sn)cn(e,t)&&await Ln(e,o,n,t,Rn(e,t))};t.push(Fn(n,o,s()))}for(const t of sn){if(!cn(e,t))continue;const n=Rn(e,t);$n(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>Xt(e)).map(([o,s])=>Tn(e,s,o,t,n)))}return t}(e);let s=!0;const r={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:o}of t){const t=await e.push(n,o);!1===t.ok&&(s=!1),t.failed&&Object.assign(r,t.failed)}}Jn(o);const i=await Zn(e);if(n.push(...o),s)return i;const a={...i.failed??{},...r};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),r=!0;break;case ct.Session:r=!0;break;case ct.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await ao(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const s=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){s.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await ao(e.destinations,"destination",t),await ao(e.transformers,"transformer",t),await ao(e.stores,"store",t)}(e));break;case ct.User:Re(n)&&(Me(e.user,n,{shallow:!1}),co(e,ct.User),s=n,r=!0);break;default:return e.logger.warn("unknown command",{command:t}),so({ok:!1})}if(r){const n=await async function(e,t,n,o){if(!en(e))return nn(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let s=n||[];n||(s=e.on[t]||[]);const r=Rn(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&&(Xt(o)?i.push(Tn(e,o,n,t,r)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:r})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(Fn(n,o,Ln(e,o,n,t,r)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))Xt(n)&&n.queueOn?.length&&await Yt(e,n,t);const u=Object.values(e.sources).some(e=>!Xt(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Zt(e),$n(e,t,s,o),{ok:!c,deliveries:a}}(e,t,void 0,s);i.push(...n.deliveries),Jn(n.deliveries);const r=function(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},s={...e.failed??{}};for(const e of t){for(const[t,s]of Object.entries(e.done??{}))n[t]=s,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))s[t]=n,delete o[t];Object.assign(o,e.queued??{})}const r={...e,ok:e.ok&&t.every(e=>e.ok)};return delete r.done,delete r.queued,delete r.failed,Object.keys(n).length&&(r.done=n),Object.keys(o).length&&(r.queued=o),Object.keys(s).length&&(r.failed=s),r}(await Zn(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:s})=>{if(await o,s&&e.allowed&&!En(n)&&n.queuePush?.length&&e.destinations[t]===n)return Zn(e,void 0,{},{[t]:n})}))).filter(P)}(e,i));if(o&&!1===o.ok){const e={...r.failed??{},...o.failed??{}};o={...r,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=r}return o||so({ok:!0})}()}finally{a()}}function lo(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function fo(e,t,n){return go(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function po(e,t,n){return go(e,lo(e,t),n,{globals:{},user:{},consent:{}})}function go(e,t,n,o){const s=t.name;if("string"!=typeof s)throw new Ae(void 0===s?"Event name is required":"Event name is invalid");if(!s)throw new Ae("Event name is required");const[r,i]=s.split(" ");if(!r||!i)throw new Ae("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${r} ${i}`,data:u={},context:d={},globals:l={},custom:f={},user:p=o.user,nested:g=[],consent:h=o.consent,id:m=De(),trigger:v="",entity:w=r,action:y=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},E=S.count??(e.count+=1),_=S.trace??n?._meta.trace??e.trace,O={...S,count:E};void 0!==_&&(O.trace=_);const q=e.name??S.platform??"default",x=e.release??"4.8.1-next-1792019907609";return O.release={...S.release,[q]:x},{name:c,data:u,context:d,globals:Me(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:w,action:y,timestamp:a,timing:b,source:O}}var ho="collector.next";function mo(e,t){const n=Xe(async(n,o={})=>await Ye(async()=>{if(!e.allowed){const t=kt(e.config.queueMax),s=St(e.preRunQueue,{event:n,options:o},{max:t});if(s.dropped>0){const n=Mt(e.status,"collector.preRun","queue",s.dropped);_t(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&Ot(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:s.dropped}),so({ok:!0})}const s=Date.now(),{id:r,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f=a,p=n;const g=d||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,l):void 0;let h=i??Ve(r||"unknown");if(c){const t=await Ne(p,c,e);if(t.ignore)return so({ok:!0});if(c.consent){const n=t.event.consent;if(!Ue(c.consent,e.consent,n)){const o=r?`source.${r}`:"collector.push";return e.logger.debug("Event dropped by source consent",{at:o,required:c.consent}),ft(e,t.event,h,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),so({ok:!0,dropped:!0})}}p=t.event}if(void 0!==u){const n=r?`source.${r}.next`:void 0,o=await Ft(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})`:"")),ft(e,p,h,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),so({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(f=o.respond),so({ok:!0});if(o.respond&&(f=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=fo(e,t(n.event),n.ingest);return Zn(e,o,{id:r,ingest:n.ingest,respond:f},g)}));if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return n[0]??so({ok:!0})}p=o.copies[0].event,h=o.copies[0].ingest}const m=function(e,t,n){return fo(e,lo(e,t),n)}(e,p,h),v=await Zn(e,m,{id:r,ingest:h,respond:f},g);if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return v},t=>{if(t instanceof He)throw t;if(t instanceof Qe){const n=o.id;if(n){e.status.sources[n]||(e.status.sources[n]={count:0,duration:0});const t=e.status.sources[n];t.rejected=(t.rejected??0)+1}return e.logger.warn("invalid event rejected",{error:t.message}),so({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...Dt(t),event:n.name}),so({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id&&""!==t.id?t:{...t,id:Ge()},r="string"==typeof s.id?s.id:"",i=ut(s,o?.ingest,e),a=Date.now(),c=dt(e,"collector.push","collector","in",r,a,i);c.inEvent=s,Fe(e,c);try{const t=await n(s,o),c=Date.now(),u=dt(e,"collector.push","collector","out",r,c,i);return u.durationMs=c-a,u.outEvent=t,Fe(e,u),t}catch(t){const n=Date.now(),o=dt(e,"collector.push","collector","error",r,n,i);throw o.durationMs=n-a,o.error=lt(t),Fe(e,o),t}}}function vo(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,s=Math.floor(t*n),r=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;return o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of r)void 0!==o.expires&&o.expires<=e&&(r.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref()),{type:"memory",config:{},get(e){const t=r.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(r.delete(e),i.evictions_ttl++,void i.misses++):(r.delete(e),r.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!r.has(e);a||r.delete(e),r.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,r.size>t&&function(){if(r.size<=t)return;const e=r.size-s;let n=0;for(const t of r.keys()){if(n>=e)break;r.delete(t),n++}i.evictions_entries+=n}()},delete(e){r.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),r.clear()}}}function wo(e,t){const{cacheConfig:n,cacheStore:o,namespace:s,logger:r,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=dt(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},rt(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?st(e.match):()=>!0,ttl:e.ttl})),l=e=>`${s}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return d.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),s=await o.get(n),r=it(s);if(void 0!==r){if(!("expired"in r))return u.hits++,c(t,"hit"),r.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=p.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(async()=>{try{const s=await e.get(t);if(void 0===s)return;const r=f(t,s);if(r)try{const e=1e3*r.ttl;await o.set(n,at(s,e),e),u.populates++}catch(e){g("set",t,e)}return s}finally{p.delete(n)}})();return p.set(n,a),a},async set(t,n,s){u.writes++,await e.set(t,n,s);const r=f(t,n);if(r)try{const e=1e3*r.ttl;await o.set(l(t),at(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;r?r.warn(o,Dt(n)):console.warn(o,n)}}function yo(e,t,n){const o=`store.${n}`,s=ot(t.get,"StoreGet",e.hooks,e.logger),r=ot(t.set,"StoreSet",e.hooks,e.logger),i=ot(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),r=dt(e,o,"store","in","",n);r.meta={op:"get",key:t},nt(e,r);try{const r=await s(t),i=Date.now(),a=dt(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},nt(e,a),r}catch(s){const r=Date.now(),i=dt(e,o,"store","error","",r);throw i.durationMs=r-n,i.meta={op:"get",key:t},i.error=lt(s),nt(e,i),s}},t.set=async(t,n,s)=>{const i=Date.now(),a=dt(e,o,"store","in","",i);a.meta={op:"set",key:t},nt(e,a);try{await r(t,n,s);const a=Date.now(),c=dt(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},nt(e,c)}catch(n){const s=Date.now(),r=dt(e,o,"store","error","",s);throw r.durationMs=s-i,r.meta={op:"set",key:t},r.error=lt(n),nt(e,r),n}},t.delete=async t=>{const n=Date.now(),s=dt(e,o,"store","in","",n);s.meta={op:"delete",key:t},nt(e,s);try{await i(t);const s=Date.now(),r=dt(e,o,"store","out","",s);r.durationMs=s-n,r.meta={op:"delete",key:t},nt(e,r)}catch(s){const r=Date.now(),i=dt(e,o,"store","error","",r);throw i.durationMs=r-n,i.meta={op:"delete",key:t},i.error=lt(s),nt(e,i),s}}}async function bo(e){const t=Le({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=ze(n),s={...t.globalsStatic,...e.globals},r={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},observers:new Set,logger:o,on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};var i,a;void 0!==e.name&&(r.name=e.name),void 0!==e.release&&(r.release=e.release),void 0!==e.next&&(t.next=e.next),r.push=mo(r,e=>lo(r,e)),r.command=(a=uo,Ze(async(e,t,n)=>await et(async()=>await a(i,e,t,n),t=>{if(t instanceof Je)throw t;return i.status.failed++,i.logger.error("command failed",{...Dt(t),command:e}),so({ok:!1})})(),"Command",(i=r).hooks,i.logger)),r.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error("elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })",{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,s,...r)=>{if("string"==typeof t&&t.startsWith("walker ")){o(r)&&n(t);const i=t.replace("walker ","");return e.command(i,s)}let i;if("string"==typeof t)i={name:t},tt(s)?i.data=s:void 0!==s&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return so({ok:!1});i={...t},void 0!==s&&n(String(i.name))}return o(r)&&n(String(i.name)),e.push(i)}}(r);const c=e.stores||{};return"undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(r.stores=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,config:r={},env:i={}}=s,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:r,env:i,reportError:Ct(e,"store",o,a)},u=await t(c);n[o]=u}const o=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function s(r){const i=t[r];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(r),t=o.slice(-1===e?0:e).concat(r).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[r]="GRAY",o.push(r);const a=e[r].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${r}" cache.store references "${a}", which is not declared in flow.stores`);s(a)}o.pop(),t[r]="BLACK",n.push(r)}for(const n of Object.keys(e))"WHITE"===t[n]&&s(n);return n}(o);for(const t of s){const s=o[t].cache;if(!s)continue;let r,i;void 0!==s.store?(r=n[s.store],i=s.store):(n.__cache||(n.__cache=vo()),r=n.__cache,i="__cache");const a=s.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=wo(n[t],{storeId:t,cacheConfig:s,cacheStore:r,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&yo(e,o,t);return n}(r,c),function(e,t,n){const o=new Map;for(const[n,s]of Object.entries(e))t[n]&&o.set(s,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))s(t.env);function s(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const s=o.get(n);s&&(e[t]=s)}}}(c,r.stores,e)):Object.keys(c).length>0&&o.warn("stores: not in this build, config ignored"),r.stores.__cache||(r.stores.__cache=vo()),r.destinations=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t))mt(e,B("destination",o),s.config?.state??s.code.config?.state??s.state),s.config?.require?.length?e.pending.destinations[o]=s:n[o]=ro(s);return n}(r,e.destinations||{}),r.transformers=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,env:r={}}=s;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=qe(s,"Transformer");if(!t.ok){e.logger.warn(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=At(s,"before"),{config:a}=At({...s,config:i},"next"),c=Object.keys(r).length>0?{...a,env:r}:a,{cache:u}=s,d=u?{...c,cache:u}:c,l=s.config?.state??s.state;mt(e,ye("transformer",o),l);const f=void 0!==l&&void 0===d.state?{...d,state:l}:d,p=e.logger.scope("transformer").scope(o),g={collector:e,logger:p,id:o,ingest:fe(o),config:f,env:r,reportError:Ct(e,"transformer",o,p)},h=je(s);for(const t of Ie(s))e.logger.warn(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await xe(t,h,e.collector);return!n.ignore&&{event:n.event}}}:{type:"pass",config:e.config,push:e=>({event:e})}),v=await m(g);void 0!==s.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:s.before}),void 0!==s.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:s.next}),void 0!==l&&void 0===v.config?.state&&(v.config={...v.config??{},state:l}),n[o]=v}return n}(r,e.transformers||{}),r}var ko=globalThis;function So(e){try{const t=ko.window;if(!t)return;t.localStorage.getItem(Te)===e&&t.localStorage.removeItem(Te)}catch{}}function Eo(e,t){return void 0===t?e:n=>e({...n,release:t})}async function _o(e){const t=e??{},n=await bo(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=ko.window,t=ko.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(Te);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),s=t??function(){try{return ko.window?.localStorage.getItem(Te)??null}catch{return null}}();if(!s)return;const r=Ke(s);if(!r)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),So(s)):e.logger.warn("observe: malformed credential ignored"));if(r.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{ko.window?.localStorage.setItem(Te,e)}catch{}}(s),null!==t&&function(){const e=ko.window,t=ko.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),s=o>=0?n.slice(o):"",r=o>=0?n.slice(0,o):n,i=r.indexOf("?"),a=i>=0?r.slice(0,i):r,c=new t(i>=0?r.slice(i+1):"");c.delete(Te);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${s}`)}catch{}}();const a=We({url:`${n.url}/ingest/${r.ses}`,token:r.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(So(s),i&&e.observers.delete(i))}});i=Be(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Eo(a,e.release),n.flowId),{flowId:n.flowId??o,...void 0!==n.level?{level:n.level}:{},...void 0!==n.sample?{sample:n.sample}:{}}),e.observers.add(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const s=n.level;void 0!==s&&(e.observeLevel=()=>s),e.observers.add(Be(Eo(We({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.warn("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const t=await Jt(e,o,s);if(!t)continue;const r=s.config?.require;t.config={...t.config,init:!1,...r?{require:[...r]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await oe(n.init.bind(n),n=>{if(n instanceof J)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...Dt(n)})})(),o||(n.config.init=!0,Xt(n)&&await Yt(e,n,t))}return await Zt(e),n}(n,t.sources||{});const{consent:o,user:s,globals:r,custom:i}=t;o&&await n.command("consent",o),s&&await n.command("user",s),r&&await n.command("globals",r),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var Oo=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await _o({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};export{d as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{MappingSchema:()=>a,SettingsSchema:()=>s,mapping:()=>u,settings:()=>c});import{zodToSchema as o}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var s=r.object({events:r.array(r.object({delay:r.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")});import{z as i}from"@walkeros/core/dev";var a=i.object({}),c=o(s),u=o(a),d={};t(d,{createTrigger:()=>Tr,env:()=>l,step:()=>y});var l={};t(l,{init:()=>h,push:()=>m,simulation:()=>v});var f=async()=>({ok:!0}),p=()=>{},g={error:p,warn:p,info:p,debug:p,throw:e=>{throw"string"==typeof e?new Error(e):e},json:p,scope:()=>g},h=void 0,m={push:f,command:f,elb:f,logger:g},v=["call:elb"],y={};t(y,{delayedEvent:()=>b,pageView:()=>w});var w={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},b={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]};import{assign as k}from"@walkeros/core";import{createIngest as _}from"@walkeros/core";import{assign as E,createMappingRoot as S,clone as O,compileCache as q,checkCache as $,storeCache as A,createIngest as I,debounce as j,emitStep as x,getId as D,getGrantedConsent as M,getMappingKeyPaths as P,getMappingNoOpMessage as C,getMappingNoOpPaths as R,isDefined as T,isFunction as W,isObject as K,OBSERVE_ENV_KEY as L,processEventMapping as B,reportCause as F,StepError as V,stepId as z,tryCatchAsync as H,useHooks as U}from"@walkeros/core";import{emitStep as N,StepError as G,stepId as Q,toFailureReason as Y}from"@walkeros/core";import{reportCause as X,StepError as J,stepId as Z,toFailureReason as ee}from"@walkeros/core";import{reportCause as te,stepId as ne,toFailureReason as oe}from"@walkeros/core";import{stepId as re}from"@walkeros/core";import{StepError as se,stepId as ie}from"@walkeros/core";import{isArray as ae,FatalError as ce,reportCause as ue,stepId as de}from"@walkeros/core";import{tryCatch as le,tryCatchAsync as fe}from"@walkeros/core";import{createIngest as pe,FatalError as ge,getMappingValue as he,getSpanId as me,parseTraceparent as ve,isScope as ye,tryCatchAsync as we,compileCache as be,checkCache as ke,storeCache as _e,applyUpdate as Ee,createMappingRoot as Se,getMappingNoOpMessage as Oe,getMappingNoOpPaths as qe,stepId as $e}from"@walkeros/core";import{advanceChain as Ae,clone as Ie,createIngest as je,deriveSpanId as xe,emitStep as De,FatalError as Me,isChainContinuation as Pe,isObject as Ce,startChain as Re,stepId as Te,tryCatch as We,tryCatchAsync as Ke,useHooks as Le,compileCache as Be,checkCache as Fe,storeCache as Ve,createMappingRoot as ze,validateStepEntry as He,processEventMapping as Ue,getTransformerMapping as Ne,getTransformerMappingWarnings as Ge,getRouteGraph as Qe,reportCause as Ye,toFailureReason as Xe}from"@walkeros/core";import{applyState as Je,compileState as Ze}from"@walkeros/core";import{StepError as et}from"@walkeros/core";import{DEFAULT_DESTINATION_TIMEOUT_MS as tt,resolveDestinationTimeout as nt}from"@walkeros/core";import{observeEnv as ot}from"@walkeros/core";import{assign as rt,getSpanId as st,getTraceId as it,InvalidEventError as at,isFunction as ct,isString as ut}from"@walkeros/core";import{isObject as dt}from"@walkeros/core";import{reportCause as lt,StepError as ft,stepId as pt,toFailureReason as gt}from"@walkeros/core";import{createBatchedPoster as ht,createTelemetryObserver as mt,parseObserveCredential as vt}from"@walkeros/core";import{assign as yt,createCauseLog as wt,createLogger as bt}from"@walkeros/core";import{createIngest as kt,emitStep as _t,FatalError as Et,getGrantedConsent as St,getSpanId as Ot,InvalidEventError as qt,processEventMapping as $t,reportCause as At,StepError as It,toFailureReason as jt,tryCatchAsync as xt,useHooks as Dt}from"@walkeros/core";import{FatalError as Mt,useHooks as Pt,tryCatchAsync as Ct}from"@walkeros/core";import{isObject as Rt}from"@walkeros/core";import{emitStep as Tt,useHooks as Wt}from"@walkeros/core";import{compileMatcher as Kt,emitStep as Lt,readCacheEnvelope as Bt,wrapCacheEnvelope as Ft}from"@walkeros/core";var Vt={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Flush:"flush",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function zt(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function Ht(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 Ut(e,t="transport"){const n=e instanceof Error?e.message:String(e),o=Y(e instanceof G?e:new G(n,{code:t}));return{...e instanceof Error?{name:e.name,message:n}:{message:n},code:o.code,retryable:o.retryable,...void 0!==o.status?{status:o.status}:{}}}function Nt(e,t,n,o,r,s){const i=Ht(e,Q("destination",t),"destination",n,o&&"string"==typeof o.id?o.id:"",Date.now(),o?zt(o,r,e):void 0);s?.(i),N(e,i)}function Gt(e,t,n,o){e.status.in++;const r=Ht(e,"collector.push","collector","skip","string"==typeof t.id?t.id:"",Date.now(),zt(t,n,e));r.skipReason=o.reason,"consent"===o.reason?(r.consent={...o.consent},r.meta={at:o.at,required:{...o.required}}):"ignored"===o.reason?r.meta={at:o.at}:r.meta={by:o.by??"route",at:o.at},N(e,r)}function Qt(e){if(void 0===e)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");return e}function Yt(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const 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 Xt=new WeakMap;function Jt(e,t,n,o,r){Xt.get(e)||(Xt.set(e,!0),t[n](o,r))}function Zt(e){Xt.delete(e)}function en(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 tn(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 nn(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 on(e,t,n,o,r){const s=ne(t,n);return(t,i)=>{try{if(i){if(r)gn(e,r,n,[i],t,{message:"report error"});else{e.status.failed++;const n=oe(t);te(e,o,{step:s,code:n.code,status:n.status},"report error",{event:i.name,retryable:n.retryable,error:n.message})}return}e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.warn("connection error",nn(t))}catch{}}}var rn=5,sn=3e4,an=()=>Date.now();function cn(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:sn}:{threshold:e.threshold??rn,cooldown:e.cooldown??sn}}function un(e,t,n,o){const r=cn(t.config.breaker);r&&function(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;"success"===n?(s.consecutiveFailures=0,s.state="closed",s.probing=!1,s.openUntil=void 0):(s.consecutiveFailures+=1,("half-open"===s.state||s.consecutiveFailures>=o)&&(s.state="open",s.probing=!1,s.openUntil=an()+r))}(e.status.breakers,re("destination",t.config.id||n),o,r.threshold,r.cooldown)}var dn=["breaker-open","blocked","queue-full","not-ready","mapping"];function ln(e){return e.retryable&&!dn.includes(e.code)}function fn(e){return!1===e}function pn(){return new J("init returned false: throw a StepError that names the missing setting",{code:"not-ready"})}function gn(e,t,n,o,r,s={}){const i=ee(r),a=Z("destination",n),c=en(e,n),u=Date.now();if(o.length){c.failed+=o.length,c.lastAt=u,e.status.failed+=o.length;const n=t.dlq=t.dlq||[],s=t.config.dlqMax??100;let i=0;for(const e of o)i+=Yt(n,[e,r],{max:s}).dropped;if(i>0){const n=tn(e.status,a,"dlq",i);X(e,e.logger,{step:a,code:"dlq-overflow"},`destination.dlq full (dlqMax ${s}): oldest failed entries dropped`,{type:t.type,count:n})}else n.length<s&&Zt(n);c.dlqSize=n.length}if(!1!==s.breaker&&ln(i)&&un(e,t,n,"transport-failure"),!s.observed)for(const t of o)Nt(e,n,"error",t,void 0,e=>{e.error=Ut(r)});return!1===s.report||X(e,e.logger,{step:a,code:i.code,status:i.status},s.message??"Push failed",{type:t.type,event:o[0]?.name,retryable:i.retryable,error:i.message,...o.length>1?{count:o.length}:{}}),i}function hn(e,t,n,o,r){const s=en(e,n);s.skipped=(s.skipped??0)+1,e.logger.scope(t.type||"unknown").debug("event skipped",{reason:r,event:o.name})}function mn(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function vn(e){return("undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__)&&e?Ze(e):void 0}function yn(e,t,n,o){return"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__?Je(t,t=>{return o=e,(n=t)?o.stores[n]:o.stores.__cache;var n,o},n,e,o):Promise.resolve(n)}function wn(e,t,n){"undefined"==typeof __WALKEROS_STATE__||__WALKEROS_STATE__||void 0===n||e.logger.error(`state: not in this build, ${t} state ignored`)}var bn=class extends et{constructor(e){super(e,{code:"timeout"}),this.name="DestinationTimeoutError"}};function kn(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new bn(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}function _n(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function En(e,t,n,o){const r=nt(e.config.timeout);return kn(Promise.resolve(o),r,`Transformer "${t}" ${n} timed out after ${r}ms`)}async function Sn(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:je(n),config:t.config,env:Kn(t.config.env),reportError:on(e,"transformer",n,r)};r.debug("init");const i=await En(t,n,"init",Le(t.init,"TransformerInit",e.hooks,e.logger)(s));if(fn(i))return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function On(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:{...Kn(t.config.env),...s?{respond:s}:{}},reportError:on(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",d=zt(o,r,e),l=Date.now(),f=Ht(e,Te("transformer",n),"transformer","in",u,l,d);f.inEvent=o,De(e,f);try{const r=await En(t,n,"push",Le(t.push,"TransformerPush",e.hooks,e.logger)(o,c)),s=Date.now(),i=Ht(e,Te("transformer",n),"transformer","out",u,s,d);return i.durationMs=s-l,i.outEvent=r,De(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=Ht(e,Te("transformer",n),"transformer","error",u,o,d);throw r.durationMs=o-l,r.error=Ut(t,"transformer"),De(e,r),t}}var qn=new WeakMap;function $n(e,t,n){let o=qn.get(e);o||(o=new Set,qn.set(e,o)),o.has(t)||(o.add(t),e.logger.error(`Transformer not found: ${t} (named in ${n}); the chain goes on without it`))}function An(e,t,n){if(void 0===n)return;const o=e.transformers||{},r=We(Qe,()=>[])(n,o);for(const n of r)for(const r of n.targets)o[r]||$n(e,r,t)}function In(e,t,n,o,r){const s=Xe((i=o)instanceof J?i:new J(i instanceof Error?i.message:String(i),{code:"transformer",cause:i}));var i;return e.status.failed++,Ye(e,e.logger,{step:Te("transformer",t),code:s.code,status:s.status},r,{type:n,retryable:s.retryable,error:s.message}),{by:t,reason:s}}function jn(e){return"string"==typeof e.id?e.id:""}function xn(e,t){const n=jn(e);return""!==n&&""===jn(t)?{...t,id:n}:t}function Dn(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=Ie(t),i=jn(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=jn(s);return""!==c&&c!==i||(s.id=xe(i,o)),{event:s,ingest:r}}function Mn(e,t){return{copies:e,respond:t}}function Pn(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 Cn(e,t,n){const o=await Promise.all(t.map((t,n)=>Ke(Rn,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,nn(t)),{copies:[]}))(e,t))),r=[];let s,i,a=n,c=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(a=e.respond),e.stopped||(c=!1),!i&&e.failure&&(i=e.failure),e.stopped||0===e.copies.length?void 0===s&&(s=e.droppedBy):r.push(...e.copies)}),0===r.length?{copies:r,respond:a,...c?{stopped:!0}:{},...void 0!==s?{droppedBy:s}:{},...i?{failure:i}:{}}:{...Mn(r,a),...i?{failure:i}:{}}}async function Rn(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=Ae(o,ze(n,r),e.transformers);if("done"===i.kind)return Mn([{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 Cn(e,i.branches.map((e,o)=>({stack:e,...Dn(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 Tn(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Cn(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function Tn(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:xn(n,l),respond:f,stack:e}),g=e=>({kind:"halt",result:e});if(!d)return $n(i,u,c??"a chain"),p();const h=d.config?.cache,m=h?Be(h):void 0,v=m?mn(m,i):void 0;let y=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${u}`),g({copies:[],respond:f});let e;if(o._meta.hops++,o._meta.path.push(u),!await Ke(Sn,t=>{if(t instanceof Me)throw t;return e=t,!1})(i,d,u)){const t=e??pn();return g({copies:[],respond:f,failure:In(i,u,d.type,t,"transformer init failed")})}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 Fe(m,v,ze(o,l),void 0,i);if("HIT"===e?.status&&e.value)return l=e.value,m.stop?g({copies:[{event:xn(n,l),ingest:o}],respond:f,stopped:!0}):p();"MISS"===e?.status&&(y={key:e.key,ttl:e.rule.ttl})}if(void 0!==d.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,u=await Wn(e,t,c,o,r,s,i);return u.stopped&&0===u.copies.length&&!u.droppedBy?{...u,droppedBy:n}:u}(i,a,u,l,o,f,c),n=e.respond??f;if(0===e.copies.length||e.stopped)return g({...e,respond:n});f=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:y};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const w=vn(d.config?.state),b=w?.filter(e=>"get"===e.mode),k=w?.filter(e=>"set"===e.mode),_=async e=>k&&0!==k.length?yn(i,k,e,o):e;let E;b&&b.length>0&&(l=await yn(i,b,l,o));const S=await Ke(On,e=>{E=In(i,u,d.type,e,"Push failed")})(i,d,u,l,o,f);if(E)return g({copies:[],respond:f,failure:E});if(!1===S)return g({copies:[],respond:f,droppedBy:u});if(Array.isArray(S)&&1!==S.length){if(0===S.length)return g({copies:[],respond:f});const e=l,n=[];for(let r=0;r<S.length;r++){const s=S[r],i=await _(s.event||e);n.push({stack:Pn(t,s.next),...Dn(e,i,o,r),respond:f})}return{kind:"fork",copies:n}}const O=Array.isArray(S)?S[0]:S;let q;return O&&"object"==typeof O&&(O.respond&&(f=O.respond),O.event&&(l=O.event),q=O.next),l=await _(l),y&&v&&Ve(v,y.key,l,y.ttl),p(Pn(t,q))}async function Wn(e,t,n,o,r,s,i){const a=r??je("string"==typeof n?n:"chain");return void 0===n?Mn([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),Rn({collector:e,transformers:t,chainContext:i},{stack:Pe(n)?n:Re(n),event:o,ingest:a,respond:s}))}function Kn(e){return e&&Ce(e)?e:{}}async function Ln(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(Yn(n)&&!to(e,t,n))continue;const o=t.on;let i=!1;await we(()=>kn(Promise.resolve(o(n,s)),tt,`Source "${r}" on(${n}) did not settle within ${tt}ms`),t=>{if(t instanceof ge)throw t;t instanceof bn?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...nn(t)})})(),Yn(n)&&!i&&eo(e,t,n)}}function Bn(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Fn(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:u,terminus:d}=n;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const n=qe("source",r,"config");n.length&&e.logger.scope("source").error(`Source ${t}: ${Oe("source",n)}`),An(e,`source.${t}.before`,c),An(e,`source.${t}.next`,a)}const l=r.state??n.state,f=vn(l);wn(e,$e("source",t),l);const p=u,g=p?be({...p,stop:p.stop??!0}):void 0,h=d??e.push,m=Boolean(d),v=async(n,o,s)=>{if(m)return h(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:me()};let d,l=[{event:u,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await Wn(e,e.transformers||{},c,u,s.ingest,s.respond,n);if(o.failure&&(d=tr(o.failure),0===o.copies.length))return d;if(0===o.copies.length)return Gt(e,u,s.ingest,{reason:"dropped",by:o.droppedBy,at:n}),mr({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),l=o.copies}if(g){const t=mn(g,e);if(t){const n=Se(s.ingest),o=await ke(g,t,n,void 0,e);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await Ee(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=>{_e(t,u,n,d),a?i=(async()=>{const t=await Ee(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||_e(t,o.key,!0,o.rule.ttl)}}}f&&f.length>0&&(l=await Promise.all(l.map(async t=>({event:await yn(e,f,t.event,t.ingest),ingest:t.ingest}))));const p=[];for(const e of l)p.push(await h(e.event,{...o,id:t,ingest:e.ingest,respond:s.respond,mapping:r,preChain:a}));const[v,...y]=p,w=er(v??mr({ok:!0}),d?[...y,d]:y);return i&&await i,w},y=async n=>{const o=pe(t),s=ve(ye(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 he(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},w=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:pe(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:w},k={collector:e,logger:w,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await y(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:on(e,"source",t,w)},_=await we(o,n=>{if(n instanceof ge)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...nn(n)})})(k);if(!_)return;const E=_.type||"unknown",S=e.logger.scope(E).scope(t);return b.logger=S,i&&(_.config={..._.config,primary:i}),_}async function Vn(e){for(const[t,n]of Object.entries(e.sources)){if(Bn(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Jn(e,t));r.length!==o.length&&(n.config.require=r,Bn(n)&&await Ln(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=>!Jn(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=vr(n);yr(e,t,s,!0),!1!==s.config.queue&&(s.queuePush=e.queue.map(e=>({event:e}))),e.destinations[t]=s,await Mo(e,s,t)}}function zn(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 Hn=!1;function Un(){Hn||(Hn=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Nn(e,t,n,o){if(n instanceof ce)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...nn(n)})}var Gn=["consent","user","globals","custom"];function Qn(e){return Gn.includes(e)}function Yn(e){return Qn(e)}function Xn(e,t){return Qn(t)&&Object.keys(e[t]).length>0}function Jn(e,t){if(Qn(t))return Xn(e,t);switch(t){case Vt.Run:case Vt.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Zn(e,t){return e.cellVersion?.[String(t)]??0}function eo(e,t,n){Oo(e,t,n,Zn(e,n))}function to(e,t,n){return e.allowed&&Zn(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 no=8;function oo(e){const t=e.cascade;if(t&&!ro.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,ro.set(n,(ro.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(ro.get(n)||1)-1;t>0?ro.set(n,t):(ro.delete(n),e.cascade===n&&(e.cascade=void 0))}}var ro=new WeakMap;function so(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<=no||(i===no+1&&e.logger.error("state delivery did not converge",{type:s}),!1)}function io(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function ao(e,t,n,o,r){const s=t.on;if(!s)return!0;const i=Yn(o);if(i&&(co.get(t)||uo.has(t)))return ko(e,t,o,!1),co.get(t)||lo.add(t),!1;const a=i?Zn(e,o):0,c=i&&function(e,t,n,o){if(yo.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)?$o(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:wr(t.env,t.config.env),reportError:on(e,"destination",n,d,t)};i&&(Eo(t,o),function(e,t,n){let o=mo.get(e);o||(o={},mo.set(e,o));const r=String(t),s=o[r];(void 0===s||s<n)&&(o[r]=n)}(t,o,a),uo.add(t));const f=nt(t.config.timeout);let p=Promise.resolve(),g=!0,h=!1,m=!0;try{await fe(()=>(p=Promise.resolve(s(o,l)),kn(p,f,`Destination "${n}" on(${o}) did not settle within ${f}ms`)),r=>{if(g=!1,r instanceof bn&&(h=!0),"consent"===o){if(r instanceof ce)throw r;ue(e,e.logger,{step:de("destination",n),code:"consent-not-applied"},"consent not applied: the destination on(consent) handler failed; its events are held until a retry succeeds",{type:t.type,...nn(r)})}else Nn(e,"destination",r,{destId:n,type:o})})(),m=!1}finally{if(i){uo.delete(t),m&&lo.delete(t);const r=yo.get(t);g?(Oo(e,t,o,a),r?.delete(String(o))):ko(e,t,o),h?function(e,t,n,o,r,s,i){co.set(t,(co.get(t)||0)+1);const a=()=>{const s=(co.get(t)||0)-1;var a,c,u,d;s>0?co.set(t,s):co.delete(t),wo(t,o),vo(t,o,r),So(e,t),i.debug("late settle after timeout"),lo.delete(t),e.allowed&&e.destinations[n]===t&&(a=e,c=t,u=n,d=i,fe(async()=>{await Mo(a,c,u),!go(c)&&c.queuePush?.length&&await nr(a,void 0,{},{[u]:c})},e=>{d.error("state recovery failed",nn(e))})())};s.then(a,a)}(e,t,n,o,a,p,d):(vo(t,o,a),So(e,t))}}return i&&!h&&lo.delete(t)&&await Mo(e,t,n),g}var co=new WeakMap,uo=new WeakSet,lo=new WeakSet;function fo(e,t,n){const o=Date.now(),r=po.get(e)?.failedAt;po.set(e,{type:t,since:o,...void 0!==r||n?{failedAt:r??o}:{}})}var po=new WeakMap;function go(e){return po.get(e)}var ho=new WeakMap,mo=new WeakMap;function vo(e,t,n){const o=mo.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var yo=new WeakMap;function wo(e,t){const n=yo.get(e);n?n.add(String(t)):yo.set(e,new Set([String(t)]))}var bo=new WeakMap;function ko(e,t,n,o=!0){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n),wo(t,n),fo(t,n,o)}function _o(e,t){return!!yo.get(t)?.size||Gn.some(n=>Xn(e,n)&&to(e,t,n))}function Eo(e,t){ho.set(e,(ho.get(e)||0)+1),fo(e,t,!1)}function So(e,t){const n=(ho.get(t)||0)-1;var o,r;n>0?ho.set(t,n):ho.delete(t),o=e,r=t,po.has(r)&&(ho.get(r)||_o(o,r)||po.delete(r))}function Oo(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 qo(e,t,n,o){if(!zn(e))return void Un();const r=$o(e,t,o);if(n.length)switch(t){case Vt.Consent:!function(e,t,n){const o=n||e.consent,r=io(e,Vt.Consent);t.forEach(t=>{to(e,t,Vt.Consent)&&so(e,t,Vt.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{le(t[n],t=>Nn(e,"consent",t,{key:n}))(o,r)}),eo(e,t,Vt.Consent))})}(e,n,o);break;case Vt.Ready:!function(e,t){if(!e.allowed)return;const n=io(e,Vt.Ready);t.forEach(t=>{le(t,t=>Nn(e,"ready",t))(void 0,n)})}(e,n);break;case Vt.Run:!function(e,t){if(!e.allowed)return;const n=io(e,Vt.Run);t.forEach(t=>{le(t,t=>Nn(e,"run",t))(void 0,n)})}(e,n);break;case Vt.Session:!function(e,t){if(!e.session)return;const n=io(e,Vt.Session);t.forEach(t=>{le(t,t=>Nn(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=io(e,t),s=Yn(t);n.forEach(n=>{"function"==typeof n&&(s&&!to(e,n,t)||s&&!so(e,n,t)||(le(n,n=>Nn(e,"generic",n,{type:t}))(r,o),s&&eo(e,n,t)))});break}}}function $o(e,t,n){if(Qn(t))return n||e[t];switch(t){case Vt.Session:return e.session;case Vt.Config:return n||e.config;default:return}}async function Ao(e,t,n,o,r){if(!t.on)return!1;if(Yn(o)&&!to(e,t,o))return!1;if(Yn(o)&&!so(e,t,o))return!1;const s=Yn(o);if(s&&Io.has(t))return jo.add(t),!1;const i=s?Zn(e,o):0;s&&Io.add(t);const a=t.on;let c,u=Promise.resolve(),d=!1;try{c=await fe(()=>(u=Promise.resolve(a(o,r)),kn(u,tt,`Source "${n}" on(${o}) did not settle within ${tt}ms`)),t=>{t instanceof bn&&(d=!0),Nn(e,"source",t,{sourceId:n,type:o})})()}finally{s&&!d&&Io.delete(t)}if(s)if(d){const o=()=>{Io.delete(t),jo.delete(t),e.allowed&&e.sources[n]===t&&fe(()=>xo(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",nn(t))})()};u.then(o,o)}else Oo(e,t,o,i),jo.delete(t)&&await xo(e,t,n);return!1===c}var Io=new WeakSet,jo=new WeakSet;async function xo(e,t,n){const o=oo(e);try{for(const o of Gn)await Ao(e,t,n,o,$o(e,o))}finally{o()}}async function Do(e,t,n,o,r){if(!t.on)return;const s=Yn(o);if(s&&!to(e,t,o))return;const i=mo.get(t)?.[String(o)];if(s&&void 0!==i&&i>=Zn(e,o))return;if(s&&!so(e,t,o)){if(t.config.init)return void ko(e,t,o);const n=t.queueOn=t.queueOn||[],r={type:o,data:$o(e,o)},s=n[n.length-1];return s&&s.type===o?n[n.length-1]=r:n.push(r),eo(e,t,o),void yo.get(t)?.delete(String(o))}const a=bo.get(t);if(!t.config.init||a){const i=t.queueOn=t.queueOn||[],c=s&&!a?i.findIndex(e=>e.type===o):-1;if(-1!==c)i[c]={type:o,data:$o(e,o)};else if(s)i.push({type:o,data:r});else{const s=t.config.queueMax??1e3,a=i.filter(e=>!Yn(e.type));if(a.length>=s){i.splice(i.indexOf(a[0]),1);const o=de("destination",t.config.id||n);tn(e.status,o,"queue",1),ue(e,e.logger,{step:o,code:"on-overflow"},`destination.queueOn full (queueMax ${s}): oldest on() delivery dropped`,{type:t.type})}i.push({type:o,data:r})}return void(s&&(eo(e,t,o),a&&!a.held&&(Eo(t,o),a.held=!0)))}await ao(e,t,n,o,r)}async function Mo(e,t,n){if(!t.on)return;const o=oo(e);try{for(const o of Gn)(Xn(e,o)||yo.get(t)?.has(String(o)))&&await Do(e,t,n,o,$o(e,o))}finally{o()}}function Po(e){return(ho.get(e)||0)>0}function Co(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var Ro={code:"consent",message:"required consent is not granted"},To={code:"batch",message:"waiting in a batch window until it flushes"},Wo={code:"held",message:"a state delivery to the destination is running or failed"},Ko={state:"ready"};var Lo=8;function Bo(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=Lo||!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(Bo(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:Bo(s,t,n+1);return r}var Fo=6;function Vo(e,t){try{return e[t]}catch{return"[unreadable]"}}function zo(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>=Fo)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(Vo(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 Ho(e,t){("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&t&&t.length>0&&(e.calls=t.map(e=>({fn:e.fn,args:zo(e.args),ts:e.ts})))}var Uo=1e3,No=3e4,Go=Object.freeze({batched:!0});function Qo(e){return e===Go}var Yo=Object.freeze({ignored:!0}),Xo=" batch-all";function Jo(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Zo(e){for(const t of e)go(t.destination)&&(t.drain=!0)}function er(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},r={...e.failed??{}};let s=e.reason,i=e.error;for(const e of t){for(const[t,s]of Object.entries(e.done??{}))r[t]||(n[t]=s,delete o[t]);for(const[t,s]of Object.entries(e.failed??{}))r[t]=s,delete n[t],delete o[t];for(const[t,n]of Object.entries(e.queued??{}))r[t]||(o[t]=n);s=s??e.reason,i=i??e.error}const a={...e,ok:e.ok&&t.every(e=>e.ok)};return delete a.done,delete a.queued,delete a.failed,delete a.reason,delete a.error,Object.keys(n).length&&(a.done=n),Object.keys(o).length&&(a.queued=o),Object.keys(r).length&&(a.failed=r),s&&(a.reason=s),void 0!==i&&(a.error=i),a}function tr(e){return mr({ok:!1,reason:e.reason,error:`Transformer "${e.by}" failed: ${e.reason.message}`})}async function nr(e,t,n={},o){if(!e.allowed)return mr({ok:!1});if(!t)return fr(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??_(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await Wn(e,e.transformers||{},r,t,o,n.respond,Ar),i=s.respond??n.respond,a=s.failure;return a&&0===s.copies.length?{copies:[],respond:i,failure:a}:0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),Gt(e,t,o,{reason:"dropped",by:s.droppedBy,at:Ar}),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:qr(e,t.event,t.ingest),ingest:t.ingest})),respond:i,...a?{failure:a}:{}}}(e,t,n),s=r.failure?tr(r.failure):void 0;if(0===r.copies.length)return s??mr({ok:!0,...r.dropped?{dropped:!0}:{}});const i=[];for(const t of r.copies)i.push(await fr(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));const[a,...c]=i;return er(a,s?[...c,s]:c)}var or=new WeakMap;function rr(e,t){for(const n of e){const e=or.get(n);e&&(or.delete(n),e(t))}}function sr(e){pr.has(e)||ir.has(e)||ur(e.queuePush||[])}var ir=new WeakMap;function ar(e){ir.set(e,(ir.get(e)??0)+1)}function cr(e){const t=(ir.get(e)??1)-1;t>0?ir.set(e,t):ir.delete(e)}function ur(e){for(const t of e)rr([t],{kind:"queued",reason:"consent"===t.reason?Ro:Wo})}function dr(e){ur(e.queuePush||[]),e.queuePush=[]}function lr(e,t,n,o=0){let r,s,i,a=0,c=0;for(const e of n)"failed"===e.kind?r=r??e:"delivered"===e.kind?(a++,void 0!==e.response&&(i=e.response)):"batched"===e.kind?c++:"queued"===e.kind&&(s=s??e.reason);return{id:e,destination:t,totalDuration:o,delivered:a,batched:c,response:i,...r?{failed:r.reason,error:r.error}:{},...s?{queued:s}:{}}}async function fr(e,t,n,o){const{user:r}=e;if(t){const n=Qt(e.config.queueMax),o=Yt(e.queue,t,{max:n});if(o.dropped>0){const t=tn(e.status,z("collector"),"queue",o.dropped);Jt(e.queue,e.logger,"info","collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Zt(e.queue);e.status.in++}o||(o=e.destinations);const s=e.transformers||{},i=Object.entries(o||{});let a;try{a=await Promise.all(i.map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=()=>{return t=e,r=o,void(cn((n=i).config.breaker)&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(t.status.breakers,re("destination",n.config.id||r)));var t,n,r},u=i.config.queueMax??1e3,d=z("destination",a),l=e.logger.scope(i.type||"unknown"),f=(t,n)=>{const o=[];if(!t.length)return o;i.queuePush||(i.queuePush=[]);const r=i.queuePush;let s=0;for(const e of t){if(e.reason=n,r.length>=u){const t=r.findIndex(e=>"consent"===e.reason);if(-1===t){if("consent"===n){rr([e],{kind:"queued",reason:Ro}),s++;continue}o.push(e);continue}rr(r.splice(t,1),{kind:"queued",reason:Ro}),s++}r.push(e)}if(s>0){en(e,a);const t=tn(e.status,d,"queue",s);Jt(i,l,"debug","destination.queuePush overflow; oldest consent-waiting events dropped",{buffer:"queuePush",destination:a,cap:u,droppedCount:t})}else r.length<u&&Zt(i);return o},p=e=>{f(e,"consent")},g=()=>{const e=i.queuePush||[];return i.queuePush=e.filter(e=>!or.has(e)),e.filter(e=>or.has(e))},h=t=>{const n=f(t,"held");if(!n.length)return{id:o,destination:i,queued:Wo};const r=new V(`destination.queuePush full (queueMax ${u}) while the destination is held: newest event refused`,{code:"queue-full"}),s=gn(e,i,o,n.map(e=>e.event),r);return rr(n,{kind:"failed",reason:s,error:r}),{id:o,destination:i,failed:s,error:r}},m=t=>(or.has(t)||"held"===t.reason||(t.event={...t.event,consent:e.consent}),t),v=e.config.consentDenied??"queue",y=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:I("unknown"),w=t=>{const n=e.consent,r=[],s=[];for(const a of t){const t=a.event,c=M(i.config.consent,n,t.consent);c?(t.consent=c,r.push(a)):(Nt(e,o,"skip",t,y,e=>{e.skipReason="consent",n&&(e.consent={...n}),i.config.consent&&(e.meta={required:{...i.config.consent}})}),"skip"===v?(hn(e,i,o,t,"consent"),rr([a],{kind:"skipped"})):s.push(a))}return{allowed:r,denied:s}};i.on&&i.config.init&&!go(i)&&!Po(i)&&_o(e,i)&&await Mo(e,i,o);const b=nt(i.config.timeout),k=go(i);k&&!Po(i)&&Date.now()-k.since>=b&&await Mo(e,i,o);const _=function(e,t,n=Date.now()){const o=go(e);return o?void 0===o.failedAt||n-o.failedAt<t?{state:"waiting",reason:Wo}:{state:"blocked",error:new se(`destination blocked: its ${String(o.type)} delivery failed and was not recovered within ${t}ms; events fail until a retry succeeds`,{code:"blocked"})}:Ko}(i,b);if("ready"!==_.state){if(!t)return{id:o,destination:i,skipped:!0};const{allowed:n,denied:r}=w([{event:O(t)}]);if(p(r),!n.length)return r.length?{id:o,destination:i,queued:Ro}:{id:o,destination:i,skipped:!0};if("blocked"===_.state){const t=(i.queuePush||[]).filter(e=>"held"===e.reason);i.queuePush=(i.queuePush||[]).filter(e=>"held"!==e.reason);const r=_.error,s=gn(e,i,o,[...t,...n].map(e=>e.event),r);return rr(t,{kind:"failed",reason:s,error:r}),{id:o,destination:i,failed:s,error:r}}return h(n)}let j=(i.queuePush||[]).map(m);if(i.queuePush=[],t&&j.push({event:O(t)}),!j.length&&!i.queueOn?.length)return{id:o,destination:i,skipped:!0};if(!j.length&&i.queueOn?.length){if(!M(i.config.consent,e.consent))return{id:o,destination:i,skipped:!0};let t=!1;ar(i);try{t=await gr(e,i,o,!0)}catch(t){const n=g(),r=gn(e,i,o,n.map(e=>e.event),t,{message:"destination init failed"});rr(n,{kind:"failed",reason:r,error:t})}finally{cr(i)}if(go(i))return{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return{id:o,destination:i,skipped:!0};j=i.queuePush.map(m),i.queuePush=[]}const x=e.consent,{allowed:D,denied:P}=w(j);if(p(P),!D.length)return P.length?{id:o,destination:i,queued:Ro}:{id:o,destination:i,skipped:!0};const C=function(e,t,n){const o=cn(t.config.breaker);if(!o)return Ko;const r=ie("destination",n);if(!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=an();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,r,o.cooldown))return Ko;const s=e.status.breakers[r]?.openUntil;return{state:"blocked",error:new se(`breaker open after ${o.threshold} consecutive failures; events fail until ${s?new Date(s).toISOString():"a probe succeeds"}; see the first failure's line`,{code:"breaker-open"})}}(e,i,a);if("blocked"===C.state){const t=C.error,n=gn(e,i,o,D.map(e=>e.event),t);return rr(D,{kind:"failed",reason:n,error:t}),{id:o,destination:i,failed:n,error:t}}const R=new Set(i.queuePush);if(pr.has(i)){c();const e=D.filter(e=>!or.has(e)).map(e=>new Promise(t=>or.set(e,t)));return h(D),lr(o,i,await Promise.all(e))}ar(i);try{await gr(e,i,o,!0)}catch(t){const n=g(),r=gn(e,i,o,[...D,...n].map(e=>e.event),t,{message:"destination init failed"});return rr([...D,...n],{kind:"failed",reason:r,error:t}),ln(r)||c(),{id:o,destination:i,failed:r,error:t}}finally{cr(i)}if(go(i))return c(),h(D);const T=[];if(e.consent!==x){const e=w(D.map(m));D.splice(0,D.length,...e.allowed),T.push(...e.denied)}const W=i.queuePush||[],K=W.filter(e=>!R.has(e));if(K.length){i.queuePush=W.filter(e=>R.has(e));const e=w(K.map(m));D.push(...e.allowed),T.push(...e.denied)}if(p(T),!D.length)return c(),T.length?{id:o,destination:i,queued:Ro}:{id:o,destination:i,skipped:!0};let L=!1;const B=i.config.before,F=i.config.next,U=i.config?.cache,N=U?q(U):void 0,G=N?mn(N,e):void 0,Q=vn(i.config?.state),Y=Q?.filter(e=>"get"===e.mode),X=Q?.filter(e=>"set"===e.mode);let J=0,Z=0,ee=0;const te=await Promise.all(D.map(async t=>{const a=t.event,c={delivered:0,batched:0},u=()=>c.failure?{kind:"failed",...c.failure}:c.delivered?{kind:"delivered",response:c.response}:c.batched?{kind:"batched"}:{kind:"skipped"};let d,l;if(a.user=E(r,a.user),N?.stop&&G){const t=S(y,a),n=await $(N,G,t,void 0,e);if("HIT"===n?.status)return u();"MISS"===n?.status&&(d={key:n.key,ttl:n.rule.ttl})}let f=[{event:a,ingest:y}],p=n.respond;if(void 0!==B){const t=`destination.${o}.before`,r=await Wn(e,s,B,a,y,n.respond,t);if(r.failure&&(c.failure={reason:r.failure.reason,error:`Transformer "${r.failure.by}" failed: ${r.failure.reason.message}`},en(e,o).failed++),0===r.copies.length)return r.failure||Nt(e,o,"skip",a,y,e=>{e.skipReason="dropped",e.meta={by:r.droppedBy??"route",at:t}}),u();r.respond&&(p=r.respond),f=r.copies.map(e=>({event:e.event,ingest:e.ingest}))}const g=async(t,n,r)=>{let a=r,u=!1;if(N&&!N.stop&&G){const o=S(n,t??void 0),r=await $(N,G,o,void 0,e);if("HIT"===r?.status)return!1;"MISS"===r?.status&&(a={key:r.key,ttl:r.rule.ttl},u=!0)}Y&&Y.length>0&&t&&(t=await yn(e,Y,t,n));const d=Date.now();let f=!1;const g=await H(hr,n=>{const r=gn(e,i,o,[t],n,{observed:!0});c.failure={reason:r,error:n},ln(r)&&(L=!0),f=!0})(e,i,o,t,n,p);if(J+=Date.now()-d,g===Yo)return!1;if(a&&G&&void 0===i.config.mock&&(u?A(G,a.key,g??!0,a.ttl):void 0===l&&(l=g??!0)),!f&&!Qo(g)&&X&&X.length>0&&t&&(t=await yn(e,X,t,n)),void 0===g||Qo(g)||(c.response=g),Qo(g))return c.batched++,Z++,!1;if(f)return!1;if(F){void 0!==g&&(n._response=g);const r=await Wn(e,s,F,t,n,p,`destination.${o}.next`);r.respond&&(p=r.respond)}return!0};for(const e of f)await g(e.event,e.ingest,d)&&(c.delivered++,ee++);return d&&G&&void 0!==l&&void 0===i.config.mock&&A(G,d.key,l,d.ttl),u()})),ne=[];return D.forEach((e,t)=>{or.has(e)?rr([e],te[t]):ne.push(te[t])}),L||(ee?un(e,i,o,"success"):Z||c()),lr(o,i,ne,J)}))}finally{for(const[,e]of i)sr(e)}const c={},u={},d={};for(const t of a){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};en(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.delivered??0;i>0&&(r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++),t.failed?(o.error=t.error,o.reason=t.failed,d[t.id]=o,r.lastAt=s,i||(r.duration+=t.totalDuration||0)):i>0?c[t.id]=o:(t.batched??0)>0?(o.reason=To,u[t.id]=o):t.queued&&(o.reason=t.queued,u[t.id]=o)}return mr({event:t,...Object.keys(c).length&&{done:c},...Object.keys(u).length&&{queued:u},...Object.keys(d).length&&{failed:d}})}var pr=new WeakMap;async function gr(e,t,n,o=!1){if(!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=pr.get(t);if(r)return r;if(!t.init&&!t.queueOn?.length)return t.config={...t.config,init:!0},!0;const s=async function(e,t,n,o){if(t.config=n?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:wr(t.env,t.config.env),reportError:on(e,"destination",o,s,t)};s.debug("init");const a=Date.now();Nt(e,o,"init",void 0,void 0);const c=nt(t.config.timeout);let u;try{u=await kn(Promise.resolve(U(n,"DestinationInit",e.hooks,e.logger)(i)),c,`Destination "${o}" init timed out after ${c}ms`)}catch(t){throw Nt(e,o,"error",void 0,void 0,e=>{e.durationMs=Date.now()-a,e.error=Ut(t)}),t}if(fn(u))throw pn();return{...u||t.config,init:!0}}(e,t,n,o):{...t.config,init:!0},t.queueOn?.length){const n=oo(e);!function(e){const t=e.queueOn?.find(({type:e})=>Yn(e));t&&Eo(e,t.type),bo.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await ao(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Yn(n)&&ko(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=bo.get(t);bo.delete(t),n?.held&&So(e,t)}(e,t),n()}}return n&&e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);pr.set(t,s);try{return await s}finally{pr.delete(t)}}return!0}async function hr(e,t,n,o,r,s){const{config:i}=t;let a;try{a=await B(o,i,e)}catch(t){throw Nt(e,n,"error",o,r,e=>{e.error=Ut(t)}),t}if(a.ignore){hn(e,t,n,o,"ignored");const{mappingKey:s}=a;return Nt(e,n,"skip",o,r,e=>{e.skipReason="ignored",s&&(e.mappingKey=s)}),Yo}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:{...wr(t.env,i.env),...s?{respond:s}:{}},reportError:on(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,f=void 0!==l?.batch,p=f?a.mappingKey||"* *":Xo;if((f||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=Jo(l?.batch),s=Jo(i.batch),a=r.wait??s.wait??No,c=r.size??s.size??Uo,d=r.age??s.age??No,g=wr(t.env,i.env),h=j(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const a=s.entries[0],c={collector:e,logger:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:on(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=en(e,d),f=Date.now(),h=new Map;let m,v,y=!1,w=s.entries.length;const b=nt(i.timeout),k=await H((o,r)=>kn(Promise.resolve(U(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),b,`Destination "${n}" batch delivery timed out after ${b}ms`),n=>{w=0,y=!0,m=n,v=gn(e,t,d,s.entries.map(e=>e.event),n,{observed:!0,message:"Push batch failed"})})(s,c);if(K(_=k)&&Array.isArray(_.failed)&&k.failed.length>0){for(const e of k.failed){if(!s.entries[e.index]||h.has(e.index))continue;const t=e.error??new Error(`Push batch entry ${e.index} failed (no per-row error provided)`);h.set(e.index,t)}const n=new Map;for(const[o,r]of h){const i=gn(e,t,d,[s.entries[o].event],r,{observed:!0,report:!1,breaker:!1});v=v??i;const a=r instanceof Error&&"code"in r&&"string"==typeof r.code?r.code:r instanceof Error?r.name:"Error",c=n.get(a);c?c.count++:n.set(a,{code:a,count:1})}w=Math.max(0,s.entries.length-h.size),v&&F(e,e.logger,{step:z("destination",d),code:v.code,status:v.status},`Push batch partial failure: ${h.size} of ${s.entries.length} entries failed (${[...n.values()].map(e=>`${e.code} x${e.count}`).join(", ")})`,{type:t.type,count:h.size,retryable:v.retryable,error:v.message})}var _;const E=Date.now();return s.entries.forEach((t,o)=>{const r=y||h.has(o),i=zt(t.event,t.ingest,e),a=Ht(e,z("destination",n),"destination",r?"error":"flush","string"==typeof t.event.id?t.event.id:"",E,i);if(a.batch={size:s.entries.length,index:o},a.durationMs=E-f,r){const e=y?m:h.get(o);a.error=Ut(e)}x(e,a)}),u.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),w>0&&(l.count+=w,l.lastAt=Date.now(),e.status.out+=w,un(e,t,n,"success")),{delivered:w,failed:s.entries.length-w,...v?{reason:v}:{}}},{wait:a,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>await h.flush()??void 0}}const c=t.batches[p];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),T(a.data)&&c.batched.data.push(a.data);const d="string"==typeof a.event.id?a.event.id:"",g=zt(o,r,e),h=Date.now(),m=Ht(e,z("destination",n),"destination","in",d,h,g);a.mappingKey&&(m.mappingKey=a.mappingKey),a.event.consent&&(m.consent={...a.event.consent}),m.inEvent=a.event,x(e,m);const v=Ht(e,z("destination",n),"destination","out",d,h,g);a.mappingKey&&(v.mappingKey=a.mappingKey),v.outEvent=a.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},x(e,v);const y=t.config.id||n,w=en(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),Go}{let s;if(u.debug("push",{event:a.event.name}),("undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__)&&"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:Bo(t,r,1);const s=ot(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[L]={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=zt(o,r,e),f=Date.now(),p=Ht(e,z("destination",n),"destination","in",c,f,l);a.mappingKey&&(p.mappingKey=a.mappingKey),a.event.consent&&(p.consent={...a.event.consent}),p.inEvent=a.event,x(e,p);try{const o=nt(i.timeout),r=await kn(Promise.resolve(U(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),p=Date.now(),g=Ht(e,z("destination",n),"destination","out",c,p,l);return g.durationMs=p-f,g.outEvent=a.event,Ho(g,s),T(r)&&(g.meta={...g.meta,response:r}),a.mappingKey&&(g.mappingKey=a.mappingKey),x(e,g),u.debug("push done"),r}catch(t){const{mappingKey:o}=a;throw Nt(e,n,"error",a.event,r,e=>{e.durationMs=Date.now()-f,e.error=Ut(t),Ho(e,s),o&&(e.mappingKey=o)}),t}}}function mr(e){return{ok:!e?.failed,...e}}function vr(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=_n(e,"before"),{config:a}=_n({...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=wr(t.env,o);return{...t,config:c,env:u}}function yr(e,t,n,o=!1){const{config:r}=n,s=e.logger.scope(n.type||"unknown");if(!n.pushBatch){const e=P(r,"config",{config:["batch"],rule:["batch"]});e.length&&s.error(`Destination ${t}: ${e.map(e=>`\`${e}\``).join(", ")} has no effect: the destination has no pushBatch, so events go to push one by one`)}if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const n=R("destination",r,"config");n.length&&s.error(`Destination ${t}: ${C("destination",n)}`),o&&(An(e,`destination.${t}.before`,r.before),An(e,`destination.${t}.next`,r.next))}}function wr(e,t){return e||t?t?e&&K(e)&&K(t)?{...e,...t}:t:e:{}}async function br(e){const t={},n={},o=Object.entries(e.destinations).map(async([o,r])=>{const s=Object.values(r.batches||{}),i=s.reduce((e,t)=>e+t.batched.entries.length,0),a={type:r.type||"unknown"},c=await Promise.all(s.map(async t=>{let n;try{return await Promise.race([t.flush(),new Promise((e,t)=>{n=setTimeout(()=>t(new ft(`destination '${o}' batch flush timed out`,{code:"timeout"})),5e3)})])}catch(t){const n=gt(t);return a.reason=n,void lt(e,e.logger,{step:pt("destination",o),code:n.code,status:n.status},"batch flush failed",{type:r.type,retryable:n.retryable,error:n.message})}finally{n&&clearTimeout(n)}}));if(i){for(const e of c)e&&e.reason&&!a.reason&&(a.reason=e.reason);a.reason?n[o]=a:t[o]=a}});return await Promise.all(o),mr({...Object.keys(t).length&&{done:t},...Object.keys(n).length&&{failed:n}})}async function kr(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",i=n.scope(s),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([r(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function _r(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Er(e,t,n){let o,r,s=!1;const i=[],a=oo(e);try{return await async function(){switch(t){case Vt.Config:dt(n)&&(rt(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case Vt.Consent:if(dt(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=k(e.consent,n),{update:n}}(e,n);_r(e,Vt.Consent),r=t,s=!0}break;case Vt.Custom:dt(n)&&(e.custom=rt(e.custom,n),_r(e,Vt.Custom),r=n,s=!0);break;case Vt.Destination:dt(n)&&"code"in n&&dt(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!W(n.push))return mr({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u={...n.config,...o||{init:!1}};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=D(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(wn(e,z("destination",l),d.state),d.require?.length){e.pending.destinations[l]=t,await Vn(e);const n=e.destinations[l];return n?nr(e,void 0,{},{[l]:n}):mr({ok:!0})}const f={...n,config:d,env:wr(n.env,r)};return yr(e,l,f,!0),e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=e.queue.map(e=>({event:e}))),await Mo(e,f,l),nr(e,void 0,{},{[l]:f})}(e,n));break;case Vt.Globals:dt(n)&&(e.globals=rt(e.globals,n),_r(e,Vt.Globals),r=n,s=!0);break;case Vt.Flush:o=await br(e);break;case Vt.Hook:if(dt(n)&&ut(n.name)&&ct(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case Vt.On:if(dt(n)&&ut(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!zn(e))return void Un();const o=e.on,r=o[t]||[],s=ae(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,qo(e,t,s)}(e,t,o)}break;case Vt.Ready:s=!0;break;case Vt.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=it(),e.count=0,t&&(t.consent&&(e.consent=rt(e.consent,t.consent),_r(e,Vt.Consent)),t.user&&(e.user=rt(e.user,t.user),_r(e,Vt.User)),t.globals&&(e.globals=rt(e.config.globalsStatic||{},t.globals),_r(e,Vt.Globals)),t.custom&&(e.custom=rt(e.custom,t.custom),_r(e,Vt.Custom))),Object.values(e.destinations).forEach(dr),e.queue=[],e.round++,await Vn(e);const o=await async function(e){if(!zn(e))return Un(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const r=async()=>{for(const t of Gn)Xn(e,t)&&await Do(e,o,n,t,$o(e,t))};t.push(Co(n,o,r()))}for(const t of Gn){if(!Xn(e,t))continue;const n=$o(e,t);qo(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>Bn(e)).map(([o,r])=>Ao(e,r,o,t,n)))}return t}(e);let r=!0;const s={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:o}of t){const t=await e.push(n,o);!1===t.ok&&(r=!1),t.failed&&Object.assign(s,t.failed)}}Zo(o);const i=await nr(e);if(n.push(...o),r)return i;const a={...i.failed??{},...s};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),s=!0;break;case Vt.Session:s=!0;break;case Vt.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await kr(e.sources,"source",t),await br(e),await kr(e.destinations,"destination",t),await kr(e.transformers,"transformer",t),await kr(e.stores,"store",t),e.causeLog?.flush()}(e));break;case Vt.User:dt(n)&&(rt(e.user,n,{shallow:!1}),_r(e,Vt.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),mr({ok:!1})}if(s){const n=await async function(e,t,n,o){if(!zn(e))return Un(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=$o(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&&(Bn(o)?i.push(Ao(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(Co(n,o,Do(e,o,n,t,s)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))Bn(n)&&n.queueOn?.length&&await Ln(e,n,t);const u=Object.values(e.sources).some(e=>!Bn(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||u)&&await Vn(e),qo(e,t,r,o),{ok:!c,deliveries:a}}(e,t,void 0,r);i.push(...n.deliveries),Zo(n.deliveries);const s=er(await nr(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:r})=>{if(await o,r&&e.allowed&&!go(n)&&n.queuePush?.length&&e.destinations[t]===n)return nr(e,void 0,{},{[t]:n})}))).filter(T)}(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||mr({ok:!0})}()}finally{a()}}function Sr(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Or(e,t,n){return $r(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function qr(e,t,n){return $r(e,Sr(e,t),n,{globals:{},user:{},consent:{}})}function $r(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new at(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new at("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new at("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=st(),trigger:v="",entity:y=s,action:w=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,_=k??{type:"collector",schema:"4"},E=_.count??(e.count+=1),S=_.trace??n?._meta.trace??e.trace,O={..._,count:E};void 0!==S&&(O.trace=S);const q=e.name??_.platform??"default",$=e.release??"4.8.2";return O.release={..._.release,[q]:$},{name:c,data:u,context:d,globals:rt(o.globals,l),custom:f,user:p,nested:g,consent:h,id:m,trigger:v,entity:y,action:w,timestamp:a,timing:b,source:O}}var Ar="collector.next";function Ir(e,t){const n=Dt(async(n,o={})=>await xt(async()=>{if(!e.allowed){const t=Qt(e.config.queueMax);if(!Yt(e.preRunQueue,{event:n,options:o},{max:t,onOverflow:"dropNewest"}).appended){const o=jt(new It(`collector.preRunQueue full (queueMax ${t}): event refused before run`,{code:"queue-full"}));return e.status.failed++,At(e,e.logger,{step:"collector",code:o.code},"Push refused",{event:n.name,retryable:o.retryable,error:o.message}),mr({ok:!1,reason:o,error:o.message})}return e.logger.debug("event held until run",{name:n.name}),mr({ok:!0})}const r=Date.now(),{id:s,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let f,p=a,g=n;const h=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 m=i??kt(s||"unknown");if(c){const t=await $t(g,c,e);if(t.ignore){const n=s?`source.${s}`:"collector.push";return e.logger.debug("Event ignored by source mapping",{at:n,mappingKey:t.mappingKey}),Gt(e,t.event,m,{reason:"ignored",at:n}),mr({ok:!0,dropped:!0})}if(c.consent){const n=t.event.consent;if(!St(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}),Gt(e,t.event,m,{reason:"consent",at:o,required:c.consent,consent:{...e.consent,...n}}),mr({ok:!0,dropped:!0})}}g=t.event}if(void 0!==u){const n=s?`source.${s}.next`:void 0,o=await Wn(e,e.transformers||{},u,g,m,p,n),i=o.failure?tr(o.failure):void 0;if(i&&0===o.copies.length)return i;if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),Gt(e,g,m,{reason:"dropped",by:o.droppedBy,at:n??"collector.push.preChain"}),mr({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(p=o.respond),mr({ok:!0});if(o.respond&&(p=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Or(e,t(n.event),n.ingest);return nr(e,o,{id:s,ingest:n.ingest,respond:p},h)}));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}const[a,...c]=n;return er(a,i?[...c,i]:c)}g=o.copies[0].event,m=o.copies[0].ingest,i&&(f=i)}const v=function(e,t,n){return Or(e,Sr(e,t),n)}(e,g,m),y=await nr(e,v,{id:s,ingest:m,respond:p},h);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 f?er(y,[f]):y},t=>{if(t instanceof Et)throw t;if(t instanceof qt){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 At(e,e.logger,{step:n?`source.${n}`:"collector",code:"invalid"},"invalid event rejected",{error:t.message},"warn"),mr({ok:!1,invalid:!0,error:t.message})}e.status.failed++;const r=jt(t);return At(e,e.logger,{step:"collector",code:r.code,status:r.status},o.id?`push failed at source.${o.id}`:"push failed",{event:n.name,retryable:r.retryable,error:r.message}),mr({ok:!1,reason:r,error:r.message})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:Ot()},s="string"==typeof r.id?r.id:"",i=zt(r,o?.ingest,e),a=Date.now(),c=Ht(e,"collector.push","collector","in",s,a,i);c.inEvent=r,_t(e,c);try{const t=await n(r,o),c=Date.now(),u=Ht(e,"collector.push","collector","out",s,c,i);return u.durationMs=c-a,u.outEvent=t,_t(e,u),t}catch(t){const n=Date.now(),o=Ht(e,"collector.push","collector","error",s,n,i);throw o.durationMs=n-a,o.error=Ut(t),_t(e,o),t}}}function jr(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;return o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref()),{type:"memory",config:{},get(e){const t=s.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(s.delete(e),i.evictions_ttl++,void i.misses++):(s.delete(e),s.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!s.has(e);a||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,s.size>t&&function(){if(s.size<=t)return;const e=s.size-r;let n=0;for(const t of s.keys()){if(n>=e)break;s.delete(t),n++}i.evictions_entries+=n}()},delete(e){s.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),s.clear()}}}function xr(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=Ht(a,`store.${i}`,"store","in","");n.meta={op:"cache",cached:"hit"===t,status:t,key:e},Lt(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?Kt(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=Bt(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,Ft(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),Ft(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,nn(n)):console.warn(o,n)}}function Dr(e,t,n){const o=`store.${n}`,r=Wt(t.get,"StoreGet",e.hooks,e.logger),s=Wt(t.set,"StoreSet",e.hooks,e.logger),i=Wt(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=Ht(e,o,"store","in","",n);s.meta={op:"get",key:t},Tt(e,s);try{const s=await r(t),i=Date.now(),a=Ht(e,o,"store","out","",i);return a.durationMs=i-n,a.meta={op:"get",key:t},Tt(e,a),s}catch(r){const s=Date.now(),i=Ht(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=Ut(r),Tt(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=Ht(e,o,"store","in","",i);a.meta={op:"set",key:t},Tt(e,a);try{await s(t,n,r);const a=Date.now(),c=Ht(e,o,"store","out","",a);c.durationMs=a-i,c.meta={op:"set",key:t},Tt(e,c)}catch(n){const r=Date.now(),s=Ht(e,o,"store","error","",r);throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=Ut(n),Tt(e,s),n}},t.delete=async t=>{const n=Date.now(),r=Ht(e,o,"store","in","",n);r.meta={op:"delete",key:t},Tt(e,r);try{await i(t);const r=Date.now(),s=Ht(e,o,"store","out","",r);s.durationMs=r-n,s.meta={op:"delete",key:t},Tt(e,s)}catch(r){const s=Date.now(),i=Ht(e,o,"store","error","",s);throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=Ut(r),Tt(e,i),r}}}async function Mr(e){const t=yt({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3,consentDenied:"queue"},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=bt(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,causeLog:wt(o),on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};var i,a;void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),void 0!==e.next&&(t.next=e.next),s.push=Ir(s,e=>Sr(s,e)),s.command=(a=Er,Pt(async(e,t,n)=>await Ct(async()=>await a(i,e,t,n),t=>{if(t instanceof Mt)throw t;return i.status.failed++,i.logger.error("command failed",{...nn(t),command:e}),mr({ok:!1})})(),"Command",(i=s).hooks,i.logger)),s.elb=function(e){const t=new Set,n=n=>{t.has(n)||(t.add(n),e.logger.error("elb ignored an argument it does not take: pass data as an object and put trigger, context, nested, custom inside the event object, elb({ name, data, trigger, context, nested, custom })",{event:n}))},o=e=>e.some(e=>void 0!==e);return async(t,r,...s)=>{if("string"==typeof t&&t.startsWith("walker ")){o(s)&&n(t);const i=t.replace("walker ","");return e.command(i,r)}let i;if("string"==typeof t)i={name:t},Rt(r)?i.data=r:void 0!==r&&n(t);else{if(!t||"object"!=typeof t||Array.isArray(t))return mr({ok:!1});i={...t},void 0!==r&&n(String(i.name))}return o(s)&&n(String(i.name)),e.push(i)}}(s);const c=e.stores||{};if("undefined"==typeof __WALKEROS_STORES__||__WALKEROS_STORES__?(s.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i,reportError:on(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=jr()),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]=xr(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&&Dr(e,o,t);return n}(s,c),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(c,s.stores,e)):Object.keys(c).length>0&&o.error("stores: not in this build, config ignored"),s.stores.__cache||(s.stores.__cache=jr()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))wn(e,z("destination",o),r.config?.state??r.code.config?.state??r.state),r.config?.require?.length?e.pending.destinations[o]=r:(n[o]=vr(r),yr(e,o,n[o]));return n}(s,e.destinations||{}),s.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r;if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){const t=He(r,"Transformer");if(!t.ok){e.logger.error(`Transformer ${o} invalid (${t.code}): ${t.reason}. Skipping.`);continue}}const{config:i}=_n(r,"before"),{config:a}=_n({...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;wn(e,Te("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:je(o),config:f,env:s,reportError:on(e,"transformer",o,p)},h=Ne(r);if("undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__)for(const t of Ge(r))e.logger.error(`Transformer ${o}: ${t}`);const m=t??(e=>h?{type:"pass",config:e.config,push:async t=>{const n=await Ue(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||{}),"undefined"==typeof __WALKEROS_VALIDATE__||__WALKEROS_VALIDATE__){An(s,"collector.next",t.next);for(const[e,t]of Object.entries(s.destinations))An(s,`destination.${e}.before`,t.config.before),An(s,`destination.${e}.next`,t.config.next);for(const[e,t]of Object.entries(s.transformers))An(s,`transformer.${e}.before`,t.config.before),An(s,`transformer.${e}.next`,t.config.next)}return s}function Pr(e,t){return void 0===t?e:n=>e({...n,release:t})}function Cr(e,t){try{return{value:t()}}catch(t){const n=t instanceof Error?t.message:String(t);return void e.logger.error(`observe: the slot failed, Observe is off: ${n}`)}}async function Rr(e){const t=e??{},n=await Mr(t);if(t.observers)for(const e of t.observers)n.observers.add(e);"undefined"==typeof __WALKEROS_OBSERVE__||__WALKEROS_OBSERVE__?function(e,t){const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=n.slot;if(!t)return void e.logger.error("observe: a web observe config needs slot: pageObserveSlot() from @walkeros/web-core");const r=Cr(e,()=>t.read());if(!r?.value)return;const{raw:s,fromUrl:i}=r.value,a=vt(s);if(!a)return void(i?e.logger.warn("observe: malformed credential ignored"):(e.logger.warn("observe: malformed stored credential cleared"),Cr(e,()=>t.clear(s))));if(a.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");if(!Cr(e,()=>t.keep(s,i)))return;let c;const u=ht({url:`${n.url}/ingest/${a.ses}`,token:a.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:n=>{401===n&&(Cr(e,()=>t.clear(s)),c&&e.observers.delete(c))}});c=mt(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Pr(u,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(c);const d=n.level;return void(void 0!==d&&(e.observeLevel=()=>d))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add(mt(Pr(ht({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))}(n,t):t.observe&&n.logger.error("observe: not in this build, config ignored"),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await Fn(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 we(n.init.bind(n),n=>{if(n instanceof ge)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...nn(n)})})(),o||(n.config.init=!0,Bn(n)&&await Ln(e,n,t))}return await Vn(e),n}(n,t.sources||{});const{consent:o,user:r,globals:s,custom:i}=t;o&&await n.command("consent",o),r&&await n.command("user",r),s&&await n.command("globals",s),i&&await n.command("custom",i),n.config.run&&await n.command("run");let a=n.elb;const c=Object.values(n.sources),u=c.find(e=>e.config.primary);return u?a=u.push:c.length>0&&(a=c[0].push),{collector:n,elb:a}}var Tr=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Rr({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};export{d as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
|
package/dist/dev.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,SAAS;AAEX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,QAAQ,EACL;AAAA,IACC,EACG,OAAO;AAAA,MACN,OAAO,EACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,SAAS,KAAAA,UAAS;AAEX,IAAM,gBAAgBA,GAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,WAAW,YAAY,cAAc;AAC3C,IAAM,UAAU,YAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A
|
|
1
|
+
{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,SAAS;AAEX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,QAAQ,EACL;AAAA,IACC,EACG,OAAO;AAAA,MACN,OAAO,EACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,SAAS,KAAAA,UAAS;AAEX,IAAM,gBAAgBA,GAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,WAAW,YAAY,cAAc;AAC3C,IAAM,UAAU,YAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA,IAAM,gBAAmE,OACvE,WACG;AACH,MAAI;AAEJ,QAAM,UACJ,MAAM,OAAO,YAAuC;AAElD,QAAI,CAAC,MAAM;AACT,YAAM,SAAS,MAAM,GAAU,EAAE,GAAG,QAAQ,KAAK,OAAO,OAAO,KAAK,CAAC;AACrE,aAAO,EAAE,WAAW,OAAO,WAAW,KAAK,OAAO,IAAI;AAAA,IACxD;AAIA,UAAM,KAAK,IAAI,OAAO;AAAA,EACxB;AAEF,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;","names":["z"]}
|
package/dist/walkerOS.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"package": "@walkeros/source-demo",
|
|
4
|
-
"version": "4.8.
|
|
4
|
+
"version": "4.8.2",
|
|
5
5
|
"type": "source",
|
|
6
6
|
"platform": [
|
|
7
7
|
"web",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"examples": {
|
|
47
47
|
"createTrigger": {
|
|
48
|
-
"$code": "async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await
|
|
48
|
+
"$code": "async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Rr({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}}"
|
|
49
49
|
},
|
|
50
50
|
"env": {
|
|
51
51
|
"push": {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/source-demo",
|
|
3
3
|
"description": "Demo source for walkerOS - generates events from config",
|
|
4
|
-
"version": "4.8.
|
|
4
|
+
"version": "4.8.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.mjs",
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"test": "jest"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@walkeros/core": "4.8.
|
|
42
|
+
"@walkeros/core": "4.8.2"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@walkeros/collector": "4.8.
|
|
45
|
+
"@walkeros/collector": "4.8.2"
|
|
46
46
|
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"url": "git+https://github.com/elbwalker/walkerOS.git",
|