@walkeros/core 4.1.1 → 4.1.3-next-1779963694449

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @walkeros/core
2
2
 
3
+ ## 4.1.3-next-1779963694449
4
+
5
+ ### Patch Changes
6
+
7
+ - 908d6f0: Promote chain, route shape, and reference scanner helpers to the
8
+ public surface so app and tooling can resolve transformer chains, probe route
9
+ shapes, and discover `$flow.` references without reaching into internal
10
+ modules:
11
+ - collector: re-export `walkChain` (resolve a transformer chain start into the
12
+ ordered step IDs) and `extractTransformerNextMap` (read static next-links
13
+ from a `Transformer.Transformers` map).
14
+ - core: re-export `isRouteArray` and `isRouteConfigEntry` (the canonical shape
15
+ probes for `Transformer.Route`) and add `scanFlowRefs(value, into?)`, which
16
+ walks any value (string, object, array) and returns every `$flow.<name>`
17
+ reference found, including refs nested inside `$code:` snippets.
18
+
19
+ ## 4.1.2
20
+
3
21
  ## 4.1.1
4
22
 
5
23
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -3876,6 +3876,12 @@ declare function mcpError(error: unknown, hint?: string): {
3876
3876
  */
3877
3877
  declare function compileMatcher(expr: MatchExpression | '*' | undefined): CompiledMatcher;
3878
3878
 
3879
+ declare function isRouteConfigEntry(entry: unknown): boolean;
3880
+ /**
3881
+ * Pure RouteConfig array — every element is a RouteConfig object.
3882
+ * Used to detect the legacy first-match shape (treated as implicit `one`).
3883
+ */
3884
+ declare function isRouteArray(next: Route): next is RouteConfig[];
3879
3885
  /**
3880
3886
  * Resolve a Route spec against a matcher context. Returns the immediate
3881
3887
  * next transformer IDs.
@@ -3988,5 +3994,12 @@ declare const REF_FLOW: RegExp;
3988
3994
  declare const REF_STORE: RegExp;
3989
3995
  declare const REF_SECRET: RegExp;
3990
3996
  declare const REF_CODE_PREFIX = "$code:";
3997
+ /**
3998
+ * Canonical scanner for the `$flow.` reference grammar. Walks strings,
3999
+ * arrays, and objects and returns every referenced flow name. The returned
4000
+ * set is the same instance as `into` when one is supplied, so callers can
4001
+ * accumulate across multiple values.
4002
+ */
4003
+ declare function scanFlowRefs(value: unknown, into?: Set<string>): Set<string>;
3991
4004
 
3992
- export { type BatchedPosterOptions, cache as Cache, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Debounced, destination as Destination, type DestroyContext, type DestroyFn, type DroppedCounters, ENV_MARKER_PREFIX, elb as Elb, type EmitFn, type ExampleSummary, FatalError, Flow, type FlowConfigResolver, type FlowState, type FlowStateBatch, type FlowStatePhase, type FlowStepType, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, type ObserverFn, on as On, type PosterFetch, type PosterResponse, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveOptions, type RespondFn, type RespondOptions, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type SetupFn, simulation as Simulation, source as Source, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, type Validate, type ValidateEvents, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyUpdate, assign, branch, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isSameType, isSampled, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseUserAgent, processEventMapping, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, setByPath, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, walkPath, wrapCondition, wrapFn, wrapValidate };
4005
+ export { type BatchedPosterOptions, cache as Cache, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Debounced, destination as Destination, type DestroyContext, type DestroyFn, type DroppedCounters, ENV_MARKER_PREFIX, elb as Elb, type EmitFn, type ExampleSummary, FatalError, Flow, type FlowConfigResolver, type FlowState, type FlowStateBatch, type FlowStatePhase, type FlowStepType, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, type ObserverFn, on as On, type PosterFetch, type PosterResponse, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveOptions, type RespondFn, type RespondOptions, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type SetupFn, simulation as Simulation, source as Source, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, type Validate, type ValidateEvents, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyUpdate, assign, branch, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isRouteArray, isRouteConfigEntry, isSameType, isSampled, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseUserAgent, processEventMapping, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, scanFlowRefs, setByPath, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, walkPath, wrapCondition, wrapFn, wrapValidate };
package/dist/index.d.ts CHANGED
@@ -3876,6 +3876,12 @@ declare function mcpError(error: unknown, hint?: string): {
3876
3876
  */
3877
3877
  declare function compileMatcher(expr: MatchExpression | '*' | undefined): CompiledMatcher;
3878
3878
 
3879
+ declare function isRouteConfigEntry(entry: unknown): boolean;
3880
+ /**
3881
+ * Pure RouteConfig array — every element is a RouteConfig object.
3882
+ * Used to detect the legacy first-match shape (treated as implicit `one`).
3883
+ */
3884
+ declare function isRouteArray(next: Route): next is RouteConfig[];
3879
3885
  /**
3880
3886
  * Resolve a Route spec against a matcher context. Returns the immediate
3881
3887
  * next transformer IDs.
@@ -3988,5 +3994,12 @@ declare const REF_FLOW: RegExp;
3988
3994
  declare const REF_STORE: RegExp;
3989
3995
  declare const REF_SECRET: RegExp;
3990
3996
  declare const REF_CODE_PREFIX = "$code:";
3997
+ /**
3998
+ * Canonical scanner for the `$flow.` reference grammar. Walks strings,
3999
+ * arrays, and objects and returns every referenced flow name. The returned
4000
+ * set is the same instance as `into` when one is supplied, so callers can
4001
+ * accumulate across multiple values.
4002
+ */
4003
+ declare function scanFlowRefs(value: unknown, into?: Set<string>): Set<string>;
3991
4004
 
3992
- export { type BatchedPosterOptions, cache as Cache, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Debounced, destination as Destination, type DestroyContext, type DestroyFn, type DroppedCounters, ENV_MARKER_PREFIX, elb as Elb, type EmitFn, type ExampleSummary, FatalError, Flow, type FlowConfigResolver, type FlowState, type FlowStateBatch, type FlowStatePhase, type FlowStepType, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, type ObserverFn, on as On, type PosterFetch, type PosterResponse, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveOptions, type RespondFn, type RespondOptions, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type SetupFn, simulation as Simulation, source as Source, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, type Validate, type ValidateEvents, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyUpdate, assign, branch, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isSameType, isSampled, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseUserAgent, processEventMapping, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, setByPath, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, walkPath, wrapCondition, wrapFn, wrapValidate };
4005
+ export { type BatchedPosterOptions, cache as Cache, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Debounced, destination as Destination, type DestroyContext, type DestroyFn, type DroppedCounters, ENV_MARKER_PREFIX, elb as Elb, type EmitFn, type ExampleSummary, FatalError, Flow, type FlowConfigResolver, type FlowState, type FlowStateBatch, type FlowStatePhase, type FlowStepType, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, type ObserverFn, on as On, type PosterFetch, type PosterResponse, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveOptions, type RespondFn, type RespondOptions, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type SetupFn, simulation as Simulation, source as Source, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, type Validate, type ValidateEvents, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyUpdate, assign, branch, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isRouteArray, isRouteConfigEntry, isSameType, isSampled, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseUserAgent, processEventMapping, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, scanFlowRefs, setByPath, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, walkPath, wrapCondition, wrapFn, wrapValidate };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},a={};i(a,{Cache:()=>s,Collector:()=>c,Const:()=>T,Context:()=>u,Destination:()=>f,ENV_MARKER_PREFIX:()=>X,Elb:()=>d,FatalError:()=>Be,Hint:()=>C,Hooks:()=>m,Level:()=>y,Lifecycle:()=>E,Logger:()=>g,Mapping:()=>h,Matcher:()=>N,On:()=>v,REF_CODE_PREFIX:()=>J,REF_CONTRACT:()=>H,REF_ENV:()=>Z,REF_FLOW:()=>B,REF_SECRET:()=>q,REF_STORE:()=>K,REF_VAR_FULL:()=>U,REF_VAR_INLINE:()=>W,Request:()=>k,STEP_OPERATIVE_FIELDS:()=>Kt,Simulation:()=>_,Source:()=>$,Store:()=>x,Transformer:()=>b,Trigger:()=>S,WalkerOS:()=>A,anonymizeIP:()=>R,applyUpdate:()=>Bt,assign:()=>ie,branch:()=>P,buildCacheContext:()=>Ut,castToProperty:()=>We,castValue:()=>je,checkCache:()=>Zt,clone:()=>he,compileCache:()=>Wt,compileMatcher:()=>Rt,createBatchedPoster:()=>gt,createDestination:()=>Oe,createEvent:()=>Ae,createIngest:()=>I,createLogger:()=>De,createMockContext:()=>nt,createMockLogger:()=>tt,createRespond:()=>Pt,createTelemetryObserver:()=>ft,debounce:()=>Pe,deepMerge:()=>Se,defaultClickIds:()=>Ce,deleteByPath:()=>we,emitStep:()=>mt,fetchPackage:()=>_t,fetchPackageSchema:()=>Ct,filterValues:()=>Ue,flattenIncludeSections:()=>$e,formatOut:()=>Qt,getBrowser:()=>ht,getBrowserVersion:()=>vt,getByPath:()=>ve,getDeviceType:()=>kt,getEvent:()=>_e,getFlowSettings:()=>ne,getGrantedConsent:()=>xe,getHeaders:()=>at,getId:()=>Ne,getMappingEvent:()=>Ke,getMappingValue:()=>qe,getMarketingParameters:()=>Te,getNextSteps:()=>Lt,getOS:()=>bt,getOSVersion:()=>wt,getPlatform:()=>re,getSpanId:()=>Ee,isArguments:()=>ae,isArray:()=>se,isBoolean:()=>ce,isCommand:()=>le,isDefined:()=>ue,isElementOrDocument:()=>fe,isFunction:()=>pe,isNumber:()=>de,isObject:()=>me,isPathStepEntry:()=>Yt,isPropertyType:()=>Ve,isSameType:()=>ge,isSampled:()=>pt,isString:()=>ye,mcpError:()=>It,mcpResult:()=>Tt,mergeContractSchemas:()=>D,mergeMappingRule:()=>Ye,mockEnv:()=>Qe,packageNameToVariable:()=>te,parseUserAgent:()=>yt,processEventMapping:()=>Ge,requestToData:()=>rt,requestToParameter:()=>ot,resolveContracts:()=>z,resolveSetup:()=>st,resolveTelemetryOptions:()=>dt,setByPath:()=>be,stepId:()=>l,storeCache:()=>Ht,throttle:()=>Re,throwError:()=>M,transformData:()=>it,traverseEnv:()=>et,trim:()=>ct,tryCatch:()=>Ze,tryCatchAsync:()=>He,useHooks:()=>lt,validateStepEntry:()=>Xt,walkPath:()=>Q,wrapCondition:()=>jt,wrapFn:()=>xt,wrapValidate:()=>Ot}),module.exports=(e=a,((e,i,a,s)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of r(i))o.call(e,c)||c===a||t(e,c,{get:()=>i[c],enumerable:!(s=n(i,c))||s.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s={},c={};function l(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}i(c,{stepId:()=>l});var u={},f={};function p(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}i(f,{getDestination:()=>p});var d={},m={},g={};i(g,{Level:()=>y});var y=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(y||{}),h={},v={},b={};function w(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}i(b,{getTransformer:()=>w});var k={},$={};function j(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}i($,{getSource:()=>j});var x={};function O(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}i(x,{getStore:()=>O});var S={},E={},A={},_={},N={},C={},T={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function I(e){return{_meta:{hops:0,path:[e]}}}function P(e,t){return{event:e,next:t}}function R(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function M(e){throw new Error(String(e))}var F=new Set(["description","examples","title","$comment"]);function z(e){const t={},n=new Set;function r(o){if(t[o])return t[o];n.has(o)&&M(`Circular extend chain detected: ${[...n,o].join(" → ")}`);const i=e[o];i||M(`Contract "${o}" not found`),n.add(o);let a={};if(i.extend){a=function(e,t){const n={};void 0===e.tagging&&void 0===t.tagging||(n.tagging=t.tagging??e.tagging);void 0===e.description&&void 0===t.description||(n.description=t.description??e.description);e.schema&&t.schema?n.schema=D(e.schema,t.schema):(e.schema||t.schema)&&(n.schema={...e.schema||t.schema});if(e.events||t.events){const r={},o=new Set([...Object.keys(e.events||{}),...Object.keys(t.events||{})]);for(const n of o){const o=e.events?.[n]||{},i=t.events?.[n]||{},a=new Set([...Object.keys(o),...Object.keys(i)]);r[n]={};for(const e of a){const t=o[e],a=i[e];r[n][e]=t&&a?D(t,a):{...t||a}}}n.events=r}return n}(r(i.extend),i)}else a={...i};if(delete a.extend,a.events&&(a.events=function(e){const t={};for(const n of Object.keys(e))if("*"!==n){t[n]={};for(const r of Object.keys(e[n]||{})){let o={};const i=e["*"]?.["*"];i&&(o=D(o,i));const a=e["*"]?.[r];a&&"*"!==r&&(o=D(o,a));const s=e[n]?.["*"];s&&"*"!==r&&(o=D(o,s));const c=e[n]?.[r];c&&(o=D(o,c)),t[n][r]=o}}e["*"]&&(t["*"]={...e["*"]});return t}(a.events)),a.events){const e={};for(const[t,n]of Object.entries(a.events)){e[t]={};for(const[r,o]of Object.entries(n))e[t][r]=L(o)}a.events=e}return n.delete(o),t[o]=a,a}for(const t of Object.keys(e))r(t);return t}function D(e,t){const n={...e};for(const r of Object.keys(t)){const o=e[r],i=t[r];"required"===r&&Array.isArray(o)&&Array.isArray(i)?n[r]=[...new Set([...o,...i])]:V(o)&&V(i)?n[r]=D(o,i):n[r]=i}return n}function L(e){const t={};for(const[n,r]of Object.entries(e))F.has(n)||(null===r||"object"!=typeof r||Array.isArray(r)?t[n]=r:t[n]=L(r));return t}function V(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var U=/^\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/,W=/\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,Z=/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,H=/^\$contract\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.(.+))?$/,B=/^\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?$/,K=/^\$store\.([a-zA-Z_][a-zA-Z0-9_]*)$/,q=/^\$secret\.([A-Z0-9_]+)$/,J="$code:";function G(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var X="__WALKEROS_ENV:";function Y(e,t,n){const r=`$flow.${e}${t?`.${t}`:""}`;if("unknown-flow"===n)return`${r} cannot resolve: flow "${e}" does not exist in this config.`;return`${r} is empty. Set ${t?`flows.${e}.config.${t}`:`flows.${e}.config`}, or run \`walkeros deploy ${e}\` first.`}function Q(e,t,n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const i=r[e];if(null==o||"object"!=typeof o){const o=r.slice(0,e).join(".");M(`Path "${t}" not found in "${n}": "${i}" does not exist${o?` in "${o}"`:""}`)}const a=o;if(!(i in a)){const o=r.slice(0,e).join(".");M(`Path "${t}" not found in "${n}": "${i}" does not exist${o?` in "${o}"`:""}`)}o=a[i]}return o}function ee(e,t,n,r,o,i){if("string"==typeof e){const a=e.match(U);if(a){const e=a[1].split("."),s=e[0],c=e.slice(1).join(".");void 0===t[s]&&M(`Variable "${s}" not found`);const l=i??new Set;if(l.has(s)){M(`Cyclic $var reference: ${[...l,s].join(" -> ")}`)}let u;l.add(s);try{u=ee(t[s],t,n,r,o,l)}finally{l.delete(s)}return c&&(u=Q(u,c,`$var.${s}`)),u}const s=e.match(H);if(s&&r){const e=s[1],t=s[2];e in r||M(`Contract "${e}" not found`);let n=r[e];return t&&(n=Q(n,t,`$contract.${e}`)),n}const c=e.match(B);if(c){const t=c[1],r=c[2],i=!1===n?.strictFlowRefs;o||M(`$flow.${t}${r?`.${r}`:""} cannot be resolved without a flow resolver`);const a=o(t);if(!a){if(i)return n?.onWarning?.(Y(t,r,"unknown-flow")),e;M(`Flow "${t}" not found in $flow.${t}`)}let s=a;if(r)if(i){try{s=Q(s,r,`$flow.${t}`)}catch{return n?.onWarning?.(Y(t,r,"missing-key")),e}if(null==s||""===s)return n?.onWarning?.(Y(t,r,"missing-key")),e}else s=Q(s,r,`$flow.${t}`);return s}let l=e.replace(W,(e,a)=>{const s=a.split("."),c=s[0],l=s.slice(1).join(".");void 0===t[c]&&M(`Variable "${c}" not found`);const u=i??new Set;if(u.has(c)){M(`Cyclic $var reference: ${[...u,c].join(" -> ")}`)}let f;u.add(c);try{f=ee(t[c],t,n,r,o,u)}finally{u.delete(c)}if(l&&(f=Q(f,l,`$var.${c}`)),null===f||"string"!=typeof f&&"number"!=typeof f&&"boolean"!=typeof f){M(`Variable "${a}" resolves to non-scalar (${Array.isArray(f)?"array":typeof f}) and cannot be inlined into a string. Use it as a whole-string reference: "$var.${a}"`)}return String(f)});return l=l.replace(Z,(e,t,r)=>n?.deferred?void 0!==r?`${X}${t}:${r}`:`${X}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==r?r:void M(`Environment variable "${t}" not found and no default provided`)),l}if(Array.isArray(e))return e.map(e=>ee(e,t,n,r,o,i));if(null!==e&&"object"==typeof e){const a={};for(const[s,c]of Object.entries(e))a[s]=ee(c,t,n,r,o,i);return a}return e}function te(e){const t=e.startsWith("@"),n=e.replace("@","").replace(/[/-]/g,"_").split("_").filter(e=>e.length>0).map((e,t)=>0===t?e:e.charAt(0).toUpperCase()+e.slice(1)).join("");return t?"_"+n:n}function ne(e,t,n){const r=new Map,o=new Set,i=[],a=t=>{if(r.has(t))return r.get(t);const s=e.flows[t];if(s){if(o.has(t)){M(`Cyclic $flow reference: ${[...i,t].join(" -> ")}`)}o.add(t),i.push(t);try{const o=G(e.variables,s.variables),i=ee(s.config??{},o,n,void 0,a);return r.set(t,i),i}finally{o.delete(t),i.pop()}}},s=Object.keys(e.flows);t||(1===s.length?t=s[0]:M(`Multiple flows found (${s.join(", ")}). Please specify a flow.`));const c=e.flows[t];c||M(`Flow "${t}" not found. Available: ${s.join(", ")}`),o.add(t),i.push(t);try{return function(e,t,n,r){const o=JSON.parse(JSON.stringify(t));let i;if(e.contract){const o=G(e.variables,t.variables);i=z(ee(e.contract,o,n,void 0,r))}if(o.config){const a=G(e.variables,t.variables);o.config=ee(o.config,a,n,i,r)}if(o.sources)for(const[a,s]of Object.entries(o.sources)){const c=G(e.variables,t.variables,s.variables),l=ee(s.config,c,n,i,r),u=ee(s.env,c,n,i,r);o.sources[a]={package:s.package,import:s.import,config:l,env:u,primary:s.primary,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.destinations)for(const[a,s]of Object.entries(o.destinations)){const c=G(e.variables,t.variables,s.variables),l=ee(s.config,c,n,i,r),u=ee(s.env,c,n,i,r);o.destinations[a]={package:s.package,import:s.import,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.stores)for(const[a,s]of Object.entries(o.stores)){const c=G(e.variables,t.variables,s.variables),l=ee(s.config,c,n,i,r),u=ee(s.env,c,n,i,r);o.stores[a]={package:s.package,import:s.import,config:l,env:u,cache:s.cache,variables:s.variables,code:s.code}}if(o.transformers)for(const[a,s]of Object.entries(o.transformers)){const c=G(e.variables,t.variables,s.variables),l=ee(s.config,c,n,i,r),u=ee(s.env,c,n,i,r);o.transformers[a]={package:s.package,import:s.import,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.collector){const a=G(e.variables,t.variables),s=ee(o.collector,a,n,i,r);o.collector=s}return o}(e,c,n,a)}finally{o.delete(t),i.pop()}}function re(e){const t=e.config?.platform;if("web"===t||"server"===t)return t;M('Flow must have config.platform set to "web" or "server"')}var oe={merge:!0,shallow:!0,extend:!0};function ie(e,t={},n={}){n={...oe,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function ae(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function se(e){return Array.isArray(e)}function ce(e){return"boolean"==typeof e}function le(e){return"walker"===e}function ue(e){return void 0!==e}function fe(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function pe(e){return"function"==typeof e}function de(e){return"number"==typeof e&&!Number.isNaN(e)}function me(e){return"object"==typeof e&&null!==e&&!se(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ge(e,t){return typeof e==typeof t}function ye(e){return"string"==typeof e}function he(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=he(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(he(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function ve(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&se(o)){const t=r.slice(e+1).join("."),i=[];for(const e of o){const r=ve(e,t,n);i.push(r)}return i}if(o=me(o)||se(o)?o[t]:void 0,void 0===o)break}return ue(o)?o:n}function be(e,t,n){if(!me(e))return e;const r=he(e),o=t.split(".");let i=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return r}function we(e,t){if(!me(e)&&!se(e))return e;const n=he(e),r=t.split(".");let o=n;for(let e=0;e<r.length;e++){const t=r[e],i=e===r.length-1;if(se(o)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=o.length)return n;if(i)o.splice(e,1);else{const t=o[e];if(!me(t)&&!se(t))return n;o=t}}else if(i)delete o[t];else{const e=o[t];if(!me(e)&&!se(e))return n;o=e}}return n}var ke={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing})};function $e(e,t){const n={},r=t.includes("all")?Object.keys(ke):t;for(const t of r){const r=ke[t];if(!r)continue;const o=r(e);if(me(o))for(const[e,r]of Object.entries(o)){if(void 0===r)continue;const o="context"===t&&Array.isArray(r)?r[0]:r;n[`${t}_${e}`]=o}}return n}function je(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function xe(e,t={},n={}){const r={...t,...n},o={};let i=!e||0===Object.keys(e).length;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(i=!0))}),!!i&&o}function Oe(e,t){const n={...e};return n.config=ie(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=ie(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=ie(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Se(e,t){if(!me(t))return e;for(const n of Object.keys(t)){const r=t[n];void 0!==r&&(me(r)&&me(e[n])?Se(e[n],r):e[n]=r)}return e}function Ee(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function Ae(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=ie({name:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{entity:"child",data:{is:"subordinated"}}],consent:{functional:!0},id:e.id||Ee(),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,source:{type:"collector",schema:"4"}},e,{merge:!1});if(e.name){const[t,r]=e.name.split(" ")??[];t&&r&&(n.entity=t,n.action=r)}return n}function _e(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),r={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return Ae({...{"cart view":{data:{currency:"EUR",value:2*r.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...r.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:r.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...o,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["complete",0]},nested:[]},{entity:"product",...o,context:{shopping:["complete",0]},nested:[]},{entity:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.walkeros.io/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...r,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...r,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...r.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:n,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,name:e})}function Ne(e=6,t){if(t){const n=t.length;let r="";for(let o=0;o<e;o++)r+=t[Math.random()*n|0];return r}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}var Ce=[{param:"gclid",platform:"google"},{param:"wbraid",platform:"google"},{param:"gbraid",platform:"google"},{param:"dclid",platform:"google"},{param:"gclsrc",platform:"google"},{param:"fbclid",platform:"meta"},{param:"igshid",platform:"meta"},{param:"msclkid",platform:"microsoft"},{param:"ttclid",platform:"tiktok"},{param:"twclid",platform:"twitter"},{param:"li_fat_id",platform:"linkedin"},{param:"epik",platform:"pinterest"},{param:"sclid",platform:"snapchat"},{param:"sccid",platform:"snapchat"},{param:"rdt_cid",platform:"reddit"},{param:"qclid",platform:"quora"},{param:"yclid",platform:"yandex"},{param:"ymclid",platform:"yandex"},{param:"ysclid",platform:"yandex"},{param:"dicbo",platform:"outbrain"},{param:"obclid",platform:"outbrain"},{param:"tblci",platform:"taboola"},{param:"mc_cid",platform:"mailchimp"},{param:"mc_eid",platform:"mailchimp"},{param:"_kx",platform:"klaviyo"},{param:"_hsenc",platform:"hubspot"},{param:"_hsmi",platform:"hubspot"},{param:"s_kwcid",platform:"adobe"},{param:"ef_id",platform:"adobe"},{param:"mkt_tok",platform:"adobe"},{param:"irclickid",platform:"impact"},{param:"cjevent",platform:"cj"},{param:"_branch_match_id",platform:"branch"}];function Te(e,t={},n=[]){const r={};Object.entries(ie({utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term"},t)).forEach(([t,n])=>{const o=e.searchParams.get(t);o&&(r[n]=o)});const o=n.length?function(e){const t=new Map(e.map(e=>[e.param,e.platform])),n=new Set(Ce.map(e=>e.param));return[...Ce.map(e=>t.has(e.param)?{param:e.param,platform:t.get(e.param)}:e),...e.filter(e=>!n.has(e.param))]}(n):Ce,i=new Map;e.searchParams.forEach((e,t)=>{e&&i.set(t.toLowerCase(),e)});for(const e of o){const t=i.get(e.param);t&&(r[e.param]=t,r.clickId||(r.clickId=e.param,r.platform=e.platform))}return r}function Ie(e,t){return"number"==typeof e?{wait:e}:e?{wait:e.wait??t,size:e.size,age:e.age}:{wait:t}}function Pe(e,t=1e3,n=!1){const{wait:r,size:o,age:i}=Ie(t,1e3);let a,s,c=null,l=null,u=!1,f=[],p=0;const d=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),p=0,s=void 0},m=()=>{const t=s,n=f;if(d(),f=[],t)return a=e(...t),n.forEach(e=>e(a)),a;n.forEach(e=>e(void 0))},g=(...t)=>new Promise(d=>{const g=n&&!u;if(s=t,p+=1,f.push(d),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||m()},r),void 0===i||l||(l=setTimeout(()=>{l=null,m()},i)),void 0!==o&&p>=o)m();else if(g){u=!0,a=e(...t);const n=f;f=[],n.forEach(e=>e(a))}});return g.flush=()=>s||0!==f.length?new Promise(e=>{f.push(e),m()}):Promise.resolve(void 0),g.cancel=()=>{const e=f;f=[],d(),e.forEach(e=>e(void 0))},g.size=()=>p,g}function Re(e,t=1e3){const{wait:n}=Ie(t,1e3);let r=null;return function(...t){if(null===r)return r=setTimeout(()=>{r=null},n),e(...t)}}function Me(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function Fe(e,t){let n,r={};return e instanceof Error?(n=e.message,r.error=Me(e)):n=e,void 0!==t&&(t instanceof Error?r.error=Me(t):"object"==typeof t&&null!==t?(r={...r,...t},"error"in r&&r.error instanceof Error&&(r.error=Me(r.error))):r.value=t),{message:n,context:r}}var ze=(e,t,n,r)=>{const o=`${y[e]}${r.length>0?` [${r.join(":")}]`:""}`,i=Object.keys(n).length>0,a=0===e?console.error:1===e?console.warn:console.log;i?a(o,t,n):a(o,t)};function De(e={}){return Le({level:void 0!==e.level?function(e){return"string"==typeof e?y[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function Le(e){const{level:t,handler:n,jsonHandler:r,scope:o}=e,i=(e,r,i)=>{if(e<=t){const t=Fe(r,i);n?n(e,t.message,t.context,o,ze):ze(e,t.message,t.context,o)}};return{error:(e,t)=>i(0,e,t),warn:(e,t)=>i(1,e,t),info:(e,t)=>i(2,e,t),debug:(e,t)=>i(3,e,t),throw:(e,t)=>{const r=Fe(e,t);throw n?n(0,r.message,r.context,o,ze):ze(0,r.message,r.context,o),new Error(r.message)},json:e=>{r?r(e):console.log(JSON.stringify(e,null,2))},scope:e=>Le({level:t,handler:n,jsonHandler:r,scope:[...o,e]})}}function Ve(e){return ce(e)||ye(e)||de(e)||!ue(e)||se(e)&&e.every(Ve)||me(e)&&Object.values(e).every(Ve)}function Ue(e){return ce(e)||ye(e)||de(e)?e:ae(e)?Ue(Array.from(e)):se(e)?e.map(e=>Ue(e)).filter(e=>void 0!==e):me(e)?Object.entries(e).reduce((e,[t,n])=>{const r=Ue(n);return void 0!==r&&(e[t]=r),e},{}):void 0}function We(e){return Ve(e)?e:void 0}function Ze(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function He(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(n?.())}}}var Be=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function Ke(e,t,n){const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let i,a="",s=r,c=o;const l=t=>{if(!t)return;return(se(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const r={event:e,mapping:t,collector:n,logger:n.logger,consent:me(e)&&e.consent||n.consent};return Boolean(t.condition(e,r))})};t[s]||(s="*");const u=t[s];return u&&(u[c]||(c="*"),i=l(u[c])),i||(s="*",c="*",i=l(t[s]?.[c])),i&&(a=`${s} ${c}`),{eventMapping:i,mappingKey:a}}async function qe(e,t={},n={}){if(!ue(e))return;const r=me(e)&&e.consent||n.consent||n.collector?.consent,o=n.event??(me(e)?e:{});if(!n.collector)throw new Error("getMappingValue: context.collector is required");const i={event:o,mapping:t,collector:n.collector,logger:n.collector.logger,consent:r},a=se(t)?t:[t];for(const t of a){const r=await He(Je,e=>{if(e instanceof Be)throw e;n.collector&&n.collector.status.failed++,i.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...i,mapping:t});if(ue(r))return r}}async function Je(e,t,n){return(se(t)?t:[t]).reduce(async(t,r)=>{const o=await t;if(o)return o;const i=ye(r)?{key:r}:r;if(!Object.keys(i).length)return;const{condition:a,consent:s,fn:c,key:l,loop:u,map:f,set:p,validate:d,value:m}=i,g={...n,mapping:r};if(a&&!await He(a,e=>{if(e instanceof Be)throw e;return g.logger.error("mapping condition failed",{event:g.event,error:e}),!1})(e,g))return;if(s&&!xe(s,g.consent))return m;let y=ue(m)?m:e;if(c&&(y=await He(c,e=>{if(e instanceof Be)throw e;g.logger.error("mapping fn failed",{event:g.event,error:e})})(e,g)),l&&(y=ve(e,l,m)),u){const[t,n]=u,r="this"===t?[e]:await qe(e,t,g);se(r)&&(y=(await Promise.all(r.map(e=>qe(e,n,g)))).filter(ue))}else f?y=await Object.entries(f).reduce(async(t,[n,r])=>{const o=await t,i=await qe(e,r,g);return ue(i)&&(o[n]=i),o},Promise.resolve({})):p&&(y=await Promise.all(p.map(t=>Je(e,t,g))));d&&!await He(d,e=>{if(e instanceof Be)throw e;return g.logger.error("mapping validate failed",{event:g.event,error:e}),!1})(y,g)&&(y=void 0);const h=We(y);return ue(h)?h:We(m)},Promise.resolve(void 0))}async function Ge(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,r])=>{const o=await qe(e,r,{collector:n,event:e});e=be(e,t,o)}));const{eventMapping:r,mappingKey:o}=await Ke(e,t.mapping,n);r?.policy&&await Promise.all(Object.entries(r.policy).map(async([t,r])=>{const o=await qe(e,r,{collector:n,event:e});e=be(e,t,o)}));let i=t.data&&await qe(e,t.data,{collector:n,event:e});const a=Boolean(r?.silent);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:o,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await qe(e,r.data,{collector:n,event:e});i=me(i)&&me(t)?ie(i,t):t}}const s=r?.include??t.include;if(s&&s.length>0){const t=$e(e,s);Object.keys(t).length>0&&(i=me(i)?ie(t,i):i??t)}if(r?.remove&&me(i))for(const e of r.remove)i=we(i,e);return{event:e,data:i,mapping:r,mappingKey:o,ignore:!1,silent:a}}function Xe(e,t){for(const n of Object.keys(t)){const r=t[n];if(void 0===r)continue;if(null===r){delete e[n];continue}const o=e[n];me(r)&&me(o)?Xe(o,r):e[n]=r}return e}function Ye(e,t){if(void 0===t.extend&&void 0===t.remove)return he(t);const n={...he(e)};if(t.extend){Xe(n,{...t.extend})}return delete n.extend,t.remove?n.remove=[...t.remove]:delete n.remove,n}function Qe(e,t){const n=(e,r=[])=>new Proxy(e,{get(e,o){const i=e[o],a=[...r,o];return"function"==typeof i?i.prototype&&i.prototype.constructor===i?i:(...e)=>{const r=t(a,e,i);if(r&&"object"==typeof r)return n(r,a);const o=i(...e);return o&&"object"==typeof o?n(o,a):r}:i&&"object"==typeof i?n(i,a):i}});return n(e)}function et(e,t){const n=(e,r=[])=>{if(!e||"object"!=typeof e)return e;const o=Array.isArray(e)?[]:{};for(const[i,a]of Object.entries(e)){const e=[...r,i];Array.isArray(o)?o[Number(i)]=t(a,e):o[i]=t(a,e),a&&"object"==typeof a&&"function"!=typeof a&&(Array.isArray(o)?o[Number(i)]=n(a,e):o[i]=n(a,e))}return o};return n(e)}function tt(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=tt();return e.push(n),n});return{error:jest.fn(),warn:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,json:jest.fn(),scope:n,scopedLoggers:e}}function nt(e={}){return{collector:{},config:{},env:{},logger:tt(),id:"test",ingest:I("test"),...e}}function rt(e){const t=String(e),n=t.split("?")[1]||t;return Ze(()=>{const e=new URLSearchParams(n),t={};return e.forEach((e,n)=>{const r=n.split(/[[\]]+/).filter(Boolean);let o=t;r.forEach((t,n)=>{const i=n===r.length-1;if(se(o)){const a=parseInt(t,10);i?o[a]=je(e):(o[a]=o[a]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[a])}else me(o)&&(i?o[t]=je(e):(o[t]=o[t]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[t]))})}),t})()}function ot(e){if(!e)return"";const t=[],n=encodeURIComponent;function r(e,o){null!=o&&(se(o)?o.forEach((t,n)=>r(`${e}[${n}]`,t)):me(o)?Object.entries(o).forEach(([t,n])=>r(`${e}[${t}]`,n)):t.push(`${n(e)}=${n(String(o))}`))}return"object"!=typeof e?n(e):(Object.entries(e).forEach(([e,t])=>r(e,t)),t.join("&"))}function it(e){return void 0===e||ge(e,"")?e:JSON.stringify(e)}function at(e={}){return ie({"Content-Type":"application/json; charset=utf-8"},e)}function st(e,t){return!1===e||void 0===e?null:!0===e?t:{...t,...e}}function ct(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function lt(e,t,n,r){const o=e;return function(...e){let i;const a="pre"+t,s="post"+t,c=n[a],l=n[s],u=(e,t)=>{r?r.warn(e,{error:t}):console.warn(e,t)};if(c)try{i=c({fn:o},...e)}catch(t){u(`Hook ${String(a)} failed, falling back to original function`,t),i=o(...e)}else i=o(...e);if(l)try{i=l({fn:o,result:i},...e)}catch(e){u(`Hook ${String(s)} failed, keeping original result`,e)}return i}}function ut(e,t){if(t>=1)return!0;if(t<=0)return!1;return function(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t>>>0}(e)/4294967295<t}function ft(e,t){const n="function"==typeof t?t:()=>t;return function(t){const r=n();if(!r)return;const o=r.level??"standard";if("off"===o)return;const i=r.sample,a="number"==typeof i&&Number.isFinite(i)?i:1;if(t.eventId&&!ut(t.eventId,a))return;const s=r.includeIn??"trace"===o,c=r.includeOut??"trace"===o,l=r.includeMappingKey??"trace"===o,u={...t};s||delete u.inEvent,c||delete u.outEvent,l||delete u.mappingKey,"trace"!==o&&u.error?.message&&u.error.message.length>256&&(u.error={...u.error,message:u.error.message.slice(0,256)+"…"});try{e(u)}catch{}}}function pt(e,t){return ut(e,t)}function dt(e){const t=e.env??("undefined"!=typeof process?process.env:{}),n=e.now??(()=>Date.now()),r=t.WALKEROS_TRACE_UNTIL;if("string"==typeof r&&r.length>0){const t=Date.parse(r);if(!Number.isNaN(t)&&t>n())return{flowId:e.flowId,level:"trace",includeIn:!0,includeOut:!0,sample:1}}const o=e.observe?.level??"standard";if("off"===o)return null;const i=e.observe?.sample??1;return{flowId:e.flowId,level:o,sample:i}}function mt(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch{}}function gt(e){const t=e.batchMs,n="number"==typeof t&&Number.isFinite(t)&&t>0?Math.floor(t):50,r=e.batchSize,o="number"==typeof r&&Number.isFinite(r)&&r>=1?Math.floor(r):50,i=e.fetch??((e,t)=>globalThis.fetch(e,t)),a=e.onError??(()=>{});let s=[],c=null;function l(){if(0===s.length)return;const t=s;s=[],c&&(clearTimeout(c),c=null),Promise.resolve().then(()=>i(e.url,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify(t)})).then(e=>{e&&"object"==typeof e&&"ok"in e&&!e.ok&&a(new Error(`Observer responded ${e.status}`))}).catch(e=>{a(e)})}return e=>{s.push(e),s.length>=o?l():null===c&&(c=setTimeout(l,n))}}function yt(e){return e?{userAgent:e,browser:ht(e),browserVersion:vt(e),os:bt(e),osVersion:wt(e),deviceType:kt(e)}:{}}function ht(e){const t=[{name:"Edge",substr:"Edg"},{name:"Chrome",substr:"Chrome"},{name:"Safari",substr:"Safari",exclude:"Chrome"},{name:"Firefox",substr:"Firefox"},{name:"IE",substr:"MSIE"},{name:"IE",substr:"Trident"}];for(const n of t)if(e.includes(n.substr)&&(!n.exclude||!e.includes(n.exclude)))return n.name}function vt(e){const t=[/Edg\/([0-9]+)/,/Chrome\/([0-9]+)/,/Version\/([0-9]+).*Safari/,/Firefox\/([0-9]+)/,/MSIE ([0-9]+)/,/rv:([0-9]+).*Trident/];for(const n of t){const t=e.match(n);if(t)return t[1]}}function bt(e){const t=[{name:"Windows",substr:"Windows NT"},{name:"macOS",substr:"Mac OS X"},{name:"Android",substr:"Android"},{name:"iOS",substr:"iPhone OS"},{name:"Linux",substr:"Linux"}];for(const n of t)if(e.includes(n.substr))return n.name}function wt(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function kt(e){let t="Desktop";return/Tablet|iPad/i.test(e)?t="Tablet":/Mobi|Android|iPhone|iPod|BlackBerry|Opera Mini|IEMobile|WPDesktop/i.test(e)&&(t="Mobile"),t}function $t(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function jt(e){const t=$t(e);return new Function("value","context",t)}function xt(e){const t=$t(e);return new Function("value","context",t)}function Ot(e){const t=$t(e);return new Function("value","context",t)}var St="https://cdn.jsdelivr.net/npm",Et="dist/walkerOS.json";function At(e){return"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}async function _t(e,t){const n=t?.version||"latest",r=t?.timeout||1e4,o=new AbortController,i=setTimeout(()=>o.abort(),r),a=o.signal,s=t?.client?{"X-Walkeros-Client":t.client}:void 0;try{if(t?.baseUrl){const r=`${t.baseUrl}/api/packages/${encodeURIComponent(e)}?version=${encodeURIComponent(n)}&expand=all`,o=await fetch(r,{signal:a,...s&&{headers:s}});if(!o.ok)throw new Error(`Failed to fetch ${r} (HTTP ${o.status})`);return function(e,t,n){const r=n.schemas||{},o=n.examples||{},i=n.hints,a=n.hintKeys??(i?Object.keys(i):[]),s=n.exampleSummaries??[],c=n.platform;return{packageName:n.package||e,version:"string"==typeof n.version?n.version:t,...void 0!==n.description&&{description:n.description},...void 0!==n.type&&{type:n.type},...void 0!==c&&{platform:c},schemas:r,examples:o,...void 0!==n.docs&&{docs:n.docs},...void 0!==n.source&&{source:n.source},...i&&Object.keys(i).length>0?{hints:i}:{},hintKeys:a,exampleSummaries:s}}(e,n,await o.json())}const r=`${St}/${e}@${n}`,o=await Nt(`${r}/package.json`,a,s);return function(e,t,n,r){const o=r.$meta||{},i=r.schemas||{},a=r.examples||{},s=r.hints,c=s?Object.keys(s):[],l=[],u=a.step||{};for(const[e,t]of Object.entries(u)){const n=t,r={name:e};"string"==typeof n?.description&&(r.description=n.description),l.push(r)}const f="string"==typeof o.docs?o.docs:void 0,p="string"==typeof o.source?o.source:void 0;return{packageName:e,version:"string"==typeof n.version?n.version:t,description:"string"==typeof n.description?n.description:void 0,type:"string"==typeof o.type?o.type:void 0,platform:At(o.platform),schemas:i,examples:a,...f?{docs:f}:{},...p?{source:p}:{},...s&&Object.keys(s).length>0?{hints:s}:{},hintKeys:c,exampleSummaries:l}}(e,n,o,await Nt(`${r}/${Et}`,a,s))}finally{clearTimeout(i)}}async function Nt(e,t,n){const r=await fetch(e,{signal:t,...n&&{headers:n}});if(!r.ok)throw new Error(`Failed to fetch ${e} (HTTP ${r.status})`);return await r.json()}async function Ct(e,t){const n=await _t(e,t);return{packageName:n.packageName,version:n.version,type:n.type,platform:n.platform,schemas:n.schemas,examples:n.examples,...n.hints?{hints:n.hints}:{}}}function Tt(e,t){const n=t?{...e,_hints:t}:e;return{content:[{type:"text",text:JSON.stringify(n,null,2)}],structuredContent:n}}function It(e,t){let n,r,o,i;if(e instanceof Error){n=e.message;const t=e;t.code&&(o=t.code),Array.isArray(t.details)&&(i=t.details)}else if("string"==typeof e)n=e;else if(e&&"object"==typeof e&&"issues"in e&&Array.isArray(e.issues)){const t=e.issues;n=t.map(e=>e.message).join("; "),r=t[0]?.path?.join(".")||void 0}else n=e&&"object"==typeof e&&"message"in e?String(e.message):"Unknown error";const a={error:n};return t&&(a.hint=t),r&&(a.path=r),o&&(a.code=o),i&&(a.details=i),{content:[{type:"text",text:JSON.stringify(a)}],structuredContent:a,isError:!0}}function Pt(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}function Rt(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(Rt);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(Rt);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:r,not:o}=e,i=function(e,t){switch(e){case"eq":return e=>String(e??"")===t;case"contains":return e=>String(e??"").includes(t);case"prefix":return e=>String(e??"").startsWith(t);case"suffix":return e=>String(e??"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(t??""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,r);return e=>{const n=ve(e,t),r=i(n);return o?!r:r}}(e)}function Mt(e){return Array.isArray(e)&&e.length>0&&e.every(e=>function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}(e))}function Ft(e){return e.map(e=>{if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:zt(e)??{type:"chain",value:[]}};const t=e;return{match:t.match?Rt(t.match):()=>!0,next:zt(t)??{type:"chain",value:[]}}})}function zt(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(Mt(e))return zt({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=zt(n);void 0!==e&&t.push(e)}if(0===t.length)return;return{type:"sequence",value:t}}const t=e;if("next"in t&&void 0!==t.next)return t.match?{type:"gate",match:Rt(t.match),next:zt(t.next)}:zt(t.next);if("one"in t&&t.one){const e=Ft(t.one);return t.match?{type:"gate",match:Rt(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Ft(t.many);return t.match?{type:"gate",match:Rt(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:Rt(t.match)}:void 0}var Dt=new WeakMap;function Lt(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=Dt.get(e);t?n=t:(n=zt(e),n&&Dt.set(e,n))}else n=zt(e);if(!n)return[];const r=Vt(n,t);return void 0===r?[]:Array.isArray(r)?r:[r]}function Vt(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;if("gate"===e.type){if(!e.match(t))return;return Vt(e.next,t)}if("sequence"===e.type){const n=[];for(const r of e.value){const e=Vt(r,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}if("many"===e.type){const n=[];for(const r of e.routes){if(!r.match(t))continue;const e=Vt(r.next,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}for(const n of e.routes)if(n.match(t))return Vt(n.next,t)}}function Ut(e,t){const n={ingest:e??{}};return void 0!==t&&(n.event=t),n}function Wt(e){return{stop:e.stop??!1,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?Rt(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function Zt(e,t,n,r){const o=e.rules.find(e=>e.match(n));if(!o)return null;const i=o.key.map(e=>String(ve(n,e)??""));if(i.every(e=>""===e))return null;const a=i.join(":"),s=r??e.namespace,c=s?`${s}:${a}`:a,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:o}:{status:"MISS",key:c,rule:o}}function Ht(e,t,n,r){e.set(t,n,1e3*r)}async function Bt(e,t,n,r){if(!t)return e;let o=e;for(const[e,i]of Object.entries(t)){o=be(o,e,await qe(n,i,{collector:r}))}return o}var Kt={Source:["code","package","import","before","next","cache"],Transformer:["code","package","import","before","next","cache","mapping"],Destination:["code","package","import","before","next","cache"],Store:["code","package","import","cache"]},qt=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],Jt={Source:["primary"],Transformer:[],Destination:[],Store:[]},Gt=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Xt(e,t){const n=function(e){return new Set([...Kt[e],...qt,...Jt[e]])}(t);for(const r of Object.keys(e))if(!n.has(r))return{ok:!1,code:"UNKNOWN_KEY",key:r,reason:`Unknown key "${r}" on ${t}. Allowed: ${[...n].sort().join(", ")}.`};const r=void 0!==e.package,o=void 0!==e.import,i=void 0!==e.code;return i&&"string"==typeof e.code?{ok:!1,code:"OBSOLETE_CODE_STRING",key:"code",reason:`code: "<name>" is no longer supported. Use import: "${e.code}" with the package field instead.`}:i&&("object"!=typeof e.code&&"function"!=typeof e.code||null===e.code||Array.isArray(e.code))?{ok:!1,code:"INVALID_CODE_SHAPE",key:"code",reason:"code must be an object ({ push, type?, init? }) or a resolved function value."}:i&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:i&&o?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:o&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!o||"string"==typeof e.import&&Gt.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${Gt.source}. Got: ${JSON.stringify(e.import)}.`}}function Yt(e,t){return"Transformer"===t&&(void 0===e.code&&void 0===e.package&&void 0===e.import&&(void 0!==e.before||void 0!==e.next||void 0!==e.cache||void 0!==e.mapping))}function Qt(e){return 0===e.length?"// no output":e.map(en).join(";\n\n")}function en(e){const[t,...n]=e,r=n.map(tn).join(", ");return"return"===t?r?`return ${r}`:"return":`${t}(${r})`}function tn(e){return void 0===e?"undefined":null===e?"null":"function"==typeof e?"[Function]":JSON.stringify(e,null,2)}//# sourceMappingURL=index.js.map
1
+ "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},a={};i(a,{Cache:()=>s,Collector:()=>c,Const:()=>T,Context:()=>u,Destination:()=>f,ENV_MARKER_PREFIX:()=>Q,Elb:()=>d,FatalError:()=>qe,Hint:()=>C,Hooks:()=>m,Level:()=>y,Lifecycle:()=>A,Logger:()=>g,Mapping:()=>h,Matcher:()=>N,On:()=>v,REF_CODE_PREFIX:()=>J,REF_CONTRACT:()=>H,REF_ENV:()=>Z,REF_FLOW:()=>B,REF_SECRET:()=>q,REF_STORE:()=>K,REF_VAR_FULL:()=>U,REF_VAR_INLINE:()=>W,Request:()=>k,STEP_OPERATIVE_FIELDS:()=>Gt,Simulation:()=>_,Source:()=>$,Store:()=>x,Transformer:()=>b,Trigger:()=>S,WalkerOS:()=>E,anonymizeIP:()=>R,applyUpdate:()=>Jt,assign:()=>se,branch:()=>P,buildCacheContext:()=>Ht,castToProperty:()=>He,castValue:()=>Oe,checkCache:()=>Kt,clone:()=>be,compileCache:()=>Bt,compileMatcher:()=>Ft,createBatchedPoster:()=>ht,createDestination:()=>Ae,createEvent:()=>Ne,createIngest:()=>I,createLogger:()=>Ve,createMockContext:()=>ot,createMockLogger:()=>rt,createRespond:()=>Mt,createTelemetryObserver:()=>dt,debounce:()=>Me,deepMerge:()=>Ee,defaultClickIds:()=>Ie,deleteByPath:()=>$e,emitStep:()=>yt,fetchPackage:()=>Ct,fetchPackageSchema:()=>It,filterValues:()=>Ze,flattenIncludeSections:()=>xe,formatOut:()=>nn,getBrowser:()=>bt,getBrowserVersion:()=>wt,getByPath:()=>we,getDeviceType:()=>jt,getEvent:()=>Ce,getFlowSettings:()=>oe,getGrantedConsent:()=>Se,getHeaders:()=>ct,getId:()=>Te,getMappingEvent:()=>Je,getMappingValue:()=>Ge,getMarketingParameters:()=>Pe,getNextSteps:()=>Wt,getOS:()=>kt,getOSVersion:()=>$t,getPlatform:()=>ie,getSpanId:()=>_e,isArguments:()=>ce,isArray:()=>le,isBoolean:()=>ue,isCommand:()=>fe,isDefined:()=>pe,isElementOrDocument:()=>de,isFunction:()=>me,isNumber:()=>ge,isObject:()=>ye,isPathStepEntry:()=>tn,isPropertyType:()=>We,isRouteArray:()=>Dt,isRouteConfigEntry:()=>zt,isSameType:()=>he,isSampled:()=>mt,isString:()=>ve,mcpError:()=>Rt,mcpResult:()=>Pt,mergeContractSchemas:()=>D,mergeMappingRule:()=>et,mockEnv:()=>tt,packageNameToVariable:()=>re,parseUserAgent:()=>vt,processEventMapping:()=>Ye,requestToData:()=>it,requestToParameter:()=>at,resolveContracts:()=>z,resolveSetup:()=>lt,resolveTelemetryOptions:()=>gt,scanFlowRefs:()=>X,setByPath:()=>ke,stepId:()=>l,storeCache:()=>qt,throttle:()=>Fe,throwError:()=>M,transformData:()=>st,traverseEnv:()=>nt,trim:()=>ut,tryCatch:()=>Be,tryCatchAsync:()=>Ke,useHooks:()=>ft,validateStepEntry:()=>en,walkPath:()=>te,wrapCondition:()=>Ot,wrapFn:()=>St,wrapValidate:()=>At}),module.exports=(e=a,((e,i,a,s)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of r(i))o.call(e,c)||c===a||t(e,c,{get:()=>i[c],enumerable:!(s=n(i,c))||s.enumerable});return e})(t({},"__esModule",{value:!0}),e));var s={},c={};function l(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}i(c,{stepId:()=>l});var u={},f={};function p(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}i(f,{getDestination:()=>p});var d={},m={},g={};i(g,{Level:()=>y});var y=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(y||{}),h={},v={},b={};function w(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}i(b,{getTransformer:()=>w});var k={},$={};function j(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}i($,{getSource:()=>j});var x={};function O(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}i(x,{getStore:()=>O});var S={},A={},E={},_={},N={},C={},T={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function I(e){return{_meta:{hops:0,path:[e]}}}function P(e,t){return{event:e,next:t}}function R(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function M(e){throw new Error(String(e))}var F=new Set(["description","examples","title","$comment"]);function z(e){const t={},n=new Set;function r(o){if(t[o])return t[o];n.has(o)&&M(`Circular extend chain detected: ${[...n,o].join(" → ")}`);const i=e[o];i||M(`Contract "${o}" not found`),n.add(o);let a={};if(i.extend){a=function(e,t){const n={};void 0===e.tagging&&void 0===t.tagging||(n.tagging=t.tagging??e.tagging);void 0===e.description&&void 0===t.description||(n.description=t.description??e.description);e.schema&&t.schema?n.schema=D(e.schema,t.schema):(e.schema||t.schema)&&(n.schema={...e.schema||t.schema});if(e.events||t.events){const r={},o=new Set([...Object.keys(e.events||{}),...Object.keys(t.events||{})]);for(const n of o){const o=e.events?.[n]||{},i=t.events?.[n]||{},a=new Set([...Object.keys(o),...Object.keys(i)]);r[n]={};for(const e of a){const t=o[e],a=i[e];r[n][e]=t&&a?D(t,a):{...t||a}}}n.events=r}return n}(r(i.extend),i)}else a={...i};if(delete a.extend,a.events&&(a.events=function(e){const t={};for(const n of Object.keys(e))if("*"!==n){t[n]={};for(const r of Object.keys(e[n]||{})){let o={};const i=e["*"]?.["*"];i&&(o=D(o,i));const a=e["*"]?.[r];a&&"*"!==r&&(o=D(o,a));const s=e[n]?.["*"];s&&"*"!==r&&(o=D(o,s));const c=e[n]?.[r];c&&(o=D(o,c)),t[n][r]=o}}e["*"]&&(t["*"]={...e["*"]});return t}(a.events)),a.events){const e={};for(const[t,n]of Object.entries(a.events)){e[t]={};for(const[r,o]of Object.entries(n))e[t][r]=L(o)}a.events=e}return n.delete(o),t[o]=a,a}for(const t of Object.keys(e))r(t);return t}function D(e,t){const n={...e};for(const r of Object.keys(t)){const o=e[r],i=t[r];"required"===r&&Array.isArray(o)&&Array.isArray(i)?n[r]=[...new Set([...o,...i])]:V(o)&&V(i)?n[r]=D(o,i):n[r]=i}return n}function L(e){const t={};for(const[n,r]of Object.entries(e))F.has(n)||(null===r||"object"!=typeof r||Array.isArray(r)?t[n]=r:t[n]=L(r));return t}function V(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var U=/^\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/,W=/\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,Z=/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,H=/^\$contract\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.(.+))?$/,B=/^\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?$/,K=/^\$store\.([a-zA-Z_][a-zA-Z0-9_]*)$/,q=/^\$secret\.([A-Z0-9_]+)$/,J="$code:",G=/\$flow\.([\w-]+)/g;function X(e,t){const n=t??new Set;if("string"==typeof e){for(const t of e.matchAll(G))n.add(t[1]);return n}if(e&&"object"==typeof e)for(const t of Object.values(e))X(t,n);return n}function Y(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var Q="__WALKEROS_ENV:";function ee(e,t,n){const r=`$flow.${e}${t?`.${t}`:""}`;if("unknown-flow"===n)return`${r} cannot resolve: flow "${e}" does not exist in this config.`;return`${r} is empty. Set ${t?`flows.${e}.config.${t}`:`flows.${e}.config`}, or run \`walkeros deploy ${e}\` first.`}function te(e,t,n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const i=r[e];if(null==o||"object"!=typeof o){const o=r.slice(0,e).join(".");M(`Path "${t}" not found in "${n}": "${i}" does not exist${o?` in "${o}"`:""}`)}const a=o;if(!(i in a)){const o=r.slice(0,e).join(".");M(`Path "${t}" not found in "${n}": "${i}" does not exist${o?` in "${o}"`:""}`)}o=a[i]}return o}function ne(e,t,n,r,o,i){if("string"==typeof e){const a=e.match(U);if(a){const e=a[1].split("."),s=e[0],c=e.slice(1).join(".");void 0===t[s]&&M(`Variable "${s}" not found`);const l=i??new Set;if(l.has(s)){M(`Cyclic $var reference: ${[...l,s].join(" -> ")}`)}let u;l.add(s);try{u=ne(t[s],t,n,r,o,l)}finally{l.delete(s)}return c&&(u=te(u,c,`$var.${s}`)),u}const s=e.match(H);if(s&&r){const e=s[1],t=s[2];e in r||M(`Contract "${e}" not found`);let n=r[e];return t&&(n=te(n,t,`$contract.${e}`)),n}const c=e.match(B);if(c){const t=c[1],r=c[2],i=!1===n?.strictFlowRefs;o||M(`$flow.${t}${r?`.${r}`:""} cannot be resolved without a flow resolver`);const a=o(t);if(!a){if(i)return n?.onWarning?.(ee(t,r,"unknown-flow")),e;M(`Flow "${t}" not found in $flow.${t}`)}let s=a;if(r)if(i){try{s=te(s,r,`$flow.${t}`)}catch{return n?.onWarning?.(ee(t,r,"missing-key")),e}if(null==s||""===s)return n?.onWarning?.(ee(t,r,"missing-key")),e}else s=te(s,r,`$flow.${t}`);return s}let l=e.replace(W,(e,a)=>{const s=a.split("."),c=s[0],l=s.slice(1).join(".");void 0===t[c]&&M(`Variable "${c}" not found`);const u=i??new Set;if(u.has(c)){M(`Cyclic $var reference: ${[...u,c].join(" -> ")}`)}let f;u.add(c);try{f=ne(t[c],t,n,r,o,u)}finally{u.delete(c)}if(l&&(f=te(f,l,`$var.${c}`)),null===f||"string"!=typeof f&&"number"!=typeof f&&"boolean"!=typeof f){M(`Variable "${a}" resolves to non-scalar (${Array.isArray(f)?"array":typeof f}) and cannot be inlined into a string. Use it as a whole-string reference: "$var.${a}"`)}return String(f)});return l=l.replace(Z,(e,t,r)=>n?.deferred?void 0!==r?`${Q}${t}:${r}`:`${Q}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==r?r:void M(`Environment variable "${t}" not found and no default provided`)),l}if(Array.isArray(e))return e.map(e=>ne(e,t,n,r,o,i));if(null!==e&&"object"==typeof e){const a={};for(const[s,c]of Object.entries(e))a[s]=ne(c,t,n,r,o,i);return a}return e}function re(e){const t=e.startsWith("@"),n=e.replace("@","").replace(/[/-]/g,"_").split("_").filter(e=>e.length>0).map((e,t)=>0===t?e:e.charAt(0).toUpperCase()+e.slice(1)).join("");return t?"_"+n:n}function oe(e,t,n){const r=new Map,o=new Set,i=[],a=t=>{if(r.has(t))return r.get(t);const s=e.flows[t];if(s){if(o.has(t)){M(`Cyclic $flow reference: ${[...i,t].join(" -> ")}`)}o.add(t),i.push(t);try{const o=Y(e.variables,s.variables),i=ne(s.config??{},o,n,void 0,a);return r.set(t,i),i}finally{o.delete(t),i.pop()}}},s=Object.keys(e.flows);t||(1===s.length?t=s[0]:M(`Multiple flows found (${s.join(", ")}). Please specify a flow.`));const c=e.flows[t];c||M(`Flow "${t}" not found. Available: ${s.join(", ")}`),o.add(t),i.push(t);try{return function(e,t,n,r){const o=JSON.parse(JSON.stringify(t));let i;if(e.contract){const o=Y(e.variables,t.variables);i=z(ne(e.contract,o,n,void 0,r))}if(o.config){const a=Y(e.variables,t.variables);o.config=ne(o.config,a,n,i,r)}if(o.sources)for(const[a,s]of Object.entries(o.sources)){const c=Y(e.variables,t.variables,s.variables),l=ne(s.config,c,n,i,r),u=ne(s.env,c,n,i,r);o.sources[a]={package:s.package,import:s.import,config:l,env:u,primary:s.primary,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.destinations)for(const[a,s]of Object.entries(o.destinations)){const c=Y(e.variables,t.variables,s.variables),l=ne(s.config,c,n,i,r),u=ne(s.env,c,n,i,r);o.destinations[a]={package:s.package,import:s.import,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.stores)for(const[a,s]of Object.entries(o.stores)){const c=Y(e.variables,t.variables,s.variables),l=ne(s.config,c,n,i,r),u=ne(s.env,c,n,i,r);o.stores[a]={package:s.package,import:s.import,config:l,env:u,cache:s.cache,variables:s.variables,code:s.code}}if(o.transformers)for(const[a,s]of Object.entries(o.transformers)){const c=Y(e.variables,t.variables,s.variables),l=ne(s.config,c,n,i,r),u=ne(s.env,c,n,i,r);o.transformers[a]={package:s.package,import:s.import,config:l,env:u,variables:s.variables,before:s.before,next:s.next,cache:s.cache,validate:s.validate,code:s.code}}if(o.collector){const a=Y(e.variables,t.variables),s=ne(o.collector,a,n,i,r);o.collector=s}return o}(e,c,n,a)}finally{o.delete(t),i.pop()}}function ie(e){const t=e.config?.platform;if("web"===t||"server"===t)return t;M('Flow must have config.platform set to "web" or "server"')}var ae={merge:!0,shallow:!0,extend:!0};function se(e,t={},n={}){n={...ae,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function ce(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function le(e){return Array.isArray(e)}function ue(e){return"boolean"==typeof e}function fe(e){return"walker"===e}function pe(e){return void 0!==e}function de(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function me(e){return"function"==typeof e}function ge(e){return"number"==typeof e&&!Number.isNaN(e)}function ye(e){return"object"==typeof e&&null!==e&&!le(e)&&"[object Object]"===Object.prototype.toString.call(e)}function he(e,t){return typeof e==typeof t}function ve(e){return"string"==typeof e}function be(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=be(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(be(e,t))}),n}if("[object Date]"===n)return new Date(e.getTime());if("[object RegExp]"===n){const t=e;return new RegExp(t.source,t.flags)}return e}function we(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&le(o)){const t=r.slice(e+1).join("."),i=[];for(const e of o){const r=we(e,t,n);i.push(r)}return i}if(o=ye(o)||le(o)?o[t]:void 0,void 0===o)break}return pe(o)?o:n}function ke(e,t,n){if(!ye(e))return e;const r=be(e),o=t.split(".");let i=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return r}function $e(e,t){if(!ye(e)&&!le(e))return e;const n=be(e),r=t.split(".");let o=n;for(let e=0;e<r.length;e++){const t=r[e],i=e===r.length-1;if(le(o)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=o.length)return n;if(i)o.splice(e,1);else{const t=o[e];if(!ye(t)&&!le(t))return n;o=t}}else if(i)delete o[t];else{const e=o[t];if(!ye(e)&&!le(e))return n;o=e}}return n}var je={data:e=>e.data,globals:e=>e.globals,context:e=>e.context,user:e=>e.user,source:e=>e.source,event:e=>({entity:e.entity,action:e.action,id:e.id,timestamp:e.timestamp,name:e.name,trigger:e.trigger,timing:e.timing})};function xe(e,t){const n={},r=t.includes("all")?Object.keys(je):t;for(const t of r){const r=je[t];if(!r)continue;const o=r(e);if(ye(o))for(const[e,r]of Object.entries(o)){if(void 0===r)continue;const o="context"===t&&Array.isArray(r)?r[0]:r;n[`${t}_${e}`]=o}}return n}function Oe(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function Se(e,t={},n={}){const r={...t,...n},o={};let i=!e||0===Object.keys(e).length;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(i=!0))}),!!i&&o}function Ae(e,t){const n={...e};return n.config=se(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=se(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=se(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Ee(e,t){if(!ye(t))return e;for(const n of Object.keys(t)){const r=t[n];void 0!==r&&(ye(r)&&ye(e[n])?Ee(e[n],r):e[n]=r)}return e}function _e(){let e="";for(let t=0;t<16;t++)e+=(16*Math.random()|0).toString(16);return e}function Ne(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=se({name:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{entity:"child",data:{is:"subordinated"}}],consent:{functional:!0},id:e.id||_e(),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,source:{type:"collector",schema:"4"}},e,{merge:!1});if(e.name){const[t,r]=e.name.split(" ")??[];t&&r&&(n.entity=t,n.action=r)}return n}function Ce(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),r={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return Ne({...{"cart view":{data:{currency:"EUR",value:2*r.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...r.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:r.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...o,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...r,context:{shopping:["complete",0]},nested:[]},{entity:"product",...o,context:{shopping:["complete",0]},nested:[]},{entity:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.walkeros.io/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...r,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...r,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...r.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:n,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,name:e})}function Te(e=6,t){if(t){const n=t.length;let r="";for(let o=0;o<e;o++)r+=t[Math.random()*n|0];return r}let n="";for(let t=36;n.length<e;)n+=(Math.random()*t|0).toString(t);return n}var Ie=[{param:"gclid",platform:"google"},{param:"wbraid",platform:"google"},{param:"gbraid",platform:"google"},{param:"dclid",platform:"google"},{param:"gclsrc",platform:"google"},{param:"fbclid",platform:"meta"},{param:"igshid",platform:"meta"},{param:"msclkid",platform:"microsoft"},{param:"ttclid",platform:"tiktok"},{param:"twclid",platform:"twitter"},{param:"li_fat_id",platform:"linkedin"},{param:"epik",platform:"pinterest"},{param:"sclid",platform:"snapchat"},{param:"sccid",platform:"snapchat"},{param:"rdt_cid",platform:"reddit"},{param:"qclid",platform:"quora"},{param:"yclid",platform:"yandex"},{param:"ymclid",platform:"yandex"},{param:"ysclid",platform:"yandex"},{param:"dicbo",platform:"outbrain"},{param:"obclid",platform:"outbrain"},{param:"tblci",platform:"taboola"},{param:"mc_cid",platform:"mailchimp"},{param:"mc_eid",platform:"mailchimp"},{param:"_kx",platform:"klaviyo"},{param:"_hsenc",platform:"hubspot"},{param:"_hsmi",platform:"hubspot"},{param:"s_kwcid",platform:"adobe"},{param:"ef_id",platform:"adobe"},{param:"mkt_tok",platform:"adobe"},{param:"irclickid",platform:"impact"},{param:"cjevent",platform:"cj"},{param:"_branch_match_id",platform:"branch"}];function Pe(e,t={},n=[]){const r={};Object.entries(se({utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term"},t)).forEach(([t,n])=>{const o=e.searchParams.get(t);o&&(r[n]=o)});const o=n.length?function(e){const t=new Map(e.map(e=>[e.param,e.platform])),n=new Set(Ie.map(e=>e.param));return[...Ie.map(e=>t.has(e.param)?{param:e.param,platform:t.get(e.param)}:e),...e.filter(e=>!n.has(e.param))]}(n):Ie,i=new Map;e.searchParams.forEach((e,t)=>{e&&i.set(t.toLowerCase(),e)});for(const e of o){const t=i.get(e.param);t&&(r[e.param]=t,r.clickId||(r.clickId=e.param,r.platform=e.platform))}return r}function Re(e,t){return"number"==typeof e?{wait:e}:e?{wait:e.wait??t,size:e.size,age:e.age}:{wait:t}}function Me(e,t=1e3,n=!1){const{wait:r,size:o,age:i}=Re(t,1e3);let a,s,c=null,l=null,u=!1,f=[],p=0;const d=()=>{c&&(clearTimeout(c),c=null),l&&(clearTimeout(l),l=null),p=0,s=void 0},m=()=>{const t=s,n=f;if(d(),f=[],t)return a=e(...t),n.forEach(e=>e(a)),a;n.forEach(e=>e(void 0))},g=(...t)=>new Promise(d=>{const g=n&&!u;if(s=t,p+=1,f.push(d),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!u||m()},r),void 0===i||l||(l=setTimeout(()=>{l=null,m()},i)),void 0!==o&&p>=o)m();else if(g){u=!0,a=e(...t);const n=f;f=[],n.forEach(e=>e(a))}});return g.flush=()=>s||0!==f.length?new Promise(e=>{f.push(e),m()}):Promise.resolve(void 0),g.cancel=()=>{const e=f;f=[],d(),e.forEach(e=>e(void 0))},g.size=()=>p,g}function Fe(e,t=1e3){const{wait:n}=Re(t,1e3);let r=null;return function(...t){if(null===r)return r=setTimeout(()=>{r=null},n),e(...t)}}function ze(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function De(e,t){let n,r={};return e instanceof Error?(n=e.message,r.error=ze(e)):n=e,void 0!==t&&(t instanceof Error?r.error=ze(t):"object"==typeof t&&null!==t?(r={...r,...t},"error"in r&&r.error instanceof Error&&(r.error=ze(r.error))):r.value=t),{message:n,context:r}}var Le=(e,t,n,r)=>{const o=`${y[e]}${r.length>0?` [${r.join(":")}]`:""}`,i=Object.keys(n).length>0,a=0===e?console.error:1===e?console.warn:console.log;i?a(o,t,n):a(o,t)};function Ve(e={}){return Ue({level:void 0!==e.level?function(e){return"string"==typeof e?y[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function Ue(e){const{level:t,handler:n,jsonHandler:r,scope:o}=e,i=(e,r,i)=>{if(e<=t){const t=De(r,i);n?n(e,t.message,t.context,o,Le):Le(e,t.message,t.context,o)}};return{error:(e,t)=>i(0,e,t),warn:(e,t)=>i(1,e,t),info:(e,t)=>i(2,e,t),debug:(e,t)=>i(3,e,t),throw:(e,t)=>{const r=De(e,t);throw n?n(0,r.message,r.context,o,Le):Le(0,r.message,r.context,o),new Error(r.message)},json:e=>{r?r(e):console.log(JSON.stringify(e,null,2))},scope:e=>Ue({level:t,handler:n,jsonHandler:r,scope:[...o,e]})}}function We(e){return ue(e)||ve(e)||ge(e)||!pe(e)||le(e)&&e.every(We)||ye(e)&&Object.values(e).every(We)}function Ze(e){return ue(e)||ve(e)||ge(e)?e:ce(e)?Ze(Array.from(e)):le(e)?e.map(e=>Ze(e)).filter(e=>void 0!==e):ye(e)?Object.entries(e).reduce((e,[t,n])=>{const r=Ze(n);return void 0!==r&&(e[t]=r),e},{}):void 0}function He(e){return We(e)?e:void 0}function Be(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function Ke(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(n?.())}}}var qe=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function Je(e,t,n){const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let i,a="",s=r,c=o;const l=t=>{if(!t)return;return(le(t)?t:[t]).find(t=>{if(!t.condition)return!0;if(!n)return Boolean(t.condition(e,void 0));const r={event:e,mapping:t,collector:n,logger:n.logger,consent:ye(e)&&e.consent||n.consent};return Boolean(t.condition(e,r))})};t[s]||(s="*");const u=t[s];return u&&(u[c]||(c="*"),i=l(u[c])),i||(s="*",c="*",i=l(t[s]?.[c])),i&&(a=`${s} ${c}`),{eventMapping:i,mappingKey:a}}async function Ge(e,t={},n={}){if(!pe(e))return;const r=ye(e)&&e.consent||n.consent||n.collector?.consent,o=n.event??(ye(e)?e:{});if(!n.collector)throw new Error("getMappingValue: context.collector is required");const i={event:o,mapping:t,collector:n.collector,logger:n.collector.logger,consent:r},a=le(t)?t:[t];for(const t of a){const r=await Ke(Xe,e=>{if(e instanceof qe)throw e;n.collector&&n.collector.status.failed++,i.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...i,mapping:t});if(pe(r))return r}}async function Xe(e,t,n){return(le(t)?t:[t]).reduce(async(t,r)=>{const o=await t;if(o)return o;const i=ve(r)?{key:r}:r;if(!Object.keys(i).length)return;const{condition:a,consent:s,fn:c,key:l,loop:u,map:f,set:p,validate:d,value:m}=i,g={...n,mapping:r};if(a&&!await Ke(a,e=>{if(e instanceof qe)throw e;return g.logger.error("mapping condition failed",{event:g.event,error:e}),!1})(e,g))return;if(s&&!Se(s,g.consent))return m;let y=pe(m)?m:e;if(c&&(y=await Ke(c,e=>{if(e instanceof qe)throw e;g.logger.error("mapping fn failed",{event:g.event,error:e})})(e,g)),l&&(y=we(e,l,m)),u){const[t,n]=u,r="this"===t?[e]:await Ge(e,t,g);le(r)&&(y=(await Promise.all(r.map(e=>Ge(e,n,g)))).filter(pe))}else f?y=await Object.entries(f).reduce(async(t,[n,r])=>{const o=await t,i=await Ge(e,r,g);return pe(i)&&(o[n]=i),o},Promise.resolve({})):p&&(y=await Promise.all(p.map(t=>Xe(e,t,g))));d&&!await Ke(d,e=>{if(e instanceof qe)throw e;return g.logger.error("mapping validate failed",{event:g.event,error:e}),!1})(y,g)&&(y=void 0);const h=He(y);return pe(h)?h:He(m)},Promise.resolve(void 0))}async function Ye(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,r])=>{const o=await Ge(e,r,{collector:n,event:e});e=ke(e,t,o)}));const{eventMapping:r,mappingKey:o}=await Je(e,t.mapping,n);r?.policy&&await Promise.all(Object.entries(r.policy).map(async([t,r])=>{const o=await Ge(e,r,{collector:n,event:e});e=ke(e,t,o)}));let i=t.data&&await Ge(e,t.data,{collector:n,event:e});const a=Boolean(r?.silent);if(r){if(r.ignore)return{event:e,data:i,mapping:r,mappingKey:o,ignore:!0,silent:a};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await Ge(e,r.data,{collector:n,event:e});i=ye(i)&&ye(t)?se(i,t):t}}const s=r?.include??t.include;if(s&&s.length>0){const t=xe(e,s);Object.keys(t).length>0&&(i=ye(i)?se(t,i):i??t)}if(r?.remove&&ye(i))for(const e of r.remove)i=$e(i,e);return{event:e,data:i,mapping:r,mappingKey:o,ignore:!1,silent:a}}function Qe(e,t){for(const n of Object.keys(t)){const r=t[n];if(void 0===r)continue;if(null===r){delete e[n];continue}const o=e[n];ye(r)&&ye(o)?Qe(o,r):e[n]=r}return e}function et(e,t){if(void 0===t.extend&&void 0===t.remove)return be(t);const n={...be(e)};if(t.extend){Qe(n,{...t.extend})}return delete n.extend,t.remove?n.remove=[...t.remove]:delete n.remove,n}function tt(e,t){const n=(e,r=[])=>new Proxy(e,{get(e,o){const i=e[o],a=[...r,o];return"function"==typeof i?i.prototype&&i.prototype.constructor===i?i:(...e)=>{const r=t(a,e,i);if(r&&"object"==typeof r)return n(r,a);const o=i(...e);return o&&"object"==typeof o?n(o,a):r}:i&&"object"==typeof i?n(i,a):i}});return n(e)}function nt(e,t){const n=(e,r=[])=>{if(!e||"object"!=typeof e)return e;const o=Array.isArray(e)?[]:{};for(const[i,a]of Object.entries(e)){const e=[...r,i];Array.isArray(o)?o[Number(i)]=t(a,e):o[i]=t(a,e),a&&"object"==typeof a&&"function"!=typeof a&&(Array.isArray(o)?o[Number(i)]=n(a,e):o[i]=n(a,e))}return o};return n(e)}function rt(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=rt();return e.push(n),n});return{error:jest.fn(),warn:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,json:jest.fn(),scope:n,scopedLoggers:e}}function ot(e={}){return{collector:{},config:{},env:{},logger:rt(),id:"test",ingest:I("test"),...e}}function it(e){const t=String(e),n=t.split("?")[1]||t;return Be(()=>{const e=new URLSearchParams(n),t={};return e.forEach((e,n)=>{const r=n.split(/[[\]]+/).filter(Boolean);let o=t;r.forEach((t,n)=>{const i=n===r.length-1;if(le(o)){const a=parseInt(t,10);i?o[a]=Oe(e):(o[a]=o[a]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[a])}else ye(o)&&(i?o[t]=Oe(e):(o[t]=o[t]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[t]))})}),t})()}function at(e){if(!e)return"";const t=[],n=encodeURIComponent;function r(e,o){null!=o&&(le(o)?o.forEach((t,n)=>r(`${e}[${n}]`,t)):ye(o)?Object.entries(o).forEach(([t,n])=>r(`${e}[${t}]`,n)):t.push(`${n(e)}=${n(String(o))}`))}return"object"!=typeof e?n(e):(Object.entries(e).forEach(([e,t])=>r(e,t)),t.join("&"))}function st(e){return void 0===e||he(e,"")?e:JSON.stringify(e)}function ct(e={}){return se({"Content-Type":"application/json; charset=utf-8"},e)}function lt(e,t){return!1===e||void 0===e?null:!0===e?t:{...t,...e}}function ut(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function ft(e,t,n,r){const o=e;return function(...e){let i;const a="pre"+t,s="post"+t,c=n[a],l=n[s],u=(e,t)=>{r?r.warn(e,{error:t}):console.warn(e,t)};if(c)try{i=c({fn:o},...e)}catch(t){u(`Hook ${String(a)} failed, falling back to original function`,t),i=o(...e)}else i=o(...e);if(l)try{i=l({fn:o,result:i},...e)}catch(e){u(`Hook ${String(s)} failed, keeping original result`,e)}return i}}function pt(e,t){if(t>=1)return!0;if(t<=0)return!1;return function(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t>>>0}(e)/4294967295<t}function dt(e,t){const n="function"==typeof t?t:()=>t;return function(t){const r=n();if(!r)return;const o=r.level??"standard";if("off"===o)return;const i=r.sample,a="number"==typeof i&&Number.isFinite(i)?i:1;if(t.eventId&&!pt(t.eventId,a))return;const s=r.includeIn??"trace"===o,c=r.includeOut??"trace"===o,l=r.includeMappingKey??"trace"===o,u={...t};s||delete u.inEvent,c||delete u.outEvent,l||delete u.mappingKey,"trace"!==o&&u.error?.message&&u.error.message.length>256&&(u.error={...u.error,message:u.error.message.slice(0,256)+"…"});try{e(u)}catch{}}}function mt(e,t){return pt(e,t)}function gt(e){const t=e.env??("undefined"!=typeof process?process.env:{}),n=e.now??(()=>Date.now()),r=t.WALKEROS_TRACE_UNTIL;if("string"==typeof r&&r.length>0){const t=Date.parse(r);if(!Number.isNaN(t)&&t>n())return{flowId:e.flowId,level:"trace",includeIn:!0,includeOut:!0,sample:1}}const o=e.observe?.level??"standard";if("off"===o)return null;const i=e.observe?.sample??1;return{flowId:e.flowId,level:o,sample:i}}function yt(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch{}}function ht(e){const t=e.batchMs,n="number"==typeof t&&Number.isFinite(t)&&t>0?Math.floor(t):50,r=e.batchSize,o="number"==typeof r&&Number.isFinite(r)&&r>=1?Math.floor(r):50,i=e.fetch??((e,t)=>globalThis.fetch(e,t)),a=e.onError??(()=>{});let s=[],c=null;function l(){if(0===s.length)return;const t=s;s=[],c&&(clearTimeout(c),c=null),Promise.resolve().then(()=>i(e.url,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:JSON.stringify(t)})).then(e=>{e&&"object"==typeof e&&"ok"in e&&!e.ok&&a(new Error(`Observer responded ${e.status}`))}).catch(e=>{a(e)})}return e=>{s.push(e),s.length>=o?l():null===c&&(c=setTimeout(l,n))}}function vt(e){return e?{userAgent:e,browser:bt(e),browserVersion:wt(e),os:kt(e),osVersion:$t(e),deviceType:jt(e)}:{}}function bt(e){const t=[{name:"Edge",substr:"Edg"},{name:"Chrome",substr:"Chrome"},{name:"Safari",substr:"Safari",exclude:"Chrome"},{name:"Firefox",substr:"Firefox"},{name:"IE",substr:"MSIE"},{name:"IE",substr:"Trident"}];for(const n of t)if(e.includes(n.substr)&&(!n.exclude||!e.includes(n.exclude)))return n.name}function wt(e){const t=[/Edg\/([0-9]+)/,/Chrome\/([0-9]+)/,/Version\/([0-9]+).*Safari/,/Firefox\/([0-9]+)/,/MSIE ([0-9]+)/,/rv:([0-9]+).*Trident/];for(const n of t){const t=e.match(n);if(t)return t[1]}}function kt(e){const t=[{name:"Windows",substr:"Windows NT"},{name:"macOS",substr:"Mac OS X"},{name:"Android",substr:"Android"},{name:"iOS",substr:"iPhone OS"},{name:"Linux",substr:"Linux"}];for(const n of t)if(e.includes(n.substr))return n.name}function $t(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function jt(e){let t="Desktop";return/Tablet|iPad/i.test(e)?t="Tablet":/Mobi|Android|iPhone|iPod|BlackBerry|Opera Mini|IEMobile|WPDesktop/i.test(e)&&(t="Mobile"),t}function xt(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function Ot(e){const t=xt(e);return new Function("value","context",t)}function St(e){const t=xt(e);return new Function("value","context",t)}function At(e){const t=xt(e);return new Function("value","context",t)}var Et="https://cdn.jsdelivr.net/npm",_t="dist/walkerOS.json";function Nt(e){return"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}async function Ct(e,t){const n=t?.version||"latest",r=t?.timeout||1e4,o=new AbortController,i=setTimeout(()=>o.abort(),r),a=o.signal,s=t?.client?{"X-Walkeros-Client":t.client}:void 0;try{if(t?.baseUrl){const r=`${t.baseUrl}/api/packages/${encodeURIComponent(e)}?version=${encodeURIComponent(n)}&expand=all`,o=await fetch(r,{signal:a,...s&&{headers:s}});if(!o.ok)throw new Error(`Failed to fetch ${r} (HTTP ${o.status})`);return function(e,t,n){const r=n.schemas||{},o=n.examples||{},i=n.hints,a=n.hintKeys??(i?Object.keys(i):[]),s=n.exampleSummaries??[],c=n.platform;return{packageName:n.package||e,version:"string"==typeof n.version?n.version:t,...void 0!==n.description&&{description:n.description},...void 0!==n.type&&{type:n.type},...void 0!==c&&{platform:c},schemas:r,examples:o,...void 0!==n.docs&&{docs:n.docs},...void 0!==n.source&&{source:n.source},...i&&Object.keys(i).length>0?{hints:i}:{},hintKeys:a,exampleSummaries:s}}(e,n,await o.json())}const r=`${Et}/${e}@${n}`,o=await Tt(`${r}/package.json`,a,s);return function(e,t,n,r){const o=r.$meta||{},i=r.schemas||{},a=r.examples||{},s=r.hints,c=s?Object.keys(s):[],l=[],u=a.step||{};for(const[e,t]of Object.entries(u)){const n=t,r={name:e};"string"==typeof n?.description&&(r.description=n.description),l.push(r)}const f="string"==typeof o.docs?o.docs:void 0,p="string"==typeof o.source?o.source:void 0;return{packageName:e,version:"string"==typeof n.version?n.version:t,description:"string"==typeof n.description?n.description:void 0,type:"string"==typeof o.type?o.type:void 0,platform:Nt(o.platform),schemas:i,examples:a,...f?{docs:f}:{},...p?{source:p}:{},...s&&Object.keys(s).length>0?{hints:s}:{},hintKeys:c,exampleSummaries:l}}(e,n,o,await Tt(`${r}/${_t}`,a,s))}finally{clearTimeout(i)}}async function Tt(e,t,n){const r=await fetch(e,{signal:t,...n&&{headers:n}});if(!r.ok)throw new Error(`Failed to fetch ${e} (HTTP ${r.status})`);return await r.json()}async function It(e,t){const n=await Ct(e,t);return{packageName:n.packageName,version:n.version,type:n.type,platform:n.platform,schemas:n.schemas,examples:n.examples,...n.hints?{hints:n.hints}:{}}}function Pt(e,t){const n=t?{...e,_hints:t}:e;return{content:[{type:"text",text:JSON.stringify(n,null,2)}],structuredContent:n}}function Rt(e,t){let n,r,o,i;if(e instanceof Error){n=e.message;const t=e;t.code&&(o=t.code),Array.isArray(t.details)&&(i=t.details)}else if("string"==typeof e)n=e;else if(e&&"object"==typeof e&&"issues"in e&&Array.isArray(e.issues)){const t=e.issues;n=t.map(e=>e.message).join("; "),r=t[0]?.path?.join(".")||void 0}else n=e&&"object"==typeof e&&"message"in e?String(e.message):"Unknown error";const a={error:n};return t&&(a.hint=t),r&&(a.path=r),o&&(a.code=o),i&&(a.details=i),{content:[{type:"text",text:JSON.stringify(a)}],structuredContent:a,isError:!0}}function Mt(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}function Ft(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(Ft);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(Ft);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:r,not:o}=e,i=function(e,t){switch(e){case"eq":return e=>String(e??"")===t;case"contains":return e=>String(e??"").includes(t);case"prefix":return e=>String(e??"").startsWith(t);case"suffix":return e=>String(e??"").endsWith(t);case"regex":{const e=new RegExp(t);return t=>e.test(String(t??""))}case"gt":{const e=Number(t);return t=>Number(t)>e}case"lt":{const e=Number(t);return t=>Number(t)<e}case"exists":return e=>null!=e}}(n,r);return e=>{const n=we(e,t),r=i(n);return o?!r:r}}(e)}function zt(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}function Dt(e){return Array.isArray(e)&&e.length>0&&e.every(e=>zt(e))}function Lt(e){return e.map(e=>{if("string"==typeof e)return{match:()=>!0,next:{type:"static",value:e}};if(Array.isArray(e))return{match:()=>!0,next:Vt(e)??{type:"chain",value:[]}};const t=e;return{match:t.match?Ft(t.match):()=>!0,next:Vt(t)??{type:"chain",value:[]}}})}function Vt(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(Dt(e))return Vt({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=Vt(n);void 0!==e&&t.push(e)}if(0===t.length)return;return{type:"sequence",value:t}}const t=e;if("next"in t&&void 0!==t.next)return t.match?{type:"gate",match:Ft(t.match),next:Vt(t.next)}:Vt(t.next);if("one"in t&&t.one){const e=Lt(t.one);return t.match?{type:"gate",match:Ft(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Lt(t.many);return t.match?{type:"gate",match:Ft(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:Ft(t.match)}:void 0}var Ut=new WeakMap;function Wt(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=Ut.get(e);t?n=t:(n=Vt(e),n&&Ut.set(e,n))}else n=Vt(e);if(!n)return[];const r=Zt(n,t);return void 0===r?[]:Array.isArray(r)?r:[r]}function Zt(e,t={}){if(e){if("static"===e.type)return e.value;if("chain"===e.type)return e.value;if("gate"===e.type){if(!e.match(t))return;return Zt(e.next,t)}if("sequence"===e.type){const n=[];for(const r of e.value){const e=Zt(r,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}if("many"===e.type){const n=[];for(const r of e.routes){if(!r.match(t))continue;const e=Zt(r.next,t);void 0!==e&&(Array.isArray(e)?n.push(...e):n.push(e))}return n.length>0?n:void 0}for(const n of e.routes)if(n.match(t))return Zt(n.next,t)}}function Ht(e,t){const n={ingest:e??{}};return void 0!==t&&(n.event=t),n}function Bt(e){return{stop:e.stop??!1,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?Ft(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function Kt(e,t,n,r){const o=e.rules.find(e=>e.match(n));if(!o)return null;const i=o.key.map(e=>String(we(n,e)??""));if(i.every(e=>""===e))return null;const a=i.join(":"),s=r??e.namespace,c=s?`${s}:${a}`:a,l=await t.get(c);return void 0!==l?{status:"HIT",key:c,value:l,rule:o}:{status:"MISS",key:c,rule:o}}function qt(e,t,n,r){e.set(t,n,1e3*r)}async function Jt(e,t,n,r){if(!t)return e;let o=e;for(const[e,i]of Object.entries(t)){o=ke(o,e,await Ge(n,i,{collector:r}))}return o}var Gt={Source:["code","package","import","before","next","cache"],Transformer:["code","package","import","before","next","cache","mapping"],Destination:["code","package","import","before","next","cache"],Store:["code","package","import","cache"]},Xt=["config","env","validate","variables","examples","disabled","id","logger","mock","chainMocks"],Yt={Source:["primary"],Transformer:[],Destination:[],Store:[]},Qt=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function en(e,t){const n=function(e){return new Set([...Gt[e],...Xt,...Yt[e]])}(t);for(const r of Object.keys(e))if(!n.has(r))return{ok:!1,code:"UNKNOWN_KEY",key:r,reason:`Unknown key "${r}" on ${t}. Allowed: ${[...n].sort().join(", ")}.`};const r=void 0!==e.package,o=void 0!==e.import,i=void 0!==e.code;return i&&"string"==typeof e.code?{ok:!1,code:"OBSOLETE_CODE_STRING",key:"code",reason:`code: "<name>" is no longer supported. Use import: "${e.code}" with the package field instead.`}:i&&("object"!=typeof e.code&&"function"!=typeof e.code||null===e.code||Array.isArray(e.code))?{ok:!1,code:"INVALID_CODE_SHAPE",key:"code",reason:"code must be an object ({ push, type?, init? }) or a resolved function value."}:i&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:i&&o?{ok:!1,code:"CONFLICT",key:"import",reason:"Cannot specify both `code` and `import`."}:o&&!r?{ok:!1,code:"MISSING_PACKAGE",key:"import",reason:"`import` requires `package` to be set."}:!o||"string"==typeof e.import&&Qt.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${Qt.source}. Got: ${JSON.stringify(e.import)}.`}}function tn(e,t){return"Transformer"===t&&(void 0===e.code&&void 0===e.package&&void 0===e.import&&(void 0!==e.before||void 0!==e.next||void 0!==e.cache||void 0!==e.mapping))}function nn(e){return 0===e.length?"// no output":e.map(rn).join(";\n\n")}function rn(e){const[t,...n]=e,r=n.map(on).join(", ");return"return"===t?r?`return ${r}`:"return":`${t}(${r})`}function on(e){return void 0===e?"undefined":null===e?"null":"function"==typeof e?"[Function]":JSON.stringify(e,null,2)}//# sourceMappingURL=index.js.map