@walkeros/core 4.3.0-next-1784055686454 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/dist/dev.d.mts +2 -0
- package/dist/dev.d.ts +2 -0
- package/dist/index.d.mts +15 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @walkeros/core
|
|
2
2
|
|
|
3
|
-
## 4.3.0
|
|
3
|
+
## 4.3.0
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
The CLI wrap step's `preview` option replaces `previewOrigin`/`previewScope`,
|
|
26
26
|
and a new `previewGrantTargets` option lets a preview forward its grant to
|
|
27
27
|
server-bound destinations too.
|
|
28
|
+
- 907eed0: Observe-session activation URLs now carry a companion
|
|
29
|
+
session-forwarding grant (`elbPreviewSession`). The browser activator stores
|
|
30
|
+
it alongside the activation grant, and seamed preview bundles use it to
|
|
31
|
+
forward events to the session container — so one preview link shows web and
|
|
32
|
+
server journeys together.
|
|
28
33
|
- 9506e3e: Events now carry per-flow config provenance on
|
|
29
34
|
`event.source.release`, a flow-name to release map that accumulates as an
|
|
30
35
|
event crosses flows (web capture to server processing), so a delivered event
|
package/dist/dev.d.mts
CHANGED
|
@@ -8147,6 +8147,8 @@ interface PushResult {
|
|
|
8147
8147
|
done?: Record<string, Ref>;
|
|
8148
8148
|
queued?: Record<string, Ref>;
|
|
8149
8149
|
failed?: Record<string, Ref>;
|
|
8150
|
+
/** Event was intentionally not forwarded: a transformer chain stopped it. */
|
|
8151
|
+
dropped?: boolean;
|
|
8150
8152
|
}
|
|
8151
8153
|
|
|
8152
8154
|
type AnyFunction<P extends unknown[] = never[], R = unknown> = (...args: P) => R;
|
package/dist/dev.d.ts
CHANGED
|
@@ -8147,6 +8147,8 @@ interface PushResult {
|
|
|
8147
8147
|
done?: Record<string, Ref>;
|
|
8148
8148
|
queued?: Record<string, Ref>;
|
|
8149
8149
|
failed?: Record<string, Ref>;
|
|
8150
|
+
/** Event was intentionally not forwarded: a transformer chain stopped it. */
|
|
8151
|
+
dropped?: boolean;
|
|
8150
8152
|
}
|
|
8151
8153
|
|
|
8152
8154
|
type AnyFunction<P extends unknown[] = never[], R = unknown> = (...args: P) => R;
|
package/dist/index.d.mts
CHANGED
|
@@ -1228,6 +1228,8 @@ interface PushResult {
|
|
|
1228
1228
|
done?: Record<string, Ref>;
|
|
1229
1229
|
queued?: Record<string, Ref>;
|
|
1230
1230
|
failed?: Record<string, Ref>;
|
|
1231
|
+
/** Event was intentionally not forwarded: a transformer chain stopped it. */
|
|
1232
|
+
dropped?: boolean;
|
|
1231
1233
|
}
|
|
1232
1234
|
type Layer = Array<IArguments | DeepPartialEvent | unknown[]>;
|
|
1233
1235
|
|
|
@@ -1396,6 +1398,8 @@ interface ChainResult {
|
|
|
1396
1398
|
event: DeepPartialEvent | DeepPartialEvent[] | null;
|
|
1397
1399
|
respond?: RespondFn;
|
|
1398
1400
|
stopped?: true;
|
|
1401
|
+
/** Transformer that stopped the chain (returned false or threw). */
|
|
1402
|
+
droppedBy?: string;
|
|
1399
1403
|
}
|
|
1400
1404
|
/**
|
|
1401
1405
|
* The main transformer function.
|
|
@@ -4475,6 +4479,16 @@ interface SwapActivatorConfig {
|
|
|
4475
4479
|
now?: () => number;
|
|
4476
4480
|
crypto?: PreviewCrypto;
|
|
4477
4481
|
}
|
|
4482
|
+
/**
|
|
4483
|
+
* Storage slot for the session-forwarding companion grant. The web arm never
|
|
4484
|
+
* verifies it (it is session-bound by design; the session container is its
|
|
4485
|
+
* verifier) — the activator only ferries it from the activation URL into
|
|
4486
|
+
* storage, where the seamed preview artifact reads it to stamp the
|
|
4487
|
+
* `X-Walkeros-Preview` header. It lives and dies with the activation state:
|
|
4488
|
+
* set (or cleared) whenever a URL activation succeeds, cleared whenever the
|
|
4489
|
+
* stored activation clears.
|
|
4490
|
+
*/
|
|
4491
|
+
declare const SESSION_STORAGE_KEY = "elbPreviewSession";
|
|
4478
4492
|
/**
|
|
4479
4493
|
* Decide whether a preview bundle should boot in place of this bundle's own flow.
|
|
4480
4494
|
*
|
|
@@ -5026,4 +5040,4 @@ declare const REF_CODE_PREFIX = "$code:";
|
|
|
5026
5040
|
*/
|
|
5027
5041
|
declare function scanFlowRefs(value: unknown, into?: Set<string>): Set<string>;
|
|
5028
5042
|
|
|
5029
|
-
export { type ActivationGrant, type AssembleJourneysOptions, type BatchedPosterOptions, type BreakerState, CLOCK_SKEW_MS, cache as Cache, type CacheEnvelope, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Credential, 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, type GetStore, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type Journey, type JourneyAssembly, type JourneyBranch, type JourneyCorrelation, type JourneyEntry, type JourneyGap, type JourneyHop, type JourneyHopStatus, type JourneyPlatform, type JourneyStatus, type JourneyTopology, type JourneyTopologyNode, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, MAX_SESSION_MS, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, OBSERVE_ENV_KEY, type ObserverFn, on as On, type ParsedGrant, type ParsedTraceparent, type PosterFetch, type PosterResponse, type PreviewCrypto, type PreviewFailure, type PreviewKey, type PreviewSubtle, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveContractsOptions, type ResolveOptions, type RespondFn, type RespondOptions, SECRET_MARKER_PREFIX, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type ServiceAccount, type SetupFn, simulation as Simulation, source as Source, type State, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, StoreCodecError, type SwapActivatorConfig, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, URL_WINDOW_MS, type ValidateEvents, type VerifyParams, type VerifyResult, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyState, applyUpdate, assembleJourneys, assign, branch, browserSwapActivator, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, compileState, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, deserializeStoreValue, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, getTraceId, getTraceUntil, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isEnvObserve, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isRouteArray, isRouteConfigEntry, isSameType, isSampled, isStoreValue, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseCallPath, parseGrant, parseTraceparent, parseUserAgent, processEventMapping, readCacheEnvelope, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, scanFlowRefs, serializeStoreValue, setByPath, setTraceUntil, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, verifyActivation, walkPath, wrapCacheEnvelope, wrapCondition, wrapFn, wrapValidate };
|
|
5043
|
+
export { type ActivationGrant, type AssembleJourneysOptions, type BatchedPosterOptions, type BreakerState, CLOCK_SKEW_MS, cache as Cache, type CacheEnvelope, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Credential, 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, type GetStore, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type Journey, type JourneyAssembly, type JourneyBranch, type JourneyCorrelation, type JourneyEntry, type JourneyGap, type JourneyHop, type JourneyHopStatus, type JourneyPlatform, type JourneyStatus, type JourneyTopology, type JourneyTopologyNode, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, MAX_SESSION_MS, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, OBSERVE_ENV_KEY, type ObserverFn, on as On, type ParsedGrant, type ParsedTraceparent, type PosterFetch, type PosterResponse, type PreviewCrypto, type PreviewFailure, type PreviewKey, type PreviewSubtle, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveContractsOptions, type ResolveOptions, type RespondFn, type RespondOptions, SECRET_MARKER_PREFIX, SESSION_STORAGE_KEY, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type ServiceAccount, type SetupFn, simulation as Simulation, source as Source, type State, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, StoreCodecError, type SwapActivatorConfig, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, URL_WINDOW_MS, type ValidateEvents, type VerifyParams, type VerifyResult, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyState, applyUpdate, assembleJourneys, assign, branch, browserSwapActivator, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, compileState, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, deserializeStoreValue, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, getTraceId, getTraceUntil, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isEnvObserve, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isRouteArray, isRouteConfigEntry, isSameType, isSampled, isStoreValue, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseCallPath, parseGrant, parseTraceparent, parseUserAgent, processEventMapping, readCacheEnvelope, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, scanFlowRefs, serializeStoreValue, setByPath, setTraceUntil, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, verifyActivation, walkPath, wrapCacheEnvelope, wrapCondition, wrapFn, wrapValidate };
|
package/dist/index.d.ts
CHANGED
|
@@ -1228,6 +1228,8 @@ interface PushResult {
|
|
|
1228
1228
|
done?: Record<string, Ref>;
|
|
1229
1229
|
queued?: Record<string, Ref>;
|
|
1230
1230
|
failed?: Record<string, Ref>;
|
|
1231
|
+
/** Event was intentionally not forwarded: a transformer chain stopped it. */
|
|
1232
|
+
dropped?: boolean;
|
|
1231
1233
|
}
|
|
1232
1234
|
type Layer = Array<IArguments | DeepPartialEvent | unknown[]>;
|
|
1233
1235
|
|
|
@@ -1396,6 +1398,8 @@ interface ChainResult {
|
|
|
1396
1398
|
event: DeepPartialEvent | DeepPartialEvent[] | null;
|
|
1397
1399
|
respond?: RespondFn;
|
|
1398
1400
|
stopped?: true;
|
|
1401
|
+
/** Transformer that stopped the chain (returned false or threw). */
|
|
1402
|
+
droppedBy?: string;
|
|
1399
1403
|
}
|
|
1400
1404
|
/**
|
|
1401
1405
|
* The main transformer function.
|
|
@@ -4475,6 +4479,16 @@ interface SwapActivatorConfig {
|
|
|
4475
4479
|
now?: () => number;
|
|
4476
4480
|
crypto?: PreviewCrypto;
|
|
4477
4481
|
}
|
|
4482
|
+
/**
|
|
4483
|
+
* Storage slot for the session-forwarding companion grant. The web arm never
|
|
4484
|
+
* verifies it (it is session-bound by design; the session container is its
|
|
4485
|
+
* verifier) — the activator only ferries it from the activation URL into
|
|
4486
|
+
* storage, where the seamed preview artifact reads it to stamp the
|
|
4487
|
+
* `X-Walkeros-Preview` header. It lives and dies with the activation state:
|
|
4488
|
+
* set (or cleared) whenever a URL activation succeeds, cleared whenever the
|
|
4489
|
+
* stored activation clears.
|
|
4490
|
+
*/
|
|
4491
|
+
declare const SESSION_STORAGE_KEY = "elbPreviewSession";
|
|
4478
4492
|
/**
|
|
4479
4493
|
* Decide whether a preview bundle should boot in place of this bundle's own flow.
|
|
4480
4494
|
*
|
|
@@ -5026,4 +5040,4 @@ declare const REF_CODE_PREFIX = "$code:";
|
|
|
5026
5040
|
*/
|
|
5027
5041
|
declare function scanFlowRefs(value: unknown, into?: Set<string>): Set<string>;
|
|
5028
5042
|
|
|
5029
|
-
export { type ActivationGrant, type AssembleJourneysOptions, type BatchedPosterOptions, type BreakerState, CLOCK_SKEW_MS, cache as Cache, type CacheEnvelope, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Credential, 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, type GetStore, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type Journey, type JourneyAssembly, type JourneyBranch, type JourneyCorrelation, type JourneyEntry, type JourneyGap, type JourneyHop, type JourneyHopStatus, type JourneyPlatform, type JourneyStatus, type JourneyTopology, type JourneyTopologyNode, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, MAX_SESSION_MS, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, OBSERVE_ENV_KEY, type ObserverFn, on as On, type ParsedGrant, type ParsedTraceparent, type PosterFetch, type PosterResponse, type PreviewCrypto, type PreviewFailure, type PreviewKey, type PreviewSubtle, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveContractsOptions, type ResolveOptions, type RespondFn, type RespondOptions, SECRET_MARKER_PREFIX, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type ServiceAccount, type SetupFn, simulation as Simulation, source as Source, type State, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, StoreCodecError, type SwapActivatorConfig, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, URL_WINDOW_MS, type ValidateEvents, type VerifyParams, type VerifyResult, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyState, applyUpdate, assembleJourneys, assign, branch, browserSwapActivator, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, compileState, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, deserializeStoreValue, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, getTraceId, getTraceUntil, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isEnvObserve, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isRouteArray, isRouteConfigEntry, isSameType, isSampled, isStoreValue, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseCallPath, parseGrant, parseTraceparent, parseUserAgent, processEventMapping, readCacheEnvelope, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, scanFlowRefs, serializeStoreValue, setByPath, setTraceUntil, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, verifyActivation, walkPath, wrapCacheEnvelope, wrapCondition, wrapFn, wrapValidate };
|
|
5043
|
+
export { type ActivationGrant, type AssembleJourneysOptions, type BatchedPosterOptions, type BreakerState, CLOCK_SKEW_MS, cache as Cache, type CacheEnvelope, type CacheResult, type ClickIdEntry, collector as Collector, type CompiledCache, Const, context as Context, type Credential, 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, type GetStore, hint as Hint, hooks as Hooks, type Ingest, type IngestMeta, type Journey, type JourneyAssembly, type JourneyBranch, type JourneyCorrelation, type JourneyEntry, type JourneyGap, type JourneyHop, type JourneyHopStatus, type JourneyPlatform, type JourneyStatus, type JourneyTopology, type JourneyTopologyNode, type JsonSchema, Level, lifecycle as Lifecycle, type LifecycleContext, logger as Logger, MAX_SESSION_MS, mapping as Mapping, type MarketingParameters, matcher as Matcher, type MockLogger, OBSERVE_ENV_KEY, type ObserverFn, on as On, type ParsedGrant, type ParsedTraceparent, type PosterFetch, type PosterResponse, type PreviewCrypto, type PreviewFailure, type PreviewKey, type PreviewSubtle, REF_CODE_PREFIX, REF_CONTRACT, REF_ENV, REF_FLOW, REF_SECRET, REF_STORE, REF_VAR_FULL, REF_VAR_INLINE, request as Request, type ResolveContractsOptions, type ResolveOptions, type RespondFn, type RespondOptions, SECRET_MARKER_PREFIX, SESSION_STORAGE_KEY, STEP_OPERATIVE_FIELDS, type ScheduleOptions, type SendDataValue, type SendHeaders, type SendResponse, type ServiceAccount, type SetupFn, simulation as Simulation, source as Source, type State, type StepEntryErrorCode, type StepEntryValidation, type StepKind, type StorageType, store as Store, StoreCodecError, type SwapActivatorConfig, type TelemetryLevel, type TelemetryOptions, type TelemetryOptionsSupplier, transformer as Transformer, trigger as Trigger, URL_WINDOW_MS, type ValidateEvents, type VerifyParams, type VerifyResult, walkeros as WalkerOS, type WalkerOSPackage, type WalkerOSPackageInfo, type WalkerOSPackageMeta, anonymizeIP, applyState, applyUpdate, assembleJourneys, assign, branch, browserSwapActivator, buildCacheContext, castToProperty, castValue, checkCache, clone, compileCache, compileMatcher, compileState, createBatchedPoster, createDestination, createEvent, createIngest, createLogger, createMockContext, createMockLogger, createRespond, createTelemetryObserver, debounce, deepMerge, defaultClickIds, deleteByPath, deserializeStoreValue, emitStep, fetchPackage, fetchPackageSchema, filterValues, flattenIncludeSections, formatOut, getBrowser, getBrowserVersion, getByPath, getDeviceType, getEvent, getFlowSettings, getGrantedConsent, getHeaders, getId, getMappingEvent, getMappingValue, getMarketingParameters, getNextSteps, getOS, getOSVersion, getPlatform, getSpanId, getTraceId, getTraceUntil, isArguments, isArray, isBoolean, isCommand, isDefined, isElementOrDocument, isEnvObserve, isFunction, isNumber, isObject, isPathStepEntry, isPropertyType, isRouteArray, isRouteConfigEntry, isSameType, isSampled, isStoreValue, isString, mcpError, mcpResult, mergeContractSchemas, mergeMappingRule, mockEnv, packageNameToVariable, parseCallPath, parseGrant, parseTraceparent, parseUserAgent, processEventMapping, readCacheEnvelope, requestToData, requestToParameter, resolveContracts, resolveSetup, resolveTelemetryOptions, scanFlowRefs, serializeStoreValue, setByPath, setTraceUntil, stepId, storeCache, throttle, throwError, transformData, traverseEnv, trim, tryCatch, tryCatchAsync, useHooks, validateStepEntry, verifyActivation, walkPath, wrapCacheEnvelope, 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,s=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},i={};s(i,{CLOCK_SKEW_MS:()=>Tt,Cache:()=>a,Collector:()=>c,Const:()=>T,Context:()=>f,Destination:()=>l,ENV_MARKER_PREFIX:()=>ee,Elb:()=>d,FatalError:()=>ot,Hint:()=>N,Hooks:()=>m,Level:()=>h,Lifecycle:()=>O,Logger:()=>g,MAX_SESSION_MS:()=>Ct,Mapping:()=>v,Matcher:()=>M,OBSERVE_ENV_KEY:()=>xn,On:()=>y,REF_CODE_PREFIX:()=>G,REF_CONTRACT:()=>W,REF_ENV:()=>K,REF_FLOW:()=>Z,REF_SECRET:()=>J,REF_STORE:()=>H,REF_VAR_FULL:()=>B,REF_VAR_INLINE:()=>q,Request:()=>k,SECRET_MARKER_PREFIX:()=>te,STEP_OPERATIVE_FIELDS:()=>fr,Simulation:()=>_,Source:()=>$,Store:()=>E,StoreCodecError:()=>Jn,Transformer:()=>b,Trigger:()=>I,URL_WINDOW_MS:()=>Nt,WalkerOS:()=>x,anonymizeIP:()=>R,applyState:()=>ur,applyUpdate:()=>ar,assembleJourneys:()=>an,assign:()=>ue,branch:()=>P,browserSwapActivator:()=>Vt,buildCacheContext:()=>rr,castToProperty:()=>tt,castValue:()=>Oe,checkCache:()=>sr,clone:()=>ke,compileCache:()=>or,compileMatcher:()=>Rn,compileState:()=>cr,createBatchedPoster:()=>pn,createDestination:()=>_e,createEvent:()=>ze,createIngest:()=>C,createLogger:()=>Xe,createMockContext:()=>mt,createMockLogger:()=>dt,createRespond:()=>Pn,createTelemetryObserver:()=>St,debounce:()=>We,deepMerge:()=>Me,defaultClickIds:()=>Be,deleteByPath:()=>Ee,deserializeStoreValue:()=>nr,emitStep:()=>ln,fetchPackage:()=>jn,fetchPackageSchema:()=>On,filterValues:()=>et,flattenIncludeSections:()=>Ie,formatOut:()=>hr,getBrowser:()=>mn,getBrowserVersion:()=>gn,getByPath:()=>$e,getDeviceType:()=>yn,getEvent:()=>De,getFlowSettings:()=>ie,getGrantedConsent:()=>xe,getHeaders:()=>yt,getId:()=>Te,getMappingEvent:()=>st,getMappingValue:()=>it,getMarketingParameters:()=>qe,getNextSteps:()=>Ln,getOS:()=>hn,getOSVersion:()=>vn,getPlatform:()=>ae,getSpanId:()=>Fe,getTraceId:()=>Ue,getTraceUntil:()=>un,isArguments:()=>fe,isArray:()=>le,isBoolean:()=>pe,isCommand:()=>de,isDefined:()=>me,isElementOrDocument:()=>ge,isEnvObserve:()=>_n,isFunction:()=>he,isNumber:()=>ve,isObject:()=>ye,isPathStepEntry:()=>gr,isPropertyType:()=>Qe,isRouteArray:()=>zn,isRouteConfigEntry:()=>Fn,isSameType:()=>be,isSampled:()=>Et,isStoreValue:()=>er,isString:()=>we,mcpError:()=>Cn,mcpResult:()=>Tn,mergeContractSchemas:()=>U,mergeMappingRule:()=>ft,mockEnv:()=>lt,packageNameToVariable:()=>se,parseCallPath:()=>Nn,parseGrant:()=>Mt,parseTraceparent:()=>Le,parseUserAgent:()=>dn,processEventMapping:()=>ct,readCacheEnvelope:()=>Zn,requestToData:()=>gt,requestToParameter:()=>ht,resolveContracts:()=>D,resolveSetup:()=>bt,resolveTelemetryOptions:()=>At,scanFlowRefs:()=>Y,serializeStoreValue:()=>tr,setByPath:()=>Se,setTraceUntil:()=>fn,stepId:()=>u,storeCache:()=>ir,throttle:()=>Ze,throwError:()=>F,transformData:()=>vt,traverseEnv:()=>pt,trim:()=>wt,tryCatch:()=>nt,tryCatchAsync:()=>rt,useHooks:()=>kt,validateStepEntry:()=>mr,verifyActivation:()=>Pt,walkPath:()=>re,wrapCacheEnvelope:()=>Wn,wrapCondition:()=>wn,wrapFn:()=>kn,wrapValidate:()=>$n}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of r(s))o.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={},c={};function u(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}s(c,{stepId:()=>u});var f={},l={};function p(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}s(l,{getDestination:()=>p});var d={},m={},g={};s(g,{Level:()=>h});var h=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(h||{}),v={},y={},b={};function w(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}s(b,{getTransformer:()=>w});var k={},$={};function S(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}s($,{getSource:()=>S});var E={};function A(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}async function j(e,t){return await e.get(t)}s(E,{getStore:()=>A,getStoreValue:()=>j});var I={},O={},x={},_={},M={},N={},T={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function C(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 F(e){throw new Error(String(e))}var z=new Set(["description","examples","title","$comment"]);function D(e,t){const n=!1!==t?.stripAnnotations,r={},o=new Set;function s(t){if(r[t])return r[t];o.has(t)&&F(`Circular extend chain detected: ${[...o,t].join(" → ")}`);const i=e[t];i||F(`Contract "${t}" not found`),o.add(t);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=U(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]||{},s=t.events?.[n]||{},i=new Set([...Object.keys(o),...Object.keys(s)]);r[n]={};for(const e of i){const t=o[e],i=s[e];r[n][e]=t&&i?U(t,i):{...t||i}}}n.events=r}return n}(s(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 s=e["*"]?.["*"];s&&(o=U(o,s));const i=e["*"]?.[r];i&&"*"!==r&&(o=U(o,i));const a=e[n]?.["*"];a&&"*"!==r&&(o=U(o,a));const c=e[n]?.[r];c&&(o=U(o,c)),t[n][r]=o}}e["*"]&&(t["*"]={...e["*"]});return t}(a.events)),a.events&&n){const e={};for(const[t,n]of Object.entries(a.events)){e[t]={};for(const[r,o]of Object.entries(n))e[t][r]=V(o)}a.events=e}return o.delete(t),r[t]=a,a}for(const t of Object.keys(e))s(t);return r}function U(e,t){const n={...e};for(const r of Object.keys(t)){const o=e[r],s=t[r];"required"===r&&Array.isArray(o)&&Array.isArray(s)?n[r]=[...new Set([...o,...s])]:L(o)&&L(s)?n[r]=U(o,s):n[r]=s}return n}function V(e){const t={};for(const[n,r]of Object.entries(e))z.has(n)||(null===r||"object"!=typeof r||Array.isArray(r)?t[n]=r:t[n]=V(r));return t}function L(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var B=/^\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/,q=/\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,K=/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,W=/^\$contract\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.(.+))?$/,Z=/^\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?$/,H=/^\$store\.([a-zA-Z_][a-zA-Z0-9_]*)$/,J=/^\$secret\.([A-Z0-9_]+)$/,G="$code:",X=/\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)/g;function Y(e,t){const n=t??new Set;if("string"==typeof e){for(const t of e.matchAll(X))n.add(t[1]);return n}if(e&&"object"==typeof e)for(const t of Object.values(e))Y(t,n);return n}function Q(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var ee="__WALKEROS_ENV:",te="__WALKEROS_SECRET:";function ne(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 re(e,t,n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const s=r[e];if(null==o||"object"!=typeof o){const o=r.slice(0,e).join(".");F(`Path "${t}" not found in "${n}": "${s}" does not exist${o?` in "${o}"`:""}`)}const i=o;if(!(s in i)){const o=r.slice(0,e).join(".");F(`Path "${t}" not found in "${n}": "${s}" does not exist${o?` in "${o}"`:""}`)}o=i[s]}return o}function oe(e,t,n,r,o,s){if("string"==typeof e){const i=e.match(B);if(i){const e=i[1].split("."),a=e[0],c=e.slice(1).join(".");void 0===t[a]&&F(`Variable "${a}" not found`);const u=s??new Set;if(u.has(a)){F(`Cyclic $var reference: ${[...u,a].join(" -> ")}`)}let f;u.add(a);try{f=oe(t[a],t,n,r,o,u)}finally{u.delete(a)}return c&&(f=re(f,c,`$var.${a}`)),f}const a=e.match(W);if(a&&r){const e=a[1],t=a[2];e in r||F(`Contract "${e}" not found`);let n=r[e];return t&&(n=re(n,t,`$contract.${e}`)),n}const c=e.match(Z);if(c){const t=c[1],r=c[2],s=!1===n?.strictFlowRefs;o||F(`$flow.${t}${r?`.${r}`:""} cannot be resolved without a flow resolver`);const i=o(t);if(!i){if(s)return n?.onWarning?.(ne(t,r,"unknown-flow")),e;F(`Flow "${t}" not found in $flow.${t}`)}let a=i;if(r)if(s){try{a=re(a,r,`$flow.${t}`)}catch{return n?.onWarning?.(ne(t,r,"missing-key")),e}if(null==a||""===a)return n?.onWarning?.(ne(t,r,"missing-key")),e}else a=re(a,r,`$flow.${t}`);return a}const u=e.match(J);if(u){const e=u[1];if(n?.deferred)return`${te}${e}`;F(`Secret "$secret.${e}" cannot be used in a web flow — secrets are never sent to the browser. Use a server flow.`)}let f=e.replace(q,(e,i)=>{const a=i.split("."),c=a[0],u=a.slice(1).join(".");void 0===t[c]&&F(`Variable "${c}" not found`);const f=s??new Set;if(f.has(c)){F(`Cyclic $var reference: ${[...f,c].join(" -> ")}`)}let l;f.add(c);try{l=oe(t[c],t,n,r,o,f)}finally{f.delete(c)}if(u&&(l=re(l,u,`$var.${c}`)),null===l||"string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){F(`Variable "${i}" resolves to non-scalar (${Array.isArray(l)?"array":typeof l}) and cannot be inlined into a string. Use it as a whole-string reference: "$var.${i}"`)}return String(l)});return f=f.replace(K,(e,t,r)=>n?.deferred?void 0!==r?`${ee}${t}:${r}`:`${ee}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==r?r:void F(`Environment variable "${t}" not found and no default provided`)),f}if(Array.isArray(e))return e.map(e=>oe(e,t,n,r,o,s));if(null!==e&&"object"==typeof e){const i={};for(const[a,c]of Object.entries(e))i[a]=oe(c,t,n,r,o,s);return i}return e}function se(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 ie(e,t,n){const r=new Map,o=new Set,s=[],i=t=>{if(r.has(t))return r.get(t);const a=e.flows[t];if(a){if(o.has(t)){F(`Cyclic $flow reference: ${[...s,t].join(" -> ")}`)}o.add(t),s.push(t);try{const o=Q(e.variables,a.variables),s=oe(a.config??{},o,n,void 0,i);return r.set(t,s),s}finally{o.delete(t),s.pop()}}},a=Object.keys(e.flows);t||(1===a.length?t=a[0]:F(`Multiple flows found (${a.join(", ")}). Please specify a flow.`));const c=e.flows[t];c||F(`Flow "${t}" not found. Available: ${a.join(", ")}`),o.add(t),s.push(t);try{return function(e,t,n,r){const o=JSON.parse(JSON.stringify(t));let s;if(e.contract){const o=Q(e.variables,t.variables);s=D(oe(e.contract,o,n,void 0,r))}if(o.config){const i=Q(e.variables,t.variables);o.config=oe(o.config,i,n,s,r)}if(o.sources)for(const[i,a]of Object.entries(o.sources)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),f=oe(a.env,c,n,s,r);o.sources[i]={package:a.package,import:a.import,config:u,env:f,primary:a.primary,variables:a.variables,before:a.before,next:a.next,cache:a.cache,code:a.code}}if(o.destinations)for(const[i,a]of Object.entries(o.destinations)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),f=oe(a.env,c,n,s,r);o.destinations[i]={package:a.package,import:a.import,config:u,env:f,variables:a.variables,before:a.before,next:a.next,cache:a.cache,code:a.code}}if(o.stores)for(const[i,a]of Object.entries(o.stores)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),f=oe(a.env,c,n,s,r);o.stores[i]={package:a.package,import:a.import,config:u,env:f,cache:a.cache,variables:a.variables,code:a.code}}if(o.transformers)for(const[i,a]of Object.entries(o.transformers)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),f=oe(a.env,c,n,s,r);o.transformers[i]={package:a.package,import:a.import,config:u,env:f,variables:a.variables,before:a.before,next:a.next,cache:a.cache,code:a.code}}if(o.collector){const i=Q(e.variables,t.variables),a=oe(o.collector,i,n,s,r);o.collector=a}return o}(e,c,n,i)}finally{o.delete(t),s.pop()}}function ae(e){const t=e.config?.platform;if("web"===t||"server"===t)return t;F('Flow must have config.platform set to "web" or "server"')}var ce={merge:!0,shallow:!0,extend:!0};function ue(e,t={},n={}){n={...ce,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const s=e[r];return n.merge&&Array.isArray(s)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function fe(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function le(e){return Array.isArray(e)}function pe(e){return"boolean"==typeof e}function de(e){return"walker"===e}function me(e){return void 0!==e}function ge(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function he(e){return"function"==typeof e}function ve(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 be(e,t){return typeof e==typeof t}function we(e){return"string"==typeof e}function ke(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]=ke(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(ke(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 $e(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("."),s=[];for(const e of o){const r=$e(e,t,n);s.push(r)}return s}if(o=ye(o)||le(o)?o[t]:void 0,void 0===o)break}return me(o)?o:n}function Se(e,t,n){if(!ye(e))return e;const r=ke(e),o=t.split(".");let s=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return r}function Ee(e,t){if(!ye(e)&&!le(e))return e;const n=ke(e),r=t.split(".");let o=n;for(let e=0;e<r.length;e++){const t=r[e],s=e===r.length-1;if(le(o)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=o.length)return n;if(s)o.splice(e,1);else{const t=o[e];if(!ye(t)&&!le(t))return n;o=t}}else if(s)delete o[t];else{const e=o[t];if(!ye(e)&&!le(e))return n;o=e}}return n}var Ae={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 je(e,t,n){if(ye(n))for(const[r,o]of Object.entries(n))void 0!==o&&je(e,`${t}_${r}`,o);else e[t]=n}function Ie(e,t){const n={},r=t.includes("all")?Object.keys(Ae):t;for(const t of r){const r=Ae[t];if(!r)continue;const o=r(e);if(ye(o))for(const[e,r]of Object.entries(o)){if(void 0===r)continue;je(n,`${t}_${e}`,"context"===t&&Array.isArray(r)?r[0]:r)}}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 xe(e,t={},n={}){const r={...t,...n},o={};let s=!e||0===Object.keys(e).length;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(s=!0))}),!!s&&o}function _e(e,t){const n={...e};return n.config=ue(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=ue(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=ue(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Me(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])?Me(e[n],r):e[n]=r)}return e}var Ne="0123456789abcdefghijklmnopqrstuvwxyz";function Te(e=6,t=Ne){const n=t.length;if(e<=0||0===n)return"";let r="";if(n<=256){const o=256-256%n;for(;r.length<e;){const s=e-r.length,i=new Uint8Array(Math.ceil(1.3*s)+4);if(!Ce(i))break;for(let s=0;s<i.length&&r.length<e;s++)i[s]<o&&(r+=t[i[s]%n])}}for(;r.length<e;)r+=t[Math.random()*n|0];return r}function Ce(e){try{const t=globalThis.crypto;if(t&&"function"==typeof t.getRandomValues)return t.getRandomValues(e),!0}catch{}return!1}var Pe="0123456789abcdef";function Re(e){let t=Te(e,Pe);for(;/^0+$/.test(t);)t=Te(e,Pe);return t}function Fe(){return Re(16)}function ze(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=ue({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||Fe(),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,source:{type:"collector",schema:"4"}},e,{merge:!1});if(n.source={count:1,trace:"0a1b2c3d4e5f60718293a4b5c6d7e8f9",...n.source},e.name){const[t,r]=e.name.split(" ")??[];t&&r&&(n.entity=t,n.action=r)}return n}function De(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 ze({...{"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 Ue(){return Re(32)}var Ve=/^(?<version>[0-9a-f]{2})-(?<trace>[0-9a-f]{32})-(?<span>[0-9a-f]{16})-[0-9a-f]{2}$/;function Le(e){if("string"!=typeof e)return;const t=Ve.exec(e)?.groups;if(!t)return;const{version:n,trace:r,span:o}=t;return void 0===n||void 0===r||void 0===o||"ff"===n||/^0+$/.test(r)||/^0+$/.test(o)?void 0:{trace:r,parentSpan:o}}var Be=[{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 qe(e,t={},n=[]){const r={};Object.entries(ue({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(Be.map(e=>e.param));return[...Be.map(e=>t.has(e.param)?{param:e.param,platform:t.get(e.param)}:e),...e.filter(e=>!n.has(e.param))]}(n):Be,s=new Map;e.searchParams.forEach((e,t)=>{e&&s.set(t.toLowerCase(),e)});for(const e of o){const t=s.get(e.param);t&&(r[e.param]=t,r.clickId||(r.clickId=e.param,r.platform=e.platform))}return r}function Ke(e,t){return"number"==typeof e?{wait:e}:e?{wait:e.wait??t,size:e.size,age:e.age}:{wait:t}}function We(e,t=1e3,n=!1){const{wait:r,size:o,age:s}=Ke(t,1e3);let i,a,c=null,u=null,f=!1,l=[],p=0;const d=()=>{c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null),p=0,a=void 0},m=()=>{const t=a,n=l;if(d(),l=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},g=(...t)=>new Promise(d=>{const g=n&&!f;if(a=t,p+=1,l.push(d),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!f||m()},r),void 0===s||u||(u=setTimeout(()=>{u=null,m()},s)),void 0!==o&&p>=o)m();else if(g){f=!0,i=e(...t);const n=l;l=[],n.forEach(e=>e(i))}});return g.flush=()=>a||0!==l.length?new Promise(e=>{l.push(e),m()}):Promise.resolve(i),g.cancel=()=>{const e=l;l=[],d(),i=void 0,e.forEach(e=>e(void 0))},g.size=()=>p,g}function Ze(e,t=1e3){const{wait:n}=Ke(t,1e3);let r=null;return function(...t){if(null===r)return r=setTimeout(()=>{r=null},n),e(...t)}}function He(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function Je(e,t){let n,r={};return e instanceof Error?(n=e.message,r.error=He(e)):n=e,void 0!==t&&(t instanceof Error?r.error=He(t):"object"==typeof t&&null!==t?(r={...r,...t},"error"in r&&r.error instanceof Error&&(r.error=He(r.error))):r.value=t),{message:n,context:r}}var Ge=(e,t,n,r)=>{const o=`${h[e]}${r.length>0?` [${r.join(":")}]`:""}`,s=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(o,t,n):i(o,t)};function Xe(e={}){return Ye({level:void 0!==e.level?function(e){return"string"==typeof e?h[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function Ye(e){const{level:t,handler:n,jsonHandler:r,scope:o}=e,s=(e,r,s)=>{if(e<=t){const t=Je(r,s);n?n(e,t.message,t.context,o,Ge):Ge(e,t.message,t.context,o)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const r=Je(e,t);throw n?n(0,r.message,r.context,o,Ge):Ge(0,r.message,r.context,o),new Error(r.message)},json:e=>{r?r(e):console.log(JSON.stringify(e,null,2))},scope:e=>Ye({level:t,handler:n,jsonHandler:r,scope:[...o,e]})}}function Qe(e){return pe(e)||we(e)||ve(e)||!me(e)||le(e)&&e.every(Qe)||ye(e)&&Object.values(e).every(Qe)}function et(e){return pe(e)||we(e)||ve(e)?e:fe(e)?et(Array.from(e)):le(e)?e.map(e=>et(e)).filter(e=>void 0!==e):ye(e)?Object.entries(e).reduce((e,[t,n])=>{const r=et(n);return void 0!==r&&(e[t]=r),e},{}):void 0}function tt(e){return Qe(e)?e:void 0}function nt(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function rt(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 ot=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function st(e,t,n){const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let s,i="",a=r,c=o;const u=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[a]||(a="*");const f=t[a];return f&&(f[c]||(c="*"),s=u(f[c])),s||(a="*",c="*",s=u(t[a]?.[c])),s&&(i=`${a} ${c}`),{eventMapping:s,mappingKey:i}}async function it(e,t={},n={}){if(!me(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 s={event:o,mapping:t,collector:n.collector,logger:n.collector.logger,consent:r},i=le(t)?t:[t];for(const t of i){const r=await rt(at,e=>{if(e instanceof ot)throw e;n.collector&&n.collector.status.failed++,s.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...s,mapping:t});if(me(r))return r}}async function at(e,t,n){return(le(t)?t:[t]).reduce(async(t,r)=>{const o=await t;if(o)return o;const s=we(r)?{key:r}:r;if(!Object.keys(s).length)return;const{condition:i,consent:a,fn:c,key:u,loop:f,map:l,set:p,validate:d,value:m}=s,g={...n,mapping:r};if(i&&!await rt(i,e=>{if(e instanceof ot)throw e;return g.logger.error("mapping condition failed",{event:g.event,error:e}),!1})(e,g))return;if(a&&!xe(a,g.consent))return m;let h=me(m)?m:e;if(c&&(h=await rt(c,e=>{if(e instanceof ot)throw e;g.logger.error("mapping fn failed",{event:g.event,error:e})})(e,g)),u&&(h=$e(e,u,m)),f){const[t,n]=f,r="this"===t?[e]:await it(e,t,g);le(r)&&(h=(await Promise.all(r.map(e=>it(e,n,g)))).filter(me))}else l?h=await Object.entries(l).reduce(async(t,[n,r])=>{const o=await t,s=await it(e,r,g);return me(s)&&(o[n]=s),o},Promise.resolve({})):p&&(h=await Promise.all(p.map(t=>at(e,t,g))));d&&!await rt(d,e=>{if(e instanceof ot)throw e;return g.logger.error("mapping validate failed",{event:g.event,error:e}),!1})(h,g)&&(h=void 0);const v=tt(h);return me(v)?v:tt(m)},Promise.resolve(void 0))}async function ct(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,r])=>{const o=await it(e,r,{collector:n,event:e});e=Se(e,t,o)}));const{eventMapping:r,mappingKey:o}=await st(e,t.mapping,n);r?.policy&&await Promise.all(Object.entries(r.policy).map(async([t,r])=>{const o=await it(e,r,{collector:n,event:e});e=Se(e,t,o)}));let s=t.data&&await it(e,t.data,{collector:n,event:e});const i=Boolean(r?.silent);if(r){if(r.ignore)return{event:e,data:s,mapping:r,mappingKey:o,ignore:!0,silent:i};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await it(e,r.data,{collector:n,event:e});s=ye(s)&&ye(t)?ue(s,t):t}}const a=r?.include??t.include;if(a&&a.length>0){const t=Ie(e,a);Object.keys(t).length>0&&(s=ye(s)?ue(t,s):s??t)}if(r?.remove&&ye(s))for(const e of r.remove)s=Ee(s,e);return{event:e,data:s,mapping:r,mappingKey:o,ignore:!1,silent:i}}function ut(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)?ut(o,r):e[n]=r}return e}function ft(e,t){if(void 0===t.extend&&void 0===t.remove)return ke(t);const n={...ke(e)};if(t.extend){ut(n,{...t.extend})}return delete n.extend,t.remove?n.remove=[...t.remove]:delete n.remove,n}function lt(e,t){const n=(e,r=[])=>new Proxy(e,{get(e,o){const s=e[o],i=[...r,o];return"function"==typeof s?s.prototype&&s.prototype.constructor===s?s:(...e)=>{const r=t(i,e,s);if(r&&"object"==typeof r)return n(r,i);const o=s(...e);return o&&"object"==typeof o?n(o,i):r}:s&&"object"==typeof s?n(s,i):s}});return n(e)}function pt(e,t){const n=(e,r=[])=>{if(!e||"object"!=typeof e)return e;const o=Array.isArray(e)?[]:{};for(const[s,i]of Object.entries(e)){const e=[...r,s];Array.isArray(o)?o[Number(s)]=t(i,e):o[s]=t(i,e),i&&"object"==typeof i&&"function"!=typeof i&&(Array.isArray(o)?o[Number(s)]=n(i,e):o[s]=n(i,e))}return o};return n(e)}function dt(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=dt();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 mt(e={}){return{collector:{},config:{},env:{},logger:dt(),id:"test",ingest:C("test"),...e}}function gt(e){const t=String(e),n=t.split("?")[1]||t;return nt(()=>{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 s=n===r.length-1;if(le(o)){const i=parseInt(t,10);s?o[i]=Oe(e):(o[i]=o[i]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[i])}else ye(o)&&(s?o[t]=Oe(e):(o[t]=o[t]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[t]))})}),t})()}function ht(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 vt(e){return void 0===e||be(e,"")?e:JSON.stringify(e)}function yt(e={}){return ue({"Content-Type":"application/json; charset=utf-8"},e)}function bt(e,t){return!1===e||void 0===e?null:!0===e?t:{...t,...e}}function wt(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function kt(e,t,n,r){const o=e;return function(...e){let s;const i="pre"+t,a="post"+t,c=n[i],u=n[a],f=(e,t)=>{r?r.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:o},...e)}catch(t){f(`Hook ${String(i)} failed, falling back to original function`,t),s=o(...e)}else s=o(...e);if(u)try{s=u({fn:o,result:s},...e)}catch(e){f(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function $t(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 St(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 s=r.sample,i="number"==typeof s&&Number.isFinite(s)?s:1;if(t.eventId&&!$t(t.eventId,i))return;const a=r.includeIn??"trace"===o,c=r.includeOut??"trace"===o,u=r.includeMappingKey??"trace"===o,f={...t};a||delete f.inEvent,c||(delete f.outEvent,delete f.calls),u||delete f.mappingKey,"trace"!==o&&f.error?.message&&f.error.message.length>256&&(f.error={...f.error,message:f.error.message.slice(0,256)+"…"});try{e(f)}catch{}}}function Et(e,t){return $t(e,t)}function At(e){const t=e.now??(()=>Date.now()),{traceUntil:n}=e;if("string"==typeof n&&n.length>0){const r=Date.parse(n);if(!Number.isNaN(r)&&r>t())return{flowId:e.flowId,level:"trace",includeIn:!0,includeOut:!0,sample:1}}const r=e.observe?.level??"standard";if("off"===r)return null;const o=e.observe?.sample??1;return{flowId:e.flowId,level:r,sample:o}}var jt=/^[A-Za-z0-9_-]+$/;function It(e){if(!jt.test(e))return null;const t=e.length%4==0?"":"=".repeat(4-e.length%4),n=e.replace(/-/g,"+").replace(/_/g,"/")+t,r=globalThis.atob;if(!r)return null;try{const e=r(n),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}catch{return null}}function Ot(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function xt(e){const t=It(e);if(!t)return null;const n=function(e){let t="";for(let n=0;n<e.length;n++){const r=e[n];if(void 0===r||r>127)return null;t+=String.fromCharCode(r)}return t}(t);if(null===n)return null;try{return JSON.parse(n)}catch{return null}}function _t(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Mt(e){if(!e)return null;const t=e.split("."),[n,r,o]=t;if(3!==t.length||!n||!r||!o)return null;const s=xt(n);if(!_t(s))return null;const i=s.kid,a=s.alg;if("string"!=typeof i||"ES256"!==a)return null;const c=xt(r);if(!function(e){if(!_t(e))return!1;const t=e;return"string"==typeof t.iss&&Array.isArray(t.aud)&&t.aud.every(e=>"string"==typeof e)&&"number"==typeof t.iat&&"number"==typeof t.sxp&&"string"==typeof t.art&&jt.test(t.art)&&"string"==typeof t.sri&&"string"==typeof t.pb&&"activate"===t.cap&&"string"==typeof t.jti&&"string"==typeof t.pid&&(void 0===t.ses||"string"==typeof t.ses)&&(void 0===t.sb||"string"==typeof t.sb)}(c))return null;const u=It(o);return u&&64===u.byteLength?{grant:c,kid:i,signed:Ot(`${n}.${r}`),signature:u}:null}var Nt=9e5,Tt=6e4,Ct=39e5;async function Pt(e,t){const n=Mt(e);if(!n)return{ok:!1,reason:"malformed"};const{grant:r,kid:o,signed:s,signature:i}=n;if(r.iss!==t.iss)return{ok:!1,reason:"foreign-issuer"};if("activate"!==r.cap)return{ok:!1,reason:"cap-mismatch"};if(1e3*r.iat>t.now+Tt)return{ok:!1,reason:"expired"};if(1e3*r.sxp-1e3*r.iat>Ct)return{ok:!1,reason:"expired"};const a="url"===t.source?Math.min(1e3*r.iat+Nt,1e3*r.sxp):1e3*r.sxp;if(t.now>=a)return{ok:!1,reason:"expired"};if(void 0!==t.origin&&!r.aud.includes(t.origin))return{ok:!1,reason:"aud-mismatch"};if(t.acceptForeign){const e=t.demoAllowlist??[];if(1!==r.aud.length||!r.aud.every(t=>e.includes(t)))return{ok:!1,reason:"aud-mismatch"}}if(!(t.acceptForeign||t.pb&&r.pb===t.pb))return{ok:!1,reason:"pb-mismatch"};const c=void 0!==r.ses||void 0!==r.sb;if(t.expectSession){if(r.ses!==t.expectSession.ses)return{ok:!1,reason:"sb-mismatch"};if(!r.sb||r.sb!==t.expectSession.sb)return{ok:!1,reason:"sb-mismatch"}}else if(c)return{ok:!1,reason:"sb-mismatch"};const u=t.keyring.find(e=>e.kid===o);if(!u)return{ok:!1,reason:"kid-mismatch"};const f=t.crypto??globalThis.crypto,l=f?.subtle;if(!l)return{ok:!1,reason:"no-subtle"};const p=function(e){return It(e)}(u.spki);if(!p)return{ok:!1,reason:"kid-mismatch"};try{const e=await l.importKey("spki",p,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]);if(!await l.verify({name:"ECDSA",hash:"SHA-256"},e,i,s))return{ok:!1,reason:"bad-signature"}}catch{return{ok:!1,reason:"bad-signature"}}return{ok:!0,grant:r}}var Rt="elbPreview",Ft="[walkerOS:preview]",zt=5e3,Dt=globalThis;function Ut(){const e=Dt.window,t=Dt.URLSearchParams;if(e&&t)try{const n=e.location.href,r=n.indexOf("#"),o=r>=0?n.slice(r):"",s=r>=0?n.slice(0,r):n,i=s.indexOf("?"),a=i>=0?s.slice(0,i):s,c=new t(i>=0?s.slice(i+1):"");c.delete("elbPreview");const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${o}`)}catch{}}async function Vt(e){const t=Dt.window;if(!t||!Dt.document)return!1;const n=function(){let e=null;return{get(){try{return Dt.window?.localStorage.getItem(Rt)??e}catch{return e}},set(t){try{Dt.window?.localStorage.setItem(Rt,t)}catch{e=t}},clear(){e=null;try{Dt.window?.localStorage.removeItem(Rt)}catch{}}}}(),r=e.now??(()=>Date.now()),o=e=>Dt.console?.warn(`${Ft} ${e}`);let s=null;const i=Dt.URLSearchParams;if(i)try{const e=new i(t.location.search.replace(/^\?/,"")).getAll("elbPreview");s=e.length>0?e[e.length-1]??null:null}catch{s=null}if("off"===s)return n.clear(),Ut(),!1;const a=n.get();if(!s&&!a)return!1;const c=(n,o)=>Pt(n,{keyring:e.keyring,iss:e.iss,origin:t.location.origin,pb:e.pb,acceptForeign:e.acceptForeign,demoAllowlist:e.demoAllowlist,source:o,now:r(),crypto:e.crypto});let u=null;if(s){const e=await c(s,"url");e.ok?(u=e.grant,n.set(s)):o(e.reason),Ut()}if(!u&&a){const e=await c(a,"storage");e.ok?u=e.grant:(o(e.reason),"no-subtle"!==e.reason&&n.clear())}if(!u)return!1;const f=`https://${e.previewOrigin}/preview/${u.art}.js`,l=await function(e,t){return new Promise(n=>{const r=Dt.document;if(!r)return void n(!1);const o=r.createElement("script");let s,i=!1;const a=e=>{i||(i=!0,void 0!==s&&Dt.clearTimeout?.(s),!e&&o.parentNode&&o.parentNode.removeChild(o),n(e))};s=Dt.setTimeout?.(()=>a(!1),zt),o.onload=()=>a(!0),o.onerror=()=>a(!1),o.setAttribute("integrity",t),o.setAttribute("crossorigin","anonymous"),o.src=e,r.head.appendChild(o)})}(f,u.sri);return l?(Dt.console?.info(`${Ft} active ${u.art} ends ${new Date(1e3*u.sxp).toISOString()}`),!0):(o("swap-failed"),n.clear(),!1)}var Lt=15e3,Bt={error:5,skip:4,out:3,in:2,init:1,flush:0},qt="\0none",Kt="\0";function Wt(e,t){return`${e??qt}${Kt}${t}`}function Zt(e){const t=Date.parse(e);return Number.isNaN(t)?0:t}function Ht(e,t){const n=e.platform??"",r=t.platform??"";if(n!==r)return n<r?-1:1;if(e.stepId!==t.stepId)return e.stepId<t.stepId?-1:1;if(e.phase!==t.phase)return Bt[e.phase]-Bt[t.phase];if(e.eventId!==t.eventId)return e.eventId<t.eventId?-1:1;const o=e.branchId??"",s=t.branchId??"";if(o!==s)return o<s?-1:1;if(e.elapsedMs!==t.elapsedMs)return e.elapsedMs-t.elapsedMs;const i=e.seq??-1,a=t.seq??-1;return i!==a?i-a:e.timestamp!==t.timestamp?e.timestamp<t.timestamp?-1:1:0}function Jt(e){switch(e){case"error":return"error";case"skip":return"skipped";case"out":return"done";case"in":case"init":case"flush":return"pending"}}function Gt(e){return"out"===e.terminalPhase||"error"===e.terminalPhase||"skip"===e.terminalPhase||!0===e.batched}function Xt(e){return"done"===e.status&&("transformer"!==e.stepType||null!==e.out&&void 0!==e.out)}function Yt(e,t,n,r){const o=n.get(Wt(e.node.platform,t));if(void 0!==o)return o;const s=r.get(t);return void 0!==s&&1===s.length?s[0]:void 0}function Qt(e){const t=new Map,n=new Map;e.nodes.forEach((e,r)=>{const o={node:e,rank:r,key:Wt(e.platform,e.stepId)};t.has(o.key)||t.set(o.key,o);const s=n.get(e.stepId);s?s.push(o):n.set(e.stepId,[o])});const r=new Map,o=new Set;for(const e of t.values()){const s=[];for(const r of e.node.downstream){const i=Yt(e,r,t,n);void 0!==i&&(s.push(i),o.add(i.key))}r.set(e.key,s)}const s=[];for(const e of t.values())o.has(e.key)||s.push(e);return s.sort((e,t)=>e.rank-t.rank),{byKey:t,byStepId:n,edges:r,roots:s}}function en(e,t,n){const r=e.byKey.get(Wt(n,t));if(void 0!==r)return r;const o=e.byKey.get(Wt(void 0,t));if(void 0!==o)return o;const s=e.byStepId.get(t);return void 0!==s&&1===s.length?s[0]:void 0}function tn(e,t,n,r,o,s){return s-n<o?"pending":void 0!==r?function(e,t,n){const r=t=>e.find(e=>e.stepId===t.node.stepId&&(void 0===t.node.platform||e.platform===t.node.platform)),o=n.roots.filter(e=>void 0===e.node.platform||t.includes(e.node.platform));if(0===o.length)return e.every(Gt)?"complete":"partial";const s=new Map,i=o;for(;i.length>0;){const e=i.shift();if(void 0===e)break;if(s.has(e.key))continue;s.set(e.key,e);const t=r(e);if(void 0!==t&&Xt(t)){const t=n.edges.get(e.key);if(void 0!==t)for(const e of t)s.has(e.key)||i.push(e)}}for(const e of s.values()){const t=r(e);if(void 0===t||!Gt(t))return"partial"}return"complete"}(e,t,r):e.every(Gt)?"complete":"partial"}function nn(e){let t=e[0];for(const n of e)n.elapsedMs<t.elapsedMs&&(t=n);const n=[],r=new Map;let o=!1;for(const t of e)if("flush"!==t.phase){if(void 0!==t.branchId){const e=r.get(t.branchId);e?e.push(t):r.set(t.branchId,[t]);continue}n.push(t)}else o=!0;const s=[...r.values()].flat(),i=n.length>0?n:s.length>0?s:e;let a,c,u,f,l,p,d,m,g,h=i[0],v=i[0];for(const e of i)e.elapsedMs<h.elapsedMs&&(h=e),Bt[e.phase]>Bt[v.phase]&&(v=e),"out"===e.phase&&(a=e),void 0!==e.inEvent&&void 0===c&&(c=e.inEvent),void 0!==e.outEvent&&(u=e.outEvent),void 0!==e.mappingKey&&(f=e.mappingKey),void 0!==e.contractRule&&(l=e.contractRule),void 0!==e.consent&&(p=e.consent),void 0!==e.consentApplied&&(d=e.consentApplied),void 0!==e.meta&&(m=e.meta),void 0!==e.parentEventId&&void 0===g&&(g=e.parentEventId);const y=v.phase,b=a?.durationMs,w="error"===y?v.error:void 0,k="skip"===y?v.skipReason:void 0,$=a?.calls,S="out"===v.phase&&void 0!==v.batch||void 0,E=!(!o||!0!==S)||void 0,A=r.size>0?[...r.entries()].sort(([e],[t])=>e<t?-1:e>t?1:0).map(([e,t])=>function(e,t){let n,r,o=t[0];for(const e of t)Bt[e.phase]>Bt[o.phase]&&(o=e),"out"===e.phase&&(n=e),void 0!==e.outEvent&&(r=e.outEvent);const s=o.phase,i=n?.durationMs,a="skip"===s?o.skipReason:void 0,c="error"===s?o.error:void 0,u=n?.calls;return{branchId:e,status:Jt(s),terminalPhase:s,...void 0!==i?{durationMs:i}:{},...void 0!==a?{skipReason:a}:{},...void 0!==c?{error:c}:{},...void 0!==r?{out:r}:{},...void 0!==u?{calls:u}:{}}}(e,t)):void 0;return{stepId:h.stepId,stepType:h.stepType,eventId:h.eventId,status:Jt(y),terminalPhase:y,startedAtMs:t.elapsedMs,timestamp:t.timestamp,...void 0!==h.platform?{platform:h.platform}:{},...void 0!==g?{parentEventId:g}:{},...void 0!==b?{durationMs:b}:{},...void 0!==c?{in:c}:{},...void 0!==u?{out:u}:{},...void 0!==w?{error:w}:{},...void 0!==k?{skipReason:k}:{},...void 0!==f?{mappingKey:f}:{},...void 0!==l?{contractRule:l}:{},...void 0!==p?{consent:p}:{},...void 0!==d?{consentApplied:d}:{},...void 0!==$?{calls:$}:{},...void 0!==A?{branches:A}:{},...void 0!==S?{batched:S}:{},...void 0!==E?{flushConfirmed:E}:{},...void 0!==m?{meta:m}:{}}}function rn(e,t){const n=e.map(e=>({hop:e,rank:void 0!==t?en(t,e.stepId,e.platform)?.rank??Number.MAX_SAFE_INTEGER:0}));return n.sort((e,t)=>e.rank!==t.rank?e.rank-t.rank:e.hop.startedAtMs!==t.hop.startedAtMs?e.hop.startedAtMs-t.hop.startedAtMs:e.hop.stepId<t.hop.stepId?-1:e.hop.stepId>t.hop.stepId?1:0),n.map(e=>e.hop)}function on(e){const t=e.filter(e=>"collector"===e.stepType&&"in"===e.phase),n=t.length>0?t:e;let r=n[0],o=Zt(r.timestamp);for(const e of n){const t=Zt(e.timestamp);t<o&&(o=t,r=e)}const s=function(e){if("object"==typeof e&&null!==e&&"name"in e&&"string"==typeof e.name)return e.name}(r.inEvent);return{eventId:r.eventId,timestamp:r.timestamp,...void 0!==s?{name:s}:{},...void 0!==r.sourceId?{sourceId:r.sourceId}:{},...void 0!==r.platform?{platform:r.platform}:{}}}function sn(e,t,n,r,o){const{topo:s}=o,i=new Map;for(const e of r){const t=Wt(e.platform,e.stepId),n=i.get(t);n?n.push(e):i.set(t,[e])}const a=[...i.values()].map(nn),c=new Map;for(const e of a){const t=e.platform??qt;let n=c.get(t);n||(n={...void 0!==e.platform?{platform:e.platform}:{},hops:[],ownedEventIds:new Set,parentEventIds:new Set,minEpoch:Number.POSITIVE_INFINITY},c.set(t,n)),n.hops.push(e),n.ownedEventIds.add(e.eventId),void 0!==e.parentEventId&&n.parentEventIds.add(e.parentEventId),n.minEpoch=Math.min(n.minEpoch,Zt(e.timestamp))}const u=function(e){const t=new Map,n=e.map((e,t)=>t).sort((t,n)=>{const r=e[t].platform??qt,o=e[n].platform??qt;return r<o?-1:r>o?1:0});e.forEach((r,o)=>{if(0!==r.parentEventIds.size)for(const s of n){if(s===o)continue;let n=!1;for(const t of e[s].ownedEventIds)if(r.parentEventIds.has(t)){n=!0;break}if(n){t.set(o,s);break}}});const r=e=>{let n=0,r=e;const o=new Set;for(;!o.has(r);){o.add(r);const e=t.get(r);if(void 0===e)break;r=e,n+=1}return n};return e.map((e,t)=>({seg:e,i:t,depth:r(t)})).sort((e,t)=>{if(e.depth!==t.depth)return e.depth-t.depth;if(e.seg.minEpoch!==t.seg.minEpoch)return e.seg.minEpoch-t.seg.minEpoch;const n=e.seg.platform??qt,r=t.seg.platform??qt;return n<r?-1:n>r?1:0}).map(e=>e.seg)}([...c.values()]),f=[],l=[];for(const e of u){void 0===e.platform||l.includes(e.platform)||l.push(e.platform);for(const t of rn(e.hops,s))f.push(t)}let p=Number.POSITIVE_INFINITY,d=Number.NEGATIVE_INFINITY;for(const e of r){const t=Zt(e.timestamp);t<p&&(p=t),t>d&&(d=t)}const m=tn(f,l,d,s,o.settleMs,o.now),g=function(e,t,n,r){for(const o of r)if((void 0===o.platform||e.includes(o.platform))&&t<=o.toMs&&o.fromMs<=n)return!0;return!1}(l,p,d,o.gaps);return{id:e,correlation:t,...void 0!==n?{traceId:n}:{},entry:on(r),hops:f,platforms:l,status:m,lossy:g,firstTimestamp:p,lastTimestamp:d,totalMs:d-p}}function an(e,t){const n={...void 0!==t?.topology?{topo:Qt(t.topology)}:{},settleMs:t?.settleMs??Lt,now:t?.now??Date.now(),gaps:[]},r=function(e){const t=new Set,n=[];for(const r of e){const e=void 0!==r.seq?`seq${Kt}${r.platform??""}${Kt}${r.seq}`:`tuple${Kt}${r.platform??""}${Kt}${r.stepId}${Kt}${r.phase}${Kt}${r.eventId}${Kt}${r.branchId??""}${Kt}${r.elapsedMs}`;t.has(e)||(t.add(e),n.push(r))}return n}(e),o=[...r].sort(Ht);n.gaps=function(e){const t=new Map;for(const n of e){if(void 0===n.seq)continue;const e=n.platform??qt,r=t.get(e);r?r.push(n):t.set(e,[n])}const n=[];for(const e of[...t.keys()].sort()){const r=t.get(e);if(void 0===r)continue;const o=[...r].sort((e,t)=>{const n=Zt(e.timestamp),r=Zt(t.timestamp);return n!==r?n-r:(e.seq??0)-(t.seq??0)});let s,i=0;for(const e of o){const t=e.seq;if(void 0!==t)if(void 0!==s){if(t!==i)if(t!==i+1){if(t>i+1){const r=e.platform;n.push({...void 0!==r?{platform:r}:{},fromMs:Zt(s.timestamp),toMs:Zt(e.timestamp),afterSeq:i,beforeSeq:t})}s=e,i=t}else s=e,i=t}else s=e,i=t}}return n}(r);const s=o.filter(e=>!(""===e.eventId&&!e.traceId)),i=new Map;for(const e of s){const t=e.traceId?e.traceId:void 0,n=t?`trace${Kt}${t}`:`event${Kt}${e.eventId}`;let r=i.get(n);r||(r=t?{id:t,correlation:"trace",traceId:t,records:[]}:{id:`event:${e.eventId}`,correlation:"legacy",records:[]},i.set(n,r)),r.records.push(e)}const a=[...i.values()].map(e=>sn(e.id,e.correlation,e.traceId,e.records,n));return a.sort((e,t)=>e.firstTimestamp!==t.firstTimestamp?e.firstTimestamp-t.firstTimestamp:e.id<t.id?-1:e.id>t.id?1:0),{journeys:a,gaps:n.gaps}}var cn=null;function un(){return cn}function fn(e){cn=e}function ln(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch{}}function pn(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,s=e.maxBodyBytes,i="number"==typeof s&&Number.isFinite(s)&&s>=1?Math.floor(s):6e4,a=e.fetch??((e,t)=>globalThis.fetch(e,t)),c=e.onError??(()=>{});let u=[],f=null,l=0;function p(e){const t=JSON.stringify(e);if(e.length<=1)return[t];if(function(e){let t=0;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);if(r<128)t+=1;else if(r<2048)t+=2;else if(r>=55296&&r<=56319&&n+1<e.length){const r=e.charCodeAt(n+1);r>=56320&&r<=57343?(t+=4,n++):t+=3}else t+=3}return t}(t)<=i)return[t];const n=Math.floor(e.length/2);return[...p(e.slice(0,n)),...p(e.slice(n))]}function d(t){return Promise.resolve().then(()=>a(e.url,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:t})).then(e=>{e&&"object"==typeof e&&"ok"in e&&!e.ok&&c(new Error(`Observer responded ${e.status}`))}).catch(e=>{c(e)})}function m(){if(0===u.length)return;const e=u;u=[],f&&(clearTimeout(f),f=null);const t=p(e);(async()=>{for(const e of t)await d(e)})()}return e=>{u.push({...e,seq:++l}),u.length>=o?m():null===f&&(f=setTimeout(m,n))}}function dn(e){return e?{userAgent:e,browser:mn(e),browserVersion:gn(e),os:hn(e),osVersion:vn(e),deviceType:yn(e)}:{}}function mn(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 gn(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 hn(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 vn(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function yn(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 bn(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function wn(e){const t=bn(e);return new Function("value","context",t)}function kn(e){const t=bn(e);return new Function("value","context",t)}function $n(e){const t=bn(e);return new Function("value","context",t)}var Sn="https://cdn.jsdelivr.net/npm",En="dist/walkerOS.json";function An(e){return"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}async function jn(e,t){const n=t?.version||"latest",r=t?.timeout||1e4,o=new AbortController,s=setTimeout(()=>o.abort(),r),i=o.signal,a=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:i,...a&&{headers:a}});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||{},s=n.hints,i=n.hintKeys??(s?Object.keys(s):[]),a=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},...s&&Object.keys(s).length>0?{hints:s}:{},hintKeys:i,exampleSummaries:a}}(e,n,await o.json())}const r=`${Sn}/${e}@${n}`,o=await In(`${r}/package.json`,i,a);return function(e,t,n,r){const o=r.$meta||{},s=r.schemas||{},i=r.examples||{},a=r.hints,c=a?Object.keys(a):[],u=[],f=i.step||{};for(const[e,t]of Object.entries(f)){const n=t,r={name:e};"string"==typeof n?.description&&(r.description=n.description),u.push(r)}const l="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:An(o.platform),schemas:s,examples:i,...l?{docs:l}:{},...p?{source:p}:{},...a&&Object.keys(a).length>0?{hints:a}:{},hintKeys:c,exampleSummaries:u}}(e,n,o,await In(`${r}/${En}`,i,a))}finally{clearTimeout(s)}}async function In(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 On(e,t){const n=await jn(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}:{}}}var xn="observe";function _n(e){if("object"!=typeof e||null===e)return!1;if(!("paths"in e)||!("record"in e))return!1;const{paths:t,record:n}=e;return Array.isArray(t)&&t.every(e=>"string"==typeof e)&&"function"==typeof n}var Mn="call:";function Nn(e){const t=(e.startsWith(Mn)?e.slice(Mn.length):e).split(".");return t.some(e=>""===e)?[]:t}function Tn(e,t){const n=t?{...e,_hints:t}:e;return{content:[{type:"text",text:JSON.stringify(n,null,2)}],structuredContent:n}}function Cn(e,t){let n,r,o,s;if(e instanceof Error){n=e.message;const t=e;t.code&&(o=t.code),Array.isArray(t.details)&&(s=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 i={error:n};return t&&(i.hint=t),r&&(i.path=r),o&&(i.code=o),s&&(i.details=s),{content:[{type:"text",text:JSON.stringify(i)}],structuredContent:i,isError:!0}}function Pn(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}function Rn(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(Rn);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(Rn);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:r,not:o}=e,s=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=$e(e,t),r=s(n);return o?!r:r}}(e)}function Fn(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}function zn(e){return Array.isArray(e)&&e.length>0&&e.every(e=>Fn(e))}function Dn(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:Un(e)??{type:"chain",value:[]}};const t=e;return{match:t.match?Rn(t.match):()=>!0,next:Un(t)??{type:"chain",value:[]}}})}function Un(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(zn(e))return Un({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=Un(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:Rn(t.match),next:Un(t.next)}:Un(t.next);if("one"in t&&t.one){const e=Dn(t.one);return t.match?{type:"gate",match:Rn(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Dn(t.many);return t.match?{type:"gate",match:Rn(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:Rn(t.match)}:void 0}var Vn=new WeakMap;function Ln(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=Vn.get(e);t?n=t:(n=Un(e),n&&Vn.set(e,n))}else n=Un(e);if(!n)return[];const r=Bn(n,t);return void 0===r?[]:Array.isArray(r)?r:[r]}function Bn(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 Bn(e.next,t)}if("sequence"===e.type){const n=[];for(const r of e.value){const e=Bn(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=Bn(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 Bn(n.next,t)}}var qn="__walkeros_cache_v__",Kn="__walkeros_cache_exp__";function Wn(e,t,n=Date.now){const r={[qn]:e};return void 0!==t&&(r[Kn]=n()+t),r}function Zn(e,t=Date.now){if(void 0===e)return;if(null===(n=e)||"object"!=typeof n||Array.isArray(n)||!(qn in e))return{value:e};var n;const r=e[Kn];return"number"==typeof r&&t()>r?{expired:!0}:{value:e[qn]}}var Hn="__walkeros_cache__",Jn=class extends Error{constructor(e,t){super(e,t),this.name="StoreCodecError"}};function Gn(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Xn(e){if(Buffer.isBuffer(e))return{[Hn]:"buffer",d:e.toString("base64")};if(e instanceof Uint8Array)return{[Hn]:"buffer",d:Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64")};if(e instanceof ArrayBuffer)return{[Hn]:"buffer",d:Buffer.from(e).toString("base64")};if(Array.isArray(e))return e.map(Xn);if(Gn(e)){if(Hn in e){const t={};for(const[n,r]of Object.entries(e))t[n]=Xn(r);return{[Hn]:"escape",d:t}}const t={};for(const[n,r]of Object.entries(e))t[n]=Xn(r);return t}return e}function Yn(e,t){if(Gn(e)){if(Hn in e){const n=e[Hn],r=e.d;if("buffer"===n&&"string"==typeof r)return t(Buffer.from(r,"base64"));if("escape"===n&&Gn(r)){const e={};for(const[n,o]of Object.entries(r))e[n]=Yn(o,t);return e}}const n={};for(const[r,o]of Object.entries(e))n[r]=Yn(o,t);return n}return Array.isArray(e)?e.map(e=>Yn(e,t)):e}function Qn(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function er(e){return null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e||e instanceof Uint8Array||(Array.isArray(e)?e.every(e=>void 0===e||er(e)):!!Gn(e)&&Object.values(e).every(e=>void 0===e||er(e)))}function tr(e){let t;try{t=JSON.stringify(Xn(e))}catch(e){throw new Jn("Failed to serialize store value (likely a cyclic structure).",{cause:e})}return new Uint8Array(Buffer.from(t,"utf8"))}function nr(e){const t="string"==typeof e?e:Buffer.from(e).toString("utf8"),n=Yn(JSON.parse(t),Qn);if(!er(n))throw new Jn("Restored value is not a valid StoreValue.");return n}function rr(e,t){const n={ingest:e??{}};return void 0!==t&&(n.event=t),n}function or(e){return{stop:e.stop??!1,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?Rn(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function sr(e,t,n,r){const o=e.rules.find(e=>e.match(n));if(!o)return null;const s=o.key.map(e=>String($e(n,e)??""));if(s.every(e=>""===e))return null;const i=s.join(":"),a=r??e.namespace,c=a?`${a}:${i}`:i,u=Zn(await t.get(c));if(void 0===u)return{status:"MISS",key:c,rule:o};if("expired"in u){try{await t.delete(c)}catch{}return{status:"MISS",key:c,rule:o}}return{status:"HIT",key:c,value:u.value,rule:o}}function ir(e,t,n,r){if(!er(n))return;const o=1e3*r,s=e.set(t,Wn(n,o),o);s instanceof Promise&&s.catch(()=>{})}async function ar(e,t,n,r){if(!t)return e;let o=e;for(const[e,s]of Object.entries(t)){o=Se(o,e,await it(n,s,{collector:r}))}return o}function cr(e){return le(e)?e:[e]}async function ur(e,t,n,r){let o=n;for(const n of e)await rt(async()=>{const e=t(n.store);if(!e)return;const s=await it(o,n.key,{collector:r,event:o});if(!we(s))return;const i=n.store?s:`state:${s}`;if("set"===n.mode){const t=await it(o,n.value,{collector:r,event:o});if(!me(t))return;await e.set(i,t)}else{const t=we(a=n.value)?a:ye(a)&&we(a.key)?a.key:void 0;if(!t)return;const r=await e.get(i);if(!me(r))return;o=Se(o,t,r)}var a},e=>{if(e instanceof ot)throw e;r.logger?.error?.("[state] operation failed",e)})();return o}var fr={Source:["code","package","import","before","next","cache","state"],Transformer:["code","package","import","before","next","cache","state","mapping"],Destination:["code","package","import","before","next","cache","state"],Store:["code","package","import","cache"]},lr=["config","env","variables","examples","disabled","id","logger","mock","chainMocks"],pr={Source:["primary"],Transformer:[],Destination:[],Store:[]},dr=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function mr(e,t){const n=function(e){return new Set([...fr[e],...lr,...pr[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,s=void 0!==e.code;return s&&"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.`}:s&&("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."}:s&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:s&&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&&dr.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${dr.source}. Got: ${JSON.stringify(e.import)}.`}}function gr(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.state||void 0!==e.mapping))}function hr(e){return 0===e.length?"// no output":e.map(vr).join(";\n\n")}function vr(e){const[t,...n]=e,r=n.map(yr).join(", ");return"return"===t?r?`return ${r}`:"return":`${t}(${r})`}function yr(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,s=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},i={};s(i,{CLOCK_SKEW_MS:()=>Tt,Cache:()=>a,Collector:()=>c,Const:()=>T,Context:()=>l,Destination:()=>f,ENV_MARKER_PREFIX:()=>ee,Elb:()=>d,FatalError:()=>ot,Hint:()=>N,Hooks:()=>m,Level:()=>h,Lifecycle:()=>O,Logger:()=>g,MAX_SESSION_MS:()=>Ct,Mapping:()=>v,Matcher:()=>M,OBSERVE_ENV_KEY:()=>Mn,On:()=>y,REF_CODE_PREFIX:()=>G,REF_CONTRACT:()=>W,REF_ENV:()=>q,REF_FLOW:()=>Z,REF_SECRET:()=>J,REF_STORE:()=>H,REF_VAR_FULL:()=>B,REF_VAR_INLINE:()=>K,Request:()=>k,SECRET_MARKER_PREFIX:()=>te,SESSION_STORAGE_KEY:()=>Ft,STEP_OPERATIVE_FIELDS:()=>pr,Simulation:()=>_,Source:()=>$,Store:()=>E,StoreCodecError:()=>Xn,Transformer:()=>b,Trigger:()=>I,URL_WINDOW_MS:()=>Nt,WalkerOS:()=>x,anonymizeIP:()=>R,applyState:()=>fr,applyUpdate:()=>ur,assembleJourneys:()=>un,assign:()=>ue,branch:()=>P,browserSwapActivator:()=>Bt,buildCacheContext:()=>sr,castToProperty:()=>tt,castValue:()=>Oe,checkCache:()=>ar,clone:()=>ke,compileCache:()=>ir,compileMatcher:()=>zn,compileState:()=>lr,createBatchedPoster:()=>mn,createDestination:()=>_e,createEvent:()=>ze,createIngest:()=>C,createLogger:()=>Xe,createMockContext:()=>mt,createMockLogger:()=>dt,createRespond:()=>Fn,createTelemetryObserver:()=>St,debounce:()=>We,deepMerge:()=>Me,defaultClickIds:()=>Be,deleteByPath:()=>Ee,deserializeStoreValue:()=>or,emitStep:()=>dn,fetchPackage:()=>On,fetchPackageSchema:()=>_n,filterValues:()=>et,flattenIncludeSections:()=>Ie,formatOut:()=>yr,getBrowser:()=>hn,getBrowserVersion:()=>vn,getByPath:()=>$e,getDeviceType:()=>wn,getEvent:()=>De,getFlowSettings:()=>ie,getGrantedConsent:()=>xe,getHeaders:()=>yt,getId:()=>Te,getMappingEvent:()=>st,getMappingValue:()=>it,getMarketingParameters:()=>Ke,getNextSteps:()=>Kn,getOS:()=>yn,getOSVersion:()=>bn,getPlatform:()=>ae,getSpanId:()=>Fe,getTraceId:()=>Ue,getTraceUntil:()=>fn,isArguments:()=>le,isArray:()=>fe,isBoolean:()=>pe,isCommand:()=>de,isDefined:()=>me,isElementOrDocument:()=>ge,isEnvObserve:()=>Nn,isFunction:()=>he,isNumber:()=>ve,isObject:()=>ye,isPathStepEntry:()=>vr,isPropertyType:()=>Qe,isRouteArray:()=>Un,isRouteConfigEntry:()=>Dn,isSameType:()=>be,isSampled:()=>Et,isStoreValue:()=>nr,isString:()=>we,mcpError:()=>Rn,mcpResult:()=>Pn,mergeContractSchemas:()=>U,mergeMappingRule:()=>lt,mockEnv:()=>ft,packageNameToVariable:()=>se,parseCallPath:()=>Cn,parseGrant:()=>Mt,parseTraceparent:()=>Le,parseUserAgent:()=>gn,processEventMapping:()=>ct,readCacheEnvelope:()=>Jn,requestToData:()=>gt,requestToParameter:()=>ht,resolveContracts:()=>D,resolveSetup:()=>bt,resolveTelemetryOptions:()=>At,scanFlowRefs:()=>Y,serializeStoreValue:()=>rr,setByPath:()=>Se,setTraceUntil:()=>pn,stepId:()=>u,storeCache:()=>cr,throttle:()=>Ze,throwError:()=>F,transformData:()=>vt,traverseEnv:()=>pt,trim:()=>wt,tryCatch:()=>nt,tryCatchAsync:()=>rt,useHooks:()=>kt,validateStepEntry:()=>hr,verifyActivation:()=>Pt,walkPath:()=>re,wrapCacheEnvelope:()=>Hn,wrapCondition:()=>$n,wrapFn:()=>Sn,wrapValidate:()=>En}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of r(s))o.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={},c={};function u(e,t){if("collector"===e)return"collector";if(!t)throw new Error(`stepId(${e}) requires an id`);return`${e}.${t}`}s(c,{stepId:()=>u});var l={},f={};function p(e,t){const n=e.destinations[t];if(!n)throw new Error(`Destination not found: ${t}`);return n}s(f,{getDestination:()=>p});var d={},m={},g={};s(g,{Level:()=>h});var h=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(h||{}),v={},y={},b={};function w(e,t){const n=e.transformers[t];if(!n)throw new Error(`Transformer not found: ${t}`);return n}s(b,{getTransformer:()=>w});var k={},$={};function S(e,t){const n=e.sources[t];if(!n)throw new Error(`Source not found: ${t}`);return n}s($,{getSource:()=>S});var E={};function A(e,t){const n=e.stores[t];if(!n)throw new Error(`Store not found: ${t}`);return n}async function j(e,t){return await e.get(t)}s(E,{getStore:()=>A,getStoreValue:()=>j});var I={},O={},x={},_={},M={},N={},T={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function C(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 F(e){throw new Error(String(e))}var z=new Set(["description","examples","title","$comment"]);function D(e,t){const n=!1!==t?.stripAnnotations,r={},o=new Set;function s(t){if(r[t])return r[t];o.has(t)&&F(`Circular extend chain detected: ${[...o,t].join(" → ")}`);const i=e[t];i||F(`Contract "${t}" not found`),o.add(t);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=U(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]||{},s=t.events?.[n]||{},i=new Set([...Object.keys(o),...Object.keys(s)]);r[n]={};for(const e of i){const t=o[e],i=s[e];r[n][e]=t&&i?U(t,i):{...t||i}}}n.events=r}return n}(s(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 s=e["*"]?.["*"];s&&(o=U(o,s));const i=e["*"]?.[r];i&&"*"!==r&&(o=U(o,i));const a=e[n]?.["*"];a&&"*"!==r&&(o=U(o,a));const c=e[n]?.[r];c&&(o=U(o,c)),t[n][r]=o}}e["*"]&&(t["*"]={...e["*"]});return t}(a.events)),a.events&&n){const e={};for(const[t,n]of Object.entries(a.events)){e[t]={};for(const[r,o]of Object.entries(n))e[t][r]=V(o)}a.events=e}return o.delete(t),r[t]=a,a}for(const t of Object.keys(e))s(t);return r}function U(e,t){const n={...e};for(const r of Object.keys(t)){const o=e[r],s=t[r];"required"===r&&Array.isArray(o)&&Array.isArray(s)?n[r]=[...new Set([...o,...s])]:L(o)&&L(s)?n[r]=U(o,s):n[r]=s}return n}function V(e){const t={};for(const[n,r]of Object.entries(e))z.has(n)||(null===r||"object"!=typeof r||Array.isArray(r)?t[n]=r:t[n]=V(r));return t}function L(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}var B=/^\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/,K=/\$var\.([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,q=/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,W=/^\$contract\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.(.+))?$/,Z=/^\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)(?:\.([a-zA-Z0-9_.]+))?$/,H=/^\$store\.([a-zA-Z_][a-zA-Z0-9_]*)$/,J=/^\$secret\.([A-Z0-9_]+)$/,G="$code:",X=/\$flow\.([a-zA-Z_][a-zA-Z0-9_]*)/g;function Y(e,t){const n=t??new Set;if("string"==typeof e){for(const t of e.matchAll(X))n.add(t[1]);return n}if(e&&"object"==typeof e)for(const t of Object.values(e))Y(t,n);return n}function Q(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var ee="__WALKEROS_ENV:",te="__WALKEROS_SECRET:";function ne(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 re(e,t,n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const s=r[e];if(null==o||"object"!=typeof o){const o=r.slice(0,e).join(".");F(`Path "${t}" not found in "${n}": "${s}" does not exist${o?` in "${o}"`:""}`)}const i=o;if(!(s in i)){const o=r.slice(0,e).join(".");F(`Path "${t}" not found in "${n}": "${s}" does not exist${o?` in "${o}"`:""}`)}o=i[s]}return o}function oe(e,t,n,r,o,s){if("string"==typeof e){const i=e.match(B);if(i){const e=i[1].split("."),a=e[0],c=e.slice(1).join(".");void 0===t[a]&&F(`Variable "${a}" not found`);const u=s??new Set;if(u.has(a)){F(`Cyclic $var reference: ${[...u,a].join(" -> ")}`)}let l;u.add(a);try{l=oe(t[a],t,n,r,o,u)}finally{u.delete(a)}return c&&(l=re(l,c,`$var.${a}`)),l}const a=e.match(W);if(a&&r){const e=a[1],t=a[2];e in r||F(`Contract "${e}" not found`);let n=r[e];return t&&(n=re(n,t,`$contract.${e}`)),n}const c=e.match(Z);if(c){const t=c[1],r=c[2],s=!1===n?.strictFlowRefs;o||F(`$flow.${t}${r?`.${r}`:""} cannot be resolved without a flow resolver`);const i=o(t);if(!i){if(s)return n?.onWarning?.(ne(t,r,"unknown-flow")),e;F(`Flow "${t}" not found in $flow.${t}`)}let a=i;if(r)if(s){try{a=re(a,r,`$flow.${t}`)}catch{return n?.onWarning?.(ne(t,r,"missing-key")),e}if(null==a||""===a)return n?.onWarning?.(ne(t,r,"missing-key")),e}else a=re(a,r,`$flow.${t}`);return a}const u=e.match(J);if(u){const e=u[1];if(n?.deferred)return`${te}${e}`;F(`Secret "$secret.${e}" cannot be used in a web flow — secrets are never sent to the browser. Use a server flow.`)}let l=e.replace(K,(e,i)=>{const a=i.split("."),c=a[0],u=a.slice(1).join(".");void 0===t[c]&&F(`Variable "${c}" not found`);const l=s??new Set;if(l.has(c)){F(`Cyclic $var reference: ${[...l,c].join(" -> ")}`)}let f;l.add(c);try{f=oe(t[c],t,n,r,o,l)}finally{l.delete(c)}if(u&&(f=re(f,u,`$var.${c}`)),null===f||"string"!=typeof f&&"number"!=typeof f&&"boolean"!=typeof f){F(`Variable "${i}" 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.${i}"`)}return String(f)});return l=l.replace(q,(e,t,r)=>n?.deferred?void 0!==r?`${ee}${t}:${r}`:`${ee}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==r?r:void F(`Environment variable "${t}" not found and no default provided`)),l}if(Array.isArray(e))return e.map(e=>oe(e,t,n,r,o,s));if(null!==e&&"object"==typeof e){const i={};for(const[a,c]of Object.entries(e))i[a]=oe(c,t,n,r,o,s);return i}return e}function se(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 ie(e,t,n){const r=new Map,o=new Set,s=[],i=t=>{if(r.has(t))return r.get(t);const a=e.flows[t];if(a){if(o.has(t)){F(`Cyclic $flow reference: ${[...s,t].join(" -> ")}`)}o.add(t),s.push(t);try{const o=Q(e.variables,a.variables),s=oe(a.config??{},o,n,void 0,i);return r.set(t,s),s}finally{o.delete(t),s.pop()}}},a=Object.keys(e.flows);t||(1===a.length?t=a[0]:F(`Multiple flows found (${a.join(", ")}). Please specify a flow.`));const c=e.flows[t];c||F(`Flow "${t}" not found. Available: ${a.join(", ")}`),o.add(t),s.push(t);try{return function(e,t,n,r){const o=JSON.parse(JSON.stringify(t));let s;if(e.contract){const o=Q(e.variables,t.variables);s=D(oe(e.contract,o,n,void 0,r))}if(o.config){const i=Q(e.variables,t.variables);o.config=oe(o.config,i,n,s,r)}if(o.sources)for(const[i,a]of Object.entries(o.sources)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),l=oe(a.env,c,n,s,r);o.sources[i]={package:a.package,import:a.import,config:u,env:l,primary:a.primary,variables:a.variables,before:a.before,next:a.next,cache:a.cache,code:a.code}}if(o.destinations)for(const[i,a]of Object.entries(o.destinations)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),l=oe(a.env,c,n,s,r);o.destinations[i]={package:a.package,import:a.import,config:u,env:l,variables:a.variables,before:a.before,next:a.next,cache:a.cache,code:a.code}}if(o.stores)for(const[i,a]of Object.entries(o.stores)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),l=oe(a.env,c,n,s,r);o.stores[i]={package:a.package,import:a.import,config:u,env:l,cache:a.cache,variables:a.variables,code:a.code}}if(o.transformers)for(const[i,a]of Object.entries(o.transformers)){const c=Q(e.variables,t.variables,a.variables),u=oe(a.config,c,n,s,r),l=oe(a.env,c,n,s,r);o.transformers[i]={package:a.package,import:a.import,config:u,env:l,variables:a.variables,before:a.before,next:a.next,cache:a.cache,code:a.code}}if(o.collector){const i=Q(e.variables,t.variables),a=oe(o.collector,i,n,s,r);o.collector=a}return o}(e,c,n,i)}finally{o.delete(t),s.pop()}}function ae(e){const t=e.config?.platform;if("web"===t||"server"===t)return t;F('Flow must have config.platform set to "web" or "server"')}var ce={merge:!0,shallow:!0,extend:!0};function ue(e,t={},n={}){n={...ce,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const s=e[r];return n.merge&&Array.isArray(s)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function le(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function fe(e){return Array.isArray(e)}function pe(e){return"boolean"==typeof e}function de(e){return"walker"===e}function me(e){return void 0!==e}function ge(e){return!(!e||"object"!=typeof e)&&("body"in e||"tagName"in e)}function he(e){return"function"==typeof e}function ve(e){return"number"==typeof e&&!Number.isNaN(e)}function ye(e){return"object"==typeof e&&null!==e&&!fe(e)&&"[object Object]"===Object.prototype.toString.call(e)}function be(e,t){return typeof e==typeof t}function we(e){return"string"==typeof e}function ke(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]=ke(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(ke(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 $e(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&fe(o)){const t=r.slice(e+1).join("."),s=[];for(const e of o){const r=$e(e,t,n);s.push(r)}return s}if(o=ye(o)||fe(o)?o[t]:void 0,void 0===o)break}return me(o)?o:n}function Se(e,t,n){if(!ye(e))return e;const r=ke(e),o=t.split(".");let s=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?s[t]=n:(t in s&&"object"==typeof s[t]&&null!==s[t]||(s[t]={}),s=s[t])}return r}function Ee(e,t){if(!ye(e)&&!fe(e))return e;const n=ke(e),r=t.split(".");let o=n;for(let e=0;e<r.length;e++){const t=r[e],s=e===r.length-1;if(fe(o)){const e=Number(t);if(!Number.isInteger(e)||e<0||e>=o.length)return n;if(s)o.splice(e,1);else{const t=o[e];if(!ye(t)&&!fe(t))return n;o=t}}else if(s)delete o[t];else{const e=o[t];if(!ye(e)&&!fe(e))return n;o=e}}return n}var Ae={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 je(e,t,n){if(ye(n))for(const[r,o]of Object.entries(n))void 0!==o&&je(e,`${t}_${r}`,o);else e[t]=n}function Ie(e,t){const n={},r=t.includes("all")?Object.keys(Ae):t;for(const t of r){const r=Ae[t];if(!r)continue;const o=r(e);if(ye(o))for(const[e,r]of Object.entries(o)){if(void 0===r)continue;je(n,`${t}_${e}`,"context"===t&&Array.isArray(r)?r[0]:r)}}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 xe(e,t={},n={}){const r={...t,...n},o={};let s=!e||0===Object.keys(e).length;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(s=!0))}),!!s&&o}function _e(e,t){const n={...e};return n.config=ue(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=ue(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=ue(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Me(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])?Me(e[n],r):e[n]=r)}return e}var Ne="0123456789abcdefghijklmnopqrstuvwxyz";function Te(e=6,t=Ne){const n=t.length;if(e<=0||0===n)return"";let r="";if(n<=256){const o=256-256%n;for(;r.length<e;){const s=e-r.length,i=new Uint8Array(Math.ceil(1.3*s)+4);if(!Ce(i))break;for(let s=0;s<i.length&&r.length<e;s++)i[s]<o&&(r+=t[i[s]%n])}}for(;r.length<e;)r+=t[Math.random()*n|0];return r}function Ce(e){try{const t=globalThis.crypto;if(t&&"function"==typeof t.getRandomValues)return t.getRandomValues(e),!0}catch{}return!1}var Pe="0123456789abcdef";function Re(e){let t=Te(e,Pe);for(;/^0+$/.test(t);)t=Te(e,Pe);return t}function Fe(){return Re(16)}function ze(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=ue({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||Fe(),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,source:{type:"collector",schema:"4"}},e,{merge:!1});if(n.source={count:1,trace:"0a1b2c3d4e5f60718293a4b5c6d7e8f9",...n.source},e.name){const[t,r]=e.name.split(" ")??[];t&&r&&(n.entity=t,n.action=r)}return n}function De(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 ze({...{"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 Ue(){return Re(32)}var Ve=/^(?<version>[0-9a-f]{2})-(?<trace>[0-9a-f]{32})-(?<span>[0-9a-f]{16})-[0-9a-f]{2}$/;function Le(e){if("string"!=typeof e)return;const t=Ve.exec(e)?.groups;if(!t)return;const{version:n,trace:r,span:o}=t;return void 0===n||void 0===r||void 0===o||"ff"===n||/^0+$/.test(r)||/^0+$/.test(o)?void 0:{trace:r,parentSpan:o}}var Be=[{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 Ke(e,t={},n=[]){const r={};Object.entries(ue({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(Be.map(e=>e.param));return[...Be.map(e=>t.has(e.param)?{param:e.param,platform:t.get(e.param)}:e),...e.filter(e=>!n.has(e.param))]}(n):Be,s=new Map;e.searchParams.forEach((e,t)=>{e&&s.set(t.toLowerCase(),e)});for(const e of o){const t=s.get(e.param);t&&(r[e.param]=t,r.clickId||(r.clickId=e.param,r.platform=e.platform))}return r}function qe(e,t){return"number"==typeof e?{wait:e}:e?{wait:e.wait??t,size:e.size,age:e.age}:{wait:t}}function We(e,t=1e3,n=!1){const{wait:r,size:o,age:s}=qe(t,1e3);let i,a,c=null,u=null,l=!1,f=[],p=0;const d=()=>{c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null),p=0,a=void 0},m=()=>{const t=a,n=f;if(d(),f=[],t)return i=e(...t),n.forEach(e=>e(i)),i;n.forEach(e=>e(void 0))},g=(...t)=>new Promise(d=>{const g=n&&!l;if(a=t,p+=1,f.push(d),c&&clearTimeout(c),c=setTimeout(()=>{c=null,n&&!l||m()},r),void 0===s||u||(u=setTimeout(()=>{u=null,m()},s)),void 0!==o&&p>=o)m();else if(g){l=!0,i=e(...t);const n=f;f=[],n.forEach(e=>e(i))}});return g.flush=()=>a||0!==f.length?new Promise(e=>{f.push(e),m()}):Promise.resolve(i),g.cancel=()=>{const e=f;f=[],d(),i=void 0,e.forEach(e=>e(void 0))},g.size=()=>p,g}function Ze(e,t=1e3){const{wait:n}=qe(t,1e3);let r=null;return function(...t){if(null===r)return r=setTimeout(()=>{r=null},n),e(...t)}}function He(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function Je(e,t){let n,r={};return e instanceof Error?(n=e.message,r.error=He(e)):n=e,void 0!==t&&(t instanceof Error?r.error=He(t):"object"==typeof t&&null!==t?(r={...r,...t},"error"in r&&r.error instanceof Error&&(r.error=He(r.error))):r.value=t),{message:n,context:r}}var Ge=(e,t,n,r)=>{const o=`${h[e]}${r.length>0?` [${r.join(":")}]`:""}`,s=Object.keys(n).length>0,i=0===e?console.error:1===e?console.warn:console.log;s?i(o,t,n):i(o,t)};function Xe(e={}){return Ye({level:void 0!==e.level?function(e){return"string"==typeof e?h[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function Ye(e){const{level:t,handler:n,jsonHandler:r,scope:o}=e,s=(e,r,s)=>{if(e<=t){const t=Je(r,s);n?n(e,t.message,t.context,o,Ge):Ge(e,t.message,t.context,o)}};return{error:(e,t)=>s(0,e,t),warn:(e,t)=>s(1,e,t),info:(e,t)=>s(2,e,t),debug:(e,t)=>s(3,e,t),throw:(e,t)=>{const r=Je(e,t);throw n?n(0,r.message,r.context,o,Ge):Ge(0,r.message,r.context,o),new Error(r.message)},json:e=>{r?r(e):console.log(JSON.stringify(e,null,2))},scope:e=>Ye({level:t,handler:n,jsonHandler:r,scope:[...o,e]})}}function Qe(e){return pe(e)||we(e)||ve(e)||!me(e)||fe(e)&&e.every(Qe)||ye(e)&&Object.values(e).every(Qe)}function et(e){return pe(e)||we(e)||ve(e)?e:le(e)?et(Array.from(e)):fe(e)?e.map(e=>et(e)).filter(e=>void 0!==e):ye(e)?Object.entries(e).reduce((e,[t,n])=>{const r=et(n);return void 0!==r&&(e[t]=r),e},{}):void 0}function tt(e){return Qe(e)?e:void 0}function nt(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function rt(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 ot=class e extends Error{constructor(t,n){super(t,n),this.name="FatalError",Object.setPrototypeOf(this,e.prototype)}};async function st(e,t,n){const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let s,i="",a=r,c=o;const u=t=>{if(!t)return;return(fe(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[a]||(a="*");const l=t[a];return l&&(l[c]||(c="*"),s=u(l[c])),s||(a="*",c="*",s=u(t[a]?.[c])),s&&(i=`${a} ${c}`),{eventMapping:s,mappingKey:i}}async function it(e,t={},n={}){if(!me(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 s={event:o,mapping:t,collector:n.collector,logger:n.collector.logger,consent:r},i=fe(t)?t:[t];for(const t of i){const r=await rt(at,e=>{if(e instanceof ot)throw e;n.collector&&n.collector.status.failed++,s.logger.error("mapping processing failed",{event:o,error:e})})(e,t,{...s,mapping:t});if(me(r))return r}}async function at(e,t,n){return(fe(t)?t:[t]).reduce(async(t,r)=>{const o=await t;if(o)return o;const s=we(r)?{key:r}:r;if(!Object.keys(s).length)return;const{condition:i,consent:a,fn:c,key:u,loop:l,map:f,set:p,validate:d,value:m}=s,g={...n,mapping:r};if(i&&!await rt(i,e=>{if(e instanceof ot)throw e;return g.logger.error("mapping condition failed",{event:g.event,error:e}),!1})(e,g))return;if(a&&!xe(a,g.consent))return m;let h=me(m)?m:e;if(c&&(h=await rt(c,e=>{if(e instanceof ot)throw e;g.logger.error("mapping fn failed",{event:g.event,error:e})})(e,g)),u&&(h=$e(e,u,m)),l){const[t,n]=l,r="this"===t?[e]:await it(e,t,g);fe(r)&&(h=(await Promise.all(r.map(e=>it(e,n,g)))).filter(me))}else f?h=await Object.entries(f).reduce(async(t,[n,r])=>{const o=await t,s=await it(e,r,g);return me(s)&&(o[n]=s),o},Promise.resolve({})):p&&(h=await Promise.all(p.map(t=>at(e,t,g))));d&&!await rt(d,e=>{if(e instanceof ot)throw e;return g.logger.error("mapping validate failed",{event:g.event,error:e}),!1})(h,g)&&(h=void 0);const v=tt(h);return me(v)?v:tt(m)},Promise.resolve(void 0))}async function ct(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,r])=>{const o=await it(e,r,{collector:n,event:e});e=Se(e,t,o)}));const{eventMapping:r,mappingKey:o}=await st(e,t.mapping,n);r?.policy&&await Promise.all(Object.entries(r.policy).map(async([t,r])=>{const o=await it(e,r,{collector:n,event:e});e=Se(e,t,o)}));let s=t.data&&await it(e,t.data,{collector:n,event:e});const i=Boolean(r?.silent);if(r){if(r.ignore)return{event:e,data:s,mapping:r,mappingKey:o,ignore:!0,silent:i};if(r.name&&(e.name=r.name),r.data){const t=r.data&&await it(e,r.data,{collector:n,event:e});s=ye(s)&&ye(t)?ue(s,t):t}}const a=r?.include??t.include;if(a&&a.length>0){const t=Ie(e,a);Object.keys(t).length>0&&(s=ye(s)?ue(t,s):s??t)}if(r?.remove&&ye(s))for(const e of r.remove)s=Ee(s,e);return{event:e,data:s,mapping:r,mappingKey:o,ignore:!1,silent:i}}function ut(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)?ut(o,r):e[n]=r}return e}function lt(e,t){if(void 0===t.extend&&void 0===t.remove)return ke(t);const n={...ke(e)};if(t.extend){ut(n,{...t.extend})}return delete n.extend,t.remove?n.remove=[...t.remove]:delete n.remove,n}function ft(e,t){const n=(e,r=[])=>new Proxy(e,{get(e,o){const s=e[o],i=[...r,o];return"function"==typeof s?s.prototype&&s.prototype.constructor===s?s:(...e)=>{const r=t(i,e,s);if(r&&"object"==typeof r)return n(r,i);const o=s(...e);return o&&"object"==typeof o?n(o,i):r}:s&&"object"==typeof s?n(s,i):s}});return n(e)}function pt(e,t){const n=(e,r=[])=>{if(!e||"object"!=typeof e)return e;const o=Array.isArray(e)?[]:{};for(const[s,i]of Object.entries(e)){const e=[...r,s];Array.isArray(o)?o[Number(s)]=t(i,e):o[s]=t(i,e),i&&"object"==typeof i&&"function"!=typeof i&&(Array.isArray(o)?o[Number(s)]=n(i,e):o[s]=n(i,e))}return o};return n(e)}function dt(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=dt();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 mt(e={}){return{collector:{},config:{},env:{},logger:dt(),id:"test",ingest:C("test"),...e}}function gt(e){const t=String(e),n=t.split("?")[1]||t;return nt(()=>{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 s=n===r.length-1;if(fe(o)){const i=parseInt(t,10);s?o[i]=Oe(e):(o[i]=o[i]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[i])}else ye(o)&&(s?o[t]=Oe(e):(o[t]=o[t]||(isNaN(parseInt(r[n+1],10))?{}:[]),o=o[t]))})}),t})()}function ht(e){if(!e)return"";const t=[],n=encodeURIComponent;function r(e,o){null!=o&&(fe(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 vt(e){return void 0===e||be(e,"")?e:JSON.stringify(e)}function yt(e={}){return ue({"Content-Type":"application/json; charset=utf-8"},e)}function bt(e,t){return!1===e||void 0===e?null:!0===e?t:{...t,...e}}function wt(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function kt(e,t,n,r){const o=e;return function(...e){let s;const i="pre"+t,a="post"+t,c=n[i],u=n[a],l=(e,t)=>{r?r.warn(e,{error:t}):console.warn(e,t)};if(c)try{s=c({fn:o},...e)}catch(t){l(`Hook ${String(i)} failed, falling back to original function`,t),s=o(...e)}else s=o(...e);if(u)try{s=u({fn:o,result:s},...e)}catch(e){l(`Hook ${String(a)} failed, keeping original result`,e)}return s}}function $t(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 St(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 s=r.sample,i="number"==typeof s&&Number.isFinite(s)?s:1;if(t.eventId&&!$t(t.eventId,i))return;const a=r.includeIn??"trace"===o,c=r.includeOut??"trace"===o,u=r.includeMappingKey??"trace"===o,l={...t};a||delete l.inEvent,c||(delete l.outEvent,delete l.calls),u||delete l.mappingKey,"trace"!==o&&l.error?.message&&l.error.message.length>256&&(l.error={...l.error,message:l.error.message.slice(0,256)+"…"});try{e(l)}catch{}}}function Et(e,t){return $t(e,t)}function At(e){const t=e.now??(()=>Date.now()),{traceUntil:n}=e;if("string"==typeof n&&n.length>0){const r=Date.parse(n);if(!Number.isNaN(r)&&r>t())return{flowId:e.flowId,level:"trace",includeIn:!0,includeOut:!0,sample:1}}const r=e.observe?.level??"standard";if("off"===r)return null;const o=e.observe?.sample??1;return{flowId:e.flowId,level:r,sample:o}}var jt=/^[A-Za-z0-9_-]+$/;function It(e){if(!jt.test(e))return null;const t=e.length%4==0?"":"=".repeat(4-e.length%4),n=e.replace(/-/g,"+").replace(/_/g,"/")+t,r=globalThis.atob;if(!r)return null;try{const e=r(n),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}catch{return null}}function Ot(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function xt(e){const t=It(e);if(!t)return null;const n=function(e){let t="";for(let n=0;n<e.length;n++){const r=e[n];if(void 0===r||r>127)return null;t+=String.fromCharCode(r)}return t}(t);if(null===n)return null;try{return JSON.parse(n)}catch{return null}}function _t(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Mt(e){if(!e)return null;const t=e.split("."),[n,r,o]=t;if(3!==t.length||!n||!r||!o)return null;const s=xt(n);if(!_t(s))return null;const i=s.kid,a=s.alg;if("string"!=typeof i||"ES256"!==a)return null;const c=xt(r);if(!function(e){if(!_t(e))return!1;const t=e;return"string"==typeof t.iss&&Array.isArray(t.aud)&&t.aud.every(e=>"string"==typeof e)&&"number"==typeof t.iat&&"number"==typeof t.sxp&&"string"==typeof t.art&&jt.test(t.art)&&"string"==typeof t.sri&&"string"==typeof t.pb&&"activate"===t.cap&&"string"==typeof t.jti&&"string"==typeof t.pid&&(void 0===t.ses||"string"==typeof t.ses)&&(void 0===t.sb||"string"==typeof t.sb)}(c))return null;const u=It(o);return u&&64===u.byteLength?{grant:c,kid:i,signed:Ot(`${n}.${r}`),signature:u}:null}var Nt=9e5,Tt=6e4,Ct=39e5;async function Pt(e,t){const n=Mt(e);if(!n)return{ok:!1,reason:"malformed"};const{grant:r,kid:o,signed:s,signature:i}=n;if(r.iss!==t.iss)return{ok:!1,reason:"foreign-issuer"};if("activate"!==r.cap)return{ok:!1,reason:"cap-mismatch"};if(1e3*r.iat>t.now+Tt)return{ok:!1,reason:"expired"};if(1e3*r.sxp-1e3*r.iat>Ct)return{ok:!1,reason:"expired"};const a="url"===t.source?Math.min(1e3*r.iat+Nt,1e3*r.sxp):1e3*r.sxp;if(t.now>=a)return{ok:!1,reason:"expired"};if(void 0!==t.origin&&!r.aud.includes(t.origin))return{ok:!1,reason:"aud-mismatch"};if(t.acceptForeign){const e=t.demoAllowlist??[];if(1!==r.aud.length||!r.aud.every(t=>e.includes(t)))return{ok:!1,reason:"aud-mismatch"}}if(!(t.acceptForeign||t.pb&&r.pb===t.pb))return{ok:!1,reason:"pb-mismatch"};const c=void 0!==r.ses||void 0!==r.sb;if(t.expectSession){if(r.ses!==t.expectSession.ses)return{ok:!1,reason:"sb-mismatch"};if(!r.sb||r.sb!==t.expectSession.sb)return{ok:!1,reason:"sb-mismatch"}}else if(c)return{ok:!1,reason:"sb-mismatch"};const u=t.keyring.find(e=>e.kid===o);if(!u)return{ok:!1,reason:"kid-mismatch"};const l=t.crypto??globalThis.crypto,f=l?.subtle;if(!f)return{ok:!1,reason:"no-subtle"};const p=function(e){return It(e)}(u.spki);if(!p)return{ok:!1,reason:"kid-mismatch"};try{const e=await f.importKey("spki",p,{name:"ECDSA",namedCurve:"P-256"},!1,["verify"]);if(!await f.verify({name:"ECDSA",hash:"SHA-256"},e,i,s))return{ok:!1,reason:"bad-signature"}}catch{return{ok:!1,reason:"bad-signature"}}return{ok:!0,grant:r}}var Rt="elbPreview",Ft="elbPreviewSession",zt="[walkerOS:preview]",Dt=5e3,Ut=globalThis;function Vt(e){let t=null;return{get(){try{return Ut.window?.localStorage.getItem(e)??t}catch{return t}},set(n){try{Ut.window?.localStorage.setItem(e,n)}catch{t=n}},clear(){t=null;try{Ut.window?.localStorage.removeItem(e)}catch{}}}}function Lt(){const e=Ut.window,t=Ut.URLSearchParams;if(e&&t)try{const n=e.location.href,r=n.indexOf("#"),o=r>=0?n.slice(r):"",s=r>=0?n.slice(0,r):n,i=s.indexOf("?"),a=i>=0?s.slice(0,i):s,c=new t(i>=0?s.slice(i+1):"");c.delete("elbPreview"),c.delete("elbPreviewSession");const u=c.toString();e.history.replaceState({},"",`${a}${u?`?${u}`:""}${o}`)}catch{}}async function Bt(e){const t=Ut.window;if(!t||!Ut.document)return!1;const n=Vt(Rt),r=Vt(Ft),o=e.now??(()=>Date.now()),s=e=>Ut.console?.warn(`${zt} ${e}`);let i=null,a=null;const c=Ut.URLSearchParams;if(c)try{const e=new c(t.location.search.replace(/^\?/,"")),n=e.getAll("elbPreview");i=n.length>0?n[n.length-1]??null:null;const r=e.getAll("elbPreviewSession");a=r.length>0?r[r.length-1]??null:null}catch{i=null,a=null}if("off"===i)return n.clear(),r.clear(),Lt(),!1;const u=n.get();if(!i&&!u)return!1;const l=(n,r)=>Pt(n,{keyring:e.keyring,iss:e.iss,origin:t.location.origin,pb:e.pb,acceptForeign:e.acceptForeign,demoAllowlist:e.demoAllowlist,source:r,now:o(),crypto:e.crypto});let f=null;if(i){const e=await l(i,"url");e.ok?(f=e.grant,n.set(i),a?r.set(a):r.clear()):s(e.reason),Lt()}if(!f&&u){const e=await l(u,"storage");e.ok?f=e.grant:(s(e.reason),"no-subtle"!==e.reason&&(n.clear(),r.clear()))}if(!f)return!1;const p=`https://${e.previewOrigin}/preview/${f.art}.js`,d=await function(e,t){return new Promise(n=>{const r=Ut.document;if(!r)return void n(!1);const o=r.createElement("script");let s,i=!1;const a=e=>{i||(i=!0,void 0!==s&&Ut.clearTimeout?.(s),!e&&o.parentNode&&o.parentNode.removeChild(o),n(e))};s=Ut.setTimeout?.(()=>a(!1),Dt),o.onload=()=>a(!0),o.onerror=()=>a(!1),o.setAttribute("integrity",t),o.setAttribute("crossorigin","anonymous"),o.src=e,r.head.appendChild(o)})}(p,f.sri);return d?(Ut.console?.info(`${zt} active ${f.art} ends ${new Date(1e3*f.sxp).toISOString()}`),!0):(s("swap-failed"),n.clear(),r.clear(),!1)}var Kt=15e3,qt={error:5,skip:4,out:3,in:2,init:1,flush:0},Wt="\0none",Zt="\0";function Ht(e,t){return`${e??Wt}${Zt}${t}`}function Jt(e){const t=Date.parse(e);return Number.isNaN(t)?0:t}function Gt(e,t){const n=e.platform??"",r=t.platform??"";if(n!==r)return n<r?-1:1;if(e.stepId!==t.stepId)return e.stepId<t.stepId?-1:1;if(e.phase!==t.phase)return qt[e.phase]-qt[t.phase];if(e.eventId!==t.eventId)return e.eventId<t.eventId?-1:1;const o=e.branchId??"",s=t.branchId??"";if(o!==s)return o<s?-1:1;if(e.elapsedMs!==t.elapsedMs)return e.elapsedMs-t.elapsedMs;const i=e.seq??-1,a=t.seq??-1;return i!==a?i-a:e.timestamp!==t.timestamp?e.timestamp<t.timestamp?-1:1:0}function Xt(e){switch(e){case"error":return"error";case"skip":return"skipped";case"out":return"done";case"in":case"init":case"flush":return"pending"}}function Yt(e){return"out"===e.terminalPhase||"error"===e.terminalPhase||"skip"===e.terminalPhase||!0===e.batched}function Qt(e){return"done"===e.status&&("transformer"!==e.stepType||null!==e.out&&void 0!==e.out)}function en(e,t,n,r){const o=n.get(Ht(e.node.platform,t));if(void 0!==o)return o;const s=r.get(t);return void 0!==s&&1===s.length?s[0]:void 0}function tn(e){const t=new Map,n=new Map;e.nodes.forEach((e,r)=>{const o={node:e,rank:r,key:Ht(e.platform,e.stepId)};t.has(o.key)||t.set(o.key,o);const s=n.get(e.stepId);s?s.push(o):n.set(e.stepId,[o])});const r=new Map,o=new Set;for(const e of t.values()){const s=[];for(const r of e.node.downstream){const i=en(e,r,t,n);void 0!==i&&(s.push(i),o.add(i.key))}r.set(e.key,s)}const s=[];for(const e of t.values())o.has(e.key)||s.push(e);return s.sort((e,t)=>e.rank-t.rank),{byKey:t,byStepId:n,edges:r,roots:s}}function nn(e,t,n){const r=e.byKey.get(Ht(n,t));if(void 0!==r)return r;const o=e.byKey.get(Ht(void 0,t));if(void 0!==o)return o;const s=e.byStepId.get(t);return void 0!==s&&1===s.length?s[0]:void 0}function rn(e,t,n,r,o,s){return s-n<o?"pending":void 0!==r?function(e,t,n){const r=t=>e.find(e=>e.stepId===t.node.stepId&&(void 0===t.node.platform||e.platform===t.node.platform)),o=n.roots.filter(e=>void 0===e.node.platform||t.includes(e.node.platform));if(0===o.length)return e.every(Yt)?"complete":"partial";const s=new Map,i=o;for(;i.length>0;){const e=i.shift();if(void 0===e)break;if(s.has(e.key))continue;s.set(e.key,e);const t=r(e);if(void 0!==t&&Qt(t)){const t=n.edges.get(e.key);if(void 0!==t)for(const e of t)s.has(e.key)||i.push(e)}}for(const e of s.values()){const t=r(e);if(void 0===t||!Yt(t))return"partial"}return"complete"}(e,t,r):e.every(Yt)?"complete":"partial"}function on(e){let t=e[0];for(const n of e)n.elapsedMs<t.elapsedMs&&(t=n);const n=[],r=new Map;let o=!1;for(const t of e)if("flush"!==t.phase){if(void 0!==t.branchId){const e=r.get(t.branchId);e?e.push(t):r.set(t.branchId,[t]);continue}n.push(t)}else o=!0;const s=[...r.values()].flat(),i=n.length>0?n:s.length>0?s:e;let a,c,u,l,f,p,d,m,g,h=i[0],v=i[0];for(const e of i)e.elapsedMs<h.elapsedMs&&(h=e),qt[e.phase]>qt[v.phase]&&(v=e),"out"===e.phase&&(a=e),void 0!==e.inEvent&&void 0===c&&(c=e.inEvent),void 0!==e.outEvent&&(u=e.outEvent),void 0!==e.mappingKey&&(l=e.mappingKey),void 0!==e.contractRule&&(f=e.contractRule),void 0!==e.consent&&(p=e.consent),void 0!==e.consentApplied&&(d=e.consentApplied),void 0!==e.meta&&(m=e.meta),void 0!==e.parentEventId&&void 0===g&&(g=e.parentEventId);const y=v.phase,b=a?.durationMs,w="error"===y?v.error:void 0,k="skip"===y?v.skipReason:void 0,$=a?.calls,S="out"===v.phase&&void 0!==v.batch||void 0,E=!(!o||!0!==S)||void 0,A=r.size>0?[...r.entries()].sort(([e],[t])=>e<t?-1:e>t?1:0).map(([e,t])=>function(e,t){let n,r,o=t[0];for(const e of t)qt[e.phase]>qt[o.phase]&&(o=e),"out"===e.phase&&(n=e),void 0!==e.outEvent&&(r=e.outEvent);const s=o.phase,i=n?.durationMs,a="skip"===s?o.skipReason:void 0,c="error"===s?o.error:void 0,u=n?.calls;return{branchId:e,status:Xt(s),terminalPhase:s,...void 0!==i?{durationMs:i}:{},...void 0!==a?{skipReason:a}:{},...void 0!==c?{error:c}:{},...void 0!==r?{out:r}:{},...void 0!==u?{calls:u}:{}}}(e,t)):void 0;return{stepId:h.stepId,stepType:h.stepType,eventId:h.eventId,status:Xt(y),terminalPhase:y,startedAtMs:t.elapsedMs,timestamp:t.timestamp,...void 0!==h.platform?{platform:h.platform}:{},...void 0!==g?{parentEventId:g}:{},...void 0!==b?{durationMs:b}:{},...void 0!==c?{in:c}:{},...void 0!==u?{out:u}:{},...void 0!==w?{error:w}:{},...void 0!==k?{skipReason:k}:{},...void 0!==l?{mappingKey:l}:{},...void 0!==f?{contractRule:f}:{},...void 0!==p?{consent:p}:{},...void 0!==d?{consentApplied:d}:{},...void 0!==$?{calls:$}:{},...void 0!==A?{branches:A}:{},...void 0!==S?{batched:S}:{},...void 0!==E?{flushConfirmed:E}:{},...void 0!==m?{meta:m}:{}}}function sn(e,t){const n=e.map(e=>({hop:e,rank:void 0!==t?nn(t,e.stepId,e.platform)?.rank??Number.MAX_SAFE_INTEGER:0}));return n.sort((e,t)=>e.rank!==t.rank?e.rank-t.rank:e.hop.startedAtMs!==t.hop.startedAtMs?e.hop.startedAtMs-t.hop.startedAtMs:e.hop.stepId<t.hop.stepId?-1:e.hop.stepId>t.hop.stepId?1:0),n.map(e=>e.hop)}function an(e){const t=e.filter(e=>"collector"===e.stepType&&"in"===e.phase),n=t.length>0?t:e;let r=n[0],o=Jt(r.timestamp);for(const e of n){const t=Jt(e.timestamp);t<o&&(o=t,r=e)}const s=function(e){if("object"==typeof e&&null!==e&&"name"in e&&"string"==typeof e.name)return e.name}(r.inEvent);return{eventId:r.eventId,timestamp:r.timestamp,...void 0!==s?{name:s}:{},...void 0!==r.sourceId?{sourceId:r.sourceId}:{},...void 0!==r.platform?{platform:r.platform}:{}}}function cn(e,t,n,r,o){const{topo:s}=o,i=new Map;for(const e of r){const t=Ht(e.platform,e.stepId),n=i.get(t);n?n.push(e):i.set(t,[e])}const a=[...i.values()].map(on),c=new Map;for(const e of a){const t=e.platform??Wt;let n=c.get(t);n||(n={...void 0!==e.platform?{platform:e.platform}:{},hops:[],ownedEventIds:new Set,parentEventIds:new Set,minEpoch:Number.POSITIVE_INFINITY},c.set(t,n)),n.hops.push(e),n.ownedEventIds.add(e.eventId),void 0!==e.parentEventId&&n.parentEventIds.add(e.parentEventId),n.minEpoch=Math.min(n.minEpoch,Jt(e.timestamp))}const u=function(e){const t=new Map,n=e.map((e,t)=>t).sort((t,n)=>{const r=e[t].platform??Wt,o=e[n].platform??Wt;return r<o?-1:r>o?1:0});e.forEach((r,o)=>{if(0!==r.parentEventIds.size)for(const s of n){if(s===o)continue;let n=!1;for(const t of e[s].ownedEventIds)if(r.parentEventIds.has(t)){n=!0;break}if(n){t.set(o,s);break}}});const r=e=>{let n=0,r=e;const o=new Set;for(;!o.has(r);){o.add(r);const e=t.get(r);if(void 0===e)break;r=e,n+=1}return n};return e.map((e,t)=>({seg:e,i:t,depth:r(t)})).sort((e,t)=>{if(e.depth!==t.depth)return e.depth-t.depth;if(e.seg.minEpoch!==t.seg.minEpoch)return e.seg.minEpoch-t.seg.minEpoch;const n=e.seg.platform??Wt,r=t.seg.platform??Wt;return n<r?-1:n>r?1:0}).map(e=>e.seg)}([...c.values()]),l=[],f=[];for(const e of u){void 0===e.platform||f.includes(e.platform)||f.push(e.platform);for(const t of sn(e.hops,s))l.push(t)}let p=Number.POSITIVE_INFINITY,d=Number.NEGATIVE_INFINITY;for(const e of r){const t=Jt(e.timestamp);t<p&&(p=t),t>d&&(d=t)}const m=rn(l,f,d,s,o.settleMs,o.now),g=function(e,t,n,r){for(const o of r)if((void 0===o.platform||e.includes(o.platform))&&t<=o.toMs&&o.fromMs<=n)return!0;return!1}(f,p,d,o.gaps);return{id:e,correlation:t,...void 0!==n?{traceId:n}:{},entry:an(r),hops:l,platforms:f,status:m,lossy:g,firstTimestamp:p,lastTimestamp:d,totalMs:d-p}}function un(e,t){const n={...void 0!==t?.topology?{topo:tn(t.topology)}:{},settleMs:t?.settleMs??Kt,now:t?.now??Date.now(),gaps:[]},r=function(e){const t=new Set,n=[];for(const r of e){const e=void 0!==r.seq?`seq${Zt}${r.platform??""}${Zt}${r.seq}`:`tuple${Zt}${r.platform??""}${Zt}${r.stepId}${Zt}${r.phase}${Zt}${r.eventId}${Zt}${r.branchId??""}${Zt}${r.elapsedMs}`;t.has(e)||(t.add(e),n.push(r))}return n}(e),o=[...r].sort(Gt);n.gaps=function(e){const t=new Map;for(const n of e){if(void 0===n.seq)continue;const e=n.platform??Wt,r=t.get(e);r?r.push(n):t.set(e,[n])}const n=[];for(const e of[...t.keys()].sort()){const r=t.get(e);if(void 0===r)continue;const o=[...r].sort((e,t)=>{const n=Jt(e.timestamp),r=Jt(t.timestamp);return n!==r?n-r:(e.seq??0)-(t.seq??0)});let s,i=0;for(const e of o){const t=e.seq;if(void 0!==t)if(void 0!==s){if(t!==i)if(t!==i+1){if(t>i+1){const r=e.platform;n.push({...void 0!==r?{platform:r}:{},fromMs:Jt(s.timestamp),toMs:Jt(e.timestamp),afterSeq:i,beforeSeq:t})}s=e,i=t}else s=e,i=t}else s=e,i=t}}return n}(r);const s=o.filter(e=>!(""===e.eventId&&!e.traceId)),i=new Map;for(const e of s){const t=e.traceId?e.traceId:void 0,n=t?`trace${Zt}${t}`:`event${Zt}${e.eventId}`;let r=i.get(n);r||(r=t?{id:t,correlation:"trace",traceId:t,records:[]}:{id:`event:${e.eventId}`,correlation:"legacy",records:[]},i.set(n,r)),r.records.push(e)}const a=[...i.values()].map(e=>cn(e.id,e.correlation,e.traceId,e.records,n));return a.sort((e,t)=>e.firstTimestamp!==t.firstTimestamp?e.firstTimestamp-t.firstTimestamp:e.id<t.id?-1:e.id>t.id?1:0),{journeys:a,gaps:n.gaps}}var ln=null;function fn(){return ln}function pn(e){ln=e}function dn(e,t){if(0===e.observers.size)return;const n=Array.from(e.observers);for(const e of n)try{e(t)}catch{}}function mn(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,s=e.maxBodyBytes,i="number"==typeof s&&Number.isFinite(s)&&s>=1?Math.floor(s):6e4,a=e.fetch??((e,t)=>globalThis.fetch(e,t)),c=e.onError??(()=>{});let u=[],l=null,f=0;function p(e){const t=JSON.stringify(e);if(e.length<=1)return[t];if(function(e){let t=0;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);if(r<128)t+=1;else if(r<2048)t+=2;else if(r>=55296&&r<=56319&&n+1<e.length){const r=e.charCodeAt(n+1);r>=56320&&r<=57343?(t+=4,n++):t+=3}else t+=3}return t}(t)<=i)return[t];const n=Math.floor(e.length/2);return[...p(e.slice(0,n)),...p(e.slice(n))]}function d(t){return Promise.resolve().then(()=>a(e.url,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.token}`},body:t})).then(e=>{e&&"object"==typeof e&&"ok"in e&&!e.ok&&c(new Error(`Observer responded ${e.status}`))}).catch(e=>{c(e)})}function m(){if(0===u.length)return;const e=u;u=[],l&&(clearTimeout(l),l=null);const t=p(e);(async()=>{for(const e of t)await d(e)})()}return e=>{u.push({...e,seq:++f}),u.length>=o?m():null===l&&(l=setTimeout(m,n))}}function gn(e){return e?{userAgent:e,browser:hn(e),browserVersion:vn(e),os:yn(e),osVersion:bn(e),deviceType:wn(e)}:{}}function hn(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 vn(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 yn(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 bn(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function wn(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 kn(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function $n(e){const t=kn(e);return new Function("value","context",t)}function Sn(e){const t=kn(e);return new Function("value","context",t)}function En(e){const t=kn(e);return new Function("value","context",t)}var An="https://cdn.jsdelivr.net/npm",jn="dist/walkerOS.json";function In(e){return"string"==typeof e||Array.isArray(e)&&e.every(e=>"string"==typeof e)?e:void 0}async function On(e,t){const n=t?.version||"latest",r=t?.timeout||1e4,o=new AbortController,s=setTimeout(()=>o.abort(),r),i=o.signal,a=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:i,...a&&{headers:a}});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||{},s=n.hints,i=n.hintKeys??(s?Object.keys(s):[]),a=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},...s&&Object.keys(s).length>0?{hints:s}:{},hintKeys:i,exampleSummaries:a}}(e,n,await o.json())}const r=`${An}/${e}@${n}`,o=await xn(`${r}/package.json`,i,a);return function(e,t,n,r){const o=r.$meta||{},s=r.schemas||{},i=r.examples||{},a=r.hints,c=a?Object.keys(a):[],u=[],l=i.step||{};for(const[e,t]of Object.entries(l)){const n=t,r={name:e};"string"==typeof n?.description&&(r.description=n.description),u.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:In(o.platform),schemas:s,examples:i,...f?{docs:f}:{},...p?{source:p}:{},...a&&Object.keys(a).length>0?{hints:a}:{},hintKeys:c,exampleSummaries:u}}(e,n,o,await xn(`${r}/${jn}`,i,a))}finally{clearTimeout(s)}}async function xn(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 _n(e,t){const n=await On(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}:{}}}var Mn="observe";function Nn(e){if("object"!=typeof e||null===e)return!1;if(!("paths"in e)||!("record"in e))return!1;const{paths:t,record:n}=e;return Array.isArray(t)&&t.every(e=>"string"==typeof e)&&"function"==typeof n}var Tn="call:";function Cn(e){const t=(e.startsWith(Tn)?e.slice(Tn.length):e).split(".");return t.some(e=>""===e)?[]:t}function Pn(e,t){const n=t?{...e,_hints:t}:e;return{content:[{type:"text",text:JSON.stringify(n,null,2)}],structuredContent:n}}function Rn(e,t){let n,r,o,s;if(e instanceof Error){n=e.message;const t=e;t.code&&(o=t.code),Array.isArray(t.details)&&(s=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 i={error:n};return t&&(i.hint=t),r&&(i.path=r),o&&(i.code=o),s&&(i.details=s),{content:[{type:"text",text:JSON.stringify(i)}],structuredContent:i,isError:!0}}function Fn(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}function zn(e){if(void 0===e||"*"===e)return()=>!0;if("and"in e){const t=e.and.map(zn);return e=>t.every(t=>t(e))}if("or"in e){const t=e.or.map(zn);return e=>t.some(t=>t(e))}return function(e){const{key:t,operator:n,value:r,not:o}=e,s=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=$e(e,t),r=s(n);return o?!r:r}}(e)}function Dn(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&("match"in e||"next"in e||"one"in e||"many"in e)}function Un(e){return Array.isArray(e)&&e.length>0&&e.every(e=>Dn(e))}function Vn(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:Ln(e)??{type:"chain",value:[]}};const t=e;return{match:t.match?zn(t.match):()=>!0,next:Ln(t)??{type:"chain",value:[]}}})}function Ln(e){if(null==e)return;if("string"==typeof e)return{type:"static",value:e};if(Array.isArray(e)){if(0===e.length)return;if(Un(e))return Ln({one:e});if(e.every(e=>"string"==typeof e))return{type:"chain",value:e};const t=[];for(const n of e){const e=Ln(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:zn(t.match),next:Ln(t.next)}:Ln(t.next);if("one"in t&&t.one){const e=Vn(t.one);return t.match?{type:"gate",match:zn(t.match),next:{type:"one",routes:e}}:{type:"one",routes:e}}if("many"in t&&t.many){const e=Vn(t.many);return t.match?{type:"gate",match:zn(t.match),next:{type:"many",routes:e}}:{type:"many",routes:e}}return t.match?{type:"gate",match:zn(t.match)}:void 0}var Bn=new WeakMap;function Kn(e,t={}){if(null==e)return[];let n;if("object"==typeof e){const t=Bn.get(e);t?n=t:(n=Ln(e),n&&Bn.set(e,n))}else n=Ln(e);if(!n)return[];const r=qn(n,t);return void 0===r?[]:Array.isArray(r)?r:[r]}function qn(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 qn(e.next,t)}if("sequence"===e.type){const n=[];for(const r of e.value){const e=qn(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=qn(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 qn(n.next,t)}}var Wn="__walkeros_cache_v__",Zn="__walkeros_cache_exp__";function Hn(e,t,n=Date.now){const r={[Wn]:e};return void 0!==t&&(r[Zn]=n()+t),r}function Jn(e,t=Date.now){if(void 0===e)return;if(null===(n=e)||"object"!=typeof n||Array.isArray(n)||!(Wn in e))return{value:e};var n;const r=e[Zn];return"number"==typeof r&&t()>r?{expired:!0}:{value:e[Wn]}}var Gn="__walkeros_cache__",Xn=class extends Error{constructor(e,t){super(e,t),this.name="StoreCodecError"}};function Yn(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Qn(e){if(Buffer.isBuffer(e))return{[Gn]:"buffer",d:e.toString("base64")};if(e instanceof Uint8Array)return{[Gn]:"buffer",d:Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64")};if(e instanceof ArrayBuffer)return{[Gn]:"buffer",d:Buffer.from(e).toString("base64")};if(Array.isArray(e))return e.map(Qn);if(Yn(e)){if(Gn in e){const t={};for(const[n,r]of Object.entries(e))t[n]=Qn(r);return{[Gn]:"escape",d:t}}const t={};for(const[n,r]of Object.entries(e))t[n]=Qn(r);return t}return e}function er(e,t){if(Yn(e)){if(Gn in e){const n=e[Gn],r=e.d;if("buffer"===n&&"string"==typeof r)return t(Buffer.from(r,"base64"));if("escape"===n&&Yn(r)){const e={};for(const[n,o]of Object.entries(r))e[n]=er(o,t);return e}}const n={};for(const[r,o]of Object.entries(e))n[r]=er(o,t);return n}return Array.isArray(e)?e.map(e=>er(e,t)):e}function tr(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function nr(e){return null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e||e instanceof Uint8Array||(Array.isArray(e)?e.every(e=>void 0===e||nr(e)):!!Yn(e)&&Object.values(e).every(e=>void 0===e||nr(e)))}function rr(e){let t;try{t=JSON.stringify(Qn(e))}catch(e){throw new Xn("Failed to serialize store value (likely a cyclic structure).",{cause:e})}return new Uint8Array(Buffer.from(t,"utf8"))}function or(e){const t="string"==typeof e?e:Buffer.from(e).toString("utf8"),n=er(JSON.parse(t),tr);if(!nr(n))throw new Xn("Restored value is not a valid StoreValue.");return n}function sr(e,t){const n={ingest:e??{}};return void 0!==t&&(n.event=t),n}function ir(e){return{stop:e.stop??!1,storeId:e.store,namespace:e.namespace,rules:e.rules.map(e=>({match:e.match?zn(e.match):()=>!0,key:e.key,ttl:e.ttl,update:e.update}))}}async function ar(e,t,n,r){const o=e.rules.find(e=>e.match(n));if(!o)return null;const s=o.key.map(e=>String($e(n,e)??""));if(s.every(e=>""===e))return null;const i=s.join(":"),a=r??e.namespace,c=a?`${a}:${i}`:i,u=Jn(await t.get(c));if(void 0===u)return{status:"MISS",key:c,rule:o};if("expired"in u){try{await t.delete(c)}catch{}return{status:"MISS",key:c,rule:o}}return{status:"HIT",key:c,value:u.value,rule:o}}function cr(e,t,n,r){if(!nr(n))return;const o=1e3*r,s=e.set(t,Hn(n,o),o);s instanceof Promise&&s.catch(()=>{})}async function ur(e,t,n,r){if(!t)return e;let o=e;for(const[e,s]of Object.entries(t)){o=Se(o,e,await it(n,s,{collector:r}))}return o}function lr(e){return fe(e)?e:[e]}async function fr(e,t,n,r){let o=n;for(const n of e)await rt(async()=>{const e=t(n.store);if(!e)return;const s=await it(o,n.key,{collector:r,event:o});if(!we(s))return;const i=n.store?s:`state:${s}`;if("set"===n.mode){const t=await it(o,n.value,{collector:r,event:o});if(!me(t))return;await e.set(i,t)}else{const t=we(a=n.value)?a:ye(a)&&we(a.key)?a.key:void 0;if(!t)return;const r=await e.get(i);if(!me(r))return;o=Se(o,t,r)}var a},e=>{if(e instanceof ot)throw e;r.logger?.error?.("[state] operation failed",e)})();return o}var pr={Source:["code","package","import","before","next","cache","state"],Transformer:["code","package","import","before","next","cache","state","mapping"],Destination:["code","package","import","before","next","cache","state"],Store:["code","package","import","cache"]},dr=["config","env","variables","examples","disabled","id","logger","mock","chainMocks"],mr={Source:["primary"],Transformer:[],Destination:[],Store:[]},gr=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function hr(e,t){const n=function(e){return new Set([...pr[e],...dr,...mr[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,s=void 0!==e.code;return s&&"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.`}:s&&("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."}:s&&r?{ok:!1,code:"CONFLICT",key:"package",reason:"Cannot specify both `code` and `package`. Use one or the other."}:s&&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&&gr.test(e.import)?{ok:!0}:{ok:!1,code:"INVALID_IMPORT",key:"import",reason:`import must match ${gr.source}. Got: ${JSON.stringify(e.import)}.`}}function vr(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.state||void 0!==e.mapping))}function yr(e){return 0===e.length?"// no output":e.map(br).join(";\n\n")}function br(e){const[t,...n]=e,r=n.map(wr).join(", ");return"return"===t?r?`return ${r}`:"return":`${t}(${r})`}function wr(e){return void 0===e?"undefined":null===e?"null":"function"==typeof e?"[Function]":JSON.stringify(e,null,2)}//# sourceMappingURL=index.js.map
|