@walkeros/core 2.1.0 → 2.1.1
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/dist/index.d.mts +17 -19
- package/dist/index.d.ts +17 -19
- 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/dist/index.d.mts
CHANGED
|
@@ -1347,7 +1347,7 @@ interface Rule<Settings = unknown> {
|
|
|
1347
1347
|
name?: string;
|
|
1348
1348
|
policy?: Policy;
|
|
1349
1349
|
}
|
|
1350
|
-
interface Result$
|
|
1350
|
+
interface Result$2 {
|
|
1351
1351
|
eventMapping?: Rule;
|
|
1352
1352
|
mappingKey?: string;
|
|
1353
1353
|
}
|
|
@@ -1392,7 +1392,7 @@ type mapping_ValueConfig = ValueConfig;
|
|
|
1392
1392
|
type mapping_ValueType = ValueType;
|
|
1393
1393
|
type mapping_Values = Values;
|
|
1394
1394
|
declare namespace mapping {
|
|
1395
|
-
export type { mapping_Condition as Condition, Config$3 as Config, mapping_Data as Data, Fn$1 as Fn, mapping_Loop as Loop, mapping_Map as Map, Options$1 as Options, mapping_Policy as Policy, Result$
|
|
1395
|
+
export type { mapping_Condition as Condition, Config$3 as Config, mapping_Data as Data, Fn$1 as Fn, mapping_Loop as Loop, mapping_Map as Map, Options$1 as Options, mapping_Policy as Policy, Result$2 as Result, mapping_Rule as Rule, mapping_Rules as Rules, mapping_Validate as Validate, mapping_Value as Value, mapping_ValueConfig as ValueConfig, mapping_ValueType as ValueType, mapping_Values as Values };
|
|
1396
1396
|
}
|
|
1397
1397
|
|
|
1398
1398
|
type Config$2 = {
|
|
@@ -1536,18 +1536,17 @@ interface Context$2<T extends TypesGeneric$1 = Types$1> extends Base<Config$1<T>
|
|
|
1536
1536
|
ingest?: unknown;
|
|
1537
1537
|
}
|
|
1538
1538
|
/**
|
|
1539
|
-
*
|
|
1540
|
-
*
|
|
1541
|
-
* The chain runner resolves `next` via walkChain() — same semantics
|
|
1542
|
-
* as source.next or transformer.config.next.
|
|
1539
|
+
* Unified result type for transformer functions.
|
|
1540
|
+
* Replaces the old union return type with a structured object.
|
|
1543
1541
|
*
|
|
1544
|
-
*
|
|
1545
|
-
*
|
|
1542
|
+
* @field event - Modified event to continue with
|
|
1543
|
+
* @field respond - Wrapped respond function for downstream transformers
|
|
1544
|
+
* @field next - Branch to a different chain (replaces BranchResult)
|
|
1546
1545
|
*/
|
|
1547
|
-
interface
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
next
|
|
1546
|
+
interface Result$1 {
|
|
1547
|
+
event?: DeepPartialEvent;
|
|
1548
|
+
respond?: RespondFn;
|
|
1549
|
+
next?: Next;
|
|
1551
1550
|
}
|
|
1552
1551
|
/**
|
|
1553
1552
|
* The main transformer function.
|
|
@@ -1555,11 +1554,11 @@ interface BranchResult {
|
|
|
1555
1554
|
*
|
|
1556
1555
|
* @param event - The event to process
|
|
1557
1556
|
* @param context - Transformer context with collector, config, env, logger
|
|
1558
|
-
* @returns
|
|
1557
|
+
* @returns Result - structured result with event, respond, next
|
|
1559
1558
|
* @returns void - continue with current event unchanged (passthrough)
|
|
1560
1559
|
* @returns false - stop chain, cancel further processing
|
|
1561
1560
|
*/
|
|
1562
|
-
type Fn<T extends TypesGeneric$1 = Types$1> = (event: DeepPartialEvent, context: Context$2<T>) => PromiseOrValue<
|
|
1561
|
+
type Fn<T extends TypesGeneric$1 = Types$1> = (event: DeepPartialEvent, context: Context$2<T>) => PromiseOrValue<Result$1 | false | void>;
|
|
1563
1562
|
/**
|
|
1564
1563
|
* Optional initialization function.
|
|
1565
1564
|
* Called once before first push.
|
|
@@ -1609,7 +1608,6 @@ interface Transformers {
|
|
|
1609
1608
|
[transformerId: string]: Instance$1;
|
|
1610
1609
|
}
|
|
1611
1610
|
|
|
1612
|
-
type transformer_BranchResult = BranchResult;
|
|
1613
1611
|
type transformer_Fn<T extends TypesGeneric$1 = Types$1> = Fn<T>;
|
|
1614
1612
|
type transformer_InitFn<T extends TypesGeneric$1 = Types$1> = InitFn<T>;
|
|
1615
1613
|
type transformer_InitTransformer<T extends TypesGeneric$1 = Types$1> = InitTransformer<T>;
|
|
@@ -1617,7 +1615,7 @@ type transformer_InitTransformers = InitTransformers;
|
|
|
1617
1615
|
type transformer_Next = Next;
|
|
1618
1616
|
type transformer_Transformers = Transformers;
|
|
1619
1617
|
declare namespace transformer {
|
|
1620
|
-
export type { BaseEnv$1 as BaseEnv,
|
|
1618
|
+
export type { BaseEnv$1 as BaseEnv, Config$1 as Config, Context$2 as Context, Env$1 as Env, transformer_Fn as Fn, Init$1 as Init, transformer_InitFn as InitFn, InitSettings$1 as InitSettings, transformer_InitTransformer as InitTransformer, transformer_InitTransformers as InitTransformers, Instance$1 as Instance, transformer_Next as Next, Result$1 as Result, Settings$1 as Settings, transformer_Transformers as Transformers, Types$1 as Types, TypesGeneric$1 as TypesGeneric, TypesOf$1 as TypesOf };
|
|
1621
1619
|
}
|
|
1622
1620
|
|
|
1623
1621
|
interface Context$1 {
|
|
@@ -1986,10 +1984,10 @@ interface SendResponse {
|
|
|
1986
1984
|
}
|
|
1987
1985
|
|
|
1988
1986
|
/**
|
|
1989
|
-
* Creates a
|
|
1987
|
+
* Creates a TransformerResult for dynamic chain routing.
|
|
1990
1988
|
* Use this in transformer push functions to redirect the chain.
|
|
1991
1989
|
*/
|
|
1992
|
-
declare function branch(event: DeepPartialEvent, next: Next):
|
|
1990
|
+
declare function branch(event: DeepPartialEvent, next: Next): Result$1;
|
|
1993
1991
|
|
|
1994
1992
|
/**
|
|
1995
1993
|
* Anonymizes an IPv4 address by setting the last octet to 0.
|
|
@@ -2324,7 +2322,7 @@ declare function createLogger(config?: Config$4): Instance$2;
|
|
|
2324
2322
|
* @param mapping The mapping rules.
|
|
2325
2323
|
* @returns The mapping result.
|
|
2326
2324
|
*/
|
|
2327
|
-
declare function getMappingEvent(event: DeepPartialEvent | PartialEvent | Event, mapping?: Rules): Promise<Result$
|
|
2325
|
+
declare function getMappingEvent(event: DeepPartialEvent | PartialEvent | Event, mapping?: Rules): Promise<Result$2>;
|
|
2328
2326
|
/**
|
|
2329
2327
|
* Gets a value from a mapping.
|
|
2330
2328
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -1347,7 +1347,7 @@ interface Rule<Settings = unknown> {
|
|
|
1347
1347
|
name?: string;
|
|
1348
1348
|
policy?: Policy;
|
|
1349
1349
|
}
|
|
1350
|
-
interface Result$
|
|
1350
|
+
interface Result$2 {
|
|
1351
1351
|
eventMapping?: Rule;
|
|
1352
1352
|
mappingKey?: string;
|
|
1353
1353
|
}
|
|
@@ -1392,7 +1392,7 @@ type mapping_ValueConfig = ValueConfig;
|
|
|
1392
1392
|
type mapping_ValueType = ValueType;
|
|
1393
1393
|
type mapping_Values = Values;
|
|
1394
1394
|
declare namespace mapping {
|
|
1395
|
-
export type { mapping_Condition as Condition, Config$3 as Config, mapping_Data as Data, Fn$1 as Fn, mapping_Loop as Loop, mapping_Map as Map, Options$1 as Options, mapping_Policy as Policy, Result$
|
|
1395
|
+
export type { mapping_Condition as Condition, Config$3 as Config, mapping_Data as Data, Fn$1 as Fn, mapping_Loop as Loop, mapping_Map as Map, Options$1 as Options, mapping_Policy as Policy, Result$2 as Result, mapping_Rule as Rule, mapping_Rules as Rules, mapping_Validate as Validate, mapping_Value as Value, mapping_ValueConfig as ValueConfig, mapping_ValueType as ValueType, mapping_Values as Values };
|
|
1396
1396
|
}
|
|
1397
1397
|
|
|
1398
1398
|
type Config$2 = {
|
|
@@ -1536,18 +1536,17 @@ interface Context$2<T extends TypesGeneric$1 = Types$1> extends Base<Config$1<T>
|
|
|
1536
1536
|
ingest?: unknown;
|
|
1537
1537
|
}
|
|
1538
1538
|
/**
|
|
1539
|
-
*
|
|
1540
|
-
*
|
|
1541
|
-
* The chain runner resolves `next` via walkChain() — same semantics
|
|
1542
|
-
* as source.next or transformer.config.next.
|
|
1539
|
+
* Unified result type for transformer functions.
|
|
1540
|
+
* Replaces the old union return type with a structured object.
|
|
1543
1541
|
*
|
|
1544
|
-
*
|
|
1545
|
-
*
|
|
1542
|
+
* @field event - Modified event to continue with
|
|
1543
|
+
* @field respond - Wrapped respond function for downstream transformers
|
|
1544
|
+
* @field next - Branch to a different chain (replaces BranchResult)
|
|
1546
1545
|
*/
|
|
1547
|
-
interface
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
next
|
|
1546
|
+
interface Result$1 {
|
|
1547
|
+
event?: DeepPartialEvent;
|
|
1548
|
+
respond?: RespondFn;
|
|
1549
|
+
next?: Next;
|
|
1551
1550
|
}
|
|
1552
1551
|
/**
|
|
1553
1552
|
* The main transformer function.
|
|
@@ -1555,11 +1554,11 @@ interface BranchResult {
|
|
|
1555
1554
|
*
|
|
1556
1555
|
* @param event - The event to process
|
|
1557
1556
|
* @param context - Transformer context with collector, config, env, logger
|
|
1558
|
-
* @returns
|
|
1557
|
+
* @returns Result - structured result with event, respond, next
|
|
1559
1558
|
* @returns void - continue with current event unchanged (passthrough)
|
|
1560
1559
|
* @returns false - stop chain, cancel further processing
|
|
1561
1560
|
*/
|
|
1562
|
-
type Fn<T extends TypesGeneric$1 = Types$1> = (event: DeepPartialEvent, context: Context$2<T>) => PromiseOrValue<
|
|
1561
|
+
type Fn<T extends TypesGeneric$1 = Types$1> = (event: DeepPartialEvent, context: Context$2<T>) => PromiseOrValue<Result$1 | false | void>;
|
|
1563
1562
|
/**
|
|
1564
1563
|
* Optional initialization function.
|
|
1565
1564
|
* Called once before first push.
|
|
@@ -1609,7 +1608,6 @@ interface Transformers {
|
|
|
1609
1608
|
[transformerId: string]: Instance$1;
|
|
1610
1609
|
}
|
|
1611
1610
|
|
|
1612
|
-
type transformer_BranchResult = BranchResult;
|
|
1613
1611
|
type transformer_Fn<T extends TypesGeneric$1 = Types$1> = Fn<T>;
|
|
1614
1612
|
type transformer_InitFn<T extends TypesGeneric$1 = Types$1> = InitFn<T>;
|
|
1615
1613
|
type transformer_InitTransformer<T extends TypesGeneric$1 = Types$1> = InitTransformer<T>;
|
|
@@ -1617,7 +1615,7 @@ type transformer_InitTransformers = InitTransformers;
|
|
|
1617
1615
|
type transformer_Next = Next;
|
|
1618
1616
|
type transformer_Transformers = Transformers;
|
|
1619
1617
|
declare namespace transformer {
|
|
1620
|
-
export type { BaseEnv$1 as BaseEnv,
|
|
1618
|
+
export type { BaseEnv$1 as BaseEnv, Config$1 as Config, Context$2 as Context, Env$1 as Env, transformer_Fn as Fn, Init$1 as Init, transformer_InitFn as InitFn, InitSettings$1 as InitSettings, transformer_InitTransformer as InitTransformer, transformer_InitTransformers as InitTransformers, Instance$1 as Instance, transformer_Next as Next, Result$1 as Result, Settings$1 as Settings, transformer_Transformers as Transformers, Types$1 as Types, TypesGeneric$1 as TypesGeneric, TypesOf$1 as TypesOf };
|
|
1621
1619
|
}
|
|
1622
1620
|
|
|
1623
1621
|
interface Context$1 {
|
|
@@ -1986,10 +1984,10 @@ interface SendResponse {
|
|
|
1986
1984
|
}
|
|
1987
1985
|
|
|
1988
1986
|
/**
|
|
1989
|
-
* Creates a
|
|
1987
|
+
* Creates a TransformerResult for dynamic chain routing.
|
|
1990
1988
|
* Use this in transformer push functions to redirect the chain.
|
|
1991
1989
|
*/
|
|
1992
|
-
declare function branch(event: DeepPartialEvent, next: Next):
|
|
1990
|
+
declare function branch(event: DeepPartialEvent, next: Next): Result$1;
|
|
1993
1991
|
|
|
1994
1992
|
/**
|
|
1995
1993
|
* Anonymizes an IPv4 address by setting the last octet to 0.
|
|
@@ -2324,7 +2322,7 @@ declare function createLogger(config?: Config$4): Instance$2;
|
|
|
2324
2322
|
* @param mapping The mapping rules.
|
|
2325
2323
|
* @returns The mapping result.
|
|
2326
2324
|
*/
|
|
2327
|
-
declare function getMappingEvent(event: DeepPartialEvent | PartialEvent | Event, mapping?: Rules): Promise<Result$
|
|
2325
|
+
declare function getMappingEvent(event: DeepPartialEvent | PartialEvent | Event, mapping?: Rules): Promise<Result$2>;
|
|
2328
2326
|
/**
|
|
2329
2327
|
* Gets a value from a mapping.
|
|
2330
2328
|
*
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},s={};i(s,{Collector:()=>c,Const:()=>$,Context:()=>a,Data:()=>u,Destination:()=>f,ENV_MARKER_PREFIX:()=>M,Elb:()=>l,Flow:()=>p,Hooks:()=>g,Level:()=>m,Lifecycle:()=>j,Logger:()=>d,Mapping:()=>y,On:()=>b,Request:()=>v,Simulation:()=>O,Source:()=>w,Transformer:()=>h,WalkerOS:()=>k,anonymizeIP:()=>S,assign:()=>B,branch:()=>E,castToProperty:()=>je,castValue:()=>ie,clone:()=>ne,createDestination:()=>ce,createEvent:()=>ae,createLogger:()=>be,createMockLogger:()=>Te,createRespond:()=>Ye,debounce:()=>pe,fetchPackageMeta:()=>Ge,fetchPackageSchema:()=>qe,filterValues:()=>we,getBrowser:()=>Ie,getBrowserVersion:()=>Ve,getByPath:()=>oe,getDeviceType:()=>Le,getEvent:()=>ue,getFlowConfig:()=>I,getGrantedConsent:()=>se,getHeaders:()=>Me,getId:()=>fe,getMappingEvent:()=>$e,getMappingValue:()=>Ee,getMarketingParameters:()=>le,getOS:()=>ze,getOSVersion:()=>Fe,getPlatform:()=>L,isArguments:()=>U,isArray:()=>J,isBoolean:()=>K,isCommand:()=>Z,isDefined:()=>q,isElementOrDocument:()=>G,isFunction:()=>X,isNumber:()=>Q,isObject:()=>Y,isPropertyType:()=>ve,isSameType:()=>ee,isString:()=>te,mcpError:()=>Qe,mcpResult:()=>Xe,mergeContractSchemas:()=>x,mockEnv:()=>Ae,packageNameToVariable:()=>D,parseUserAgent:()=>He,processEventMapping:()=>xe,requestToData:()=>Ne,requestToParameter:()=>_e,resolveContract:()=>A,setByPath:()=>re,throttle:()=>ge,throwError:()=>N,transformData:()=>Ce,traverseEnv:()=>Pe,trim:()=>Re,tryCatch:()=>ke,tryCatchAsync:()=>Oe,useHooks:()=>De,wrapCondition:()=>Be,wrapFn:()=>Ue,wrapValidate:()=>Je}),module.exports=(e=s,((e,i,s,c)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let a of o(i))r.call(e,a)||a===s||t(e,a,{get:()=>i[a],enumerable:!(c=n(i,a))||c.enumerable});return e})(t({},"__esModule",{value:!0}),e));var c={},a={},u={},f={},l={},p={},g={},d={};i(d,{Level:()=>m});var m=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(m||{}),y={},b={},h={},v={},w={},j={},k={},O={},$={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function E(e,t){return{__branch:!0,event:e,next:t}}function S(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function x(e,t){const n={...e};for(const o of Object.keys(t)){const r=e[o],i=t[o];"required"===o&&Array.isArray(r)&&Array.isArray(i)?n[o]=[...new Set([...r,...i])]:T(r)&&T(i)?n[o]=x(r,i):n[o]=i}return n}function A(e,t,n,o){let r={};for(const i of[e,o]){if(!i)continue;const e=[P(i,"*","*"),P(i,"*",n),P(i,t,"*"),P(i,t,n)];for(const t of e)t&&(r=x(r,t))}return r}function P(e,t,n){const o=e[t];if(!o||"object"!=typeof o)return;const r=o[n];return r&&"object"==typeof r?r:void 0}function T(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function N(e){throw new Error(String(e))}function _(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function C(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var M="__WALKEROS_ENV:";function R(e,t,n,o){if("string"==typeof e){const r=e.match(/^\$def\.([a-zA-Z_][a-zA-Z0-9_]*)$/);if(r){const e=r[1];return void 0===n[e]&&N(`Definition "${e}" not found`),R(n[e],t,n,o)}let i=e.replace(/\$var\.([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,n)=>{if(void 0!==t[n])return String(t[n]);N(`Variable "${n}" not found`)});return i=i.replace(/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,(e,t,n)=>o?.deferred?void 0!==n?`${M}${t}:${n}`:`${M}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==n?n:void N(`Environment variable "${t}" not found and no default provided`)),i}if(Array.isArray(e))return e.map(e=>R(e,t,n,o));if(null!==e&&"object"==typeof e){const r={};for(const[i,s]of Object.entries(e))r[i]=R(s,t,n,o);return r}return e}function D(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 H(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?D(e):void 0}function I(e,t,n){const o=Object.keys(e.flows);t||(1===o.length?t=o[0]:N(`Multiple flows found (${o.join(", ")}). Please specify a flow.`));const r=e.flows[t];r||N(`Flow "${t}" not found. Available: ${o.join(", ")}`);const i=JSON.parse(JSON.stringify(r));if(i.sources)for(const[t,o]of Object.entries(i.sources)){const s=_(e.variables,r.variables,o.variables),c=C(e.definitions,r.definitions,o.definitions),a=R(o.config,s,c,n),u=H(o.package,o.code,i.packages),f="string"==typeof o.code||"object"==typeof o.code?o.code:void 0,l=u||f;i.sources[t]={package:o.package,config:a,env:o.env,primary:o.primary,variables:o.variables,definitions:o.definitions,next:o.next,code:l}}if(i.destinations)for(const[t,o]of Object.entries(i.destinations)){const s=_(e.variables,r.variables,o.variables),c=C(e.definitions,r.definitions,o.definitions),a=R(o.config,s,c,n),u=H(o.package,o.code,i.packages),f="string"==typeof o.code||"object"==typeof o.code?o.code:void 0,l=u||f;i.destinations[t]={package:o.package,config:a,env:o.env,variables:o.variables,definitions:o.definitions,before:o.before,code:l}}if(i.collector){const t=_(e.variables,r.variables),o=C(e.definitions,r.definitions),s=R(i.collector,t,o,n);i.collector=s}const s=e.contract,c=r.contract;if(s||c){const e=function(...e){const t=new Set;for(const n of e)if(n)for(const e of Object.keys(n)){if(e.startsWith("$"))continue;const o=n[e];if(o&&"object"==typeof o)for(const n of Object.keys(o))"*"!==n&&t.add(`${e}\0${n}`)}const n=new Set,o=new Set;for(const t of e)if(t)for(const e of Object.keys(t)){if(e.startsWith("$")||"*"===e)continue;n.add(e);const r=t[e];if(r&&"object"==typeof r)for(const e of Object.keys(r))"*"!==e&&o.add(e)}for(const e of n)for(const n of o)t.add(`${e}\0${n}`);return[...t].map(e=>e.split("\0"))}(s,c),t={};for(const[n,o]of e){const e=A(s||{},n,o,c);Object.keys(e).length>0&&(t[n]||(t[n]={}),t[n][o]={schema:z(e)})}if(i.transformers)for(const[,e]of Object.entries(i.transformers))F(e.config,t);const n=s?.$tagging??c?.$tagging;if("number"==typeof n){const e=i.collector||{};void 0===e.tagging&&(e.tagging=n),i.collector=e}}return i}var V=new Set(["description","examples","title","$comment"]);function z(e){const t={};for(const[n,o]of Object.entries(e))V.has(n)||(null===o||"object"!=typeof o||Array.isArray(o)?t[n]=o:t[n]=z(o));return t}function F(e,t){if(!e||"object"!=typeof e)return;const n=e;for(const e of Object.keys(n))"$contract"===n[e]?n[e]=t:"object"==typeof n[e]&&null!==n[e]&&F(n[e],t)}function L(e){return void 0!==e.web?"web":void 0!==e.server?"server":void N("Config must have web or server key")}var W={merge:!0,shallow:!0,extend:!0};function B(e,t={},n={}){n={...W,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function U(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function J(e){return Array.isArray(e)}function K(e){return"boolean"==typeof e}function Z(e){return"walker"===e}function q(e){return void 0!==e}function G(e){return e===document||e instanceof Element}function X(e){return"function"==typeof e}function Q(e){return"number"==typeof e&&!Number.isNaN(e)}function Y(e){return"object"==typeof e&&null!==e&&!J(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ee(e,t){return typeof e==typeof t}function te(e){return"string"==typeof e}function ne(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 o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=ne(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(ne(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 oe(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&J(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=oe(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return q(r)?r:n}function re(e,t,n){if(!Y(e))return e;const o=ne(e),r=t.split(".");let i=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return o}function ie(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function se(e,t={},n={}){const o={...t,...n},r={};let i=void 0===e;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(i=!0))}),!!i&&r}function ce(e,t){const n={...e};return n.config=B(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=B(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=B(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function ae(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=B({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"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${t}-${n}-${o}`,trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,group:n,count:o,version:{source:"2.0.1",tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.name){const[t,n]=e.name.split(" ")??[];t&&n&&(r.entity=t,r.action=n)}return r}function ue(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),o={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},r={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return ae({...{"cart view":{data:{currency:"EUR",value:2*o.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...o.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:o.data.price+r.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...o,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...r,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",...o,context:{shopping:["complete",0]},nested:[]},{entity:"product",...r,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":{...o,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...o,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...o.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 fe(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function le(e,t={}){const n="clickId",o={},r={utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term",dclid:n,fbclid:n,gclid:n,msclkid:n,ttclid:n,twclid:n,igshid:n,sclid:n};return Object.entries(B(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}function pe(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(c=>{const a=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),c(o))},t),a&&(i=!0,o=e(...s),c(o))})}function ge(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}function de(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function me(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=de(e)):n=e,void 0!==t&&(t instanceof Error?o.error=de(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=de(o.error))):o.value=t),{message:n,context:o}}var ye=(e,t,n,o)=>{const r=`${m[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;i?s(r,t,n):s(r,t)};function be(e={}){return he({level:void 0!==e.level?function(e){return"string"==typeof e?m[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function he(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,i=(e,o,i)=>{if(e<=t){const t=me(o,i);n?n(e,t.message,t.context,r,ye):ye(e,t.message,t.context,r)}};return{error:(e,t)=>i(0,e,t),warn:(e,t)=>i(1,e,t),info:(e,t)=>i(2,e,t),debug:(e,t)=>i(3,e,t),throw:(e,t)=>{const o=me(e,t);throw n?n(0,o.message,o.context,r,ye):ye(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>he({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function ve(e){return K(e)||te(e)||Q(e)||!q(e)||J(e)&&e.every(ve)||Y(e)&&Object.values(e).every(ve)}function we(e){return K(e)||te(e)||Q(e)?e:U(e)?we(Array.from(e)):J(e)?e.map(e=>we(e)).filter(e=>void 0!==e):Y(e)?Object.entries(e).reduce((e,[t,n])=>{const o=we(n);return void 0!==o&&(e[t]=o),e},{}):void 0}function je(e){return ve(e)?e:void 0}function ke(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function Oe(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(n?.())}}}async function $e(e,t){const[n,o]=(e.name||"").split(" ");if(!t||!n||!o)return{};let r,i="",s=n,c=o;const a=t=>{if(t)return(t=J(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[s]||(s="*");const u=t[s];return u&&(u[c]||(c="*"),r=a(u[c])),r||(s="*",c="*",r=a(t[s]?.[c])),r&&(i=`${s} ${c}`),{eventMapping:r,mappingKey:i}}async function Ee(e,t={},n={}){if(!q(e))return;const o=Y(e)&&e.consent||n.consent||n.collector?.consent,r=J(t)?t:[t];for(const t of r){const r=await Oe(Se)(e,t,{...n,consent:o});if(q(r))return r}}async function Se(e,t,n={}){const{collector:o,consent:r}=n;return(J(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const c=te(i)?{key:i}:i;if(!Object.keys(c).length)return;const{condition:a,consent:u,fn:f,key:l,loop:p,map:g,set:d,validate:m,value:y}=c;if(a&&!await Oe(a)(e,i,o))return;if(u&&!se(u,r))return y;let b=q(y)?y:e;if(f&&(b=await Oe(f)(e,i,n)),l&&(b=oe(e,l,y)),p){const[t,o]=p,r="this"===t?[e]:await Ee(e,t,n);J(r)&&(b=(await Promise.all(r.map(e=>Ee(e,o,n)))).filter(q))}else g?b=await Object.entries(g).reduce(async(t,[o,r])=>{const i=await t,s=await Ee(e,r,n);return q(s)&&(i[o]=s),i},Promise.resolve({})):d&&(b=await Promise.all(d.map(t=>Se(e,t,n))));m&&!await Oe(m)(b)&&(b=void 0);const h=je(b);return q(h)?h:je(y)},Promise.resolve(void 0))}async function xe(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await Ee(e,o,{collector:n});e=re(e,t,r)}));const{eventMapping:o,mappingKey:r}=await $e(e,t.mapping);o?.policy&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await Ee(e,o,{collector:n});e=re(e,t,r)}));let i=t.data&&await Ee(e,t.data,{collector:n});if(o){if(o.ignore)return{event:e,data:i,mapping:o,mappingKey:r,ignore:!0};if(o.name&&(e.name=o.name),o.data){const t=o.data&&await Ee(e,o.data,{collector:n});i=Y(i)&&Y(t)?B(i,t):t}}return{event:e,data:i,mapping:o,mappingKey:r,ignore:!1}}function Ae(e,t){const n=(e,o=[])=>new Proxy(e,{get(e,r){const i=e[r],s=[...o,r];return"function"==typeof i?(...e)=>t(s,e,i):i&&"object"==typeof i?n(i,s):i}});return n(e)}function Pe(e,t){const n=(e,o=[])=>{if(!e||"object"!=typeof e)return e;const r=Array.isArray(e)?[]:{};for(const[i,s]of Object.entries(e)){const e=[...o,i];Array.isArray(r)?r[Number(i)]=t(s,e):r[i]=t(s,e),s&&"object"==typeof s&&"function"!=typeof s&&(Array.isArray(r)?r[Number(i)]=n(s,e):r[i]=n(s,e))}return r};return n(e)}function Te(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=Te();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 Ne(e){const t=String(e),n=t.split("?")[1]||t;return ke(()=>{const e=new URLSearchParams(n),t={};return e.forEach((e,n)=>{const o=n.split(/[[\]]+/).filter(Boolean);let r=t;o.forEach((t,n)=>{const i=n===o.length-1;if(J(r)){const s=parseInt(t,10);i?r[s]=ie(e):(r[s]=r[s]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[s])}else Y(r)&&(i?r[t]=ie(e):(r[t]=r[t]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[t]))})}),t})()}function _e(e){if(!e)return"";const t=[],n=encodeURIComponent;function o(e,r){null!=r&&(J(r)?r.forEach((t,n)=>o(`${e}[${n}]`,t)):Y(r)?Object.entries(r).forEach(([t,n])=>o(`${e}[${t}]`,n)):t.push(`${n(e)}=${n(String(r))}`))}return"object"!=typeof e?n(e):(Object.entries(e).forEach(([e,t])=>o(e,t)),t.join("&"))}function Ce(e){return void 0===e||ee(e,"")?e:JSON.stringify(e)}function Me(e={}){return B({"Content-Type":"application/json; charset=utf-8"},e)}function Re(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function De(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],c=n[i];return r=s?s({fn:e},...o):e(...o),c&&(r=c({fn:e,result:r},...o)),r}}function He(e){return e?{userAgent:e,browser:Ie(e),browserVersion:Ve(e),os:ze(e),osVersion:Fe(e),deviceType:Le(e)}:{}}function Ie(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 Ve(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 ze(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 Fe(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function Le(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 We(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function Be(e){const t=We(e);return new Function("value","mapping","collector",t)}function Ue(e){const t=We(e);return new Function("value","mapping","options",t)}function Je(e){const t=We(e);return new Function("value",t)}var Ke="https://cdn.jsdelivr.net/npm",Ze="dist/walkerOS.json";async function qe(e,t){const n=t?.version||"latest",o=`${Ke}/${e}@${n}`,r=new AbortController,i=setTimeout(()=>r.abort(),t?.timeout||1e4);try{const t=await fetch(`${o}/package.json`,{signal:r.signal});if(!t.ok)throw new Error(`Package "${e}" not found on npm (HTTP ${t.status})`);const i=await t.json(),s=await fetch(`${o}/${Ze}`,{signal:r.signal});if(!s.ok)throw new Error(`walkerOS.json not found at ${Ze} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);const c=await s.json(),a=c.$meta||{};return{packageName:e,version:i.version||n,type:a.type,platform:a.platform,schemas:c.schemas||{},examples:c.examples||{}}}finally{clearTimeout(i)}}async function Ge(e,t){const n=t?.version||"latest",o=`${Ke}/${e}@${n}`,r=new AbortController,i=setTimeout(()=>r.abort(),t?.timeout||1e4);try{const t=await fetch(`${o}/package.json`,{signal:r.signal});if(!t.ok)throw new Error(`Package "${e}" not found on npm (HTTP ${t.status})`);const i=await t.json();let s,c;try{const e=await fetch(`${o}/${Ze}`,{signal:r.signal});if(e.ok){const t=(await e.json()).$meta||{};s=t.type,c=t.platform}}catch{}return{packageName:e,version:i.version||n,description:i.description,type:s,platform:c}}finally{clearTimeout(i)}}function Xe(e){return{content:[{type:"text",text:JSON.stringify(e,null,2)}],structuredContent:e}}function Qe(e){return{content:[{type:"text",text:JSON.stringify({error:e instanceof Error?e.message:"Unknown error"})}],isError:!0}}function Ye(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,i=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},s={};i(s,{Collector:()=>c,Const:()=>$,Context:()=>a,Data:()=>u,Destination:()=>f,ENV_MARKER_PREFIX:()=>M,Elb:()=>l,Flow:()=>p,Hooks:()=>g,Level:()=>m,Lifecycle:()=>j,Logger:()=>d,Mapping:()=>y,On:()=>b,Request:()=>v,Simulation:()=>O,Source:()=>w,Transformer:()=>h,WalkerOS:()=>k,anonymizeIP:()=>S,assign:()=>B,branch:()=>E,castToProperty:()=>je,castValue:()=>ie,clone:()=>ne,createDestination:()=>ce,createEvent:()=>ae,createLogger:()=>be,createMockLogger:()=>Te,createRespond:()=>Ye,debounce:()=>pe,fetchPackageMeta:()=>Ge,fetchPackageSchema:()=>qe,filterValues:()=>we,getBrowser:()=>Ie,getBrowserVersion:()=>Ve,getByPath:()=>oe,getDeviceType:()=>Le,getEvent:()=>ue,getFlowConfig:()=>I,getGrantedConsent:()=>se,getHeaders:()=>Me,getId:()=>fe,getMappingEvent:()=>$e,getMappingValue:()=>Ee,getMarketingParameters:()=>le,getOS:()=>ze,getOSVersion:()=>Fe,getPlatform:()=>L,isArguments:()=>U,isArray:()=>J,isBoolean:()=>K,isCommand:()=>Z,isDefined:()=>q,isElementOrDocument:()=>G,isFunction:()=>X,isNumber:()=>Q,isObject:()=>Y,isPropertyType:()=>ve,isSameType:()=>ee,isString:()=>te,mcpError:()=>Qe,mcpResult:()=>Xe,mergeContractSchemas:()=>x,mockEnv:()=>Ae,packageNameToVariable:()=>D,parseUserAgent:()=>He,processEventMapping:()=>xe,requestToData:()=>Ne,requestToParameter:()=>Ce,resolveContract:()=>A,setByPath:()=>re,throttle:()=>ge,throwError:()=>N,transformData:()=>_e,traverseEnv:()=>Pe,trim:()=>Re,tryCatch:()=>ke,tryCatchAsync:()=>Oe,useHooks:()=>De,wrapCondition:()=>Be,wrapFn:()=>Ue,wrapValidate:()=>Je}),module.exports=(e=s,((e,i,s,c)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let a of o(i))r.call(e,a)||a===s||t(e,a,{get:()=>i[a],enumerable:!(c=n(i,a))||c.enumerable});return e})(t({},"__esModule",{value:!0}),e));var c={},a={},u={},f={},l={},p={},g={},d={};i(d,{Level:()=>m});var m=(e=>(e[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e))(m||{}),y={},b={},h={},v={},w={},j={},k={},O={},$={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function E(e,t){return{event:e,next:t}}function S(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function x(e,t){const n={...e};for(const o of Object.keys(t)){const r=e[o],i=t[o];"required"===o&&Array.isArray(r)&&Array.isArray(i)?n[o]=[...new Set([...r,...i])]:T(r)&&T(i)?n[o]=x(r,i):n[o]=i}return n}function A(e,t,n,o){let r={};for(const i of[e,o]){if(!i)continue;const e=[P(i,"*","*"),P(i,"*",n),P(i,t,"*"),P(i,t,n)];for(const t of e)t&&(r=x(r,t))}return r}function P(e,t,n){const o=e[t];if(!o||"object"!=typeof o)return;const r=o[n];return r&&"object"==typeof r?r:void 0}function T(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function N(e){throw new Error(String(e))}function C(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function _(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}var M="__WALKEROS_ENV:";function R(e,t,n,o){if("string"==typeof e){const r=e.match(/^\$def\.([a-zA-Z_][a-zA-Z0-9_]*)$/);if(r){const e=r[1];return void 0===n[e]&&N(`Definition "${e}" not found`),R(n[e],t,n,o)}let i=e.replace(/\$var\.([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,n)=>{if(void 0!==t[n])return String(t[n]);N(`Variable "${n}" not found`)});return i=i.replace(/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,(e,t,n)=>o?.deferred?void 0!==n?`${M}${t}:${n}`:`${M}${t}`:"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==n?n:void N(`Environment variable "${t}" not found and no default provided`)),i}if(Array.isArray(e))return e.map(e=>R(e,t,n,o));if(null!==e&&"object"==typeof e){const r={};for(const[i,s]of Object.entries(e))r[i]=R(s,t,n,o);return r}return e}function D(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 H(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?D(e):void 0}function I(e,t,n){const o=Object.keys(e.flows);t||(1===o.length?t=o[0]:N(`Multiple flows found (${o.join(", ")}). Please specify a flow.`));const r=e.flows[t];r||N(`Flow "${t}" not found. Available: ${o.join(", ")}`);const i=JSON.parse(JSON.stringify(r));if(i.sources)for(const[t,o]of Object.entries(i.sources)){const s=C(e.variables,r.variables,o.variables),c=_(e.definitions,r.definitions,o.definitions),a=R(o.config,s,c,n),u=H(o.package,o.code,i.packages),f="string"==typeof o.code||"object"==typeof o.code?o.code:void 0,l=u||f;i.sources[t]={package:o.package,config:a,env:o.env,primary:o.primary,variables:o.variables,definitions:o.definitions,next:o.next,code:l}}if(i.destinations)for(const[t,o]of Object.entries(i.destinations)){const s=C(e.variables,r.variables,o.variables),c=_(e.definitions,r.definitions,o.definitions),a=R(o.config,s,c,n),u=H(o.package,o.code,i.packages),f="string"==typeof o.code||"object"==typeof o.code?o.code:void 0,l=u||f;i.destinations[t]={package:o.package,config:a,env:o.env,variables:o.variables,definitions:o.definitions,before:o.before,code:l}}if(i.collector){const t=C(e.variables,r.variables),o=_(e.definitions,r.definitions),s=R(i.collector,t,o,n);i.collector=s}const s=e.contract,c=r.contract;if(s||c){const e=function(...e){const t=new Set;for(const n of e)if(n)for(const e of Object.keys(n)){if(e.startsWith("$"))continue;const o=n[e];if(o&&"object"==typeof o)for(const n of Object.keys(o))"*"!==n&&t.add(`${e}\0${n}`)}const n=new Set,o=new Set;for(const t of e)if(t)for(const e of Object.keys(t)){if(e.startsWith("$")||"*"===e)continue;n.add(e);const r=t[e];if(r&&"object"==typeof r)for(const e of Object.keys(r))"*"!==e&&o.add(e)}for(const e of n)for(const n of o)t.add(`${e}\0${n}`);return[...t].map(e=>e.split("\0"))}(s,c),t={};for(const[n,o]of e){const e=A(s||{},n,o,c);Object.keys(e).length>0&&(t[n]||(t[n]={}),t[n][o]={schema:z(e)})}if(i.transformers)for(const[,e]of Object.entries(i.transformers))F(e.config,t);const n=s?.$tagging??c?.$tagging;if("number"==typeof n){const e=i.collector||{};void 0===e.tagging&&(e.tagging=n),i.collector=e}}return i}var V=new Set(["description","examples","title","$comment"]);function z(e){const t={};for(const[n,o]of Object.entries(e))V.has(n)||(null===o||"object"!=typeof o||Array.isArray(o)?t[n]=o:t[n]=z(o));return t}function F(e,t){if(!e||"object"!=typeof e)return;const n=e;for(const e of Object.keys(n))"$contract"===n[e]?n[e]=t:"object"==typeof n[e]&&null!==n[e]&&F(n[e],t)}function L(e){return void 0!==e.web?"web":void 0!==e.server?"server":void N("Config must have web or server key")}var W={merge:!0,shallow:!0,extend:!0};function B(e,t={},n={}){n={...W,...n};const o=Object.entries(t).reduce((t,[o,r])=>{const i=e[o];return n.merge&&Array.isArray(i)&&Array.isArray(r)?t[o]=r.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||o in e)&&(t[o]=r),t},{});return n.shallow?{...e,...o}:(Object.assign(e,o),e)}function U(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function J(e){return Array.isArray(e)}function K(e){return"boolean"==typeof e}function Z(e){return"walker"===e}function q(e){return void 0!==e}function G(e){return e===document||e instanceof Element}function X(e){return"function"==typeof e}function Q(e){return"number"==typeof e&&!Number.isNaN(e)}function Y(e){return"object"==typeof e&&null!==e&&!J(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ee(e,t){return typeof e==typeof t}function te(e){return"string"==typeof e}function ne(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 o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=ne(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(ne(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 oe(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&J(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=oe(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return q(r)?r:n}function re(e,t,n){if(!Y(e))return e;const o=ne(e),r=t.split(".");let i=o;for(let e=0;e<r.length;e++){const t=r[e];e===r.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return o}function ie(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function se(e,t={},n={}){const o={...t,...n},r={};let i=void 0===e;return Object.keys(o).forEach(t=>{o[t]&&(r[t]=!0,e&&e[t]&&(i=!0))}),!!i&&r}function ce(e,t){const n={...e};return n.config=B(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=B(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=B(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function ae(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=B({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"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${t}-${n}-${o}`,trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,group:n,count:o,version:{source:"2.1.0",tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.name){const[t,n]=e.name.split(" ")??[];t&&n&&(r.entity=t,r.action=n)}return r}function ue(e="entity action",t={}){const n=t.timestamp||(new Date).setHours(0,13,37,0),o={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},r={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return ae({...{"cart view":{data:{currency:"EUR",value:2*o.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",data:{...o.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:o.data.price+r.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{entity:"product",...o,context:{shopping:["checkout",0]},nested:[]},{entity:"product",...r,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",...o,context:{shopping:["complete",0]},nested:[]},{entity:"product",...r,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":{...o,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...o,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...o.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 fe(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function le(e,t={}){const n="clickId",o={},r={utm_campaign:"campaign",utm_content:"content",utm_medium:"medium",utm_source:"source",utm_term:"term",dclid:n,fbclid:n,gclid:n,msclkid:n,ttclid:n,twclid:n,igshid:n,sclid:n};return Object.entries(B(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}function pe(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(c=>{const a=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),c(o))},t),a&&(i=!0,o=e(...s),c(o))})}function ge(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}function de(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function me(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=de(e)):n=e,void 0!==t&&(t instanceof Error?o.error=de(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=de(o.error))):o.value=t),{message:n,context:o}}var ye=(e,t,n,o)=>{const r=`${m[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0,s=0===e?console.error:1===e?console.warn:console.log;i?s(r,t,n):s(r,t)};function be(e={}){return he({level:void 0!==e.level?function(e){return"string"==typeof e?m[e]:e}(e.level):0,handler:e.handler,jsonHandler:e.jsonHandler,scope:[]})}function he(e){const{level:t,handler:n,jsonHandler:o,scope:r}=e,i=(e,o,i)=>{if(e<=t){const t=me(o,i);n?n(e,t.message,t.context,r,ye):ye(e,t.message,t.context,r)}};return{error:(e,t)=>i(0,e,t),warn:(e,t)=>i(1,e,t),info:(e,t)=>i(2,e,t),debug:(e,t)=>i(3,e,t),throw:(e,t)=>{const o=me(e,t);throw n?n(0,o.message,o.context,r,ye):ye(0,o.message,o.context,r),new Error(o.message)},json:e=>{o?o(e):console.log(JSON.stringify(e,null,2))},scope:e=>he({level:t,handler:n,jsonHandler:o,scope:[...r,e]})}}function ve(e){return K(e)||te(e)||Q(e)||!q(e)||J(e)&&e.every(ve)||Y(e)&&Object.values(e).every(ve)}function we(e){return K(e)||te(e)||Q(e)?e:U(e)?we(Array.from(e)):J(e)?e.map(e=>we(e)).filter(e=>void 0!==e):Y(e)?Object.entries(e).reduce((e,[t,n])=>{const o=we(n);return void 0!==o&&(e[t]=o),e},{}):void 0}function je(e){return ve(e)?e:void 0}function ke(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function Oe(e,t,n){return async function(...o){try{return await e(...o)}catch(e){if(!t)return;return await t(e)}finally{await(n?.())}}}async function $e(e,t){const[n,o]=(e.name||"").split(" ");if(!t||!n||!o)return{};let r,i="",s=n,c=o;const a=t=>{if(t)return(t=J(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[s]||(s="*");const u=t[s];return u&&(u[c]||(c="*"),r=a(u[c])),r||(s="*",c="*",r=a(t[s]?.[c])),r&&(i=`${s} ${c}`),{eventMapping:r,mappingKey:i}}async function Ee(e,t={},n={}){if(!q(e))return;const o=Y(e)&&e.consent||n.consent||n.collector?.consent,r=J(t)?t:[t];for(const t of r){const r=await Oe(Se)(e,t,{...n,consent:o});if(q(r))return r}}async function Se(e,t,n={}){const{collector:o,consent:r}=n;return(J(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const c=te(i)?{key:i}:i;if(!Object.keys(c).length)return;const{condition:a,consent:u,fn:f,key:l,loop:p,map:g,set:d,validate:m,value:y}=c;if(a&&!await Oe(a)(e,i,o))return;if(u&&!se(u,r))return y;let b=q(y)?y:e;if(f&&(b=await Oe(f)(e,i,n)),l&&(b=oe(e,l,y)),p){const[t,o]=p,r="this"===t?[e]:await Ee(e,t,n);J(r)&&(b=(await Promise.all(r.map(e=>Ee(e,o,n)))).filter(q))}else g?b=await Object.entries(g).reduce(async(t,[o,r])=>{const i=await t,s=await Ee(e,r,n);return q(s)&&(i[o]=s),i},Promise.resolve({})):d&&(b=await Promise.all(d.map(t=>Se(e,t,n))));m&&!await Oe(m)(b)&&(b=void 0);const h=je(b);return q(h)?h:je(y)},Promise.resolve(void 0))}async function xe(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await Ee(e,o,{collector:n});e=re(e,t,r)}));const{eventMapping:o,mappingKey:r}=await $e(e,t.mapping);o?.policy&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await Ee(e,o,{collector:n});e=re(e,t,r)}));let i=t.data&&await Ee(e,t.data,{collector:n});if(o){if(o.ignore)return{event:e,data:i,mapping:o,mappingKey:r,ignore:!0};if(o.name&&(e.name=o.name),o.data){const t=o.data&&await Ee(e,o.data,{collector:n});i=Y(i)&&Y(t)?B(i,t):t}}return{event:e,data:i,mapping:o,mappingKey:r,ignore:!1}}function Ae(e,t){const n=(e,o=[])=>new Proxy(e,{get(e,r){const i=e[r],s=[...o,r];return"function"==typeof i?(...e)=>t(s,e,i):i&&"object"==typeof i?n(i,s):i}});return n(e)}function Pe(e,t){const n=(e,o=[])=>{if(!e||"object"!=typeof e)return e;const r=Array.isArray(e)?[]:{};for(const[i,s]of Object.entries(e)){const e=[...o,i];Array.isArray(r)?r[Number(i)]=t(s,e):r[i]=t(s,e),s&&"object"==typeof s&&"function"!=typeof s&&(Array.isArray(r)?r[Number(i)]=n(s,e):r[i]=n(s,e))}return r};return n(e)}function Te(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=Te();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 Ne(e){const t=String(e),n=t.split("?")[1]||t;return ke(()=>{const e=new URLSearchParams(n),t={};return e.forEach((e,n)=>{const o=n.split(/[[\]]+/).filter(Boolean);let r=t;o.forEach((t,n)=>{const i=n===o.length-1;if(J(r)){const s=parseInt(t,10);i?r[s]=ie(e):(r[s]=r[s]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[s])}else Y(r)&&(i?r[t]=ie(e):(r[t]=r[t]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[t]))})}),t})()}function Ce(e){if(!e)return"";const t=[],n=encodeURIComponent;function o(e,r){null!=r&&(J(r)?r.forEach((t,n)=>o(`${e}[${n}]`,t)):Y(r)?Object.entries(r).forEach(([t,n])=>o(`${e}[${t}]`,n)):t.push(`${n(e)}=${n(String(r))}`))}return"object"!=typeof e?n(e):(Object.entries(e).forEach(([e,t])=>o(e,t)),t.join("&"))}function _e(e){return void 0===e||ee(e,"")?e:JSON.stringify(e)}function Me(e={}){return B({"Content-Type":"application/json; charset=utf-8"},e)}function Re(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function De(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],c=n[i];return r=s?s({fn:e},...o):e(...o),c&&(r=c({fn:e,result:r},...o)),r}}function He(e){return e?{userAgent:e,browser:Ie(e),browserVersion:Ve(e),os:ze(e),osVersion:Fe(e),deviceType:Le(e)}:{}}function Ie(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 Ve(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 ze(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 Fe(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function Le(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 We(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function Be(e){const t=We(e);return new Function("value","mapping","collector",t)}function Ue(e){const t=We(e);return new Function("value","mapping","options",t)}function Je(e){const t=We(e);return new Function("value",t)}var Ke="https://cdn.jsdelivr.net/npm",Ze="dist/walkerOS.json";async function qe(e,t){const n=t?.version||"latest",o=`${Ke}/${e}@${n}`,r=new AbortController,i=setTimeout(()=>r.abort(),t?.timeout||1e4);try{const t=await fetch(`${o}/package.json`,{signal:r.signal});if(!t.ok)throw new Error(`Package "${e}" not found on npm (HTTP ${t.status})`);const i=await t.json(),s=await fetch(`${o}/${Ze}`,{signal:r.signal});if(!s.ok)throw new Error(`walkerOS.json not found at ${Ze} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);const c=await s.json(),a=c.$meta||{};return{packageName:e,version:i.version||n,type:a.type,platform:a.platform,schemas:c.schemas||{},examples:c.examples||{}}}finally{clearTimeout(i)}}async function Ge(e,t){const n=t?.version||"latest",o=`${Ke}/${e}@${n}`,r=new AbortController,i=setTimeout(()=>r.abort(),t?.timeout||1e4);try{const t=await fetch(`${o}/package.json`,{signal:r.signal});if(!t.ok)throw new Error(`Package "${e}" not found on npm (HTTP ${t.status})`);const i=await t.json();let s,c;try{const e=await fetch(`${o}/${Ze}`,{signal:r.signal});if(e.ok){const t=(await e.json()).$meta||{};s=t.type,c=t.platform}}catch{}return{packageName:e,version:i.version||n,description:i.description,type:s,platform:c}}finally{clearTimeout(i)}}function Xe(e){return{content:[{type:"text",text:JSON.stringify(e,null,2)}],structuredContent:e}}function Qe(e){return{content:[{type:"text",text:JSON.stringify({error:e instanceof Error?e.message:"Unknown error"})}],isError:!0}}function Ye(e){let t=!1;return(n={})=>{t||(t=!0,e(n))}}//# sourceMappingURL=index.js.map
|