@walkeros/web-source-session 4.3.0-next-1783710078012 → 4.3.0-next-1784120651691
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 -3
- package/dist/dev.js +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/walkerOS.json +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @walkeros/web-source-session
|
|
2
2
|
|
|
3
|
-
## 4.3.0-next-
|
|
3
|
+
## 4.3.0-next-1784120651691
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
@@ -8,10 +8,13 @@
|
|
|
8
8
|
- Updated dependencies [e01036e]
|
|
9
9
|
- Updated dependencies [e01036e]
|
|
10
10
|
- Updated dependencies [98801c9]
|
|
11
|
+
- Updated dependencies [f8408fd]
|
|
12
|
+
- Updated dependencies [907eed0]
|
|
11
13
|
- Updated dependencies [9506e3e]
|
|
14
|
+
- Updated dependencies [d28a8ea]
|
|
12
15
|
- Updated dependencies [ebd193f]
|
|
13
|
-
- @walkeros/web-core@4.3.0-next-
|
|
14
|
-
- @walkeros/core@4.3.0-next-
|
|
16
|
+
- @walkeros/web-core@4.3.0-next-1784120651691
|
|
17
|
+
- @walkeros/core@4.3.0-next-1784120651691
|
|
15
18
|
|
|
16
19
|
## 4.2.1
|
|
17
20
|
|
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:()=>p,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,{SettingsSchema:()=>u,settings:()=>d});var c=require("@walkeros/core/dev"),l=require("@walkeros/core/dev"),u=l.z.object({storage:l.z.boolean().default(!1).describe("Enable persistent storage for session/device IDs").optional(),consent:l.z.union([l.z.string(),l.z.array(l.z.string())]).describe("Consent key(s) required to enable storage mode").optional(),length:l.z.number().default(30).describe("Session timeout in minutes").optional(),pulse:l.z.boolean().default(!1).describe("Keep session alive on each event").optional(),sessionKey:l.z.string().default("elbSessionId").describe("Storage key for session ID").optional(),sessionStorage:l.z.enum(["local","session"]).default("local").describe("Storage type for session").optional(),deviceKey:l.z.string().default("elbDeviceId").describe("Storage key for device ID").optional(),deviceStorage:l.z.enum(["local","session"]).default("local").describe("Storage type for device").optional(),deviceAge:l.z.number().default(30).describe("Device ID age in days").optional(),cb:l.z.any().describe("Custom session callback function or false to disable").optional(),clickIds:l.z.array(l.ClickIdEntrySchema).describe("Custom click-ID registry. Entries with a `param` matching a default override the platform name in place; new params append to the end of the priority list.").optional()}),d=(0,c.zodToSchema)(u),p={};s(p,{createTrigger:()=>Ze,step:()=>f,trigger:()=>et});var f={};s(f,{newMarketingSession:()=>g,returningVisitor:()=>h});var g={title:"New marketing session",description:"A visit with UTM parameters starts a new session and emits walker user, session, and session start calls.",trigger:{type:"load",options:{url:"https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=winter-sale"}},in:{storage:!0},out:[["elb","user",{session:"s3ss10n-id",device:"d3v1c3-id"}],["elb","session",{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}],["elb",{name:"session start",data:{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}}]]},h={title:"Returning visitor",description:"A returning visit with a google referrer reuses the stored device id and increments the session count.",trigger:{type:"load",options:{referrer:"https://google.com"}},in:{storage:!0},out:[["elb","user",{session:"n3w-s3ss10n",device:"d3v1c3-id"}],["elb","session",{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}],["elb",{name:"session start",data:{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}}]]},v=require("@walkeros/core"),m=require("@walkeros/core"),y=require("@walkeros/core"),w=(require("@walkeros/core"),require("@walkeros/core")),b=require("@walkeros/core"),k=require("@walkeros/core"),I=require("@walkeros/core"),S=require("@walkeros/core"),C=require("@walkeros/core"),E=require("@walkeros/core"),q=require("@walkeros/core"),O=require("@walkeros/core"),x=require("@walkeros/core"),j=require("@walkeros/core"),D=require("@walkeros/core"),A={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function $(e,t,n){var o,r,s;return{traceId:null!=(s=null!=(r=null==(o=e.source)?void 0:o.trace)?r:null==t?void 0:t._meta.trace)?s:n.trace,sourceId:null==t?void 0:t._meta.path[0],parentEventId:null==t?void 0:t._meta.parentEventId}}function M(e,t){var n;const o=e.status.startedAt,r={flowId:null!=(n=e.name)?n:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-o};return t.traceId&&(r.traceId=t.traceId),t.sourceId&&(r.sourceId=t.sourceId),t.parentEventId&&(r.parentEventId=t.parentEventId),r}function _(e){return"object"==typeof e&&null!==e}function T(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(T(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:T(s,t,n+1);return r}function P(e){const t=[],n=[],{simulation:o,...r}=e,s=T(r,new WeakMap,0);for(const e of o){const o=(0,w.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(!_(t)){a=!1;break}i=t}const c=o[o.length-1];if(!a||!(c in i)){n.push(r);continue}const l=i[c];"function"==typeof l?i[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),l.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function z(e,t){try{return e[t]}catch(e){return"[unreadable]"}}function K(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(z(r,t),o+1);s=e}else s=function(e){try{return String(e)}catch(e){return"[object]"}}(r)}catch(e){s="[unreadable]"}return t.delete(r),s};return e.map(e=>n(e,0))}function F(e){return e.map(e=>({fn:e.fn,args:K(e.args),ts:e.ts}))}function N(e,t,n,o){var r;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(r=n.onOverflow)?r:"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var H=new WeakMap;function U(e,t,n,o){H.get(e)||(H.set(e,!0),t.warn(n,o))}function R(e){H.delete(e)}var B=()=>Date.now();function G(e){var t,n;if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:null!=(t=e.threshold)?t:5,cooldown:null!=(n=e.cooldown)?n:3e4}}function V(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=B()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=B()+r)))}function W(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 L(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(null!=(r=s[n])?r:0)+o,s[n]}function J(e,t,n,o,r){const s=(0,I.stepId)(t,n);return(t,i)=>{var a;try{if(i)return r?function(e,t,n,o,r,s){var i;const a=t.dlq=t.dlq||[],c={max:null!=(i=t.config.dlqMax)?i:100},l=N(a,[o,r],c);if(l.dropped>0){const t=L(e.status,(0,I.stepId)("destination",n),"dlq",l.dropped);U(a,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:c.max,droppedCount:t})}else a.length<c.max&&R(a);const u=W(e,n);u.failed++,u.dlqSize=a.length,e.status.failed++;const d=G(t.config.breaker);if(d){const o=t.config.id||n;V(e.status.breakers,(0,I.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]=(null!=(a=e.status.connectionErrors[s])?a:0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch(e){}}}function Y(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function Q(e,t){return e?t.stores[e]:t.stores.__cache}function X(e){var t;const n={};for(const[o,r]of Object.entries(e)){const e=null==(t=r.config)?void 0:t.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?n[o]={next:e}:n[o]={}}return n}function Z(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 ee(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 te(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,C.createIngest)(n),config:t.config,env:se(t.config.env),reportError:J(e,"transformer",n,r)};r.debug("init");const i=await(0,C.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:(null==i?void 0:i.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function ne(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:{...se(t.config.env),...s?{respond:s}:{}},reportError:J(e,"transformer",n,a)};a.debug("push",{event:o.name});const l="string"==typeof o.id?o.id:"",{traceId:u,sourceId:d,parentEventId:p}=$(o,r,e),f=Date.now(),g=M(e,{stepId:(0,C.stepId)("transformer",n),stepType:"transformer",phase:"in",eventId:l,now:f,traceId:u,sourceId:d,parentEventId:p});g.inEvent=o,(0,C.emitStep)(e,g);try{const r=await(0,C.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=M(e,{stepId:(0,C.stepId)("transformer",n),stepType:"transformer",phase:"out",eventId:l,now:s,traceId:u,sourceId:d,parentEventId:p});return i.durationMs=s-f,i.outEvent=r,(0,C.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=M(e,{stepId:(0,C.stepId)("transformer",n),stepType:"transformer",phase:"error",eventId:l,now:o,traceId:u,sourceId:d,parentEventId:p});throw r.durationMs=o-f,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,C.emitStep)(e,r),t}}function oe(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:(0,C.createIngest)(t)}async function re(e,t,n,o,r,s,i){var a,c,l,u,d,p,f,g,h;r||(r=(0,C.createIngest)(null!=(a=n[0])?a:"chain")),i&&r._meta&&(r._meta.chainPath=i);let v=o,m=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:m};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await(0,C.tryCatchAsync)(te,t=>{if(t instanceof C.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:m};if(i&&void 0!==(null==(l=null==(c=s.config)?void 0:c.chainMocks)?void 0:l[i])){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),v=t;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),v=s.config.mock;continue}if(null==(d=s.config)?void 0:d.disabled)continue;const a=null==(p=s.config)?void 0:p.cache,y=a?(0,C.compileCache)(a):void 0,w=y?Y(y,e):void 0,b=(null==(f=s.config)?void 0:f.state)?(0,C.compileState)(s.config.state):void 0,k=null==b?void 0:b.filter(e=>"get"===e.mode),I=null==b?void 0:b.filter(e=>"set"===e.mode),S=async t=>I&&0!==I.length?(0,C.applyState)(I,t=>Q(t,e),t,e):t;let E;if(y&&w){const e=(0,C.buildCacheContext)(r,v),t=await(0,C.checkCache)(y,w,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(v=t.value,y.stop)return{event:v,respond:m,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(E={key:t.key,ttl:t.rule.ttl})}const q=s.config.before;if(q){const n=(0,C.getNextSteps)(q,(0,C.buildCacheContext)(r,v));if(1===n.length){const o=ee(n[0],X(t));if(o.length>0){const n=await re(e,t,o,v,r,m,i);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:m};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(h=n.respond)?h:m,stopped:!0};n.respond&&(m=n.respond),v=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),v,oe(r,n),void 0,i)))}k&&k.length>0&&(v=await(0,C.applyState)(k,t=>Q(t,e),v,e));const O=await(0,C.tryCatchAsync)(ne,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,v,r,m);if(!1===O)return{event:null,respond:m};if(Array.isArray(O)){const s=n.slice(n.indexOf(o)+1),a=await Promise.all(O.map(async n=>{const o=await S(n.event||v),a=oe(r,"unknown");if(n.next){const r=(0,C.getNextSteps)(n.next,(0,C.buildCacheContext)(a,o));if(0===r.length)return{event:o,respond:m};if(1===r.length){const n=ee(r[0],X(t));return n.length>0?re(e,t,n,o,a,m,i):{event:o,respond:m}}return(await Promise.all(r.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),o,oe(a,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?re(e,t,s,o,a,m,i):{event:o,respond:m}}));let c=m;const l=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=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:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(O&&"object"==typeof O){const{event:n,respond:o,next:s}=O;if(o&&(m=o),void 0!==s){const o=await S(n||v),a=(0,C.getNextSteps)(s,(0,C.buildCacheContext)(r,o));if(0===a.length){v=o;continue}if(1===a.length){const n=ee(a[0],X(t));return n.length>0?re(e,t,n,o,r,m,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:m})}return await Promise.all(a.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),o,oe(r,n),void 0,i))),{event:null,respond:void 0}}n&&(v=n)}I&&I.length>0&&(v=await(0,C.applyState)(I,t=>Q(t,e),v,e)),E&&w&&(0,C.storeCache)(w,E.key,v,E.ttl);const x=s.config.next,j="string"==typeof x||Array.isArray(x)&&x.every(e=>"string"==typeof e),D=void 0!==x&&!j;if((!O||"object"==typeof O&&!O.next)&&D){const n=(0,C.getNextSteps)(s.config.next,(0,C.buildCacheContext)(r,v));if(1===n.length){const o=ee(n[0],X(t));return o.length>0?re(e,t,o,v,r,m,i):{event:v,respond:m}}return n.length>1?(await Promise.all(n.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),v,oe(r,n),void 0,i))),{event:null,respond:void 0}):{event:v,respond:m}}}return{event:v,respond:m}}function se(e){return e&&(0,C.isObject)(e)?e:{}}function ie(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function ae(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const s=t.queueOn;t.queueOn=[];const i=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of s)me(n)&&!Ie(e,t,n)||(await(0,S.tryCatchAsync)(t.on,t=>{if(t instanceof S.FatalError)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:i,type:n,error:t})})(n,o),me(n)&&ke(e,t,n))}function ce(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}function le(e){return"object"==typeof e&&null!==e}async function ue(e,t,n){var o,r;const{code:s,config:i={},env:a={},primary:c,next:l,before:u,cache:d}=n,p=null!=(o=i.state)?o:n.state,f=p?(0,S.compileState)(p):void 0,g=d,h=g?(0,S.compileCache)({...g,stop:null==(r=g.stop)||r}):void 0,v=ie(l)?ee(l,X(e.transformers)):void 0,m=ie(u)?ee(u,X(e.transformers)):void 0,y=a.push,w=null!=y?y:e.push,b=Boolean(y),k=async(n,o,r)=>{var s;let a;const c=null!=m?m:void 0!==u?(()=>{const t=(0,S.getNextSteps)(u,(0,S.buildCacheContext)(r.ingest));return 0===t.length?[]:ee(1===t.length?t[0]:t,X(e.transformers))})():[];let d=[n];if(c.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await re(e,e.transformers,c,n,r.ingest,r.respond,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),d=Array.isArray(o.event)?o.event:[o.event]}if(h){const t=Y(h,e);if(t){const n=(0,S.buildCacheContext)(r.ingest),o=await(0,S.checkCache)(h,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&h.stop){let t=o.value;return o.rule.update&&(t=await(0,S.applyUpdate)(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(s=r.respond)||s.call(r,t),{ok:!0}}if("MISS"===o.status&&h.stop&&r.respond){const s=r.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{(0,S.storeCache)(t,l,n,u),i?a=(async()=>{const t=await(0,S.applyUpdate)(n,i,c,e);s(t)})():s(n)};r.respond=d}"MISS"!==o.status||h.stop||(0,S.storeCache)(t,o.key,!0,o.rule.ttl)}}}const p=v?{kind:"single",preChain:v}:void 0!==l?(()=>{const t=(0,S.getNextSteps)(l,(0,S.buildCacheContext)(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ee(t[0],X(e.transformers))}:{kind:"many",branches:t.map(t=>ee(t,X(e.transformers)))}})():{kind:"single",preChain:[]};!b&&f&&f.length>0&&(d=await Promise.all(d.map(t=>(0,S.applyState)(f,t=>Q(t,e),t,e))));let g={ok:!0};for(const n of d)"many"===p.kind?(await Promise.all(p.branches.map((s,a)=>(0,S.tryCatchAsync)(async()=>b?w(n):w(n,{...o,id:t,ingest:oe(r.ingest,`${t}.${a}`),respond:void 0,mapping:i,preChain:s}),t=>(e.logger.scope("source:many").error(`many branch ${a} failed`,{error:t}),{ok:!0}))())),g={ok:!0}):g=b?await w(n):await w(n,{...o,id:t,ingest:r.ingest,respond:r.respond,mapping:i,preChain:p.preChain});return a&&await a,g},I=async n=>{const o=(0,S.createIngest)(t),r=(0,S.parseTraceparent)(function(e){var t;if(!le(e))return;const n=e.headers;if(le(n)){if("get"in(o=n)&&"function"==typeof o.get)return null!=(t=n.get("traceparent"))?t:void 0;if("traceparent"in n)return n.traceparent;for(const e of Object.keys(n))if("traceparent"===e.toLowerCase())return n[e]}var o}(n));if(r&&(o._meta.trace=r.trace,o._meta.parentEventId=r.parentSpan),!i.ingest||void 0===n)return o;const s=await(0,S.getMappingValue)(n,i.ingest,{collector:e});return{...o,...s,_meta:o._meta}},C=e.logger.scope("source").scope(t),E={command:e.command,sources:e.sources,elb:e.elb,logger:C,...a,push:async(e,n={})=>{const o={ingest:(0,S.createIngest)(t),respond:void 0};return k(e,n,o)}},q={collector:e,logger:C,id:t,config:i,env:E,withScope:async(e,t,n)=>{const o={ingest:await I(e),respond:t};return n({...E,push:(e,t={})=>k(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:J(e,"source",t,C)},O=await(0,S.tryCatchAsync)(s,n=>{if(n instanceof S.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(q);if(!O)return;const x=O.type||"unknown",j=e.logger.scope(x).scope(t);return E.logger=j,c&&(O.config={...O.config,primary:c}),O}async function de(e){var t;for(const[t,n]of Object.entries(e.sources)){if(ce(n))continue;const o=n.config.require;if(!(null==o?void 0:o.length))continue;const r=o.filter(t=>!we(e,t));r.length!==o.length&&(n.config.require=r,ce(n)&&await ae(e,n,t))}for(const[n,o]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[n]||e.destinations[n])continue;const r=null==(t=o.config)?void 0:t.require;if(!r)continue;const s=r.filter(t=>!we(e,t));if(o.config&&(o.config.require=s),s.length>0)continue;delete e.pending.destinations[n];const i=Ne(o);!1!==i.config.queue&&(i.queuePush=[...e.queue]),e.destinations[n]=i}}function pe(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 fe=!1;function ge(){fe||(fe=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function he(e,t,n,o){if(n instanceof b.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var ve=[A.Consent,A.User,A.Globals,A.Custom];function me(e){return ve.includes(e)}function ye(e,t){switch(t){case A.Consent:return Object.keys(e.consent).length>0;case A.User:return Object.keys(e.user).length>0;case A.Globals:return Object.keys(e.globals).length>0;case A.Custom:return Object.keys(e.custom).length>0;default:return!1}}function we(e,t){switch(t){case A.Consent:case A.User:case A.Globals:case A.Custom:return ye(e,t);case A.Run:case A.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function be(e,t){var n;return null!=(n=e.cellVersion[String(t)])?n:0}function ke(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=be(e,n)}function Ie(e,t,n){return e.allowed&&be(e,n)>function(e,t,n){const o=e.delivery.get(t),r=null==o?void 0:o[String(n)];return void 0===r?-1:r}(e,t,n)}function Se(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 Ce(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Ee(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:He(t.env,t.config.env),reportError:J(e,"destination",n,i,t)};(0,k.tryCatch)(t.on,t=>he(e,"destination",t,{destId:n,type:o}))(o,a)}function qe(e,t,n,o){if(!pe(e))return void ge();const r=Oe(e,t,o);if(n.length)switch(t){case A.Consent:!function(e,t,n){const o=n||e.consent,r=Ce(e,A.Consent);t.forEach(t=>{Ie(e,t,A.Consent)&&Se(e,t,A.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,k.tryCatch)(t[n],t=>he(e,"consent",t,{key:n}))(o,r)}),ke(e,t,A.Consent))})}(e,n,o);break;case A.Ready:!function(e,t){if(!e.allowed)return;const n=Ce(e,A.Ready);t.forEach(t=>{(0,k.tryCatch)(t,t=>he(e,"ready",t))(void 0,n)})}(e,n);break;case A.Run:!function(e,t){if(!e.allowed)return;const n=Ce(e,A.Run);t.forEach(t=>{(0,k.tryCatch)(t,t=>he(e,"run",t))(void 0,n)})}(e,n);break;case A.Session:!function(e,t){if(!e.session)return;const n=Ce(e,A.Session);t.forEach(t=>{(0,k.tryCatch)(t,t=>he(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Ce(e,t),s=me(t);n.forEach(n=>{"function"==typeof n&&(s&&!Ie(e,n,t)||s&&!Se(e,n,t)||((0,k.tryCatch)(n,n=>he(e,"generic",n,{type:t}))(r,o),s&&ke(e,n,t)))});break}}}function Oe(e,t,n){switch(t){case A.Consent:return n||e.consent;case A.Session:return e.session;case A.User:return n||e.user;case A.Custom:return n||e.custom;case A.Globals:return n||e.globals;case A.Config:return n||e.config;default:return}}async function xe(e,t,n,o,r){if(!t.on)return!1;if(me(o)&&!Ie(e,t,o))return!1;if(me(o)&&!Se(e,t,o))return!1;const s=await(0,k.tryCatchAsync)(t.on,t=>he(e,"source",t,{sourceId:n,type:o}))(o,r);return me(o)&&ke(e,t,o),!1===s}function je(e){return"number"==typeof e&&e>0?e:1e4}var De=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Ae(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new De(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var $e=Object.freeze({batched:!0});function Me(e){return e===$e}function _e(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Te(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ee(e,t);if("string"==typeof e)return ee(e,t);const o=(0,y.getNextSteps)(e,(0,y.buildCacheContext)(n));return 0===o.length?[]:1===o.length?ee(o[0],t):ee(o,t)}async function Pe(e,t,n={},o){var r,s,i,a,c,l;const{allowed:u,consent:d,globals:p,user:f}=e;if(!u)return Fe({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=N(e.queue,t,{max:n});if(o.dropped>0){const t=L(e.status,(0,y.stepId)("collector"),"queue",o.dropped);U(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&R(e.queue);e.status.in++}o||(o=e.destinations);const g=e.transformers?X(e.transformers):{},h=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var s,i,a,c,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};const u=r.config.id||o,h=(0,y.stepId)("destination",u),v=G(r.config.breaker);if(v&&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=B();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,h,v.cooldown))return{id:o,destination:r,skipped:!0};const m=t=>{v&&V(e.status.breakers,h,t,v.threshold,v.cooldown)},w=()=>{v&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,h)};let b=(r.queuePush||[]).map(e=>({...e,consent:d}));r.queuePush=[],t&&b.push((0,y.clone)(t));const k=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,y.createIngest)("unknown");if(!b.length&&!(null==(s=r.queueOn)?void 0:s.length))return w(),{id:o,destination:r,skipped:!0};if(!b.length&&(null==(i=r.queueOn)?void 0:i.length)){if(!(0,y.getGrantedConsent)(r.config.consent,d))return w(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await ze(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)}),m("transport-failure")}return w(),{id:o,destination:r,skipped:!t}}const I=[],S=b.filter(t=>{const n=(0,y.getGrantedConsent)(r.config.consent,d,t.consent);if(n)return t.consent=n,I.push(t),!1;const s=M(e,{stepId:(0,y.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...$(t,k,e)});return s.skipReason="consent",d&&(s.consent={...d}),r.config.consent&&(s.meta={required:{...r.config.consent}}),(0,y.emitStep)(e,s),!0});if(S.length>0){const t=r.queuePush,n=r.config.id||o,s={max:null!=(a=r.config.queueMax)?a:1e3};let i=0;for(const e of S)i+=N(t,e,s).dropped;if(i>0){W(e,n);const o=L(e.status,(0,y.stepId)("destination",n),"queue",i);U(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&&R(t)}if(!I.length)return w(),{id:o,destination:r,queue:b};let C,E,q=!1;try{q=await ze(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)}),m("transport-failure")}if(!q)return w(),{id:o,destination:r,queue:b};r.dlq||(r.dlq=[]);const O=Te(r.config.before,g,k),x=r.config.next,j=null==(c=r.config)?void 0:c.cache,D=j?(0,y.compileCache)(j):void 0,A=D?Y(D,e):void 0,_=(null==(l=r.config)?void 0:l.state)?(0,y.compileState)(r.config.state):void 0,T=null==_?void 0:_.filter(e=>"get"===e.mode),P=null==_?void 0:_.filter(e=>"set"===e.mode);let z=0,K=0;return await Promise.all(I.map(async t=>{let s;if(t.globals=(0,y.assign)(p,t.globals),t.user=(0,y.assign)(f,t.user),(null==D?void 0:D.stop)&&A){const e=(0,y.buildCacheContext)(k,t),n=await(0,y.checkCache)(D,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let i=t,a=n.respond;if(O.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await re(e,e.transformers,O,t,k,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),i=Array.isArray(r.event)?r.event[0]:r.event}if(D&&!D.stop&&A){const e=(0,y.buildCacheContext)(k,i),n=await(0,y.checkCache)(D,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}T&&T.length>0&&i&&(i=await(0,y.applyState)(T,t=>Q(t,e),i,e));const c=Date.now();let l=!1;const u=await(0,y.tryCatchAsync)(Ke,t=>{var n;const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:t,event:i.name}),C=t,l=!0;const a=r.dlq,c=r.config.id||o,u={max:null!=(n=r.config.dlqMax)?n:100},d=N(a,[i,t],u);if(d.dropped>0){W(e,c);const t=L(e.status,(0,y.stepId)("destination",c),"dlq",d.dropped);U(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:c,cap:u.max,droppedCount:t})}else a.length<u.max&&R(a)})(e,r,o,i,k,a);if(z+=Date.now()-c,s&&A&&void 0===r.config.mock&&(0,y.storeCache)(A,s.key,null==u||u,s.ttl),!l&&!Me(u)&&P&&P.length>0&&i&&(i=await(0,y.applyState)(P,t=>Q(t,e),i,e)),void 0===u||Me(u)||(E=u),Me(u)&&K++,!l&&x){void 0!==u&&(k._response=u);const t=Te(x,g,k);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await re(e,e.transformers,t,i,k,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:C,response:E,totalDuration:z,batchedCount:K,allowedCount:I.length,canonicalId:u,breakerConfig:v}})),v={},m={},w={};for(const t of h){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};W(e,t.id);const u=e.status.destinations[t.id],d=Date.now();u.queuePushSize=null!=(s=null==(r=n.queuePush)?void 0:r.length)?s:0,u.dlqSize=null!=(a=null==(i=n.dlq)?void 0:i.length)?a:0;const p=t.breakerConfig,f=t.canonicalId?(0,y.stepId)("destination",t.canonicalId):void 0,g=t=>{p&&f&&V(e.status.breakers,f,t,p.threshold,p.cooldown)};if(t.error)o.error=t.error,w[t.id]=o,u.failed++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.failed++,g("transport-failure");else if(t.queue&&t.queue.length)m[t.id]=o;else{const n=null!=(c=t.batchedCount)?c:0,r=null!=(l=t.allowedCount)?l:0;(Math.max(0,r-n)>0||0===r)&&(v[t.id]=o,u.count++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.out++,g("success"))}}return Fe({event:t,...Object.keys(v).length&&{done:v},...Object.keys(m).length&&{queued:m},...Object.keys(w).length&&{failed:w}})}async function ze(e,t,n,o=!1){var r;if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const s=t.type||"unknown",i=e.logger.scope(s),a={collector:e,logger:i,id:n,config:t.config,env:He(t.env,t.config.env),reportError:J(e,"destination",n,i,t)};i.debug("init");const c=Date.now();let l;(0,y.emitStep)(e,M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"init",eventId:"",now:c}));try{l=await(0,y.useHooks)(t.init,"DestinationInit",e.hooks,e.logger)(a)}catch(t){const o=Date.now(),r=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-c,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,y.emitStep)(e,r),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(r=t.queueOn)?void 0:r.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)Ee(e,t,n,r,s)}i.debug("init done")}return!0}async function Ke(e,t,n,o,r,s){var i,a,c,l,u,d,p,f;const{config:g}=t,h=await(0,y.processEventMapping)(o,g,e);if(h.ignore)return!1;const v=t.type||"unknown",m=e.logger.scope(v),w={collector:e,logger:m,id:n,config:g,data:h.data,rule:h.mapping,ingest:r,env:{...He(t.env,g.env),...s?{respond:s}:{}},reportError:J(e,"destination",n,m,t)};if(void 0!==g.mock)return m.debug("mock",{event:h.event.name}),g.mock;const b=h.mapping,k=void 0!==(null==b?void 0:b.batch),I=k?h.mappingKey||"* *":" batch-all";if((k||void 0!==g.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[I]){const o={key:I,entries:[],events:[],data:[]},r=_e(null==b?void 0:b.batch),s=_e(g.batch),p=null!=(a=null!=(i=r.wait)?i:s.wait)?a:3e4,f=null!=(l=null!=(c=r.size)?c:s.size)?l:1e3,h=null!=(d=null!=(u=r.age)?u:s.age)?d:3e4,v=He(t.env,g.env),w=(0,y.debounce)(async()=>{var o,r;const s=t.batches[I],i=s.batched;if(0===i.entries.length)return;const a={key:i.key,entries:i.entries,events:i.events,data:i.data};i.entries=[],i.events=[],i.data=[];const c=a.entries[0],{traceId:l,sourceId:u,parentEventId:d}=$(c.event,c.ingest,e),p={collector:e,logger:m,id:n,config:g,data:void 0,rule:s.isDefault?void 0:c.rule,ingest:c.ingest,env:{...v,...c.respond?{respond:c.respond}:{}},reportError:J(e,"destination",n,m,t)};m.debug("push batch",{events:a.entries.length});const f=t.config.id||n,h=W(e,f),w=G(t.config.breaker),b=(0,y.stepId)("destination",f),k=t=>{w&&V(e.status.breakers,b,t,w.threshold,w.cooldown)},S=Date.now(),C=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"flush",eventId:"",now:S,traceId:l,sourceId:u,parentEventId:d});C.batch={size:a.entries.length,index:0},(0,y.emitStep)(e,C);const E=n=>{var o;const r=t.dlq=t.dlq||[],s={max:null!=(o=t.config.dlqMax)?o:100};let i=0;for(const e of n)i+=N(r,e,s).dropped;if(i>0){const t=L(e.status,(0,y.stepId)("destination",f),"dlq",i);U(r,m,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:f,cap:s.max,droppedCount:t})}else r.length<s.max&&R(r);h.failed+=n.length,h.dlqSize=r.length,e.status.failed+=n.length};let q=a.entries.length;const O=je(g.timeout),x=await(0,y.tryCatchAsync)((o,r)=>Ae(Promise.resolve((0,y.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),O,`Destination "${n}" batch delivery timed out after ${O}ms`),t=>{q=0;const o=Date.now(),r=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"error",eventId:"",now:o,traceId:l,sourceId:u,parentEventId:d});r.durationMs=o-S,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},r.batch={size:a.entries.length,index:0},(0,y.emitStep)(e,r),E(a.entries.map(e=>[e.event,t])),k("transport-failure"),m.error("Push batch failed",{error:t instanceof Error?t.message:String(t),entries:a.entries.length})})(a,p);if((0,y.isObject)(j=x)&&Array.isArray(j.failed)&&x.failed.length>0){const e=[],t=new Set;for(const n of x.failed){const r=a.entries[n.index];r&&!t.has(n.index)&&(t.add(n.index),e.push([r.event,null!=(o=n.error)?o:new Error(`Push batch entry ${n.index} failed (no per-row error provided)`)]))}e.length>0&&(E(e),q=Math.max(0,a.entries.length-e.length),m.error("Push batch partial failure",{failed:e.length,delivered:q,entries:a.entries.length}))}var j;m.debug("push batch done"),h.inFlightBatch=Math.max(0,(null!=(r=h.inFlightBatch)?r:0)-a.entries.length),q>0&&(h.count+=q,h.lastAt=Date.now(),e.status.out+=q,k("success"))},{wait:p,size:f,age:h});t.batches[I]={batched:o,isDefault:!k,batchFn:()=>{w()},flush:async()=>{await w.flush()}}}const f=t.batches[I];f.batched.entries.push({event:h.event,ingest:r,respond:s,rule:b,data:h.data}),f.batched.events.push(h.event),(0,y.isDefined)(h.data)&&f.batched.data.push(h.data);const v="string"==typeof h.event.id?h.event.id:"",w=$(o,r,e),S=Date.now(),C=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"in",eventId:v,now:S,traceId:w.traceId,sourceId:w.sourceId,parentEventId:w.parentEventId});h.mappingKey&&(C.mappingKey=h.mappingKey),h.event.consent&&(C.consent={...h.event.consent}),C.inEvent=h.event,(0,y.emitStep)(e,C);const E=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"out",eventId:v,now:S,traceId:w.traceId,sourceId:w.sourceId,parentEventId:w.parentEventId});h.mappingKey&&(E.mappingKey=h.mappingKey),E.outEvent=h.event,E.batch={size:f.batched.entries.length,index:f.batched.entries.length-1},(0,y.emitStep)(e,E);const q=t.config.id||n,O=W(e,q);return O.inFlightBatch=(null!=(p=O.inFlightBatch)?p:0)+1,f.batchFn(),$e}{let s;if(m.debug("push",{event:h.event.name}),"trace"===(null==(f=e.observeLevel)?void 0:f.call(e))&&Array.isArray(t.calls)&&t.calls.length>0){const e=P({...w.env,simulation:t.calls});w.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[y.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const i="string"==typeof h.event.id?h.event.id:"",{traceId:a,sourceId:c,parentEventId:l}=$(o,r,e),u=Date.now(),d=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"in",eventId:i,now:u,traceId:a,sourceId:c,parentEventId:l});h.mappingKey&&(d.mappingKey=h.mappingKey),h.event.consent&&(d.consent={...h.event.consent}),d.inEvent=h.event,(0,y.emitStep)(e,d);try{const o=je(g.timeout),r=await Ae(Promise.resolve((0,y.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(h.event,w)),o,`Destination "${n}" delivery timed out after ${o}ms`),d=Date.now(),p=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"out",eventId:i,now:d,traceId:a,sourceId:c,parentEventId:l});return p.durationMs=d-u,p.outEvent=h.event,s&&s.length>0&&(p.calls=F(s)),(0,y.isDefined)(r)&&(p.meta={...p.meta,response:r}),h.mappingKey&&(p.mappingKey=h.mappingKey),(0,y.emitStep)(e,p),m.debug("push done"),r}catch(t){const o=Date.now(),r=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"error",eventId:i,now:o,traceId:a,sourceId:c,parentEventId:l});throw r.durationMs=o-u,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s&&s.length>0&&(r.calls=F(s)),h.mappingKey&&(r.mappingKey=h.mappingKey),(0,y.emitStep)(e,r),t}}}function Fe(e){return{ok:!(null==e?void 0:e.failed),...e}}function Ne(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=Z(e,"before"),{config:a}=Z({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const l=He(t.env,o);return{...t,config:c,env:l}}function He(e,t){return e||t?t?e&&(0,y.isObject)(e)&&(0,y.isObject)(t)?{...e,...t}:t:e:{}}async function Ue(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=n.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};let l;try{await Promise.race([s(c),new Promise((n,o)=>{l=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}finally{l&&clearTimeout(l)}});await Promise.allSettled(o)}function Re(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Be(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 A.Config:(0,q.isObject)(n)&&((0,E.assign)(e.config,n,{shallow:!1}),r=n,s=!0);break;case A.Consent:if((0,q.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,v.assign)(e.consent,n),{update:n}}(e,n);Re(e,A.Consent),r=t,s=!0}break;case A.Custom:(0,q.isObject)(n)&&(e.custom=(0,E.assign)(e.custom,n),Re(e,A.Custom),r=n,s=!0);break;case A.Destination:(0,q.isObject)(n)&&"code"in n&&(0,q.isObject)(n.code)&&(o=await async function(e,t){var n;const{code:o,config:r={},env:s={},before:i,next:a,cache:c,state:l}=t;if(!(0,y.isFunction)(o.push))return Fe({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=r||{init:!1};let d=i?{...u,before:i}:{...u};a&&(d={...d,next:a}),c&&(d={...d,cache:c}),void 0!==l&&void 0===d.state&&(d={...d,state:l});let p=d.id;if(!p)do{p=(0,y.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[p]||e.pending.destinations[p]);if(null==(n=d.require)?void 0:n.length){e.pending.destinations[p]=t,await de(e);const n=e.destinations[p];return n?Pe(e,void 0,{},{[p]:n}):Fe({ok:!0})}const f={...o,config:d,env:He(o.env,s)};return e.destinations[p]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),Pe(e,void 0,{},{[p]:f})}(e,n));break;case A.Globals:(0,q.isObject)(n)&&(e.globals=(0,E.assign)(e.globals,n),Re(e,A.Globals),r=n,s=!0);break;case A.Hook:if((0,q.isObject)(n)&&(0,E.isString)(n.name)&&(0,E.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case A.On:if((0,q.isObject)(n)&&(0,E.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!pe(e))return void ge();const o=e.on,r=o[t]||[],s=(0,b.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,qe(e,t,s)}(e,t,o)}break;case A.Ready:s=!0;break;case A.Run:o=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),e.trace=(0,E.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,E.assign)(e.consent,t.consent),Re(e,A.Consent)),t.user&&(e.user=(0,E.assign)(e.user,t.user),Re(e,A.User)),t.globals&&(e.globals=(0,E.assign)(e.config.globalsStatic||{},t.globals),Re(e,A.Globals)),t.custom&&(e.custom=(0,E.assign)(e.custom,t.custom),Re(e,A.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await de(e),await async function(e){if(pe(e))for(const t of ve){if(!ye(e,t))continue;const n=Oe(e,t);qe(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))ce(r)&&await xe(e,r,o,t,n)}else ge()}(e),await Pe(e)}(e,n),s=!0;break;case A.Session:s=!0;break;case A.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Ue(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 Ue(e.destinations,"destination",t),await Ue(e.transformers,"transformer",t),await Ue(e.stores,"store",t)}(e));break;case A.User:(0,q.isObject)(n)&&((0,E.assign)(e.user,n,{shallow:!1}),Re(e,A.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Fe({ok:!1})}return s&&(await async function(e,t,n,o){var r,s;if(!pe(e))return ge(),!0;e.seenEvents.add(String(t));let i=n||[];n||(i=e.on[t]||[]);const a=Oe(e,t,o);let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(r=o.config.require)?void 0:r.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(ce(o)?await xe(e,o,n,t,a)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:a})))}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:a});Ee(e,o,n,t,a)}});for(const[t,n]of Object.entries(e.sources))ce(n)&&(null==(s=n.queueOn)?void 0:s.length)&&await ae(e,n,t);const l=Object.values(e.sources).some(e=>{var t;return!ce(e)&&(null==(t=e.config.require)?void 0:t.length)});return(Object.keys(e.pending.destinations).length>0||l)&&await de(e),qe(e,t,i,o),!c}(e,t,void 0,r),o=await Pe(e)),o||Fe({ok:!0})}()}finally{i()}}function Ge(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Ve(e,t,n){var o,r,s,i,a,c;if(!t.name)throw new Error("Event name is required");const[l,u]=t.name.split(" ");if(!l||!u)throw new Error("Event name is invalid");const{timestamp:d=Date.now(),name:p=`${l} ${u}`,data:f={},context:g={},globals:h=e.globals,custom:v={},user:m=e.user,nested:y=[],consent:w=e.consent,id:b=(0,E.getSpanId)(),trigger:k="",entity:I=l,action:S=u,timing:C=0,source:q={type:"collector",schema:"4"}}=t,O=null!=(o=q.count)?o:e.count+=1,x=null!=(s=null!=(r=q.trace)?r:null==n?void 0:n._meta.trace)?s:e.trace,j={...q,count:O};void 0!==x&&(j.trace=x);const D=null!=(a=null!=(i=e.name)?i:q.platform)?a:"default",A=null!=(c=e.release)?c:"4.3.0-next-1783710078012";return j.release={...q.release,[D]:A},{name:p,data:f,context:g,globals:h,custom:v,user:m,nested:y,consent:w,id:b,trigger:k,entity:I,action:S,timestamp:d,timing:C,source:j}}function We(e,t){const n=(0,O.useHooks)(async(n,o={})=>await(0,O.tryCatchAsync)(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:l,preChain:u,include:d,exclude:p}=o;let f=c,g=n;const h=d||p?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,p):void 0,v=null!=a?a:(0,O.createIngest)(i||"unknown");if(l){const t=await(0,O.processEventMapping)(g,l,e);if(t.ignore)return Fe({ok:!0});if(l.consent&&!(0,O.getGrantedConsent)(l.consent,e.consent,t.event.consent))return Fe({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await re(e,e.transformers,u,g,v,f,i?`source.${i}.next`:void 0);if(null===n.event)return Fe({ok:!0});if(n.stopped)return n.respond&&(f=n.respond),Fe({ok:!0});if(n.respond&&(f=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=Ve(e,o,v);return Pe(e,r,{id:i,ingest:v,respond:f},h)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:Fe({ok:!0})}g=n.event}const m=function(e,t,n){return Ve(e,Ge(e,t),n)}(e,g,v),y=await Pe(e,m,{id:i,ingest:v,respond:f},h);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return y},t=>{if(t instanceof O.FatalError)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Fe({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id?t.id:"",{traceId:s,sourceId:i,parentEventId:a}=$(t,null==o?void 0:o.ingest,e),c=Date.now(),l=M(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:c,traceId:s,sourceId:i,parentEventId:a});l.inEvent=t,(0,O.emitStep)(e,l);try{const l=await n(t,o),u=Date.now(),d=M(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:u,traceId:s,sourceId:i,parentEventId:a});return d.durationMs=u-c,d.outEvent=l,(0,O.emitStep)(e,d),l}catch(t){const n=Date.now(),o=M(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n,traceId:s,sourceId:i,parentEventId:a});throw o.durationMs=n-c,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,O.emitStep)(e,o),t}}}function Le(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,s=null!=(n=e.lowWaterMark)?n:.8,i=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*s),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return i>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},i),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>r&&function(){if(c.size<=r)return;const e=c.size-a;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function Je(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=M(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,D.emitStep)(a,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?(0,D.compileMatcher)(e.match):()=>!0,ttl:e.ttl})),d=e=>`${r}:${e}`;function p(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const f=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),r=await o.get(n),s=(0,D.readCacheEnvelope)(r);if(void 0!==s){if(!("expired"in s))return l.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 l.inflight_dedups++,c(t,"hit"),i;l.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,D.wrapCacheEnvelope)(r,e),e),l.populates++}catch(e){g("set",t,e)}return r}finally{f.delete(n)}})();return f.set(n,a),a},async set(t,n,r){l.writes++,await e.set(t,n,r);const s=p(t,n);if(s)try{const e=1e3*s.ttl;await o.set(d(t),(0,D.wrapCacheEnvelope)(n,e),e)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(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 Ye(e,t,n){const o=`store.${n}`,r=(0,j.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,j.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,j.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=M(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},(0,j.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=M(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},(0,j.emitStep)(e,a),s}catch(r){const s=Date.now(),i=M(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,j.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=M(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},(0,j.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=M(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},(0,j.emitStep)(e,c)}catch(n){const r=Date.now(),s=M(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,j.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=M(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},(0,j.emitStep)(e,r);try{await i(t);const r=Date.now(),s=M(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},(0,j.emitStep)(e,s)}catch(r){const s=Date.now(),i=M(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,j.emitStep)(e,i),r}}}async function Qe(e){var t,n;const o=(0,m.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r={level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler},s=(0,m.createLogger)(r),i={...o.globalsStatic,...e.globals},a={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:i,hooks:e.hooks||{},observers:new Set,logger:s,on:{},queue:[],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 c,l;void 0!==e.name&&(a.name=e.name),void 0!==e.release&&(a.release=e.release),a.push=We(a,e=>Ge(a,e)),a.command=(c=a,l=Be,(0,x.useHooks)(async(e,t,n)=>await(0,x.tryCatchAsync)(async()=>await l(c,e,t,n),n=>{if(n instanceof x.FatalError)throw n;return c.status.failed++,c.logger.error("command failed",{command:e,data:t,error:n}),Fe({ok:!1})})(),"Command",c.hooks,c.logger)),a.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 Fe({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)}}(a);const u=e.stores||{};return a.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:s,env:i,reportError:J(e,"store",n,a)},l=await t(c);o[n]=l}const r=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){var i;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 c=null==(i=e[s].cache)?void 0:i.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${s}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of s){const s=r[t].cache;if(!s)continue;let i,a;void 0!==s.store?(i=o[s.store],a=s.store):(o.__cache||(o.__cache=Le()),i=o.__cache,a="__cache");const c=null!=(n=s.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=Je(o[t],{storeId:t,cacheConfig:s,cacheStore:i,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&Ye(e,n,t);return o}(a,u),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)}}}(u,a.stores,e),a.stores.__cache||(a.stores.__cache=Le()),a.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,i]of Object.entries(t))(null==(o=null==(n=i.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Ne(i);return r}(a,e.destinations||{}),a.transformers=await async function(e,t={}){var n,o,r,s,i,a,c,l;const u={};for(const[d,p]of Object.entries(t)){const{code:t,env:f={}}=p,g=(0,C.validateStepEntry)(p,"Transformer");if(!g.ok){e.logger.warn(`Transformer ${d} invalid (${g.code}): ${g.reason}. Skipping.`);continue}const{config:h}=Z(p,"before"),{config:v}=Z({...p,config:h},"next"),m=Object.keys(f).length>0?{...v,env:f}:v,{cache:y}=p,w=y?{...m,cache:y}:m,b=null!=(o=null==(n=p.config)?void 0:n.state)?o:p.state,k=void 0!==b&&void 0===w.state?{...w,state:b}:w,I=e.logger.scope("transformer").scope(d),S={collector:e,logger:I,id:d,ingest:(0,C.createIngest)(d),config:k,env:f,reportError:J(e,"transformer",d,I)},E=null!=t?t:e=>{const t=p.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 ${d}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await(0,C.processEventMapping)(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},q=await E(S);void 0!==p.before&&void 0===(null==(r=q.config)?void 0:r.before)&&(q.config={...null!=(s=q.config)?s:{},before:p.before}),void 0!==p.next&&void 0===(null==(i=q.config)?void 0:i.next)&&(q.config={...null!=(a=q.config)?a:{},next:p.next}),void 0!==b&&void 0===(null==(c=q.config)?void 0:c.state)&&(q.config={...null!=(l=q.config)?l:{},state:b}),u[d]=q}return u}(a,e.transformers||{}),a}async function Xe(e){e=e||{};const t=await Qe(e);await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await ue(e,r,s);if(!t)continue;const i=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...i?{require:[...i]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await(0,S.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof S.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,ce(n)&&await ae(e,n,t))}return await de(e),o}(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 Ze=async e=>{let t;return{get flow(){return t},trigger:(n,o)=>async n=>{var r,s,i,a,c,l,u,d,p;const f=o||{};if(f.url){const e=new URL(f.url);window.history.replaceState({},"",e.pathname+e.search)}if(f.referrer&&Object.defineProperty(document,"referrer",{value:f.referrer,configurable:!0}),f.sessionData){const e=f.sessionKey||"elbSessionId";localStorage.setItem(e,JSON.stringify(f.sessionData))}if(f.deviceId){const e=f.deviceKey||"elbDeviceId";localStorage.setItem(e,f.deviceId)}if(!t){const n=await Xe({...e,run:null==(r=e.run)||r});t={collector:n.collector,elb:n.elb};const o=f.sessionKey||(null==(c=null==(a=null==(i=null==(s=e.sources)?void 0:s.session)?void 0:i.config)?void 0:a.settings)?void 0:c.sessionKey)||"elbSessionId",g=f.deviceKey||(null==(p=null==(d=null==(u=null==(l=e.sources)?void 0:l.session)?void 0:u.config)?void 0:d.settings)?void 0:p.deviceKey)||"elbDeviceId";localStorage.removeItem(o),localStorage.removeItem(g),f.sessionData&&localStorage.setItem(o,JSON.stringify(f.sessionData)),f.deviceId&&localStorage.setItem(g,f.deviceId),e.consent&&await t.collector.command("consent",e.consent)}}}},et=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.localStorage;if(n.sessionData&&"object"==typeof n.sessionData){const e="string"==typeof n.sessionKey?n.sessionKey:"elbSessionId";o.setItem(e,JSON.stringify(n.sessionData))}if("string"==typeof n.deviceId){const e="string"==typeof n.deviceKey?n.deviceKey:"elbDeviceId";o.setItem(e,n.deviceId)}};//# 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:()=>p,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,{SettingsSchema:()=>u,settings:()=>d});var c=require("@walkeros/core/dev"),l=require("@walkeros/core/dev"),u=l.z.object({storage:l.z.boolean().default(!1).describe("Enable persistent storage for session/device IDs").optional(),consent:l.z.union([l.z.string(),l.z.array(l.z.string())]).describe("Consent key(s) required to enable storage mode").optional(),length:l.z.number().default(30).describe("Session timeout in minutes").optional(),pulse:l.z.boolean().default(!1).describe("Keep session alive on each event").optional(),sessionKey:l.z.string().default("elbSessionId").describe("Storage key for session ID").optional(),sessionStorage:l.z.enum(["local","session"]).default("local").describe("Storage type for session").optional(),deviceKey:l.z.string().default("elbDeviceId").describe("Storage key for device ID").optional(),deviceStorage:l.z.enum(["local","session"]).default("local").describe("Storage type for device").optional(),deviceAge:l.z.number().default(30).describe("Device ID age in days").optional(),cb:l.z.any().describe("Custom session callback function or false to disable").optional(),clickIds:l.z.array(l.ClickIdEntrySchema).describe("Custom click-ID registry. Entries with a `param` matching a default override the platform name in place; new params append to the end of the priority list.").optional()}),d=(0,c.zodToSchema)(u),p={};s(p,{createTrigger:()=>Ze,step:()=>f,trigger:()=>et});var f={};s(f,{newMarketingSession:()=>g,returningVisitor:()=>h});var g={title:"New marketing session",description:"A visit with UTM parameters starts a new session and emits walker user, session, and session start calls.",trigger:{type:"load",options:{url:"https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=winter-sale"}},in:{storage:!0},out:[["elb","user",{session:"s3ss10n-id",device:"d3v1c3-id"}],["elb","session",{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}],["elb",{name:"session start",data:{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}}]]},h={title:"Returning visitor",description:"A returning visit with a google referrer reuses the stored device id and increments the session count.",trigger:{type:"load",options:{referrer:"https://google.com"}},in:{storage:!0},out:[["elb","user",{session:"n3w-s3ss10n",device:"d3v1c3-id"}],["elb","session",{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}],["elb",{name:"session start",data:{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}}]]},v=require("@walkeros/core"),m=require("@walkeros/core"),y=require("@walkeros/core"),w=(require("@walkeros/core"),require("@walkeros/core")),b=require("@walkeros/core"),k=require("@walkeros/core"),I=require("@walkeros/core"),S=require("@walkeros/core"),C=require("@walkeros/core"),E=require("@walkeros/core"),q=require("@walkeros/core"),O=require("@walkeros/core"),x=require("@walkeros/core"),j=require("@walkeros/core"),D=require("@walkeros/core"),A={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function $(e,t,n){var o,r,s;return{traceId:null!=(s=null!=(r=null==(o=e.source)?void 0:o.trace)?r:null==t?void 0:t._meta.trace)?s:n.trace,sourceId:null==t?void 0:t._meta.path[0],parentEventId:null==t?void 0:t._meta.parentEventId}}function M(e,t){var n;const o=e.status.startedAt,r={flowId:null!=(n=e.name)?n:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-o};return t.traceId&&(r.traceId=t.traceId),t.sourceId&&(r.sourceId=t.sourceId),t.parentEventId&&(r.parentEventId=t.parentEventId),r}function _(e){return"object"==typeof e&&null!==e}function T(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(T(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:T(s,t,n+1);return r}function P(e){const t=[],n=[],{simulation:o,...r}=e,s=T(r,new WeakMap,0);for(const e of o){const o=(0,w.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(!_(t)){a=!1;break}i=t}const c=o[o.length-1];if(!a||!(c in i)){n.push(r);continue}const l=i[c];"function"==typeof l?i[c]=function(...e){return t.push({fn:r,args:e,ts:Date.now()}),l.apply(this,e)}:n.push(r)}return{wrappedEnv:s,calls:t,unresolved:n}}function z(e,t){try{return e[t]}catch(e){return"[unreadable]"}}function K(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(z(r,t),o+1);s=e}else s=function(e){try{return String(e)}catch(e){return"[object]"}}(r)}catch(e){s="[unreadable]"}return t.delete(r),s};return e.map(e=>n(e,0))}function F(e){return e.map(e=>({fn:e.fn,args:K(e.args),ts:e.ts}))}function N(e,t,n,o){var r;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(r=n.onOverflow)?r:"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var H=new WeakMap;function U(e,t,n,o){H.get(e)||(H.set(e,!0),t.warn(n,o))}function R(e){H.delete(e)}var B=()=>Date.now();function G(e){var t,n;if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:null!=(t=e.threshold)?t:5,cooldown:null!=(n=e.cooldown)?n:3e4}}function V(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=B()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=B()+r)))}function W(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 L(e,t,n,o){var r;e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(null!=(r=s[n])?r:0)+o,s[n]}function J(e,t,n,o,r){const s=(0,I.stepId)(t,n);return(t,i)=>{var a;try{if(i)return r?function(e,t,n,o,r,s){var i;const a=t.dlq=t.dlq||[],c={max:null!=(i=t.config.dlqMax)?i:100},l=N(a,[o,r],c);if(l.dropped>0){const t=L(e.status,(0,I.stepId)("destination",n),"dlq",l.dropped);U(a,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:c.max,droppedCount:t})}else a.length<c.max&&R(a);const u=W(e,n);u.failed++,u.dlqSize=a.length,e.status.failed++;const d=G(t.config.breaker);if(d){const o=t.config.id||n;V(e.status.breakers,(0,I.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]=(null!=(a=e.status.connectionErrors[s])?a:0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch(e){}}}function Y(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function Q(e,t){return e?t.stores[e]:t.stores.__cache}function X(e){var t;const n={};for(const[o,r]of Object.entries(e)){const e=null==(t=r.config)?void 0:t.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?n[o]={next:e}:n[o]={}}return n}function Z(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 ee(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 te(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,C.createIngest)(n),config:t.config,env:se(t.config.env),reportError:J(e,"transformer",n,r)};r.debug("init");const i=await(0,C.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:(null==i?void 0:i.env)||t.config.env,init:!0},r.debug("init done")}return!0}async function ne(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:{...se(t.config.env),...s?{respond:s}:{}},reportError:J(e,"transformer",n,a)};a.debug("push",{event:o.name});const l="string"==typeof o.id?o.id:"",{traceId:u,sourceId:d,parentEventId:p}=$(o,r,e),f=Date.now(),g=M(e,{stepId:(0,C.stepId)("transformer",n),stepType:"transformer",phase:"in",eventId:l,now:f,traceId:u,sourceId:d,parentEventId:p});g.inEvent=o,(0,C.emitStep)(e,g);try{const r=await(0,C.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=M(e,{stepId:(0,C.stepId)("transformer",n),stepType:"transformer",phase:"out",eventId:l,now:s,traceId:u,sourceId:d,parentEventId:p});return i.durationMs=s-f,i.outEvent=r,(0,C.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=M(e,{stepId:(0,C.stepId)("transformer",n),stepType:"transformer",phase:"error",eventId:l,now:o,traceId:u,sourceId:d,parentEventId:p});throw r.durationMs=o-f,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,C.emitStep)(e,r),t}}function oe(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:(0,C.createIngest)(t)}async function re(e,t,n,o,r,s,i){var a,c,l,u,d,p,f,g,h;r||(r=(0,C.createIngest)(null!=(a=n[0])?a:"chain")),i&&r._meta&&(r._meta.chainPath=i);let v=o,m=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:m};if(r&&r._meta&&(r._meta.hops++,r._meta.path.push(o)),!await(0,C.tryCatchAsync)(te,t=>{if(t instanceof C.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:m};if(i&&void 0!==(null==(l=null==(c=s.config)?void 0:c.chainMocks)?void 0:l[i])){const t=s.config.chainMocks[i];e.logger.scope(`transformer:${s.type||"unknown"}`).debug("chainMock",{chain:i}),v=t;continue}if(void 0!==(null==(u=s.config)?void 0:u.mock)){e.logger.scope(`transformer:${s.type||"unknown"}`).debug("mock"),v=s.config.mock;continue}if(null==(d=s.config)?void 0:d.disabled)continue;const a=null==(p=s.config)?void 0:p.cache,y=a?(0,C.compileCache)(a):void 0,w=y?Y(y,e):void 0,b=(null==(f=s.config)?void 0:f.state)?(0,C.compileState)(s.config.state):void 0,k=null==b?void 0:b.filter(e=>"get"===e.mode),I=null==b?void 0:b.filter(e=>"set"===e.mode),S=async t=>I&&0!==I.length?(0,C.applyState)(I,t=>Q(t,e),t,e):t;let E;if(y&&w){const e=(0,C.buildCacheContext)(r,v),t=await(0,C.checkCache)(y,w,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(v=t.value,y.stop)return{event:v,respond:m,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(E={key:t.key,ttl:t.rule.ttl})}const q=s.config.before;if(q){const n=(0,C.getNextSteps)(q,(0,C.buildCacheContext)(r,v));if(1===n.length){const o=ee(n[0],X(t));if(o.length>0){const n=await re(e,t,o,v,r,m,i);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:m};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(h=n.respond)?h:m,stopped:!0};n.respond&&(m=n.respond),v=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),v,oe(r,n),void 0,i)))}k&&k.length>0&&(v=await(0,C.applyState)(k,t=>Q(t,e),v,e));const O=await(0,C.tryCatchAsync)(ne,t=>(e.logger.scope(`transformer:${s.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,s,o,v,r,m);if(!1===O)return{event:null,respond:m};if(Array.isArray(O)){const s=n.slice(n.indexOf(o)+1),a=await Promise.all(O.map(async n=>{const o=await S(n.event||v),a=oe(r,"unknown");if(n.next){const r=(0,C.getNextSteps)(n.next,(0,C.buildCacheContext)(a,o));if(0===r.length)return{event:o,respond:m};if(1===r.length){const n=ee(r[0],X(t));return n.length>0?re(e,t,n,o,a,m,i):{event:o,respond:m}}return(await Promise.all(r.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),o,oe(a,n),void 0,i)))).map(e=>({event:e.event,respond:void 0}))}return s.length>0?re(e,t,s,o,a,m,i):{event:o,respond:m}}));let c=m;const l=[];for(const e of a.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=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:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(O&&"object"==typeof O){const{event:n,respond:o,next:s}=O;if(o&&(m=o),void 0!==s){const o=await S(n||v),a=(0,C.getNextSteps)(s,(0,C.buildCacheContext)(r,o));if(0===a.length){v=o;continue}if(1===a.length){const n=ee(a[0],X(t));return n.length>0?re(e,t,n,o,r,m,i):(e.logger.warn(`Branch target not found: ${JSON.stringify(s)}`),{event:null,respond:m})}return await Promise.all(a.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),o,oe(r,n),void 0,i))),{event:null,respond:void 0}}n&&(v=n)}I&&I.length>0&&(v=await(0,C.applyState)(I,t=>Q(t,e),v,e)),E&&w&&(0,C.storeCache)(w,E.key,v,E.ttl);const x=s.config.next,j="string"==typeof x||Array.isArray(x)&&x.every(e=>"string"==typeof e),D=void 0!==x&&!j;if((!O||"object"==typeof O&&!O.next)&&D){const n=(0,C.getNextSteps)(s.config.next,(0,C.buildCacheContext)(r,v));if(1===n.length){const o=ee(n[0],X(t));return o.length>0?re(e,t,o,v,r,m,i):{event:v,respond:m}}return n.length>1?(await Promise.all(n.map(n=>(0,C.tryCatchAsync)(re,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ee(n,X(t)),v,oe(r,n),void 0,i))),{event:null,respond:void 0}):{event:v,respond:m}}}return{event:v,respond:m}}function se(e){return e&&(0,C.isObject)(e)?e:{}}function ie(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function ae(e,t,n){var o,r;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const s=t.queueOn;t.queueOn=[];const i=n||(null==(r=t.config)?void 0:r.id)||"unknown";for(const{type:n,data:o}of s)me(n)&&!Ie(e,t,n)||(await(0,S.tryCatchAsync)(t.on,t=>{if(t instanceof S.FatalError)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:i,type:n,error:t})})(n,o),me(n)&&ke(e,t,n))}function ce(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}function le(e){return"object"==typeof e&&null!==e}async function ue(e,t,n){var o,r;const{code:s,config:i={},env:a={},primary:c,next:l,before:u,cache:d}=n,p=null!=(o=i.state)?o:n.state,f=p?(0,S.compileState)(p):void 0,g=d,h=g?(0,S.compileCache)({...g,stop:null==(r=g.stop)||r}):void 0,v=ie(l)?ee(l,X(e.transformers)):void 0,m=ie(u)?ee(u,X(e.transformers)):void 0,y=a.push,w=null!=y?y:e.push,b=Boolean(y),k=async(n,o,r)=>{var s;let a;const c=null!=m?m:void 0!==u?(()=>{const t=(0,S.getNextSteps)(u,(0,S.buildCacheContext)(r.ingest));return 0===t.length?[]:ee(1===t.length?t[0]:t,X(e.transformers))})():[];let d=[n];if(c.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await re(e,e.transformers,c,n,r.ingest,r.respond,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),d=Array.isArray(o.event)?o.event:[o.event]}if(h){const t=Y(h,e);if(t){const n=(0,S.buildCacheContext)(r.ingest),o=await(0,S.checkCache)(h,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&h.stop){let t=o.value;return o.rule.update&&(t=await(0,S.applyUpdate)(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(s=r.respond)||s.call(r,t),{ok:!0}}if("MISS"===o.status&&h.stop&&r.respond){const s=r.respond,i=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{(0,S.storeCache)(t,l,n,u),i?a=(async()=>{const t=await(0,S.applyUpdate)(n,i,c,e);s(t)})():s(n)};r.respond=d}"MISS"!==o.status||h.stop||(0,S.storeCache)(t,o.key,!0,o.rule.ttl)}}}const p=v?{kind:"single",preChain:v}:void 0!==l?(()=>{const t=(0,S.getNextSteps)(l,(0,S.buildCacheContext)(r.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ee(t[0],X(e.transformers))}:{kind:"many",branches:t.map(t=>ee(t,X(e.transformers)))}})():{kind:"single",preChain:[]};!b&&f&&f.length>0&&(d=await Promise.all(d.map(t=>(0,S.applyState)(f,t=>Q(t,e),t,e))));let g={ok:!0};for(const n of d)"many"===p.kind?(await Promise.all(p.branches.map((s,a)=>(0,S.tryCatchAsync)(async()=>b?w(n):w(n,{...o,id:t,ingest:oe(r.ingest,`${t}.${a}`),respond:void 0,mapping:i,preChain:s}),t=>(e.logger.scope("source:many").error(`many branch ${a} failed`,{error:t}),{ok:!0}))())),g={ok:!0}):g=b?await w(n):await w(n,{...o,id:t,ingest:r.ingest,respond:r.respond,mapping:i,preChain:p.preChain});return a&&await a,g},I=async n=>{const o=(0,S.createIngest)(t),r=(0,S.parseTraceparent)(function(e){var t;if(!le(e))return;const n=e.headers;if(le(n)){if("get"in(o=n)&&"function"==typeof o.get)return null!=(t=n.get("traceparent"))?t:void 0;if("traceparent"in n)return n.traceparent;for(const e of Object.keys(n))if("traceparent"===e.toLowerCase())return n[e]}var o}(n));if(r&&(o._meta.trace=r.trace,o._meta.parentEventId=r.parentSpan),!i.ingest||void 0===n)return o;const s=await(0,S.getMappingValue)(n,i.ingest,{collector:e});return{...o,...s,_meta:o._meta}},C=e.logger.scope("source").scope(t),E={command:e.command,sources:e.sources,elb:e.elb,logger:C,...a,push:async(e,n={})=>{const o={ingest:(0,S.createIngest)(t),respond:void 0};return k(e,n,o)}},q={collector:e,logger:C,id:t,config:i,env:E,withScope:async(e,t,n)=>{const o={ingest:await I(e),respond:t};return n({...E,push:(e,t={})=>k(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:J(e,"source",t,C)},O=await(0,S.tryCatchAsync)(s,n=>{if(n instanceof S.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(q);if(!O)return;const x=O.type||"unknown",j=e.logger.scope(x).scope(t);return E.logger=j,c&&(O.config={...O.config,primary:c}),O}async function de(e){var t;for(const[t,n]of Object.entries(e.sources)){if(ce(n))continue;const o=n.config.require;if(!(null==o?void 0:o.length))continue;const r=o.filter(t=>!we(e,t));r.length!==o.length&&(n.config.require=r,ce(n)&&await ae(e,n,t))}for(const[n,o]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[n]||e.destinations[n])continue;const r=null==(t=o.config)?void 0:t.require;if(!r)continue;const s=r.filter(t=>!we(e,t));if(o.config&&(o.config.require=s),s.length>0)continue;delete e.pending.destinations[n];const i=Ne(o);!1!==i.config.queue&&(i.queuePush=[...e.queue]),e.destinations[n]=i}}function pe(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 fe=!1;function ge(){fe||(fe=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function he(e,t,n,o){if(n instanceof b.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var ve=[A.Consent,A.User,A.Globals,A.Custom];function me(e){return ve.includes(e)}function ye(e,t){switch(t){case A.Consent:return Object.keys(e.consent).length>0;case A.User:return Object.keys(e.user).length>0;case A.Globals:return Object.keys(e.globals).length>0;case A.Custom:return Object.keys(e.custom).length>0;default:return!1}}function we(e,t){switch(t){case A.Consent:case A.User:case A.Globals:case A.Custom:return ye(e,t);case A.Run:case A.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function be(e,t){var n;return null!=(n=e.cellVersion[String(t)])?n:0}function ke(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=be(e,n)}function Ie(e,t,n){return e.allowed&&be(e,n)>function(e,t,n){const o=e.delivery.get(t),r=null==o?void 0:o[String(n)];return void 0===r?-1:r}(e,t,n)}function Se(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 Ce(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Ee(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:He(t.env,t.config.env),reportError:J(e,"destination",n,i,t)};(0,k.tryCatch)(t.on,t=>he(e,"destination",t,{destId:n,type:o}))(o,a)}function qe(e,t,n,o){if(!pe(e))return void ge();const r=Oe(e,t,o);if(n.length)switch(t){case A.Consent:!function(e,t,n){const o=n||e.consent,r=Ce(e,A.Consent);t.forEach(t=>{Ie(e,t,A.Consent)&&Se(e,t,A.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,k.tryCatch)(t[n],t=>he(e,"consent",t,{key:n}))(o,r)}),ke(e,t,A.Consent))})}(e,n,o);break;case A.Ready:!function(e,t){if(!e.allowed)return;const n=Ce(e,A.Ready);t.forEach(t=>{(0,k.tryCatch)(t,t=>he(e,"ready",t))(void 0,n)})}(e,n);break;case A.Run:!function(e,t){if(!e.allowed)return;const n=Ce(e,A.Run);t.forEach(t=>{(0,k.tryCatch)(t,t=>he(e,"run",t))(void 0,n)})}(e,n);break;case A.Session:!function(e,t){if(!e.session)return;const n=Ce(e,A.Session);t.forEach(t=>{(0,k.tryCatch)(t,t=>he(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Ce(e,t),s=me(t);n.forEach(n=>{"function"==typeof n&&(s&&!Ie(e,n,t)||s&&!Se(e,n,t)||((0,k.tryCatch)(n,n=>he(e,"generic",n,{type:t}))(r,o),s&&ke(e,n,t)))});break}}}function Oe(e,t,n){switch(t){case A.Consent:return n||e.consent;case A.Session:return e.session;case A.User:return n||e.user;case A.Custom:return n||e.custom;case A.Globals:return n||e.globals;case A.Config:return n||e.config;default:return}}async function xe(e,t,n,o,r){if(!t.on)return!1;if(me(o)&&!Ie(e,t,o))return!1;if(me(o)&&!Se(e,t,o))return!1;const s=await(0,k.tryCatchAsync)(t.on,t=>he(e,"source",t,{sourceId:n,type:o}))(o,r);return me(o)&&ke(e,t,o),!1===s}function je(e){return"number"==typeof e&&e>0?e:1e4}var De=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Ae(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new De(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var $e=Object.freeze({batched:!0});function Me(e){return e===$e}function _e(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Te(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ee(e,t);if("string"==typeof e)return ee(e,t);const o=(0,y.getNextSteps)(e,(0,y.buildCacheContext)(n));return 0===o.length?[]:1===o.length?ee(o[0],t):ee(o,t)}async function Pe(e,t,n={},o){var r,s,i,a,c,l;const{allowed:u,consent:d,globals:p,user:f}=e;if(!u)return Fe({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=N(e.queue,t,{max:n});if(o.dropped>0){const t=L(e.status,(0,y.stepId)("collector"),"queue",o.dropped);U(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&R(e.queue);e.status.in++}o||(o=e.destinations);const g=e.transformers?X(e.transformers):{},h=await Promise.all(Object.entries(o||{}).map(async([o,r])=>{var s,i,a,c,l;if(r.config.disabled)return{id:o,destination:r,skipped:!0};const u=r.config.id||o,h=(0,y.stepId)("destination",u),v=G(r.config.breaker);if(v&&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=B();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,h,v.cooldown))return{id:o,destination:r,skipped:!0};const m=t=>{v&&V(e.status.breakers,h,t,v.threshold,v.cooldown)},w=()=>{v&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,h)};let b=(r.queuePush||[]).map(e=>({...e,consent:d}));r.queuePush=[],t&&b.push((0,y.clone)(t));const k=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,y.createIngest)("unknown");if(!b.length&&!(null==(s=r.queueOn)?void 0:s.length))return w(),{id:o,destination:r,skipped:!0};if(!b.length&&(null==(i=r.queueOn)?void 0:i.length)){if(!(0,y.getGrantedConsent)(r.config.consent,d))return w(),{id:o,destination:r,skipped:!0};let t=!1;try{t=await ze(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)}),m("transport-failure")}return w(),{id:o,destination:r,skipped:!t}}const I=[],S=b.filter(t=>{const n=(0,y.getGrantedConsent)(r.config.consent,d,t.consent);if(n)return t.consent=n,I.push(t),!1;const s=M(e,{stepId:(0,y.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...$(t,k,e)});return s.skipReason="consent",d&&(s.consent={...d}),r.config.consent&&(s.meta={required:{...r.config.consent}}),(0,y.emitStep)(e,s),!0});if(S.length>0){const t=r.queuePush,n=r.config.id||o,s={max:null!=(a=r.config.queueMax)?a:1e3};let i=0;for(const e of S)i+=N(t,e,s).dropped;if(i>0){W(e,n);const o=L(e.status,(0,y.stepId)("destination",n),"queue",i);U(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&&R(t)}if(!I.length)return w(),{id:o,destination:r,queue:b};let C,E,q=!1;try{q=await ze(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)}),m("transport-failure")}if(!q)return w(),{id:o,destination:r,queue:b};r.dlq||(r.dlq=[]);const O=Te(r.config.before,g,k),x=r.config.next,j=null==(c=r.config)?void 0:c.cache,D=j?(0,y.compileCache)(j):void 0,A=D?Y(D,e):void 0,_=(null==(l=r.config)?void 0:l.state)?(0,y.compileState)(r.config.state):void 0,T=null==_?void 0:_.filter(e=>"get"===e.mode),P=null==_?void 0:_.filter(e=>"set"===e.mode);let z=0,K=0;return await Promise.all(I.map(async t=>{let s;if(t.globals=(0,y.assign)(p,t.globals),t.user=(0,y.assign)(f,t.user),(null==D?void 0:D.stop)&&A){const e=(0,y.buildCacheContext)(k,t),n=await(0,y.checkCache)(D,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}let i=t,a=n.respond;if(O.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const r=await re(e,e.transformers,O,t,k,n.respond,`destination.${o}.before`);if(null===r.event)return t;r.respond&&(a=r.respond),i=Array.isArray(r.event)?r.event[0]:r.event}if(D&&!D.stop&&A){const e=(0,y.buildCacheContext)(k,i),n=await(0,y.checkCache)(D,A,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(s={key:n.key,ttl:n.rule.ttl})}T&&T.length>0&&i&&(i=await(0,y.applyState)(T,t=>Q(t,e),i,e));const c=Date.now();let l=!1;const u=await(0,y.tryCatchAsync)(Ke,t=>{var n;const s=r.type||"unknown";e.logger.scope(s).error("Push failed",{error:t,event:i.name}),C=t,l=!0;const a=r.dlq,c=r.config.id||o,u={max:null!=(n=r.config.dlqMax)?n:100},d=N(a,[i,t],u);if(d.dropped>0){W(e,c);const t=L(e.status,(0,y.stepId)("destination",c),"dlq",d.dropped);U(a,e.logger.scope(r.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:c,cap:u.max,droppedCount:t})}else a.length<u.max&&R(a)})(e,r,o,i,k,a);if(z+=Date.now()-c,s&&A&&void 0===r.config.mock&&(0,y.storeCache)(A,s.key,null==u||u,s.ttl),!l&&!Me(u)&&P&&P.length>0&&i&&(i=await(0,y.applyState)(P,t=>Q(t,e),i,e)),void 0===u||Me(u)||(E=u),Me(u)&&K++,!l&&x){void 0!==u&&(k._response=u);const t=Te(x,g,k);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await re(e,e.transformers,t,i,k,a,`destination.${o}.next`);n.respond&&(a=n.respond)}}return t})),{id:o,destination:r,error:C,response:E,totalDuration:z,batchedCount:K,allowedCount:I.length,canonicalId:u,breakerConfig:v}})),v={},m={},w={};for(const t of h){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};W(e,t.id);const u=e.status.destinations[t.id],d=Date.now();u.queuePushSize=null!=(s=null==(r=n.queuePush)?void 0:r.length)?s:0,u.dlqSize=null!=(a=null==(i=n.dlq)?void 0:i.length)?a:0;const p=t.breakerConfig,f=t.canonicalId?(0,y.stepId)("destination",t.canonicalId):void 0,g=t=>{p&&f&&V(e.status.breakers,f,t,p.threshold,p.cooldown)};if(t.error)o.error=t.error,w[t.id]=o,u.failed++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.failed++,g("transport-failure");else if(t.queue&&t.queue.length)m[t.id]=o;else{const n=null!=(c=t.batchedCount)?c:0,r=null!=(l=t.allowedCount)?l:0;(Math.max(0,r-n)>0||0===r)&&(v[t.id]=o,u.count++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.out++,g("success"))}}return Fe({event:t,...Object.keys(v).length&&{done:v},...Object.keys(m).length&&{queued:m},...Object.keys(w).length&&{failed:w}})}async function ze(e,t,n,o=!1){var r;if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const s=t.type||"unknown",i=e.logger.scope(s),a={collector:e,logger:i,id:n,config:t.config,env:He(t.env,t.config.env),reportError:J(e,"destination",n,i,t)};i.debug("init");const c=Date.now();let l;(0,y.emitStep)(e,M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"init",eventId:"",now:c}));try{l=await(0,y.useHooks)(t.init,"DestinationInit",e.hooks,e.logger)(a)}catch(t){const o=Date.now(),r=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-c,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,y.emitStep)(e,r),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(r=t.queueOn)?void 0:r.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)Ee(e,t,n,r,s)}i.debug("init done")}return!0}async function Ke(e,t,n,o,r,s){var i,a,c,l,u,d,p,f;const{config:g}=t,h=await(0,y.processEventMapping)(o,g,e);if(h.ignore)return!1;const v=t.type||"unknown",m=e.logger.scope(v),w={collector:e,logger:m,id:n,config:g,data:h.data,rule:h.mapping,ingest:r,env:{...He(t.env,g.env),...s?{respond:s}:{}},reportError:J(e,"destination",n,m,t)};if(void 0!==g.mock)return m.debug("mock",{event:h.event.name}),g.mock;const b=h.mapping,k=void 0!==(null==b?void 0:b.batch),I=k?h.mappingKey||"* *":" batch-all";if((k||void 0!==g.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[I]){const o={key:I,entries:[],events:[],data:[]},r=_e(null==b?void 0:b.batch),s=_e(g.batch),p=null!=(a=null!=(i=r.wait)?i:s.wait)?a:3e4,f=null!=(l=null!=(c=r.size)?c:s.size)?l:1e3,h=null!=(d=null!=(u=r.age)?u:s.age)?d:3e4,v=He(t.env,g.env),w=(0,y.debounce)(async()=>{var o,r;const s=t.batches[I],i=s.batched;if(0===i.entries.length)return;const a={key:i.key,entries:i.entries,events:i.events,data:i.data};i.entries=[],i.events=[],i.data=[];const c=a.entries[0],{traceId:l,sourceId:u,parentEventId:d}=$(c.event,c.ingest,e),p={collector:e,logger:m,id:n,config:g,data:void 0,rule:s.isDefault?void 0:c.rule,ingest:c.ingest,env:{...v,...c.respond?{respond:c.respond}:{}},reportError:J(e,"destination",n,m,t)};m.debug("push batch",{events:a.entries.length});const f=t.config.id||n,h=W(e,f),w=G(t.config.breaker),b=(0,y.stepId)("destination",f),k=t=>{w&&V(e.status.breakers,b,t,w.threshold,w.cooldown)},S=Date.now(),C=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"flush",eventId:"",now:S,traceId:l,sourceId:u,parentEventId:d});C.batch={size:a.entries.length,index:0},(0,y.emitStep)(e,C);const E=n=>{var o;const r=t.dlq=t.dlq||[],s={max:null!=(o=t.config.dlqMax)?o:100};let i=0;for(const e of n)i+=N(r,e,s).dropped;if(i>0){const t=L(e.status,(0,y.stepId)("destination",f),"dlq",i);U(r,m,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:f,cap:s.max,droppedCount:t})}else r.length<s.max&&R(r);h.failed+=n.length,h.dlqSize=r.length,e.status.failed+=n.length};let q=a.entries.length;const O=je(g.timeout),x=await(0,y.tryCatchAsync)((o,r)=>Ae(Promise.resolve((0,y.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),O,`Destination "${n}" batch delivery timed out after ${O}ms`),t=>{q=0;const o=Date.now(),r=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"error",eventId:"",now:o,traceId:l,sourceId:u,parentEventId:d});r.durationMs=o-S,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},r.batch={size:a.entries.length,index:0},(0,y.emitStep)(e,r),E(a.entries.map(e=>[e.event,t])),k("transport-failure"),m.error("Push batch failed",{error:t instanceof Error?t.message:String(t),entries:a.entries.length})})(a,p);if((0,y.isObject)(j=x)&&Array.isArray(j.failed)&&x.failed.length>0){const e=[],t=new Set;for(const n of x.failed){const r=a.entries[n.index];r&&!t.has(n.index)&&(t.add(n.index),e.push([r.event,null!=(o=n.error)?o:new Error(`Push batch entry ${n.index} failed (no per-row error provided)`)]))}e.length>0&&(E(e),q=Math.max(0,a.entries.length-e.length),m.error("Push batch partial failure",{failed:e.length,delivered:q,entries:a.entries.length}))}var j;m.debug("push batch done"),h.inFlightBatch=Math.max(0,(null!=(r=h.inFlightBatch)?r:0)-a.entries.length),q>0&&(h.count+=q,h.lastAt=Date.now(),e.status.out+=q,k("success"))},{wait:p,size:f,age:h});t.batches[I]={batched:o,isDefault:!k,batchFn:()=>{w()},flush:async()=>{await w.flush()}}}const f=t.batches[I];f.batched.entries.push({event:h.event,ingest:r,respond:s,rule:b,data:h.data}),f.batched.events.push(h.event),(0,y.isDefined)(h.data)&&f.batched.data.push(h.data);const v="string"==typeof h.event.id?h.event.id:"",w=$(o,r,e),S=Date.now(),C=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"in",eventId:v,now:S,traceId:w.traceId,sourceId:w.sourceId,parentEventId:w.parentEventId});h.mappingKey&&(C.mappingKey=h.mappingKey),h.event.consent&&(C.consent={...h.event.consent}),C.inEvent=h.event,(0,y.emitStep)(e,C);const E=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"out",eventId:v,now:S,traceId:w.traceId,sourceId:w.sourceId,parentEventId:w.parentEventId});h.mappingKey&&(E.mappingKey=h.mappingKey),E.outEvent=h.event,E.batch={size:f.batched.entries.length,index:f.batched.entries.length-1},(0,y.emitStep)(e,E);const q=t.config.id||n,O=W(e,q);return O.inFlightBatch=(null!=(p=O.inFlightBatch)?p:0)+1,f.batchFn(),$e}{let s;if(m.debug("push",{event:h.event.name}),"trace"===(null==(f=e.observeLevel)?void 0:f.call(e))&&Array.isArray(t.calls)&&t.calls.length>0){const e=P({...w.env,simulation:t.calls});w.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[y.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const i="string"==typeof h.event.id?h.event.id:"",{traceId:a,sourceId:c,parentEventId:l}=$(o,r,e),u=Date.now(),d=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"in",eventId:i,now:u,traceId:a,sourceId:c,parentEventId:l});h.mappingKey&&(d.mappingKey=h.mappingKey),h.event.consent&&(d.consent={...h.event.consent}),d.inEvent=h.event,(0,y.emitStep)(e,d);try{const o=je(g.timeout),r=await Ae(Promise.resolve((0,y.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(h.event,w)),o,`Destination "${n}" delivery timed out after ${o}ms`),d=Date.now(),p=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"out",eventId:i,now:d,traceId:a,sourceId:c,parentEventId:l});return p.durationMs=d-u,p.outEvent=h.event,s&&s.length>0&&(p.calls=F(s)),(0,y.isDefined)(r)&&(p.meta={...p.meta,response:r}),h.mappingKey&&(p.mappingKey=h.mappingKey),(0,y.emitStep)(e,p),m.debug("push done"),r}catch(t){const o=Date.now(),r=M(e,{stepId:(0,y.stepId)("destination",n),stepType:"destination",phase:"error",eventId:i,now:o,traceId:a,sourceId:c,parentEventId:l});throw r.durationMs=o-u,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s&&s.length>0&&(r.calls=F(s)),h.mappingKey&&(r.mappingKey=h.mappingKey),(0,y.emitStep)(e,r),t}}}function Fe(e){return{ok:!(null==e?void 0:e.failed),...e}}function Ne(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=Z(e,"before"),{config:a}=Z({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const l=He(t.env,o);return{...t,config:c,env:l}}function He(e,t){return e||t?t?e&&(0,y.isObject)(e)&&(0,y.isObject)(t)?{...e,...t}:t:e:{}}async function Ue(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var r;const s=o.destroy;if(!s)return;const i=o.type||"unknown",a=n.scope(i),c={id:e,config:o.config,env:null!=(r=o.env)?r:{},logger:a};let l;try{await Promise.race([s(c),new Promise((n,o)=>{l=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){a.error(`${t} '${e}' destroy failed: ${n}`)}finally{l&&clearTimeout(l)}});await Promise.allSettled(o)}function Re(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Be(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 A.Config:(0,q.isObject)(n)&&((0,E.assign)(e.config,n,{shallow:!1}),r=n,s=!0);break;case A.Consent:if((0,q.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,v.assign)(e.consent,n),{update:n}}(e,n);Re(e,A.Consent),r=t,s=!0}break;case A.Custom:(0,q.isObject)(n)&&(e.custom=(0,E.assign)(e.custom,n),Re(e,A.Custom),r=n,s=!0);break;case A.Destination:(0,q.isObject)(n)&&"code"in n&&(0,q.isObject)(n.code)&&(o=await async function(e,t){var n;const{code:o,config:r={},env:s={},before:i,next:a,cache:c,state:l}=t;if(!(0,y.isFunction)(o.push))return Fe({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=r||{init:!1};let d=i?{...u,before:i}:{...u};a&&(d={...d,next:a}),c&&(d={...d,cache:c}),void 0!==l&&void 0===d.state&&(d={...d,state:l});let p=d.id;if(!p)do{p=(0,y.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[p]||e.pending.destinations[p]);if(null==(n=d.require)?void 0:n.length){e.pending.destinations[p]=t,await de(e);const n=e.destinations[p];return n?Pe(e,void 0,{},{[p]:n}):Fe({ok:!0})}const f={...o,config:d,env:He(o.env,s)};return e.destinations[p]=f,!1!==f.config.queue&&(f.queuePush=[...e.queue]),Pe(e,void 0,{},{[p]:f})}(e,n));break;case A.Globals:(0,q.isObject)(n)&&(e.globals=(0,E.assign)(e.globals,n),Re(e,A.Globals),r=n,s=!0);break;case A.Hook:if((0,q.isObject)(n)&&(0,E.isString)(n.name)&&(0,E.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case A.On:if((0,q.isObject)(n)&&(0,E.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!pe(e))return void ge();const o=e.on,r=o[t]||[],s=(0,b.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,qe(e,t,s)}(e,t,o)}break;case A.Ready:s=!0;break;case A.Run:o=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),e.trace=(0,E.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,E.assign)(e.consent,t.consent),Re(e,A.Consent)),t.user&&(e.user=(0,E.assign)(e.user,t.user),Re(e,A.User)),t.globals&&(e.globals=(0,E.assign)(e.config.globalsStatic||{},t.globals),Re(e,A.Globals)),t.custom&&(e.custom=(0,E.assign)(e.custom,t.custom),Re(e,A.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await de(e),await async function(e){if(pe(e))for(const t of ve){if(!ye(e,t))continue;const n=Oe(e,t);qe(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))ce(r)&&await xe(e,r,o,t,n)}else ge()}(e),await Pe(e)}(e,n),s=!0;break;case A.Session:s=!0;break;case A.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Ue(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 Ue(e.destinations,"destination",t),await Ue(e.transformers,"transformer",t),await Ue(e.stores,"store",t)}(e));break;case A.User:(0,q.isObject)(n)&&((0,E.assign)(e.user,n,{shallow:!1}),Re(e,A.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),Fe({ok:!1})}return s&&(await async function(e,t,n,o){var r,s;if(!pe(e))return ge(),!0;e.seenEvents.add(String(t));let i=n||[];n||(i=e.on[t]||[]);const a=Oe(e,t,o);let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(r=o.config.require)?void 0:r.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(ce(o)?await xe(e,o,n,t,a)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:a})))}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:a});Ee(e,o,n,t,a)}});for(const[t,n]of Object.entries(e.sources))ce(n)&&(null==(s=n.queueOn)?void 0:s.length)&&await ae(e,n,t);const l=Object.values(e.sources).some(e=>{var t;return!ce(e)&&(null==(t=e.config.require)?void 0:t.length)});return(Object.keys(e.pending.destinations).length>0||l)&&await de(e),qe(e,t,i,o),!c}(e,t,void 0,r),o=await Pe(e)),o||Fe({ok:!0})}()}finally{i()}}function Ge(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Ve(e,t,n){var o,r,s,i,a,c;if(!t.name)throw new Error("Event name is required");const[l,u]=t.name.split(" ");if(!l||!u)throw new Error("Event name is invalid");const{timestamp:d=Date.now(),name:p=`${l} ${u}`,data:f={},context:g={},globals:h=e.globals,custom:v={},user:m=e.user,nested:y=[],consent:w=e.consent,id:b=(0,E.getSpanId)(),trigger:k="",entity:I=l,action:S=u,timing:C=0,source:q={type:"collector",schema:"4"}}=t,O=null!=(o=q.count)?o:e.count+=1,x=null!=(s=null!=(r=q.trace)?r:null==n?void 0:n._meta.trace)?s:e.trace,j={...q,count:O};void 0!==x&&(j.trace=x);const D=null!=(a=null!=(i=e.name)?i:q.platform)?a:"default",A=null!=(c=e.release)?c:"4.3.0-next-1784120651691";return j.release={...q.release,[D]:A},{name:p,data:f,context:g,globals:h,custom:v,user:m,nested:y,consent:w,id:b,trigger:k,entity:I,action:S,timestamp:d,timing:C,source:j}}function We(e,t){const n=(0,O.useHooks)(async(n,o={})=>await(0,O.tryCatchAsync)(async()=>{var r;const s=Date.now(),{id:i,ingest:a,respond:c,mapping:l,preChain:u,include:d,exclude:p}=o;let f=c,g=n;const h=d||p?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,p):void 0,v=null!=a?a:(0,O.createIngest)(i||"unknown");if(l){const t=await(0,O.processEventMapping)(g,l,e);if(t.ignore)return Fe({ok:!0});if(l.consent&&!(0,O.getGrantedConsent)(l.consent,e.consent,t.event.consent))return Fe({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await re(e,e.transformers,u,g,v,f,i?`source.${i}.next`:void 0);if(null===n.event)return Fe({ok:!0});if(n.stopped)return n.respond&&(f=n.respond),Fe({ok:!0});if(n.respond&&(f=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),r=Ve(e,o,v);return Pe(e,r,{id:i,ingest:v,respond:f},h)}));if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return null!=(r=o[0])?r:Fe({ok:!0})}g=n.event}const m=function(e,t,n){return Ve(e,Ge(e,t),n)}(e,g,v),y=await Pe(e,m,{id:i,ingest:v,respond:f},h);if(i){e.status.sources[i]||(e.status.sources[i]={count:0,duration:0});const t=e.status.sources[i];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return y},t=>{if(t instanceof O.FatalError)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Fe({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id?t.id:"",{traceId:s,sourceId:i,parentEventId:a}=$(t,null==o?void 0:o.ingest,e),c=Date.now(),l=M(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:c,traceId:s,sourceId:i,parentEventId:a});l.inEvent=t,(0,O.emitStep)(e,l);try{const l=await n(t,o),u=Date.now(),d=M(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:u,traceId:s,sourceId:i,parentEventId:a});return d.durationMs=u-c,d.outEvent=l,(0,O.emitStep)(e,d),l}catch(t){const n=Date.now(),o=M(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n,traceId:s,sourceId:i,parentEventId:a});throw o.durationMs=n-c,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,O.emitStep)(e,o),t}}}function Le(e={}){var t,n,o;const r=null!=(t=e.maxEntries)?t:1e4,s=null!=(n=e.lowWaterMark)?n:.8,i=null!=(o=e.sweepIntervalMs)?o:6e4,a=Math.floor(r*s),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return i>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},i),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>r&&function(){if(c.size<=r)return;const e=c.size-a;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function Je(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=M(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,D.emitStep)(a,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?(0,D.compileMatcher)(e.match):()=>!0,ttl:e.ttl})),d=e=>`${r}:${e}`;function p(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const f=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),r=await o.get(n),s=(0,D.readCacheEnvelope)(r);if(void 0!==s){if(!("expired"in s))return l.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 l.inflight_dedups++,c(t,"hit"),i;l.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,D.wrapCacheEnvelope)(r,e),e),l.populates++}catch(e){g("set",t,e)}return r}finally{f.delete(n)}})();return f.set(n,a),a},async set(t,n,r){l.writes++,await e.set(t,n,r);const s=p(t,n);if(s)try{const e=1e3*s.ttl;await o.set(d(t),(0,D.wrapCacheEnvelope)(n,e),e)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(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 Ye(e,t,n){const o=`store.${n}`,r=(0,j.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,j.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,j.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=M(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},(0,j.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=M(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},(0,j.emitStep)(e,a),s}catch(r){const s=Date.now(),i=M(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,j.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=M(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},(0,j.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=M(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},(0,j.emitStep)(e,c)}catch(n){const r=Date.now(),s=M(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,j.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=M(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},(0,j.emitStep)(e,r);try{await i(t);const r=Date.now(),s=M(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},(0,j.emitStep)(e,s)}catch(r){const s=Date.now(),i=M(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,j.emitStep)(e,i),r}}}async function Qe(e){var t,n;const o=(0,m.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),r={level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler},s=(0,m.createLogger)(r),i={...o.globalsStatic,...e.globals},a={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:i,hooks:e.hooks||{},observers:new Set,logger:s,on:{},queue:[],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 c,l;void 0!==e.name&&(a.name=e.name),void 0!==e.release&&(a.release=e.release),a.push=We(a,e=>Ge(a,e)),a.command=(c=a,l=Be,(0,x.useHooks)(async(e,t,n)=>await(0,x.tryCatchAsync)(async()=>await l(c,e,t,n),n=>{if(n instanceof x.FatalError)throw n;return c.status.failed++,c.logger.error("command failed",{command:e,data:t,error:n}),Fe({ok:!1})})(),"Command",c.hooks,c.logger)),a.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 Fe({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)}}(a);const u=e.stores||{};return a.stores=await async function(e,t={}){var n;const o={};for(const[n,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(n),c={collector:e,logger:a,id:n,config:s,env:i,reportError:J(e,"store",n,a)},l=await t(c);o[n]=l}const r=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){var i;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 c=null==(i=e[s].cache)?void 0:i.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${s}" cache.store references "${c}", which is not declared in flow.stores`);r(c)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(r);for(const t of s){const s=r[t].cache;if(!s)continue;let i,a;void 0!==s.store?(i=o[s.store],a=s.store):(o.__cache||(o.__cache=Le()),i=o.__cache,a="__cache");const c=null!=(n=s.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${a}`),o[t]=Je(o[t],{storeId:t,cacheConfig:s,cacheStore:i,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&Ye(e,n,t);return o}(a,u),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)}}}(u,a.stores,e),a.stores.__cache||(a.stores.__cache=Le()),a.destinations=await async function(e,t={}){var n,o;const r={};for(const[s,i]of Object.entries(t))(null==(o=null==(n=i.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[s]=i:r[s]=Ne(i);return r}(a,e.destinations||{}),a.transformers=await async function(e,t={}){var n,o,r,s,i,a,c,l;const u={};for(const[d,p]of Object.entries(t)){const{code:t,env:f={}}=p,g=(0,C.validateStepEntry)(p,"Transformer");if(!g.ok){e.logger.warn(`Transformer ${d} invalid (${g.code}): ${g.reason}. Skipping.`);continue}const{config:h}=Z(p,"before"),{config:v}=Z({...p,config:h},"next"),m=Object.keys(f).length>0?{...v,env:f}:v,{cache:y}=p,w=y?{...m,cache:y}:m,b=null!=(o=null==(n=p.config)?void 0:n.state)?o:p.state,k=void 0!==b&&void 0===w.state?{...w,state:b}:w,I=e.logger.scope("transformer").scope(d),S={collector:e,logger:I,id:d,ingest:(0,C.createIngest)(d),config:k,env:f,reportError:J(e,"transformer",d,I)},E=null!=t?t:e=>{const t=p.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 ${d}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await(0,C.processEventMapping)(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},q=await E(S);void 0!==p.before&&void 0===(null==(r=q.config)?void 0:r.before)&&(q.config={...null!=(s=q.config)?s:{},before:p.before}),void 0!==p.next&&void 0===(null==(i=q.config)?void 0:i.next)&&(q.config={...null!=(a=q.config)?a:{},next:p.next}),void 0!==b&&void 0===(null==(c=q.config)?void 0:c.state)&&(q.config={...null!=(l=q.config)?l:{},state:b}),u[d]=q}return u}(a,e.transformers||{}),a}async function Xe(e){e=e||{};const t=await Qe(e);await async function(e,t={}){var n;const o={};for(const[r,s]of Object.entries(t)){const t=await ue(e,r,s);if(!t)continue;const i=null==(n=s.config)?void 0:n.require;t.config={...t.config,init:!1,...i?{require:[...i]}:{}},o[r]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await(0,S.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof S.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,ce(n)&&await ae(e,n,t))}return await de(e),o}(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 Ze=async e=>{let t;return{get flow(){return t},trigger:(n,o)=>async n=>{var r,s,i,a,c,l,u,d,p;const f=o||{};if(f.url){const e=new URL(f.url);window.history.replaceState({},"",e.pathname+e.search)}if(f.referrer&&Object.defineProperty(document,"referrer",{value:f.referrer,configurable:!0}),f.sessionData){const e=f.sessionKey||"elbSessionId";localStorage.setItem(e,JSON.stringify(f.sessionData))}if(f.deviceId){const e=f.deviceKey||"elbDeviceId";localStorage.setItem(e,f.deviceId)}if(!t){const n=await Xe({...e,run:null==(r=e.run)||r});t={collector:n.collector,elb:n.elb};const o=f.sessionKey||(null==(c=null==(a=null==(i=null==(s=e.sources)?void 0:s.session)?void 0:i.config)?void 0:a.settings)?void 0:c.sessionKey)||"elbSessionId",g=f.deviceKey||(null==(p=null==(d=null==(u=null==(l=e.sources)?void 0:l.session)?void 0:u.config)?void 0:d.settings)?void 0:p.deviceKey)||"elbDeviceId";localStorage.removeItem(o),localStorage.removeItem(g),f.sessionData&&localStorage.setItem(o,JSON.stringify(f.sessionData)),f.deviceId&&localStorage.setItem(g,f.deviceId),e.consent&&await t.collector.command("consent",e.consent)}}}},et=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.localStorage;if(n.sessionData&&"object"==typeof n.sessionData){const e="string"==typeof n.sessionKey?n.sessionKey:"elbSessionId";o.setItem(e,JSON.stringify(n.sessionData))}if("string"==typeof n.deviceId){const e="string"==typeof n.deviceKey?n.deviceKey:"elbDeviceId";o.setItem(e,n.deviceId)}};//# sourceMappingURL=dev.js.map
|
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,{SettingsSchema:()=>a,settings:()=>i});import{zodToSchema as o}from"@walkeros/core/dev";import{z as s,ClickIdEntrySchema as r}from"@walkeros/core/dev";var a=s.object({storage:s.boolean().default(!1).describe("Enable persistent storage for session/device IDs").optional(),consent:s.union([s.string(),s.array(s.string())]).describe("Consent key(s) required to enable storage mode").optional(),length:s.number().default(30).describe("Session timeout in minutes").optional(),pulse:s.boolean().default(!1).describe("Keep session alive on each event").optional(),sessionKey:s.string().default("elbSessionId").describe("Storage key for session ID").optional(),sessionStorage:s.enum(["local","session"]).default("local").describe("Storage type for session").optional(),deviceKey:s.string().default("elbDeviceId").describe("Storage key for device ID").optional(),deviceStorage:s.enum(["local","session"]).default("local").describe("Storage type for device").optional(),deviceAge:s.number().default(30).describe("Device ID age in days").optional(),cb:s.any().describe("Custom session callback function or false to disable").optional(),clickIds:s.array(r).describe("Custom click-ID registry. Entries with a `param` matching a default override the platform name in place; new params append to the end of the priority list.").optional()}),i=o(a),c={};t(c,{createTrigger:()=>un,step:()=>l,trigger:()=>dn});var l={};t(l,{newMarketingSession:()=>u,returningVisitor:()=>d});var u={title:"New marketing session",description:"A visit with UTM parameters starts a new session and emits walker user, session, and session start calls.",trigger:{type:"load",options:{url:"https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=winter-sale"}},in:{storage:!0},out:[["elb","user",{session:"s3ss10n-id",device:"d3v1c3-id"}],["elb","session",{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}],["elb",{name:"session start",data:{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}}]]},d={title:"Returning visitor",description:"A returning visit with a google referrer reuses the stored device id and increments the session count.",trigger:{type:"load",options:{referrer:"https://google.com"}},in:{storage:!0},out:[["elb","user",{session:"n3w-s3ss10n",device:"d3v1c3-id"}],["elb","session",{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}],["elb",{name:"session start",data:{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}}]]};import{assign as f}from"@walkeros/core";import{assign as p,createLogger as g}from"@walkeros/core";import{assign as v,buildCacheContext as h,clone as m,compileCache as y,checkCache as w,storeCache as b,createIngest as k,debounce as I,emitStep as S,getId as E,getGrantedConsent as q,getNextSteps as x,isDefined as O,isFunction as j,isObject as C,OBSERVE_ENV_KEY as D,processEventMapping as A,stepId as $,tryCatchAsync as M,useHooks as _,compileState as T,applyState as P}from"@walkeros/core";import{emitStep as K}from"@walkeros/core";import{parseCallPath as z}from"@walkeros/core";import{isArray as F,FatalError as U}from"@walkeros/core";import{tryCatch as N,tryCatchAsync as R}from"@walkeros/core";import{stepId as B}from"@walkeros/core";import{createIngest as H,FatalError as G,getMappingValue as V,parseTraceparent as W,tryCatchAsync as L,getNextSteps as J,compileCache as Y,checkCache as Q,storeCache as X,applyUpdate as Z,buildCacheContext as ee,compileState as te,applyState as ne}from"@walkeros/core";import{createIngest as oe,emitStep as se,FatalError as re,isObject as ae,stepId as ie,tryCatchAsync as ce,useHooks as le,getNextSteps as ue,compileCache as de,checkCache as fe,storeCache as pe,buildCacheContext as ge,validateStepEntry as ve,processEventMapping as he,compileState as me,applyState as ye}from"@walkeros/core";import{assign as we,getSpanId as be,getTraceId as ke,isFunction as Ie,isString as Se}from"@walkeros/core";import{isObject as Ee}from"@walkeros/core";import{createIngest as qe,emitStep as xe,FatalError as Oe,getGrantedConsent as je,processEventMapping as Ce,tryCatchAsync as De,useHooks as Ae}from"@walkeros/core";import{FatalError as $e,useHooks as Me,tryCatchAsync as _e}from"@walkeros/core";import{emitStep as Te,useHooks as Pe}from"@walkeros/core";import{compileMatcher as Ke,emitStep as ze,readCacheEnvelope as Fe,wrapCacheEnvelope as Ue}from"@walkeros/core";var Ne={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 Re(e,t,n){var o,s,r;return{traceId:null!=(r=null!=(s=null==(o=e.source)?void 0:o.trace)?s:null==t?void 0:t._meta.trace)?r:n.trace,sourceId:null==t?void 0:t._meta.path[0],parentEventId:null==t?void 0:t._meta.parentEventId}}function Be(e,t){var n;const o=e.status.startedAt,s={flowId:null!=(n=e.name)?n:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-o};return t.traceId&&(s.traceId=t.traceId),t.sourceId&&(s.sourceId=t.sourceId),t.parentEventId&&(s.parentEventId=t.parentEventId),s}function He(e){return"object"==typeof e&&null!==e}function Ge(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 s of e)o.push(Ge(s,t,n+1));return o}const s={};t.set(e,s);for(const[o,r]of Object.entries(e))s[o]="function"==typeof r?r:Ge(r,t,n+1);return s}function Ve(e){const t=[],n=[],{simulation:o,...s}=e,r=Ge(s,new WeakMap,0);for(const e of o){const o=z(e);if(0===o.length)continue;const s=o.join(".");if(o.length-1>=8){n.push(s);continue}let a=r,i=!0;for(let e=0;e<o.length-1;e++){const t=a[o[e]];if(!He(t)){i=!1;break}a=t}const c=o[o.length-1];if(!i||!(c in a)){n.push(s);continue}const l=a[c];"function"==typeof l?a[c]=function(...e){return t.push({fn:s,args:e,ts:Date.now()}),l.apply(this,e)}:n.push(s)}return{wrappedEnv:r,calls:t,unresolved:n}}function We(e,t){try{return e[t]}catch(e){return"[unreadable]"}}function Le(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const s=e;if(t.has(s))return"[circular]";if(o>=6)return"[truncated]";let r;t.add(s);try{if(Array.isArray(s))r=s.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(s)){const e={};for(const t of Object.keys(s))e[t]=n(We(s,t),o+1);r=e}else r=function(e){try{return String(e)}catch(e){return"[object]"}}(s)}catch(e){r="[unreadable]"}return t.delete(s),r};return e.map(e=>n(e,0))}function Je(e){return e.map(e=>({fn:e.fn,args:Le(e.args),ts:e.ts}))}function Ye(e,t,n,o){var s;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(s=n.onOverflow)?s:"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 Qe=new WeakMap;function Xe(e,t,n,o){Qe.get(e)||(Qe.set(e,!0),t.warn(n,o))}function Ze(e){Qe.delete(e)}var et=()=>Date.now();function tt(e){var t,n;if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:null!=(t=e.threshold)?t:5,cooldown:null!=(n=e.cooldown)?n:3e4}}function nt(e,t,n,o,s){if("partial"===n)return;const r=((a=e)[i=t]||(a[i]={state:"closed",consecutiveFailures:0}),a[i]);var a,i;return"success"===n?(r.consecutiveFailures=0,r.state="closed",r.probing=!1,void(r.openUntil=void 0)):(r.consecutiveFailures+=1,"half-open"===r.state?(r.state="open",r.probing=!1,void(r.openUntil=et()+s)):void(r.consecutiveFailures>=o&&(r.state="open",r.probing=!1,r.openUntil=et()+s)))}function ot(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function st(e,t,n,o){var s;e.dropped[t]||(e.dropped[t]={});const r=e.dropped[t];return r[n]=(null!=(s=r[n])?s:0)+o,r[n]}function rt(e,t,n,o,s){const r=B(t,n);return(t,a)=>{var i;try{if(a)return s?function(e,t,n,o,s,r){var a;const i=t.dlq=t.dlq||[],c={max:null!=(a=t.config.dlqMax)?a:100},l=Ye(i,[o,s],c);if(l.dropped>0){const t=st(e.status,B("destination",n),"dlq",l.dropped);Xe(i,r,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:c.max,droppedCount:t})}else i.length<c.max&&Ze(i);const u=ot(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=tt(t.config.breaker);if(d){const o=t.config.id||n;nt(e.status.breakers,B("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,s,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[r]=(null!=(i=e.status.connectionErrors[r])?i:0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch(e){}}}function at(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function it(e,t){return e?t.stores[e]:t.stores.__cache}function ct(e){var t;const n={};for(const[o,s]of Object.entries(e)){const e=null==(t=s.config)?void 0:t.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?n[o]={next:e}:n[o]={}}return n}function lt(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 ut(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let s=e;for(;s&&t[s]&&!o.has(s);){o.add(s),n.push(s);const e=t[s].next;if(Array.isArray(e)){n.push(...e);break}s=e}return n}async function dt(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",s=e.logger.scope(`transformer:${o}`),r={collector:e,logger:s,id:n,ingest:oe(n),config:t.config,env:vt(t.config.env),reportError:rt(e,"transformer",n,s)};s.debug("init");const a=await le(t.init,"TransformerInit",e.hooks,e.logger)(r);if(!1===a)return!1;t.config={...a||t.config,env:(null==a?void 0:a.env)||t.config.env,init:!0},s.debug("init done")}return!0}async function ft(e,t,n,o,s,r){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:s,config:t.config,env:{...vt(t.config.env),...r?{respond:r}:{}},reportError:rt(e,"transformer",n,i)};i.debug("push",{event:o.name});const l="string"==typeof o.id?o.id:"",{traceId:u,sourceId:d,parentEventId:f}=Re(o,s,e),p=Date.now(),g=Be(e,{stepId:ie("transformer",n),stepType:"transformer",phase:"in",eventId:l,now:p,traceId:u,sourceId:d,parentEventId:f});g.inEvent=o,se(e,g);try{const s=await le(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),a=Be(e,{stepId:ie("transformer",n),stepType:"transformer",phase:"out",eventId:l,now:r,traceId:u,sourceId:d,parentEventId:f});return a.durationMs=r-p,a.outEvent=s,se(e,a),i.debug("push done"),s}catch(t){const o=Date.now(),s=Be(e,{stepId:ie("transformer",n),stepType:"transformer",phase:"error",eventId:l,now:o,traceId:u,sourceId:d,parentEventId:f});throw s.durationMs=o-p,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},se(e,s),t}}function pt(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:oe(t)}async function gt(e,t,n,o,s,r,a){var i,c,l,u,d,f,p,g,v;s||(s=oe(null!=(i=n[0])?i:"chain")),a&&s._meta&&(s._meta.chainPath=a);let h=o,m=r;for(const o of n){const r=t[o];if(!r){e.logger.warn(`Transformer not found: ${o}`);continue}if(s&&s._meta&&s._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:m};if(s&&s._meta&&(s._meta.hops++,s._meta.path.push(o)),!await ce(dt,t=>{if(t instanceof re)throw t;return e.status.failed++,e.logger.scope(`transformer:${r.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,r,o))return{event:null,respond:m};if(a&&void 0!==(null==(l=null==(c=r.config)?void 0:c.chainMocks)?void 0:l[a])){const t=r.config.chainMocks[a];e.logger.scope(`transformer:${r.type||"unknown"}`).debug("chainMock",{chain:a}),h=t;continue}if(void 0!==(null==(u=r.config)?void 0:u.mock)){e.logger.scope(`transformer:${r.type||"unknown"}`).debug("mock"),h=r.config.mock;continue}if(null==(d=r.config)?void 0:d.disabled)continue;const i=null==(f=r.config)?void 0:f.cache,y=i?de(i):void 0,w=y?at(y,e):void 0,b=(null==(p=r.config)?void 0:p.state)?me(r.config.state):void 0,k=null==b?void 0:b.filter(e=>"get"===e.mode),I=null==b?void 0:b.filter(e=>"set"===e.mode),S=async t=>I&&0!==I.length?ye(I,t=>it(t,e),t,e):t;let E;if(y&&w){const e=ge(s,h),t=await fe(y,w,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(h=t.value,y.stop)return{event:h,respond:m,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(E={key:t.key,ttl:t.rule.ttl})}const q=r.config.before;if(q){const n=ue(q,ge(s,h));if(1===n.length){const o=ut(n[0],ct(t));if(o.length>0){const n=await gt(e,t,o,h,s,m,a);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:m};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(v=n.respond)?v:m,stopped:!0};n.respond&&(m=n.respond),h=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),h,pt(s,n),void 0,a)))}k&&k.length>0&&(h=await ye(k,t=>it(t,e),h,e));const x=await ce(ft,t=>(e.logger.scope(`transformer:${r.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,r,o,h,s,m);if(!1===x)return{event:null,respond:m};if(Array.isArray(x)){const r=n.slice(n.indexOf(o)+1),i=await Promise.all(x.map(async n=>{const o=await S(n.event||h),i=pt(s,"unknown");if(n.next){const s=ue(n.next,ge(i,o));if(0===s.length)return{event:o,respond:m};if(1===s.length){const n=ut(s[0],ct(t));return n.length>0?gt(e,t,n,o,i,m,a):{event:o,respond:m}}return(await Promise.all(s.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),o,pt(i,n),void 0,a)))).map(e=>({event:e.event,respond:void 0}))}return r.length>0?gt(e,t,r,o,i,m,a):{event:o,respond:m}}));let c=m;const l=[];for(const e of i.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=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:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(x&&"object"==typeof x){const{event:n,respond:o,next:r}=x;if(o&&(m=o),void 0!==r){const o=await S(n||h),i=ue(r,ge(s,o));if(0===i.length){h=o;continue}if(1===i.length){const n=ut(i[0],ct(t));return n.length>0?gt(e,t,n,o,s,m,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(r)}`),{event:null,respond:m})}return await Promise.all(i.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),o,pt(s,n),void 0,a))),{event:null,respond:void 0}}n&&(h=n)}I&&I.length>0&&(h=await ye(I,t=>it(t,e),h,e)),E&&w&&pe(w,E.key,h,E.ttl);const O=r.config.next,j="string"==typeof O||Array.isArray(O)&&O.every(e=>"string"==typeof e),C=void 0!==O&&!j;if((!x||"object"==typeof x&&!x.next)&&C){const n=ue(r.config.next,ge(s,h));if(1===n.length){const o=ut(n[0],ct(t));return o.length>0?gt(e,t,o,h,s,m,a):{event:h,respond:m}}return n.length>1?(await Promise.all(n.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),h,pt(s,n),void 0,a))),{event:null,respond:void 0}):{event:h,respond:m}}}return{event:h,respond:m}}function vt(e){return e&&ae(e)?e:{}}function ht(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function mt(e,t,n){var o,s;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const r=t.queueOn;t.queueOn=[];const a=n||(null==(s=t.config)?void 0:s.id)||"unknown";for(const{type:n,data:o}of r)Ot(n)&&!$t(e,t,n)||(await L(t.on,t=>{if(t instanceof G)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:a,type:n,error:t})})(n,o),Ot(n)&&At(e,t,n))}function yt(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}function wt(e){return"object"==typeof e&&null!==e}async function bt(e,t,n){var o,s;const{code:r,config:a={},env:i={},primary:c,next:l,before:u,cache:d}=n,f=null!=(o=a.state)?o:n.state,p=f?te(f):void 0,g=d,v=g?Y({...g,stop:null==(s=g.stop)||s}):void 0,h=ht(l)?ut(l,ct(e.transformers)):void 0,m=ht(u)?ut(u,ct(e.transformers)):void 0,y=i.push,w=null!=y?y:e.push,b=Boolean(y),k=async(n,o,s)=>{var r;let i;const c=null!=m?m:void 0!==u?(()=>{const t=J(u,ee(s.ingest));return 0===t.length?[]:ut(1===t.length?t[0]:t,ct(e.transformers))})():[];let d=[n];if(c.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await gt(e,e.transformers,c,n,s.ingest,s.respond,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),d=Array.isArray(o.event)?o.event:[o.event]}if(v){const t=at(v,e);if(t){const n=ee(s.ingest),o=await Q(v,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&v.stop){let t=o.value;return o.rule.update&&(t=await Z(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(r=s.respond)||r.call(s,t),{ok:!0}}if("MISS"===o.status&&v.stop&&s.respond){const r=s.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{X(t,l,n,u),a?i=(async()=>{const t=await Z(n,a,c,e);r(t)})():r(n)};s.respond=d}"MISS"!==o.status||v.stop||X(t,o.key,!0,o.rule.ttl)}}}const f=h?{kind:"single",preChain:h}:void 0!==l?(()=>{const t=J(l,ee(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ut(t[0],ct(e.transformers))}:{kind:"many",branches:t.map(t=>ut(t,ct(e.transformers)))}})():{kind:"single",preChain:[]};!b&&p&&p.length>0&&(d=await Promise.all(d.map(t=>ne(p,t=>it(t,e),t,e))));let g={ok:!0};for(const n of d)"many"===f.kind?(await Promise.all(f.branches.map((r,i)=>L(async()=>b?w(n):w(n,{...o,id:t,ingest:pt(s.ingest,`${t}.${i}`),respond:void 0,mapping:a,preChain:r}),t=>(e.logger.scope("source:many").error(`many branch ${i} failed`,{error:t}),{ok:!0}))())),g={ok:!0}):g=b?await w(n):await w(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:a,preChain:f.preChain});return i&&await i,g},I=async n=>{const o=H(t),s=W(function(e){var t;if(!wt(e))return;const n=e.headers;if(wt(n)){if("get"in(o=n)&&"function"==typeof o.get)return null!=(t=n.get("traceparent"))?t:void 0;if("traceparent"in n)return n.traceparent;for(const e of Object.keys(n))if("traceparent"===e.toLowerCase())return n[e]}var o}(n));if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!a.ingest||void 0===n)return o;const r=await V(n,a.ingest,{collector:e});return{...o,...r,_meta:o._meta}},S=e.logger.scope("source").scope(t),E={command:e.command,sources:e.sources,elb:e.elb,logger:S,...i,push:async(e,n={})=>{const o={ingest:H(t),respond:void 0};return k(e,n,o)}},q={collector:e,logger:S,id:t,config:a,env:E,withScope:async(e,t,n)=>{const o={ingest:await I(e),respond:t};return n({...E,push:(e,t={})=>k(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:rt(e,"source",t,S)},x=await L(r,n=>{if(n instanceof G)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(q);if(!x)return;const O=x.type||"unknown",j=e.logger.scope(O).scope(t);return E.logger=j,c&&(x.config={...x.config,primary:c}),x}async function kt(e){var t;for(const[t,n]of Object.entries(e.sources)){if(yt(n))continue;const o=n.config.require;if(!(null==o?void 0:o.length))continue;const s=o.filter(t=>!Ct(e,t));s.length!==o.length&&(n.config.require=s,yt(n)&&await mt(e,n,t))}for(const[n,o]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[n]||e.destinations[n])continue;const s=null==(t=o.config)?void 0:t.require;if(!s)continue;const r=s.filter(t=>!Ct(e,t));if(o.config&&(o.config.require=r),r.length>0)continue;delete e.pending.destinations[n];const a=Yt(o);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[n]=a}}function It(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 St=!1;function Et(){St||(St=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function qt(e,t,n,o){if(n instanceof U)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var xt=[Ne.Consent,Ne.User,Ne.Globals,Ne.Custom];function Ot(e){return xt.includes(e)}function jt(e,t){switch(t){case Ne.Consent:return Object.keys(e.consent).length>0;case Ne.User:return Object.keys(e.user).length>0;case Ne.Globals:return Object.keys(e.globals).length>0;case Ne.Custom:return Object.keys(e.custom).length>0;default:return!1}}function Ct(e,t){switch(t){case Ne.Consent:case Ne.User:case Ne.Globals:case Ne.Custom:return jt(e,t);case Ne.Run:case Ne.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Dt(e,t){var n;return null!=(n=e.cellVersion[String(t)])?n:0}function At(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Dt(e,n)}function $t(e,t,n){return e.allowed&&Dt(e,n)>function(e,t,n){const o=e.delivery.get(t),s=null==o?void 0:o[String(n)];return void 0===s?-1:s}(e,t,n)}function Mt(e,t,n){const o=e.cascade;if(!o)return!0;let s=o.counts.get(t);s||(s={},o.counts.set(t,s));const r=String(n),a=(s[r]||0)+1;return s[r]=a,a<=8||(9===a&&e.logger.error("state delivery did not converge",{type:r}),!1)}function _t(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Tt(e,t,n,o,s){if(!t.on)return;const r=t.type||"unknown",a=e.logger.scope(r).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:s,env:Qt(t.env,t.config.env),reportError:rt(e,"destination",n,a,t)};N(t.on,t=>qt(e,"destination",t,{destId:n,type:o}))(o,i)}function Pt(e,t,n,o){if(!It(e))return void Et();const s=Kt(e,t,o);if(n.length)switch(t){case Ne.Consent:!function(e,t,n){const o=n||e.consent,s=_t(e,Ne.Consent);t.forEach(t=>{$t(e,t,Ne.Consent)&&Mt(e,t,Ne.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{N(t[n],t=>qt(e,"consent",t,{key:n}))(o,s)}),At(e,t,Ne.Consent))})}(e,n,o);break;case Ne.Ready:!function(e,t){if(!e.allowed)return;const n=_t(e,Ne.Ready);t.forEach(t=>{N(t,t=>qt(e,"ready",t))(void 0,n)})}(e,n);break;case Ne.Run:!function(e,t){if(!e.allowed)return;const n=_t(e,Ne.Run);t.forEach(t=>{N(t,t=>qt(e,"run",t))(void 0,n)})}(e,n);break;case Ne.Session:!function(e,t){if(!e.session)return;const n=_t(e,Ne.Session);t.forEach(t=>{N(t,t=>qt(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=_t(e,t),r=Ot(t);n.forEach(n=>{"function"==typeof n&&(r&&!$t(e,n,t)||r&&!Mt(e,n,t)||(N(n,n=>qt(e,"generic",n,{type:t}))(s,o),r&&At(e,n,t)))});break}}}function Kt(e,t,n){switch(t){case Ne.Consent:return n||e.consent;case Ne.Session:return e.session;case Ne.User:return n||e.user;case Ne.Custom:return n||e.custom;case Ne.Globals:return n||e.globals;case Ne.Config:return n||e.config;default:return}}async function zt(e,t,n,o,s){if(!t.on)return!1;if(Ot(o)&&!$t(e,t,o))return!1;if(Ot(o)&&!Mt(e,t,o))return!1;const r=await R(t.on,t=>qt(e,"source",t,{sourceId:n,type:o}))(o,s);return Ot(o)&&At(e,t,o),!1===r}function Ft(e){return"number"==typeof e&&e>0?e:1e4}var Ut=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Nt(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new Ut(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}var Rt=Object.freeze({batched:!0});function Bt(e){return e===Rt}function Ht(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Gt(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ut(e,t);if("string"==typeof e)return ut(e,t);const o=x(e,h(n));return 0===o.length?[]:1===o.length?ut(o[0],t):ut(o,t)}async function Vt(e,t,n={},o){var s,r,a,i,c,l;const{allowed:u,consent:d,globals:f,user:p}=e;if(!u)return Jt({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=Ye(e.queue,t,{max:n});if(o.dropped>0){const t=st(e.status,$("collector"),"queue",o.dropped);Xe(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Ze(e.queue);e.status.in++}o||(o=e.destinations);const g=e.transformers?ct(e.transformers):{},I=await Promise.all(Object.entries(o||{}).map(async([o,s])=>{var r,a,i,c,l;if(s.config.disabled)return{id:o,destination:s,skipped:!0};const u=s.config.id||o,I=$("destination",u),E=tt(s.config.breaker);if(E&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const s=et();return void 0!==o.openUntil&&s<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=s+n,!1)}(e.status.breakers,I,E.cooldown))return{id:o,destination:s,skipped:!0};const x=t=>{E&&nt(e.status.breakers,I,t,E.threshold,E.cooldown)},O=()=>{E&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,I)};let j=(s.queuePush||[]).map(e=>({...e,consent:d}));s.queuePush=[],t&&j.push(m(t));const C=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:k("unknown");if(!j.length&&!(null==(r=s.queueOn)?void 0:r.length))return O(),{id:o,destination:s,skipped:!0};if(!j.length&&(null==(a=s.queueOn)?void 0:a.length)){if(!q(s.config.consent,d))return O(),{id:o,destination:s,skipped:!0};let t=!1;try{t=await Wt(e,s,o,!0)}catch(t){e.status.failed++;const n=s.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),x("transport-failure")}return O(),{id:o,destination:s,skipped:!t}}const D=[],A=j.filter(t=>{const n=q(s.config.consent,d,t.consent);if(n)return t.consent=n,D.push(t),!1;const r=Be(e,{stepId:$("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...Re(t,C,e)});return r.skipReason="consent",d&&(r.consent={...d}),s.config.consent&&(r.meta={required:{...s.config.consent}}),S(e,r),!0});if(A.length>0){const t=s.queuePush,n=s.config.id||o,r={max:null!=(i=s.config.queueMax)?i:1e3};let a=0;for(const e of A)a+=Ye(t,e,r).dropped;if(a>0){ot(e,n);const o=st(e.status,$("destination",n),"queue",a);Xe(t,e.logger.scope(s.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:r.max,droppedCount:o})}else t.length<r.max&&Ze(t)}if(!D.length)return O(),{id:o,destination:s,queue:j};let _,K,z=!1;try{z=await Wt(e,s,o,!0)}catch(t){e.status.failed++;const n=s.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),x("transport-failure")}if(!z)return O(),{id:o,destination:s,queue:j};s.dlq||(s.dlq=[]);const F=Gt(s.config.before,g,C),U=s.config.next,N=null==(c=s.config)?void 0:c.cache,R=N?y(N):void 0,B=R?at(R,e):void 0,H=(null==(l=s.config)?void 0:l.state)?T(s.config.state):void 0,G=null==H?void 0:H.filter(e=>"get"===e.mode),V=null==H?void 0:H.filter(e=>"set"===e.mode);let W=0,L=0;return await Promise.all(D.map(async t=>{let r;if(t.globals=v(f,t.globals),t.user=v(p,t.user),(null==R?void 0:R.stop)&&B){const e=h(C,t),n=await w(R,B,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(r={key:n.key,ttl:n.rule.ttl})}let a=t,i=n.respond;if(F.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const s=await gt(e,e.transformers,F,t,C,n.respond,`destination.${o}.before`);if(null===s.event)return t;s.respond&&(i=s.respond),a=Array.isArray(s.event)?s.event[0]:s.event}if(R&&!R.stop&&B){const e=h(C,a),n=await w(R,B,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(r={key:n.key,ttl:n.rule.ttl})}G&&G.length>0&&a&&(a=await P(G,t=>it(t,e),a,e));const c=Date.now();let l=!1;const u=await M(Lt,t=>{var n;const r=s.type||"unknown";e.logger.scope(r).error("Push failed",{error:t,event:a.name}),_=t,l=!0;const i=s.dlq,c=s.config.id||o,u={max:null!=(n=s.config.dlqMax)?n:100},d=Ye(i,[a,t],u);if(d.dropped>0){ot(e,c);const t=st(e.status,$("destination",c),"dlq",d.dropped);Xe(i,e.logger.scope(s.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:c,cap:u.max,droppedCount:t})}else i.length<u.max&&Ze(i)})(e,s,o,a,C,i);if(W+=Date.now()-c,r&&B&&void 0===s.config.mock&&b(B,r.key,null==u||u,r.ttl),!l&&!Bt(u)&&V&&V.length>0&&a&&(a=await P(V,t=>it(t,e),a,e)),void 0===u||Bt(u)||(K=u),Bt(u)&&L++,!l&&U){void 0!==u&&(C._response=u);const t=Gt(U,g,C);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await gt(e,e.transformers,t,a,C,i,`destination.${o}.next`);n.respond&&(i=n.respond)}}return t})),{id:o,destination:s,error:_,response:K,totalDuration:W,batchedCount:L,allowedCount:D.length,canonicalId:u,breakerConfig:E}})),E={},x={},O={};for(const t of I){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};ot(e,t.id);const u=e.status.destinations[t.id],d=Date.now();u.queuePushSize=null!=(r=null==(s=n.queuePush)?void 0:s.length)?r:0,u.dlqSize=null!=(i=null==(a=n.dlq)?void 0:a.length)?i:0;const f=t.breakerConfig,p=t.canonicalId?$("destination",t.canonicalId):void 0,g=t=>{f&&p&&nt(e.status.breakers,p,t,f.threshold,f.cooldown)};if(t.error)o.error=t.error,O[t.id]=o,u.failed++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.failed++,g("transport-failure");else if(t.queue&&t.queue.length)x[t.id]=o;else{const n=null!=(c=t.batchedCount)?c:0,s=null!=(l=t.allowedCount)?l:0;(Math.max(0,s-n)>0||0===s)&&(E[t.id]=o,u.count++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.out++,g("success"))}}return Jt({event:t,...Object.keys(E).length&&{done:E},...Object.keys(x).length&&{queued:x},...Object.keys(O).length&&{failed:O}})}async function Wt(e,t,n,o=!1){var s;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",a=e.logger.scope(r),i={collector:e,logger:a,id:n,config:t.config,env:Qt(t.env,t.config.env),reportError:rt(e,"destination",n,a,t)};a.debug("init");const c=Date.now();let l;S(e,Be(e,{stepId:$("destination",n),stepType:"destination",phase:"init",eventId:"",now:c}));try{l=await _(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),s=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw s.durationMs=o-c,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},S(e,s),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(s=t.queueOn)?void 0:s.length){const o=t.queueOn;t.queueOn=[];for(const{type:s,data:r}of o)Tt(e,t,n,s,r)}a.debug("init done")}return!0}async function Lt(e,t,n,o,s,r){var a,i,c,l,u,d,f,p;const{config:g}=t,v=await A(o,g,e);if(v.ignore)return!1;const h=t.type||"unknown",m=e.logger.scope(h),y={collector:e,logger:m,id:n,config:g,data:v.data,rule:v.mapping,ingest:s,env:{...Qt(t.env,g.env),...r?{respond:r}:{}},reportError:rt(e,"destination",n,m,t)};if(void 0!==g.mock)return m.debug("mock",{event:v.event.name}),g.mock;const w=v.mapping,b=void 0!==(null==w?void 0:w.batch),k=b?v.mappingKey||"* *":" batch-all";if((b||void 0!==g.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[k]){const o={key:k,entries:[],events:[],data:[]},s=Ht(null==w?void 0:w.batch),r=Ht(g.batch),f=null!=(i=null!=(a=s.wait)?a:r.wait)?i:3e4,p=null!=(l=null!=(c=s.size)?c:r.size)?l:1e3,v=null!=(d=null!=(u=s.age)?u:r.age)?d:3e4,h=Qt(t.env,g.env),y=I(async()=>{var o,s;const r=t.batches[k],a=r.batched;if(0===a.entries.length)return;const i={key:a.key,entries:a.entries,events:a.events,data:a.data};a.entries=[],a.events=[],a.data=[];const c=i.entries[0],{traceId:l,sourceId:u,parentEventId:d}=Re(c.event,c.ingest,e),f={collector:e,logger:m,id:n,config:g,data:void 0,rule:r.isDefault?void 0:c.rule,ingest:c.ingest,env:{...h,...c.respond?{respond:c.respond}:{}},reportError:rt(e,"destination",n,m,t)};m.debug("push batch",{events:i.entries.length});const p=t.config.id||n,v=ot(e,p),y=tt(t.config.breaker),w=$("destination",p),b=t=>{y&&nt(e.status.breakers,w,t,y.threshold,y.cooldown)},I=Date.now(),E=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"flush",eventId:"",now:I,traceId:l,sourceId:u,parentEventId:d});E.batch={size:i.entries.length,index:0},S(e,E);const q=n=>{var o;const s=t.dlq=t.dlq||[],r={max:null!=(o=t.config.dlqMax)?o:100};let a=0;for(const e of n)a+=Ye(s,e,r).dropped;if(a>0){const t=st(e.status,$("destination",p),"dlq",a);Xe(s,m,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:p,cap:r.max,droppedCount:t})}else s.length<r.max&&Ze(s);v.failed+=n.length,v.dlqSize=s.length,e.status.failed+=n.length};let x=i.entries.length;const O=Ft(g.timeout),j=await M((o,s)=>Nt(Promise.resolve(_(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),O,`Destination "${n}" batch delivery timed out after ${O}ms`),t=>{x=0;const o=Date.now(),s=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"error",eventId:"",now:o,traceId:l,sourceId:u,parentEventId:d});s.durationMs=o-I,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s.batch={size:i.entries.length,index:0},S(e,s),q(i.entries.map(e=>[e.event,t])),b("transport-failure"),m.error("Push batch failed",{error:t instanceof Error?t.message:String(t),entries:i.entries.length})})(i,f);if(C(D=j)&&Array.isArray(D.failed)&&j.failed.length>0){const e=[],t=new Set;for(const n of j.failed){const s=i.entries[n.index];s&&!t.has(n.index)&&(t.add(n.index),e.push([s.event,null!=(o=n.error)?o:new Error(`Push batch entry ${n.index} failed (no per-row error provided)`)]))}e.length>0&&(q(e),x=Math.max(0,i.entries.length-e.length),m.error("Push batch partial failure",{failed:e.length,delivered:x,entries:i.entries.length}))}var D;m.debug("push batch done"),v.inFlightBatch=Math.max(0,(null!=(s=v.inFlightBatch)?s:0)-i.entries.length),x>0&&(v.count+=x,v.lastAt=Date.now(),e.status.out+=x,b("success"))},{wait:f,size:p,age:v});t.batches[k]={batched:o,isDefault:!b,batchFn:()=>{y()},flush:async()=>{await y.flush()}}}const p=t.batches[k];p.batched.entries.push({event:v.event,ingest:s,respond:r,rule:w,data:v.data}),p.batched.events.push(v.event),O(v.data)&&p.batched.data.push(v.data);const h="string"==typeof v.event.id?v.event.id:"",y=Re(o,s,e),E=Date.now(),q=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"in",eventId:h,now:E,traceId:y.traceId,sourceId:y.sourceId,parentEventId:y.parentEventId});v.mappingKey&&(q.mappingKey=v.mappingKey),v.event.consent&&(q.consent={...v.event.consent}),q.inEvent=v.event,S(e,q);const x=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"out",eventId:h,now:E,traceId:y.traceId,sourceId:y.sourceId,parentEventId:y.parentEventId});v.mappingKey&&(x.mappingKey=v.mappingKey),x.outEvent=v.event,x.batch={size:p.batched.entries.length,index:p.batched.entries.length-1},S(e,x);const j=t.config.id||n,D=ot(e,j);return D.inFlightBatch=(null!=(f=D.inFlightBatch)?f:0)+1,p.batchFn(),Rt}{let r;if(m.debug("push",{event:v.event.name}),"trace"===(null==(p=e.observeLevel)?void 0:p.call(e))&&Array.isArray(t.calls)&&t.calls.length>0){const e=Ve({...y.env,simulation:t.calls});y.env=e.wrappedEnv,r=e.calls,e.unresolved.length>0&&(e.wrappedEnv[D]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const a="string"==typeof v.event.id?v.event.id:"",{traceId:i,sourceId:c,parentEventId:l}=Re(o,s,e),u=Date.now(),d=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"in",eventId:a,now:u,traceId:i,sourceId:c,parentEventId:l});v.mappingKey&&(d.mappingKey=v.mappingKey),v.event.consent&&(d.consent={...v.event.consent}),d.inEvent=v.event,S(e,d);try{const o=Ft(g.timeout),s=await Nt(Promise.resolve(_(t.push,"DestinationPush",e.hooks,e.logger)(v.event,y)),o,`Destination "${n}" delivery timed out after ${o}ms`),d=Date.now(),f=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"out",eventId:a,now:d,traceId:i,sourceId:c,parentEventId:l});return f.durationMs=d-u,f.outEvent=v.event,r&&r.length>0&&(f.calls=Je(r)),O(s)&&(f.meta={...f.meta,response:s}),v.mappingKey&&(f.mappingKey=v.mappingKey),S(e,f),m.debug("push done"),s}catch(t){const o=Date.now(),s=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"error",eventId:a,now:o,traceId:i,sourceId:c,parentEventId:l});throw s.durationMs=o-u,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},r&&r.length>0&&(s.calls=Je(r)),v.mappingKey&&(s.mappingKey=v.mappingKey),S(e,s),t}}}function Jt(e){return{ok:!(null==e?void 0:e.failed),...e}}function Yt(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:a}=lt(e,"before"),{config:i}=lt({...e,config:a},"next"),c={...t.config,...n,...i};s&&(c.cache=s),void 0!==r&&void 0===c.state&&(c.state=r);const l=Qt(t.env,o);return{...t,config:c,env:l}}function Qt(e,t){return e||t?t?e&&C(e)&&C(t)?{...e,...t}:t:e:{}}async function Xt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var s;const r=o.destroy;if(!r)return;const a=o.type||"unknown",i=n.scope(a),c={id:e,config:o.config,env:null!=(s=o.env)?s:{},logger:i};let l;try{await Promise.race([r(c),new Promise((n,o)=>{l=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{l&&clearTimeout(l)}});await Promise.allSettled(o)}function Zt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function en(e,t,n){let o,s,r=!1;const a=function(e){return e.cascade?()=>{}:(e.cascade={counts:new WeakMap},()=>{e.cascade=void 0})}(e);try{return await async function(){switch(t){case Ne.Config:Ee(n)&&(we(e.config,n,{shallow:!1}),s=n,r=!0);break;case Ne.Consent:if(Ee(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=f(e.consent,n),{update:n}}(e,n);Zt(e,Ne.Consent),s=t,r=!0}break;case Ne.Custom:Ee(n)&&(e.custom=we(e.custom,n),Zt(e,Ne.Custom),s=n,r=!0);break;case Ne.Destination:Ee(n)&&"code"in n&&Ee(n.code)&&(o=await async function(e,t){var n;const{code:o,config:s={},env:r={},before:a,next:i,cache:c,state:l}=t;if(!j(o.push))return Jt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=s||{init:!1};let d=a?{...u,before:a}:{...u};i&&(d={...d,next:i}),c&&(d={...d,cache:c}),void 0!==l&&void 0===d.state&&(d={...d,state:l});let f=d.id;if(!f)do{f=E(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[f]||e.pending.destinations[f]);if(null==(n=d.require)?void 0:n.length){e.pending.destinations[f]=t,await kt(e);const n=e.destinations[f];return n?Vt(e,void 0,{},{[f]:n}):Jt({ok:!0})}const p={...o,config:d,env:Qt(o.env,r)};return e.destinations[f]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),Vt(e,void 0,{},{[f]:p})}(e,n));break;case Ne.Globals:Ee(n)&&(e.globals=we(e.globals,n),Zt(e,Ne.Globals),s=n,r=!0);break;case Ne.Hook:if(Ee(n)&&Se(n.name)&&Ie(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,s=n,r=!0}break;case Ne.On:if(Ee(n)&&Se(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!It(e))return void Et();const o=e.on,s=o[t]||[],r=F(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,Pt(e,t,r)}(e,t,o)}break;case Ne.Ready:r=!0;break;case Ne.Run:o=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),e.trace=ke(),e.count=0,t&&(t.consent&&(e.consent=we(e.consent,t.consent),Zt(e,Ne.Consent)),t.user&&(e.user=we(e.user,t.user),Zt(e,Ne.User)),t.globals&&(e.globals=we(e.config.globalsStatic||{},t.globals),Zt(e,Ne.Globals)),t.custom&&(e.custom=we(e.custom,t.custom),Zt(e,Ne.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await kt(e),await async function(e){if(It(e))for(const t of xt){if(!jt(e,t))continue;const n=Kt(e,t);Pt(e,t,e.on[t]||[]);for(const[o,s]of Object.entries(e.sources))yt(s)&&await zt(e,s,o,t,n)}else Et()}(e),await Vt(e)}(e,n),r=!0;break;case Ne.Session:r=!0;break;case Ne.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Xt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const s=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){s.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Xt(e.destinations,"destination",t),await Xt(e.transformers,"transformer",t),await Xt(e.stores,"store",t)}(e));break;case Ne.User:Ee(n)&&(we(e.user,n,{shallow:!1}),Zt(e,Ne.User),s=n,r=!0);break;default:return e.logger.warn("unknown command",{command:t}),Jt({ok:!1})}return r&&(await async function(e,t,n,o){var s,r;if(!It(e))return Et(),!0;e.seenEvents.add(String(t));let a=n||[];n||(a=e.on[t]||[]);const i=Kt(e,t,o);let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(s=o.config.require)?void 0:s.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(yt(o)?await zt(e,o,n,t,i)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:i})))}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:i});Tt(e,o,n,t,i)}});for(const[t,n]of Object.entries(e.sources))yt(n)&&(null==(r=n.queueOn)?void 0:r.length)&&await mt(e,n,t);const l=Object.values(e.sources).some(e=>{var t;return!yt(e)&&(null==(t=e.config.require)?void 0:t.length)});return(Object.keys(e.pending.destinations).length>0||l)&&await kt(e),Pt(e,t,a,o),!c}(e,t,void 0,s),o=await Vt(e)),o||Jt({ok:!0})}()}finally{a()}}function tn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function nn(e,t,n){var o,s,r,a,i,c;if(!t.name)throw new Error("Event name is required");const[l,u]=t.name.split(" ");if(!l||!u)throw new Error("Event name is invalid");const{timestamp:d=Date.now(),name:f=`${l} ${u}`,data:p={},context:g={},globals:v=e.globals,custom:h={},user:m=e.user,nested:y=[],consent:w=e.consent,id:b=be(),trigger:k="",entity:I=l,action:S=u,timing:E=0,source:q={type:"collector",schema:"4"}}=t,x=null!=(o=q.count)?o:e.count+=1,O=null!=(r=null!=(s=q.trace)?s:null==n?void 0:n._meta.trace)?r:e.trace,j={...q,count:x};void 0!==O&&(j.trace=O);const C=null!=(i=null!=(a=e.name)?a:q.platform)?i:"default",D=null!=(c=e.release)?c:"4.3.0-next-1783710078012";return j.release={...q.release,[C]:D},{name:f,data:p,context:g,globals:v,custom:h,user:m,nested:y,consent:w,id:b,trigger:k,entity:I,action:S,timestamp:d,timing:E,source:j}}function on(e,t){const n=Ae(async(n,o={})=>await De(async()=>{var s;const r=Date.now(),{id:a,ingest:i,respond:c,mapping:l,preChain:u,include:d,exclude:f}=o;let p=c,g=n;const v=d||f?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,f):void 0,h=null!=i?i:qe(a||"unknown");if(l){const t=await Ce(g,l,e);if(t.ignore)return Jt({ok:!0});if(l.consent&&!je(l.consent,e.consent,t.event.consent))return Jt({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await gt(e,e.transformers,u,g,h,p,a?`source.${a}.next`:void 0);if(null===n.event)return Jt({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),Jt({ok:!0});if(n.respond&&(p=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),s=nn(e,o,h);return Vt(e,s,{id:a,ingest:h,respond:p},v)}));if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return null!=(s=o[0])?s:Jt({ok:!0})}g=n.event}const m=function(e,t,n){return nn(e,tn(e,t),n)}(e,g,h),y=await Vt(e,m,{id:a,ingest:h,respond:p},v);if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return y},t=>{if(t instanceof Oe)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Jt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id?t.id:"",{traceId:r,sourceId:a,parentEventId:i}=Re(t,null==o?void 0:o.ingest,e),c=Date.now(),l=Be(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:c,traceId:r,sourceId:a,parentEventId:i});l.inEvent=t,xe(e,l);try{const l=await n(t,o),u=Date.now(),d=Be(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:u,traceId:r,sourceId:a,parentEventId:i});return d.durationMs=u-c,d.outEvent=l,xe(e,d),l}catch(t){const n=Date.now(),o=Be(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:r,sourceId:a,parentEventId:i});throw o.durationMs=n-c,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},xe(e,o),t}}}function sn(e={}){var t,n,o;const s=null!=(t=e.maxEntries)?t:1e4,r=null!=(n=e.lowWaterMark)?n:.8,a=null!=(o=e.sweepIntervalMs)?o:6e4,i=Math.floor(s*r),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return a>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},a),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>s&&function(){if(c.size<=s)return;const e=c.size-i;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function rn(e,t){const{cacheConfig:n,cacheStore:o,namespace:s,logger:r,storeId:a,collector:i}=t,c=(e,t)=>{if(!i)return;const n=Be(i,{stepId:`store.${a}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},ze(i,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?Ke(e.match):()=>!0,ttl:e.ttl})),d=e=>`${s}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),s=await o.get(n),r=Fe(s);if(void 0!==r){if(!("expired"in r))return l.hits++,c(t,"hit"),r.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const a=p.get(n);if(a)return l.inflight_dedups++,c(t,"hit"),a;l.misses++,c(t,"miss");const i=(async()=>{try{const s=await e.get(t);if(void 0===s)return;const r=f(t,s);if(r)try{const e=1e3*r.ttl;await o.set(n,Ue(s,e),e),l.populates++}catch(e){g("set",t,e)}return s}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,s){l.writes++,await e.set(t,n,s);const r=f(t,n);if(r)try{const e=1e3*r.ttl;await o.set(d(t),Ue(n,e),e)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${a}): cache ${e} failed for "${t}"; backing succeeded, continuing`;r?r.warn(o,{error:n}):console.warn(o,n)}}function an(e,t,n){const o=`store.${n}`,s=Pe(t.get,"StoreGet",e.hooks,e.logger),r=Pe(t.set,"StoreSet",e.hooks,e.logger),a=Pe(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),r=Be(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"get",key:t},Te(e,r);try{const r=await s(t),a=Date.now(),i=Be(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});return i.durationMs=a-n,i.meta={op:"get",key:t},Te(e,i),r}catch(s){const r=Date.now(),a=Be(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw a.durationMs=r-n,a.meta={op:"get",key:t},a.error=s instanceof Error?{name:s.name,message:s.message}:{message:String(s)},Te(e,a),s}},t.set=async(t,n,s)=>{const a=Date.now(),i=Be(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:a});i.meta={op:"set",key:t},Te(e,i);try{await r(t,n,s);const i=Date.now(),c=Be(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});c.durationMs=i-a,c.meta={op:"set",key:t},Te(e,c)}catch(n){const s=Date.now(),r=Be(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw r.durationMs=s-a,r.meta={op:"set",key:t},r.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Te(e,r),n}},t.delete=async t=>{const n=Date.now(),s=Be(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"delete",key:t},Te(e,s);try{await a(t);const s=Date.now(),r=Be(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:s});r.durationMs=s-n,r.meta={op:"delete",key:t},Te(e,r)}catch(s){const r=Date.now(),a=Be(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw a.durationMs=r-n,a.meta={op:"delete",key:t},a.error=s instanceof Error?{name:s.name,message:s.message}:{message:String(s)},Te(e,a),s}}}async function cn(e){var t,n;const o=p({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),s={level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler},r=g(s),a={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:a,hooks:e.hooks||{},observers:new Set,logger:r,on:{},queue:[],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 c,l;void 0!==e.name&&(i.name=e.name),void 0!==e.release&&(i.release=e.release),i.push=on(i,e=>tn(i,e)),i.command=(l=en,Me(async(e,t,n)=>await _e(async()=>await l(c,e,t,n),n=>{if(n instanceof $e)throw n;return c.status.failed++,c.logger.error("command failed",{command:e,data:t,error:n}),Jt({ok:!1})})(),"Command",(c=i).hooks,c.logger)),i.elb=function(e){return async(t,n,o,s,r)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let a;if("string"==typeof t)a={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Jt({ok:!1});a={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return o&&"object"==typeof o&&(a.context=o),s&&Array.isArray(s)&&(a.nested=s),r&&"object"==typeof r&&(a.custom=r),e.push(a)}}(i);const u=e.stores||{};return i.stores=await async function(e,t={}){var n;const o={};for(const[n,s]of Object.entries(t)){const{code:t,config:r={},env:a={}}=s,i=e.logger.scope("store").scope(n),c={collector:e,logger:i,id:n,config:r,env:a,reportError:rt(e,"store",n,i)},l=await t(c);o[n]=l}const s=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function s(r){var a;const i=t[r];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(r),t=o.slice(-1===e?0:e).concat(r).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[r]="GRAY",o.push(r);const c=null==(a=e[r].cache)?void 0:a.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${r}" cache.store references "${c}", which is not declared in flow.stores`);s(c)}o.pop(),t[r]="BLACK",n.push(r)}for(const n of Object.keys(e))"WHITE"===t[n]&&s(n);return n}(s);for(const t of r){const r=s[t].cache;if(!r)continue;let a,i;void 0!==r.store?(a=o[r.store],i=r.store):(o.__cache||(o.__cache=sn()),a=o.__cache,i="__cache");const c=null!=(n=r.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${i}`),o[t]=rn(o[t],{storeId:t,cacheConfig:r,cacheStore:a,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&an(e,n,t);return o}(i,u),function(e,t,n){const o=new Map;for(const[n,s]of Object.entries(e))t[n]&&o.set(s,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))s(t.env);function s(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const s=o.get(n);s&&(e[t]=s)}}}(u,i.stores,e),i.stores.__cache||(i.stores.__cache=sn()),i.destinations=await async function(e,t={}){var n,o;const s={};for(const[r,a]of Object.entries(t))(null==(o=null==(n=a.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[r]=a:s[r]=Yt(a);return s}(i,e.destinations||{}),i.transformers=await async function(e,t={}){var n,o,s,r,a,i,c,l;const u={};for(const[d,f]of Object.entries(t)){const{code:t,env:p={}}=f,g=ve(f,"Transformer");if(!g.ok){e.logger.warn(`Transformer ${d} invalid (${g.code}): ${g.reason}. Skipping.`);continue}const{config:v}=lt(f,"before"),{config:h}=lt({...f,config:v},"next"),m=Object.keys(p).length>0?{...h,env:p}:h,{cache:y}=f,w=y?{...m,cache:y}:m,b=null!=(o=null==(n=f.config)?void 0:n.state)?o:f.state,k=void 0!==b&&void 0===w.state?{...w,state:b}:w,I=e.logger.scope("transformer").scope(d),S={collector:e,logger:I,id:d,ingest:oe(d),config:k,env:p,reportError:rt(e,"transformer",d,I)},E=null!=t?t:e=>{const t=f.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,s]of Object.entries(o)){if("object"!=typeof s||null===s)continue;const o=s;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${d}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await he(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},q=await E(S);void 0!==f.before&&void 0===(null==(s=q.config)?void 0:s.before)&&(q.config={...null!=(r=q.config)?r:{},before:f.before}),void 0!==f.next&&void 0===(null==(a=q.config)?void 0:a.next)&&(q.config={...null!=(i=q.config)?i:{},next:f.next}),void 0!==b&&void 0===(null==(c=q.config)?void 0:c.state)&&(q.config={...null!=(l=q.config)?l:{},state:b}),u[d]=q}return u}(i,e.transformers||{}),i}async function ln(e){e=e||{};const t=await cn(e);await async function(e,t={}){var n;const o={};for(const[s,r]of Object.entries(t)){const t=await bt(e,s,r);if(!t)continue;const a=null==(n=r.config)?void 0:n.require;t.config={...t.config,init:!1,...a?{require:[...a]}:{}},o[s]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await L(n.init.bind(n),n=>{if(n instanceof G)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,yt(n)&&await mt(e,n,t))}return await kt(e),o}(t,e.sources||{});const{consent:n,user:o,globals:s,custom:r}=e;n&&await t.command("consent",n),o&&await t.command("user",o),s&&await t.command("globals",s),r&&await t.command("custom",r),t.config.run&&await t.command("run");let a=t.elb;const i=Object.values(t.sources),c=i.find(e=>e.config.primary);return c?a=c.push:i.length>0&&(a=i[0].push),{collector:t,elb:a}}var un=async e=>{let t;return{get flow(){return t},trigger:(n,o)=>async n=>{var s,r,a,i,c,l,u,d,f;const p=o||{};if(p.url){const e=new URL(p.url);window.history.replaceState({},"",e.pathname+e.search)}if(p.referrer&&Object.defineProperty(document,"referrer",{value:p.referrer,configurable:!0}),p.sessionData){const e=p.sessionKey||"elbSessionId";localStorage.setItem(e,JSON.stringify(p.sessionData))}if(p.deviceId){const e=p.deviceKey||"elbDeviceId";localStorage.setItem(e,p.deviceId)}if(!t){const n=await ln({...e,run:null==(s=e.run)||s});t={collector:n.collector,elb:n.elb};const o=p.sessionKey||(null==(c=null==(i=null==(a=null==(r=e.sources)?void 0:r.session)?void 0:a.config)?void 0:i.settings)?void 0:c.sessionKey)||"elbSessionId",g=p.deviceKey||(null==(f=null==(d=null==(u=null==(l=e.sources)?void 0:l.session)?void 0:u.config)?void 0:d.settings)?void 0:f.deviceKey)||"elbDeviceId";localStorage.removeItem(o),localStorage.removeItem(g),p.sessionData&&localStorage.setItem(o,JSON.stringify(p.sessionData)),p.deviceId&&localStorage.setItem(g,p.deviceId),e.consent&&await t.collector.command("consent",e.consent)}}}},dn=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.localStorage;if(n.sessionData&&"object"==typeof n.sessionData){const e="string"==typeof n.sessionKey?n.sessionKey:"elbSessionId";o.setItem(e,JSON.stringify(n.sessionData))}if("string"==typeof n.deviceId){const e="string"==typeof n.deviceKey?n.deviceKey:"elbDeviceId";o.setItem(e,n.deviceId)}};export{c 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,{SettingsSchema:()=>a,settings:()=>i});import{zodToSchema as o}from"@walkeros/core/dev";import{z as s,ClickIdEntrySchema as r}from"@walkeros/core/dev";var a=s.object({storage:s.boolean().default(!1).describe("Enable persistent storage for session/device IDs").optional(),consent:s.union([s.string(),s.array(s.string())]).describe("Consent key(s) required to enable storage mode").optional(),length:s.number().default(30).describe("Session timeout in minutes").optional(),pulse:s.boolean().default(!1).describe("Keep session alive on each event").optional(),sessionKey:s.string().default("elbSessionId").describe("Storage key for session ID").optional(),sessionStorage:s.enum(["local","session"]).default("local").describe("Storage type for session").optional(),deviceKey:s.string().default("elbDeviceId").describe("Storage key for device ID").optional(),deviceStorage:s.enum(["local","session"]).default("local").describe("Storage type for device").optional(),deviceAge:s.number().default(30).describe("Device ID age in days").optional(),cb:s.any().describe("Custom session callback function or false to disable").optional(),clickIds:s.array(r).describe("Custom click-ID registry. Entries with a `param` matching a default override the platform name in place; new params append to the end of the priority list.").optional()}),i=o(a),c={};t(c,{createTrigger:()=>un,step:()=>l,trigger:()=>dn});var l={};t(l,{newMarketingSession:()=>u,returningVisitor:()=>d});var u={title:"New marketing session",description:"A visit with UTM parameters starts a new session and emits walker user, session, and session start calls.",trigger:{type:"load",options:{url:"https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=winter-sale"}},in:{storage:!0},out:[["elb","user",{session:"s3ss10n-id",device:"d3v1c3-id"}],["elb","session",{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}],["elb",{name:"session start",data:{id:"s3ss10n-id",start:17e11,isNew:!0,count:1,runs:1,marketing:!0,source:"google",medium:"cpc",campaign:"winter-sale",referrer:"",device:"d3v1c3-id",isStart:!0,storage:!0,updated:17e11}}]]},d={title:"Returning visitor",description:"A returning visit with a google referrer reuses the stored device id and increments the session count.",trigger:{type:"load",options:{referrer:"https://google.com"}},in:{storage:!0},out:[["elb","user",{session:"n3w-s3ss10n",device:"d3v1c3-id"}],["elb","session",{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}],["elb",{name:"session start",data:{id:"n3w-s3ss10n",start:1700001e6,isNew:!1,count:3,runs:1,referrer:"google.com",device:"d3v1c3-id",isStart:!0,storage:!0,updated:1700001e6}}]]};import{assign as f}from"@walkeros/core";import{assign as p,createLogger as g}from"@walkeros/core";import{assign as v,buildCacheContext as h,clone as m,compileCache as y,checkCache as w,storeCache as b,createIngest as k,debounce as I,emitStep as S,getId as E,getGrantedConsent as q,getNextSteps as x,isDefined as O,isFunction as j,isObject as C,OBSERVE_ENV_KEY as D,processEventMapping as A,stepId as $,tryCatchAsync as M,useHooks as _,compileState as T,applyState as P}from"@walkeros/core";import{emitStep as K}from"@walkeros/core";import{parseCallPath as z}from"@walkeros/core";import{isArray as F,FatalError as U}from"@walkeros/core";import{tryCatch as N,tryCatchAsync as R}from"@walkeros/core";import{stepId as B}from"@walkeros/core";import{createIngest as H,FatalError as G,getMappingValue as V,parseTraceparent as W,tryCatchAsync as L,getNextSteps as J,compileCache as Y,checkCache as Q,storeCache as X,applyUpdate as Z,buildCacheContext as ee,compileState as te,applyState as ne}from"@walkeros/core";import{createIngest as oe,emitStep as se,FatalError as re,isObject as ae,stepId as ie,tryCatchAsync as ce,useHooks as le,getNextSteps as ue,compileCache as de,checkCache as fe,storeCache as pe,buildCacheContext as ge,validateStepEntry as ve,processEventMapping as he,compileState as me,applyState as ye}from"@walkeros/core";import{assign as we,getSpanId as be,getTraceId as ke,isFunction as Ie,isString as Se}from"@walkeros/core";import{isObject as Ee}from"@walkeros/core";import{createIngest as qe,emitStep as xe,FatalError as Oe,getGrantedConsent as je,processEventMapping as Ce,tryCatchAsync as De,useHooks as Ae}from"@walkeros/core";import{FatalError as $e,useHooks as Me,tryCatchAsync as _e}from"@walkeros/core";import{emitStep as Te,useHooks as Pe}from"@walkeros/core";import{compileMatcher as Ke,emitStep as ze,readCacheEnvelope as Fe,wrapCacheEnvelope as Ue}from"@walkeros/core";var Ne={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 Re(e,t,n){var o,s,r;return{traceId:null!=(r=null!=(s=null==(o=e.source)?void 0:o.trace)?s:null==t?void 0:t._meta.trace)?r:n.trace,sourceId:null==t?void 0:t._meta.path[0],parentEventId:null==t?void 0:t._meta.parentEventId}}function Be(e,t){var n;const o=e.status.startedAt,s={flowId:null!=(n=e.name)?n:"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-o};return t.traceId&&(s.traceId=t.traceId),t.sourceId&&(s.sourceId=t.sourceId),t.parentEventId&&(s.parentEventId=t.parentEventId),s}function He(e){return"object"==typeof e&&null!==e}function Ge(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 s of e)o.push(Ge(s,t,n+1));return o}const s={};t.set(e,s);for(const[o,r]of Object.entries(e))s[o]="function"==typeof r?r:Ge(r,t,n+1);return s}function Ve(e){const t=[],n=[],{simulation:o,...s}=e,r=Ge(s,new WeakMap,0);for(const e of o){const o=z(e);if(0===o.length)continue;const s=o.join(".");if(o.length-1>=8){n.push(s);continue}let a=r,i=!0;for(let e=0;e<o.length-1;e++){const t=a[o[e]];if(!He(t)){i=!1;break}a=t}const c=o[o.length-1];if(!i||!(c in a)){n.push(s);continue}const l=a[c];"function"==typeof l?a[c]=function(...e){return t.push({fn:s,args:e,ts:Date.now()}),l.apply(this,e)}:n.push(s)}return{wrappedEnv:r,calls:t,unresolved:n}}function We(e,t){try{return e[t]}catch(e){return"[unreadable]"}}function Le(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const s=e;if(t.has(s))return"[circular]";if(o>=6)return"[truncated]";let r;t.add(s);try{if(Array.isArray(s))r=s.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(s)){const e={};for(const t of Object.keys(s))e[t]=n(We(s,t),o+1);r=e}else r=function(e){try{return String(e)}catch(e){return"[object]"}}(s)}catch(e){r="[unreadable]"}return t.delete(s),r};return e.map(e=>n(e,0))}function Je(e){return e.map(e=>({fn:e.fn,args:Le(e.args),ts:e.ts}))}function Ye(e,t,n,o){var s;if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(null!=(s=n.onOverflow)?s:"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 Qe=new WeakMap;function Xe(e,t,n,o){Qe.get(e)||(Qe.set(e,!0),t.warn(n,o))}function Ze(e){Qe.delete(e)}var et=()=>Date.now();function tt(e){var t,n;if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:null!=(t=e.threshold)?t:5,cooldown:null!=(n=e.cooldown)?n:3e4}}function nt(e,t,n,o,s){if("partial"===n)return;const r=((a=e)[i=t]||(a[i]={state:"closed",consecutiveFailures:0}),a[i]);var a,i;return"success"===n?(r.consecutiveFailures=0,r.state="closed",r.probing=!1,void(r.openUntil=void 0)):(r.consecutiveFailures+=1,"half-open"===r.state?(r.state="open",r.probing=!1,void(r.openUntil=et()+s)):void(r.consecutiveFailures>=o&&(r.state="open",r.probing=!1,r.openUntil=et()+s)))}function ot(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function st(e,t,n,o){var s;e.dropped[t]||(e.dropped[t]={});const r=e.dropped[t];return r[n]=(null!=(s=r[n])?s:0)+o,r[n]}function rt(e,t,n,o,s){const r=B(t,n);return(t,a)=>{var i;try{if(a)return s?function(e,t,n,o,s,r){var a;const i=t.dlq=t.dlq||[],c={max:null!=(a=t.config.dlqMax)?a:100},l=Ye(i,[o,s],c);if(l.dropped>0){const t=st(e.status,B("destination",n),"dlq",l.dropped);Xe(i,r,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:c.max,droppedCount:t})}else i.length<c.max&&Ze(i);const u=ot(e,n);u.failed++,u.dlqSize=i.length,e.status.failed++;const d=tt(t.config.breaker);if(d){const o=t.config.id||n;nt(e.status.breakers,B("destination",o),"transport-failure",d.threshold,d.cooldown)}}(e,s,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[r]=(null!=(i=e.status.connectionErrors[r])?i:0)+1,o.error("connection error",{error:t instanceof Error?t.message:String(t)})}catch(e){}}}function at(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function it(e,t){return e?t.stores[e]:t.stores.__cache}function ct(e){var t;const n={};for(const[o,s]of Object.entries(e)){const e=null==(t=s.config)?void 0:t.next;"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?n[o]={next:e}:n[o]={}}return n}function lt(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 ut(e,t={}){if(!e)return[];if(Array.isArray(e))return e;const n=[],o=new Set;let s=e;for(;s&&t[s]&&!o.has(s);){o.add(s),n.push(s);const e=t[s].next;if(Array.isArray(e)){n.push(...e);break}s=e}return n}async function dt(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",s=e.logger.scope(`transformer:${o}`),r={collector:e,logger:s,id:n,ingest:oe(n),config:t.config,env:vt(t.config.env),reportError:rt(e,"transformer",n,s)};s.debug("init");const a=await le(t.init,"TransformerInit",e.hooks,e.logger)(r);if(!1===a)return!1;t.config={...a||t.config,env:(null==a?void 0:a.env)||t.config.env,init:!0},s.debug("init done")}return!0}async function ft(e,t,n,o,s,r){const a=t.type||"unknown",i=e.logger.scope(`transformer:${a}`),c={collector:e,logger:i,id:n,ingest:s,config:t.config,env:{...vt(t.config.env),...r?{respond:r}:{}},reportError:rt(e,"transformer",n,i)};i.debug("push",{event:o.name});const l="string"==typeof o.id?o.id:"",{traceId:u,sourceId:d,parentEventId:f}=Re(o,s,e),p=Date.now(),g=Be(e,{stepId:ie("transformer",n),stepType:"transformer",phase:"in",eventId:l,now:p,traceId:u,sourceId:d,parentEventId:f});g.inEvent=o,se(e,g);try{const s=await le(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),a=Be(e,{stepId:ie("transformer",n),stepType:"transformer",phase:"out",eventId:l,now:r,traceId:u,sourceId:d,parentEventId:f});return a.durationMs=r-p,a.outEvent=s,se(e,a),i.debug("push done"),s}catch(t){const o=Date.now(),s=Be(e,{stepId:ie("transformer",n),stepType:"transformer",phase:"error",eventId:l,now:o,traceId:u,sourceId:d,parentEventId:f});throw s.durationMs=o-p,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},se(e,s),t}}function pt(e,t){return e?{...e,_meta:{...e._meta,path:[...e._meta.path]}}:oe(t)}async function gt(e,t,n,o,s,r,a){var i,c,l,u,d,f,p,g,v;s||(s=oe(null!=(i=n[0])?i:"chain")),a&&s._meta&&(s._meta.chainPath=a);let h=o,m=r;for(const o of n){const r=t[o];if(!r){e.logger.warn(`Transformer not found: ${o}`);continue}if(s&&s._meta&&s._meta.path.length>256)return e.logger.error(`Max path length exceeded at ${o}`),{event:null,respond:m};if(s&&s._meta&&(s._meta.hops++,s._meta.path.push(o)),!await ce(dt,t=>{if(t instanceof re)throw t;return e.status.failed++,e.logger.scope(`transformer:${r.type||"unknown"}`).error("transformer init failed",{transformer:o,error:t}),!1})(e,r,o))return{event:null,respond:m};if(a&&void 0!==(null==(l=null==(c=r.config)?void 0:c.chainMocks)?void 0:l[a])){const t=r.config.chainMocks[a];e.logger.scope(`transformer:${r.type||"unknown"}`).debug("chainMock",{chain:a}),h=t;continue}if(void 0!==(null==(u=r.config)?void 0:u.mock)){e.logger.scope(`transformer:${r.type||"unknown"}`).debug("mock"),h=r.config.mock;continue}if(null==(d=r.config)?void 0:d.disabled)continue;const i=null==(f=r.config)?void 0:f.cache,y=i?de(i):void 0,w=y?at(y,e):void 0,b=(null==(p=r.config)?void 0:p.state)?me(r.config.state):void 0,k=null==b?void 0:b.filter(e=>"get"===e.mode),I=null==b?void 0:b.filter(e=>"set"===e.mode),S=async t=>I&&0!==I.length?ye(I,t=>it(t,e),t,e):t;let E;if(y&&w){const e=ge(s,h),t=await fe(y,w,e);if("HIT"===(null==t?void 0:t.status)&&t.value){if(h=t.value,y.stop)return{event:h,respond:m,stopped:!0};continue}"MISS"===(null==t?void 0:t.status)&&(E={key:t.key,ttl:t.rule.ttl})}const q=r.config.before;if(q){const n=ue(q,ge(s,h));if(1===n.length){const o=ut(n[0],ct(t));if(o.length>0){const n=await gt(e,t,o,h,s,m,a);if(null===n.event)return{event:null,respond:null!=(g=n.respond)?g:m};if(n.stopped)return{event:Array.isArray(n.event)?n.event[0]:n.event,respond:null!=(v=n.respond)?v:m,stopped:!0};n.respond&&(m=n.respond),h=Array.isArray(n.event)?n.event[0]:n.event}}else n.length>1&&await Promise.all(n.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),h,pt(s,n),void 0,a)))}k&&k.length>0&&(h=await ye(k,t=>it(t,e),h,e));const x=await ce(ft,t=>(e.logger.scope(`transformer:${r.type||"unknown"}`).error("Push failed",{error:t}),!1))(e,r,o,h,s,m);if(!1===x)return{event:null,respond:m};if(Array.isArray(x)){const r=n.slice(n.indexOf(o)+1),i=await Promise.all(x.map(async n=>{const o=await S(n.event||h),i=pt(s,"unknown");if(n.next){const s=ue(n.next,ge(i,o));if(0===s.length)return{event:o,respond:m};if(1===s.length){const n=ut(s[0],ct(t));return n.length>0?gt(e,t,n,o,i,m,a):{event:o,respond:m}}return(await Promise.all(s.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),o,pt(i,n),void 0,a)))).map(e=>({event:e.event,respond:void 0}))}return r.length>0?gt(e,t,r,o,i,m,a):{event:o,respond:m}}));let c=m;const l=[];for(const e of i.flat())if(null!==e)if(e&&"object"==typeof e&&"event"in e){const t=e;if(t.respond&&(c=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:c}:1===l.length?{event:l[0],respond:c}:{event:l,respond:c}}if(x&&"object"==typeof x){const{event:n,respond:o,next:r}=x;if(o&&(m=o),void 0!==r){const o=await S(n||h),i=ue(r,ge(s,o));if(0===i.length){h=o;continue}if(1===i.length){const n=ut(i[0],ct(t));return n.length>0?gt(e,t,n,o,s,m,a):(e.logger.warn(`Branch target not found: ${JSON.stringify(r)}`),{event:null,respond:m})}return await Promise.all(i.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),o,pt(s,n),void 0,a))),{event:null,respond:void 0}}n&&(h=n)}I&&I.length>0&&(h=await ye(I,t=>it(t,e),h,e)),E&&w&&pe(w,E.key,h,E.ttl);const O=r.config.next,j="string"==typeof O||Array.isArray(O)&&O.every(e=>"string"==typeof e),C=void 0!==O&&!j;if((!x||"object"==typeof x&&!x.next)&&C){const n=ue(r.config.next,ge(s,h));if(1===n.length){const o=ut(n[0],ct(t));return o.length>0?gt(e,t,o,h,s,m,a):{event:h,respond:m}}return n.length>1?(await Promise.all(n.map(n=>ce(gt,t=>(e.logger.scope("transformer:many").error(`many branch ${n} failed`,{error:t}),{event:null,respond:void 0}))(e,t,ut(n,ct(t)),h,pt(s,n),void 0,a))),{event:null,respond:void 0}):{event:h,respond:m}}}return{event:h,respond:m}}function vt(e){return e&&ae(e)?e:{}}function ht(e){return"string"==typeof e||!(!Array.isArray(e)||!e.every(e=>"string"==typeof e))}async function mt(e,t,n){var o,s;if(!t.on||!(null==(o=t.queueOn)?void 0:o.length))return;const r=t.queueOn;t.queueOn=[];const a=n||(null==(s=t.config)?void 0:s.id)||"unknown";for(const{type:n,data:o}of r)Ot(n)&&!$t(e,t,n)||(await L(t.on,t=>{if(t instanceof G)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:a,type:n,error:t})})(n,o),Ot(n)&&At(e,t,n))}function yt(e){var t;return Boolean(e.config.init)&&!(null==(t=e.config.require)?void 0:t.length)}function wt(e){return"object"==typeof e&&null!==e}async function bt(e,t,n){var o,s;const{code:r,config:a={},env:i={},primary:c,next:l,before:u,cache:d}=n,f=null!=(o=a.state)?o:n.state,p=f?te(f):void 0,g=d,v=g?Y({...g,stop:null==(s=g.stop)||s}):void 0,h=ht(l)?ut(l,ct(e.transformers)):void 0,m=ht(u)?ut(u,ct(e.transformers)):void 0,y=i.push,w=null!=y?y:e.push,b=Boolean(y),k=async(n,o,s)=>{var r;let i;const c=null!=m?m:void 0!==u?(()=>{const t=J(u,ee(s.ingest));return 0===t.length?[]:ut(1===t.length?t[0]:t,ct(e.transformers))})():[];let d=[n];if(c.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const o=await gt(e,e.transformers,c,n,s.ingest,s.respond,`source.${t}.before`);if(null===o.event)return{ok:!0};if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),d=Array.isArray(o.event)?o.event:[o.event]}if(v){const t=at(v,e);if(t){const n=ee(s.ingest),o=await Q(v,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&v.stop){let t=o.value;return o.rule.update&&(t=await Z(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),null==(r=s.respond)||r.call(s,t),{ok:!0}}if("MISS"===o.status&&v.stop&&s.respond){const r=s.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},l=o.key,u=o.rule.ttl,d=n=>{X(t,l,n,u),a?i=(async()=>{const t=await Z(n,a,c,e);r(t)})():r(n)};s.respond=d}"MISS"!==o.status||v.stop||X(t,o.key,!0,o.rule.ttl)}}}const f=h?{kind:"single",preChain:h}:void 0!==l?(()=>{const t=J(l,ee(s.ingest));return 0===t.length?{kind:"single",preChain:[]}:1===t.length?{kind:"single",preChain:ut(t[0],ct(e.transformers))}:{kind:"many",branches:t.map(t=>ut(t,ct(e.transformers)))}})():{kind:"single",preChain:[]};!b&&p&&p.length>0&&(d=await Promise.all(d.map(t=>ne(p,t=>it(t,e),t,e))));let g={ok:!0};for(const n of d)"many"===f.kind?(await Promise.all(f.branches.map((r,i)=>L(async()=>b?w(n):w(n,{...o,id:t,ingest:pt(s.ingest,`${t}.${i}`),respond:void 0,mapping:a,preChain:r}),t=>(e.logger.scope("source:many").error(`many branch ${i} failed`,{error:t}),{ok:!0}))())),g={ok:!0}):g=b?await w(n):await w(n,{...o,id:t,ingest:s.ingest,respond:s.respond,mapping:a,preChain:f.preChain});return i&&await i,g},I=async n=>{const o=H(t),s=W(function(e){var t;if(!wt(e))return;const n=e.headers;if(wt(n)){if("get"in(o=n)&&"function"==typeof o.get)return null!=(t=n.get("traceparent"))?t:void 0;if("traceparent"in n)return n.traceparent;for(const e of Object.keys(n))if("traceparent"===e.toLowerCase())return n[e]}var o}(n));if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!a.ingest||void 0===n)return o;const r=await V(n,a.ingest,{collector:e});return{...o,...r,_meta:o._meta}},S=e.logger.scope("source").scope(t),E={command:e.command,sources:e.sources,elb:e.elb,logger:S,...i,push:async(e,n={})=>{const o={ingest:H(t),respond:void 0};return k(e,n,o)}},q={collector:e,logger:S,id:t,config:a,env:E,withScope:async(e,t,n)=>{const o={ingest:await I(e),respond:t};return n({...E,push:(e,t={})=>k(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:rt(e,"source",t,S)},x=await L(r,n=>{if(n instanceof G)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,error:n})})(q);if(!x)return;const O=x.type||"unknown",j=e.logger.scope(O).scope(t);return E.logger=j,c&&(x.config={...x.config,primary:c}),x}async function kt(e){var t;for(const[t,n]of Object.entries(e.sources)){if(yt(n))continue;const o=n.config.require;if(!(null==o?void 0:o.length))continue;const s=o.filter(t=>!Ct(e,t));s.length!==o.length&&(n.config.require=s,yt(n)&&await mt(e,n,t))}for(const[n,o]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[n]||e.destinations[n])continue;const s=null==(t=o.config)?void 0:t.require;if(!s)continue;const r=s.filter(t=>!Ct(e,t));if(o.config&&(o.config.require=r),r.length>0)continue;delete e.pending.destinations[n];const a=Yt(o);!1!==a.config.queue&&(a.queuePush=[...e.queue]),e.destinations[n]=a}}function It(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 St=!1;function Et(){St||(St=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function qt(e,t,n,o){if(n instanceof U)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,error:n})}var xt=[Ne.Consent,Ne.User,Ne.Globals,Ne.Custom];function Ot(e){return xt.includes(e)}function jt(e,t){switch(t){case Ne.Consent:return Object.keys(e.consent).length>0;case Ne.User:return Object.keys(e.user).length>0;case Ne.Globals:return Object.keys(e.globals).length>0;case Ne.Custom:return Object.keys(e.custom).length>0;default:return!1}}function Ct(e,t){switch(t){case Ne.Consent:case Ne.User:case Ne.Globals:case Ne.Custom:return jt(e,t);case Ne.Run:case Ne.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Dt(e,t){var n;return null!=(n=e.cellVersion[String(t)])?n:0}function At(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Dt(e,n)}function $t(e,t,n){return e.allowed&&Dt(e,n)>function(e,t,n){const o=e.delivery.get(t),s=null==o?void 0:o[String(n)];return void 0===s?-1:s}(e,t,n)}function Mt(e,t,n){const o=e.cascade;if(!o)return!0;let s=o.counts.get(t);s||(s={},o.counts.set(t,s));const r=String(n),a=(s[r]||0)+1;return s[r]=a,a<=8||(9===a&&e.logger.error("state delivery did not converge",{type:r}),!1)}function _t(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Tt(e,t,n,o,s){if(!t.on)return;const r=t.type||"unknown",a=e.logger.scope(r).scope("on").scope(o),i={collector:e,logger:a,id:n,config:t.config,data:s,env:Qt(t.env,t.config.env),reportError:rt(e,"destination",n,a,t)};N(t.on,t=>qt(e,"destination",t,{destId:n,type:o}))(o,i)}function Pt(e,t,n,o){if(!It(e))return void Et();const s=Kt(e,t,o);if(n.length)switch(t){case Ne.Consent:!function(e,t,n){const o=n||e.consent,s=_t(e,Ne.Consent);t.forEach(t=>{$t(e,t,Ne.Consent)&&Mt(e,t,Ne.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{N(t[n],t=>qt(e,"consent",t,{key:n}))(o,s)}),At(e,t,Ne.Consent))})}(e,n,o);break;case Ne.Ready:!function(e,t){if(!e.allowed)return;const n=_t(e,Ne.Ready);t.forEach(t=>{N(t,t=>qt(e,"ready",t))(void 0,n)})}(e,n);break;case Ne.Run:!function(e,t){if(!e.allowed)return;const n=_t(e,Ne.Run);t.forEach(t=>{N(t,t=>qt(e,"run",t))(void 0,n)})}(e,n);break;case Ne.Session:!function(e,t){if(!e.session)return;const n=_t(e,Ne.Session);t.forEach(t=>{N(t,t=>qt(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=_t(e,t),r=Ot(t);n.forEach(n=>{"function"==typeof n&&(r&&!$t(e,n,t)||r&&!Mt(e,n,t)||(N(n,n=>qt(e,"generic",n,{type:t}))(s,o),r&&At(e,n,t)))});break}}}function Kt(e,t,n){switch(t){case Ne.Consent:return n||e.consent;case Ne.Session:return e.session;case Ne.User:return n||e.user;case Ne.Custom:return n||e.custom;case Ne.Globals:return n||e.globals;case Ne.Config:return n||e.config;default:return}}async function zt(e,t,n,o,s){if(!t.on)return!1;if(Ot(o)&&!$t(e,t,o))return!1;if(Ot(o)&&!Mt(e,t,o))return!1;const r=await R(t.on,t=>qt(e,"source",t,{sourceId:n,type:o}))(o,s);return Ot(o)&&At(e,t,o),!1===r}function Ft(e){return"number"==typeof e&&e>0?e:1e4}var Ut=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function Nt(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new Ut(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}var Rt=Object.freeze({batched:!0});function Bt(e){return e===Rt}function Ht(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function Gt(e,t,n){if(!e)return[];if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return ut(e,t);if("string"==typeof e)return ut(e,t);const o=x(e,h(n));return 0===o.length?[]:1===o.length?ut(o[0],t):ut(o,t)}async function Vt(e,t,n={},o){var s,r,a,i,c,l;const{allowed:u,consent:d,globals:f,user:p}=e;if(!u)return Jt({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=Ye(e.queue,t,{max:n});if(o.dropped>0){const t=st(e.status,$("collector"),"queue",o.dropped);Xe(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&Ze(e.queue);e.status.in++}o||(o=e.destinations);const g=e.transformers?ct(e.transformers):{},I=await Promise.all(Object.entries(o||{}).map(async([o,s])=>{var r,a,i,c,l;if(s.config.disabled)return{id:o,destination:s,skipped:!0};const u=s.config.id||o,I=$("destination",u),E=tt(s.config.breaker);if(E&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const s=et();return void 0!==o.openUntil&&s<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=s+n,!1)}(e.status.breakers,I,E.cooldown))return{id:o,destination:s,skipped:!0};const x=t=>{E&&nt(e.status.breakers,I,t,E.threshold,E.cooldown)},O=()=>{E&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,I)};let j=(s.queuePush||[]).map(e=>({...e,consent:d}));s.queuePush=[],t&&j.push(m(t));const C=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:k("unknown");if(!j.length&&!(null==(r=s.queueOn)?void 0:r.length))return O(),{id:o,destination:s,skipped:!0};if(!j.length&&(null==(a=s.queueOn)?void 0:a.length)){if(!q(s.config.consent,d))return O(),{id:o,destination:s,skipped:!0};let t=!1;try{t=await Wt(e,s,o,!0)}catch(t){e.status.failed++;const n=s.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),x("transport-failure")}return O(),{id:o,destination:s,skipped:!t}}const D=[],A=j.filter(t=>{const n=q(s.config.consent,d,t.consent);if(n)return t.consent=n,D.push(t),!1;const r=Be(e,{stepId:$("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...Re(t,C,e)});return r.skipReason="consent",d&&(r.consent={...d}),s.config.consent&&(r.meta={required:{...s.config.consent}}),S(e,r),!0});if(A.length>0){const t=s.queuePush,n=s.config.id||o,r={max:null!=(i=s.config.queueMax)?i:1e3};let a=0;for(const e of A)a+=Ye(t,e,r).dropped;if(a>0){ot(e,n);const o=st(e.status,$("destination",n),"queue",a);Xe(t,e.logger.scope(s.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:r.max,droppedCount:o})}else t.length<r.max&&Ze(t)}if(!D.length)return O(),{id:o,destination:s,queue:j};let _,K,z=!1;try{z=await Wt(e,s,o,!0)}catch(t){e.status.failed++;const n=s.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),x("transport-failure")}if(!z)return O(),{id:o,destination:s,queue:j};s.dlq||(s.dlq=[]);const F=Gt(s.config.before,g,C),U=s.config.next,N=null==(c=s.config)?void 0:c.cache,R=N?y(N):void 0,B=R?at(R,e):void 0,H=(null==(l=s.config)?void 0:l.state)?T(s.config.state):void 0,G=null==H?void 0:H.filter(e=>"get"===e.mode),V=null==H?void 0:H.filter(e=>"set"===e.mode);let W=0,L=0;return await Promise.all(D.map(async t=>{let r;if(t.globals=v(f,t.globals),t.user=v(p,t.user),(null==R?void 0:R.stop)&&B){const e=h(C,t),n=await w(R,B,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(r={key:n.key,ttl:n.rule.ttl})}let a=t,i=n.respond;if(F.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const s=await gt(e,e.transformers,F,t,C,n.respond,`destination.${o}.before`);if(null===s.event)return t;s.respond&&(i=s.respond),a=Array.isArray(s.event)?s.event[0]:s.event}if(R&&!R.stop&&B){const e=h(C,a),n=await w(R,B,e);if("HIT"===(null==n?void 0:n.status))return t;"MISS"===(null==n?void 0:n.status)&&(r={key:n.key,ttl:n.rule.ttl})}G&&G.length>0&&a&&(a=await P(G,t=>it(t,e),a,e));const c=Date.now();let l=!1;const u=await M(Lt,t=>{var n;const r=s.type||"unknown";e.logger.scope(r).error("Push failed",{error:t,event:a.name}),_=t,l=!0;const i=s.dlq,c=s.config.id||o,u={max:null!=(n=s.config.dlqMax)?n:100},d=Ye(i,[a,t],u);if(d.dropped>0){ot(e,c);const t=st(e.status,$("destination",c),"dlq",d.dropped);Xe(i,e.logger.scope(s.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:c,cap:u.max,droppedCount:t})}else i.length<u.max&&Ze(i)})(e,s,o,a,C,i);if(W+=Date.now()-c,r&&B&&void 0===s.config.mock&&b(B,r.key,null==u||u,r.ttl),!l&&!Bt(u)&&V&&V.length>0&&a&&(a=await P(V,t=>it(t,e),a,e)),void 0===u||Bt(u)||(K=u),Bt(u)&&L++,!l&&U){void 0!==u&&(C._response=u);const t=Gt(U,g,C);if(t.length>0&&e.transformers&&Object.keys(e.transformers).length>0){const n=await gt(e,e.transformers,t,a,C,i,`destination.${o}.next`);n.respond&&(i=n.respond)}}return t})),{id:o,destination:s,error:_,response:K,totalDuration:W,batchedCount:L,allowedCount:D.length,canonicalId:u,breakerConfig:E}})),E={},x={},O={};for(const t of I){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};ot(e,t.id);const u=e.status.destinations[t.id],d=Date.now();u.queuePushSize=null!=(r=null==(s=n.queuePush)?void 0:s.length)?r:0,u.dlqSize=null!=(i=null==(a=n.dlq)?void 0:a.length)?i:0;const f=t.breakerConfig,p=t.canonicalId?$("destination",t.canonicalId):void 0,g=t=>{f&&p&&nt(e.status.breakers,p,t,f.threshold,f.cooldown)};if(t.error)o.error=t.error,O[t.id]=o,u.failed++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.failed++,g("transport-failure");else if(t.queue&&t.queue.length)x[t.id]=o;else{const n=null!=(c=t.batchedCount)?c:0,s=null!=(l=t.allowedCount)?l:0;(Math.max(0,s-n)>0||0===s)&&(E[t.id]=o,u.count++,u.lastAt=d,u.duration+=t.totalDuration||0,e.status.out++,g("success"))}}return Jt({event:t,...Object.keys(E).length&&{done:E},...Object.keys(x).length&&{queued:x},...Object.keys(O).length&&{failed:O}})}async function Wt(e,t,n,o=!1){var s;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",a=e.logger.scope(r),i={collector:e,logger:a,id:n,config:t.config,env:Qt(t.env,t.config.env),reportError:rt(e,"destination",n,a,t)};a.debug("init");const c=Date.now();let l;S(e,Be(e,{stepId:$("destination",n),stepType:"destination",phase:"init",eventId:"",now:c}));try{l=await _(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),s=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw s.durationMs=o-c,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},S(e,s),t}if(!1===l)return l;if(t.config={...l||t.config,init:!0},null==(s=t.queueOn)?void 0:s.length){const o=t.queueOn;t.queueOn=[];for(const{type:s,data:r}of o)Tt(e,t,n,s,r)}a.debug("init done")}return!0}async function Lt(e,t,n,o,s,r){var a,i,c,l,u,d,f,p;const{config:g}=t,v=await A(o,g,e);if(v.ignore)return!1;const h=t.type||"unknown",m=e.logger.scope(h),y={collector:e,logger:m,id:n,config:g,data:v.data,rule:v.mapping,ingest:s,env:{...Qt(t.env,g.env),...r?{respond:r}:{}},reportError:rt(e,"destination",n,m,t)};if(void 0!==g.mock)return m.debug("mock",{event:v.event.name}),g.mock;const w=v.mapping,b=void 0!==(null==w?void 0:w.batch),k=b?v.mappingKey||"* *":" batch-all";if((b||void 0!==g.batch)&&t.pushBatch&&void 0===g.mock){if(t.batches=t.batches||{},!t.batches[k]){const o={key:k,entries:[],events:[],data:[]},s=Ht(null==w?void 0:w.batch),r=Ht(g.batch),f=null!=(i=null!=(a=s.wait)?a:r.wait)?i:3e4,p=null!=(l=null!=(c=s.size)?c:r.size)?l:1e3,v=null!=(d=null!=(u=s.age)?u:r.age)?d:3e4,h=Qt(t.env,g.env),y=I(async()=>{var o,s;const r=t.batches[k],a=r.batched;if(0===a.entries.length)return;const i={key:a.key,entries:a.entries,events:a.events,data:a.data};a.entries=[],a.events=[],a.data=[];const c=i.entries[0],{traceId:l,sourceId:u,parentEventId:d}=Re(c.event,c.ingest,e),f={collector:e,logger:m,id:n,config:g,data:void 0,rule:r.isDefault?void 0:c.rule,ingest:c.ingest,env:{...h,...c.respond?{respond:c.respond}:{}},reportError:rt(e,"destination",n,m,t)};m.debug("push batch",{events:i.entries.length});const p=t.config.id||n,v=ot(e,p),y=tt(t.config.breaker),w=$("destination",p),b=t=>{y&&nt(e.status.breakers,w,t,y.threshold,y.cooldown)},I=Date.now(),E=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"flush",eventId:"",now:I,traceId:l,sourceId:u,parentEventId:d});E.batch={size:i.entries.length,index:0},S(e,E);const q=n=>{var o;const s=t.dlq=t.dlq||[],r={max:null!=(o=t.config.dlqMax)?o:100};let a=0;for(const e of n)a+=Ye(s,e,r).dropped;if(a>0){const t=st(e.status,$("destination",p),"dlq",a);Xe(s,m,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:p,cap:r.max,droppedCount:t})}else s.length<r.max&&Ze(s);v.failed+=n.length,v.dlqSize=s.length,e.status.failed+=n.length};let x=i.entries.length;const O=Ft(g.timeout),j=await M((o,s)=>Nt(Promise.resolve(_(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),O,`Destination "${n}" batch delivery timed out after ${O}ms`),t=>{x=0;const o=Date.now(),s=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"error",eventId:"",now:o,traceId:l,sourceId:u,parentEventId:d});s.durationMs=o-I,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s.batch={size:i.entries.length,index:0},S(e,s),q(i.entries.map(e=>[e.event,t])),b("transport-failure"),m.error("Push batch failed",{error:t instanceof Error?t.message:String(t),entries:i.entries.length})})(i,f);if(C(D=j)&&Array.isArray(D.failed)&&j.failed.length>0){const e=[],t=new Set;for(const n of j.failed){const s=i.entries[n.index];s&&!t.has(n.index)&&(t.add(n.index),e.push([s.event,null!=(o=n.error)?o:new Error(`Push batch entry ${n.index} failed (no per-row error provided)`)]))}e.length>0&&(q(e),x=Math.max(0,i.entries.length-e.length),m.error("Push batch partial failure",{failed:e.length,delivered:x,entries:i.entries.length}))}var D;m.debug("push batch done"),v.inFlightBatch=Math.max(0,(null!=(s=v.inFlightBatch)?s:0)-i.entries.length),x>0&&(v.count+=x,v.lastAt=Date.now(),e.status.out+=x,b("success"))},{wait:f,size:p,age:v});t.batches[k]={batched:o,isDefault:!b,batchFn:()=>{y()},flush:async()=>{await y.flush()}}}const p=t.batches[k];p.batched.entries.push({event:v.event,ingest:s,respond:r,rule:w,data:v.data}),p.batched.events.push(v.event),O(v.data)&&p.batched.data.push(v.data);const h="string"==typeof v.event.id?v.event.id:"",y=Re(o,s,e),E=Date.now(),q=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"in",eventId:h,now:E,traceId:y.traceId,sourceId:y.sourceId,parentEventId:y.parentEventId});v.mappingKey&&(q.mappingKey=v.mappingKey),v.event.consent&&(q.consent={...v.event.consent}),q.inEvent=v.event,S(e,q);const x=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"out",eventId:h,now:E,traceId:y.traceId,sourceId:y.sourceId,parentEventId:y.parentEventId});v.mappingKey&&(x.mappingKey=v.mappingKey),x.outEvent=v.event,x.batch={size:p.batched.entries.length,index:p.batched.entries.length-1},S(e,x);const j=t.config.id||n,D=ot(e,j);return D.inFlightBatch=(null!=(f=D.inFlightBatch)?f:0)+1,p.batchFn(),Rt}{let r;if(m.debug("push",{event:v.event.name}),"trace"===(null==(p=e.observeLevel)?void 0:p.call(e))&&Array.isArray(t.calls)&&t.calls.length>0){const e=Ve({...y.env,simulation:t.calls});y.env=e.wrappedEnv,r=e.calls,e.unresolved.length>0&&(e.wrappedEnv[D]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const a="string"==typeof v.event.id?v.event.id:"",{traceId:i,sourceId:c,parentEventId:l}=Re(o,s,e),u=Date.now(),d=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"in",eventId:a,now:u,traceId:i,sourceId:c,parentEventId:l});v.mappingKey&&(d.mappingKey=v.mappingKey),v.event.consent&&(d.consent={...v.event.consent}),d.inEvent=v.event,S(e,d);try{const o=Ft(g.timeout),s=await Nt(Promise.resolve(_(t.push,"DestinationPush",e.hooks,e.logger)(v.event,y)),o,`Destination "${n}" delivery timed out after ${o}ms`),d=Date.now(),f=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"out",eventId:a,now:d,traceId:i,sourceId:c,parentEventId:l});return f.durationMs=d-u,f.outEvent=v.event,r&&r.length>0&&(f.calls=Je(r)),O(s)&&(f.meta={...f.meta,response:s}),v.mappingKey&&(f.mappingKey=v.mappingKey),S(e,f),m.debug("push done"),s}catch(t){const o=Date.now(),s=Be(e,{stepId:$("destination",n),stepType:"destination",phase:"error",eventId:a,now:o,traceId:i,sourceId:c,parentEventId:l});throw s.durationMs=o-u,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},r&&r.length>0&&(s.calls=Je(r)),v.mappingKey&&(s.mappingKey=v.mappingKey),S(e,s),t}}}function Jt(e){return{ok:!(null==e?void 0:e.failed),...e}}function Yt(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:a}=lt(e,"before"),{config:i}=lt({...e,config:a},"next"),c={...t.config,...n,...i};s&&(c.cache=s),void 0!==r&&void 0===c.state&&(c.state=r);const l=Qt(t.env,o);return{...t,config:c,env:l}}function Qt(e,t){return e||t?t?e&&C(e)&&C(t)?{...e,...t}:t:e:{}}async function Xt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{var s;const r=o.destroy;if(!r)return;const a=o.type||"unknown",i=n.scope(a),c={id:e,config:o.config,env:null!=(s=o.env)?s:{},logger:i};let l;try{await Promise.race([r(c),new Promise((n,o)=>{l=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{l&&clearTimeout(l)}});await Promise.allSettled(o)}function Zt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function en(e,t,n){let o,s,r=!1;const a=function(e){return e.cascade?()=>{}:(e.cascade={counts:new WeakMap},()=>{e.cascade=void 0})}(e);try{return await async function(){switch(t){case Ne.Config:Ee(n)&&(we(e.config,n,{shallow:!1}),s=n,r=!0);break;case Ne.Consent:if(Ee(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=f(e.consent,n),{update:n}}(e,n);Zt(e,Ne.Consent),s=t,r=!0}break;case Ne.Custom:Ee(n)&&(e.custom=we(e.custom,n),Zt(e,Ne.Custom),s=n,r=!0);break;case Ne.Destination:Ee(n)&&"code"in n&&Ee(n.code)&&(o=await async function(e,t){var n;const{code:o,config:s={},env:r={},before:a,next:i,cache:c,state:l}=t;if(!j(o.push))return Jt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const u=s||{init:!1};let d=a?{...u,before:a}:{...u};i&&(d={...d,next:i}),c&&(d={...d,cache:c}),void 0!==l&&void 0===d.state&&(d={...d,state:l});let f=d.id;if(!f)do{f=E(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[f]||e.pending.destinations[f]);if(null==(n=d.require)?void 0:n.length){e.pending.destinations[f]=t,await kt(e);const n=e.destinations[f];return n?Vt(e,void 0,{},{[f]:n}):Jt({ok:!0})}const p={...o,config:d,env:Qt(o.env,r)};return e.destinations[f]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),Vt(e,void 0,{},{[f]:p})}(e,n));break;case Ne.Globals:Ee(n)&&(e.globals=we(e.globals,n),Zt(e,Ne.Globals),s=n,r=!0);break;case Ne.Hook:if(Ee(n)&&Se(n.name)&&Ie(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,s=n,r=!0}break;case Ne.On:if(Ee(n)&&Se(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!It(e))return void Et();const o=e.on,s=o[t]||[],r=F(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,Pt(e,t,r)}(e,t,o)}break;case Ne.Ready:r=!0;break;case Ne.Run:o=await async function(e,t){return e.allowed=!0,e.timing=Date.now(),e.trace=ke(),e.count=0,t&&(t.consent&&(e.consent=we(e.consent,t.consent),Zt(e,Ne.Consent)),t.user&&(e.user=we(e.user,t.user),Zt(e,Ne.User)),t.globals&&(e.globals=we(e.config.globalsStatic||{},t.globals),Zt(e,Ne.Globals)),t.custom&&(e.custom=we(e.custom,t.custom),Zt(e,Ne.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await kt(e),await async function(e){if(It(e))for(const t of xt){if(!jt(e,t))continue;const n=Kt(e,t);Pt(e,t,e.on[t]||[]);for(const[o,s]of Object.entries(e.sources))yt(s)&&await zt(e,s,o,t,n)}else Et()}(e),await Vt(e)}(e,n),r=!0;break;case Ne.Session:r=!0;break;case Ne.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await Xt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const s=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){s.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await Xt(e.destinations,"destination",t),await Xt(e.transformers,"transformer",t),await Xt(e.stores,"store",t)}(e));break;case Ne.User:Ee(n)&&(we(e.user,n,{shallow:!1}),Zt(e,Ne.User),s=n,r=!0);break;default:return e.logger.warn("unknown command",{command:t}),Jt({ok:!1})}return r&&(await async function(e,t,n,o){var s,r;if(!It(e))return Et(),!0;e.seenEvents.add(String(t));let a=n||[];n||(a=e.on[t]||[]);const i=Kt(e,t,o);let c=!1;for(const[n,o]of Object.entries(e.sources)){if(null==(s=o.config.require)?void 0:s.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(yt(o)?await zt(e,o,n,t,i)&&(c=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:i})))}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:i});Tt(e,o,n,t,i)}});for(const[t,n]of Object.entries(e.sources))yt(n)&&(null==(r=n.queueOn)?void 0:r.length)&&await mt(e,n,t);const l=Object.values(e.sources).some(e=>{var t;return!yt(e)&&(null==(t=e.config.require)?void 0:t.length)});return(Object.keys(e.pending.destinations).length>0||l)&&await kt(e),Pt(e,t,a,o),!c}(e,t,void 0,s),o=await Vt(e)),o||Jt({ok:!0})}()}finally{a()}}function tn(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function nn(e,t,n){var o,s,r,a,i,c;if(!t.name)throw new Error("Event name is required");const[l,u]=t.name.split(" ");if(!l||!u)throw new Error("Event name is invalid");const{timestamp:d=Date.now(),name:f=`${l} ${u}`,data:p={},context:g={},globals:v=e.globals,custom:h={},user:m=e.user,nested:y=[],consent:w=e.consent,id:b=be(),trigger:k="",entity:I=l,action:S=u,timing:E=0,source:q={type:"collector",schema:"4"}}=t,x=null!=(o=q.count)?o:e.count+=1,O=null!=(r=null!=(s=q.trace)?s:null==n?void 0:n._meta.trace)?r:e.trace,j={...q,count:x};void 0!==O&&(j.trace=O);const C=null!=(i=null!=(a=e.name)?a:q.platform)?i:"default",D=null!=(c=e.release)?c:"4.3.0-next-1784120651691";return j.release={...q.release,[C]:D},{name:f,data:p,context:g,globals:v,custom:h,user:m,nested:y,consent:w,id:b,trigger:k,entity:I,action:S,timestamp:d,timing:E,source:j}}function on(e,t){const n=Ae(async(n,o={})=>await De(async()=>{var s;const r=Date.now(),{id:a,ingest:i,respond:c,mapping:l,preChain:u,include:d,exclude:f}=o;let p=c,g=n;const v=d||f?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,f):void 0,h=null!=i?i:qe(a||"unknown");if(l){const t=await Ce(g,l,e);if(t.ignore)return Jt({ok:!0});if(l.consent&&!je(l.consent,e.consent,t.event.consent))return Jt({ok:!0});g=t.event}if((null==u?void 0:u.length)&&e.transformers&&Object.keys(e.transformers).length>0){const n=await gt(e,e.transformers,u,g,h,p,a?`source.${a}.next`:void 0);if(null===n.event)return Jt({ok:!0});if(n.stopped)return n.respond&&(p=n.respond),Jt({ok:!0});if(n.respond&&(p=n.respond),Array.isArray(n.event)){const o=await Promise.all(n.event.map(async n=>{const o=t(n),s=nn(e,o,h);return Vt(e,s,{id:a,ingest:h,respond:p},v)}));if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count+=n.event.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return null!=(s=o[0])?s:Jt({ok:!0})}g=n.event}const m=function(e,t,n){return nn(e,tn(e,t),n)}(e,g,h),y=await Vt(e,m,{id:a,ingest:h,respond:p},v);if(a){e.status.sources[a]||(e.status.sources[a]={count:0,duration:0});const t=e.status.sources[a];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return y},t=>{if(t instanceof Oe)throw t;return e.status.failed++,e.logger.error("push failed",{event:n,ingest:o.ingest,error:t}),Jt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id?t.id:"",{traceId:r,sourceId:a,parentEventId:i}=Re(t,null==o?void 0:o.ingest,e),c=Date.now(),l=Be(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:c,traceId:r,sourceId:a,parentEventId:i});l.inEvent=t,xe(e,l);try{const l=await n(t,o),u=Date.now(),d=Be(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:u,traceId:r,sourceId:a,parentEventId:i});return d.durationMs=u-c,d.outEvent=l,xe(e,d),l}catch(t){const n=Date.now(),o=Be(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:r,sourceId:a,parentEventId:i});throw o.durationMs=n-c,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},xe(e,o),t}}}function sn(e={}){var t,n,o;const s=null!=(t=e.maxEntries)?t:1e4,r=null!=(n=e.lowWaterMark)?n:.8,a=null!=(o=e.sweepIntervalMs)?o:6e4,i=Math.floor(s*r),c=new Map,l={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let u;return a>0&&(u=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of c)void 0!==o.expires&&o.expires<=e&&(c.delete(n),t++);l.evictions_ttl+=t},a),u&&"function"==typeof u.unref&&u.unref()),{type:"memory",config:{},get(e){const t=c.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(c.delete(e),l.evictions_ttl++,void l.misses++):(c.delete(e),c.set(e,t),l.hits++,t.value);l.misses++},set(e,t,n){const o=!c.has(e);o||c.delete(e),c.set(e,{value:t,expires:void 0!==n?Date.now()+n:void 0}),l.writes++,o&&l.populates++,c.size>s&&function(){if(c.size<=s)return;const e=c.size-i;let t=0;for(const n of c.keys()){if(t>=e)break;c.delete(n),t++}l.evictions_entries+=t}()},delete(e){c.delete(e)&&l.deletes++},get counters(){return{...l}},destroy(){void 0!==u&&(clearInterval(u),u=void 0),c.clear()}}}function rn(e,t){const{cacheConfig:n,cacheStore:o,namespace:s,logger:r,storeId:a,collector:i}=t,c=(e,t)=>{if(!i)return;const n=Be(i,{stepId:`store.${a}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},ze(i,n)},l={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?Ke(e.match):()=>!0,ttl:e.ttl})),d=e=>`${s}:${e}`;function f(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const p=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...l}},async get(t){const n=d(t),s=await o.get(n),r=Fe(s);if(void 0!==r){if(!("expired"in r))return l.hits++,c(t,"hit"),r.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const a=p.get(n);if(a)return l.inflight_dedups++,c(t,"hit"),a;l.misses++,c(t,"miss");const i=(async()=>{try{const s=await e.get(t);if(void 0===s)return;const r=f(t,s);if(r)try{const e=1e3*r.ttl;await o.set(n,Ue(s,e),e),l.populates++}catch(e){g("set",t,e)}return s}finally{p.delete(n)}})();return p.set(n,i),i},async set(t,n,s){l.writes++,await e.set(t,n,s);const r=f(t,n);if(r)try{const e=1e3*r.ttl;await o.set(d(t),Ue(n,e),e)}catch(e){g("set",t,e)}},async delete(t){l.deletes++,await e.delete(t);try{await o.delete(d(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${a}): cache ${e} failed for "${t}"; backing succeeded, continuing`;r?r.warn(o,{error:n}):console.warn(o,n)}}function an(e,t,n){const o=`store.${n}`,s=Pe(t.get,"StoreGet",e.hooks,e.logger),r=Pe(t.set,"StoreSet",e.hooks,e.logger),a=Pe(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),r=Be(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"get",key:t},Te(e,r);try{const r=await s(t),a=Date.now(),i=Be(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});return i.durationMs=a-n,i.meta={op:"get",key:t},Te(e,i),r}catch(s){const r=Date.now(),a=Be(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw a.durationMs=r-n,a.meta={op:"get",key:t},a.error=s instanceof Error?{name:s.name,message:s.message}:{message:String(s)},Te(e,a),s}},t.set=async(t,n,s)=>{const a=Date.now(),i=Be(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:a});i.meta={op:"set",key:t},Te(e,i);try{await r(t,n,s);const i=Date.now(),c=Be(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});c.durationMs=i-a,c.meta={op:"set",key:t},Te(e,c)}catch(n){const s=Date.now(),r=Be(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw r.durationMs=s-a,r.meta={op:"set",key:t},r.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},Te(e,r),n}},t.delete=async t=>{const n=Date.now(),s=Be(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"delete",key:t},Te(e,s);try{await a(t);const s=Date.now(),r=Be(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:s});r.durationMs=s-n,r.meta={op:"delete",key:t},Te(e,r)}catch(s){const r=Date.now(),a=Be(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw a.durationMs=r-n,a.meta={op:"delete",key:t},a.error=s instanceof Error?{name:s.name,message:s.message}:{message:String(s)},Te(e,a),s}}}async function cn(e){var t,n;const o=p({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),s={level:null==(t=e.logger)?void 0:t.level,handler:null==(n=e.logger)?void 0:n.handler},r=g(s),a={...o.globalsStatic,...e.globals},i={allowed:!1,config:o,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:a,hooks:e.hooks||{},observers:new Set,logger:r,on:{},queue:[],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 c,l;void 0!==e.name&&(i.name=e.name),void 0!==e.release&&(i.release=e.release),i.push=on(i,e=>tn(i,e)),i.command=(l=en,Me(async(e,t,n)=>await _e(async()=>await l(c,e,t,n),n=>{if(n instanceof $e)throw n;return c.status.failed++,c.logger.error("command failed",{command:e,data:t,error:n}),Jt({ok:!1})})(),"Command",(c=i).hooks,c.logger)),i.elb=function(e){return async(t,n,o,s,r)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let a;if("string"==typeof t)a={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return Jt({ok:!1});a={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(a.data={...a.data||{},...n})}return o&&"object"==typeof o&&(a.context=o),s&&Array.isArray(s)&&(a.nested=s),r&&"object"==typeof r&&(a.custom=r),e.push(a)}}(i);const u=e.stores||{};return i.stores=await async function(e,t={}){var n;const o={};for(const[n,s]of Object.entries(t)){const{code:t,config:r={},env:a={}}=s,i=e.logger.scope("store").scope(n),c={collector:e,logger:i,id:n,config:r,env:a,reportError:rt(e,"store",n,i)},l=await t(c);o[n]=l}const s=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function s(r){var a;const i=t[r];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(r),t=o.slice(-1===e?0:e).concat(r).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[r]="GRAY",o.push(r);const c=null==(a=e[r].cache)?void 0:a.store;if(void 0!==c){if(!(c in e))throw new Error(`Store "${r}" cache.store references "${c}", which is not declared in flow.stores`);s(c)}o.pop(),t[r]="BLACK",n.push(r)}for(const n of Object.keys(e))"WHITE"===t[n]&&s(n);return n}(s);for(const t of r){const r=s[t].cache;if(!r)continue;let a,i;void 0!==r.store?(a=o[r.store],i=r.store):(o.__cache||(o.__cache=sn()),a=o.__cache,i="__cache");const c=null!=(n=r.namespace)?n:t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${c}:" via ${i}`),o[t]=rn(o[t],{storeId:t,cacheConfig:r,cacheStore:a,namespace:c,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,n]of Object.entries(o))"__cache"!==t&&an(e,n,t);return o}(i,u),function(e,t,n){const o=new Map;for(const[n,s]of Object.entries(e))t[n]&&o.set(s,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))s(t.env);function s(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const s=o.get(n);s&&(e[t]=s)}}}(u,i.stores,e),i.stores.__cache||(i.stores.__cache=sn()),i.destinations=await async function(e,t={}){var n,o;const s={};for(const[r,a]of Object.entries(t))(null==(o=null==(n=a.config)?void 0:n.require)?void 0:o.length)?e.pending.destinations[r]=a:s[r]=Yt(a);return s}(i,e.destinations||{}),i.transformers=await async function(e,t={}){var n,o,s,r,a,i,c,l;const u={};for(const[d,f]of Object.entries(t)){const{code:t,env:p={}}=f,g=ve(f,"Transformer");if(!g.ok){e.logger.warn(`Transformer ${d} invalid (${g.code}): ${g.reason}. Skipping.`);continue}const{config:v}=lt(f,"before"),{config:h}=lt({...f,config:v},"next"),m=Object.keys(p).length>0?{...h,env:p}:h,{cache:y}=f,w=y?{...m,cache:y}:m,b=null!=(o=null==(n=f.config)?void 0:n.state)?o:f.state,k=void 0!==b&&void 0===w.state?{...w,state:b}:w,I=e.logger.scope("transformer").scope(d),S={collector:e,logger:I,id:d,ingest:oe(d),config:k,env:p,reportError:rt(e,"transformer",d,I)},E=null!=t?t:e=>{const t=f.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,s]of Object.entries(o)){if("object"!=typeof s||null===s)continue;const o=s;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${d}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await he(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}},q=await E(S);void 0!==f.before&&void 0===(null==(s=q.config)?void 0:s.before)&&(q.config={...null!=(r=q.config)?r:{},before:f.before}),void 0!==f.next&&void 0===(null==(a=q.config)?void 0:a.next)&&(q.config={...null!=(i=q.config)?i:{},next:f.next}),void 0!==b&&void 0===(null==(c=q.config)?void 0:c.state)&&(q.config={...null!=(l=q.config)?l:{},state:b}),u[d]=q}return u}(i,e.transformers||{}),i}async function ln(e){e=e||{};const t=await cn(e);await async function(e,t={}){var n;const o={};for(const[s,r]of Object.entries(t)){const t=await bt(e,s,r);if(!t)continue;const a=null==(n=r.config)?void 0:n.require;t.config={...t.config,init:!1,...a?{require:[...a]}:{}},o[s]=t}Object.assign(e.sources,o);for(const t of Object.keys(o)){const n=e.sources[t];let o=!1;n.init&&await L(n.init.bind(n),n=>{if(n instanceof G)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,error:n})})(),o||(n.config.init=!0,yt(n)&&await mt(e,n,t))}return await kt(e),o}(t,e.sources||{});const{consent:n,user:o,globals:s,custom:r}=e;n&&await t.command("consent",n),o&&await t.command("user",o),s&&await t.command("globals",s),r&&await t.command("custom",r),t.config.run&&await t.command("run");let a=t.elb;const i=Object.values(t.sources),c=i.find(e=>e.config.primary);return c?a=c.push:i.length>0&&(a=i[0].push),{collector:t,elb:a}}var un=async e=>{let t;return{get flow(){return t},trigger:(n,o)=>async n=>{var s,r,a,i,c,l,u,d,f;const p=o||{};if(p.url){const e=new URL(p.url);window.history.replaceState({},"",e.pathname+e.search)}if(p.referrer&&Object.defineProperty(document,"referrer",{value:p.referrer,configurable:!0}),p.sessionData){const e=p.sessionKey||"elbSessionId";localStorage.setItem(e,JSON.stringify(p.sessionData))}if(p.deviceId){const e=p.deviceKey||"elbDeviceId";localStorage.setItem(e,p.deviceId)}if(!t){const n=await ln({...e,run:null==(s=e.run)||s});t={collector:n.collector,elb:n.elb};const o=p.sessionKey||(null==(c=null==(i=null==(a=null==(r=e.sources)?void 0:r.session)?void 0:a.config)?void 0:i.settings)?void 0:c.sessionKey)||"elbSessionId",g=p.deviceKey||(null==(f=null==(d=null==(u=null==(l=e.sources)?void 0:l.session)?void 0:u.config)?void 0:d.settings)?void 0:f.deviceKey)||"elbDeviceId";localStorage.removeItem(o),localStorage.removeItem(g),p.sessionData&&localStorage.setItem(o,JSON.stringify(p.sessionData)),p.deviceId&&localStorage.setItem(g,p.deviceId),e.consent&&await t.collector.command("consent",e.consent)}}}},dn=(e,t)=>{if(!e||"object"!=typeof e)return;const n=e,o=t.localStorage;if(n.sessionData&&"object"==typeof n.sessionData){const e="string"==typeof n.sessionKey?n.sessionKey:"elbSessionId";o.setItem(e,JSON.stringify(n.sessionData))}if("string"==typeof n.deviceId){const e="string"==typeof n.deviceKey?n.deviceKey:"elbDeviceId";o.setItem(e,n.deviceId)}};export{c as examples,n as schemas};//# sourceMappingURL=dev.mjs.map
|
package/dist/walkerOS.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/web-source-session",
|
|
3
3
|
"description": "Session source for walkerOS",
|
|
4
|
-
"version": "4.3.0-next-
|
|
4
|
+
"version": "4.3.0-next-1784120651691",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.mjs",
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"update": "npx npm-check-updates -u && npm update"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@walkeros/core": "4.3.0-next-
|
|
37
|
-
"@walkeros/web-core": "4.3.0-next-
|
|
36
|
+
"@walkeros/core": "4.3.0-next-1784120651691",
|
|
37
|
+
"@walkeros/web-core": "4.3.0-next-1784120651691"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@walkeros/collector": "4.3.0-next-
|
|
40
|
+
"@walkeros/collector": "4.3.0-next-1784120651691"
|
|
41
41
|
},
|
|
42
42
|
"repository": {
|
|
43
43
|
"url": "git+https://github.com/elbwalker/walkerOS.git",
|