@walkeros/core 1.4.0 → 2.0.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/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
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:()=>a,Const:()=>O,Context:()=>c,Data:()=>u,Destination:()=>l,Elb:()=>f,Flow:()=>p,Hooks:()=>d,Level:()=>m,Logger:()=>g,Mapping:()=>y,On:()=>b,Request:()=>h,Schema:()=>w,Source:()=>j,Transformer:()=>v,WalkerOS:()=>k,anonymizeIP:()=>E,assign:()=>D,branch:()=>x,castToProperty:()=>pe,castValue:()=>J,clone:()=>W,createDestination:()=>Q,createEvent:()=>Y,createLogger:()=>ce,createMockLogger:()=>je,debounce:()=>oe,fetchPackageSchema:()=>Be,filterValues:()=>fe,getBrowser:()=>Pe,getBrowserVersion:()=>Te,getByPath:()=>Z,getDeviceType:()=>Ce,getEvent:()=>ee,getFlowConfig:()=>M,getGrantedConsent:()=>X,getHeaders:()=>Ee,getId:()=>te,getMappingEvent:()=>me,getMappingValue:()=>ye,getMarketingParameters:()=>ne,getOS:()=>_e,getOSVersion:()=>Me,getPlatform:()=>C,isArguments:()=>V,isArray:()=>I,isBoolean:()=>L,isCommand:()=>R,isDefined:()=>z,isElementOrDocument:()=>F,isFunction:()=>B,isNumber:()=>H,isObject:()=>K,isPropertyType:()=>le,isSameType:()=>U,isString:()=>q,mockEnv:()=>he,packageNameToVariable:()=>T,parseUserAgent:()=>Ae,processEventMapping:()=>ve,requestToData:()=>ke,requestToParameter:()=>Oe,setByPath:()=>G,throttle:()=>re,throwError:()=>S,transformData:()=>xe,traverseEnv:()=>we,trim:()=>Se,tryCatch:()=>de,tryCatchAsync:()=>ge,useHooks:()=>$e,validateEvent:()=>Ne,validateProperty:()=>De,wrapCondition:()=>Ie,wrapFn:()=>Le,wrapValidate:()=>Re}),module.exports=(e=s,((e,i,s,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of o(i))r.call(e,c)||c===s||t(e,c,{get:()=>i[c],enumerable:!(a=n(i,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={},c={},u={},l={},f={},p={},d={},g={};i(g,{Level:()=>m});var m=(e=>(e[e.ERROR=0]="ERROR",e[e.INFO=1]="INFO",e[e.DEBUG=2]="DEBUG",e))(m||{}),y={},b={},v={},h={},w={},j={},k={},O={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function x(e,t){return{__branch:!0,event:e,next:t}}function E(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function S(e){throw new Error(String(e))}function $(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function A(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function P(e,t,n){if("string"==typeof e){const o=e.match(/^\$def\.([a-zA-Z_][a-zA-Z0-9_]*)$/);if(o){const e=o[1];return void 0===n[e]&&S(`Definition "${e}" not found`),P(n[e],t,n)}let r=e.replace(/\$var\.([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,n)=>{if(void 0!==t[n])return String(t[n]);S(`Variable "${n}" not found`)});return r=r.replace(/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,(e,t,n)=>"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==n?n:void S(`Environment variable "${t}" not found and no default provided`)),r}if(Array.isArray(e))return e.map(e=>P(e,t,n));if(null!==e&&"object"==typeof e){const o={};for(const[r,i]of Object.entries(e))o[r]=P(i,t,n);return o}return e}function T(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 _(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?T(e):void 0}function M(e,t){const n=Object.keys(e.flows);t||(1===n.length?t=n[0]:S(`Multiple flows found (${n.join(", ")}). Please specify a flow.`));const o=e.flows[t];o||S(`Flow "${t}" not found. Available: ${n.join(", ")}`);const r=JSON.parse(JSON.stringify(o));if(r.sources)for(const[t,n]of Object.entries(r.sources)){const i=$(e.variables,o.variables,n.variables),s=A(e.definitions,o.definitions,n.definitions),a=P(n.config,i,s),c=_(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.sources[t]={package:n.package,config:a,env:n.env,primary:n.primary,variables:n.variables,definitions:n.definitions,next:n.next,code:l}}if(r.destinations)for(const[t,n]of Object.entries(r.destinations)){const i=$(e.variables,o.variables,n.variables),s=A(e.definitions,o.definitions,n.definitions),a=P(n.config,i,s),c=_(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.destinations[t]={package:n.package,config:a,env:n.env,variables:n.variables,definitions:n.definitions,before:n.before,code:l}}if(r.collector){const t=$(e.variables,o.variables),n=A(e.definitions,o.definitions),i=P(r.collector,t,n);r.collector=i}return r}function C(e){return void 0!==e.web?"web":void 0!==e.server?"server":void S("Config must have web or server key")}var N={merge:!0,shallow:!0,extend:!0};function D(e,t={},n={}){n={...N,...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 V(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function I(e){return Array.isArray(e)}function L(e){return"boolean"==typeof e}function R(e){return"walker"===e}function z(e){return void 0!==e}function F(e){return e===document||e instanceof Element}function B(e){return"function"==typeof e}function H(e){return"number"==typeof e&&!Number.isNaN(e)}function K(e){return"object"==typeof e&&null!==e&&!I(e)&&"[object Object]"===Object.prototype.toString.call(e)}function U(e,t){return typeof e==typeof t}function q(e){return"string"==typeof e}function W(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]=W(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(W(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 Z(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&I(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=Z(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return z(r)?r:n}function G(e,t,n){if(!K(e))return e;const o=W(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 J(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function X(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 Q(e,t){const n={...e};return n.config=D(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=D(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=D(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Y(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=D({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:"1.3.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 ee(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 Y({...{"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 te(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function ne(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(D(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}function oe(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function re(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}function ie(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function se(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=ie(e)):n=e,void 0!==t&&(t instanceof Error?o.error=ie(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=ie(o.error))):o.value=t),{message:n,context:o}}var ae=(e,t,n,o)=>{const r=`${m[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0;0===e?i?console.error(r,t,n):console.error(r,t):i?console.log(r,t,n):console.log(r,t)};function ce(e={}){return ue({level:void 0!==e.level?function(e){return"string"==typeof e?m[e]:e}(e.level):0,handler:e.handler,scope:[]})}function ue(e){const{level:t,handler:n,scope:o}=e,r=(e,r,i)=>{if(e<=t){const t=se(r,i);n?n(e,t.message,t.context,o,ae):ae(e,t.message,t.context,o)}};return{error:(e,t)=>r(0,e,t),info:(e,t)=>r(1,e,t),debug:(e,t)=>r(2,e,t),throw:(e,t)=>{const r=se(e,t);throw n?n(0,r.message,r.context,o,ae):ae(0,r.message,r.context,o),new Error(r.message)},scope:e=>ue({level:t,handler:n,scope:[...o,e]})}}function le(e){return L(e)||q(e)||H(e)||!z(e)||I(e)&&e.every(le)||K(e)&&Object.values(e).every(le)}function fe(e){return L(e)||q(e)||H(e)?e:V(e)?fe(Array.from(e)):I(e)?e.map(e=>fe(e)).filter(e=>void 0!==e):K(e)?Object.entries(e).reduce((e,[t,n])=>{const o=fe(n);return void 0!==o&&(e[t]=o),e},{}):void 0}function pe(e){return le(e)?e:void 0}function de(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function ge(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 me(e,t){const[n,o]=(e.name||"").split(" ");if(!t||!n||!o)return{};let r,i="",s=n,a=o;const c=t=>{if(t)return(t=I(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[s]||(s="*");const u=t[s];return u&&(u[a]||(a="*"),r=c(u[a])),r||(s="*",a="*",r=c(t[s]?.[a])),r&&(i=`${s} ${a}`),{eventMapping:r,mappingKey:i}}async function ye(e,t={},n={}){if(!z(e))return;const o=K(e)&&e.consent||n.consent||n.collector?.consent,r=I(t)?t:[t];for(const t of r){const r=await ge(be)(e,t,{...n,consent:o});if(z(r))return r}}async function be(e,t,n={}){const{collector:o,consent:r}=n;return(I(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const a=q(i)?{key:i}:i;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:p,map:d,set:g,validate:m,value:y}=a;if(c&&!await ge(c)(e,i,o))return;if(u&&!X(u,r))return y;let b=z(y)?y:e;if(l&&(b=await ge(l)(e,i,n)),f&&(b=Z(e,f,y)),p){const[t,o]=p,r="this"===t?[e]:await ye(e,t,n);I(r)&&(b=(await Promise.all(r.map(e=>ye(e,o,n)))).filter(z))}else d?b=await Object.entries(d).reduce(async(t,[o,r])=>{const i=await t,s=await ye(e,r,n);return z(s)&&(i[o]=s),i},Promise.resolve({})):g&&(b=await Promise.all(g.map(t=>be(e,t,n))));m&&!await ge(m)(b)&&(b=void 0);const v=pe(b);return z(v)?v:pe(y)},Promise.resolve(void 0))}async function ve(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await ye(e,o,{collector:n});e=G(e,t,r)}));const{eventMapping:o,mappingKey:r}=await me(e,t.mapping);o?.policy&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await ye(e,o,{collector:n});e=G(e,t,r)}));let i=t.data&&await ye(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 ye(e,o.data,{collector:n});i=K(i)&&K(t)?D(i,t):t}}return{event:e,data:i,mapping:o,mappingKey:r,ignore:!1}}function he(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 we(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 je(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=je();return e.push(n),n});return{error:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,scope:n,scopedLoggers:e}}function ke(e){const t=String(e),n=t.split("?")[1]||t;return de(()=>{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(I(r)){const s=parseInt(t,10);i?r[s]=J(e):(r[s]=r[s]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[s])}else K(r)&&(i?r[t]=J(e):(r[t]=r[t]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[t]))})}),t})()}function Oe(e){if(!e)return"";const t=[],n=encodeURIComponent;function o(e,r){null!=r&&(I(r)?r.forEach((t,n)=>o(`${e}[${n}]`,t)):K(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 xe(e){return void 0===e||U(e,"")?e:JSON.stringify(e)}function Ee(e={}){return D({"Content-Type":"application/json; charset=utf-8"},e)}function Se(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function $e(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],a=n[i];return r=s?s({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}function Ae(e){return e?{userAgent:e,browser:Pe(e),browserVersion:Te(e),os:_e(e),osVersion:Me(e),deviceType:Ce(e)}:{}}function Pe(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 Te(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 _e(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 Me(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function Ce(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 Ne(e,t=[]){let n,o,r;U(e,{})||S("Invalid object"),U(e.name,"")?(n=e.name,[o,r]=n.split(" "),o&&r||S("Invalid event name")):U(e.entity,"")&&U(e.action,"")?(o=e.entity,r=e.action,n=`${o} ${r}`):S("Missing or invalid name, entity, or action");const i={name:n,data:{},context:{},custom:{},globals:{},user:{},nested:[],consent:{},id:"",trigger:"",entity:o,action:r,timestamp:0,timing:0,group:"",count:0,version:{source:"",tagging:0},source:{type:"",id:"",previous_id:""}};return[{"*":{"*":{name:{maxLength:255},user:{allowedKeys:["id","device","session"]},consent:{allowedValues:[!0,!1]},timestamp:{min:0},timing:{min:0},count:{min:0},version:{allowedKeys:["source","tagging"]},source:{allowedKeys:["type","id","previous_id"]}}}}].concat(t).reduce((e,t)=>["*",o].reduce((e,n)=>["*",r].reduce((e,o)=>{const r=t[n]?.[o];return r?e.concat([r]):e},e),e),[]).reduce((t,n)=>{const o=Object.keys(n).filter(e=>{const t=n[e];return!0===t?.required});return[...Object.keys(e),...o].reduce((t,o)=>{const r=n[o];let i=e[o];return r&&(i=de(De,e=>{S(String(e))})(t,o,i,r)),U(i,t[o])&&(t[o]=i),t},t)},i)}function De(e,t,n,o){if(o.validate&&(n=de(o.validate,e=>{S(String(e))})(n,t,e)),o.required&&void 0===n&&S("Missing required property"),U(n,""))o.maxLength&&n.length>o.maxLength&&(o.strict&&S("Value exceeds maxLength"),n=n.substring(0,o.maxLength));else if(U(n,1))U(o.min,1)&&n<o.min?(o.strict&&S("Value below min"),n=o.min):U(o.max,1)&&n>o.max&&(o.strict&&S("Value exceeds max"),n=o.max);else if(U(n,{})){if(o.schema){const e=o.schema;Object.keys(e).reduce((t,n)=>{const o=e[n];let r=t[n];return o&&(o.type&&typeof r!==o.type&&S(`Type doesn't match (${n})`),r=de(De,e=>{S(String(e))})(t,n,r,o)),r},n)}for(const e of Object.keys(n))o.allowedKeys&&!o.allowedKeys.includes(e)&&(o.strict&&S("Key not allowed"),delete n[e])}return n}function Ve(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function Ie(e){const t=Ve(e);return new Function("value","mapping","collector",t)}function Le(e){const t=Ve(e);return new Function("value","mapping","options",t)}function Re(e){const t=Ve(e);return new Function("value",t)}var ze="https://cdn.jsdelivr.net/npm",Fe="dist/walkerOS.json";async function Be(e,t){const n=t?.version||"latest",o=`${ze}/${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}/${Fe}`,{signal:r.signal});if(!s.ok)throw new Error(`walkerOS.json not found at ${Fe} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);const a=await s.json(),c=a.$meta||{};return{packageName:e,version:i.version||n,type:c.type,platform:c.platform,schemas:a.schemas||{},examples:a.examples||{}}}finally{clearTimeout(i)}}//# 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:()=>a,Const:()=>O,Context:()=>c,Data:()=>u,Destination:()=>l,Elb:()=>f,Flow:()=>p,Hooks:()=>d,Level:()=>m,Logger:()=>g,Mapping:()=>y,On:()=>b,Request:()=>h,Schema:()=>w,Source:()=>j,Transformer:()=>v,WalkerOS:()=>k,anonymizeIP:()=>E,assign:()=>D,branch:()=>x,castToProperty:()=>pe,castValue:()=>J,clone:()=>W,createDestination:()=>Q,createEvent:()=>Y,createLogger:()=>ce,createMockLogger:()=>je,debounce:()=>oe,fetchPackageSchema:()=>Be,filterValues:()=>fe,getBrowser:()=>Pe,getBrowserVersion:()=>Te,getByPath:()=>Z,getDeviceType:()=>Ce,getEvent:()=>ee,getFlowConfig:()=>M,getGrantedConsent:()=>X,getHeaders:()=>Ee,getId:()=>te,getMappingEvent:()=>me,getMappingValue:()=>ye,getMarketingParameters:()=>ne,getOS:()=>_e,getOSVersion:()=>Me,getPlatform:()=>C,isArguments:()=>V,isArray:()=>I,isBoolean:()=>L,isCommand:()=>R,isDefined:()=>z,isElementOrDocument:()=>F,isFunction:()=>B,isNumber:()=>H,isObject:()=>K,isPropertyType:()=>le,isSameType:()=>U,isString:()=>q,mockEnv:()=>he,packageNameToVariable:()=>T,parseUserAgent:()=>Ae,processEventMapping:()=>ve,requestToData:()=>ke,requestToParameter:()=>Oe,setByPath:()=>G,throttle:()=>re,throwError:()=>S,transformData:()=>xe,traverseEnv:()=>we,trim:()=>Se,tryCatch:()=>de,tryCatchAsync:()=>ge,useHooks:()=>$e,validateEvent:()=>Ne,validateProperty:()=>De,wrapCondition:()=>Ie,wrapFn:()=>Le,wrapValidate:()=>Re}),module.exports=(e=s,((e,i,s,a)=>{if(i&&"object"==typeof i||"function"==typeof i)for(let c of o(i))r.call(e,c)||c===s||t(e,c,{get:()=>i[c],enumerable:!(a=n(i,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={},c={},u={},l={},f={},p={},d={},g={};i(g,{Level:()=>m});var m=(e=>(e[e.ERROR=0]="ERROR",e[e.INFO=1]="INFO",e[e.DEBUG=2]="DEBUG",e))(m||{}),y={},b={},v={},h={},w={},j={},k={},O={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function x(e,t){return{__branch:!0,event:e,next:t}}function E(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function S(e){throw new Error(String(e))}function $(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function A(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function P(e,t,n){if("string"==typeof e){const o=e.match(/^\$def\.([a-zA-Z_][a-zA-Z0-9_]*)$/);if(o){const e=o[1];return void 0===n[e]&&S(`Definition "${e}" not found`),P(n[e],t,n)}let r=e.replace(/\$var\.([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,n)=>{if(void 0!==t[n])return String(t[n]);S(`Variable "${n}" not found`)});return r=r.replace(/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,(e,t,n)=>"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==n?n:void S(`Environment variable "${t}" not found and no default provided`)),r}if(Array.isArray(e))return e.map(e=>P(e,t,n));if(null!==e&&"object"==typeof e){const o={};for(const[r,i]of Object.entries(e))o[r]=P(i,t,n);return o}return e}function T(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 _(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?T(e):void 0}function M(e,t){const n=Object.keys(e.flows);t||(1===n.length?t=n[0]:S(`Multiple flows found (${n.join(", ")}). Please specify a flow.`));const o=e.flows[t];o||S(`Flow "${t}" not found. Available: ${n.join(", ")}`);const r=JSON.parse(JSON.stringify(o));if(r.sources)for(const[t,n]of Object.entries(r.sources)){const i=$(e.variables,o.variables,n.variables),s=A(e.definitions,o.definitions,n.definitions),a=P(n.config,i,s),c=_(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.sources[t]={package:n.package,config:a,env:n.env,primary:n.primary,variables:n.variables,definitions:n.definitions,next:n.next,code:l}}if(r.destinations)for(const[t,n]of Object.entries(r.destinations)){const i=$(e.variables,o.variables,n.variables),s=A(e.definitions,o.definitions,n.definitions),a=P(n.config,i,s),c=_(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.destinations[t]={package:n.package,config:a,env:n.env,variables:n.variables,definitions:n.definitions,before:n.before,code:l}}if(r.collector){const t=$(e.variables,o.variables),n=A(e.definitions,o.definitions),i=P(r.collector,t,n);r.collector=i}return r}function C(e){return void 0!==e.web?"web":void 0!==e.server?"server":void S("Config must have web or server key")}var N={merge:!0,shallow:!0,extend:!0};function D(e,t={},n={}){n={...N,...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 V(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function I(e){return Array.isArray(e)}function L(e){return"boolean"==typeof e}function R(e){return"walker"===e}function z(e){return void 0!==e}function F(e){return e===document||e instanceof Element}function B(e){return"function"==typeof e}function H(e){return"number"==typeof e&&!Number.isNaN(e)}function K(e){return"object"==typeof e&&null!==e&&!I(e)&&"[object Object]"===Object.prototype.toString.call(e)}function U(e,t){return typeof e==typeof t}function q(e){return"string"==typeof e}function W(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]=W(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(W(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 Z(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&I(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=Z(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return z(r)?r:n}function G(e,t,n){if(!K(e))return e;const o=W(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 J(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function X(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 Q(e,t){const n={...e};return n.config=D(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=D(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=D(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Y(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=D({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.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 ee(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 Y({...{"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 te(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function ne(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(D(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}function oe(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function re(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}function ie(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function se(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=ie(e)):n=e,void 0!==t&&(t instanceof Error?o.error=ie(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=ie(o.error))):o.value=t),{message:n,context:o}}var ae=(e,t,n,o)=>{const r=`${m[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0;0===e?i?console.error(r,t,n):console.error(r,t):i?console.log(r,t,n):console.log(r,t)};function ce(e={}){return ue({level:void 0!==e.level?function(e){return"string"==typeof e?m[e]:e}(e.level):0,handler:e.handler,scope:[]})}function ue(e){const{level:t,handler:n,scope:o}=e,r=(e,r,i)=>{if(e<=t){const t=se(r,i);n?n(e,t.message,t.context,o,ae):ae(e,t.message,t.context,o)}};return{error:(e,t)=>r(0,e,t),info:(e,t)=>r(1,e,t),debug:(e,t)=>r(2,e,t),throw:(e,t)=>{const r=se(e,t);throw n?n(0,r.message,r.context,o,ae):ae(0,r.message,r.context,o),new Error(r.message)},scope:e=>ue({level:t,handler:n,scope:[...o,e]})}}function le(e){return L(e)||q(e)||H(e)||!z(e)||I(e)&&e.every(le)||K(e)&&Object.values(e).every(le)}function fe(e){return L(e)||q(e)||H(e)?e:V(e)?fe(Array.from(e)):I(e)?e.map(e=>fe(e)).filter(e=>void 0!==e):K(e)?Object.entries(e).reduce((e,[t,n])=>{const o=fe(n);return void 0!==o&&(e[t]=o),e},{}):void 0}function pe(e){return le(e)?e:void 0}function de(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function ge(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 me(e,t){const[n,o]=(e.name||"").split(" ");if(!t||!n||!o)return{};let r,i="",s=n,a=o;const c=t=>{if(t)return(t=I(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[s]||(s="*");const u=t[s];return u&&(u[a]||(a="*"),r=c(u[a])),r||(s="*",a="*",r=c(t[s]?.[a])),r&&(i=`${s} ${a}`),{eventMapping:r,mappingKey:i}}async function ye(e,t={},n={}){if(!z(e))return;const o=K(e)&&e.consent||n.consent||n.collector?.consent,r=I(t)?t:[t];for(const t of r){const r=await ge(be)(e,t,{...n,consent:o});if(z(r))return r}}async function be(e,t,n={}){const{collector:o,consent:r}=n;return(I(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const a=q(i)?{key:i}:i;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:p,map:d,set:g,validate:m,value:y}=a;if(c&&!await ge(c)(e,i,o))return;if(u&&!X(u,r))return y;let b=z(y)?y:e;if(l&&(b=await ge(l)(e,i,n)),f&&(b=Z(e,f,y)),p){const[t,o]=p,r="this"===t?[e]:await ye(e,t,n);I(r)&&(b=(await Promise.all(r.map(e=>ye(e,o,n)))).filter(z))}else d?b=await Object.entries(d).reduce(async(t,[o,r])=>{const i=await t,s=await ye(e,r,n);return z(s)&&(i[o]=s),i},Promise.resolve({})):g&&(b=await Promise.all(g.map(t=>be(e,t,n))));m&&!await ge(m)(b)&&(b=void 0);const v=pe(b);return z(v)?v:pe(y)},Promise.resolve(void 0))}async function ve(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await ye(e,o,{collector:n});e=G(e,t,r)}));const{eventMapping:o,mappingKey:r}=await me(e,t.mapping);o?.policy&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await ye(e,o,{collector:n});e=G(e,t,r)}));let i=t.data&&await ye(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 ye(e,o.data,{collector:n});i=K(i)&&K(t)?D(i,t):t}}return{event:e,data:i,mapping:o,mappingKey:r,ignore:!1}}function he(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 we(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 je(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=je();return e.push(n),n});return{error:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,scope:n,scopedLoggers:e}}function ke(e){const t=String(e),n=t.split("?")[1]||t;return de(()=>{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(I(r)){const s=parseInt(t,10);i?r[s]=J(e):(r[s]=r[s]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[s])}else K(r)&&(i?r[t]=J(e):(r[t]=r[t]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[t]))})}),t})()}function Oe(e){if(!e)return"";const t=[],n=encodeURIComponent;function o(e,r){null!=r&&(I(r)?r.forEach((t,n)=>o(`${e}[${n}]`,t)):K(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 xe(e){return void 0===e||U(e,"")?e:JSON.stringify(e)}function Ee(e={}){return D({"Content-Type":"application/json; charset=utf-8"},e)}function Se(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function $e(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],a=n[i];return r=s?s({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}function Ae(e){return e?{userAgent:e,browser:Pe(e),browserVersion:Te(e),os:_e(e),osVersion:Me(e),deviceType:Ce(e)}:{}}function Pe(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 Te(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 _e(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 Me(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function Ce(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 Ne(e,t=[]){let n,o,r;U(e,{})||S("Invalid object"),U(e.name,"")?(n=e.name,[o,r]=n.split(" "),o&&r||S("Invalid event name")):U(e.entity,"")&&U(e.action,"")?(o=e.entity,r=e.action,n=`${o} ${r}`):S("Missing or invalid name, entity, or action");const i={name:n,data:{},context:{},custom:{},globals:{},user:{},nested:[],consent:{},id:"",trigger:"",entity:o,action:r,timestamp:0,timing:0,group:"",count:0,version:{source:"",tagging:0},source:{type:"",id:"",previous_id:""}};return[{"*":{"*":{name:{maxLength:255},user:{allowedKeys:["id","device","session"]},consent:{allowedValues:[!0,!1]},timestamp:{min:0},timing:{min:0},count:{min:0},version:{allowedKeys:["source","tagging"]},source:{allowedKeys:["type","id","previous_id"]}}}}].concat(t).reduce((e,t)=>["*",o].reduce((e,n)=>["*",r].reduce((e,o)=>{const r=t[n]?.[o];return r?e.concat([r]):e},e),e),[]).reduce((t,n)=>{const o=Object.keys(n).filter(e=>{const t=n[e];return!0===t?.required});return[...Object.keys(e),...o].reduce((t,o)=>{const r=n[o];let i=e[o];return r&&(i=de(De,e=>{S(String(e))})(t,o,i,r)),U(i,t[o])&&(t[o]=i),t},t)},i)}function De(e,t,n,o){if(o.validate&&(n=de(o.validate,e=>{S(String(e))})(n,t,e)),o.required&&void 0===n&&S("Missing required property"),U(n,""))o.maxLength&&n.length>o.maxLength&&(o.strict&&S("Value exceeds maxLength"),n=n.substring(0,o.maxLength));else if(U(n,1))U(o.min,1)&&n<o.min?(o.strict&&S("Value below min"),n=o.min):U(o.max,1)&&n>o.max&&(o.strict&&S("Value exceeds max"),n=o.max);else if(U(n,{})){if(o.schema){const e=o.schema;Object.keys(e).reduce((t,n)=>{const o=e[n];let r=t[n];return o&&(o.type&&typeof r!==o.type&&S(`Type doesn't match (${n})`),r=de(De,e=>{S(String(e))})(t,n,r,o)),r},n)}for(const e of Object.keys(n))o.allowedKeys&&!o.allowedKeys.includes(e)&&(o.strict&&S("Key not allowed"),delete n[e])}return n}function Ve(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function Ie(e){const t=Ve(e);return new Function("value","mapping","collector",t)}function Le(e){const t=Ve(e);return new Function("value","mapping","options",t)}function Re(e){const t=Ve(e);return new Function("value",t)}var ze="https://cdn.jsdelivr.net/npm",Fe="dist/walkerOS.json";async function Be(e,t){const n=t?.version||"latest",o=`${ze}/${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}/${Fe}`,{signal:r.signal});if(!s.ok)throw new Error(`walkerOS.json not found at ${Fe} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);const a=await s.json(),c=a.$meta||{};return{packageName:e,version:i.version||n,type:c.type,platform:c.platform,schemas:a.schemas||{},examples:a.examples||{}}}finally{clearTimeout(i)}}//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=Object.defineProperty,t={},n={},o={},r={},i={},s={},a={},c={};((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})(c,{Level:()=>u});var u=(e=>(e[e.ERROR=0]="ERROR",e[e.INFO=1]="INFO",e[e.DEBUG=2]="DEBUG",e))(u||{}),l={},f={},p={},d={},g={},m={},y={},b={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function h(e,t){return{__branch:!0,event:e,next:t}}function v(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function w(e){throw new Error(String(e))}function j(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function x(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function k(e,t,n){if("string"==typeof e){const o=e.match(/^\$def\.([a-zA-Z_][a-zA-Z0-9_]*)$/);if(o){const e=o[1];return void 0===n[e]&&w(`Definition "${e}" not found`),k(n[e],t,n)}let r=e.replace(/\$var\.([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,n)=>{if(void 0!==t[n])return String(t[n]);w(`Variable "${n}" not found`)});return r=r.replace(/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,(e,t,n)=>"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==n?n:void w(`Environment variable "${t}" not found and no default provided`)),r}if(Array.isArray(e))return e.map(e=>k(e,t,n));if(null!==e&&"object"==typeof e){const o={};for(const[r,i]of Object.entries(e))o[r]=k(i,t,n);return o}return e}function O(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 S(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?O(e):void 0}function $(e,t){const n=Object.keys(e.flows);t||(1===n.length?t=n[0]:w(`Multiple flows found (${n.join(", ")}). Please specify a flow.`));const o=e.flows[t];o||w(`Flow "${t}" not found. Available: ${n.join(", ")}`);const r=JSON.parse(JSON.stringify(o));if(r.sources)for(const[t,n]of Object.entries(r.sources)){const i=j(e.variables,o.variables,n.variables),s=x(e.definitions,o.definitions,n.definitions),a=k(n.config,i,s),c=S(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.sources[t]={package:n.package,config:a,env:n.env,primary:n.primary,variables:n.variables,definitions:n.definitions,next:n.next,code:l}}if(r.destinations)for(const[t,n]of Object.entries(r.destinations)){const i=j(e.variables,o.variables,n.variables),s=x(e.definitions,o.definitions,n.definitions),a=k(n.config,i,s),c=S(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.destinations[t]={package:n.package,config:a,env:n.env,variables:n.variables,definitions:n.definitions,before:n.before,code:l}}if(r.collector){const t=j(e.variables,o.variables),n=x(e.definitions,o.definitions),i=k(r.collector,t,n);r.collector=i}return r}function E(e){return void 0!==e.web?"web":void 0!==e.server?"server":void w("Config must have web or server key")}var A={merge:!0,shallow:!0,extend:!0};function P(e,t={},n={}){n={...A,...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 T(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function _(e){return Array.isArray(e)}function N(e){return"boolean"==typeof e}function M(e){return"walker"===e}function C(e){return void 0!==e}function R(e){return e===document||e instanceof Element}function I(e){return"function"==typeof e}function z(e){return"number"==typeof e&&!Number.isNaN(e)}function D(e){return"object"==typeof e&&null!==e&&!_(e)&&"[object Object]"===Object.prototype.toString.call(e)}function L(e,t){return typeof e==typeof t}function F(e){return"string"==typeof e}function K(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]=K(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(K(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 V(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&_(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=V(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return C(r)?r:n}function U(e,t,n){if(!D(e))return e;const o=K(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 H(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function W(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 B(e,t){const n={...e};return n.config=P(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=P(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=P(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Z(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=P({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:"1.3.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 q(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 Z({...{"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 J(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function G(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(P(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}function X(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function Q(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}function Y(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function ee(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=Y(e)):n=e,void 0!==t&&(t instanceof Error?o.error=Y(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=Y(o.error))):o.value=t),{message:n,context:o}}var te=(e,t,n,o)=>{const r=`${u[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0;0===e?i?console.error(r,t,n):console.error(r,t):i?console.log(r,t,n):console.log(r,t)};function ne(e={}){return oe({level:void 0!==e.level?function(e){return"string"==typeof e?u[e]:e}(e.level):0,handler:e.handler,scope:[]})}function oe(e){const{level:t,handler:n,scope:o}=e,r=(e,r,i)=>{if(e<=t){const t=ee(r,i);n?n(e,t.message,t.context,o,te):te(e,t.message,t.context,o)}};return{error:(e,t)=>r(0,e,t),info:(e,t)=>r(1,e,t),debug:(e,t)=>r(2,e,t),throw:(e,t)=>{const r=ee(e,t);throw n?n(0,r.message,r.context,o,te):te(0,r.message,r.context,o),new Error(r.message)},scope:e=>oe({level:t,handler:n,scope:[...o,e]})}}function re(e){return N(e)||F(e)||z(e)||!C(e)||_(e)&&e.every(re)||D(e)&&Object.values(e).every(re)}function ie(e){return N(e)||F(e)||z(e)?e:T(e)?ie(Array.from(e)):_(e)?e.map(e=>ie(e)).filter(e=>void 0!==e):D(e)?Object.entries(e).reduce((e,[t,n])=>{const o=ie(n);return void 0!==o&&(e[t]=o),e},{}):void 0}function se(e){return re(e)?e:void 0}function ae(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function ce(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 ue(e,t){const[n,o]=(e.name||"").split(" ");if(!t||!n||!o)return{};let r,i="",s=n,a=o;const c=t=>{if(t)return(t=_(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[s]||(s="*");const u=t[s];return u&&(u[a]||(a="*"),r=c(u[a])),r||(s="*",a="*",r=c(t[s]?.[a])),r&&(i=`${s} ${a}`),{eventMapping:r,mappingKey:i}}async function le(e,t={},n={}){if(!C(e))return;const o=D(e)&&e.consent||n.consent||n.collector?.consent,r=_(t)?t:[t];for(const t of r){const r=await ce(fe)(e,t,{...n,consent:o});if(C(r))return r}}async function fe(e,t,n={}){const{collector:o,consent:r}=n;return(_(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const a=F(i)?{key:i}:i;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:p,map:d,set:g,validate:m,value:y}=a;if(c&&!await ce(c)(e,i,o))return;if(u&&!W(u,r))return y;let b=C(y)?y:e;if(l&&(b=await ce(l)(e,i,n)),f&&(b=V(e,f,y)),p){const[t,o]=p,r="this"===t?[e]:await le(e,t,n);_(r)&&(b=(await Promise.all(r.map(e=>le(e,o,n)))).filter(C))}else d?b=await Object.entries(d).reduce(async(t,[o,r])=>{const i=await t,s=await le(e,r,n);return C(s)&&(i[o]=s),i},Promise.resolve({})):g&&(b=await Promise.all(g.map(t=>fe(e,t,n))));m&&!await ce(m)(b)&&(b=void 0);const h=se(b);return C(h)?h:se(y)},Promise.resolve(void 0))}async function pe(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await le(e,o,{collector:n});e=U(e,t,r)}));const{eventMapping:o,mappingKey:r}=await ue(e,t.mapping);o?.policy&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await le(e,o,{collector:n});e=U(e,t,r)}));let i=t.data&&await le(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 le(e,o.data,{collector:n});i=D(i)&&D(t)?P(i,t):t}}return{event:e,data:i,mapping:o,mappingKey:r,ignore:!1}}function de(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 ge(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 me(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=me();return e.push(n),n});return{error:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,scope:n,scopedLoggers:e}}function ye(e){const t=String(e),n=t.split("?")[1]||t;return ae(()=>{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(_(r)){const s=parseInt(t,10);i?r[s]=H(e):(r[s]=r[s]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[s])}else D(r)&&(i?r[t]=H(e):(r[t]=r[t]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[t]))})}),t})()}function be(e){if(!e)return"";const t=[],n=encodeURIComponent;function o(e,r){null!=r&&(_(r)?r.forEach((t,n)=>o(`${e}[${n}]`,t)):D(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 he(e){return void 0===e||L(e,"")?e:JSON.stringify(e)}function ve(e={}){return P({"Content-Type":"application/json; charset=utf-8"},e)}function we(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function je(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],a=n[i];return r=s?s({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}function xe(e){return e?{userAgent:e,browser:ke(e),browserVersion:Oe(e),os:Se(e),osVersion:$e(e),deviceType:Ee(e)}:{}}function ke(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 Oe(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 Se(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 $e(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function Ee(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 Ae(e,t=[]){let n,o,r;L(e,{})||w("Invalid object"),L(e.name,"")?(n=e.name,[o,r]=n.split(" "),o&&r||w("Invalid event name")):L(e.entity,"")&&L(e.action,"")?(o=e.entity,r=e.action,n=`${o} ${r}`):w("Missing or invalid name, entity, or action");const i={name:n,data:{},context:{},custom:{},globals:{},user:{},nested:[],consent:{},id:"",trigger:"",entity:o,action:r,timestamp:0,timing:0,group:"",count:0,version:{source:"",tagging:0},source:{type:"",id:"",previous_id:""}};return[{"*":{"*":{name:{maxLength:255},user:{allowedKeys:["id","device","session"]},consent:{allowedValues:[!0,!1]},timestamp:{min:0},timing:{min:0},count:{min:0},version:{allowedKeys:["source","tagging"]},source:{allowedKeys:["type","id","previous_id"]}}}}].concat(t).reduce((e,t)=>["*",o].reduce((e,n)=>["*",r].reduce((e,o)=>{const r=t[n]?.[o];return r?e.concat([r]):e},e),e),[]).reduce((t,n)=>{const o=Object.keys(n).filter(e=>{const t=n[e];return!0===t?.required});return[...Object.keys(e),...o].reduce((t,o)=>{const r=n[o];let i=e[o];return r&&(i=ae(Pe,e=>{w(String(e))})(t,o,i,r)),L(i,t[o])&&(t[o]=i),t},t)},i)}function Pe(e,t,n,o){if(o.validate&&(n=ae(o.validate,e=>{w(String(e))})(n,t,e)),o.required&&void 0===n&&w("Missing required property"),L(n,""))o.maxLength&&n.length>o.maxLength&&(o.strict&&w("Value exceeds maxLength"),n=n.substring(0,o.maxLength));else if(L(n,1))L(o.min,1)&&n<o.min?(o.strict&&w("Value below min"),n=o.min):L(o.max,1)&&n>o.max&&(o.strict&&w("Value exceeds max"),n=o.max);else if(L(n,{})){if(o.schema){const e=o.schema;Object.keys(e).reduce((t,n)=>{const o=e[n];let r=t[n];return o&&(o.type&&typeof r!==o.type&&w(`Type doesn't match (${n})`),r=ae(Pe,e=>{w(String(e))})(t,n,r,o)),r},n)}for(const e of Object.keys(n))o.allowedKeys&&!o.allowedKeys.includes(e)&&(o.strict&&w("Key not allowed"),delete n[e])}return n}function Te(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function _e(e){const t=Te(e);return new Function("value","mapping","collector",t)}function Ne(e){const t=Te(e);return new Function("value","mapping","options",t)}function Me(e){const t=Te(e);return new Function("value",t)}var Ce="dist/walkerOS.json";async function Re(e,t){const n=t?.version||"latest",o=`https://cdn.jsdelivr.net/npm/${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}/${Ce}`,{signal:r.signal});if(!s.ok)throw new Error(`walkerOS.json not found at ${Ce} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);const a=await s.json(),c=a.$meta||{};return{packageName:e,version:i.version||n,type:c.type,platform:c.platform,schemas:a.schemas||{},examples:a.examples||{}}}finally{clearTimeout(i)}}export{t as Collector,b as Const,n as Context,o as Data,r as Destination,i as Elb,s as Flow,a as Hooks,u as Level,c as Logger,l as Mapping,f as On,d as Request,g as Schema,m as Source,p as Transformer,y as WalkerOS,v as anonymizeIP,P as assign,h as branch,se as castToProperty,H as castValue,K as clone,B as createDestination,Z as createEvent,ne as createLogger,me as createMockLogger,X as debounce,Re as fetchPackageSchema,ie as filterValues,ke as getBrowser,Oe as getBrowserVersion,V as getByPath,Ee as getDeviceType,q as getEvent,$ as getFlowConfig,W as getGrantedConsent,ve as getHeaders,J as getId,ue as getMappingEvent,le as getMappingValue,G as getMarketingParameters,Se as getOS,$e as getOSVersion,E as getPlatform,T as isArguments,_ as isArray,N as isBoolean,M as isCommand,C as isDefined,R as isElementOrDocument,I as isFunction,z as isNumber,D as isObject,re as isPropertyType,L as isSameType,F as isString,de as mockEnv,O as packageNameToVariable,xe as parseUserAgent,pe as processEventMapping,ye as requestToData,be as requestToParameter,U as setByPath,Q as throttle,w as throwError,he as transformData,ge as traverseEnv,we as trim,ae as tryCatch,ce as tryCatchAsync,je as useHooks,Ae as validateEvent,Pe as validateProperty,_e as wrapCondition,Ne as wrapFn,Me as wrapValidate};//# sourceMappingURL=index.mjs.map
|
|
1
|
+
var e=Object.defineProperty,t={},n={},o={},r={},i={},s={},a={},c={};((t,n)=>{for(var o in n)e(t,o,{get:n[o],enumerable:!0})})(c,{Level:()=>u});var u=(e=>(e[e.ERROR=0]="ERROR",e[e.INFO=1]="INFO",e[e.DEBUG=2]="DEBUG",e))(u||{}),l={},f={},p={},d={},g={},m={},y={},b={Utils:{Storage:{Local:"local",Session:"session",Cookie:"cookie"}}};function h(e,t){return{__branch:!0,event:e,next:t}}function v(e){return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(e)?e.replace(/\.\d+$/,".0"):""}function w(e){throw new Error(String(e))}function j(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function x(...e){const t={};for(const n of e)n&&Object.assign(t,n);return t}function k(e,t,n){if("string"==typeof e){const o=e.match(/^\$def\.([a-zA-Z_][a-zA-Z0-9_]*)$/);if(o){const e=o[1];return void 0===n[e]&&w(`Definition "${e}" not found`),k(n[e],t,n)}let r=e.replace(/\$var\.([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,n)=>{if(void 0!==t[n])return String(t[n]);w(`Variable "${n}" not found`)});return r=r.replace(/\$env\.([a-zA-Z_][a-zA-Z0-9_]*)(?::([^"}\s]*))?/g,(e,t,n)=>"undefined"!=typeof process&&void 0!==process.env?.[t]?process.env[t]:void 0!==n?n:void w(`Environment variable "${t}" not found and no default provided`)),r}if(Array.isArray(e))return e.map(e=>k(e,t,n));if(null!==e&&"object"==typeof e){const o={};for(const[r,i]of Object.entries(e))o[r]=k(i,t,n);return o}return e}function O(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 S(e,t,n){if(t)return t;if(!e||!n)return;return n[e]?O(e):void 0}function $(e,t){const n=Object.keys(e.flows);t||(1===n.length?t=n[0]:w(`Multiple flows found (${n.join(", ")}). Please specify a flow.`));const o=e.flows[t];o||w(`Flow "${t}" not found. Available: ${n.join(", ")}`);const r=JSON.parse(JSON.stringify(o));if(r.sources)for(const[t,n]of Object.entries(r.sources)){const i=j(e.variables,o.variables,n.variables),s=x(e.definitions,o.definitions,n.definitions),a=k(n.config,i,s),c=S(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.sources[t]={package:n.package,config:a,env:n.env,primary:n.primary,variables:n.variables,definitions:n.definitions,next:n.next,code:l}}if(r.destinations)for(const[t,n]of Object.entries(r.destinations)){const i=j(e.variables,o.variables,n.variables),s=x(e.definitions,o.definitions,n.definitions),a=k(n.config,i,s),c=S(n.package,n.code,r.packages),u="string"==typeof n.code||"object"==typeof n.code?n.code:void 0,l=c||u;r.destinations[t]={package:n.package,config:a,env:n.env,variables:n.variables,definitions:n.definitions,before:n.before,code:l}}if(r.collector){const t=j(e.variables,o.variables),n=x(e.definitions,o.definitions),i=k(r.collector,t,n);r.collector=i}return r}function E(e){return void 0!==e.web?"web":void 0!==e.server?"server":void w("Config must have web or server key")}var A={merge:!0,shallow:!0,extend:!0};function P(e,t={},n={}){n={...A,...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 T(e){return"[object Arguments]"===Object.prototype.toString.call(e)}function _(e){return Array.isArray(e)}function N(e){return"boolean"==typeof e}function M(e){return"walker"===e}function C(e){return void 0!==e}function R(e){return e===document||e instanceof Element}function I(e){return"function"==typeof e}function z(e){return"number"==typeof e&&!Number.isNaN(e)}function D(e){return"object"==typeof e&&null!==e&&!_(e)&&"[object Object]"===Object.prototype.toString.call(e)}function L(e,t){return typeof e==typeof t}function F(e){return"string"==typeof e}function K(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]=K(e[o],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(K(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 V(e,t="",n){const o=t.split(".");let r=e;for(let e=0;e<o.length;e++){const t=o[e];if("*"===t&&_(r)){const t=o.slice(e+1).join("."),i=[];for(const e of r){const o=V(e,t,n);i.push(o)}return i}if(r=r instanceof Object?r[t]:void 0,!r)break}return C(r)?r:n}function U(e,t,n){if(!D(e))return e;const o=K(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 H(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}function W(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 B(e,t){const n={...e};return n.config=P(e.config,t,{shallow:!0,merge:!0,extend:!0}),e.config.settings&&t.settings&&(n.config.settings=P(e.config.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e.config.mapping&&t.mapping&&(n.config.mapping=P(e.config.mapping,t.mapping,{shallow:!0,merge:!0,extend:!0})),n}function Z(e={}){const t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,r=P({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.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 q(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 Z({...{"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 J(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function G(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(P(r,t)).forEach(([t,r])=>{const i=e.searchParams.get(t);i&&(r===n&&(r=t,o[n]=t),o[r]=i)}),o}function X(e,t=1e3,n=!1){let o,r=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;r&&clearTimeout(r),r=setTimeout(()=>{r=null,n&&!i||(o=e(...s),a(o))},t),c&&(i=!0,o=e(...s),a(o))})}function Q(e,t=1e3){let n=null;return function(...o){if(null===n)return n=setTimeout(()=>{n=null},t),e(...o)}}function Y(e){return{message:e.message,name:e.name,stack:e.stack,cause:e.cause}}function ee(e,t){let n,o={};return e instanceof Error?(n=e.message,o.error=Y(e)):n=e,void 0!==t&&(t instanceof Error?o.error=Y(t):"object"==typeof t&&null!==t?(o={...o,...t},"error"in o&&o.error instanceof Error&&(o.error=Y(o.error))):o.value=t),{message:n,context:o}}var te=(e,t,n,o)=>{const r=`${u[e]}${o.length>0?` [${o.join(":")}]`:""}`,i=Object.keys(n).length>0;0===e?i?console.error(r,t,n):console.error(r,t):i?console.log(r,t,n):console.log(r,t)};function ne(e={}){return oe({level:void 0!==e.level?function(e){return"string"==typeof e?u[e]:e}(e.level):0,handler:e.handler,scope:[]})}function oe(e){const{level:t,handler:n,scope:o}=e,r=(e,r,i)=>{if(e<=t){const t=ee(r,i);n?n(e,t.message,t.context,o,te):te(e,t.message,t.context,o)}};return{error:(e,t)=>r(0,e,t),info:(e,t)=>r(1,e,t),debug:(e,t)=>r(2,e,t),throw:(e,t)=>{const r=ee(e,t);throw n?n(0,r.message,r.context,o,te):te(0,r.message,r.context,o),new Error(r.message)},scope:e=>oe({level:t,handler:n,scope:[...o,e]})}}function re(e){return N(e)||F(e)||z(e)||!C(e)||_(e)&&e.every(re)||D(e)&&Object.values(e).every(re)}function ie(e){return N(e)||F(e)||z(e)?e:T(e)?ie(Array.from(e)):_(e)?e.map(e=>ie(e)).filter(e=>void 0!==e):D(e)?Object.entries(e).reduce((e,[t,n])=>{const o=ie(n);return void 0!==o&&(e[t]=o),e},{}):void 0}function se(e){return re(e)?e:void 0}function ae(e,t,n){return function(...o){try{return e(...o)}catch(e){if(!t)return;return t(e)}finally{n?.()}}}function ce(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 ue(e,t){const[n,o]=(e.name||"").split(" ");if(!t||!n||!o)return{};let r,i="",s=n,a=o;const c=t=>{if(t)return(t=_(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[s]||(s="*");const u=t[s];return u&&(u[a]||(a="*"),r=c(u[a])),r||(s="*",a="*",r=c(t[s]?.[a])),r&&(i=`${s} ${a}`),{eventMapping:r,mappingKey:i}}async function le(e,t={},n={}){if(!C(e))return;const o=D(e)&&e.consent||n.consent||n.collector?.consent,r=_(t)?t:[t];for(const t of r){const r=await ce(fe)(e,t,{...n,consent:o});if(C(r))return r}}async function fe(e,t,n={}){const{collector:o,consent:r}=n;return(_(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const a=F(i)?{key:i}:i;if(!Object.keys(a).length)return;const{condition:c,consent:u,fn:l,key:f,loop:p,map:d,set:g,validate:m,value:y}=a;if(c&&!await ce(c)(e,i,o))return;if(u&&!W(u,r))return y;let b=C(y)?y:e;if(l&&(b=await ce(l)(e,i,n)),f&&(b=V(e,f,y)),p){const[t,o]=p,r="this"===t?[e]:await le(e,t,n);_(r)&&(b=(await Promise.all(r.map(e=>le(e,o,n)))).filter(C))}else d?b=await Object.entries(d).reduce(async(t,[o,r])=>{const i=await t,s=await le(e,r,n);return C(s)&&(i[o]=s),i},Promise.resolve({})):g&&(b=await Promise.all(g.map(t=>fe(e,t,n))));m&&!await ce(m)(b)&&(b=void 0);const h=se(b);return C(h)?h:se(y)},Promise.resolve(void 0))}async function pe(e,t,n){t.policy&&await Promise.all(Object.entries(t.policy).map(async([t,o])=>{const r=await le(e,o,{collector:n});e=U(e,t,r)}));const{eventMapping:o,mappingKey:r}=await ue(e,t.mapping);o?.policy&&await Promise.all(Object.entries(o.policy).map(async([t,o])=>{const r=await le(e,o,{collector:n});e=U(e,t,r)}));let i=t.data&&await le(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 le(e,o.data,{collector:n});i=D(i)&&D(t)?P(i,t):t}}return{event:e,data:i,mapping:o,mappingKey:r,ignore:!1}}function de(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 ge(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 me(){const e=[],t=jest.fn(e=>{const t=e instanceof Error?e.message:e;throw new Error(t)}),n=jest.fn(t=>{const n=me();return e.push(n),n});return{error:jest.fn(),info:jest.fn(),debug:jest.fn(),throw:t,scope:n,scopedLoggers:e}}function ye(e){const t=String(e),n=t.split("?")[1]||t;return ae(()=>{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(_(r)){const s=parseInt(t,10);i?r[s]=H(e):(r[s]=r[s]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[s])}else D(r)&&(i?r[t]=H(e):(r[t]=r[t]||(isNaN(parseInt(o[n+1],10))?{}:[]),r=r[t]))})}),t})()}function be(e){if(!e)return"";const t=[],n=encodeURIComponent;function o(e,r){null!=r&&(_(r)?r.forEach((t,n)=>o(`${e}[${n}]`,t)):D(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 he(e){return void 0===e||L(e,"")?e:JSON.stringify(e)}function ve(e={}){return P({"Content-Type":"application/json; charset=utf-8"},e)}function we(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function je(e,t,n){return function(...o){let r;const i="post"+t,s=n["pre"+t],a=n[i];return r=s?s({fn:e},...o):e(...o),a&&(r=a({fn:e,result:r},...o)),r}}function xe(e){return e?{userAgent:e,browser:ke(e),browserVersion:Oe(e),os:Se(e),osVersion:$e(e),deviceType:Ee(e)}:{}}function ke(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 Oe(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 Se(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 $e(e){const t=e.match(/(?:Windows NT|Mac OS X|Android|iPhone OS) ([0-9._]+)/);return t?t[1].replace(/_/g,"."):void 0}function Ee(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 Ae(e,t=[]){let n,o,r;L(e,{})||w("Invalid object"),L(e.name,"")?(n=e.name,[o,r]=n.split(" "),o&&r||w("Invalid event name")):L(e.entity,"")&&L(e.action,"")?(o=e.entity,r=e.action,n=`${o} ${r}`):w("Missing or invalid name, entity, or action");const i={name:n,data:{},context:{},custom:{},globals:{},user:{},nested:[],consent:{},id:"",trigger:"",entity:o,action:r,timestamp:0,timing:0,group:"",count:0,version:{source:"",tagging:0},source:{type:"",id:"",previous_id:""}};return[{"*":{"*":{name:{maxLength:255},user:{allowedKeys:["id","device","session"]},consent:{allowedValues:[!0,!1]},timestamp:{min:0},timing:{min:0},count:{min:0},version:{allowedKeys:["source","tagging"]},source:{allowedKeys:["type","id","previous_id"]}}}}].concat(t).reduce((e,t)=>["*",o].reduce((e,n)=>["*",r].reduce((e,o)=>{const r=t[n]?.[o];return r?e.concat([r]):e},e),e),[]).reduce((t,n)=>{const o=Object.keys(n).filter(e=>{const t=n[e];return!0===t?.required});return[...Object.keys(e),...o].reduce((t,o)=>{const r=n[o];let i=e[o];return r&&(i=ae(Pe,e=>{w(String(e))})(t,o,i,r)),L(i,t[o])&&(t[o]=i),t},t)},i)}function Pe(e,t,n,o){if(o.validate&&(n=ae(o.validate,e=>{w(String(e))})(n,t,e)),o.required&&void 0===n&&w("Missing required property"),L(n,""))o.maxLength&&n.length>o.maxLength&&(o.strict&&w("Value exceeds maxLength"),n=n.substring(0,o.maxLength));else if(L(n,1))L(o.min,1)&&n<o.min?(o.strict&&w("Value below min"),n=o.min):L(o.max,1)&&n>o.max&&(o.strict&&w("Value exceeds max"),n=o.max);else if(L(n,{})){if(o.schema){const e=o.schema;Object.keys(e).reduce((t,n)=>{const o=e[n];let r=t[n];return o&&(o.type&&typeof r!==o.type&&w(`Type doesn't match (${n})`),r=ae(Pe,e=>{w(String(e))})(t,n,r,o)),r},n)}for(const e of Object.keys(n))o.allowedKeys&&!o.allowedKeys.includes(e)&&(o.strict&&w("Key not allowed"),delete n[e])}return n}function Te(e){return function(e){return/\breturn\b/.test(e)}(e)?e:`return ${e}`}function _e(e){const t=Te(e);return new Function("value","mapping","collector",t)}function Ne(e){const t=Te(e);return new Function("value","mapping","options",t)}function Me(e){const t=Te(e);return new Function("value",t)}var Ce="dist/walkerOS.json";async function Re(e,t){const n=t?.version||"latest",o=`https://cdn.jsdelivr.net/npm/${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}/${Ce}`,{signal:r.signal});if(!s.ok)throw new Error(`walkerOS.json not found at ${Ce} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);const a=await s.json(),c=a.$meta||{};return{packageName:e,version:i.version||n,type:c.type,platform:c.platform,schemas:a.schemas||{},examples:a.examples||{}}}finally{clearTimeout(i)}}export{t as Collector,b as Const,n as Context,o as Data,r as Destination,i as Elb,s as Flow,a as Hooks,u as Level,c as Logger,l as Mapping,f as On,d as Request,g as Schema,m as Source,p as Transformer,y as WalkerOS,v as anonymizeIP,P as assign,h as branch,se as castToProperty,H as castValue,K as clone,B as createDestination,Z as createEvent,ne as createLogger,me as createMockLogger,X as debounce,Re as fetchPackageSchema,ie as filterValues,ke as getBrowser,Oe as getBrowserVersion,V as getByPath,Ee as getDeviceType,q as getEvent,$ as getFlowConfig,W as getGrantedConsent,ve as getHeaders,J as getId,ue as getMappingEvent,le as getMappingValue,G as getMarketingParameters,Se as getOS,$e as getOSVersion,E as getPlatform,T as isArguments,_ as isArray,N as isBoolean,M as isCommand,C as isDefined,R as isElementOrDocument,I as isFunction,z as isNumber,D as isObject,re as isPropertyType,L as isSameType,F as isString,de as mockEnv,O as packageNameToVariable,xe as parseUserAgent,pe as processEventMapping,ye as requestToData,be as requestToParameter,U as setByPath,Q as throttle,w as throwError,he as transformData,ge as traverseEnv,we as trim,ae as tryCatch,ce as tryCatchAsync,je as useHooks,Ae as validateEvent,Pe as validateProperty,_e as wrapCondition,Ne as wrapFn,Me as wrapValidate};//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED