@walkeros/walker.js 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +239 -131
- package/dist/index.es5.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/walker.js +1 -1
- package/package.json +6 -6
package/dist/walker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var e,t,n=Object.getOwnPropertyNames,r=(e={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.8",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return t||(0,e[n(e)[0]])((t={exports:{}}).exports,t),t.exports}),o={Storage:{Local:"local",Session:"session",Cookie:"cookie"}},i={merge:!0,shallow:!0,extend:!0};function s(e,t={},n={}){n={...i,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function a(e){return Array.isArray(e)}function c(e){return void 0!==e}function u(e){return"object"==typeof e&&null!==e&&!a(e)&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return"string"==typeof e}function d(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=d(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(d(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 f(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&a(o)){const t=r.slice(e+1).join("."),i=[];for(const e of o){const r=f(e,t,n);i.push(r)}return i}if(o=o instanceof Object?o[t]:void 0,!o)break}return c(o)?o:n}function g(e,t={},n={}){const r={...t,...n},o={};let i=void 0===e;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(i=!0))}),!!i&&o}function p(e,t){return async(n,r)=>{const o=s(r,t,{shallow:!0,merge:!0,extend:!0});return r.settings&&t.settings&&(o.settings=s(r.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e(n,o)}}var{version:m}=r();function y(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function b(e){return function(e){return"boolean"==typeof e}(e)||l(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!c(e)||a(e)&&e.every(b)||u(e)&&Object.values(e).every(b)}function h(e){return b(e)?e:void 0}function w(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function v(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function k(e,t={},n={}){var r;if(!c(e))return;const o=u(e)&&e.consent||n.consent||(null==(r=n.collector)?void 0:r.consent),i=a(t)?t:[t];for(const t of i){const r=await v(S)(e,t,{...n,consent:o});if(c(r))return r}}async function S(e,t,n={}){const{collector:r,consent:o}=n;return(a(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const u=l(i)?{key:i}:i;if(!Object.keys(u).length)return;const{condition:d,consent:p,fn:m,key:y,loop:b,map:w,set:_,validate:x,value:j}=u;if(d&&!await v(d)(e,i,r))return;if(p&&!g(p,o))return j;let O=c(j)?j:e;if(m&&(O=await v(m)(e,i,n)),y&&(O=f(e,y,j)),b){const[t,r]=b,o="this"===t?[e]:await k(e,t,n);a(o)&&(O=(await Promise.all(o.map(e=>k(e,r,n)))).filter(c))}else w?O=await Object.entries(w).reduce(async(t,[r,o])=>{const i=await t,s=await k(e,o,n);return c(s)&&(i[r]=s),i},Promise.resolve({})):_&&(O=await Promise.all(_.map(t=>S(e,t,n))));x&&!await v(x)(O)&&(O=void 0);const E=h(O);return c(E)?E:h(j)},Promise.resolve(void 0))}function _(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function x(e,t,n){return function(...r){let o;const i="post"+t,s=n["pre"+t],a=n[i];return o=s?s({fn:e},...r):e(...r),a&&(o=a({fn:e,result:o},...r)),o}}function j(e,t){return(e.getAttribute(t)||"").trim()}function O(e){const t={};return function(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}(e).forEach(e=>{const[n,r]=function(e){const[t,n]=e.split(/:(.+)/,2);return[_(t||""),_(n||"")]}(e);n&&("true"===r?t[n]=!0:"false"===r?t[n]=!1:r&&/^\d+$/.test(r)?t[n]=parseInt(r,10):r&&/^\d+\.\d+$/.test(r)?t[n]=parseFloat(r):t[n]=r||!0)}),t}var E=function(){const e=window;(e.elbLayer=e.elbLayer||[]).push(arguments)};function L(e){const t=getComputedStyle(e);if("none"===t.display)return!1;if("visible"!==t.visibility)return!1;if(t.opacity&&Number(t.opacity)<.1)return!1;let n;const r=window.innerHeight,o=e.getBoundingClientRect(),i=o.height,s=o.y,a=s+i,c={x:o.x+e.offsetWidth/2,y:o.y+e.offsetHeight/2};if(i<=r){if(e.offsetWidth+o.width===0||e.offsetHeight+o.height===0)return!1;if(c.x<0)return!1;if(c.x>(document.documentElement.clientWidth||window.innerWidth))return!1;if(c.y<0)return!1;if(c.y>(document.documentElement.clientHeight||window.innerHeight))return!1;n=document.elementFromPoint(c.x,c.y)}else{const e=r/2;if(s<0&&a<e)return!1;if(a>r&&s>e)return!1;n=document.elementFromPoint(c.x,r/2)}if(n)do{if(n===e)return!0}while(n=n.parentElement);return!1}function A(e={}){const{cb:t,consent:n,collector:r,storage:o}=e,i=(null==r?void 0:r.push)||E;if(!n)return C((o?I:N)(e),r,t);{const r=function(e,t){let n;return(r,o)=>{if(c(n)&&n===(null==r?void 0:r.group))return;n=null==r?void 0:r.group;let i=()=>N(e);if(e.consent){g((a(e.consent)?e.consent:[e.consent]).reduce((e,t)=>({...e,[t]:!0}),{}),o)&&(i=()=>I(e))}return C(i(),r,t)}}(e,t);i("walker on","consent",(a(n)?n:[n]).reduce((e,t)=>({...e,[t]:r}),{}))}}function C(e,t,n){return!1===n?e:(n||(n=q),n(e,t,q))}var $,P,q=(e,t)=>{const n=(null==t?void 0:t.push)||E,r={};return e.id&&(r.session=e.id),e.storage&&e.device&&(r.device=e.device),n("walker user",r),e.isStart&&n({event:"session start",data:e}),e};function R(e,t=o.Storage.Session){var n;function r(e){try{return JSON.parse(e||"")}catch(t){let n=1,r="";return e&&(n=0,r=e),{e:n,v:r}}}let i,s;switch(t){case o.Storage.Cookie:i=decodeURIComponent((null==(n=document.cookie.split("; ").find(t=>t.startsWith(e+"=")))?void 0:n.split("=")[1])||"");break;case o.Storage.Local:s=r(window.localStorage.getItem(e));break;case o.Storage.Session:s=r(window.sessionStorage.getItem(e))}return s&&(i=s.v,0!=s.e&&s.e<Date.now()&&(function(e,t=o.Storage.Session){switch(t){case o.Storage.Cookie:D(e,"",0,t);break;case o.Storage.Local:window.localStorage.removeItem(e);break;case o.Storage.Session:window.sessionStorage.removeItem(e)}}(e,t),i="")),function(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}(i||"")}function D(e,t,n=30,r=o.Storage.Session,i){const s={e:Date.now()+6e4*n,v:String(t)},a=JSON.stringify(s);switch(r){case o.Storage.Cookie:{t="object"==typeof t?JSON.stringify(t):t;let r=`${e}=${encodeURIComponent(t)}; max-age=${60*n}; path=/; SameSite=Lax; secure`;i&&(r+="; domain="+i),document.cookie=r;break}case o.Storage.Local:window.localStorage.setItem(e,a);break;case o.Storage.Session:window.sessionStorage.setItem(e,a)}return R(e,r)}function I(e={}){const t=Date.now(),{length:n=30,deviceKey:r="elbDeviceId",deviceStorage:o="local",deviceAge:i=30,sessionKey:s="elbSessionId",sessionStorage:a="local",pulse:c=!1}=e,u=N(e);let l=!1;const d=w((e,t,n)=>{let r=R(e,n);return r||(r=y(8),D(e,r,1440*t,n)),String(r)})(r,i,o),f=w((e,r)=>{const o=JSON.parse(String(R(e,r)));return c||(o.isNew=!1,u.marketing&&(Object.assign(o,u),l=!0),l||o.updated+6e4*n<t?(delete o.id,delete o.referrer,o.start=t,o.count++,o.runs=1,l=!0):o.runs++),o},()=>{l=!0})(s,a)||{},g={id:y(12),start:t,isNew:!0,count:1,runs:1},p=Object.assign(g,u,f,{device:d},{isStart:l,storage:!0,updated:t},e.data);return D(s,JSON.stringify(p),2*n,a),p}function N(e={}){let t=e.isStart||!1;const n={isStart:t,storage:!1};if(!1===e.isStart)return n;if(!t){const[e]=performance.getEntriesByType("navigation");if("navigate"!==e.type)return n}const r=new URL(e.url||window.location.href),o=e.referrer||document.referrer,i=o&&new URL(o).hostname,a=function(e,t={}){const n="clickId",r={},o={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(s(o,t)).forEach(([t,o])=>{const i=e.searchParams.get(t);i&&(o===n&&(o=t,r[n]=t),r[o]=i)}),r}(r,e.parameters);if(Object.keys(a).length&&(a.marketing||(a.marketing=!0),t=!0),!t){const n=e.domains||[];n.push(r.hostname),t=!n.includes(i)}return t?Object.assign({isStart:t,storage:!1,start:Date.now(),id:y(12),referrer:i},a,e.data):n}var W,X,M=Object.getOwnPropertyNames,H=($={"package.json"(e,t){t.exports={name:"@walkeros/collector",description:"Unified platform-agnostic collector for walkerOS",version:"0.0.8",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{"@walkeros/core":"0.0.8"},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/collector"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","collector","event processing"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return P||(0,$[M($)[0]])((P={exports:{}}).exports,P),P.exports}),U={Action:"action",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",User:"user",Walker:"walker"},T=U;function G(e,t,n,r){let o=n||[];if(n||(o=e.on[t]||[],Object.values(e.destinations).forEach(e=>{var n;const r=null==(n=e.config.on)?void 0:n[t];r&&(o=o.concat(r))})),o.length)switch(t){case T.Consent:!function(e,t,n){const r=n||e.consent;t.forEach(t=>{Object.keys(r).filter(e=>e in t).forEach(n=>{w(t[n])(e,r)})})}(e,o,r);break;case T.Ready:case T.Run:s=o,(i=e).allowed&&s.forEach(e=>{w(e)(i)});break;case T.Session:!function(e,t){e.session&&t.forEach(t=>{w(t)(e,e.session)})}(e,o)}var i,s}async function F(e,t,n,r){let o;switch(t){case T.Config:u(n)&&s(e.config,n,{shallow:!1});break;case T.Consent:u(n)&&(o=await async function(e,t){const{consent:n}=e;let r=!1;const o={};return Object.entries(t).forEach(([e,t])=>{const n=!!t;o[e]=n,r=r||n}),e.consent=s(n,o),G(e,"consent",void 0,o),r?V(e):z({ok:!0})}(e,n));break;case T.Custom:u(n)&&(e.custom=s(e.custom,n));break;case T.Destination:u(n)&&function(e){return"function"==typeof e}(n.push)&&(o=await async function(e,t,n){const r=n||t.config||{init:!1},o={...t,config:r};let i=r.id;if(!i)do{i=y(4)}while(e.destinations[i]);return e.destinations[i]=o,!1!==r.queue&&(o.queue=[...e.queue]),V(e,void 0,{[i]:o})}(e,n,r));break;case T.Globals:u(n)&&(e.globals=s(e.globals,n));break;case T.On:l(n)&&function(e,t,n){const r=e.on,o=r[t]||[],i=a(n)?n:[n];i.forEach(e=>{o.push(e)}),r[t]=o,G(e,t,i)}(e,n,r);break;case T.Run:o=await async function(e,t){e.allowed=!0,e.count=0,e.group=y(),e.timing=Date.now(),t&&(t.consent&&(e.consent=s(e.consent,t.consent)),t.user&&(e.user=s(e.user,t.user)),t.globals&&(e.globals=s(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=s(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queue=[]}),e.queue=[],e.round++;const n=await V(e);return G(e,"run"),n}(e,n);break;case T.User:u(n)&&s(e.user,n,{shallow:!1})}return o||{ok:!0,successful:[],queued:[],failed:[]}}function K(e,t,n){return x(async(r,o,i)=>await v(async()=>{if("string"==typeof r&&r.startsWith("walker ")){const n=r.replace("walker ","");return await t(e,n,o,i)}{const s=n("string"==typeof r?{event:r}:r),{event:a,command:c}=function(e,t,n={}){const r=function(e){return typeof e==typeof""}(t)?{event:t,...n}:{...n,...t||{}};if(!r.event)throw new Error("Event name is required");const[o,i]=r.event.split(" ");if(!o||!i)throw new Error("Event name is invalid");if(o===U.Walker)return{command:i};++e.count;const{timestamp:s=Date.now(),group:a=e.group,count:c=e.count}=r,{event:u=`${o} ${i}`,data:l={},context:d={},globals:f=e.globals,custom:g={},user:p=e.user,nested:m=[],consent:y=e.consent,id:b=`${s}-${a}-${c}`,trigger:h="",entity:w=o,action:v=i,timing:k=0,version:S={source:e.version,tagging:e.config.tagging||0},source:_={type:"collector",id:"",previous_id:""}}=r;return{event:{event:u,data:l,context:d,globals:f,custom:g,user:p,nested:m,consent:y,id:b,trigger:h,entity:w,action:v,timestamp:s,timing:k,group:a,count:c,version:S,source:_}}}(e,s.event,s);return c?await t(e,c,o,i):await V(e,a)}},()=>z({ok:!1}))(),"Push",e.hooks)}async function V(e,t,n){const{allowed:r,consent:o,globals:i,user:a}=e;if(!r)return z({ok:!1});t&&e.queue.push(t),n||(n=e.destinations);const c=await Promise.all(Object.entries(n||{}).map(async([n,r])=>{let c=(r.queue||[]).map(e=>({...e,consent:o}));if(r.queue=[],t){let n=d(t);await Promise.all(Object.entries(r.config.policy||[]).map(async([r,o])=>{const i=await k(t,o,{collector:e});n=function(e,t,n){const r=d(e),o=t.split(".");let i=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return r}(n,r,i)})),c.push(n)}if(!c.length)return{id:n,destination:r,skipped:!0};const u=[],l=c.filter(e=>{const t=g(r.config.consent,o,e.consent);return!t||(e.consent=t,u.push(e),!1)});if(r.queue.concat(l),!u.length)return{id:n,destination:r,queue:c};if(!await v(B)(e,r))return{id:n,destination:r,queue:c};let f=!1;return r.dlq||(r.dlq=[]),await Promise.all(u.map(async t=>(t.globals=s(i,t.globals),t.user=s(a,t.user),await v(J,n=>(e.config.onError&&e.config.onError(n,e),f=!0,r.dlq.push([t,n]),!1))(e,r,t),t))),{id:n,destination:r,error:f}})),u=[],l=[],f=[];for(const e of c){if(e.skipped)continue;const t=e.destination,n={id:e.id,destination:t};e.error?f.push(n):e.queue&&e.queue.length?(t.queue=(t.queue||[]).concat(e.queue),l.push(n)):u.push(n)}return z({ok:!f.length,event:t,successful:u,queued:l,failed:f})}async function B(e,t){if(t.init&&!t.config.init){const n={collector:e,config:t.config,wrap:Q(t,e)},r=await x(t.init,"DestinationInit",e.hooks)(n);if(!1===r)return r;t.config={...r||t.config,init:!0}}return!0}async function J(e,t,n){var r;const{config:o}=t,{eventMapping:i,mappingKey:l}=await async function(e,t){var n;const[r,o]=(e.event||"").split(" ");if(!t||!r||!o)return{};let i,s="",c=r,u=o;const l=t=>{if(t)return(t=a(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[c]||(c="*");const d=t[c];return d&&(d[u]||(u="*"),i=l(d[u])),i||(c="*",u="*",i=l(null==(n=t[c])?void 0:n[u])),i&&(s=`${c} ${u}`),{eventMapping:i,mappingKey:s}}(n,o.mapping);let d=o.data&&await k(n,o.data,{collector:e});if(i){if(i.ignore)return!1;if(i.name&&(n.event=i.name),i.data){const t=i.data&&await k(n,i.data,{collector:e});d=u(d)&&u(t)?s(d,t):t}}const f={collector:e,config:o,data:d,mapping:i,wrap:Q(t,e)};if((null==i?void 0:i.batch)&&t.pushBatch){const s=i.batched||{key:l||"",events:[],data:[]};s.events.push(n),c(d)&&s.data.push(d),i.batchFn=i.batchFn||function(e,t=1e3,n=!1){let r,o=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;o&&clearTimeout(o),o=setTimeout(()=>{o=null,n&&!i||(r=e(...s),a(r))},t),c&&(i=!0,r=e(...s),a(r))})}((e,t)=>{const n={collector:t,config:o,data:d,mapping:i,wrap:Q(e,t)};x(e.pushBatch,"DestinationPushBatch",t.hooks)(s,n),s.events=[],s.data=[]},i.batch),i.batched=s,null==(r=i.batchFn)||r.call(i,t,e)}else await x(t.push,"DestinationPush",e.hooks)(n,f);return!0}function z(e){var t;return s({ok:!(null==(t=null==e?void 0:e.failed)?void 0:t.length),successful:[],queued:[],failed:[]},e)}function Y(e){return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,config:u(n.config)?n.config:{}},e),{})}function Q(e,t){var n;const r=e.config.wrapper||{},o=null!=(n=e.config.dryRun)?n:null==t?void 0:t.config.dryRun;return function(e="unknown",{dryRun:t=!1,mockReturn:n,onCall:r}={}){return function(o,i){return"function"!=typeof i?i:(...s)=>(r&&r({name:o,type:e},s),t?n:i(...s))}}(e.type||"unknown",{...r,...c(o)&&{dryRun:o}})}async function Z(e,t,n){var r,o;const i={disabled:null!=(r=n.disabled)&&r,settings:null!=(o=n.settings)?o:{},onError:n.onError};if(i.disabled)return{};const s=await v(t)(e,i);if(!s||!s.source)return{};const a=i.type||s.source.type||"",c=n.id||`${a}_${y(5)}`;return s.source&&s.elb&&(s.source.elb=s.elb),e.sources||(e.sources={}),e.sources[c]={type:a,settings:i.settings,mapping:void 0,elb:s.elb},s}async function ee(e={}){const t=function(e){const{version:t}=H(),n=s({dryRun:!1,globalsStatic:{},sessionStatic:{},tagging:0,verbose:!1,onLog:r,run:!0,destinations:{},consent:{},user:{},globals:{},custom:{}},e,{merge:!1,extend:!1});function r(e,t){!function(e,t=!1){t&&console.dir(e,{depth:4})}({message:e},t||n.verbose)}n.onLog=r;const o={...n.globalsStatic,...n.globals},i={allowed:!1,config:n,consent:n.consent||{},count:0,custom:n.custom||{},destinations:Y(n.destinations||{}),globals:o,group:"",hooks:{},on:{},queue:[],round:0,session:void 0,timing:Date.now(),user:n.user||{},version:t,sources:{},push:void 0};return i.push=K(i,F,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),i}(e),{consent:n,user:r,globals:o,custom:i,sources:a}=e;return n&&await t.push("walker consent",n),r&&await t.push("walker user",r),o&&Object.assign(t.globals,o),i&&Object.assign(t.custom,i),a&&await async function(e,t={}){for(const[n,r]of Object.entries(t)){const t={id:n},o=await Z(e,r,t);o.source&&(o.elb&&(o.source.elb=o.elb),e.sources[n]={type:o.source.type,settings:o.source.config.settings,mapping:void 0,elb:o.elb})}}(t,a),t.config.run&&await t.push("walker run"),{collector:t,elb:t.push}}var te=Object.getOwnPropertyNames,ne=(W={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.8",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return X||(0,W[te(W)[0]])((X={exports:{}}).exports,X),X.exports}),re={merge:!0,shallow:!0,extend:!0};function oe(e,t={},n={}){n={...re,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function ie(e){return Array.isArray(e)}function se(e){return e===document||e instanceof Element}function ae(e){return"object"==typeof e&&null!==e&&!ie(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ce(e){return"string"==typeof e}function ue(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}var{version:le}=ne();function de(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function fe(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function ge(e,t,n=!0){return e+(null!=t?(n?"-":"")+t:"")}function pe(e,t,n,r=!0){return ke(j(t,ge(e,n,r))||"").reduce((e,n)=>{let[r,o]=Se(n);if(!r)return e;if(o||(r.endsWith(":")&&(r=r.slice(0,-1)),o=""),o.startsWith("#")){o=o.slice(1);try{let e=t[o];e||"selected"!==o||(e=t.options[t.selectedIndex].text),o=String(e)}catch(e){o=""}}return r.endsWith("[]")?(r=r.slice(0,-2),ie(e[r])||(e[r]=[]),e[r].push(ue(o))):e[r]=ue(o),e},{})}function me(e){const t={};return ke(e).forEach(e=>{const[n,r]=Se(e),[o,i]=_e(n);if(!o)return;let[s,a]=_e(r||"");s=s||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:s,actionParams:a})}),t}function ye(e,t,n){const r=[];let o=t;for(n=0!==Object.keys(n||{}).length?n:void 0;o;){const i=be(e,o,t,n);i&&r.push(i),o=he(e,o)}return r}function be(e,t,n,r){const o=j(t,ge(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${ge(e,o)}],[${ge(e,"")}]`,a=ge(e,T.Link,!1);let c={};const u=[],[l,d]=we(n||t,s,e,o);ve(t,`[${a}]`,t=>{const[n,r]=Se(j(t,a));"parent"===r&&ve(document.body,`[${a}="${n}:child"]`,t=>{i.push(t);const n=be(e,t);n&&u.push(n)})});const f=[];i.forEach(e=>{e.matches(s)&&f.push(e),ve(e,s,e=>f.push(e))});let g={};return f.forEach(t=>{g=oe(g,pe(e,t,"")),c=oe(c,pe(e,t,o))}),c=oe(oe(g,c),l),i.forEach(t=>{ve(t,`[${ge(e)}]`,t=>{const n=be(e,t);n&&u.push(n)})}),{type:o,data:c,context:d,nested:u}}function he(e,t){const n=ge(e,T.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=Se(j(t,n));if("child"===r)return document.querySelector(`[${n}="${e}:parent"]`)}return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof ShadowRoot?t.getRootNode().host:t.parentElement}function we(e,t,n,r){let o={};const i={};let s=e;const a=`[${ge(n,T.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(o=oe(pe(n,s,""),o),o=oe(pe(n,s,r),o)),s.matches(a)&&(Object.entries(pe(n,s,T.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=he(n,s);return[o,i]}function ve(e,t,n){e.querySelectorAll(t).forEach(n)}function ke(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function Se(e){const[t,n]=e.split(/:(.+)/,2);return[fe(t),fe(n)]}function _e(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var xe=new WeakMap,je=new WeakMap;function Oe(e){const t=Date.now();let n=je.get(e);return(!n||t-n.lastChecked>500)&&(n={isVisible:L(e),lastChecked:t},je.set(e,n)),n.isVisible}function Ee(e){if(window.IntersectionObserver)return de(()=>new window.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=e._visibilityState;if(!i)return;const s=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let a=xe.get(o);if((!a||r-a.lastChecked>1e3)&&(a={isLarge:o.offsetHeight>window.innerHeight,lastChecked:r},xe.set(o,a)),t.intersectionRatio>=.5||a.isLarge&&Oe(o)){const t=null==(n=i.elementConfigs)?void 0:n.get(o);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=window.setTimeout(async()=>{var t,n;if(Oe(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o),s=(null==r?void 0:r.prefix)||"data-elb";await We(e,s,o,De.Visible);const a=null==(n=i.elementConfigs)?void 0:n.get(o);(null==a?void 0:a.multiple)?a.blocked=!0:function(e,t){const n=e._visibilityState;if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),xe.delete(t),je.delete(t)}(e,o)}},i.duration);i.timers.set(o,t)}return}}s&&(clearTimeout(s),i.timers.delete(o));const a=null==(r=i.elementConfigs)?void 0:r.get(o);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function Le(e,t,n={multiple:!1}){var r;const o=e._visibilityState;(null==o?void 0:o.observer)&&t&&(o.elementConfigs||(o.elementConfigs=new WeakMap),o.elementConfigs.set(t,{multiple:null!=(r=n.multiple)&&r,blocked:!1,prefix:n.prefix||"data-elb"}),o.observer.observe(t))}function Ae(e){const t=e._visibilityState;t&&(t.observer&&t.observer.disconnect(),delete e._visibilityState)}var Ce,$e=performance.now();function Pe(e,t="data-elb",n,r,o,i,s,a){if(ce(n)&&n.startsWith("walker "))return e.push(n,r);if(ae(n)){const t=n;return t.source||(t.source=qe()),e.push(t)}const[c]=String(ae(n)?n.event:n).split(" ");let u,l=ae(r)?r:{},d={},f=!1;if(se(r)&&(u=r,f=!0),se(i)?u=i:ae(i)&&Object.keys(i).length&&(d=i),u){const e=ye(t,u).find(e=>e.type===c);e&&(f&&(l=e.data),d=e.context)}"page"===c&&(l.id=l.id||window.location.pathname);const g={event:String(n||""),data:l,context:d,nested:s,custom:a,trigger:ce(o)?o:"",timing:Math.round((performance.now()-$e)/10)/100,source:qe()};return e.push(g)}function qe(){return{type:"browser",id:window.location.href,previous_id:document.referrer}}var Re=[],De={Click:"click",Custom:"custom",Hover:"hover",Load:"load",Pulse:"pulse",Scroll:"scroll",Submit:"submit",Visible:"visible",Visibles:"visibles",Wait:"wait"};function Ie(e,t){const{scope:n,prefix:r}=t;var o,i,s;o=e,s=r,(i=n).addEventListener("click",de(function(e){Me.call(this,o,e,s)})),i.addEventListener("submit",de(function(e){He.call(this,o,e,s)}))}function Ne(e,t){const{prefix:n,scope:r}=t;!function(e,t,n){Re=[],Ae(e),function(e,t=1e3){e._visibilityState||(e._visibilityState={observer:Ee(e),timers:new WeakMap,duration:t})}(e,1e3);const r=ge(t,T.Action,!1),o=n||document;o!==document&&Xe(e,o,r,t);o.querySelectorAll(`[${r}]`).forEach(n=>{Xe(e,n,r,t)}),Re.length&&function(e,t,n){const r=(e,t,n)=>e.filter(([e,r])=>{const o=window.scrollY+window.innerHeight,i=e.offsetTop;if(o<i)return!0;const s=e.clientHeight;return!(100*(1-(i+s-o)/(s||1))>=r&&(We(t,n,e,De.Scroll),1))});Ce||(Ce=function(e,t=1e3){let n=null;return function(...r){if(null===n)return n=setTimeout(()=>{n=null},t),e(...r)}}(function(){Re=r.call(t,Re,e,n)}),t.addEventListener("scroll",Ce))}(e,o,t)}(e,n,r)}async function We(e,t,n,r){const o=function(e,t,n=T.Prefix){const r=[],o=function(e,t,n){let r=t;for(;r;){const t=me(j(r,ge(e,T.Action,!1)));if(t[n]||"click"!==n)return t[n];r=he(e,r)}return[]}(n,e,t);return o?(o.forEach(o=>{const i=ke(o.actionParams||"",",").reduce((e,t)=>(e[fe(t)]=!0,e),{}),s=ye(n,e,i);if(!s.length){const t="page",r=`[${ge(n,t)}]`,[o,i]=we(e,r,n,t);s.push({type:t,data:o,nested:[],context:i})}s.forEach(e=>{r.push({entity:e.type,action:o.action,data:e.data,trigger:t,context:e.context,nested:e.nested})})}),r):r}(n,r,t);return Promise.all(o.map(n=>Pe(e,t,{event:`${n.entity} ${n.action}`,...n,trigger:r})))}function Xe(e,t,n,r){const o=j(t,n);o&&Object.values(me(o)).forEach(n=>n.forEach(n=>{switch(n.trigger){case De.Hover:o=e,i=r,t.addEventListener("mouseenter",de(function(e){e.target instanceof Element&&We(o,i,e.target,De.Hover)}));break;case De.Load:!function(e,t,n){We(e,n,t,De.Load)}(e,t,r);break;case De.Pulse:!function(e,t,n="",r){setInterval(()=>{document.hidden||We(e,r,t,De.Pulse)},parseInt(n||"")||15e3)}(e,t,n.triggerParams,r);break;case De.Scroll:!function(e,t=""){const n=parseInt(t||"")||50;n<0||n>100||Re.push([e,n])}(t,n.triggerParams);break;case De.Visible:Le(e,t,{prefix:r});break;case De.Visibles:Le(e,t,{multiple:!0,prefix:r});break;case De.Wait:!function(e,t,n="",r){setTimeout(()=>We(e,r,t,De.Wait),parseInt(n||"")||15e3)}(e,t,n.triggerParams,r)}var o,i}))}function Me(e,t,n){We(e,n,t.target,De.Click)}function He(e,t,n){t.target&&We(e,n,t.target,De.Submit)}function Ue(e,t,n,r){const o=[];let i=!0;n.forEach(e=>{const t=Ge(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(Array.isArray(t)&&0===t.length)return;if(Array.isArray(t)&&1===t.length&&!t[0])return;const s=t[0],a=!ae(s)&&ce(s)&&s.startsWith("walker ");if(ae(s)){if("object"==typeof s&&0===Object.keys(s).length)return}else{const e=Array.from(t);if(!ce(e[0])||""===e[0].trim())return;const n="walker run";i&&e[0]===n&&(i=!1)}(r&&a||!r&&!a)&&o.push(t)}),o.forEach(n=>{Te(e,t,n)})}function Te(e,t="data-elb",n){de(()=>{if(Array.isArray(n)){const[r,...o]=n;if(!r||ce(r)&&""===r.trim())return;if(ce(r)&&r.startsWith("walker "))return void e.push(r,o[0]);Pe(e,t,r,...o)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return;e.push(n)}},()=>{})()}function Ge(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}function Fe(e={}){return{prefix:"data-elb",pageview:!0,session:!0,elb:"elb",elbLayer:"elbLayer",scope:document,...e}}var Ke=async(e,t)=>{try{const n={...t,settings:Fe(t.settings)},r={type:"browser",config:n,collector:e,destroy(){Ae(e)}};if(!1!==n.settings.elbLayer&&function(e,t={}){const n=t.name||"elbLayer";window[n]||(window[n]=[]);const r=window[n];r.push=function(...n){if(Ge(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return Te(e,t.prefix,r),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{Te(e,t.prefix,n)}),r},Array.isArray(r)&&r.length>0&&function(e,t="data-elb",n){Ue(e,t,n,!0),Ue(e,t,n,!1),n.length=0}(e,t.prefix,r)}(e,{name:ce(n.settings.elbLayer)?n.settings.elbLayer:"elbLayer",prefix:n.settings.prefix}),n.settings.session){const t="boolean"==typeof n.settings.session?{}:n.settings.session;!function(e,t={}){const n=t.config||{},r=oe(e.config.sessionStatic||{},t.data||{});var o,i,s;(o=A,i="SessionStart",s=e.hooks,function(...e){let t;const n="post"+i,r=s["pre"+i],a=s[n];return t=r?r({fn:o},...e):o(...e),a&&(t=a({fn:o,result:t},...e)),t})({...n,cb:(e,t,r)=>{let o;const i=n;return!1!==i.cb&&i.cb?o=i.cb(e,t,r):!1!==i.cb&&(o=r(e,t,r)),t&&(t.session=e,G(t,"session")),o},data:r,collector:e})}(e,{config:t})}await async function(e,t,n){const r=()=>{if(e(t,n),null==t?void 0:t.on)try{G(t,"ready")}catch(e){}};"loading"!==document.readyState?r():document.addEventListener("DOMContentLoaded",r)}(Ie,e,n.settings);const o=e=>{if(Ne(e,n.settings),n.settings.pageview){const[t,r]=function(e,t){const n=window.location,r="page",o=t===document?document.body:t,[i,s]=we(o,`[${ge(e,r)}]`,e,r);return i.domain=n.hostname,i.title=document.title,i.referrer=document.referrer,n.search&&(i.search=n.search),n.hash&&(i.hash=n.hash),[i,s]}(n.settings.prefix||"data-elb",n.settings.scope);Pe(e,"page view",t,De.Load,r)}};await e.push("walker on","run",o);const i=e._destroy;e._destroy=()=>{var e;null==(e=r.destroy)||e.call(r),i&&i()};const s=(...t)=>{const[r,o,i,s,a,c]=t;return Pe(e,n.settings.prefix,r,o,i,s,a,c)};return ce(n.settings.elb)&&(window[n.settings.elb]=s),{source:r,elb:s}}catch(e){throw e}},Ve=Object.defineProperty,Be=(e,t)=>{for(var n in t)Ve(e,n,{get:t[n],enumerable:!0})},Je=!1;function ze(e,t={},n){if(t.filter&&!0===w(()=>t.filter(n),()=>!1)())return;const r=u(o=n)&&l(o.event)?o:a(o)&&o.length>=2?Ye(o):null!=(i=o)&&"object"==typeof i&&"length"in i&&"number"==typeof i.length&&i.length>0?Ye(Array.from(o)):null;var o,i;if(!r)return;const s={event:`${t.prefix||"dataLayer"} ${r.event}`,data:r,context:{},globals:{},custom:{},consent:{},nested:[],user:{},id:Math.random().toString(36).substring(2,15),trigger:"",entity:"",action:"",timestamp:Date.now(),timing:0,group:"",count:0,version:{source:"1.0.0",tagging:2},source:{type:"dataLayer",id:"",previous_id:""}};w(()=>e.push(s),()=>{})()}function Ye(e){const[t,n,r]=e;if(!l(t))return null;let o,i={};switch(t){case"consent":if(!l(n)||e.length<3)return null;if(!u(r)||null===r)return null;o=`${t} ${n}`,i={...r};break;case"event":if(!l(n))return null;o=n,u(r)&&(i={...r});break;case"config":if(!l(n))return null;o=`${t} ${n}`,u(r)&&(i={...r});break;case"set":if(l(n))o=`${t} ${n}`,u(r)&&(i={...r});else{if(!u(n))return null;o=`${t} custom`,i={...n}}break;default:return null}return{event:o,...i}}function Qe(){return["consent","update",{ad_user_data:"granted",ad_personalization:"granted",ad_storage:"denied",analytics_storage:"granted"}]}function Ze(){return["consent","default",{ad_storage:"denied",analytics_storage:"denied",ad_user_data:"denied",ad_personalization:"denied"}]}function et(){return["event","purchase",{transaction_id:"T_12345",value:25.42,currency:"EUR",items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",quantity:1,price:25.42}]}]}function tt(){return["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_variant:"red",quantity:1,price:15.25}]}]}function nt(){return["event","view_item",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",price:15.25}]}]}function rt(){return["config","G-XXXXXXXXXX",{page_title:"Custom Page Title",page_location:"https://example.com/page",send_page_view:!1}]}function ot(){return["set",{currency:"EUR",country:"DE"}]}function it(){return{event:"custom_event",custom_parameter:"custom_value",user_id:"user123"}}Be({},{add_to_cart:()=>tt,config:()=>rt,consentDefault:()=>Ze,consentUpdate:()=>Qe,directDataLayerEvent:()=>it,purchase:()=>et,setCustom:()=>ot,view_item:()=>nt});Be({},{add_to_cart:()=>ct,config:()=>ft,configGA4:()=>lt,consentOnlyMapping:()=>gt,consentUpdate:()=>st,customEvent:()=>dt,purchase:()=>at,view_item:()=>ut});var st={name:"walker consent",settings:{command:{map:{functional:{value:!0},analytics:{key:"analytics_storage",fn:e=>"granted"===e},marketing:{key:"ad_storage",fn:e=>"granted"===e}}}}},at={name:"order complete",data:{map:{id:"transaction_id",total:"value",currency:"currency",nested:{loop:["items",{map:{type:{value:"product"},data:{map:{id:"item_id",name:"item_name",category:"item_category",quantity:"quantity",price:"price"}}}}]}}}},ct={name:"product add",data:{map:{id:"items.0.item_id",name:"items.0.item_name",price:"value",currency:"currency",color:"items.0.item_variant",quantity:"items.0.quantity"}}},ut={name:"product view",data:{map:{id:"items.0.item_id",name:"items.0.item_name",category:"items.0.item_category",price:"items.0.price",currency:"currency"}}},lt={name:"page view",data:{map:{title:"page_title",url:"page_location"}}},dt={data:{map:{user_id:"user_id",custom_parameter:"custom_parameter"}}},ft={consent:{update:st},purchase:at,add_to_cart:ct,view_item:ut,"config G-XXXXXXXXXX":lt,custom_event:dt,"*":{data:{}}},gt={consent:{update:st}},pt=(e,t)=>{const{settings:n}=t,r={type:"dataLayer",config:t,collector:e,destroy(){const e=n.name||"dataLayer";window[e]&&Array.isArray(window[e])}};return function(e,t){const n=t.settings,r=(null==n?void 0:n.name)||"dataLayer",o=window[r];if(Array.isArray(o)&&!Je){Je=!0;try{for(const t of o)ze(e,n,t)}finally{Je=!1}}}(e,t),function(e,t){const n=t.settings,r=(null==n?void 0:n.name)||"dataLayer";window[r]||(window[r]=[]);const o=window[r];if(!Array.isArray(o))return;const i=o.push.bind(o);o.push=function(...t){if(Je)return i(...t);Je=!0;try{for(const r of t)ze(e,n,r)}finally{Je=!1}return i(...t)}}(e,t),{source:r,elb:(...e)=>{const t=n.name||"dataLayer",r=window[t];return Array.isArray(r)?Promise.resolve(r.push(...e)):Promise.resolve(0)}}};function mt(){window.dataLayer=window.dataLayer||[];const e=e=>{u(e)&&u(e.source)&&String(e.source.type).includes("dataLayer")||window.dataLayer.push(e)};return{type:"dataLayer",config:{},push:(t,n)=>{e(n.data||t)},pushBatch:t=>{e({event:"batch",batched_event:t.key,events:t.data.length?t.data:t.events})}}}async function yt(e={}){const t=s({collector:{destinations:{dataLayer:mt()}},browser:{run:!0,session:!0},dataLayer:!1,elb:"elb"},e),n={...t.collector,sources:{browser:p(Ke,{settings:t.browser})}};if(t.dataLayer){const e=u(t.dataLayer)?t.dataLayer:{};n.sources&&(n.sources.dataLayer=p(function(e={}){const t=(t,n)=>{const r={...n,settings:{name:"dataLayer",prefix:"dataLayer",...e,...n.settings}};return pt(t,r)};return t.init=(e,t)=>pt(e,{type:"dataLayer",settings:t.settings}),t.settings={name:"dataLayer",prefix:"dataLayer",...e},t.type="dataLayer",t}(e),{settings:e}))}const{collector:r}=await ee(n),o=r.sources.browser;if(!(null==o?void 0:o.elb))throw new Error("Failed to initialize browser source");const i={collector:r,elb:o.elb};return t.elb&&(window[t.elb]=o.elb),t.name&&(window[t.name]=r),i}if(window&&document){const e=async()=>{let e;const t=document.querySelector("script[data-elbconfig]");if(t){const n=t.getAttribute("data-elbconfig")||"";n.includes(":")?e=O(n):n&&(e=window[n])}e||(e=window.elbConfig),e&&await yt(e)};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}})();
|
|
1
|
+
"use strict";(()=>{var e,t,n=Object.getOwnPropertyNames,r=(e={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.1.0",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return t||(0,e[n(e)[0]])((t={exports:{}}).exports,t),t.exports}),o={Storage:{Local:"local",Session:"session",Cookie:"cookie"}},i={merge:!0,shallow:!0,extend:!0};function s(e,t={},n={}){n={...i,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function a(e){return Array.isArray(e)}function c(e){return void 0!==e}function u(e){return"object"==typeof e&&null!==e&&!a(e)&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return"string"==typeof e}function d(e,t=new WeakMap){if("object"!=typeof e||null===e)return e;if(t.has(e))return t.get(e);const n=Object.prototype.toString.call(e);if("[object Object]"===n){const n={};t.set(e,n);for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=d(e[r],t));return n}if("[object Array]"===n){const n=[];return t.set(e,n),e.forEach(e=>{n.push(d(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 f(e,t="",n){const r=t.split(".");let o=e;for(let e=0;e<r.length;e++){const t=r[e];if("*"===t&&a(o)){const t=r.slice(e+1).join("."),i=[];for(const e of o){const r=f(e,t,n);i.push(r)}return i}if(o=o instanceof Object?o[t]:void 0,!o)break}return c(o)?o:n}function g(e,t={},n={}){const r={...t,...n},o={};let i=void 0===e;return Object.keys(r).forEach(t=>{r[t]&&(o[t]=!0,e&&e[t]&&(i=!0))}),!!i&&o}function p(e,t){return async(n,r)=>{const o=s(r,t,{shallow:!0,merge:!0,extend:!0});return r.settings&&t.settings&&(o.settings=s(r.settings,t.settings,{shallow:!0,merge:!0,extend:!0})),e(n,o)}}var{version:m}=r();function y(e=6){let t="";for(let n=36;t.length<e;)t+=(Math.random()*n|0).toString(n);return t}function h(e){return function(e){return"boolean"==typeof e}(e)||l(e)||function(e){return"number"==typeof e&&!Number.isNaN(e)}(e)||!c(e)||a(e)&&e.every(h)||u(e)&&Object.values(e).every(h)}function b(e){return h(e)?e:void 0}function w(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function v(e,t,n){return async function(...r){try{return await e(...r)}catch(e){if(!t)return;return await t(e)}finally{await(null==n?void 0:n())}}}async function k(e,t={},n={}){var r;if(!c(e))return;const o=u(e)&&e.consent||n.consent||(null==(r=n.collector)?void 0:r.consent),i=a(t)?t:[t];for(const t of i){const r=await v(S)(e,t,{...n,consent:o});if(c(r))return r}}async function S(e,t,n={}){const{collector:r,consent:o}=n;return(a(t)?t:[t]).reduce(async(t,i)=>{const s=await t;if(s)return s;const u=l(i)?{key:i}:i;if(!Object.keys(u).length)return;const{condition:d,consent:p,fn:m,key:y,loop:h,map:w,set:_,validate:x,value:O}=u;if(d&&!await v(d)(e,i,r))return;if(p&&!g(p,o))return O;let j=c(O)?O:e;if(m&&(j=await v(m)(e,i,n)),y&&(j=f(e,y,O)),h){const[t,r]=h,o="this"===t?[e]:await k(e,t,n);a(o)&&(j=(await Promise.all(o.map(e=>k(e,r,n)))).filter(c))}else w?j=await Object.entries(w).reduce(async(t,[r,o])=>{const i=await t,s=await k(e,o,n);return c(s)&&(i[r]=s),i},Promise.resolve({})):_&&(j=await Promise.all(_.map(t=>S(e,t,n))));x&&!await v(x)(j)&&(j=void 0);const E=b(j);return c(E)?E:b(O)},Promise.resolve(void 0))}function _(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function x(e,t,n){return function(...r){let o;const i="post"+t,s=n["pre"+t],a=n[i];return o=s?s({fn:e},...r):e(...r),a&&(o=a({fn:e,result:o},...r)),o}}function O(e,t){return(e.getAttribute(t)||"").trim()}function j(e){const t={};return function(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}(e).forEach(e=>{const[n,r]=function(e){const[t,n]=e.split(/:(.+)/,2);return[_(t||""),_(n||"")]}(e);n&&("true"===r?t[n]=!0:"false"===r?t[n]=!1:r&&/^\d+$/.test(r)?t[n]=parseInt(r,10):r&&/^\d+\.\d+$/.test(r)?t[n]=parseFloat(r):t[n]=r||!0)}),t}var E=function(){const e=window;(e.elbLayer=e.elbLayer||[]).push(arguments)};function L(e){const t=getComputedStyle(e);if("none"===t.display)return!1;if("visible"!==t.visibility)return!1;if(t.opacity&&Number(t.opacity)<.1)return!1;let n;const r=window.innerHeight,o=e.getBoundingClientRect(),i=o.height,s=o.y,a=s+i,c={x:o.x+e.offsetWidth/2,y:o.y+e.offsetHeight/2};if(i<=r){if(e.offsetWidth+o.width===0||e.offsetHeight+o.height===0)return!1;if(c.x<0)return!1;if(c.x>(document.documentElement.clientWidth||window.innerWidth))return!1;if(c.y<0)return!1;if(c.y>(document.documentElement.clientHeight||window.innerHeight))return!1;n=document.elementFromPoint(c.x,c.y)}else{const e=r/2;if(s<0&&a<e)return!1;if(a>r&&s>e)return!1;n=document.elementFromPoint(c.x,r/2)}if(n)do{if(n===e)return!0}while(n=n.parentElement);return!1}function A(e={}){const{cb:t,consent:n,collector:r,storage:o}=e,i=(null==r?void 0:r.push)||E;if(!n)return $((o?R:N)(e),r,t);{const r=function(e,t){let n;return(r,o)=>{if(c(n)&&n===(null==r?void 0:r.group))return;n=null==r?void 0:r.group;let i=()=>N(e);if(e.consent){g((a(e.consent)?e.consent:[e.consent]).reduce((e,t)=>({...e,[t]:!0}),{}),o)&&(i=()=>R(e))}return $(i(),r,t)}}(e,t);i("walker on","consent",(a(n)?n:[n]).reduce((e,t)=>({...e,[t]:r}),{}))}}function $(e,t,n){return!1===n?e:(n||(n=P),n(e,t,P))}var C,q,P=(e,t)=>{const n=(null==t?void 0:t.push)||E,r={};return e.id&&(r.session=e.id),e.storage&&e.device&&(r.device=e.device),n("walker user",r),e.isStart&&n({name:"session start",data:e}),e};function D(e,t=o.Storage.Session){var n;function r(e){try{return JSON.parse(e||"")}catch(t){let n=1,r="";return e&&(n=0,r=e),{e:n,v:r}}}let i,s;switch(t){case o.Storage.Cookie:i=decodeURIComponent((null==(n=document.cookie.split("; ").find(t=>t.startsWith(e+"=")))?void 0:n.split("=")[1])||"");break;case o.Storage.Local:s=r(window.localStorage.getItem(e));break;case o.Storage.Session:s=r(window.sessionStorage.getItem(e))}return s&&(i=s.v,0!=s.e&&s.e<Date.now()&&(function(e,t=o.Storage.Session){switch(t){case o.Storage.Cookie:I(e,"",0,t);break;case o.Storage.Local:window.localStorage.removeItem(e);break;case o.Storage.Session:window.sessionStorage.removeItem(e)}}(e,t),i="")),function(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}(i||"")}function I(e,t,n=30,r=o.Storage.Session,i){const s={e:Date.now()+6e4*n,v:String(t)},a=JSON.stringify(s);switch(r){case o.Storage.Cookie:{t="object"==typeof t?JSON.stringify(t):t;let r=`${e}=${encodeURIComponent(t)}; max-age=${60*n}; path=/; SameSite=Lax; secure`;i&&(r+="; domain="+i),document.cookie=r;break}case o.Storage.Local:window.localStorage.setItem(e,a);break;case o.Storage.Session:window.sessionStorage.setItem(e,a)}return D(e,r)}function R(e={}){const t=Date.now(),{length:n=30,deviceKey:r="elbDeviceId",deviceStorage:o="local",deviceAge:i=30,sessionKey:s="elbSessionId",sessionStorage:a="local",pulse:c=!1}=e,u=N(e);let l=!1;const d=w((e,t,n)=>{let r=D(e,n);return r||(r=y(8),I(e,r,1440*t,n)),String(r)})(r,i,o),f=w((e,r)=>{const o=JSON.parse(String(D(e,r)));return c||(o.isNew=!1,u.marketing&&(Object.assign(o,u),l=!0),l||o.updated+6e4*n<t?(delete o.id,delete o.referrer,o.start=t,o.count++,o.runs=1,l=!0):o.runs++),o},()=>{l=!0})(s,a)||{},g={id:y(12),start:t,isNew:!0,count:1,runs:1},p=Object.assign(g,u,f,{device:d},{isStart:l,storage:!0,updated:t},e.data);return I(s,JSON.stringify(p),2*n,a),p}function N(e={}){let t=e.isStart||!1;const n={isStart:t,storage:!1};if(!1===e.isStart)return n;if(!t){const[e]=performance.getEntriesByType("navigation");if("navigate"!==e.type)return n}const r=new URL(e.url||window.location.href),o=e.referrer||document.referrer,i=o&&new URL(o).hostname,a=function(e,t={}){const n="clickId",r={},o={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(s(o,t)).forEach(([t,o])=>{const i=e.searchParams.get(t);i&&(o===n&&(o=t,r[n]=t),r[o]=i)}),r}(r,e.parameters);if(Object.keys(a).length&&(a.marketing||(a.marketing=!0),t=!0),!t){const n=e.domains||[];n.push(r.hostname),t=!n.includes(i)}return t?Object.assign({isStart:t,storage:!1,start:Date.now(),id:y(12),referrer:i},a,e.data):n}var X,W,M=Object.getOwnPropertyNames,U=(C={"package.json"(e,t){t.exports={name:"@walkeros/collector",description:"Unified platform-agnostic collector for walkerOS",version:"0.1.0",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{"@walkeros/core":"0.1.0"},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/collector"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","collector","event processing"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return q||(0,C[M(C)[0]])((q={exports:{}}).exports,q),q.exports}),T={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Session:"session",User:"user",Walker:"walker"},H=T;function G(e,t,n,r){let o=n||[];if(n||(o=e.on[t]||[],Object.values(e.destinations).forEach(e=>{var n;const r=null==(n=e.config.on)?void 0:n[t];r&&(o=o.concat(r))})),o.length)switch(t){case H.Consent:!function(e,t,n){const r=n||e.consent;t.forEach(t=>{Object.keys(r).filter(e=>e in t).forEach(n=>{w(t[n])(e,r)})})}(e,o,r);break;case H.Ready:case H.Run:s=o,(i=e).allowed&&s.forEach(e=>{w(e)(i)});break;case H.Session:!function(e,t){e.session&&t.forEach(t=>{w(t)(e,e.session)})}(e,o)}var i,s}async function F(e,t,n,r){let o;switch(t){case H.Config:u(n)&&s(e.config,n,{shallow:!1});break;case H.Consent:u(n)&&(o=await async function(e,t){const{consent:n}=e;let r=!1;const o={};return Object.entries(t).forEach(([e,t])=>{const n=!!t;o[e]=n,r=r||n}),e.consent=s(n,o),G(e,"consent",void 0,o),r?B(e):V({ok:!0})}(e,n));break;case H.Custom:u(n)&&(e.custom=s(e.custom,n));break;case H.Destination:u(n)&&function(e){return"function"==typeof e}(n.push)&&(o=await async function(e,t,n){const r=n||t.config||{init:!1},o={...t,config:r};let i=r.id;if(!i)do{i=y(4)}while(e.destinations[i]);return e.destinations[i]=o,!1!==r.queue&&(o.queue=[...e.queue]),B(e,void 0,{[i]:o})}(e,n,r));break;case H.Globals:u(n)&&(e.globals=s(e.globals,n));break;case H.On:l(n)&&function(e,t,n){const r=e.on,o=r[t]||[],i=a(n)?n:[n];i.forEach(e=>{o.push(e)}),r[t]=o,G(e,t,i)}(e,n,r);break;case H.Run:o=await async function(e,t){e.allowed=!0,e.count=0,e.group=y(),e.timing=Date.now(),t&&(t.consent&&(e.consent=s(e.consent,t.consent)),t.user&&(e.user=s(e.user,t.user)),t.globals&&(e.globals=s(e.config.globalsStatic||{},t.globals)),t.custom&&(e.custom=s(e.custom,t.custom))),Object.values(e.destinations).forEach(e=>{e.queue=[]}),e.queue=[],e.round++;const n=await B(e);return G(e,"run"),n}(e,n);break;case H.User:u(n)&&s(e.user,n,{shallow:!1})}return o||{ok:!0,successful:[],queued:[],failed:[]}}function K(e,t,n){return x(async(r,o,i)=>await v(async()=>{if("string"==typeof r&&r.startsWith("walker ")){const n=r.replace("walker ","");return await t(e,n,o,i)}{const s=n("string"==typeof r?{name:r}:r),{event:a,command:c}=function(e,t,n={}){const r=function(e){return typeof e==typeof""}(t)?{name:t,...n}:{...n,...t||{}};if(!r.name)throw new Error("Event name is required");const[o,i]=r.name.split(" ");if(!o||!i)throw new Error("Event name is invalid");if(o===T.Walker)return{command:i};++e.count;const{timestamp:s=Date.now(),group:a=e.group,count:c=e.count}=r,{name:u=`${o} ${i}`,data:l={},context:d={},globals:f=e.globals,custom:g={},user:p=e.user,nested:m=[],consent:y=e.consent,id:h=`${s}-${a}-${c}`,trigger:b="",entity:w=o,action:v=i,timing:k=0,version:S={source:e.version,tagging:e.config.tagging||0},source:_={type:"collector",id:"",previous_id:""}}=r;return{event:{name:u,data:l,context:d,globals:f,custom:g,user:p,nested:m,consent:y,id:h,trigger:b,entity:w,action:v,timestamp:s,timing:k,group:a,count:c,version:S,source:_}}}(e,s.name,s);return c?await t(e,c,o,i):await B(e,a)}},()=>V({ok:!1}))(),"Push",e.hooks)}async function B(e,t,n){const{allowed:r,consent:o,globals:i,user:a}=e;if(!r)return V({ok:!1});t&&e.queue.push(t),n||(n=e.destinations);const c=await Promise.all(Object.entries(n||{}).map(async([n,r])=>{let c=(r.queue||[]).map(e=>({...e,consent:o}));if(r.queue=[],t){let n=d(t);await Promise.all(Object.entries(r.config.policy||[]).map(async([r,o])=>{const i=await k(t,o,{collector:e});n=function(e,t,n){const r=d(e),o=t.split(".");let i=r;for(let e=0;e<o.length;e++){const t=o[e];e===o.length-1?i[t]=n:(t in i&&"object"==typeof i[t]&&null!==i[t]||(i[t]={}),i=i[t])}return r}(n,r,i)})),c.push(n)}if(!c.length)return{id:n,destination:r,skipped:!0};const u=[],l=c.filter(e=>{const t=g(r.config.consent,o,e.consent);return!t||(e.consent=t,u.push(e),!1)});if(r.queue.concat(l),!u.length)return{id:n,destination:r,queue:c};if(!await v(J)(e,r))return{id:n,destination:r,queue:c};let f=!1;return r.dlq||(r.dlq=[]),await Promise.all(u.map(async t=>(t.globals=s(i,t.globals),t.user=s(a,t.user),await v(z,n=>(e.config.onError&&e.config.onError(n,e),f=!0,r.dlq.push([t,n]),!1))(e,r,t),t))),{id:n,destination:r,error:f}})),u=[],l=[],f=[];for(const e of c){if(e.skipped)continue;const t=e.destination,n={id:e.id,destination:t};e.error?f.push(n):e.queue&&e.queue.length?(t.queue=(t.queue||[]).concat(e.queue),l.push(n)):u.push(n)}return V({ok:!f.length,event:t,successful:u,queued:l,failed:f})}async function J(e,t){if(t.init&&!t.config.init){const n={collector:e,config:t.config,env:Q(t.env,t.config.env)},r=await x(t.init,"DestinationInit",e.hooks)(n);if(!1===r)return r;t.config={...r||t.config,init:!0}}return!0}async function z(e,t,n){var r;const{config:o}=t,{eventMapping:i,mappingKey:l}=await async function(e,t){var n;const[r,o]=(e.name||"").split(" ");if(!t||!r||!o)return{};let i,s="",c=r,u=o;const l=t=>{if(t)return(t=a(t)?t:[t]).find(t=>!t.condition||t.condition(e))};t[c]||(c="*");const d=t[c];return d&&(d[u]||(u="*"),i=l(d[u])),i||(c="*",u="*",i=l(null==(n=t[c])?void 0:n[u])),i&&(s=`${c} ${u}`),{eventMapping:i,mappingKey:s}}(n,o.mapping);let d=o.data&&await k(n,o.data,{collector:e});if(i){if(i.ignore)return!1;if(i.name&&(n.name=i.name),i.data){const t=i.data&&await k(n,i.data,{collector:e});d=u(d)&&u(t)?s(d,t):t}}const f={collector:e,config:o,data:d,mapping:i,env:Q(t.env,o.env)};if((null==i?void 0:i.batch)&&t.pushBatch){const s=i.batched||{key:l||"",events:[],data:[]};s.events.push(n),c(d)&&s.data.push(d),i.batchFn=i.batchFn||function(e,t=1e3,n=!1){let r,o=null,i=!1;return(...s)=>new Promise(a=>{const c=n&&!i;o&&clearTimeout(o),o=setTimeout(()=>{o=null,n&&!i||(r=e(...s),a(r))},t),c&&(i=!0,r=e(...s),a(r))})}((e,t)=>{const n={collector:t,config:o,data:d,mapping:i,env:Q(e.env,o.env)};x(e.pushBatch,"DestinationPushBatch",t.hooks)(s,n),s.events=[],s.data=[]},i.batch),i.batched=s,null==(r=i.batchFn)||r.call(i,t,e)}else await x(t.push,"DestinationPush",e.hooks)(n,f);return!0}function V(e){var t;return s({ok:!(null==(t=null==e?void 0:e.failed)?void 0:t.length),successful:[],queued:[],failed:[]},e)}function Y(e){return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,config:u(n.config)?n.config:{}},e),{})}function Q(e,t){return e||t?t?e&&u(e)&&u(t)?{...e,...t}:t:e:{}}async function Z(e,t,n){var r,o;const i={disabled:null!=(r=n.disabled)&&r,settings:null!=(o=n.settings)?o:{},onError:n.onError};if(i.disabled)return{};const s=await v(t)(e,i);if(!s||!s.source)return{};const a=i.type||s.source.type||"",c=n.id||`${a}_${y(5)}`;return s.source&&s.elb&&(s.source.elb=s.elb),e.sources||(e.sources={}),e.sources[c]={type:a,settings:i.settings,mapping:void 0,elb:s.elb},s}async function ee(e={}){const t=function(e){const{version:t}=U(),n=s({globalsStatic:{},sessionStatic:{},tagging:0,verbose:!1,onLog:r,run:!0,destinations:{},consent:{},user:{},globals:{},custom:{}},e,{merge:!1,extend:!1});function r(e,t){!function(e,t=!1){t&&console.dir(e,{depth:4})}({message:e},t||n.verbose)}n.onLog=r;const o={...n.globalsStatic,...n.globals},i={allowed:!1,config:n,consent:n.consent||{},count:0,custom:n.custom||{},destinations:Y(n.destinations||{}),globals:o,group:"",hooks:{},on:{},queue:[],round:0,session:void 0,timing:Date.now(),user:n.user||{},version:t,sources:{},push:void 0};return i.push=K(i,F,e=>({timing:Math.round((Date.now()-i.timing)/10)/100,source:{type:"collector",id:"",previous_id:""},...e})),i}(e),{consent:n,user:r,globals:o,custom:i,sources:a}=e;return n&&await t.push("walker consent",n),r&&await t.push("walker user",r),o&&Object.assign(t.globals,o),i&&Object.assign(t.custom,i),a&&await async function(e,t={}){for(const[n,r]of Object.entries(t)){const t={id:n},o=await Z(e,r,t);o.source&&(o.elb&&(o.source.elb=o.elb),e.sources[n]={type:o.source.type,settings:o.source.config.settings,mapping:void 0,elb:o.elb})}}(t,a),t.config.run&&await t.push("walker run"),{collector:t,elb:t.push}}var te=Object.getOwnPropertyNames,ne=(X={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.1.0",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return W||(0,X[te(X)[0]])((W={exports:{}}).exports,W),W.exports}),re={merge:!0,shallow:!0,extend:!0};function oe(e,t={},n={}){n={...re,...n};const r=Object.entries(t).reduce((t,[r,o])=>{const i=e[r];return n.merge&&Array.isArray(i)&&Array.isArray(o)?t[r]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...i]):(n.extend||r in e)&&(t[r]=o),t},{});return n.shallow?{...e,...r}:(Object.assign(e,r),e)}function ie(e){return Array.isArray(e)}function se(e){return e===document||e instanceof Element}function ae(e){return"object"==typeof e&&null!==e&&!ie(e)&&"[object Object]"===Object.prototype.toString.call(e)}function ce(e){return"string"==typeof e}function ue(e){if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);return e==t&&""!==e?t:String(e)}var{version:le}=ne();function de(e,t,n){return function(...r){try{return e(...r)}catch(e){if(!t)return;return t(e)}finally{null==n||n()}}}function fe(e){return e?e.trim().replace(/^'|'$/g,"").trim():""}function ge(e,t,n=!0){return e+(null!=t?(n?"-":"")+t:"")}function pe(e,t,n,r=!0){return ke(O(t,ge(e,n,r))||"").reduce((e,n)=>{let[r,o]=Se(n);if(!r)return e;if(o||(r.endsWith(":")&&(r=r.slice(0,-1)),o=""),o.startsWith("#")){o=o.slice(1);try{let e=t[o];e||"selected"!==o||(e=t.options[t.selectedIndex].text),o=String(e)}catch(e){o=""}}return r.endsWith("[]")?(r=r.slice(0,-2),ie(e[r])||(e[r]=[]),e[r].push(ue(o))):e[r]=ue(o),e},{})}function me(e){const t={};return ke(e).forEach(e=>{const[n,r]=Se(e),[o,i]=_e(n);if(!o)return;let[s,a]=_e(r||"");s=s||o,t[o]||(t[o]=[]),t[o].push({trigger:o,triggerParams:i,action:s,actionParams:a})}),t}function ye(e,t,n,r=!1){const o=[];let i=t;for(n=0!==Object.keys(n||{}).length?n:void 0;i;){const s=he(e,i,t,n);if(s&&(o.push(s),r))break;i=be(e,i)}return o}function he(e,t,n,r){const o=O(t,ge(e));if(!o||r&&!r[o])return null;const i=[t],s=`[${ge(e,o)}],[${ge(e,"")}]`,a=ge(e,H.Link,!1);let c={};const u=[],[l,d]=we(n||t,s,e,o);ve(t,`[${a}]`,t=>{const[n,r]=Se(O(t,a));"parent"===r&&ve(document.body,`[${a}="${n}:child"]`,t=>{i.push(t);const n=he(e,t);n&&u.push(n)})});const f=[];i.forEach(e=>{e.matches(s)&&f.push(e),ve(e,s,e=>f.push(e))});let g={};return f.forEach(t=>{g=oe(g,pe(e,t,"")),c=oe(c,pe(e,t,o))}),c=oe(oe(g,c),l),i.forEach(t=>{ve(t,`[${ge(e)}]`,t=>{const n=he(e,t);n&&u.push(n)})}),{entity:o,data:c,context:d,nested:u}}function be(e,t){const n=ge(e,H.Link,!1);if(t.matches(`[${n}]`)){const[e,r]=Se(O(t,n));if("child"===r)return document.querySelector(`[${n}="${e}:parent"]`)}return!t.parentElement&&t.getRootNode&&t.getRootNode()instanceof ShadowRoot?t.getRootNode().host:t.parentElement}function we(e,t,n,r){let o={};const i={};let s=e;const a=`[${ge(n,H.Context,!1)}]`;let c=0;for(;s;)s.matches(t)&&(o=oe(pe(n,s,""),o),o=oe(pe(n,s,r),o)),s.matches(a)&&(Object.entries(pe(n,s,H.Context,!1)).forEach(([e,t])=>{t&&!i[e]&&(i[e]=[t,c])}),++c),s=be(n,s);return[o,i]}function ve(e,t,n){e.querySelectorAll(t).forEach(n)}function ke(e,t=";"){if(!e)return[];const n=new RegExp(`(?:[^${t}']+|'[^']*')+`,"ig");return e.match(n)||[]}function Se(e){const[t,n]=e.split(/:(.+)/,2);return[fe(t),fe(n)]}function _e(e){const[t,n]=e.split("(",2);return[t,n?n.slice(0,-1):""]}var xe=new WeakMap,Oe=new WeakMap;function je(e){const t=Date.now();let n=Oe.get(e);return(!n||t-n.lastChecked>500)&&(n={isVisible:L(e),lastChecked:t},Oe.set(e,n)),n.isVisible}function Ee(e){if(window.IntersectionObserver)return de(()=>new window.IntersectionObserver(t=>{t.forEach(t=>{!function(e,t){var n,r;const o=t.target,i=e._visibilityState;if(!i)return;const s=i.timers.get(o);if(t.intersectionRatio>0){const r=Date.now();let a=xe.get(o);if((!a||r-a.lastChecked>1e3)&&(a={isLarge:o.offsetHeight>window.innerHeight,lastChecked:r},xe.set(o,a)),t.intersectionRatio>=.5||a.isLarge&&je(o)){const t=null==(n=i.elementConfigs)?void 0:n.get(o);if((null==t?void 0:t.multiple)&&t.blocked)return;if(!s){const t=window.setTimeout(async()=>{var t,n;if(je(o)){const r=null==(t=i.elementConfigs)?void 0:t.get(o);(null==r?void 0:r.context)&&await Te(r.context,o,r.trigger);const s=null==(n=i.elementConfigs)?void 0:n.get(o);(null==s?void 0:s.multiple)?s.blocked=!0:function(e,t){const n=e._visibilityState;if(!n)return;n.observer&&n.observer.unobserve(t);const r=n.timers.get(t);r&&(clearTimeout(r),n.timers.delete(t)),xe.delete(t),Oe.delete(t)}(e,o)}},i.duration);i.timers.set(o,t)}return}}s&&(clearTimeout(s),i.timers.delete(o));const a=null==(r=i.elementConfigs)?void 0:r.get(o);(null==a?void 0:a.multiple)&&(a.blocked=!1)}(e,t)})},{rootMargin:"0px",threshold:[0,.5]}),()=>{})()}function Le(e,t,n={multiple:!1}){var r;const o=e.collector._visibilityState;(null==o?void 0:o.observer)&&t&&(o.elementConfigs||(o.elementConfigs=new WeakMap),o.elementConfigs.set(t,{multiple:null!=(r=n.multiple)&&r,blocked:!1,context:e,trigger:n.multiple?"visible":"impression"}),o.observer.observe(t))}function Ae(e){const t=e._visibilityState;t&&(t.observer&&t.observer.disconnect(),delete e._visibilityState)}var $e,Ce=performance.now();function qe(e,t,n,r,o,i,s){const{collector:a,settings:c}=e;if(ce(t)&&t.startsWith("walker "))return a.push(t,n);if(ae(t)){const e=t;return e.source||(e.source=Pe()),a.push(e)}const[u]=String(ae(t)?t.name:t).split(" ");let l,d=ae(n)?n:{},f={},g=!1;if(se(n)&&(l=n,g=!0),se(o)?l=o:ae(o)&&Object.keys(o).length&&(f=o),l){const e=ye(c.prefix||"data-elb",l).find(e=>e.entity===u);e&&(g&&(d=e.data),f=e.context)}"page"===u&&(d.id=d.id||window.location.pathname);const p={name:String(t||""),data:d,context:f,nested:i,custom:s,trigger:ce(r)?r:"",timing:Math.round((performance.now()-Ce)/10)/100,source:Pe()};return a.push(p)}function Pe(){return{type:"browser",id:window.location.href,previous_id:document.referrer}}var De=[],Ie="hover",Re="load",Ne="pulse",Xe="scroll",We="wait";function Me(e,t){!function(e,t){const n=t.scope,r={collector:e,settings:t};n.addEventListener("click",de(function(e){Ge.call(this,r,e)})),n.addEventListener("submit",de(function(e){Fe.call(this,r,e)}))}(e,t)}function Ue(e,t){!function(e,t){const n=t.scope;De=[],Ae(e),function(e,t=1e3){e._visibilityState||(e._visibilityState={observer:Ee(e),timers:new WeakMap,duration:t})}(e,1e3);const r=ge(t.prefix,H.Action,!1),o=n||document;o!==document&&He(e,o,r,t),o.querySelectorAll(`[${r}]`).forEach(n=>{He(e,n,r,t)}),De.length&&function(e,t,n){const r={collector:e,settings:n},o=(e,t)=>e.filter(([e,n])=>{const r=window.scrollY+window.innerHeight,o=e.offsetTop;if(r<o)return!0;const i=e.clientHeight;return!(100*(1-(o+i-r)/(i||1))>=n&&(Te(t,e,Xe),1))});$e||($e=function(e,t=1e3){let n=null;return function(...r){if(null===n)return n=setTimeout(()=>{n=null},t),e(...r)}}(function(){De=o.call(t,De,r)}),t.addEventListener("scroll",$e))}(e,o,t)}(e,t)}async function Te(e,t,n){const r=function(e,t,n=H.Prefix){const r=[],{actions:o,nearestOnly:i}=function(e,t,n){let r=t;for(;r;){const t=O(r,ge(e,H.Actions,!1));if(t){const e=me(t);if(e[n])return{actions:e[n],nearestOnly:!1}}const o=O(r,ge(e,H.Action,!1));if(o){const e=me(o);if(e[n]||"click"!==n)return{actions:e[n]||[],nearestOnly:!0}}r=be(e,r)}return{actions:[],nearestOnly:!1}}(n,e,t);return o.length?(o.forEach(o=>{const s=ke(o.actionParams||"",",").reduce((e,t)=>(e[fe(t)]=!0,e),{}),a=ye(n,e,s,i);if(!a.length){const t="page",r=`[${ge(n,t)}]`,[o,i]=we(e,r,n,t);a.push({entity:t,data:o,nested:[],context:i})}a.forEach(e=>{r.push({entity:e.entity,action:o.action,data:e.data,trigger:t,context:e.context,nested:e.nested})})}),r):r}(t,n,e.settings.prefix);return Promise.all(r.map(t=>qe(e,{name:`${t.entity} ${t.action}`,...t,trigger:n})))}function He(e,t,n,r){const o=O(t,n);if(!o)return;const i={collector:e,settings:r};Object.values(me(o)).forEach(e=>e.forEach(e=>{switch(e.trigger){case Ie:n=i,t.addEventListener("mouseenter",de(function(e){e.target instanceof Element&&Te(n,e.target,Ie)}));break;case Re:!function(e,t){Te(e,t,Re)}(i,t);break;case Ne:!function(e,t,n=""){setInterval(()=>{document.hidden||Te(e,t,Ne)},parseInt(n||"")||15e3)}(i,t,e.triggerParams);break;case Xe:!function(e,t=""){const n=parseInt(t||"")||50;n<0||n>100||De.push([e,n])}(t,e.triggerParams);break;case"impression":Le(i,t);break;case"visible":Le(i,t,{multiple:!0});break;case We:!function(e,t,n=""){setTimeout(()=>Te(e,t,We),parseInt(n||"")||15e3)}(i,t,e.triggerParams)}var n}))}function Ge(e,t){Te(e,t.target,"click")}function Fe(e,t){t.target&&Te(e,t.target,"submit")}function Ke(e,t,n,r){const o=[];let i=!0;n.forEach(e=>{const t=Je(e)?[...Array.from(e)]:null!=(n=e)&&"object"==typeof n&&"length"in n&&"number"==typeof n.length?Array.from(e):[e];var n;if(Array.isArray(t)&&0===t.length)return;if(Array.isArray(t)&&1===t.length&&!t[0])return;const s=t[0],a=!ae(s)&&ce(s)&&s.startsWith("walker ");if(ae(s)){if("object"==typeof s&&0===Object.keys(s).length)return}else{const e=Array.from(t);if(!ce(e[0])||""===e[0].trim())return;const n="walker run";i&&e[0]===n&&(i=!1)}(r&&a||!r&&!a)&&o.push(t)}),o.forEach(n=>{Be(e,t,n)})}function Be(e,t="data-elb",n){de(()=>{if(Array.isArray(n)){const[r,...o]=n;if(!r||ce(r)&&""===r.trim())return;if(ce(r)&&r.startsWith("walker "))return void e.push(r,o[0]);qe({collector:e,settings:{prefix:t,scope:document,pageview:!1,session:!1,elb:"",elbLayer:!1}},r,...o)}else if(n&&"object"==typeof n){if(0===Object.keys(n).length)return;e.push(n)}},()=>{})()}function Je(e){return null!=e&&"object"==typeof e&&"[object Arguments]"===Object.prototype.toString.call(e)}function ze(e={}){return{prefix:"data-elb",pageview:!0,session:!0,elb:"elb",elbLayer:"elbLayer",scope:document,...e}}var Ve=async(e,t)=>{try{const n={...t,settings:ze(t.settings)},r={type:"browser",config:n,collector:e,destroy(){Ae(e)}};if(!1!==n.settings.elbLayer&&function(e,t={}){const n=t.name||"elbLayer";window[n]||(window[n]=[]);const r=window[n];r.push=function(...n){if(Je(n[0])){const r=[...Array.from(n[0])],o=Array.prototype.push.apply(this,[r]);return Be(e,t.prefix,r),o}const r=Array.prototype.push.apply(this,n);return n.forEach(n=>{Be(e,t.prefix,n)}),r},Array.isArray(r)&&r.length>0&&function(e,t="data-elb",n){Ke(e,t,n,!0),Ke(e,t,n,!1),n.length=0}(e,t.prefix,r)}(e,{name:ce(n.settings.elbLayer)?n.settings.elbLayer:"elbLayer",prefix:n.settings.prefix}),n.settings.session){const t="boolean"==typeof n.settings.session?{}:n.settings.session;!function(e,t={}){const n=t.config||{},r=oe(e.config.sessionStatic||{},t.data||{});var o,i,s;(o=A,i="SessionStart",s=e.hooks,function(...e){let t;const n="post"+i,r=s["pre"+i],a=s[n];return t=r?r({fn:o},...e):o(...e),a&&(t=a({fn:o,result:t},...e)),t})({...n,cb:(e,t,r)=>{let o;const i=n;return!1!==i.cb&&i.cb?o=i.cb(e,t,r):!1!==i.cb&&(o=r(e,t,r)),t&&(t.session=e,G(t,"session")),o},data:r,collector:e})}(e,{config:t})}await async function(e,t,n){const r=()=>{if(e(t,n),null==t?void 0:t.on)try{G(t,"ready")}catch(e){}};"loading"!==document.readyState?r():document.addEventListener("DOMContentLoaded",r)}(Me,e,n.settings);const o=e=>{if(Ue(e,n.settings),n.settings.pageview){const[t,r]=function(e,t){const n=window.location,r="page",o=t===document?document.body:t,[i,s]=we(o,`[${ge(e,r)}]`,e,r);return i.domain=n.hostname,i.title=document.title,i.referrer=document.referrer,n.search&&(i.search=n.search),n.hash&&(i.hash=n.hash),[i,s]}(n.settings.prefix||"data-elb",n.settings.scope);qe({collector:e,settings:n.settings},"page view",t,Re,r)}};await e.push("walker on","run",o);const i=e._destroy;e._destroy=()=>{var e;null==(e=r.destroy)||e.call(r),i&&i()};const s=(...t)=>{const[r,o,i,s,a,c]=t;return qe({collector:e,settings:n.settings},r,o,i,s,a,c)};return ce(n.settings.elb)&&(window[n.settings.elb]=s),{source:r,elb:s}}catch(e){throw e}},Ye=Object.defineProperty,Qe=(e,t)=>{for(var n in t)Ye(e,n,{get:t[n],enumerable:!0})},Ze=!1;function et(e,t={},n){if(t.filter&&!0===w(()=>t.filter(n),()=>!1)())return;const r=function(e){if(u(e)&&l(e.event)){const{event:t,...n}=e;return{name:t,...n}}return a(e)&&e.length>=2?tt(e):null!=(t=e)&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>0?tt(Array.from(e)):null;var t}(n);if(!r)return;const o={name:`${t.prefix||"dataLayer"} ${r.name}`,data:r,context:{},globals:{},custom:{},consent:{},nested:[],user:{},id:Math.random().toString(36).substring(2,15),trigger:"",entity:"",action:"",timestamp:Date.now(),timing:0,group:"",count:0,version:{source:"1.0.0",tagging:2},source:{type:"dataLayer",id:"",previous_id:""}};w(()=>e.push(o),()=>{})()}function tt(e){const[t,n,r]=e;if(!l(t))return null;let o,i={};switch(t){case"consent":if(!l(n)||e.length<3)return null;if(!u(r)||null===r)return null;o=`${t} ${n}`,i={...r};break;case"event":if(!l(n))return null;o=n,u(r)&&(i={...r});break;case"config":if(!l(n))return null;o=`${t} ${n}`,u(r)&&(i={...r});break;case"set":if(l(n))o=`${t} ${n}`,u(r)&&(i={...r});else{if(!u(n))return null;o=`${t} custom`,i={...n}}break;default:return null}return{name:o,...i}}function nt(){return["consent","update",{ad_user_data:"granted",ad_personalization:"granted",ad_storage:"denied",analytics_storage:"granted"}]}function rt(){return["consent","default",{ad_storage:"denied",analytics_storage:"denied",ad_user_data:"denied",ad_personalization:"denied"}]}function ot(){return["event","purchase",{transaction_id:"T_12345",value:25.42,currency:"EUR",items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",quantity:1,price:25.42}]}]}function it(){return["event","add_to_cart",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_variant:"red",quantity:1,price:15.25}]}]}function st(){return["event","view_item",{currency:"EUR",value:15.25,items:[{item_id:"SKU_12345",item_name:"Product Name",item_category:"Category",price:15.25}]}]}function at(){return["config","G-XXXXXXXXXX",{page_title:"Custom Page Title",page_location:"https://example.com/page",send_page_view:!1}]}function ct(){return["set",{currency:"EUR",country:"DE"}]}function ut(){return{event:"custom_event",custom_parameter:"custom_value",user_id:"user123"}}Qe({},{add_to_cart:()=>it,config:()=>at,consentDefault:()=>rt,consentUpdate:()=>nt,directDataLayerEvent:()=>ut,purchase:()=>ot,setCustom:()=>ct,view_item:()=>st});Qe({},{add_to_cart:()=>ft,config:()=>yt,configGA4:()=>pt,consentOnlyMapping:()=>ht,consentUpdate:()=>lt,customEvent:()=>mt,purchase:()=>dt,view_item:()=>gt});var lt={name:"walker consent",settings:{command:{map:{functional:{value:!0},analytics:{key:"analytics_storage",fn:e=>"granted"===e},marketing:{key:"ad_storage",fn:e=>"granted"===e}}}}},dt={name:"order complete",data:{map:{id:"transaction_id",total:"value",currency:"currency",nested:{loop:["items",{map:{type:{value:"product"},data:{map:{id:"item_id",name:"item_name",category:"item_category",quantity:"quantity",price:"price"}}}}]}}}},ft={name:"product add",data:{map:{id:"items.0.item_id",name:"items.0.item_name",price:"value",currency:"currency",color:"items.0.item_variant",quantity:"items.0.quantity"}}},gt={name:"product view",data:{map:{id:"items.0.item_id",name:"items.0.item_name",category:"items.0.item_category",price:"items.0.price",currency:"currency"}}},pt={name:"page view",data:{map:{title:"page_title",url:"page_location"}}},mt={data:{map:{user_id:"user_id",custom_parameter:"custom_parameter"}}},yt={consent:{update:lt},purchase:dt,add_to_cart:ft,view_item:gt,"config G-XXXXXXXXXX":pt,custom_event:mt,"*":{data:{}}},ht={consent:{update:lt}},bt=(e,t)=>{const{settings:n}=t,r={type:"dataLayer",config:t,collector:e,destroy(){const e=n.name||"dataLayer";window[e]&&Array.isArray(window[e])}};return function(e,t){const n=t.settings,r=(null==n?void 0:n.name)||"dataLayer",o=window[r];if(Array.isArray(o)&&!Ze){Ze=!0;try{for(const t of o)et(e,n,t)}finally{Ze=!1}}}(e,t),function(e,t){const n=t.settings,r=(null==n?void 0:n.name)||"dataLayer";window[r]||(window[r]=[]);const o=window[r];if(!Array.isArray(o))return;const i=o.push.bind(o);o.push=function(...t){if(Ze)return i(...t);Ze=!0;try{for(const r of t)et(e,n,r)}finally{Ze=!1}return i(...t)}}(e,t),{source:r,elb:(...e)=>{const t=n.name||"dataLayer",r=window[t];return Array.isArray(r)?Promise.resolve(r.push(...e)):Promise.resolve(0)}}};function wt(){window.dataLayer=window.dataLayer||[];const e=e=>{u(e)&&u(e.source)&&String(e.source.type).includes("dataLayer")||window.dataLayer.push(e)};return{type:"dataLayer",config:{},push:(t,n)=>{e(n.data||t)},pushBatch:t=>{e({name:"batch",batched_event:t.key,events:t.data.length?t.data:t.events})}}}async function vt(e={}){const t=s({collector:{destinations:{dataLayer:wt()}},browser:{run:!0,session:!0},dataLayer:!1,elb:"elb"},e),n={...t.collector,sources:{browser:p(Ve,{settings:t.browser})}};if(t.dataLayer){const e=u(t.dataLayer)?t.dataLayer:{};n.sources&&(n.sources.dataLayer=p(function(e={}){const t=(t,n)=>{const r={...n,settings:{name:"dataLayer",prefix:"dataLayer",...e,...n.settings}};return bt(t,r)};return t.init=(e,t)=>bt(e,{type:"dataLayer",settings:t.settings}),t.settings={name:"dataLayer",prefix:"dataLayer",...e},t.type="dataLayer",t}(e),{settings:e}))}const{collector:r}=await ee(n),o=r.sources.browser;if(!(null==o?void 0:o.elb))throw new Error("Failed to initialize browser source");const i={collector:r,elb:o.elb};return t.elb&&(window[t.elb]=o.elb),t.name&&(window[t.name]=r),i}if(window&&document){const e=async()=>{let e;const t=document.querySelector("script[data-elbconfig]");if(t){const n=t.getAttribute("data-elbconfig")||"";n.includes(":")?e=j(n):n&&(e=window[n])}e||(e=window.elbConfig),e&&await vt(e)};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/walker.js",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Ready-to-use walkerOS bundle with browser source, collector, and dataLayer support",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"preview": "npm run build && npx serve -l 3333 examples"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@walkeros/core": "0.0
|
|
38
|
-
"@walkeros/collector": "0.0
|
|
39
|
-
"@walkeros/web-core": "0.0
|
|
40
|
-
"@walkeros/web-source-browser": "0.0
|
|
41
|
-
"@walkeros/web-source-datalayer": "0.0
|
|
37
|
+
"@walkeros/core": "0.1.0",
|
|
38
|
+
"@walkeros/collector": "0.1.0",
|
|
39
|
+
"@walkeros/web-core": "0.1.0",
|
|
40
|
+
"@walkeros/web-source-browser": "0.1.0",
|
|
41
|
+
"@walkeros/web-source-datalayer": "0.1.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@swc/jest": "^0.2.36",
|