@walkeros/source-demo 4.7.0-next-1790722899482 → 4.7.0

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