@walkeros/source-demo 4.5.0 → 4.5.1-next-1788726985928
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 +6 -0
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/walkerOS.json +2 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
package/dist/dev.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},i={};s(i,{examples:()=>g,schemas:()=>a}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={};s(a,{MappingSchema:()=>l,SettingsSchema:()=>d,mapping:()=>f,settings:()=>p});var c=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),d=u.z.object({events:u.z.array(u.z.object({delay:u.z.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")}),l=require("@walkeros/core/dev").z.object({}),p=(0,c.zodToSchema)(d),f=(0,c.zodToSchema)(l),g={};s(g,{createTrigger:()=>lt,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:()=>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"}}]]},O=require("@walkeros/core"),C=require("@walkeros/core"),q=require("@walkeros/core"),j=require("@walkeros/core"),x=(require("@walkeros/core"),require("@walkeros/core")),A=require("@walkeros/core"),$=require("@walkeros/core"),D=require("@walkeros/core"),_=require("@walkeros/core"),T=require("@walkeros/core"),M=require("@walkeros/core"),P=require("@walkeros/core"),R=require("@walkeros/core"),z=require("@walkeros/core"),B=require("@walkeros/core"),K=require("@walkeros/core"),F={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function H(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function G(e,t){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 U(e){return"object"==typeof e&&null!==e}function V(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8)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(V(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:V(s,t,n+1);return r}function N(e){const t=[],n=[],{simulation:o,...r}=e,s=V(r,new WeakMap,0);for(const e of o){const o=(0,x.parseCallPath)(e);if(0===o.length)continue;const r=o.join(".");if(o.length-1>=8){n.push(r);continue}let i=s,a=!0;for(let e=0;e<o.length-1;e++){const t=i[o[e]];if(!U(t)){a=!1;break}i=t}const c=o[o.length-1];if(!a||!(c in i)){n.push(r);continue}const u=i[c];"function"==typeof u?i[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),u.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function W(e,t){try{return e[t]}catch{return"[unreadable]"}}function L(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(W(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 Y(e){return e.map(e=>({fn:e.fn,args:L(e.args),ts:e.ts}))}function Q(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 X(e,t,n,o){J.get(e)||(J.set(e,!0),t.warn(n,o))}function Z(e){J.delete(e)}var ee=()=>Date.now();function te(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function ne(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=ee()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ee()+r)))}function oe(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 r=e.dropped[t];return r[n]=(r[n]??0)+o,r[n]}function se(e,t,n,o,r){const s=(0,D.stepId)(t,n);return(t,i)=>{try{if(i)return r?function(e,t,n,o,r,s){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??100},c=Q(i,[o,r],a);if(c.dropped>0){const t=re(e.status,(0,D.stepId)("destination",n),"dlq",c.dropped);X(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&Z(i);const u=oe(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=te(t.config.breaker);if(d){const o=t.config.id||n;ne(e.status.breakers,(0,D.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{error:t instanceof Error?t.message:String(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch{}}}function ie(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function ae(e,t){return e?t.stores[e]:t.stores.__cache}function ce(e){const t={};for(const[n,o]of Object.entries(e)){const e=o.config?.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?t[n]={next:e}:t[n]={}}return t}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}}function de(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}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,T.createIngest)(n),config:t.config,env:he(t.config.env),reportError:se(e,"transformer",n,r)};r.debug("init");const i=await(0,T.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:{...he(t.config.env),...s?{respond:s}:{}},reportError:se(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",{traceId:d,sourceId:l,parentEventId:p}=H(o,r,e),f=Date.now(),g=G(e,{stepId:(0,T.stepId)("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:f,traceId:d,sourceId:l,parentEventId:p});g.inEvent=o,(0,T.emitStep)(e,g);try{const r=await(0,T.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=G(e,{stepId:(0,T.stepId)("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s,traceId:d,sourceId:l,parentEventId:p});return i.durationMs=s-f,i.outEvent=r,(0,T.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=G(e,{stepId:(0,T.stepId)("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o,traceId:d,sourceId:l,parentEventId:p});throw r.durationMs=o-f,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,T.emitStep)(e,r),t}}function fe(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:(0,T.createIngest)(t)}async function ge(e,t,n,o,r,s,i){r||(r=(0,T.createIngest)(n[0]??"chain")),i&&r._meta&&(r._meta.chainPath=i);let a=o,c=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:c};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await(0,T.tryCatchAsync)(le,t=>{if(t instanceof T.FatalError)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,s,o))return{event:null,respond:c};if(i&&void 0!==s.config?.chainMocks?.[i]){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),a=t;continue}if(void 0!==s.config?.mock){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),a=s.config.mock;continue}if(s.config?.disabled)continue;const u=s.config?.cache,d=u?(0,T.compileCache)(u):void 0,l=d?ie(d,e):void 0,p=s.config?.state?(0,T.compileState)(s.config.state):void 0,f=p?.filter(e=>"get"===e.mode),g=p?.filter(e=>"set"===e.mode),h=async t=>g&&0!==g.length?(0,T.applyState)(g,t=>ae(t,e),t,e):t;let m;if(d&&l){const e=(0,T.buildCacheContext)(r,a),t=await(0,T.checkCache)(d,l,e);if("HIT"===t?.status&&t.value){if(a=t.value,d.stop)return{event:a,respond:c,stopped:!0};continue}"MISS"===t?.status&&(m={key:t.key,ttl:t.rule.ttl})}const v=s.config.before;if(v){const n=(0,T.getNextSteps)(v,(0,T.buildCacheContext)(r,a));if(1===n.length){const o=de(n[0],ce(t));if(o.length>0){const n=await ge(e,t,o,a,r,c,i);if(null===n.event)return{event:null,respond:n.respond??c};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:n.respond??c,stopped:!0};n.respond&&(c=n.respond),a=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>(0,T.tryCatchAsync)(ge,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,de(n,ce(t)),a,fe(r,n),void 0,i)))}f&&f.length>0&&(a=await(0,T.applyState)(f,t=>ae(t,e),a,e));const y=await(0,T.tryCatchAsync)(pe,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,a,r,c);if(!1===y)return{event:null,respond:c,droppedBy:o};if(Array.isArray(y)){const s=n.slice(n.indexOf(o)+1),u=await Promise.all(y.map(async n=>{const o=await h(n.event||a),u=fe(r,"unknown");if(n.next){const r=(0,T.getNextSteps)(n.next,(0,T.buildCacheContext)(u,o));if(0===r.length)return{event:o,respond:c};if(1===r.length){const n=de(r[0],ce(t));return n.length>0?ge(e,t,n,o,u,c,i):{event:o,respond:c}}return(await Promise.all(r.map(n=>(0,T.tryCatchAsync)(ge,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,de(n,ce(t)),o,fe(u,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?ge(e,t,s,o,u,c,i):{event:o,respond:c}}));let d=c;const l=[];for(const e of u.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(d=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:d}:1===l.length?{event:l[0],respond:d}:{event:l,respond:d}}if(y&&"object"==typeof y){const{event:n,respond:o,next:s}=y;if(o&&(c=o),void 0!==s){const o=await h(n||a),u=(0,T.getNextSteps)(s,(0,T.buildCacheContext)(r,o));if(0===u.length){a=o;continue}if(1===u.length){const n=de(u[0],ce(t));return n.length>0?ge(e,t,n,o,r,c,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:c})}return await Promise.all(u.map(n=>(0,T.tryCatchAsync)(ge,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,de(n,ce(t)),o,fe(r,n),void 0,i))),{event:null,respond:void 0}}n&&(a=n)}g&&g.length>0&&(a=await(0,T.applyState)(g,t=>ae(t,e),a,e)),m&&l&&(0,T.storeCache)(l,m.key,a,m.ttl);const w=s.config.next,b="string"==typeof w||Array.isArray(w)&&w.every(e=>"string"==typeof e),k=void 0!==w&&!b;if((!y||"object"==typeof y&&!y.next)&&k){const n=(0,T.getNextSteps)(s.config.next,(0,T.buildCacheContext)(r,a));if(1===n.length){const o=de(n[0],ce(t));return o.length>0?ge(e,t,o,a,r,c,i):{event:a,respond:c}}return n.length>1?(await Promise.all(n.map(n=>(0,T.tryCatchAsync)(ge,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,de(n,ce(t)),a,fe(r,n),void 0,i))),{event:null,respond:void 0}):{event:a,respond:c}}}return{event:a,respond:c}}function he(e){return e&&(0,T.isObject)(e)?e:{}}function me(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function ve(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const r=n||t.config?.id||"unknown";for(const{type:n,data:s}of o)Ce(n)&&!$e(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,error:t})})(n,s),Ce(n)&&Ae(e,t,n))}function ye(e){return Boolean(e.config.init)&&!e.config.require?.length}async function we(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=r.state??n.state,p=l?(0,_.compileState)(l):void 0,f=u,g=f?(0,_.compileCache)({...f,stop:f.stop??!0}):void 0,h=me(a)?de(a,ce(e.transformers)):void 0,m=me(c)?de(c,ce(e.transformers)):void 0,v=d??e.push,y=Boolean(d),w=async(n,o,s)=>{if(y)return v(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,_.getSpanId)()},d=m??(void 0!==c?(()=>{const t=(0,_.getNextSteps)(c,(0,_.buildCacheContext)(s.ingest));return 0===t.length?[]:de(1===t.length?t[0]:t,ce(e.transformers))})():[]);let l=[u];if(d.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ge(e,e.transformers,d,u,s.ingest,s.respond,`source.${t}.before`);if(null===n.event)return{ok:!0};if(n.stopped)return n.respond&&(s.respond=n.respond),{ok:!0};n.respond&&(s.respond=n.respond);const o="string"==typeof u.id?u.id:"";if(Array.isArray(n.event))l=n.event.map(e=>""!==o&&e.id===o?{...e,id:(0,_.getSpanId)()}:e);else{const e=n.event;l=""===o||"string"==typeof e.id&&""!==e.id?[e]:[{...e,id:o}]}}if(g){const t=ie(g,e);if(t){const n=(0,_.buildCacheContext)(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"}},u=o.key,d=o.rule.ttl,l=n=>{(0,_.storeCache)(t,u,n,d),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)}}}const f=h?{kind:"single",preChain:h}:void 0!==a?(()=>{const t=(0,_.getNextSteps)(a,(0,_.buildCacheContext)(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:de(t[0],ce(e.transformers))}:{kind:"many",branches:t.map(t=>de(t,ce(e.transformers)))}})():{kind:"single",preChain:[]};p&&p.length>0&&(l=await Promise.all(l.map(t=>(0,_.applyState)(p,t=>ae(t,e),t,e))));let w={ok:!0};for(const n of l)"many"===f.kind?(await Promise.all(f.branches.map((i,a)=>(0,_.tryCatchAsync)(async()=>v(n,{...o,id:t,ingest:fe(s.ingest,`${t}.${a}`),respond:void 0,mapping:r,preChain:i}),t=>(e.logger.scope("source:many").error(`many branch ${a} failed`,{error:t}),{ok:!0}))())),w={ok:!0}):w=await v(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:r,preChain:f.preChain});return i&&await i,w},b=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}},k=e.logger.scope("source").scope(t),I={...s,push:async(e,n={})=>{const o={ingest:(0,_.createIngest)(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:k},S={collector:e,logger:k,id:t,config:r,env:I,withScope:async(e,t,n)=>{const o={ingest:await b(e),respond:t};return n({...I,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:se(e,"source",t,k)},E=await(0,_.tryCatchAsync)(o,n=>{if(n instanceof _.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(S);if(!E)return;const O=E.type||"unknown",C=e.logger.scope(O).scope(t);return I.logger=C,i&&(E.config={...E.config,primary:i}),E}async function be(e){for(const[t,n]of Object.entries(e.sources)){if(ye(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!je(e,t));r.length!==o.length&&(n.config.require=r,ye(n)&&await ve(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const r=o.filter(t=>!je(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Ye(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function ke(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 Ie=!1;function Se(){Ie||(Ie=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Ee(e,t,n,o){if(n instanceof A.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var Oe=[F.Consent,F.User,F.Globals,F.Custom];function Ce(e){return Oe.includes(e)}function qe(e,t){switch(t){case F.Consent:return Object.keys(e.consent).length>0;case F.User:return Object.keys(e.user).length>0;case F.Globals:return Object.keys(e.globals).length>0;case F.Custom:return Object.keys(e.custom).length>0;default:return!1}}function je(e,t){switch(t){case F.Consent:case F.User:case F.Globals:case F.Custom:return qe(e,t);case F.Run:case F.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function xe(e,t){return e.cellVersion[String(t)]??0}function Ae(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=xe(e,n)}function $e(e,t,n){return e.allowed&&xe(e,n)>function(e,t,n){const o=e.delivery.get(t),r=o?.[String(n)];return void 0===r?-1:r}(e,t,n)}function De(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 _e(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Te(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:Qe(t.env,t.config.env),reportError:se(e,"destination",n,i,t)};(0,$.tryCatch)(t.on,t=>Ee(e,"destination",t,{destId:n,type:o}))(o,a)}function Me(e,t,n,o){if(!ke(e))return void Se();const r=Pe(e,t,o);if(n.length)switch(t){case F.Consent:!function(e,t,n){const o=n||e.consent,r=_e(e,F.Consent);t.forEach(t=>{$e(e,t,F.Consent)&&De(e,t,F.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,$.tryCatch)(t[n],t=>Ee(e,"consent",t,{key:n}))(o,r)}),Ae(e,t,F.Consent))})}(e,n,o);break;case F.Ready:!function(e,t){if(!e.allowed)return;const n=_e(e,F.Ready);t.forEach(t=>{(0,$.tryCatch)(t,t=>Ee(e,"ready",t))(void 0,n)})}(e,n);break;case F.Run:!function(e,t){if(!e.allowed)return;const n=_e(e,F.Run);t.forEach(t=>{(0,$.tryCatch)(t,t=>Ee(e,"run",t))(void 0,n)})}(e,n);break;case F.Session:!function(e,t){if(!e.session)return;const n=_e(e,F.Session);t.forEach(t=>{(0,$.tryCatch)(t,t=>Ee(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=_e(e,t),s=Ce(t);n.forEach(n=>{"function"==typeof n&&(s&&!$e(e,n,t)||s&&!De(e,n,t)||((0,$.tryCatch)(n,n=>Ee(e,"generic",n,{type:t}))(r,o),s&&Ae(e,n,t)))});break}}}function Pe(e,t,n){switch(t){case F.Consent:return n||e.consent;case F.Session:return e.session;case F.User:return n||e.user;case F.Custom:return n||e.custom;case F.Globals:return n||e.globals;case F.Config:return n||e.config;default:return}}async function Re(e,t,n,o,r){if(!t.on)return!1;if(Ce(o)&&!$e(e,t,o))return!1;if(Ce(o)&&!De(e,t,o))return!1;const s=await(0,$.tryCatchAsync)(t.on,t=>Ee(e,"source",t,{sourceId:n,type:o}))(o,r);return Ce(o)&&Ae(e,t,o),!1===s}function ze(e){return"number"==typeof e&&e>0?e:1e4}var Be=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Ke(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Be(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var Fe=Object.freeze({batched:!0});function He(e){return e===Fe}function Ge(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Ue(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return de(e,t);if("string"==typeof e)return de(e,t);const o=(0,j.getNextSteps)(e,(0,j.buildCacheContext)(n));return 0===o.length?[]:1===o.length?de(o[0],t):de(o,t)}async function Ve(e,t,n={},o){const{allowed:r,consent:s,user:i}=e;if(!r)return Le({ok:!1});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=Q(e.queue,t,{max:n});if(o.dropped>0){const t=re(e.status,(0,j.stepId)("collector"),"queue",o.dropped);X(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Z(e.queue);e.status.in++}o||(o=e.destinations);const a=e.transformers?ce(e.transformers):{},c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{if(r.config.disabled)return{id:o,destination:r,skipped:!0};const c=r.config.id||o,u=(0,j.stepId)("destination",c),d=te(r.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 r=ee();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,u,d.cooldown))return{id:o,destination:r,skipped:!0};const l=t=>{d&&ne(e.status.breakers,u,t,d.threshold,d.cooldown)},p=()=>{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,u)};let f=(r.queuePush||[]).map(e=>({...e,consent:s}));r.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&&!r.queueOn?.length)return p(),{id:o,destination:r,skipped:!0};if(!f.length&&r.queueOn?.length){if(!(0,j.getGrantedConsent)(r.config.consent,s))return p(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await Ne(e,r,o,!0)}catch(t){e.status.failed++;const n=r.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:r,skipped:!t}}const h=[],m=f.filter(t=>{const n=(0,j.getGrantedConsent)(r.config.consent,s,t.consent);if(n)return t.consent=n,h.push(t),!1;const i=G(e,{stepId:(0,j.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...H(t,g,e)});return i.skipReason="consent",s&&(i.consent={...s}),r.config.consent&&(i.meta={required:{...r.config.consent}}),(0,j.emitStep)(e,i),!0});if(m.length>0){const t=r.queuePush,n=r.config.id||o,s={max:r.config.queueMax??1e3};let i=0;for(const e of m)i+=Q(t,e,s).dropped;if(i>0){oe(e,n);const o=re(e.status,(0,j.stepId)("destination",n),"queue",i);X(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&Z(t)}if(!h.length)return p(),{id:o,destination:r,queue:f};let v,y,w=!1;try{w=await Ne(e,r,o,!0)}catch(t){e.status.failed++;const n=r.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:r,queue:f};r.dlq||(r.dlq=[]);const b=Ue(r.config.before,a,g),k=r.config.next,I=r.config?.cache,S=I?(0,j.compileCache)(I):void 0,E=S?ie(S,e):void 0,O=r.config?.state?(0,j.compileState)(r.config.state):void 0,C=O?.filter(e=>"get"===e.mode),q=O?.filter(e=>"set"===e.mode);let x=0,A=0,$=0;return await Promise.all(h.map(async t=>{let s,c;if(t.user=(0,j.assign)(i,t.user),S?.stop&&E){const e=(0,j.buildCacheContext)(g,t),n=await(0,j.checkCache)(S,E,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}let u=[t],d=n.respond;if(b.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ge(e,e.transformers,b,t,g,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(d=r.respond),u=Array.isArray(r.event)?r.event:[r.event]}const l=async(t,n)=>{let s=n,i=!1;if(S&&!S.stop&&E){const e=(0,j.buildCacheContext)(g,t),n=await(0,j.checkCache)(S,E,e);if("HIT"===n?.status)return!1;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl},i=!0)}C&&C.length>0&&t&&(t=await(0,j.applyState)(C,t=>ae(t,e),t,e));const u=Date.now();let l=!1;const p=await(0,j.tryCatchAsync)(We,n=>{const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:n,event:t.name}),v=n,l=!0;const i=r.dlq,a=r.config.id||o,c={max:r.config.dlqMax??100},u=Q(i,[t,n],c);if(u.dropped>0){oe(e,a);const t=re(e.status,(0,j.stepId)("destination",a),"dlq",u.dropped);X(i,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:c.max,droppedCount:t})}else i.length<c.max&&Z(i)})(e,r,o,t,g,d);if(x+=Date.now()-u,s&&E&&void 0===r.config.mock&&(i?(0,j.storeCache)(E,s.key,p??!0,s.ttl):void 0===c&&(c=p??!0)),!l&&!He(p)&&q&&q.length>0&&t&&(t=await(0,j.applyState)(q,t=>ae(t,e),t,e)),void 0===p||He(p)||(y=p),He(p)&&A++,!l&&k){void 0!==p&&(g._response=p);const n=Ue(k,a,g);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await ge(e,e.transformers,n,t,g,d,`destination.${o}.next`);r.respond&&(d=r.respond)}}return!0};for(const e of u)await l(e,s)&&$++;return s&&E&&void 0!==c&&void 0===r.config.mock&&(0,j.storeCache)(E,s.key,c,s.ttl),t})),{id:o,destination:r,error:v,response:y,totalDuration:x,batchedCount:A,allowedCount:h.length,pushedCount:$,canonicalId:c,breakerConfig:d}})),u={},d={},l={};for(const t of c){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};oe(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,c=t=>{i&&a&&ne(e.status.breakers,a,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,l[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,c("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)&&(u[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return Le({event:t,...Object.keys(u).length&&{done:u},...Object.keys(d).length&&{queued:d},...Object.keys(l).length&&{failed:l}})}async function Ne(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:Qe(t.env,t.config.env),reportError:se(e,"destination",n,s,t)};s.debug("init");const a=Date.now();let c;(0,j.emitStep)(e,G(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=G(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)Te(e,t,n,r,s)}s.debug("init done")}return!0}async function We(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",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...Qe(t.env,i.env),...s?{respond:s}:{}},reportError:se(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,p=void 0!==l?.batch,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=Ge(l?.batch),s=Ge(i.batch),a=r.wait??s.wait??3e4,c=r.size??s.size??1e3,d=r.age??s.age??3e4,g=Qe(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:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:se(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=oe(e,d),p=te(t.config.breaker),h=(0,j.stepId)("destination",d),m=t=>{p&&ne(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+=Q(o,e,r).dropped;if(s>0){const t=re(e.status,(0,j.stepId)("destination",d),"dlq",s);X(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&Z(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=s.entries.length;const S=ze(i.timeout),E=await(0,j.tryCatchAsync)((o,r)=>Ke(Promise.resolve((0,j.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),S,`Destination "${n}" batch delivery timed out after ${S}ms`),e=>{I=0,b=!0,w=e,k(s.entries.map(t=>[t.event,e])),m("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if((0,j.isObject)(O=E)&&Array.isArray(O.failed)&&E.failed.length>0){const e=[];for(const t of E.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),u.error("Push batch partial failure",{failed:e.length,delivered:I,entries:s.entries.length}))}var O;const C=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),i=H(t.event,t.ingest,e),a=G(e,{stepId:(0,j.stepId)("destination",n),stepType:"destination",phase:r?"error":"flush",eventId:"string"==typeof t.event.id?t.event.id:"",now:C,traceId:i.traceId,sourceId:i.sourceId,parentEventId:i.parentEventId});if(a.batch={size:s.entries.length,index:o},a.durationMs=C-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)}),u.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:d});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 d="string"==typeof a.event.id?a.event.id:"",g=H(o,r,e),h=Date.now(),m=G(e,{stepId:(0,j.stepId)("destination",n),stepType:"destination",phase:"in",eventId:d,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=G(e,{stepId:(0,j.stepId)("destination",n),stepType:"destination",phase:"out",eventId:d,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=oe(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),Fe}{let s;if(u.debug("push",{event:a.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=N({...d.env,simulation:t.calls});d.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}=H(o,r,e),g=Date.now(),h=G(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=ze(i.timeout),r=await Ke(Promise.resolve((0,j.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),h=Date.now(),m=G(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=Y(s)),(0,j.isDefined)(r)&&(m.meta={...m.meta,response:r}),a.mappingKey&&(m.mappingKey=a.mappingKey),(0,j.emitStep)(e,m),u.debug("push done"),r}catch(t){const o=Date.now(),r=G(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=Y(s)),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,j.emitStep)(e,r),t}}}function Le(e){return{ok:!e?.failed,...e}}function Ye(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 u=Qe(t.env,o);return{...t,config:c,env:u}}function Qe(e,t){return e||t?t?e&&(0,j.isObject)(e)&&(0,j.isObject)(t)?{...e,...t}:t:e:{}}async function Je(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 Xe(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Ze(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 F.Config:(0,P.isObject)(n)&&((0,M.assign)(e.config,n,{shallow:!1}),r=n,s=!0);break;case F.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);Xe(e,F.Consent),r=t,s=!0}break;case F.Custom:(0,P.isObject)(n)&&(e.custom=(0,M.assign)(e.custom,n),Xe(e,F.Custom),r=n,s=!0);break;case F.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 Le({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=o||{init:!1};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=(0,j.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(d.require?.length){e.pending.destinations[l]=t,await be(e);const n=e.destinations[l];return n?Ve(e,void 0,{},{[l]:n}):Le({ok:!0})}const p={...n,config:d,env:Qe(n.env,r)};return e.destinations[l]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),Ve(e,void 0,{},{[l]:p})}(e,n));break;case F.Globals:(0,P.isObject)(n)&&(e.globals=(0,M.assign)(e.globals,n),Xe(e,F.Globals),r=n,s=!0);break;case F.Hook:if((0,P.isObject)(n)&&(0,M.isString)(n.name)&&(0,M.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case F.On:if((0,P.isObject)(n)&&(0,M.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!ke(e))return void Se();const o=e.on,r=o[t]||[],s=(0,A.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Me(e,t,s)}(e,t,o)}break;case F.Ready:s=!0;break;case F.Run:o=await async function(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=(0,M.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,M.assign)(e.consent,t.consent),Xe(e,F.Consent)),t.user&&(e.user=(0,M.assign)(e.user,t.user),Xe(e,F.User)),t.globals&&(e.globals=(0,M.assign)(e.config.globalsStatic||{},t.globals),Xe(e,F.Globals)),t.custom&&(e.custom=(0,M.assign)(e.custom,t.custom),Xe(e,F.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await be(e),await async function(e){if(ke(e))for(const t of Oe){if(!qe(e,t))continue;const n=Pe(e,t);Me(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))ye(r)&&await Re(e,r,o,t,n)}else Se()}(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 Ve(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 F.Session:s=!0;break;case F.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Je(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 Je(e.destinations,"destination",t),await Je(e.transformers,"transformer",t),await Je(e.stores,"store",t)}(e));break;case F.User:(0,P.isObject)(n)&&((0,M.assign)(e.user,n,{shallow:!1}),Xe(e,F.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Le({ok:!1})}if(s){await async function(e,t,n,o){if(!ke(e))return Se(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=Pe(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&&(ye(o)?await Re(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});Te(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))ye(n)&&n.queueOn?.length&&await ve(e,n,t);const a=Object.values(e.sources).some(e=>!ye(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||a)&&await be(e),Me(e,t,r,o),!i}(e,t,void 0,r);const n=await Ve(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||Le({ok:!0})}()}finally{i()}}function et(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function tt(e,t,n){const o=t.name;if("string"!=typeof o)throw new M.InvalidEventError(void 0===o?"Event name is required":"Event name is invalid");if(!o)throw new M.InvalidEventError("Event name is required");const[r,s]=o.split(" ");if(!r||!s)throw new M.InvalidEventError("Event name is invalid");const{timestamp:i=Date.now(),name:a=`${r} ${s}`,data:c={},context:u={},globals:d={},custom:l={},user:p=e.user,nested:f=[],consent:g=e.consent,id:h=(0,M.getSpanId)(),trigger:m="",entity:v=r,action:y=s,timing:w=0,source:b={type:"collector",schema:"4"}}=t,k=b??{type:"collector",schema:"4"},I=k.count??(e.count+=1),S=k.trace??n?._meta.trace??e.trace,E={...k,count:I};void 0!==S&&(E.trace=S);const O=e.name??k.platform??"default",C=e.release??"4.5.0";return E.release={...k.release,[O]:C},{name:a,data:c,context:u,globals:(0,M.assign)(e.globals,d),custom:l,user:p,nested:f,consent:g,id:h,trigger:m,entity:v,action:y,timestamp:i,timing:w,source:E}}function nt(e,t){const n=(0,R.useHooks)(async(n,o={})=>await(0,R.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=Q(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=re(e.status,"collector.preRun","queue",r.dropped);X(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&Z(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Le({ok:!0})}const r=Date.now(),{id:s,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let p=a,f=n;const g=d||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,l):void 0,h=i??(0,R.createIngest)(s||"unknown");if(c){const t=await(0,R.processEventMapping)(f,c,e);if(t.ignore)return Le({ok:!0});if(c.consent&&!(0,R.getGrantedConsent)(c.consent,e.consent,t.event.consent))return Le({ok:!0});f=t.event}if(u?.length&&e.transformers&&Object.keys(e.transformers).length>0){const n=await ge(e,e.transformers,u,f,h,p,s?`source.${s}.next`:void 0);if(null===n.event)return e.logger.debug("Event dropped by transformer chain"+(n.droppedBy?` (${n.droppedBy})`:"")),Le({ok:!0,dropped:!0});if(n.stopped)return n.respond&&(p=n.respond),Le({ok:!0});n.respond&&(p=n.respond);const o="string"==typeof f.id?f.id:"";if(Array.isArray(n.event)){const i=await Promise.all(n.event.map(async n=>{const r=""!==o&&n.id===o?{...n,id:(0,R.getSpanId)()}:n,i=t(r),a=tt(e,i,h);return Ve(e,a,{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+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return i[0]??Le({ok:!0})}f=""===o||"string"==typeof n.event.id&&""!==n.event.id?n.event:{...n.event,id:o}}const m=function(e,t,n){return tt(e,et(e,t),n)}(e,f,h),v=await Ve(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 R.FatalError)throw t;if(t instanceof R.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}),Le({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Le({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,R.getSpanId)()},s="string"==typeof r.id?r.id:"",{traceId:i,sourceId:a,parentEventId:c}=H(r,o?.ingest,e),u=Date.now(),d=G(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:u,traceId:i,sourceId:a,parentEventId:c});d.inEvent=r,(0,R.emitStep)(e,d);try{const t=await n(r,o),d=Date.now(),l=G(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:d,traceId:i,sourceId:a,parentEventId:c});return l.durationMs=d-u,l.outEvent=t,(0,R.emitStep)(e,l),t}catch(t){const n=Date.now(),o=G(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:i,sourceId:a,parentEventId:c});throw o.durationMs=n-u,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,R.emitStep)(e,o),t}}}function ot(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 rt(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=G(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,K.emitStep)(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?(0,K.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 d.find(e=>e.match(n))}const f=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),r=await o.get(n),s=(0,K.readCacheEnvelope)(r);if(void 0!==s){if(!("expired"in s))return u.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=f.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=p(t,r);if(s)try{const e=1e3*s.ttl;await o.set(n,(0,K.wrapCacheEnvelope)(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{f.delete(n)}})();return f.set(n,a),a},async set(t,n,r){u.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,K.wrapCacheEnvelope)(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function st(e,t,n){const o=`store.${n}`,r=(0,B.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,B.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,B.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=G(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},(0,B.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=G(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},(0,B.emitStep)(e,a),s}catch(r){const s=Date.now(),i=G(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,B.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=G(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},(0,B.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=G(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},(0,B.emitStep)(e,c)}catch(n){const r=Date.now(),s=G(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,B.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=G(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},(0,B.emitStep)(e,r);try{await i(t);const r=Date.now(),s=G(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},(0,B.emitStep)(e,s)}catch(r){const s=Date.now(),i=G(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,B.emitStep)(e,i),r}}}async function it(e){const t=(0,q.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,q.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),s.push=nt(s,e=>et(s,e)),s.command=(i=s,a=Ze,(0,z.useHooks)(async(e,t,n)=>await(0,z.tryCatchAsync)(async()=>await a(i,e,t,n),n=>{if(n instanceof z.FatalError)throw n;return i.status.failed++,i.logger.error("command failed",{command:e,data:t,error:n}),Le({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 Le({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:se(e,"store",o,a)},u=await t(c);n[o]=u}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){const i=t[s];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const a=e[s].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${s}" cache.store references "${a}", which is not declared in flow.stores`);r(a)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(o);for(const t of r){const r=o[t].cache;if(!r)continue;let s,i;void 0!==r.store?(s=n[r.store],i=r.store):(n.__cache||(n.__cache=ot()),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]=rt(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&&st(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=ot()),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]=Ye(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,T.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"),u=Object.keys(s).length>0?{...c,env:s}:c,{cache:d}=r,l=d?{...u,cache:d}:u,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,T.createIngest)(o),config:f,env:s,reportError:se(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,T.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 at=globalThis;function ct(e){try{const t=at.window;if(!t)return;t.localStorage.getItem(C.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(C.OBSERVE_STORAGE_KEY)}catch{}}function ut(e,t){return void 0===t?e:n=>e({...n,release:t})}async function dt(e){e=e||{};const t=await it(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=at.window,t=at.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(C.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return at.window?.localStorage.getItem(C.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,C.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),ct(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{at.window?.localStorage.setItem(C.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=at.window,t=at.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(C.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,C.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(ct(r),i&&e.observers.delete(i))}});i=(0,C.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(ut(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,C.createTelemetryObserver)(ut((0,C.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 we(e,o,r);if(!t)continue;const s=r.config?.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await(0,_.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,error:n})})(),o||(n.config.init=!0,ye(n)&&await ve(e,n,t))}return await be(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 lt=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await dt({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};//# sourceMappingURL=dev.js.map
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},i={};s(i,{examples:()=>g,schemas:()=>a}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={};s(a,{MappingSchema:()=>l,SettingsSchema:()=>d,mapping:()=>f,settings:()=>p});var c=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),d=u.z.object({events:u.z.array(u.z.object({delay:u.z.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")}),l=require("@walkeros/core/dev").z.object({}),p=(0,c.zodToSchema)(d),f=(0,c.zodToSchema)(l),g={};s(g,{createTrigger:()=>pt,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:()=>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"}}]]},O=require("@walkeros/core"),C=require("@walkeros/core"),q=require("@walkeros/core"),j=require("@walkeros/core"),x=(require("@walkeros/core"),require("@walkeros/core")),A=require("@walkeros/core"),$=require("@walkeros/core"),D=require("@walkeros/core"),_=require("@walkeros/core"),T=require("@walkeros/core"),M=require("@walkeros/core"),P=require("@walkeros/core"),R=require("@walkeros/core"),z=require("@walkeros/core"),B=require("@walkeros/core"),K=require("@walkeros/core"),F={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function H(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function G(e,t){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 U(e){return"object"==typeof e&&null!==e}function V(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8)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(V(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:V(s,t,n+1);return r}function N(e){const t=[],n=[],{simulation:o,...r}=e,s=V(r,new WeakMap,0);for(const e of o){const o=(0,x.parseCallPath)(e);if(0===o.length)continue;const r=o.join(".");if(o.length-1>=8){n.push(r);continue}let i=s,a=!0;for(let e=0;e<o.length-1;e++){const t=i[o[e]];if(!U(t)){a=!1;break}i=t}const c=o[o.length-1];if(!a||!(c in i)){n.push(r);continue}const u=i[c];"function"==typeof u?i[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),u.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function W(e,t){try{return e[t]}catch{return"[unreadable]"}}function L(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(W(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 Y(e){return e.map(e=>({fn:e.fn,args:L(e.args),ts:e.ts}))}function Q(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 X(e,t,n,o){J.get(e)||(J.set(e,!0),t.warn(n,o))}function Z(e){J.delete(e)}var ee=()=>Date.now();function te(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function ne(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=ee()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=ee()+r)))}function oe(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 r=e.dropped[t];return r[n]=(r[n]??0)+o,r[n]}function se(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 ie(e,t,n,o,r){const s=(0,D.stepId)(t,n);return(t,i)=>{try{if(i)return r?function(e,t,n,o,r,s){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??100},c=Q(i,[o,r],a);if(c.dropped>0){const t=re(e.status,(0,D.stepId)("destination",n),"dlq",c.dropped);X(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&Z(i);const u=oe(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=te(t.config.breaker);if(d){const o=t.config.id||n;ne(e.status.breakers,(0,D.stepId)("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...se(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",se(t))}catch{}}}function ae(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function ce(e,t){return e?t.stores[e]:t.stores.__cache}function ue(e){const t={};for(const[n,o]of Object.entries(e)){const e=o.config?.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?t[n]={next:e}:t[n]={}}return t}function de(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function le(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function pe(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:(0,T.createIngest)(n),config:t.config,env:me(t.config.env),reportError:ie(e,"transformer",n,r)};r.debug("init");const i=await(0,T.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 fe(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:{...me(t.config.env),...s?{respond:s}:{}},reportError:ie(e,"transformer",n,a)};a.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",{traceId:d,sourceId:l,parentEventId:p}=H(o,r,e),f=Date.now(),g=G(e,{stepId:(0,T.stepId)("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:f,traceId:d,sourceId:l,parentEventId:p});g.inEvent=o,(0,T.emitStep)(e,g);try{const r=await(0,T.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=G(e,{stepId:(0,T.stepId)("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s,traceId:d,sourceId:l,parentEventId:p});return i.durationMs=s-f,i.outEvent=r,(0,T.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=G(e,{stepId:(0,T.stepId)("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o,traceId:d,sourceId:l,parentEventId:p});throw r.durationMs=o-f,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,T.emitStep)(e,r),t}}function ge(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:(0,T.createIngest)(t)}async function he(e,t,n,o,r,s,i){r||(r=(0,T.createIngest)(n[0]??"chain")),i&&r._meta&&(r._meta.chainPath=i);let a=o,c=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:c};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await(0,T.tryCatchAsync)(pe,t=>{if(t instanceof T.FatalError)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,...se(t)}),!1})(e,s,o))return{event:null,respond:c};if(i&&void 0!==s.config?.chainMocks?.[i]){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),a=t;continue}if(void 0!==s.config?.mock){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),a=s.config.mock;continue}if(s.config?.disabled)continue;const u=s.config?.cache,d=u?(0,T.compileCache)(u):void 0,l=d?ae(d,e):void 0,p=s.config?.state?(0,T.compileState)(s.config.state):void 0,f=p?.filter(e=>"get"===e.mode),g=p?.filter(e=>"set"===e.mode),h=async t=>g&&0!==g.length?(0,T.applyState)(g,t=>ce(t,e),t,e):t;let m;if(d&&l){const e=(0,T.buildCacheContext)(r,a),t=await(0,T.checkCache)(d,l,e);if("HIT"===t?.status&&t.value){if(a=t.value,d.stop)return{event:a,respond:c,stopped:!0};continue}"MISS"===t?.status&&(m={key:t.key,ttl:t.rule.ttl})}const v=s.config.before;if(v){const n=(0,T.getNextSteps)(v,(0,T.buildCacheContext)(r,a));if(1===n.length){const o=le(n[0],ue(t));if(o.length>0){const n=await he(e,t,o,a,r,c,i);if(null===n.event)return{event:null,respond:n.respond??c};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:n.respond??c,stopped:!0};n.respond&&(c=n.respond),a=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>(0,T.tryCatchAsync)(he,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,se(t)),{event:null,respond:void 0}))(e,t,le(n,ue(t)),a,ge(r,n),void 0,i)))}f&&f.length>0&&(a=await(0,T.applyState)(f,t=>ce(t,e),a,e));const y=await(0,T.tryCatchAsync)(fe,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",se(t)),!1))(e,s,o,a,r,c);if(!1===y)return{event:null,respond:c,droppedBy:o};if(Array.isArray(y)){const s=n.slice(n.indexOf(o)+1),u=await Promise.all(y.map(async n=>{const o=await h(n.event||a),u=ge(r,"unknown");if(n.next){const r=(0,T.getNextSteps)(n.next,(0,T.buildCacheContext)(u,o));if(0===r.length)return{event:o,respond:c};if(1===r.length){const n=le(r[0],ue(t));return n.length>0?he(e,t,n,o,u,c,i):{event:o,respond:c}}return(await Promise.all(r.map(n=>(0,T.tryCatchAsync)(he,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,se(t)),{event:null,respond:void 0}))(e,t,le(n,ue(t)),o,ge(u,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?he(e,t,s,o,u,c,i):{event:o,respond:c}}));let d=c;const l=[];for(const e of u.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(d=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:d}:1===l.length?{event:l[0],respond:d}:{event:l,respond:d}}if(y&&"object"==typeof y){const{event:n,respond:o,next:s}=y;if(o&&(c=o),void 0!==s){const o=await h(n||a),u=(0,T.getNextSteps)(s,(0,T.buildCacheContext)(r,o));if(0===u.length){a=o;continue}if(1===u.length){const n=le(u[0],ue(t));return n.length>0?he(e,t,n,o,r,c,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:c})}return await Promise.all(u.map(n=>(0,T.tryCatchAsync)(he,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,se(t)),{event:null,respond:void 0}))(e,t,le(n,ue(t)),o,ge(r,n),void 0,i))),{event:null,respond:void 0}}n&&(a=n)}g&&g.length>0&&(a=await(0,T.applyState)(g,t=>ce(t,e),a,e)),m&&l&&(0,T.storeCache)(l,m.key,a,m.ttl);const w=s.config.next,b="string"==typeof w||Array.isArray(w)&&w.every(e=>"string"==typeof e),k=void 0!==w&&!b;if((!y||"object"==typeof y&&!y.next)&&k){const n=(0,T.getNextSteps)(s.config.next,(0,T.buildCacheContext)(r,a));if(1===n.length){const o=le(n[0],ue(t));return o.length>0?he(e,t,o,a,r,c,i):{event:a,respond:c}}return n.length>1?(await Promise.all(n.map(n=>(0,T.tryCatchAsync)(he,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,se(t)),{event:null,respond:void 0}))(e,t,le(n,ue(t)),a,ge(r,n),void 0,i))),{event:null,respond:void 0}):{event:a,respond:c}}}return{event:a,respond:c}}function me(e){return e&&(0,T.isObject)(e)?e:{}}function ve(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function ye(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)qe(n)&&!De(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,...se(t)})})(n,s),qe(n)&&$e(e,t,n))}function we(e){return Boolean(e.config.init)&&!e.config.require?.length}async function be(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:u,terminus:d}=n,l=r.state??n.state,p=l?(0,_.compileState)(l):void 0,f=u,g=f?(0,_.compileCache)({...f,stop:f.stop??!0}):void 0,h=ve(a)?le(a,ue(e.transformers)):void 0,m=ve(c)?le(c,ue(e.transformers)):void 0,v=d??e.push,y=Boolean(d),w=async(n,o,s)=>{if(y)return v(n);let i;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,_.getSpanId)()},d=m??(void 0!==c?(()=>{const t=(0,_.getNextSteps)(c,(0,_.buildCacheContext)(s.ingest));return 0===t.length?[]:le(1===t.length?t[0]:t,ue(e.transformers))})():[]);let l=[u];if(d.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await he(e,e.transformers,d,u,s.ingest,s.respond,`source.${t}.before`);if(null===n.event)return{ok:!0};if(n.stopped)return n.respond&&(s.respond=n.respond),{ok:!0};n.respond&&(s.respond=n.respond);const o="string"==typeof u.id?u.id:"";if(Array.isArray(n.event))l=n.event.map(e=>""!==o&&e.id===o?{...e,id:(0,_.getSpanId)()}:e);else{const e=n.event;l=""===o||"string"==typeof e.id&&""!==e.id?[e]:[{...e,id:o}]}}if(g){const t=ae(g,e);if(t){const n=(0,_.buildCacheContext)(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"}},u=o.key,d=o.rule.ttl,l=n=>{(0,_.storeCache)(t,u,n,d),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)}}}const f=h?{kind:"single",preChain:h}:void 0!==a?(()=>{const t=(0,_.getNextSteps)(a,(0,_.buildCacheContext)(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:le(t[0],ue(e.transformers))}:{kind:"many",branches:t.map(t=>le(t,ue(e.transformers)))}})():{kind:"single",preChain:[]};p&&p.length>0&&(l=await Promise.all(l.map(t=>(0,_.applyState)(p,t=>ce(t,e),t,e))));let w={ok:!0};for(const n of l)"many"===f.kind?(await Promise.all(f.branches.map((i,a)=>(0,_.tryCatchAsync)(async()=>v(n,{...o,id:t,ingest:ge(s.ingest,`${t}.${a}`),respond:void 0,mapping:r,preChain:i}),t=>(e.logger.scope("source:many").error(`many branch ${a} failed`,se(t)),{ok:!0}))())),w={ok:!0}):w=await v(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:r,preChain:f.preChain});return i&&await i,w},b=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}},k=e.logger.scope("source").scope(t),I={...s,push:async(e,n={})=>{const o={ingest:(0,_.createIngest)(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:k},S={collector:e,logger:k,id:t,config:r,env:I,withScope:async(e,t,n)=>{const o={ingest:await b(e),respond:t};return n({...I,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ie(e,"source",t,k)},E=await(0,_.tryCatchAsync)(o,n=>{if(n instanceof _.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...se(n)})})(S);if(!E)return;const O=E.type||"unknown",C=e.logger.scope(O).scope(t);return I.logger=C,i&&(E.config={...E.config,primary:i}),E}async function ke(e){for(const[t,n]of Object.entries(e.sources)){if(we(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!xe(e,t));r.length!==o.length&&(n.config.require=r,we(n)&&await ye(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=>!xe(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=Qe(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function Ie(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 Se=!1;function Ee(){Se||(Se=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Oe(e,t,n,o){if(n instanceof A.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...se(n)})}var Ce=[F.Consent,F.User,F.Globals,F.Custom];function qe(e){return Ce.includes(e)}function je(e,t){switch(t){case F.Consent:return Object.keys(e.consent).length>0;case F.User:return Object.keys(e.user).length>0;case F.Globals:return Object.keys(e.globals).length>0;case F.Custom:return Object.keys(e.custom).length>0;default:return!1}}function xe(e,t){switch(t){case F.Consent:case F.User:case F.Globals:case F.Custom:return je(e,t);case F.Run:case F.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Ae(e,t){return e.cellVersion[String(t)]??0}function $e(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Ae(e,n)}function De(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 _e(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 Te(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Me(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:Je(t.env,t.config.env),reportError:ie(e,"destination",n,i,t)};(0,$.tryCatch)(t.on,t=>Oe(e,"destination",t,{destId:n,type:o}))(o,a)}function Pe(e,t,n,o){if(!Ie(e))return void Ee();const r=Re(e,t,o);if(n.length)switch(t){case F.Consent:!function(e,t,n){const o=n||e.consent,r=Te(e,F.Consent);t.forEach(t=>{De(e,t,F.Consent)&&_e(e,t,F.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,$.tryCatch)(t[n],t=>Oe(e,"consent",t,{key:n}))(o,r)}),$e(e,t,F.Consent))})}(e,n,o);break;case F.Ready:!function(e,t){if(!e.allowed)return;const n=Te(e,F.Ready);t.forEach(t=>{(0,$.tryCatch)(t,t=>Oe(e,"ready",t))(void 0,n)})}(e,n);break;case F.Run:!function(e,t){if(!e.allowed)return;const n=Te(e,F.Run);t.forEach(t=>{(0,$.tryCatch)(t,t=>Oe(e,"run",t))(void 0,n)})}(e,n);break;case F.Session:!function(e,t){if(!e.session)return;const n=Te(e,F.Session);t.forEach(t=>{(0,$.tryCatch)(t,t=>Oe(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Te(e,t),s=qe(t);n.forEach(n=>{"function"==typeof n&&(s&&!De(e,n,t)||s&&!_e(e,n,t)||((0,$.tryCatch)(n,n=>Oe(e,"generic",n,{type:t}))(r,o),s&&$e(e,n,t)))});break}}}function Re(e,t,n){switch(t){case F.Consent:return n||e.consent;case F.Session:return e.session;case F.User:return n||e.user;case F.Custom:return n||e.custom;case F.Globals:return n||e.globals;case F.Config:return n||e.config;default:return}}async function ze(e,t,n,o,r){if(!t.on)return!1;if(qe(o)&&!De(e,t,o))return!1;if(qe(o)&&!_e(e,t,o))return!1;const s=await(0,$.tryCatchAsync)(t.on,t=>Oe(e,"source",t,{sourceId:n,type:o}))(o,r);return qe(o)&&$e(e,t,o),!1===s}function Be(e){return"number"==typeof e&&e>0?e:1e4}var Ke=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Fe(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new Ke(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var He=Object.freeze({batched:!0});function Ge(e){return e===He}function Ue(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Ve(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return le(e,t);if("string"==typeof e)return le(e,t);const o=(0,j.getNextSteps)(e,(0,j.buildCacheContext)(n));return 0===o.length?[]:1===o.length?le(o[0],t):le(o,t)}async function Ne(e,t,n={},o){const{allowed:r,consent:s,user:i}=e;if(!r)return Ye({ok:!1});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=Q(e.queue,t,{max:n});if(o.dropped>0){const t=re(e.status,(0,j.stepId)("collector"),"queue",o.dropped);X(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Z(e.queue);e.status.in++}o||(o=e.destinations);const a=e.transformers?ue(e.transformers):{},c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{if(r.config.disabled)return{id:o,destination:r,skipped:!0};const c=r.config.id||o,u=(0,j.stepId)("destination",c),d=te(r.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 r=ee();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,u,d.cooldown))return{id:o,destination:r,skipped:!0};const l=t=>{d&&ne(e.status.breakers,u,t,d.threshold,d.cooldown)},p=()=>{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,u)};let f=(r.queuePush||[]).map(e=>({...e,consent:s}));r.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&&!r.queueOn?.length)return p(),{id:o,destination:r,skipped:!0};if(!f.length&&r.queueOn?.length){if(!(0,j.getGrantedConsent)(r.config.consent,s))return p(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await We(e,r,o,!0)}catch(t){e.status.failed++;const n=r.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:r,skipped:!t}}const h=[],m=f.filter(t=>{const n=(0,j.getGrantedConsent)(r.config.consent,s,t.consent);if(n)return t.consent=n,h.push(t),!1;const i=G(e,{stepId:(0,j.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...H(t,g,e)});return i.skipReason="consent",s&&(i.consent={...s}),r.config.consent&&(i.meta={required:{...r.config.consent}}),(0,j.emitStep)(e,i),!0});if(m.length>0){const t=r.queuePush,n=r.config.id||o,s={max:r.config.queueMax??1e3};let i=0;for(const e of m)i+=Q(t,e,s).dropped;if(i>0){oe(e,n);const o=re(e.status,(0,j.stepId)("destination",n),"queue",i);X(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&Z(t)}if(!h.length)return p(),{id:o,destination:r,queue:f};let v,y,w=!1;try{w=await We(e,r,o,!0)}catch(t){e.status.failed++;const n=r.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:r,queue:f};r.dlq||(r.dlq=[]);const b=Ve(r.config.before,a,g),k=r.config.next,I=r.config?.cache,S=I?(0,j.compileCache)(I):void 0,E=S?ae(S,e):void 0,O=r.config?.state?(0,j.compileState)(r.config.state):void 0,C=O?.filter(e=>"get"===e.mode),q=O?.filter(e=>"set"===e.mode);let x=0,A=0,$=0;return await Promise.all(h.map(async t=>{let s,c;if(t.user=(0,j.assign)(i,t.user),S?.stop&&E){const e=(0,j.buildCacheContext)(g,t),n=await(0,j.checkCache)(S,E,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}let u=[t],d=n.respond;if(b.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await he(e,e.transformers,b,t,g,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(d=r.respond),u=Array.isArray(r.event)?r.event:[r.event]}const l=async(t,n)=>{let s=n,i=!1;if(S&&!S.stop&&E){const e=(0,j.buildCacheContext)(g,t),n=await(0,j.checkCache)(S,E,e);if("HIT"===n?.status)return!1;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl},i=!0)}C&&C.length>0&&t&&(t=await(0,j.applyState)(C,t=>ce(t,e),t,e));const u=Date.now();let l=!1;const p=await(0,j.tryCatchAsync)(Le,n=>{const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{...se(n),event:t.name}),v=n,l=!0;const i=r.dlq,a=r.config.id||o,c={max:r.config.dlqMax??100},u=Q(i,[t,n],c);if(u.dropped>0){oe(e,a);const t=re(e.status,(0,j.stepId)("destination",a),"dlq",u.dropped);X(i,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:c.max,droppedCount:t})}else i.length<c.max&&Z(i)})(e,r,o,t,g,d);if(x+=Date.now()-u,s&&E&&void 0===r.config.mock&&(i?(0,j.storeCache)(E,s.key,p??!0,s.ttl):void 0===c&&(c=p??!0)),!l&&!Ge(p)&&q&&q.length>0&&t&&(t=await(0,j.applyState)(q,t=>ce(t,e),t,e)),void 0===p||Ge(p)||(y=p),Ge(p)&&A++,!l&&k){void 0!==p&&(g._response=p);const n=Ve(k,a,g);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await he(e,e.transformers,n,t,g,d,`destination.${o}.next`);r.respond&&(d=r.respond)}}return!0};for(const e of u)await l(e,s)&&$++;return s&&E&&void 0!==c&&void 0===r.config.mock&&(0,j.storeCache)(E,s.key,c,s.ttl),t})),{id:o,destination:r,error:v,response:y,totalDuration:x,batchedCount:A,allowedCount:h.length,pushedCount:$,canonicalId:c,breakerConfig:d}})),u={},d={},l={};for(const t of c){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};oe(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,c=t=>{i&&a&&ne(e.status.breakers,a,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,l[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,c("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)&&(u[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return Ye({event:t,...Object.keys(u).length&&{done:u},...Object.keys(d).length&&{queued:d},...Object.keys(l).length&&{failed:l}})}async function We(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:Je(t.env,t.config.env),reportError:ie(e,"destination",n,s,t)};s.debug("init");const a=Date.now();let c;(0,j.emitStep)(e,G(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=G(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)Me(e,t,n,r,s)}s.debug("init done")}return!0}async function Le(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",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...Je(t.env,i.env),...s?{respond:s}:{}},reportError:ie(e,"destination",n,u,t)};if(void 0!==i.mock)return u.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,p=void 0!==l?.batch,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=Ue(l?.batch),s=Ue(i.batch),a=r.wait??s.wait??3e4,c=r.size??s.size??1e3,d=r.age??s.age??3e4,g=Je(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:u,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:ie(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=oe(e,d),p=te(t.config.breaker),h=(0,j.stepId)("destination",d),m=t=>{p&&ne(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+=Q(o,e,r).dropped;if(s>0){const t=re(e.status,(0,j.stepId)("destination",d),"dlq",s);X(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&Z(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=s.entries.length;const S=Be(i.timeout),E=await(0,j.tryCatchAsync)((o,r)=>Fe(Promise.resolve((0,j.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),S,`Destination "${n}" batch delivery timed out after ${S}ms`),e=>{I=0,b=!0,w=e,k(s.entries.map(t=>[t.event,e])),m("transport-failure"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if((0,j.isObject)(O=E)&&Array.isArray(O.failed)&&E.failed.length>0){const e=[];for(const t of E.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),u.error("Push batch partial failure",{failed:e.length,delivered:I,entries:s.entries.length}))}var O;const C=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),i=H(t.event,t.ingest,e),a=G(e,{stepId:(0,j.stepId)("destination",n),stepType:"destination",phase:r?"error":"flush",eventId:"string"==typeof t.event.id?t.event.id:"",now:C,traceId:i.traceId,sourceId:i.sourceId,parentEventId:i.parentEventId});if(a.batch={size:s.entries.length,index:o},a.durationMs=C-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)}),u.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:d});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 d="string"==typeof a.event.id?a.event.id:"",g=H(o,r,e),h=Date.now(),m=G(e,{stepId:(0,j.stepId)("destination",n),stepType:"destination",phase:"in",eventId:d,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=G(e,{stepId:(0,j.stepId)("destination",n),stepType:"destination",phase:"out",eventId:d,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=oe(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),He}{let s;if(u.debug("push",{event:a.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=N({...d.env,simulation:t.calls});d.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}=H(o,r,e),g=Date.now(),h=G(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=Be(i.timeout),r=await Fe(Promise.resolve((0,j.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),h=Date.now(),m=G(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=Y(s)),(0,j.isDefined)(r)&&(m.meta={...m.meta,response:r}),a.mappingKey&&(m.mappingKey=a.mappingKey),(0,j.emitStep)(e,m),u.debug("push done"),r}catch(t){const o=Date.now(),r=G(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=Y(s)),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,j.emitStep)(e,r),t}}}function Ye(e){return{ok:!e?.failed,...e}}function Qe(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=de(e,"before"),{config:a}=de({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=Je(t.env,o);return{...t,config:c,env:u}}function Je(e,t){return e||t?t?e&&(0,j.isObject)(e)&&(0,j.isObject)(t)?{...e,...t}:t:e:{}}async function Xe(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 Ze(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function et(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 F.Config:(0,P.isObject)(n)&&((0,M.assign)(e.config,n,{shallow:!1}),r=n,s=!0);break;case F.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);Ze(e,F.Consent),r=t,s=!0}break;case F.Custom:(0,P.isObject)(n)&&(e.custom=(0,M.assign)(e.custom,n),Ze(e,F.Custom),r=n,s=!0);break;case F.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 Ye({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=o||{init:!1};let d=s?{...u,before:s}:{...u};i&&(d={...d,next:i}),a&&(d={...d,cache:a}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=(0,j.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(d.require?.length){e.pending.destinations[l]=t,await ke(e);const n=e.destinations[l];return n?Ne(e,void 0,{},{[l]:n}):Ye({ok:!0})}const p={...n,config:d,env:Je(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 F.Globals:(0,P.isObject)(n)&&(e.globals=(0,M.assign)(e.globals,n),Ze(e,F.Globals),r=n,s=!0);break;case F.Hook:if((0,P.isObject)(n)&&(0,M.isString)(n.name)&&(0,M.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case F.On:if((0,P.isObject)(n)&&(0,M.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Ie(e))return void Ee();const o=e.on,r=o[t]||[],s=(0,A.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Pe(e,t,s)}(e,t,o)}break;case F.Ready:s=!0;break;case F.Run:o=await async function(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=(0,M.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,M.assign)(e.consent,t.consent),Ze(e,F.Consent)),t.user&&(e.user=(0,M.assign)(e.user,t.user),Ze(e,F.User)),t.globals&&(e.globals=(0,M.assign)(e.config.globalsStatic||{},t.globals),Ze(e,F.Globals)),t.custom&&(e.custom=(0,M.assign)(e.custom,t.custom),Ze(e,F.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await ke(e),await async function(e){if(Ie(e))for(const t of Ce){if(!je(e,t))continue;const n=Re(e,t);Pe(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))we(r)&&await ze(e,r,o,t,n)}else Ee()}(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 F.Session:s=!0;break;case F.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Xe(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 Xe(e.destinations,"destination",t),await Xe(e.transformers,"transformer",t),await Xe(e.stores,"store",t)}(e));break;case F.User:(0,P.isObject)(n)&&((0,M.assign)(e.user,n,{shallow:!1}),Ze(e,F.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Ye({ok:!1})}if(s){await async function(e,t,n,o){if(!Ie(e))return Ee(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=Re(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&&(we(o)?await ze(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});Me(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))we(n)&&n.queueOn?.length&&await ye(e,n,t);const a=Object.values(e.sources).some(e=>!we(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||a)&&await ke(e),Pe(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||Ye({ok:!0})}()}finally{i()}}function tt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function nt(e,t,n){const o=t.name;if("string"!=typeof o)throw new M.InvalidEventError(void 0===o?"Event name is required":"Event name is invalid");if(!o)throw new M.InvalidEventError("Event name is required");const[r,s]=o.split(" ");if(!r||!s)throw new M.InvalidEventError("Event name is invalid");const{timestamp:i=Date.now(),name:a=`${r} ${s}`,data:c={},context:u={},globals:d={},custom:l={},user:p=e.user,nested:f=[],consent:g=e.consent,id:h=(0,M.getSpanId)(),trigger:m="",entity:v=r,action:y=s,timing:w=0,source:b={type:"collector",schema:"4"}}=t,k=b??{type:"collector",schema:"4"},I=k.count??(e.count+=1),S=k.trace??n?._meta.trace??e.trace,E={...k,count:I};void 0!==S&&(E.trace=S);const O=e.name??k.platform??"default",C=e.release??"4.5.1-next-1788726985928";return E.release={...k.release,[O]:C},{name:a,data:c,context:u,globals:(0,M.assign)(e.globals,d),custom:l,user:p,nested:f,consent:g,id:h,trigger:m,entity:v,action:y,timestamp:i,timing:w,source:E}}function ot(e,t){const n=(0,R.useHooks)(async(n,o={})=>await(0,R.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=Q(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=re(e.status,"collector.preRun","queue",r.dropped);X(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&Z(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),Ye({ok:!0})}const r=Date.now(),{id:s,ingest:i,respond:a,mapping:c,preChain:u,include:d,exclude:l}=o;let p=a,f=n;const g=d||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,l):void 0,h=i??(0,R.createIngest)(s||"unknown");if(c){const t=await(0,R.processEventMapping)(f,c,e);if(t.ignore)return Ye({ok:!0});if(c.consent&&!(0,R.getGrantedConsent)(c.consent,e.consent,t.event.consent))return Ye({ok:!0});f=t.event}if(u?.length&&e.transformers&&Object.keys(e.transformers).length>0){const n=await he(e,e.transformers,u,f,h,p,s?`source.${s}.next`:void 0);if(null===n.event)return e.logger.debug("Event dropped by transformer chain"+(n.droppedBy?` (${n.droppedBy})`:"")),Ye({ok:!0,dropped:!0});if(n.stopped)return n.respond&&(p=n.respond),Ye({ok:!0});n.respond&&(p=n.respond);const o="string"==typeof f.id?f.id:"";if(Array.isArray(n.event)){const i=await Promise.all(n.event.map(async n=>{const r=""!==o&&n.id===o?{...n,id:(0,R.getSpanId)()}:n,i=t(r),a=nt(e,i,h);return Ne(e,a,{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+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return i[0]??Ye({ok:!0})}f=""===o||"string"==typeof n.event.id&&""!==n.event.id?n.event:{...n.event,id:o}}const m=function(e,t,n){return nt(e,tt(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 R.FatalError)throw t;if(t instanceof R.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}),Ye({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...se(t),event:n.name}),Ye({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,R.getSpanId)()},s="string"==typeof r.id?r.id:"",{traceId:i,sourceId:a,parentEventId:c}=H(r,o?.ingest,e),u=Date.now(),d=G(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:u,traceId:i,sourceId:a,parentEventId:c});d.inEvent=r,(0,R.emitStep)(e,d);try{const t=await n(r,o),d=Date.now(),l=G(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:d,traceId:i,sourceId:a,parentEventId:c});return l.durationMs=d-u,l.outEvent=t,(0,R.emitStep)(e,l),t}catch(t){const n=Date.now(),o=G(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:i,sourceId:a,parentEventId:c});throw o.durationMs=n-u,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,R.emitStep)(e,o),t}}}function rt(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 st(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=G(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,K.emitStep)(a,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?(0,K.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 d.find(e=>e.match(n))}const f=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),r=await o.get(n),s=(0,K.readCacheEnvelope)(r);if(void 0!==s){if(!("expired"in s))return u.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=f.get(n);if(i)return u.inflight_dedups++,c(t,"hit"),i;u.misses++,c(t,"miss");const a=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=p(t,r);if(s)try{const e=1e3*s.ttl;await o.set(n,(0,K.wrapCacheEnvelope)(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{f.delete(n)}})();return f.set(n,a),a},async set(t,n,r){u.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,K.wrapCacheEnvelope)(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,se(n)):console.warn(o,n)}}function it(e,t,n){const o=`store.${n}`,r=(0,B.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,B.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,B.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=G(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},(0,B.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=G(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},(0,B.emitStep)(e,a),s}catch(r){const s=Date.now(),i=G(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,B.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=G(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},(0,B.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=G(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},(0,B.emitStep)(e,c)}catch(n){const r=Date.now(),s=G(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,B.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=G(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},(0,B.emitStep)(e,r);try{await i(t);const r=Date.now(),s=G(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},(0,B.emitStep)(e,s)}catch(r){const s=Date.now(),i=G(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,B.emitStep)(e,i),r}}}async function at(e){const t=(0,q.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,q.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),s.push=ot(s,e=>tt(s,e)),s.command=(i=s,a=et,(0,z.useHooks)(async(e,t,n)=>await(0,z.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof z.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...se(t),command:e}),Ye({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 Ye({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:ie(e,"store",o,a)},u=await t(c);n[o]=u}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){const i=t[s];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const a=e[s].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${s}" cache.store references "${a}", which is not declared in flow.stores`);r(a)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(o);for(const t of r){const r=o[t].cache;if(!r)continue;let s,i;void 0!==r.store?(s=n[r.store],i=r.store):(n.__cache||(n.__cache=rt()),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]=st(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&&it(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=rt()),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]=Qe(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,T.validateStepEntry)(r,"Transformer");if(!i.ok){e.logger.warn(`Transformer ${o} invalid (${i.code}): ${i.reason}. Skipping.`);continue}const{config:a}=de(r,"before"),{config:c}=de({...r,config:a},"next"),u=Object.keys(s).length>0?{...c,env:s}:c,{cache:d}=r,l=d?{...u,cache:d}:u,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,T.createIngest)(o),config:f,env:s,reportError:ie(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,T.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 ct=globalThis;function ut(e){try{const t=ct.window;if(!t)return;t.localStorage.getItem(C.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(C.OBSERVE_STORAGE_KEY)}catch{}}function dt(e,t){return void 0===t?e:n=>e({...n,release:t})}async function lt(e){e=e||{};const t=await at(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=ct.window,t=ct.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(C.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return ct.window?.localStorage.getItem(C.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,C.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),ut(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{ct.window?.localStorage.setItem(C.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=ct.window,t=ct.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(C.OBSERVE_STORAGE_KEY);const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${r}`)}catch{}}();const a=(0,C.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(ut(r),i&&e.observers.delete(i))}});i=(0,C.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(dt(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,C.createTelemetryObserver)(dt((0,C.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 be(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,...se(n)})})(),o||(n.config.init=!0,we(n)&&await ye(e,n,t))}return await ke(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 pt=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await lt({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};//# sourceMappingURL=dev.js.map
|
package/dist/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,cAA4B;;;ACA5B,iBAAkB;AAEX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,QAAQ,aACL;AAAA,IACC,aACG,OAAO;AAAA,MACN,OAAO,aACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,IAAAC,cAAkB;AAEX,IAAM,gBAAgB,cAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,eAAW,yBAAY,cAAc;AAC3C,IAAM,cAAU,yBAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A
|
|
1
|
+
{"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport * as examples from './examples';\n","import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,cAA4B;;;ACA5B,iBAAkB;AAEX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,QAAQ,aACL;AAAA,IACC,aACG,OAAO;AAAA,MACN,OAAO,aACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,IAAAC,cAAkB;AAEX,IAAM,gBAAgB,cAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,eAAW,yBAAY,cAAc;AAC3C,IAAM,cAAU,yBAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA,IAAM,gBAAmE,OACvE,WACG;AACH,MAAI;AAEJ,QAAM,UACJ,MAAM,OAAO,YAAuC;AAElD,QAAI,CAAC,MAAM;AACT,YAAM,SAAS,MAAM,GAAU,EAAE,GAAG,QAAQ,KAAK,OAAO,OAAO,KAAK,CAAC;AACrE,aAAO,EAAE,WAAW,OAAO,WAAW,KAAK,OAAO,IAAI;AAAA,IACxD;AAIA,UAAM,KAAK,IAAI,OAAO;AAAA,EACxB;AAEF,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;","names":["import_dev","import_dev"]}
|
package/dist/dev.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{MappingSchema:()=>i,SettingsSchema:()=>s,mapping:()=>u,settings:()=>c});import{zodToSchema as o}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var s=r.object({events:r.array(r.object({delay:r.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")});import{z as a}from"@walkeros/core/dev";var i=a.object({}),c=o(s),u=o(i),d={};t(d,{createTrigger:()=>$n,env:()=>l,step:()=>y});var l={};t(l,{init:()=>h,push:()=>m,simulation:()=>v});var f=async()=>({ok:!0}),p=()=>{},g={error:p,warn:p,info:p,debug:p,throw:e=>{throw"string"==typeof e?new Error(e):e},json:p,scope:()=>g},h=void 0,m={push:f,command:f,elb:f,logger:g},v=["call:elb"],y={};t(y,{delayedEvent:()=>b,pageView:()=>w});var w={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},b={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]};import{assign as k}from"@walkeros/core";import{OBSERVE_STORAGE_KEY as I,createBatchedPoster as E,createTelemetryObserver as S,parseObserveCredential as q}from"@walkeros/core";import{assign as O,createLogger as x}from"@walkeros/core";import{assign as j,buildCacheContext as C,clone as $,compileCache as A,checkCache as D,storeCache as M,createIngest as T,debounce as P,emitStep as _,getId as R,getGrantedConsent as z,getNextSteps as B,isDefined as K,isFunction as F,isObject as U,OBSERVE_ENV_KEY as H,processEventMapping as G,stepId as V,tryCatchAsync as W,useHooks as L,compileState as N,applyState as Q}from"@walkeros/core";import{emitStep as Y}from"@walkeros/core";import{parseCallPath as J}from"@walkeros/core";import{isArray as X,FatalError as Z}from"@walkeros/core";import{tryCatch as ee,tryCatchAsync as te}from"@walkeros/core";import{stepId as ne}from"@walkeros/core";import{createIngest as oe,FatalError as re,getMappingValue as se,getSpanId as ae,parseTraceparent as ie,isScope as ce,tryCatchAsync as ue,getNextSteps as de,compileCache as le,checkCache as fe,storeCache as pe,applyUpdate as ge,buildCacheContext as he,compileState as me,applyState as ve}from"@walkeros/core";import{createIngest as ye,emitStep as we,FatalError as be,isObject as ke,stepId as Ie,tryCatchAsync as Ee,useHooks as Se,getNextSteps as qe,compileCache as Oe,checkCache as xe,storeCache as je,buildCacheContext as Ce,validateStepEntry as $e,processEventMapping as Ae,compileState as De,applyState as Me}from"@walkeros/core";import{assign as Te,getSpanId as Pe,getTraceId as _e,InvalidEventError as Re,isFunction as ze,isString as Be}from"@walkeros/core";import{isObject as Ke}from"@walkeros/core";import{createIngest as Fe,emitStep as Ue,FatalError as He,getGrantedConsent as Ge,getSpanId as Ve,InvalidEventError as We,processEventMapping as Le,tryCatchAsync as Ne,useHooks as Qe}from"@walkeros/core";import{FatalError as Ye,useHooks as Je,tryCatchAsync as Xe}from"@walkeros/core";import{emitStep as Ze,useHooks as et}from"@walkeros/core";import{compileMatcher as tt,emitStep as nt,readCacheEnvelope as ot,wrapCacheEnvelope as rt}from"@walkeros/core";var st={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 at(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function it(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 ct(e){return"object"==typeof e&&null!==e}function ut(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8)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(ut(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:ut(s,t,n+1);return r}function dt(e){const t=[],n=[],{simulation:o,...r}=e,s=ut(r,new WeakMap,0);for(const e of o){const o=J(e);if(0===o.length)continue;const r=o.join(".");if(o.length-1>=8){n.push(r);continue}let a=s,i=!0;for(let e=0;e<o.length-1;e++){const t=a[o[e]];if(!ct(t)){i=!1;break}a=t}const c=o[o.length-1];if(!i||!(c in a)){n.push(r);continue}const u=a[c];"function"==typeof u?a[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),u.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function lt(e,t){try{return e[t]}catch{return"[unreadable]"}}function ft(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(lt(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 pt(e){return e.map(e=>({fn:e.fn,args:ft(e.args),ts:e.ts}))}function gt(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 ht=new WeakMap;function mt(e,t,n,o){ht.get(e)||(ht.set(e,!0),t.warn(n,o))}function vt(e){ht.delete(e)}var yt=()=>Date.now();function wt(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function bt(e,t,n,o,r){if("partial"===n)return;const s=((a=e)[i=t]||(a[i]={state:"closed",consecutiveFailures:0}),a[i]);var a,i;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=yt()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=yt()+r)))}function kt(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 It(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 Et(e,t,n,o,r){const s=ne(t,n);return(t,a)=>{try{if(a)return r?function(e,t,n,o,r,s){const a=t.dlq=t.dlq||[],i={max:t.config.dlqMax??100},c=gt(a,[o,r],i);if(c.dropped>0){const t=It(e.status,ne("destination",n),"dlq",c.dropped);mt(a,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:i.max,droppedCount:t})}else a.length<i.max&&vt(a);const u=kt(e,n);u.failed++,u.dlqSize=a.length,e.status.failed++;const d=wt(t.config.breaker);if(d){const o=t.config.id||n;bt(e.status.breakers,ne("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,a,t,o):e.status.failed++,void o.error("report error",{error:t instanceof Error?t.message:String(t),event:a.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch{}}}function St(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function qt(e,t){return e?t.stores[e]:t.stores.__cache}function Ot(e){const t={};for(const[n,o]of Object.entries(e)){const e=o.config?.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?t[n]={next:e}:t[n]={}}return t}function xt(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function jt(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function Ct(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:ye(n),config:t.config,env:Mt(t.config.env),reportError:Et(e,"transformer",n,r)};r.debug("init");const a=await Se(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===a)return!1;t.config={...a||t.config,env:a?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function $t(e,t,n,o,r,s){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:r,config:t.config,env:{...Mt(t.config.env),...s?{respond:s}:{}},reportError:Et(e,"transformer",n,i)};i.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",{traceId:d,sourceId:l,parentEventId:f}=at(o,r,e),p=Date.now(),g=it(e,{stepId:Ie("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:p,traceId:d,sourceId:l,parentEventId:f});g.inEvent=o,we(e,g);try{const r=await Se(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),a=it(e,{stepId:Ie("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s,traceId:d,sourceId:l,parentEventId:f});return a.durationMs=s-p,a.outEvent=r,we(e,a),i.debug("push done"),r}catch(t){const o=Date.now(),r=it(e,{stepId:Ie("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o,traceId:d,sourceId:l,parentEventId:f});throw r.durationMs=o-p,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},we(e,r),t}}function At(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:ye(t)}async function Dt(e,t,n,o,r,s,a){r||(r=ye(n[0]??"chain")),a&&r._meta&&(r._meta.chainPath=a);let i=o,c=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:c};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await Ee(Ct,t=>{if(t instanceof be)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,s,o))return{event:null,respond:c};if(a&&void 0!==s.config?.chainMocks?.[a]){const t=s.config.chainMocks[a];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:a}),i=t;continue}if(void 0!==s.config?.mock){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),i=s.config.mock;continue}if(s.config?.disabled)continue;const u=s.config?.cache,d=u?Oe(u):void 0,l=d?St(d,e):void 0,f=s.config?.state?De(s.config.state):void 0,p=f?.filter(e=>"get"===e.mode),g=f?.filter(e=>"set"===e.mode),h=async t=>g&&0!==g.length?Me(g,t=>qt(t,e),t,e):t;let m;if(d&&l){const e=Ce(r,i),t=await xe(d,l,e);if("HIT"===t?.status&&t.value){if(i=t.value,d.stop)return{event:i,respond:c,stopped:!0};continue}"MISS"===t?.status&&(m={key:t.key,ttl:t.rule.ttl})}const v=s.config.before;if(v){const n=qe(v,Ce(r,i));if(1===n.length){const o=jt(n[0],Ot(t));if(o.length>0){const n=await Dt(e,t,o,i,r,c,a);if(null===n.event)return{event:null,respond:n.respond??c};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:n.respond??c,stopped:!0};n.respond&&(c=n.respond),i=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>Ee(Dt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,jt(n,Ot(t)),i,At(r,n),void 0,a)))}p&&p.length>0&&(i=await Me(p,t=>qt(t,e),i,e));const y=await Ee($t,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,i,r,c);if(!1===y)return{event:null,respond:c,droppedBy:o};if(Array.isArray(y)){const s=n.slice(n.indexOf(o)+1),u=await Promise.all(y.map(async n=>{const o=await h(n.event||i),u=At(r,"unknown");if(n.next){const r=qe(n.next,Ce(u,o));if(0===r.length)return{event:o,respond:c};if(1===r.length){const n=jt(r[0],Ot(t));return n.length>0?Dt(e,t,n,o,u,c,a):{event:o,respond:c}}return(await Promise.all(r.map(n=>Ee(Dt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,jt(n,Ot(t)),o,At(u,n),void 0,a)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?Dt(e,t,s,o,u,c,a):{event:o,respond:c}}));let d=c;const l=[];for(const e of u.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(d=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:d}:1===l.length?{event:l[0],respond:d}:{event:l,respond:d}}if(y&&"object"==typeof y){const{event:n,respond:o,next:s}=y;if(o&&(c=o),void 0!==s){const o=await h(n||i),u=qe(s,Ce(r,o));if(0===u.length){i=o;continue}if(1===u.length){const n=jt(u[0],Ot(t));return n.length>0?Dt(e,t,n,o,r,c,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:c})}return await Promise.all(u.map(n=>Ee(Dt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,jt(n,Ot(t)),o,At(r,n),void 0,a))),{event:null,respond:void 0}}n&&(i=n)}g&&g.length>0&&(i=await Me(g,t=>qt(t,e),i,e)),m&&l&&je(l,m.key,i,m.ttl);const w=s.config.next,b="string"==typeof w||Array.isArray(w)&&w.every(e=>"string"==typeof e),k=void 0!==w&&!b;if((!y||"object"==typeof y&&!y.next)&&k){const n=qe(s.config.next,Ce(r,i));if(1===n.length){const o=jt(n[0],Ot(t));return o.length>0?Dt(e,t,o,i,r,c,a):{event:i,respond:c}}return n.length>1?(await Promise.all(n.map(n=>Ee(Dt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,jt(n,Ot(t)),i,At(r,n),void 0,a))),{event:null,respond:void 0}):{event:i,respond:c}}}return{event:i,respond:c}}function Mt(e){return e&&ke(e)?e:{}}function Tt(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function Pt(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)Gt(n)&&!Qt(e,t,n)||(await ue(t.on,t=>{if(t instanceof re)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,error:t})})(n,s),Gt(n)&&Nt(e,t,n))}function _t(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Rt(e,t,n){const{code:o,config:r={},env:s={},primary:a,next:i,before:c,cache:u,terminus:d}=n,l=r.state??n.state,f=l?me(l):void 0,p=u,g=p?le({...p,stop:p.stop??!0}):void 0,h=Tt(i)?jt(i,Ot(e.transformers)):void 0,m=Tt(c)?jt(c,Ot(e.transformers)):void 0,v=d??e.push,y=Boolean(d),w=async(n,o,s)=>{if(y)return v(n);let a;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:ae()},d=m??(void 0!==c?(()=>{const t=de(c,he(s.ingest));return 0===t.length?[]:jt(1===t.length?t[0]:t,Ot(e.transformers))})():[]);let l=[u];if(d.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Dt(e,e.transformers,d,u,s.ingest,s.respond,`source.${t}.before`);if(null===n.event)return{ok:!0};if(n.stopped)return n.respond&&(s.respond=n.respond),{ok:!0};n.respond&&(s.respond=n.respond);const o="string"==typeof u.id?u.id:"";if(Array.isArray(n.event))l=n.event.map(e=>""!==o&&e.id===o?{...e,id:ae()}:e);else{const e=n.event;l=""===o||"string"==typeof e.id&&""!==e.id?[e]:[{...e,id:o}]}}if(g){const t=St(g,e);if(t){const n=he(s.ingest),o=await fe(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 ge(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,i=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{pe(t,u,n,d),i?a=(async()=>{const t=await ge(n,i,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||pe(t,o.key,!0,o.rule.ttl)}}}const p=h?{kind:"single",preChain:h}:void 0!==i?(()=>{const t=de(i,he(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:jt(t[0],Ot(e.transformers))}:{kind:"many",branches:t.map(t=>jt(t,Ot(e.transformers)))}})():{kind:"single",preChain:[]};f&&f.length>0&&(l=await Promise.all(l.map(t=>ve(f,t=>qt(t,e),t,e))));let w={ok:!0};for(const n of l)"many"===p.kind?(await Promise.all(p.branches.map((a,i)=>ue(async()=>v(n,{...o,id:t,ingest:At(s.ingest,`${t}.${i}`),respond:void 0,mapping:r,preChain:a}),t=>(e.logger.scope("source:many").error(`many branch ${i} failed`,{error:t}),{ok:!0}))())),w={ok:!0}):w=await v(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:r,preChain:p.preChain});return a&&await a,w},b=async n=>{const o=oe(t),s=ie(ce(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 a=await se(n,r.ingest,{collector:e});return{...o,...a,_meta:o._meta}},k=e.logger.scope("source").scope(t),I={...s,push:async(e,n={})=>{const o={ingest:oe(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:k},E={collector:e,logger:k,id:t,config:r,env:I,withScope:async(e,t,n)=>{const o={ingest:await b(e),respond:t};return n({...I,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:Et(e,"source",t,k)},S=await ue(o,n=>{if(n instanceof re)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(E);if(!S)return;const q=S.type||"unknown",O=e.logger.scope(q).scope(t);return I.logger=O,a&&(S.config={...S.config,primary:a}),S}async function zt(e){for(const[t,n]of Object.entries(e.sources)){if(_t(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Wt(e,t));r.length!==o.length&&(n.config.require=r,_t(n)&&await Pt(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=>!Wt(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=gn(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function Bt(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 Kt=!1;function Ft(){Kt||(Kt=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Ut(e,t,n,o){if(n instanceof Z)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var Ht=[st.Consent,st.User,st.Globals,st.Custom];function Gt(e){return Ht.includes(e)}function Vt(e,t){switch(t){case st.Consent:return Object.keys(e.consent).length>0;case st.User:return Object.keys(e.user).length>0;case st.Globals:return Object.keys(e.globals).length>0;case st.Custom:return Object.keys(e.custom).length>0;default:return!1}}function Wt(e,t){switch(t){case st.Consent:case st.User:case st.Globals:case st.Custom:return Vt(e,t);case st.Run:case st.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Lt(e,t){return e.cellVersion[String(t)]??0}function Nt(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Lt(e,n)}function Qt(e,t,n){return e.allowed&&Lt(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 Yt(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),a=(r[s]||0)+1;return r[s]=a,a<=8||(9===a&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Jt(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Xt(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",a=e.logger.scope(s).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:r,env:hn(t.env,t.config.env),reportError:Et(e,"destination",n,a,t)};ee(t.on,t=>Ut(e,"destination",t,{destId:n,type:o}))(o,i)}function Zt(e,t,n,o){if(!Bt(e))return void Ft();const r=en(e,t,o);if(n.length)switch(t){case st.Consent:!function(e,t,n){const o=n||e.consent,r=Jt(e,st.Consent);t.forEach(t=>{Qt(e,t,st.Consent)&&Yt(e,t,st.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{ee(t[n],t=>Ut(e,"consent",t,{key:n}))(o,r)}),Nt(e,t,st.Consent))})}(e,n,o);break;case st.Ready:!function(e,t){if(!e.allowed)return;const n=Jt(e,st.Ready);t.forEach(t=>{ee(t,t=>Ut(e,"ready",t))(void 0,n)})}(e,n);break;case st.Run:!function(e,t){if(!e.allowed)return;const n=Jt(e,st.Run);t.forEach(t=>{ee(t,t=>Ut(e,"run",t))(void 0,n)})}(e,n);break;case st.Session:!function(e,t){if(!e.session)return;const n=Jt(e,st.Session);t.forEach(t=>{ee(t,t=>Ut(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Jt(e,t),s=Gt(t);n.forEach(n=>{"function"==typeof n&&(s&&!Qt(e,n,t)||s&&!Yt(e,n,t)||(ee(n,n=>Ut(e,"generic",n,{type:t}))(r,o),s&&Nt(e,n,t)))});break}}}function en(e,t,n){switch(t){case st.Consent:return n||e.consent;case st.Session:return e.session;case st.User:return n||e.user;case st.Custom:return n||e.custom;case st.Globals:return n||e.globals;case st.Config:return n||e.config;default:return}}async function tn(e,t,n,o,r){if(!t.on)return!1;if(Gt(o)&&!Qt(e,t,o))return!1;if(Gt(o)&&!Yt(e,t,o))return!1;const s=await te(t.on,t=>Ut(e,"source",t,{sourceId:n,type:o}))(o,r);return Gt(o)&&Nt(e,t,o),!1===s}function nn(e){return"number"==typeof e&&e>0?e:1e4}var on=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function rn(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new on(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var sn=Object.freeze({batched:!0});function an(e){return e===sn}function cn(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function un(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return jt(e,t);if("string"==typeof e)return jt(e,t);const o=B(e,C(n));return 0===o.length?[]:1===o.length?jt(o[0],t):jt(o,t)}async function dn(e,t,n={},o){const{allowed:r,consent:s,user:a}=e;if(!r)return pn({ok:!1});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=gt(e.queue,t,{max:n});if(o.dropped>0){const t=It(e.status,V("collector"),"queue",o.dropped);mt(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&vt(e.queue);e.status.in++}o||(o=e.destinations);const i=e.transformers?Ot(e.transformers):{},c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{if(r.config.disabled)return{id:o,destination:r,skipped:!0};const c=r.config.id||o,u=V("destination",c),d=wt(r.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 r=yt();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,u,d.cooldown))return{id:o,destination:r,skipped:!0};const l=t=>{d&&bt(e.status.breakers,u,t,d.threshold,d.cooldown)},f=()=>{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,u)};let p=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],t&&p.push($(t));const g=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:T("unknown");if(!p.length&&!r.queueOn?.length)return f(),{id:o,destination:r,skipped:!0};if(!p.length&&r.queueOn?.length){if(!z(r.config.consent,s))return f(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await ln(e,r,o,!0)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),l("transport-failure")}return f(),{id:o,destination:r,skipped:!t}}const h=[],m=p.filter(t=>{const n=z(r.config.consent,s,t.consent);if(n)return t.consent=n,h.push(t),!1;const a=it(e,{stepId:V("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...at(t,g,e)});return a.skipReason="consent",s&&(a.consent={...s}),r.config.consent&&(a.meta={required:{...r.config.consent}}),_(e,a),!0});if(m.length>0){const t=r.queuePush,n=r.config.id||o,s={max:r.config.queueMax??1e3};let a=0;for(const e of m)a+=gt(t,e,s).dropped;if(a>0){kt(e,n);const o=It(e.status,V("destination",n),"queue",a);mt(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&vt(t)}if(!h.length)return f(),{id:o,destination:r,queue:p};let v,y,w=!1;try{w=await ln(e,r,o,!0)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),l("transport-failure")}if(!w)return f(),{id:o,destination:r,queue:p};r.dlq||(r.dlq=[]);const b=un(r.config.before,i,g),k=r.config.next,I=r.config?.cache,E=I?A(I):void 0,S=E?St(E,e):void 0,q=r.config?.state?N(r.config.state):void 0,O=q?.filter(e=>"get"===e.mode),x=q?.filter(e=>"set"===e.mode);let P=0,R=0,B=0;return await Promise.all(h.map(async t=>{let s,c;if(t.user=j(a,t.user),E?.stop&&S){const e=C(g,t),n=await D(E,S,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}let u=[t],d=n.respond;if(b.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Dt(e,e.transformers,b,t,g,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(d=r.respond),u=Array.isArray(r.event)?r.event:[r.event]}const l=async(t,n)=>{let s=n,a=!1;if(E&&!E.stop&&S){const e=C(g,t),n=await D(E,S,e);if("HIT"===n?.status)return!1;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl},a=!0)}O&&O.length>0&&t&&(t=await Q(O,t=>qt(t,e),t,e));const u=Date.now();let l=!1;const f=await W(fn,n=>{const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:n,event:t.name}),v=n,l=!0;const a=r.dlq,i=r.config.id||o,c={max:r.config.dlqMax??100},u=gt(a,[t,n],c);if(u.dropped>0){kt(e,i);const t=It(e.status,V("destination",i),"dlq",u.dropped);mt(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:i,cap:c.max,droppedCount:t})}else a.length<c.max&&vt(a)})(e,r,o,t,g,d);if(P+=Date.now()-u,s&&S&&void 0===r.config.mock&&(a?M(S,s.key,f??!0,s.ttl):void 0===c&&(c=f??!0)),!l&&!an(f)&&x&&x.length>0&&t&&(t=await Q(x,t=>qt(t,e),t,e)),void 0===f||an(f)||(y=f),an(f)&&R++,!l&&k){void 0!==f&&(g._response=f);const n=un(k,i,g);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Dt(e,e.transformers,n,t,g,d,`destination.${o}.next`);r.respond&&(d=r.respond)}}return!0};for(const e of u)await l(e,s)&&B++;return s&&S&&void 0!==c&&void 0===r.config.mock&&M(S,s.key,c,s.ttl),t})),{id:o,destination:r,error:v,response:y,totalDuration:P,batchedCount:R,allowedCount:h.length,pushedCount:B,canonicalId:c,breakerConfig:d}})),u={},d={},l={};for(const t of c){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};kt(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 a=t.breakerConfig,i=t.canonicalId?V("destination",t.canonicalId):void 0,c=t=>{a&&i&&bt(e.status.breakers,i,t,a.threshold,a.cooldown)};if(t.error)o.error=t.error,l[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,c("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)&&(u[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return pn({event:t,...Object.keys(u).length&&{done:u},...Object.keys(d).length&&{queued:d},...Object.keys(l).length&&{failed:l}})}async function ln(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),a={collector:e,logger:s,id:n,config:t.config,env:hn(t.env,t.config.env),reportError:Et(e,"destination",n,s,t)};s.debug("init");const i=Date.now();let c;_(e,it(e,{stepId:V("destination",n),stepType:"destination",phase:"init",eventId:"",now:i}));try{c=await L(t.init,"DestinationInit",e.hooks,e.logger)(a)}catch(t){const o=Date.now(),r=it(e,{stepId:V("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-i,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},_(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)Xt(e,t,n,r,s)}s.debug("init done")}return!0}async function fn(e,t,n,o,r,s){const{config:a}=t,i=await G(o,a,e);if(i.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:a,data:i.data,rule:i.mapping,ingest:r,env:{...hn(t.env,a.env),...s?{respond:s}:{}},reportError:Et(e,"destination",n,u,t)};if(void 0!==a.mock)return u.debug("mock",{event:i.event.name}),a.mock;const l=i.mapping,f=void 0!==l?.batch,p=f?i.mappingKey||"* *":" batch-all";if((f||void 0!==a.batch)&&t.pushBatch&&void 0===a.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=cn(l?.batch),s=cn(a.batch),i=r.wait??s.wait??3e4,c=r.size??s.size??1e3,d=r.age??s.age??3e4,g=hn(t.env,a.env),h=P(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const i=s.entries[0],c={collector:e,logger:u,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:Et(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=kt(e,d),f=wt(t.config.breaker),h=V("destination",d),m=t=>{f&&bt(e.status.breakers,h,t,f.threshold,f.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+=gt(o,e,r).dropped;if(s>0){const t=It(e.status,V("destination",d),"dlq",s);mt(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&vt(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=s.entries.length;const E=nn(a.timeout),S=await W((o,r)=>rn(Promise.resolve(L(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"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(U(q=S)&&Array.isArray(q.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),u.error("Push batch partial failure",{failed:e.length,delivered:I,entries:s.entries.length}))}var q;const O=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),a=at(t.event,t.ingest,e),i=it(e,{stepId:V("destination",n),stepType:"destination",phase:r?"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:s.entries.length,index:o},i.durationMs=O-v,r){const e=b?w:y.get(o);i.error=e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}_(e,i)}),u.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:i,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:i.event,ingest:r,respond:s,rule:l,data:i.data}),c.batched.events.push(i.event),K(i.data)&&c.batched.data.push(i.data);const d="string"==typeof i.event.id?i.event.id:"",g=at(o,r,e),h=Date.now(),m=it(e,{stepId:V("destination",n),stepType:"destination",phase:"in",eventId:d,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,_(e,m);const v=it(e,{stepId:V("destination",n),stepType:"destination",phase:"out",eventId:d,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},_(e,v);const y=t.config.id||n,w=kt(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),sn}{let s;if(u.debug("push",{event:i.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=dt({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[H]={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:f,parentEventId:p}=at(o,r,e),g=Date.now(),h=it(e,{stepId:V("destination",n),stepType:"destination",phase:"in",eventId:c,now:g,traceId:l,sourceId:f,parentEventId:p});i.mappingKey&&(h.mappingKey=i.mappingKey),i.event.consent&&(h.consent={...i.event.consent}),h.inEvent=i.event,_(e,h);try{const o=nn(a.timeout),r=await rn(Promise.resolve(L(t.push,"DestinationPush",e.hooks,e.logger)(i.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),h=Date.now(),m=it(e,{stepId:V("destination",n),stepType:"destination",phase:"out",eventId:c,now:h,traceId:l,sourceId:f,parentEventId:p});return m.durationMs=h-g,m.outEvent=i.event,s&&s.length>0&&(m.calls=pt(s)),K(r)&&(m.meta={...m.meta,response:r}),i.mappingKey&&(m.mappingKey=i.mappingKey),_(e,m),u.debug("push done"),r}catch(t){const o=Date.now(),r=it(e,{stepId:V("destination",n),stepType:"destination",phase:"error",eventId:c,now:o,traceId:l,sourceId:f,parentEventId:p});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=pt(s)),i.mappingKey&&(r.mappingKey=i.mappingKey),_(e,r),t}}}function pn(e){return{ok:!e?.failed,...e}}function gn(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:a}=xt(e,"before"),{config:i}=xt({...e,config:a},"next"),c={...t.config,...n,...i};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=hn(t.env,o);return{...t,config:c,env:u}}function hn(e,t){return e||t?t?e&&U(e)&&U(t)?{...e,...t}:t:e:{}}async function mn(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",a=n.scope(s),i={id:e,config:o.config,env:o.env??{},logger:a};let c;try{await Promise.race([r(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 vn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function yn(e,t,n){let o,r,s=!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 st.Config:Ke(n)&&(Te(e.config,n,{shallow:!1}),r=n,s=!0);break;case st.Consent:if(Ke(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);vn(e,st.Consent),r=t,s=!0}break;case st.Custom:Ke(n)&&(e.custom=Te(e.custom,n),vn(e,st.Custom),r=n,s=!0);break;case st.Destination:Ke(n)&&"code"in n&&Ke(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:a,cache:i,state:c}=t;if(!F(n.push))return pn({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=o||{init:!1};let d=s?{...u,before:s}:{...u};a&&(d={...d,next:a}),i&&(d={...d,cache:i}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=R(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(d.require?.length){e.pending.destinations[l]=t,await zt(e);const n=e.destinations[l];return n?dn(e,void 0,{},{[l]:n}):pn({ok:!0})}const f={...n,config:d,env:hn(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),dn(e,void 0,{},{[l]:f})}(e,n));break;case st.Globals:Ke(n)&&(e.globals=Te(e.globals,n),vn(e,st.Globals),r=n,s=!0);break;case st.Hook:if(Ke(n)&&Be(n.name)&&ze(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case st.On:if(Ke(n)&&Be(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Bt(e))return void Ft();const o=e.on,r=o[t]||[],s=X(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Zt(e,t,s)}(e,t,o)}break;case st.Ready:s=!0;break;case st.Run:o=await async function(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=_e(),e.count=0,t&&(t.consent&&(e.consent=Te(e.consent,t.consent),vn(e,st.Consent)),t.user&&(e.user=Te(e.user,t.user),vn(e,st.User)),t.globals&&(e.globals=Te(e.config.globalsStatic||{},t.globals),vn(e,st.Globals)),t.custom&&(e.custom=Te(e.custom,t.custom),vn(e,st.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await zt(e),await async function(e){if(Bt(e))for(const t of Ht){if(!Vt(e,t))continue;const n=en(e,t);Zt(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))_t(r)&&await tn(e,r,o,t,n)}else Ft()}(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 dn(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 st.Session:s=!0;break;case st.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await mn(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 mn(e.destinations,"destination",t),await mn(e.transformers,"transformer",t),await mn(e.stores,"store",t)}(e));break;case st.User:Ke(n)&&(Te(e.user,n,{shallow:!1}),vn(e,st.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),pn({ok:!1})}if(s){await async function(e,t,n,o){if(!Bt(e))return Ft(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=en(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&&(_t(o)?await tn(e,o,n,t,s)&&(a=!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});Xt(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))_t(n)&&n.queueOn?.length&&await Pt(e,n,t);const i=Object.values(e.sources).some(e=>!_t(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||i)&&await zt(e),Zt(e,t,r,o),!a}(e,t,void 0,r);const n=await dn(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||pn({ok:!0})}()}finally{a()}}function wn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function bn(e,t,n){const o=t.name;if("string"!=typeof o)throw new Re(void 0===o?"Event name is required":"Event name is invalid");if(!o)throw new Re("Event name is required");const[r,s]=o.split(" ");if(!r||!s)throw new Re("Event name is invalid");const{timestamp:a=Date.now(),name:i=`${r} ${s}`,data:c={},context:u={},globals:d={},custom:l={},user:f=e.user,nested:p=[],consent:g=e.consent,id:h=Pe(),trigger:m="",entity:v=r,action:y=s,timing:w=0,source:b={type:"collector",schema:"4"}}=t,k=b??{type:"collector",schema:"4"},I=k.count??(e.count+=1),E=k.trace??n?._meta.trace??e.trace,S={...k,count:I};void 0!==E&&(S.trace=E);const q=e.name??k.platform??"default",O=e.release??"4.5.0";return S.release={...k.release,[q]:O},{name:i,data:c,context:u,globals:Te(e.globals,d),custom:l,user:f,nested:p,consent:g,id:h,trigger:m,entity:v,action:y,timestamp:a,timing:w,source:S}}function kn(e,t){const n=Qe(async(n,o={})=>await Ne(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=gt(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=It(e.status,"collector.preRun","queue",r.dropped);mt(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&vt(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),pn({ok:!0})}const r=Date.now(),{id:s,ingest:a,respond:i,mapping:c,preChain:u,include:d,exclude:l}=o;let f=i,p=n;const g=d||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,l):void 0,h=a??Fe(s||"unknown");if(c){const t=await Le(p,c,e);if(t.ignore)return pn({ok:!0});if(c.consent&&!Ge(c.consent,e.consent,t.event.consent))return pn({ok:!0});p=t.event}if(u?.length&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Dt(e,e.transformers,u,p,h,f,s?`source.${s}.next`:void 0);if(null===n.event)return e.logger.debug("Event dropped by transformer chain"+(n.droppedBy?` (${n.droppedBy})`:"")),pn({ok:!0,dropped:!0});if(n.stopped)return n.respond&&(f=n.respond),pn({ok:!0});n.respond&&(f=n.respond);const o="string"==typeof p.id?p.id:"";if(Array.isArray(n.event)){const a=await Promise.all(n.event.map(async n=>{const r=""!==o&&n.id===o?{...n,id:Ve()}:n,a=t(r),i=bn(e,a,h);return dn(e,i,{id:s,ingest:h,respond:f},g)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return a[0]??pn({ok:!0})}p=""===o||"string"==typeof n.event.id&&""!==n.event.id?n.event:{...n.event,id:o}}const m=function(e,t,n){return bn(e,wn(e,t),n)}(e,p,h),v=await dn(e,m,{id:s,ingest:h,respond:f},g);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return v},t=>{if(t instanceof He)throw t;if(t instanceof We){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}),pn({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),pn({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:Ve()},s="string"==typeof r.id?r.id:"",{traceId:a,sourceId:i,parentEventId:c}=at(r,o?.ingest,e),u=Date.now(),d=it(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:u,traceId:a,sourceId:i,parentEventId:c});d.inEvent=r,Ue(e,d);try{const t=await n(r,o),d=Date.now(),l=it(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:d,traceId:a,sourceId:i,parentEventId:c});return l.durationMs=d-u,l.outEvent=t,Ue(e,l),t}catch(t){const n=Date.now(),o=it(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:a,sourceId:i,parentEventId:c});throw o.durationMs=n-u,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Ue(e,o),t}}}function In(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=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 s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);a.evictions_ttl+=t},o),i&&"function"==typeof i.unref&&i.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),a.evictions_ttl++,void a.misses++):(s.delete(e),s.set(e,t),a.hits++,t.value);a.misses++},set(e,n,o){const i=!s.has(e);i||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),a.writes++,i&&a.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++}a.evictions_entries+=n}()},delete(e){s.delete(e)&&a.deletes++},get counters(){return{...a}},destroy(){void 0!==i&&(clearInterval(i),i=void 0),s.clear()}}}function En(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:a,collector:i}=t,c=(e,t)=>{if(!i)return;const n=it(i,{stepId:`store.${a}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},nt(i,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?tt(e.match):()=>!0,ttl:e.ttl})),l=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return d.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),r=await o.get(n),s=ot(r);if(void 0!==s){if(!("expired"in s))return u.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const a=p.get(n);if(a)return u.inflight_dedups++,c(t,"hit"),a;u.misses++,c(t,"miss");const i=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=f(t,r);if(s)try{const e=1e3*s.ttl;await o.set(n,rt(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){u.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{const e=1e3*s.ttl;await o.set(l(t),rt(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${a}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,{error:n}):console.warn(o,n)}}function Sn(e,t,n){const o=`store.${n}`,r=et(t.get,"StoreGet",e.hooks,e.logger),s=et(t.set,"StoreSet",e.hooks,e.logger),a=et(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=it(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},Ze(e,s);try{const s=await r(t),a=Date.now(),i=it(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});return i.durationMs=a-n,i.meta={op:"get",key:t},Ze(e,i),s}catch(r){const s=Date.now(),a=it(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"get",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Ze(e,a),r}},t.set=async(t,n,r)=>{const a=Date.now(),i=it(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:a});i.meta={op:"set",key:t},Ze(e,i);try{await s(t,n,r);const i=Date.now(),c=it(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});c.durationMs=i-a,c.meta={op:"set",key:t},Ze(e,c)}catch(n){const r=Date.now(),s=it(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-a,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Ze(e,s),n}},t.delete=async t=>{const n=Date.now(),r=it(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},Ze(e,r);try{await a(t);const r=Date.now(),s=it(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},Ze(e,s)}catch(r){const s=Date.now(),a=it(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"delete",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Ze(e,a),r}}}async function qn(e){const t=O({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=x(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 a,i;void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),s.push=kn(s,e=>wn(s,e)),s.command=(i=yn,Je(async(e,t,n)=>await Xe(async()=>await i(a,e,t,n),n=>{if(n instanceof Ye)throw n;return a.status.failed++,a.logger.error("command failed",{command:e,data:t,error:n}),pn({ok:!1})})(),"Command",(a=s).hooks,a.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 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 pn({ok:!1});a={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return o&&"object"==typeof o&&(a.context=o),r&&Array.isArray(r)&&(a.nested=r),s&&"object"==typeof s&&(a.custom=s),e.push(a)}}(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:a={}}=r,i=e.logger.scope("store").scope(o),c={collector:e,logger:i,id:o,config:s,env:a,reportError:Et(e,"store",o,i)},u=await t(c);n[o]=u}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){const a=t[s];if("BLACK"===a)return;if("GRAY"===a){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 i=e[s].cache?.store;if(void 0!==i){if(!(i in e))throw new Error(`Store "${s}" cache.store references "${i}", which is not declared in flow.stores`);r(i)}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,a;void 0!==r.store?(s=n[r.store],a=r.store):(n.__cache||(n.__cache=In()),s=n.__cache,a="__cache");const i=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${i}:" via ${a}`),n[t]=En(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:i,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&Sn(e,o,t);return n}(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=In()),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]=gn(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,a=$e(r,"Transformer");if(!a.ok){e.logger.warn(`Transformer ${o} invalid (${a.code}): ${a.reason}. Skipping.`);continue}const{config:i}=xt(r,"before"),{config:c}=xt({...r,config:i},"next"),u=Object.keys(s).length>0?{...c,env:s}:c,{cache:d}=r,l=d?{...u,cache:d}:u,f=r.config?.state??r.state,p=void 0!==f&&void 0===l.state?{...l,state:f}:l,g=e.logger.scope("transformer").scope(o),h={collector:e,logger:g,id:o,ingest:ye(o),config:p,env:s,reportError:Et(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 Ae(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!==f&&void 0===v.config?.state&&(v.config={...v.config??{},state:f}),n[o]=v}return n}(s,e.transformers||{}),s}var On=globalThis;function xn(e){try{const t=On.window;if(!t)return;t.localStorage.getItem(I)===e&&t.localStorage.removeItem(I)}catch{}}function jn(e,t){return void 0===t?e:n=>e({...n,release:t})}async function Cn(e){e=e||{};const t=await qn(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=On.window,t=On.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(I);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return On.window?.localStorage.getItem(I)??null}catch{return null}}();if(!r)return;const s=q(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),xn(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 a;!function(e){try{On.window?.localStorage.setItem(I,e)}catch{}}(r),null!==t&&function(){const e=On.window,t=On.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,a=s.indexOf("?"),i=a>=0?s.slice(0,a):s,c=new t(a>=0?s.slice(a+1):"");c.delete(I);const u=c.toString();e.history.replaceState({},"",`${i}${u?`?${u}`:""}${r}`)}catch{}}();const i=E({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(xn(r),a&&e.observers.delete(a))}});a=S(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(jn(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 r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add(S(jn(E({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 Rt(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 ue(n.init.bind(n),n=>{if(n instanceof re)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,_t(n)&&await Pt(e,n,t))}return await zt(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 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 $n=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Cn({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};export{d as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
|
|
1
|
+
var e=Object.defineProperty,t=(t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})},n={};t(n,{MappingSchema:()=>i,SettingsSchema:()=>s,mapping:()=>u,settings:()=>c});import{zodToSchema as o}from"@walkeros/core/dev";import{z as r}from"@walkeros/core/dev";var s=r.object({events:r.array(r.object({delay:r.number().optional().describe("Milliseconds to wait before pushing this event")}).passthrough().describe("Partial walkerOS event with optional delay")).describe("Events to push to the collector on init")});import{z as a}from"@walkeros/core/dev";var i=a.object({}),c=o(s),u=o(i),d={};t(d,{createTrigger:()=>An,env:()=>l,step:()=>y});var l={};t(l,{init:()=>h,push:()=>m,simulation:()=>v});var f=async()=>({ok:!0}),p=()=>{},g={error:p,warn:p,info:p,debug:p,throw:e=>{throw"string"==typeof e?new Error(e):e},json:p,scope:()=>g},h=void 0,m={push:f,command:f,elb:f,logger:g},v=["call:elb"],y={};t(y,{delayedEvent:()=>b,pageView:()=>w});var w={title:"Page view",description:"A simple event object is pushed through the demo source as a walker elb call for learning purposes.",in:{name:"page view",data:{title:"Home"}},out:[["elb",{name:"page view",data:{title:"Home"}}]]},b={title:"Delayed event",description:"An event object with a delay field is pushed through the demo source after the specified wait.",in:{name:"product add",data:{id:"abc",name:"Test Product"},delay:100},out:[["elb",{name:"product add",data:{id:"abc",name:"Test Product"}}]]};import{assign as k}from"@walkeros/core";import{OBSERVE_STORAGE_KEY as I,createBatchedPoster as E,createTelemetryObserver as S,parseObserveCredential as q}from"@walkeros/core";import{assign as O,createLogger as x}from"@walkeros/core";import{assign as j,buildCacheContext as C,clone as $,compileCache as A,checkCache as D,storeCache as M,createIngest as T,debounce as P,emitStep as _,getId as R,getGrantedConsent as z,getNextSteps as B,isDefined as K,isFunction as F,isObject as U,OBSERVE_ENV_KEY as H,processEventMapping as G,stepId as V,tryCatchAsync as W,useHooks as L,compileState as N,applyState as Q}from"@walkeros/core";import{emitStep as Y}from"@walkeros/core";import{parseCallPath as J}from"@walkeros/core";import{isArray as X,FatalError as Z}from"@walkeros/core";import{tryCatch as ee,tryCatchAsync as te}from"@walkeros/core";import{stepId as ne}from"@walkeros/core";import{createIngest as oe,FatalError as re,getMappingValue as se,getSpanId as ae,parseTraceparent as ie,isScope as ce,tryCatchAsync as ue,getNextSteps as de,compileCache as le,checkCache as fe,storeCache as pe,applyUpdate as ge,buildCacheContext as he,compileState as me,applyState as ve}from"@walkeros/core";import{createIngest as ye,emitStep as we,FatalError as be,isObject as ke,stepId as Ie,tryCatchAsync as Ee,useHooks as Se,getNextSteps as qe,compileCache as Oe,checkCache as xe,storeCache as je,buildCacheContext as Ce,validateStepEntry as $e,processEventMapping as Ae,compileState as De,applyState as Me}from"@walkeros/core";import{assign as Te,getSpanId as Pe,getTraceId as _e,InvalidEventError as Re,isFunction as ze,isString as Be}from"@walkeros/core";import{isObject as Ke}from"@walkeros/core";import{createIngest as Fe,emitStep as Ue,FatalError as He,getGrantedConsent as Ge,getSpanId as Ve,InvalidEventError as We,processEventMapping as Le,tryCatchAsync as Ne,useHooks as Qe}from"@walkeros/core";import{FatalError as Ye,useHooks as Je,tryCatchAsync as Xe}from"@walkeros/core";import{emitStep as Ze,useHooks as et}from"@walkeros/core";import{compileMatcher as tt,emitStep as nt,readCacheEnvelope as ot,wrapCacheEnvelope as rt}from"@walkeros/core";var st={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 at(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function it(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 ct(e){return"object"==typeof e&&null!==e}function ut(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8)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(ut(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:ut(s,t,n+1);return r}function dt(e){const t=[],n=[],{simulation:o,...r}=e,s=ut(r,new WeakMap,0);for(const e of o){const o=J(e);if(0===o.length)continue;const r=o.join(".");if(o.length-1>=8){n.push(r);continue}let a=s,i=!0;for(let e=0;e<o.length-1;e++){const t=a[o[e]];if(!ct(t)){i=!1;break}a=t}const c=o[o.length-1];if(!i||!(c in a)){n.push(r);continue}const u=a[c];"function"==typeof u?a[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),u.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function lt(e,t){try{return e[t]}catch{return"[unreadable]"}}function ft(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(lt(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 pt(e){return e.map(e=>({fn:e.fn,args:ft(e.args),ts:e.ts}))}function gt(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 ht=new WeakMap;function mt(e,t,n,o){ht.get(e)||(ht.set(e,!0),t.warn(n,o))}function vt(e){ht.delete(e)}var yt=()=>Date.now();function wt(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function bt(e,t,n,o,r){if("partial"===n)return;const s=((a=e)[i=t]||(a[i]={state:"closed",consecutiveFailures:0}),a[i]);var a,i;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=yt()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=yt()+r)))}function kt(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 It(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 Et(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 St(e,t,n,o,r){const s=ne(t,n);return(t,a)=>{try{if(a)return r?function(e,t,n,o,r,s){const a=t.dlq=t.dlq||[],i={max:t.config.dlqMax??100},c=gt(a,[o,r],i);if(c.dropped>0){const t=It(e.status,ne("destination",n),"dlq",c.dropped);mt(a,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:i.max,droppedCount:t})}else a.length<i.max&&vt(a);const u=kt(e,n);u.failed++,u.dlqSize=a.length,e.status.failed++;const d=wt(t.config.breaker);if(d){const o=t.config.id||n;bt(e.status.breakers,ne("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,r,n,a,t,o):e.status.failed++,void o.error("report error",{...Et(t),event:a.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",Et(t))}catch{}}}function qt(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function Ot(e,t){return e?t.stores[e]:t.stores.__cache}function xt(e){const t={};for(const[n,o]of Object.entries(e)){const e=o.config?.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?t[n]={next:e}:t[n]={}}return t}function jt(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}function Ct(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let r=e;for(;r&&t[r]&&!o.has(r);){o.add(r),n.push(r);const e=t[r].next;if(Array.isArray(e)){n.push(...e);break}r=e}return n}async function $t(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:ye(n),config:t.config,env:Tt(t.config.env),reportError:St(e,"transformer",n,r)};r.debug("init");const a=await Se(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===a)return!1;t.config={...a||t.config,env:a?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function At(e,t,n,o,r,s){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:r,config:t.config,env:{...Tt(t.config.env),...s?{respond:s}:{}},reportError:St(e,"transformer",n,i)};i.debug("push",{event:o.name});const u="string"==typeof o.id?o.id:"",{traceId:d,sourceId:l,parentEventId:f}=at(o,r,e),p=Date.now(),g=it(e,{stepId:Ie("transformer",n),stepType:"transformer",phase:"in",eventId:u,now:p,traceId:d,sourceId:l,parentEventId:f});g.inEvent=o,we(e,g);try{const r=await Se(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),a=it(e,{stepId:Ie("transformer",n),stepType:"transformer",phase:"out",eventId:u,now:s,traceId:d,sourceId:l,parentEventId:f});return a.durationMs=s-p,a.outEvent=r,we(e,a),i.debug("push done"),r}catch(t){const o=Date.now(),r=it(e,{stepId:Ie("transformer",n),stepType:"transformer",phase:"error",eventId:u,now:o,traceId:d,sourceId:l,parentEventId:f});throw r.durationMs=o-p,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},we(e,r),t}}function Dt(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:ye(t)}async function Mt(e,t,n,o,r,s,a){r||(r=ye(n[0]??"chain")),a&&r._meta&&(r._meta.chainPath=a);let i=o,c=s;for(const o of n){const s=t[o];if(!s){e.logger.warn(`Transformer not found: ${o}`);continue}if(r&&r._meta&&r._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:c};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await Ee($t,t=>{if(t instanceof be)throw t;return e.status.failed++,e.logger.scope(`transformer:${s.type||"unknown"}`).error("transformer init failed",{transformer:o,...Et(t)}),!1})(e,s,o))return{event:null,respond:c};if(a&&void 0!==s.config?.chainMocks?.[a]){const t=s.config.chainMocks[a];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:a}),i=t;continue}if(void 0!==s.config?.mock){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),i=s.config.mock;continue}if(s.config?.disabled)continue;const u=s.config?.cache,d=u?Oe(u):void 0,l=d?qt(d,e):void 0,f=s.config?.state?De(s.config.state):void 0,p=f?.filter(e=>"get"===e.mode),g=f?.filter(e=>"set"===e.mode),h=async t=>g&&0!==g.length?Me(g,t=>Ot(t,e),t,e):t;let m;if(d&&l){const e=Ce(r,i),t=await xe(d,l,e);if("HIT"===t?.status&&t.value){if(i=t.value,d.stop)return{event:i,respond:c,stopped:!0};continue}"MISS"===t?.status&&(m={key:t.key,ttl:t.rule.ttl})}const v=s.config.before;if(v){const n=qe(v,Ce(r,i));if(1===n.length){const o=Ct(n[0],xt(t));if(o.length>0){const n=await Mt(e,t,o,i,r,c,a);if(null===n.event)return{event:null,respond:n.respond??c};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:n.respond??c,stopped:!0};n.respond&&(c=n.respond),i=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>Ee(Mt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,Et(t)),{event:null,respond:void 0}))(e,t,Ct(n,xt(t)),i,Dt(r,n),void 0,a)))}p&&p.length>0&&(i=await Me(p,t=>Ot(t,e),i,e));const y=await Ee(At,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",Et(t)),!1))(e,s,o,i,r,c);if(!1===y)return{event:null,respond:c,droppedBy:o};if(Array.isArray(y)){const s=n.slice(n.indexOf(o)+1),u=await Promise.all(y.map(async n=>{const o=await h(n.event||i),u=Dt(r,"unknown");if(n.next){const r=qe(n.next,Ce(u,o));if(0===r.length)return{event:o,respond:c};if(1===r.length){const n=Ct(r[0],xt(t));return n.length>0?Mt(e,t,n,o,u,c,a):{event:o,respond:c}}return(await Promise.all(r.map(n=>Ee(Mt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,Et(t)),{event:null,respond:void 0}))(e,t,Ct(n,xt(t)),o,Dt(u,n),void 0,a)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?Mt(e,t,s,o,u,c,a):{event:o,respond:c}}));let d=c;const l=[];for(const e of u.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(d=t.respond),null===t.event)continue;Array.isArray(t.event)?l.push(...t.event):l.push(t.event)}else l.push(e);return 0===l.length?{event:null,respond:d}:1===l.length?{event:l[0],respond:d}:{event:l,respond:d}}if(y&&"object"==typeof y){const{event:n,respond:o,next:s}=y;if(o&&(c=o),void 0!==s){const o=await h(n||i),u=qe(s,Ce(r,o));if(0===u.length){i=o;continue}if(1===u.length){const n=Ct(u[0],xt(t));return n.length>0?Mt(e,t,n,o,r,c,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:c})}return await Promise.all(u.map(n=>Ee(Mt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,Et(t)),{event:null,respond:void 0}))(e,t,Ct(n,xt(t)),o,Dt(r,n),void 0,a))),{event:null,respond:void 0}}n&&(i=n)}g&&g.length>0&&(i=await Me(g,t=>Ot(t,e),i,e)),m&&l&&je(l,m.key,i,m.ttl);const w=s.config.next,b="string"==typeof w||Array.isArray(w)&&w.every(e=>"string"==typeof e),k=void 0!==w&&!b;if((!y||"object"==typeof y&&!y.next)&&k){const n=qe(s.config.next,Ce(r,i));if(1===n.length){const o=Ct(n[0],xt(t));return o.length>0?Mt(e,t,o,i,r,c,a):{event:i,respond:c}}return n.length>1?(await Promise.all(n.map(n=>Ee(Mt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,Et(t)),{event:null,respond:void 0}))(e,t,Ct(n,xt(t)),i,Dt(r,n),void 0,a))),{event:null,respond:void 0}):{event:i,respond:c}}}return{event:i,respond:c}}function Tt(e){return e&&ke(e)?e:{}}function Pt(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function _t(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)Vt(n)&&!Yt(e,t,n)||(await ue(t.on,t=>{if(t instanceof re)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...Et(t)})})(n,s),Vt(n)&&Qt(e,t,n))}function Rt(e){return Boolean(e.config.init)&&!e.config.require?.length}async function zt(e,t,n){const{code:o,config:r={},env:s={},primary:a,next:i,before:c,cache:u,terminus:d}=n,l=r.state??n.state,f=l?me(l):void 0,p=u,g=p?le({...p,stop:p.stop??!0}):void 0,h=Pt(i)?Ct(i,xt(e.transformers)):void 0,m=Pt(c)?Ct(c,xt(e.transformers)):void 0,v=d??e.push,y=Boolean(d),w=async(n,o,s)=>{if(y)return v(n);let a;const u="string"==typeof n.id&&""!==n.id?n:{...n,id:ae()},d=m??(void 0!==c?(()=>{const t=de(c,he(s.ingest));return 0===t.length?[]:Ct(1===t.length?t[0]:t,xt(e.transformers))})():[]);let l=[u];if(d.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Mt(e,e.transformers,d,u,s.ingest,s.respond,`source.${t}.before`);if(null===n.event)return{ok:!0};if(n.stopped)return n.respond&&(s.respond=n.respond),{ok:!0};n.respond&&(s.respond=n.respond);const o="string"==typeof u.id?u.id:"";if(Array.isArray(n.event))l=n.event.map(e=>""!==o&&e.id===o?{...e,id:ae()}:e);else{const e=n.event;l=""===o||"string"==typeof e.id&&""!==e.id?[e]:[{...e,id:o}]}}if(g){const t=qt(g,e);if(t){const n=he(s.ingest),o=await fe(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 ge(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,i=o.rule.update,c={...n,cache:{status:"MISS"}},u=o.key,d=o.rule.ttl,l=n=>{pe(t,u,n,d),i?a=(async()=>{const t=await ge(n,i,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||pe(t,o.key,!0,o.rule.ttl)}}}const p=h?{kind:"single",preChain:h}:void 0!==i?(()=>{const t=de(i,he(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:Ct(t[0],xt(e.transformers))}:{kind:"many",branches:t.map(t=>Ct(t,xt(e.transformers)))}})():{kind:"single",preChain:[]};f&&f.length>0&&(l=await Promise.all(l.map(t=>ve(f,t=>Ot(t,e),t,e))));let w={ok:!0};for(const n of l)"many"===p.kind?(await Promise.all(p.branches.map((a,i)=>ue(async()=>v(n,{...o,id:t,ingest:Dt(s.ingest,`${t}.${i}`),respond:void 0,mapping:r,preChain:a}),t=>(e.logger.scope("source:many").error(`many branch ${i} failed`,Et(t)),{ok:!0}))())),w={ok:!0}):w=await v(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:r,preChain:p.preChain});return a&&await a,w},b=async n=>{const o=oe(t),s=ie(ce(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 a=await se(n,r.ingest,{collector:e});return{...o,...a,_meta:o._meta}},k=e.logger.scope("source").scope(t),I={...s,push:async(e,n={})=>{const o={ingest:oe(t),respond:void 0};return w(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:k},E={collector:e,logger:k,id:t,config:r,env:I,withScope:async(e,t,n)=>{const o={ingest:await b(e),respond:t};return n({...I,push:(e,t={})=>w(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:St(e,"source",t,k)},S=await ue(o,n=>{if(n instanceof re)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...Et(n)})})(E);if(!S)return;const q=S.type||"unknown",O=e.logger.scope(q).scope(t);return I.logger=O,a&&(S.config={...S.config,primary:a}),S}async function Bt(e){for(const[t,n]of Object.entries(e.sources)){if(Rt(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Lt(e,t));r.length!==o.length&&(n.config.require=r,Rt(n)&&await _t(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=>!Lt(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=hn(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function Kt(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 Ft=!1;function Ut(){Ft||(Ft=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function Ht(e,t,n,o){if(n instanceof Z)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...Et(n)})}var Gt=[st.Consent,st.User,st.Globals,st.Custom];function Vt(e){return Gt.includes(e)}function Wt(e,t){switch(t){case st.Consent:return Object.keys(e.consent).length>0;case st.User:return Object.keys(e.user).length>0;case st.Globals:return Object.keys(e.globals).length>0;case st.Custom:return Object.keys(e.custom).length>0;default:return!1}}function Lt(e,t){switch(t){case st.Consent:case st.User:case st.Globals:case st.Custom:return Wt(e,t);case st.Run:case st.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Nt(e,t){return e.cellVersion[String(t)]??0}function Qt(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Nt(e,n)}function Yt(e,t,n){return e.allowed&&Nt(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 Jt(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),a=(r[s]||0)+1;return r[s]=a,a<=8||(9===a&&e.logger.error("state delivery did not converge",{type:s}),!1)}function Xt(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Zt(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",a=e.logger.scope(s).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:r,env:mn(t.env,t.config.env),reportError:St(e,"destination",n,a,t)};ee(t.on,t=>Ht(e,"destination",t,{destId:n,type:o}))(o,i)}function en(e,t,n,o){if(!Kt(e))return void Ut();const r=tn(e,t,o);if(n.length)switch(t){case st.Consent:!function(e,t,n){const o=n||e.consent,r=Xt(e,st.Consent);t.forEach(t=>{Yt(e,t,st.Consent)&&Jt(e,t,st.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{ee(t[n],t=>Ht(e,"consent",t,{key:n}))(o,r)}),Qt(e,t,st.Consent))})}(e,n,o);break;case st.Ready:!function(e,t){if(!e.allowed)return;const n=Xt(e,st.Ready);t.forEach(t=>{ee(t,t=>Ht(e,"ready",t))(void 0,n)})}(e,n);break;case st.Run:!function(e,t){if(!e.allowed)return;const n=Xt(e,st.Run);t.forEach(t=>{ee(t,t=>Ht(e,"run",t))(void 0,n)})}(e,n);break;case st.Session:!function(e,t){if(!e.session)return;const n=Xt(e,st.Session);t.forEach(t=>{ee(t,t=>Ht(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Xt(e,t),s=Vt(t);n.forEach(n=>{"function"==typeof n&&(s&&!Yt(e,n,t)||s&&!Jt(e,n,t)||(ee(n,n=>Ht(e,"generic",n,{type:t}))(r,o),s&&Qt(e,n,t)))});break}}}function tn(e,t,n){switch(t){case st.Consent:return n||e.consent;case st.Session:return e.session;case st.User:return n||e.user;case st.Custom:return n||e.custom;case st.Globals:return n||e.globals;case st.Config:return n||e.config;default:return}}async function nn(e,t,n,o,r){if(!t.on)return!1;if(Vt(o)&&!Yt(e,t,o))return!1;if(Vt(o)&&!Jt(e,t,o))return!1;const s=await te(t.on,t=>Ht(e,"source",t,{sourceId:n,type:o}))(o,r);return Vt(o)&&Qt(e,t,o),!1===s}function on(e){return"number"==typeof e&&e>0?e:1e4}var rn=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function sn(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new rn(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var an=Object.freeze({batched:!0});function cn(e){return e===an}function un(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function dn(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return Ct(e,t);if("string"==typeof e)return Ct(e,t);const o=B(e,C(n));return 0===o.length?[]:1===o.length?Ct(o[0],t):Ct(o,t)}async function ln(e,t,n={},o){const{allowed:r,consent:s,user:a}=e;if(!r)return gn({ok:!1});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=gt(e.queue,t,{max:n});if(o.dropped>0){const t=It(e.status,V("collector"),"queue",o.dropped);mt(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&vt(e.queue);e.status.in++}o||(o=e.destinations);const i=e.transformers?xt(e.transformers):{},c=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{if(r.config.disabled)return{id:o,destination:r,skipped:!0};const c=r.config.id||o,u=V("destination",c),d=wt(r.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 r=yt();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,u,d.cooldown))return{id:o,destination:r,skipped:!0};const l=t=>{d&&bt(e.status.breakers,u,t,d.threshold,d.cooldown)},f=()=>{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,u)};let p=(r.queuePush||[]).map(e=>({...e,consent:s}));r.queuePush=[],t&&p.push($(t));const g=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:T("unknown");if(!p.length&&!r.queueOn?.length)return f(),{id:o,destination:r,skipped:!0};if(!p.length&&r.queueOn?.length){if(!z(r.config.consent,s))return f(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await fn(e,r,o,!0)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),l("transport-failure")}return f(),{id:o,destination:r,skipped:!t}}const h=[],m=p.filter(t=>{const n=z(r.config.consent,s,t.consent);if(n)return t.consent=n,h.push(t),!1;const a=it(e,{stepId:V("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...at(t,g,e)});return a.skipReason="consent",s&&(a.consent={...s}),r.config.consent&&(a.meta={required:{...r.config.consent}}),_(e,a),!0});if(m.length>0){const t=r.queuePush,n=r.config.id||o,s={max:r.config.queueMax??1e3};let a=0;for(const e of m)a+=gt(t,e,s).dropped;if(a>0){kt(e,n);const o=It(e.status,V("destination",n),"queue",a);mt(t,e.logger.scope(r.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:s.max,droppedCount:o})}else t.length<s.max&&vt(t)}if(!h.length)return f(),{id:o,destination:r,queue:p};let v,y,w=!1;try{w=await fn(e,r,o,!0)}catch(t){e.status.failed++;const n=r.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),l("transport-failure")}if(!w)return f(),{id:o,destination:r,queue:p};r.dlq||(r.dlq=[]);const b=dn(r.config.before,i,g),k=r.config.next,I=r.config?.cache,E=I?A(I):void 0,S=E?qt(E,e):void 0,q=r.config?.state?N(r.config.state):void 0,O=q?.filter(e=>"get"===e.mode),x=q?.filter(e=>"set"===e.mode);let P=0,R=0,B=0;return await Promise.all(h.map(async t=>{let s,c;if(t.user=j(a,t.user),E?.stop&&S){const e=C(g,t),n=await D(E,S,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl})}let u=[t],d=n.respond;if(b.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Mt(e,e.transformers,b,t,g,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(d=r.respond),u=Array.isArray(r.event)?r.event:[r.event]}const l=async(t,n)=>{let s=n,a=!1;if(E&&!E.stop&&S){const e=C(g,t),n=await D(E,S,e);if("HIT"===n?.status)return!1;"MISS"===n?.status&&(s={key:n.key,ttl:n.rule.ttl},a=!0)}O&&O.length>0&&t&&(t=await Q(O,t=>Ot(t,e),t,e));const u=Date.now();let l=!1;const f=await W(pn,n=>{const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{...Et(n),event:t.name}),v=n,l=!0;const a=r.dlq,i=r.config.id||o,c={max:r.config.dlqMax??100},u=gt(a,[t,n],c);if(u.dropped>0){kt(e,i);const t=It(e.status,V("destination",i),"dlq",u.dropped);mt(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:i,cap:c.max,droppedCount:t})}else a.length<c.max&&vt(a)})(e,r,o,t,g,d);if(P+=Date.now()-u,s&&S&&void 0===r.config.mock&&(a?M(S,s.key,f??!0,s.ttl):void 0===c&&(c=f??!0)),!l&&!cn(f)&&x&&x.length>0&&t&&(t=await Q(x,t=>Ot(t,e),t,e)),void 0===f||cn(f)||(y=f),cn(f)&&R++,!l&&k){void 0!==f&&(g._response=f);const n=dn(k,i,g);if(n.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await Mt(e,e.transformers,n,t,g,d,`destination.${o}.next`);r.respond&&(d=r.respond)}}return!0};for(const e of u)await l(e,s)&&B++;return s&&S&&void 0!==c&&void 0===r.config.mock&&M(S,s.key,c,s.ttl),t})),{id:o,destination:r,error:v,response:y,totalDuration:P,batchedCount:R,allowedCount:h.length,pushedCount:B,canonicalId:c,breakerConfig:d}})),u={},d={},l={};for(const t of c){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};kt(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 a=t.breakerConfig,i=t.canonicalId?V("destination",t.canonicalId):void 0,c=t=>{a&&i&&bt(e.status.breakers,i,t,a.threshold,a.cooldown)};if(t.error)o.error=t.error,l[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,c("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)&&(u[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,c("success"))}}return gn({event:t,...Object.keys(u).length&&{done:u},...Object.keys(d).length&&{queued:d},...Object.keys(l).length&&{failed:l}})}async function fn(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),a={collector:e,logger:s,id:n,config:t.config,env:mn(t.env,t.config.env),reportError:St(e,"destination",n,s,t)};s.debug("init");const i=Date.now();let c;_(e,it(e,{stepId:V("destination",n),stepType:"destination",phase:"init",eventId:"",now:i}));try{c=await L(t.init,"DestinationInit",e.hooks,e.logger)(a)}catch(t){const o=Date.now(),r=it(e,{stepId:V("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-i,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},_(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)Zt(e,t,n,r,s)}s.debug("init done")}return!0}async function pn(e,t,n,o,r,s){const{config:a}=t,i=await G(o,a,e);if(i.ignore)return!1;const c=t.type||"unknown",u=e.logger.scope(c),d={collector:e,logger:u,id:n,config:a,data:i.data,rule:i.mapping,ingest:r,env:{...mn(t.env,a.env),...s?{respond:s}:{}},reportError:St(e,"destination",n,u,t)};if(void 0!==a.mock)return u.debug("mock",{event:i.event.name}),a.mock;const l=i.mapping,f=void 0!==l?.batch,p=f?i.mappingKey||"* *":" batch-all";if((f||void 0!==a.batch)&&t.pushBatch&&void 0===a.mock){if(t.batches=t.batches||{},!t.batches[p]){const o={key:p,entries:[],events:[],data:[]},r=un(l?.batch),s=un(a.batch),i=r.wait??s.wait??3e4,c=r.size??s.size??1e3,d=r.age??s.age??3e4,g=mn(t.env,a.env),h=P(async()=>{const o=t.batches[p],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const i=s.entries[0],c={collector:e,logger:u,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:St(e,"destination",n,u,t)};u.debug("push batch",{events:s.entries.length});const d=t.config.id||n,l=kt(e,d),f=wt(t.config.breaker),h=V("destination",d),m=t=>{f&&bt(e.status.breakers,h,t,f.threshold,f.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+=gt(o,e,r).dropped;if(s>0){const t=It(e.status,V("destination",d),"dlq",s);mt(o,u,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:d,cap:r.max,droppedCount:t})}else o.length<r.max&&vt(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=s.entries.length;const E=on(a.timeout),S=await W((o,r)=>sn(Promise.resolve(L(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"),u.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if(U(q=S)&&Array.isArray(q.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),u.error("Push batch partial failure",{failed:e.length,delivered:I,entries:s.entries.length}))}var q;const O=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),a=at(t.event,t.ingest,e),i=it(e,{stepId:V("destination",n),stepType:"destination",phase:r?"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:s.entries.length,index:o},i.durationMs=O-v,r){const e=b?w:y.get(o);i.error=e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}_(e,i)}),u.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:i,size:c,age:d});t.batches[p]={batched:o,isDefault:!f,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[p];c.batched.entries.push({event:i.event,ingest:r,respond:s,rule:l,data:i.data}),c.batched.events.push(i.event),K(i.data)&&c.batched.data.push(i.data);const d="string"==typeof i.event.id?i.event.id:"",g=at(o,r,e),h=Date.now(),m=it(e,{stepId:V("destination",n),stepType:"destination",phase:"in",eventId:d,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,_(e,m);const v=it(e,{stepId:V("destination",n),stepType:"destination",phase:"out",eventId:d,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},_(e,v);const y=t.config.id||n,w=kt(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),an}{let s;if(u.debug("push",{event:i.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=dt({...d.env,simulation:t.calls});d.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[H]={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:f,parentEventId:p}=at(o,r,e),g=Date.now(),h=it(e,{stepId:V("destination",n),stepType:"destination",phase:"in",eventId:c,now:g,traceId:l,sourceId:f,parentEventId:p});i.mappingKey&&(h.mappingKey=i.mappingKey),i.event.consent&&(h.consent={...i.event.consent}),h.inEvent=i.event,_(e,h);try{const o=on(a.timeout),r=await sn(Promise.resolve(L(t.push,"DestinationPush",e.hooks,e.logger)(i.event,d)),o,`Destination "${n}" delivery timed out after ${o}ms`),h=Date.now(),m=it(e,{stepId:V("destination",n),stepType:"destination",phase:"out",eventId:c,now:h,traceId:l,sourceId:f,parentEventId:p});return m.durationMs=h-g,m.outEvent=i.event,s&&s.length>0&&(m.calls=pt(s)),K(r)&&(m.meta={...m.meta,response:r}),i.mappingKey&&(m.mappingKey=i.mappingKey),_(e,m),u.debug("push done"),r}catch(t){const o=Date.now(),r=it(e,{stepId:V("destination",n),stepType:"destination",phase:"error",eventId:c,now:o,traceId:l,sourceId:f,parentEventId:p});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=pt(s)),i.mappingKey&&(r.mappingKey=i.mappingKey),_(e,r),t}}}function gn(e){return{ok:!e?.failed,...e}}function hn(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:a}=jt(e,"before"),{config:i}=jt({...e,config:a},"next"),c={...t.config,...n,...i};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const u=mn(t.env,o);return{...t,config:c,env:u}}function mn(e,t){return e||t?t?e&&U(e)&&U(t)?{...e,...t}:t:e:{}}async function vn(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",a=n.scope(s),i={id:e,config:o.config,env:o.env??{},logger:a};let c;try{await Promise.race([r(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 yn(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function wn(e,t,n){let o,r,s=!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 st.Config:Ke(n)&&(Te(e.config,n,{shallow:!1}),r=n,s=!0);break;case st.Consent:if(Ke(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);yn(e,st.Consent),r=t,s=!0}break;case st.Custom:Ke(n)&&(e.custom=Te(e.custom,n),yn(e,st.Custom),r=n,s=!0);break;case st.Destination:Ke(n)&&"code"in n&&Ke(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:a,cache:i,state:c}=t;if(!F(n.push))return gn({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=o||{init:!1};let d=s?{...u,before:s}:{...u};a&&(d={...d,next:a}),i&&(d={...d,cache:i}),void 0!==c&&void 0===d.state&&(d={...d,state:c});let l=d.id;if(!l)do{l=R(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(d.require?.length){e.pending.destinations[l]=t,await Bt(e);const n=e.destinations[l];return n?ln(e,void 0,{},{[l]:n}):gn({ok:!0})}const f={...n,config:d,env:mn(n.env,r)};return e.destinations[l]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),ln(e,void 0,{},{[l]:f})}(e,n));break;case st.Globals:Ke(n)&&(e.globals=Te(e.globals,n),yn(e,st.Globals),r=n,s=!0);break;case st.Hook:if(Ke(n)&&Be(n.name)&&ze(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case st.On:if(Ke(n)&&Be(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!Kt(e))return void Ut();const o=e.on,r=o[t]||[],s=X(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,en(e,t,s)}(e,t,o)}break;case st.Ready:s=!0;break;case st.Run:o=await async function(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=_e(),e.count=0,t&&(t.consent&&(e.consent=Te(e.consent,t.consent),yn(e,st.Consent)),t.user&&(e.user=Te(e.user,t.user),yn(e,st.User)),t.globals&&(e.globals=Te(e.config.globalsStatic||{},t.globals),yn(e,st.Globals)),t.custom&&(e.custom=Te(e.custom,t.custom),yn(e,st.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Bt(e),await async function(e){if(Kt(e))for(const t of Gt){if(!Wt(e,t))continue;const n=tn(e,t);en(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))Rt(r)&&await nn(e,r,o,t,n)}else Ut()}(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 ln(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 st.Session:s=!0;break;case st.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await vn(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 vn(e.destinations,"destination",t),await vn(e.transformers,"transformer",t),await vn(e.stores,"store",t)}(e));break;case st.User:Ke(n)&&(Te(e.user,n,{shallow:!1}),yn(e,st.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),gn({ok:!1})}if(s){await async function(e,t,n,o){if(!Kt(e))return Ut(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=tn(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&&(Rt(o)?await nn(e,o,n,t,s)&&(a=!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});Zt(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))Rt(n)&&n.queueOn?.length&&await _t(e,n,t);const i=Object.values(e.sources).some(e=>!Rt(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||i)&&await Bt(e),en(e,t,r,o),!a}(e,t,void 0,r);const n=await ln(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||gn({ok:!0})}()}finally{a()}}function bn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function kn(e,t,n){const o=t.name;if("string"!=typeof o)throw new Re(void 0===o?"Event name is required":"Event name is invalid");if(!o)throw new Re("Event name is required");const[r,s]=o.split(" ");if(!r||!s)throw new Re("Event name is invalid");const{timestamp:a=Date.now(),name:i=`${r} ${s}`,data:c={},context:u={},globals:d={},custom:l={},user:f=e.user,nested:p=[],consent:g=e.consent,id:h=Pe(),trigger:m="",entity:v=r,action:y=s,timing:w=0,source:b={type:"collector",schema:"4"}}=t,k=b??{type:"collector",schema:"4"},I=k.count??(e.count+=1),E=k.trace??n?._meta.trace??e.trace,S={...k,count:I};void 0!==E&&(S.trace=E);const q=e.name??k.platform??"default",O=e.release??"4.5.1-next-1788726985928";return S.release={...k.release,[q]:O},{name:i,data:c,context:u,globals:Te(e.globals,d),custom:l,user:f,nested:p,consent:g,id:h,trigger:m,entity:v,action:y,timestamp:a,timing:w,source:S}}function In(e,t){const n=Qe(async(n,o={})=>await Ne(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=gt(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=It(e.status,"collector.preRun","queue",r.dropped);mt(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&vt(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),gn({ok:!0})}const r=Date.now(),{id:s,ingest:a,respond:i,mapping:c,preChain:u,include:d,exclude:l}=o;let f=i,p=n;const g=d||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,d,l):void 0,h=a??Fe(s||"unknown");if(c){const t=await Le(p,c,e);if(t.ignore)return gn({ok:!0});if(c.consent&&!Ge(c.consent,e.consent,t.event.consent))return gn({ok:!0});p=t.event}if(u?.length&&e.transformers&&Object.keys(e.transformers).length>0){const n=await Mt(e,e.transformers,u,p,h,f,s?`source.${s}.next`:void 0);if(null===n.event)return e.logger.debug("Event dropped by transformer chain"+(n.droppedBy?` (${n.droppedBy})`:"")),gn({ok:!0,dropped:!0});if(n.stopped)return n.respond&&(f=n.respond),gn({ok:!0});n.respond&&(f=n.respond);const o="string"==typeof p.id?p.id:"";if(Array.isArray(n.event)){const a=await Promise.all(n.event.map(async n=>{const r=""!==o&&n.id===o?{...n,id:Ve()}:n,a=t(r),i=kn(e,a,h);return ln(e,i,{id:s,ingest:h,respond:f},g)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return a[0]??gn({ok:!0})}p=""===o||"string"==typeof n.event.id&&""!==n.event.id?n.event:{...n.event,id:o}}const m=function(e,t,n){return kn(e,bn(e,t),n)}(e,p,h),v=await ln(e,m,{id:s,ingest:h,respond:f},g);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return v},t=>{if(t instanceof He)throw t;if(t instanceof We){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}),gn({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...Et(t),event:n.name}),gn({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:Ve()},s="string"==typeof r.id?r.id:"",{traceId:a,sourceId:i,parentEventId:c}=at(r,o?.ingest,e),u=Date.now(),d=it(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:u,traceId:a,sourceId:i,parentEventId:c});d.inEvent=r,Ue(e,d);try{const t=await n(r,o),d=Date.now(),l=it(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:d,traceId:a,sourceId:i,parentEventId:c});return l.durationMs=d-u,l.outEvent=t,Ue(e,l),t}catch(t){const n=Date.now(),o=it(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:a,sourceId:i,parentEventId:c});throw o.durationMs=n-u,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},Ue(e,o),t}}}function En(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=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 s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);a.evictions_ttl+=t},o),i&&"function"==typeof i.unref&&i.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),a.evictions_ttl++,void a.misses++):(s.delete(e),s.set(e,t),a.hits++,t.value);a.misses++},set(e,n,o){const i=!s.has(e);i||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),a.writes++,i&&a.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++}a.evictions_entries+=n}()},delete(e){s.delete(e)&&a.deletes++},get counters(){return{...a}},destroy(){void 0!==i&&(clearInterval(i),i=void 0),s.clear()}}}function Sn(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:a,collector:i}=t,c=(e,t)=>{if(!i)return;const n=it(i,{stepId:`store.${a}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},nt(i,n)},u={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},d=n.rules.map(e=>({match:e.match?tt(e.match):()=>!0,ttl:e.ttl})),l=e=>`${r}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return d.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...u}},async get(t){const n=l(t),r=await o.get(n),s=ot(r);if(void 0!==s){if(!("expired"in s))return u.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const a=p.get(n);if(a)return u.inflight_dedups++,c(t,"hit"),a;u.misses++,c(t,"miss");const i=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=f(t,r);if(s)try{const e=1e3*s.ttl;await o.set(n,rt(r,e),e),u.populates++}catch(e){g("set",t,e)}return r}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,r){u.writes++,await e.set(t,n,r);const s=f(t,n);if(s)try{const e=1e3*s.ttl;await o.set(l(t),rt(n,e),e)}catch(e){g("set",t,e)}},async delete(t){u.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${a}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,Et(n)):console.warn(o,n)}}function qn(e,t,n){const o=`store.${n}`,r=et(t.get,"StoreGet",e.hooks,e.logger),s=et(t.set,"StoreSet",e.hooks,e.logger),a=et(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=it(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},Ze(e,s);try{const s=await r(t),a=Date.now(),i=it(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});return i.durationMs=a-n,i.meta={op:"get",key:t},Ze(e,i),s}catch(r){const s=Date.now(),a=it(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"get",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Ze(e,a),r}},t.set=async(t,n,r)=>{const a=Date.now(),i=it(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:a});i.meta={op:"set",key:t},Ze(e,i);try{await s(t,n,r);const i=Date.now(),c=it(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});c.durationMs=i-a,c.meta={op:"set",key:t},Ze(e,c)}catch(n){const r=Date.now(),s=it(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-a,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Ze(e,s),n}},t.delete=async t=>{const n=Date.now(),r=it(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},Ze(e,r);try{await a(t);const r=Date.now(),s=it(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},Ze(e,s)}catch(r){const s=Date.now(),a=it(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw a.durationMs=s-n,a.meta={op:"delete",key:t},a.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},Ze(e,a),r}}}async function On(e){const t=O({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=x(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 a,i;void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),s.push=In(s,e=>bn(s,e)),s.command=(i=wn,Je(async(e,t,n)=>await Xe(async()=>await i(a,e,t,n),t=>{if(t instanceof Ye)throw t;return a.status.failed++,a.logger.error("command failed",{...Et(t),command:e}),gn({ok:!1})})(),"Command",(a=s).hooks,a.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 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 gn({ok:!1});a={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return o&&"object"==typeof o&&(a.context=o),r&&Array.isArray(r)&&(a.nested=r),s&&"object"==typeof s&&(a.custom=s),e.push(a)}}(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:a={}}=r,i=e.logger.scope("store").scope(o),c={collector:e,logger:i,id:o,config:s,env:a,reportError:St(e,"store",o,i)},u=await t(c);n[o]=u}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){const a=t[s];if("BLACK"===a)return;if("GRAY"===a){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 i=e[s].cache?.store;if(void 0!==i){if(!(i in e))throw new Error(`Store "${s}" cache.store references "${i}", which is not declared in flow.stores`);r(i)}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,a;void 0!==r.store?(s=n[r.store],a=r.store):(n.__cache||(n.__cache=En()),s=n.__cache,a="__cache");const i=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${i}:" via ${a}`),n[t]=Sn(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:i,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&qn(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=En()),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]=hn(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,a=$e(r,"Transformer");if(!a.ok){e.logger.warn(`Transformer ${o} invalid (${a.code}): ${a.reason}. Skipping.`);continue}const{config:i}=jt(r,"before"),{config:c}=jt({...r,config:i},"next"),u=Object.keys(s).length>0?{...c,env:s}:c,{cache:d}=r,l=d?{...u,cache:d}:u,f=r.config?.state??r.state,p=void 0!==f&&void 0===l.state?{...l,state:f}:l,g=e.logger.scope("transformer").scope(o),h={collector:e,logger:g,id:o,ingest:ye(o),config:p,env:s,reportError:St(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 Ae(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!==f&&void 0===v.config?.state&&(v.config={...v.config??{},state:f}),n[o]=v}return n}(s,e.transformers||{}),s}var xn=globalThis;function jn(e){try{const t=xn.window;if(!t)return;t.localStorage.getItem(I)===e&&t.localStorage.removeItem(I)}catch{}}function Cn(e,t){return void 0===t?e:n=>e({...n,release:t})}async function $n(e){e=e||{};const t=await On(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=xn.window,t=xn.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(I);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return xn.window?.localStorage.getItem(I)??null}catch{return null}}();if(!r)return;const s=q(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),jn(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 a;!function(e){try{xn.window?.localStorage.setItem(I,e)}catch{}}(r),null!==t&&function(){const e=xn.window,t=xn.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,a=s.indexOf("?"),i=a>=0?s.slice(0,a):s,c=new t(a>=0?s.slice(a+1):"");c.delete(I);const u=c.toString();e.history.replaceState({},"",`${i}${u?`?${u}`:""}${r}`)}catch{}}();const i=E({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(jn(r),a&&e.observers.delete(a))}});a=S(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Cn(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 r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add(S(Cn(E({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 zt(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 ue(n.init.bind(n),n=>{if(n instanceof re)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...Et(n)})})(),o||(n.config.init=!0,Rt(n)&&await _t(e,n,t))}return await Bt(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 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 An=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await $n({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}};export{d as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
|
package/dist/dev.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,SAAS;AAEX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,QAAQ,EACL;AAAA,IACC,EACG,OAAO;AAAA,MACN,OAAO,EACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,SAAS,KAAAA,UAAS;AAEX,IAAM,gBAAgBA,GAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,WAAW,YAAY,cAAc;AAC3C,IAAM,UAAU,YAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A
|
|
1
|
+
{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts","../src/examples/trigger.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z.object({\n events: z\n .array(\n z\n .object({\n delay: z\n .number()\n .optional()\n .describe('Milliseconds to wait before pushing this event'),\n })\n .passthrough()\n .describe('Partial walkerOS event with optional delay'),\n )\n .describe('Events to push to the collector on init'),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * as env from './env';\nexport * as step from './step';\nexport { createTrigger } from './trigger';\n","import type { Env } from '../types';\nimport type { Logger } from '@walkeros/core';\n\n/**\n * Example environment configurations for source demo\n */\n\nconst noop = async () => ({\n ok: true,\n});\n\n// Simple no-op logger for demo purposes\nconst noopFn = () => {};\nconst noopLogger: Logger.Instance = {\n error: noopFn,\n warn: noopFn,\n info: noopFn,\n debug: noopFn,\n throw: (message: string | Error) => {\n throw typeof message === 'string' ? new Error(message) : message;\n },\n json: noopFn,\n scope: () => noopLogger,\n};\n\nexport const init: Env | undefined = undefined;\n\nexport const push: Env = {\n push: noop as Env['push'],\n command: noop as Env['command'],\n elb: noop as Env['elb'],\n logger: noopLogger,\n};\n\n/**\n * Simulation tracking paths\n */\nexport const simulation = ['call:elb'];\n","import type { Flow } from '@walkeros/core';\n\nexport const pageView: Flow.StepExample = {\n title: 'Page view',\n description:\n 'A simple event object is pushed through the demo source as a walker elb call for learning purposes.',\n in: {\n name: 'page view',\n data: { title: 'Home' },\n },\n out: [\n [\n 'elb',\n {\n name: 'page view',\n data: { title: 'Home' },\n },\n ],\n ],\n};\n\nexport const delayedEvent: Flow.StepExample = {\n title: 'Delayed event',\n description:\n 'An event object with a delay field is pushed through the demo source after the specified wait.',\n in: {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n delay: 100,\n },\n out: [\n [\n 'elb',\n {\n name: 'product add',\n data: { id: 'abc', name: 'Test Product' },\n },\n ],\n ],\n};\n","import type { Trigger, Collector, WalkerOS } from '@walkeros/core';\nimport { startFlow } from '@walkeros/collector';\n\n/**\n * Demo source createTrigger.\n *\n * DOM-free. The demo source's `push` is `elb`, so the trigger pushes the\n * supplied content (a walkerOS event `{ name, data }`) straight through `elb`\n * into the collector. On the first trigger call the flow is lazily started.\n *\n * Determinism note: `startFlow` initializes the demo source, which eagerly\n * fires every `settings.events` entry the source declares (via setTimeout).\n * Config is passed through UNMODIFIED (pass-through doctrine), so the events a\n * caller observes are the supplied content PLUS any `settings.events` the\n * flow's demo source declares. For deterministic single-event simulation the\n * flow's demo source must declare no `settings.events`.\n *\n * @example\n * const { trigger } = await createTrigger(config);\n * await trigger()({ name: 'page view', data: { title: 'Home' } });\n */\nconst createTrigger: Trigger.CreateFn<WalkerOS.DeepPartialEvent, void> = async (\n config: Collector.InitConfig,\n) => {\n let flow: Trigger.FlowHandle | undefined;\n\n const trigger: Trigger.Fn<WalkerOS.DeepPartialEvent, void> =\n () => async (content: WalkerOS.DeepPartialEvent) => {\n // Lazy startFlow — first call initializes the flow and the demo source.\n if (!flow) {\n const result = await startFlow({ ...config, run: config.run ?? true });\n flow = { collector: result.collector, elb: result.elb };\n }\n\n // The demo source pushes via elb; mirror that by pushing the supplied\n // content straight through. Only the supplied content is pushed here.\n await flow.elb(content);\n };\n\n return {\n get flow() {\n return flow;\n },\n trigger,\n };\n};\n\nexport { createTrigger };\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,SAAS;AAEX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,QAAQ,EACL;AAAA,IACC,EACG,OAAO;AAAA,MACN,OAAO,EACJ,OAAO,EACP,SAAS,EACT,SAAS,gDAAgD;AAAA,IAC9D,CAAC,EACA,YAAY,EACZ,SAAS,4CAA4C;AAAA,EAC1D,EACC,SAAS,yCAAyC;AACvD,CAAC;;;AChBD,SAAS,KAAAA,UAAS;AAEX,IAAM,gBAAgBA,GAAE,OAAO,CAAC,CAAC;;;AFMjC,IAAM,WAAW,YAAY,cAAc;AAC3C,IAAM,UAAU,YAAY,aAAa;;;AGThD;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,IAAM,OAAO,aAAa;AAAA,EACxB,IAAI;AACN;AAGA,IAAM,SAAS,MAAM;AAAC;AACtB,IAAM,aAA8B;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO,CAAC,YAA4B;AAClC,UAAM,OAAO,YAAY,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EAC3D;AAAA,EACA,MAAM;AAAA,EACN,OAAO,MAAM;AACf;AAEO,IAAM,OAAwB;AAE9B,IAAM,OAAY;AAAA,EACvB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AACV;AAKO,IAAM,aAAa,CAAC,UAAU;;;ACrCrC;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,WAA6B;AAAA,EACxC,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,OAAO,OAAO;AAAA,EACxB;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,OAAO,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,eAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,aACE;AAAA,EACF,IAAI;AAAA,IACF,MAAM;AAAA,IACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EACA,KAAK;AAAA,IACH;AAAA,MACE;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM,EAAE,IAAI,OAAO,MAAM,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBA,IAAM,gBAAmE,OACvE,WACG;AACH,MAAI;AAEJ,QAAM,UACJ,MAAM,OAAO,YAAuC;AAElD,QAAI,CAAC,MAAM;AACT,YAAM,SAAS,MAAM,GAAU,EAAE,GAAG,QAAQ,KAAK,OAAO,OAAO,KAAK,CAAC;AACrE,aAAO,EAAE,WAAW,OAAO,WAAW,KAAK,OAAO,IAAI;AAAA,IACxD;AAIA,UAAM,KAAK,IAAI,OAAO;AAAA,EACxB;AAEF,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;","names":["z"]}
|
package/dist/walkerOS.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"package": "@walkeros/source-demo",
|
|
4
|
-
"version": "4.5.
|
|
4
|
+
"version": "4.5.1-next-1788726985928",
|
|
5
5
|
"type": "source",
|
|
6
6
|
"platform": [
|
|
7
7
|
"web",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"examples": {
|
|
46
46
|
"createTrigger": {
|
|
47
|
-
"$code": "async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await
|
|
47
|
+
"$code": "async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await $n({...e,run:e.run??!0});t={collector:n.collector,elb:n.elb}}await t.elb(n)}}}"
|
|
48
48
|
},
|
|
49
49
|
"env": {
|
|
50
50
|
"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.5.
|
|
4
|
+
"version": "4.5.1-next-1788726985928",
|
|
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.5.
|
|
42
|
+
"@walkeros/core": "4.5.1-next-1788726985928"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@walkeros/collector": "4.5.
|
|
45
|
+
"@walkeros/collector": "4.5.1-next-1788726985928"
|
|
46
46
|
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"url": "git+https://github.com/elbwalker/walkerOS.git",
|