userlens-analytics-sdk 0.1.80 → 0.1.81

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/main.cjs.js CHANGED
@@ -5,5 +5,5 @@
5
5
  * MIT License | (c) Dustin Diaz 2012-2015
6
6
  * MIT License | (c) Denis Demchenko 2015-2019
7
7
  */class Cw{static getParser(e,t=!1){if("string"!=typeof e)throw new Error("UserAgent should be a string");return new Sw(e,t)}static parse(e){return new Sw(e).getResult()}static get BROWSER_MAP(){return uw}static get ENGINE_MAP(){return fw}static get OS_MAP(){return dw}static get PLATFORMS_MAP(){return pw}}var Iw="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function xw(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var kw,Ow={exports:{}},Mw=Ow.exports;
8
- /*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */function Aw(){return kw||(kw=1,e=Ow,function(t){e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var t,r=String(e),s=r.length,n=-1,i="",o=r.charCodeAt(0);++n<s;)0!=(t=r.charCodeAt(n))?i+=t>=1&&t<=31||127==t||0==n&&t>=48&&t<=57||1==n&&t>=48&&t<=57&&45==o?"\\"+t.toString(16)+" ":0==n&&1==s&&45==t||!(t>=128||45==t||95==t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122)?"\\"+r.charAt(n):r.charAt(n):i+="�";return i};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(t)}(void 0!==Iw?Iw:Mw)),Ow.exports;var e}var Ew,Rw,Nw,Tw={};var Pw,Fw,Dw,Lw,Bw,_w,Uw,jw,zw,Ww,Vw,Gw,Zw,Yw,Jw,$w,Xw,Hw,Kw=function(){if(Nw)return Rw;Nw=1,Aw();const{ShadowRootTypes:e,nodeNameInCorrectCase:t,NodeType:r}=(Ew||(Ew=1,Tw.nodeNameInCorrectCase=function(e){const t=e.shadowRoot&&e.shadowRoot.mode;return t?"#shadow-root ("+t+")":e.localName?e.localName.length!==e.nodeName.length?e.nodeName:e.localName:e.nodeName},Tw.shadowRootType=function(e){const t=e.ancestorShadowRoot();return t?t.mode:null},Tw.NodeType={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9},Tw.ShadowRootTypes={UserAgent:"user-agent",Open:"open",Closed:"closed"}),Tw);let s={DOMPath:{}};return s.DOMPath.fullQualifiedSelector=function(e,t){try{return e.nodeType!==r.ELEMENT_NODE?e.localName||e.nodeName.toLowerCase():s.DOMPath.cssPath(e,t)}catch(e){return null}},s.DOMPath.cssPath=function(e,t){if(e.nodeType!==r.ELEMENT_NODE)return"";const n=[];let i=e;for(;i;){const r=s.DOMPath._cssPathStep(i,!!t,i===e);if(!r)break;if(n.push(r),r.optimized)break;i=i.parentNode}return n.reverse(),n.join(" > ")},s.DOMPath.canGetJSPath=function(t){let r=t;for(;r;){if(r.shadowRoot&&r.shadowRoot.mode!==e.Open)return!1;r=r.shadowRoot&&r.shadowRoot.host}return!0},s.DOMPath.jsPath=function(e,t){if(e.nodeType!==r.ELEMENT_NODE)return"";const n=[];let i=e;for(;i;)n.push(s.DOMPath.cssPath(i,t)),i=i.shadowRoot&&i.shadowRoot.host;n.reverse();let o="";for(let e=0;e<n.length;++e){const t=JSON.stringify(n[e]);o+=e?`.shadowRoot.querySelector(${t})`:`document.querySelector(${t})`}return o},s.DOMPath._cssPathStep=function(e,n,i){if(e.nodeType!==r.ELEMENT_NODE)return null;const o=e.getAttribute("id");if(n){if(o)return new s.DOMPath.Step(h(o),!0);const r=e.nodeName.toLowerCase();if("body"===r||"head"===r||"html"===r)return new s.DOMPath.Step(t(e),!0)}const a=t(e);if(o)return new s.DOMPath.Step(a+h(o),!0);const l=e.parentNode;if(!l||l.nodeType===r.DOCUMENT_NODE)return new s.DOMPath.Step(a,!0);function c(e){const t=e.getAttribute("class");return t?t.split(/\s+/g).filter(Boolean).map(function(e){return"$"+e}):[]}function h(e){return"#"+CSS.escape(e)}const u=c(e);let p=!1,d=!1,f=-1,m=-1;const g=l.children;for(let s=0;(-1===f||!d)&&s<g.length;++s){const n=g[s];if(n.nodeType!==r.ELEMENT_NODE)continue;if(m+=1,n===e){f=m;continue}if(d)continue;if(t(n)!==a)continue;p=!0;const i=new Set(u);if(!i.size){d=!0;continue}const o=c(n);for(let e=0;e<o.length;++e){const t=o[e];if(i.has(t)&&(i.delete(t),!i.size)){d=!0;break}}}let y=a;if(i&&"input"===a.toLowerCase()&&e.getAttribute("type")&&!e.getAttribute("id")&&!e.getAttribute("class")&&(y+="[type="+CSS.escape(e.getAttribute("type"))+"]"),d)y+=":nth-child("+(f+1)+")";else if(p)for(const e of u)y+="."+CSS.escape(e.slice(1));return new s.DOMPath.Step(y,!1)},s.DOMPath.xPath=function(e,t){if(e.nodeType===r.DOCUMENT_NODE)return"/";const n=[];let i=e;for(;i;){const e=s.DOMPath._xPathValue(i,t);if(!e)break;if(n.push(e),e.optimized)break;i=i.parentNode}return n.reverse(),(n.length&&n[0].optimized?"":"/")+n.join("/")},s.DOMPath._xPathValue=function(e,t){let n;const i=s.DOMPath._xPathIndex(e);if(-1===i)return null;switch(e.nodeType){case r.ELEMENT_NODE:if(t&&e.getAttribute("id"))return new s.DOMPath.Step('//*[@id="'+e.getAttribute("id")+'"]',!0);n=e.localName;break;case r.ATTRIBUTE_NODE:n="@"+e.nodeName;break;case r.TEXT_NODE:case r.CDATA_SECTION_NODE:n="text()";break;case r.PROCESSING_INSTRUCTION_NODE:n="processing-instruction()";break;case r.COMMENT_NODE:n="comment()";break;case r.DOCUMENT_NODE:default:n=""}return i>0&&(n+="["+i+"]"),new s.DOMPath.Step(n,e.nodeType===r.DOCUMENT_NODE)},s.DOMPath._xPathIndex=function(e){function t(e,t){if(e===t)return!0;if(e.nodeType===r.ELEMENT_NODE&&t.nodeType===r.ELEMENT_NODE)return e.localName===t.localName;if(e.nodeType===t.nodeType)return!0;return(e.nodeType===r.CDATA_SECTION_NODE?r.TEXT_NODE:e.nodeType)===(t.nodeType===r.CDATA_SECTION_NODE?r.TEXT_NODE:t.nodeType)}const s=e.parentNode?e.parentNode.children:null;if(!s)return 0;let n;for(let r=0;r<s.length;++r)if(t(e,s[r])&&s[r]!==e){n=!0;break}if(!n)return 0;let i=1;for(let r=0;r<s.length;++r)if(t(e,s[r])){if(s[r]===e)return i;++i}return-1},s.DOMPath.Step=class{constructor(e,t){this.value=e,this.optimized=t||!1}toString(){return this.value}},Rw=s.DOMPath}(),Qw=xw(Kw);Fw=new WeakMap,Dw=new WeakMap,Lw=new WeakMap,Bw=new WeakMap,_w=new WeakMap,Yw=new WeakMap,Pw=new WeakSet,Uw=function(){document.addEventListener("click",e(this,Bw,"f"),!0)},jw=function(t){try{const r=t.target;if(!(r instanceof HTMLElement))return;const s=Qw.xPath(r,!0),n=e(this,Pw,"m",zw).call(this,r),i={event:s,is_raw:!0,snapshot:n?[n]:[],properties:{...this.getUserContext(),...this.getPageMetadata()}};this.userId&&(i.userId=this.userId),this.events.push(i),this.events.length>100&&(this.events=this.events.slice(-100))}catch(e){}},zw=function(t){if(!(t instanceof HTMLElement))return null;const r=[];let s=t;for(;s&&1===s.nodeType;)r.unshift(s),s=s.parentElement;let n=null,i=null;for(let t=0;t<r.length;t++){const s=r[t],o=t>=r.length-3,a=t===r.length-1,l=e(this,Pw,"m",Ww).call(this,s,{isTarget:a,leadsToTarget:!0});let c=[l];if(o&&s.parentElement){c=[l,...Array.from(s.parentElement.children).filter(e=>e!==s&&e instanceof HTMLElement).map(t=>e(this,Pw,"m",Ww).call(this,t,{includeChildren:!0})).filter(Boolean)]}n||(n=l),i&&(i.children||(i.children=[]),i.children.push(...c)),i=l}return n},Ww=function t(r,{isTarget:s=!1,includeChildren:n=!1,leadsToTarget:i=!1}={}){var o,a;const l=r.tagName.toLowerCase(),c=r.classList.length?Array.from(r.classList):null,h=r.id||null,u=r.getAttribute("href")||null,p=Array.from((null===(o=r.parentNode)||void 0===o?void 0:o.children)||[]).indexOf(r)+1,d=Array.from((null===(a=r.parentNode)||void 0===a?void 0:a.children)||[]).filter(e=>e instanceof HTMLElement&&e.tagName===r.tagName).indexOf(r)+1,f={};for(let e of Array.from(r.attributes))f[`attr__${e.name}`]=e.value;const m=Array.from(r.childNodes).filter(e=>e.nodeType===Node.TEXT_NODE),g=m.map(e=>{var t;return null===(t=e.textContent)||void 0===t?void 0:t.trim()}).filter(Boolean).join(" ")||null,y={tag_name:l,nth_child:p,nth_of_type:d,attributes:f,...c?{attr_class:c}:{},...h?{attr_id:h}:{},...u?{href:u}:{},...g?{text:g}:{},...s?{is_target:!0}:{},...i&&!s?{leads_to_target:!0}:{}};return(n&&r.children.length>0||s)&&(y.children=Array.from(r.children).filter(e=>e instanceof HTMLElement).map(r=>e(this,Pw,"m",t).call(this,r,{includeChildren:!0})).filter(Boolean)),y},Vw=function(){t(this,Fw,setInterval(()=>{e(this,Yw,"f").call(this)},this.intervalTime),"f")},Gw=function(){t(this,Dw,history.pushState,"f"),t(this,Lw,history.replaceState,"f"),history.pushState=(...t)=>{e(this,Dw,"f").apply(history,t),e(this,Pw,"m",Zw).call(this)},history.replaceState=(...t)=>{e(this,Lw,"f").apply(history,t),e(this,Pw,"m",Zw).call(this)},window.addEventListener("popstate",e(this,_w,"f"))},Zw=function(){if(function(){if("undefined"==typeof window)return!1;const e=window.location.hostname;return"localhost"===e||"127.0.0.1"===e||"::1"===e||e.endsWith(".localhost")}())return;const e={event:"$ul_pageview",properties:this.getPageMetadata()};this.userId&&(e.userId=this.userId),this.events.push(e)},Jw=function(){this.events=[]},$w=function(){document.body.removeEventListener("click",e(this,Bw,"f"))},Xw=function(){e(this,Yw,"f").call(this),clearInterval(e(this,Fw,"f")),e(this,Pw,"m",Jw).call(this)},Hw=function(){history.pushState=e(this,Dw,"f"),history.replaceState=e(this,Lw,"f"),window.removeEventListener("popstate",e(this,_w,"f"))},exports.EventCollector=class{constructor(t){if(Pw.add(this),this.userContext=null,Fw.set(this,void 0),Dw.set(this,void 0),Lw.set(this,void 0),Bw.set(this,e(this,Pw,"m",jw).bind(this)),_w.set(this,e(this,Pw,"m",Zw).bind(this)),Yw.set(this,()=>{if(0===this.events.length)return;const t=[...this.events];if(this.callback){try{this.callback(t)}catch(e){}e(this,Pw,"m",Jw).call(this)}else Promise.allSettled([this.userId&&this.userTraits?Xy({userId:this.userId,traits:this.userTraits}):null,Hy(t)]),e(this,Pw,"m",Jw).call(this)}),"undefined"==typeof window)return;const{userId:r,WRITE_CODE:s,callback:n,intervalTime:i=5e3,skipRawEvents:o=!1}=t,a=t.userTraits;this.autoUploadModeEnabled=!n,this.autoUploadModeEnabled&&!(null==r?void 0:r.length)||this.autoUploadModeEnabled&&!(null==s?void 0:s.length)||(this.autoUploadModeEnabled&&Ky(s),(this.autoUploadModeEnabled||"function"==typeof n)&&(this.userId=r,this.userTraits="object"==typeof a&&null!==a?a:{},this.callback=n,this.intervalTime=i,this.events=[],o||(e(this,Pw,"m",Uw).call(this),e(this,Pw,"m",Gw).call(this)),e(this,Pw,"m",Vw).call(this),this.userContext=this.getUserContext()))}pushEvent(e){const t={is_raw:!1,...e,properties:{...null==e?void 0:e.properties,...this.getUserContext(),...this.getPageMetadata()}};this.userId&&(t.userId=this.userId),this.events.push(t)}identify(e,t){return Xy({userId:e,traits:t})}group(e,t){return(async e=>{if(!(null==e?void 0:e.groupId))return;const{groupId:t,traits:r,userId:s}=e,n={type:"group",groupId:t,...s&&{userId:s},source:"userlens-js-analytics-sdk",traits:r};if(!(await fetch(`${Jy}/event`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${$y()}`},body:JSON.stringify(n)})).ok)throw new Error("Userlens HTTP error: failed to identify");return"ok"})({groupId:e,traits:t,userId:this.userId})}updateUserTraits(e){this.userTraits=e}stop(){e(this,Pw,"m",$w).call(this),e(this,Pw,"m",Xw).call(this),e(this,Pw,"m",Hw).call(this)}getUserContext(){var e,t,r,s,n,i,o;if(this.userContext)return this.userContext;const a=Cw.getParser(window.navigator.userAgent),l=a.getBrowser(),c=a.getOS(),h={$ul_browser:null!==(e=l.name)&&void 0!==e?e:"Unknown",$ul_browser_version:null!==(t=l.version)&&void 0!==t?t:"Unknown",$ul_os:null!==(r=c.name)&&void 0!==r?r:"Unknown",$ul_os_version:null!==(s=c.versionName)&&void 0!==s?s:"Unknown",$ul_browser_language:null!==(n=navigator.language)&&void 0!==n?n:"en-US",$ul_browser_language_prefix:null!==(o=null===(i=navigator.language)||void 0===i?void 0:i.split("-")[0])&&void 0!==o?o:"en",$ul_screen_width:window.screen.width,$ul_screen_height:window.screen.height,$ul_viewport_width:window.innerWidth,$ul_viewport_height:window.innerHeight,$ul_lib:"userlens.js",$ul_lib_version:"0.1.80",$ul_device_type:/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",$ul_timezone:Intl.DateTimeFormat().resolvedOptions().timeZone};return this.userContext=h,h}getPageMetadata(){try{const e=new URL(window.location.href);let t=document.referrer||"$direct",r="$direct";try{t&&/^https?:\/\//.test(t)&&(r=new URL(t).hostname)}catch(e){}const s=e.search.slice(1);return{$ul_page:e.origin+e.pathname,$ul_pathname:e.pathname,$ul_host:e.host,$ul_referrer:t,$ul_referring_domain:r,$ul_query:s}}catch(e){return{$ul_page:"",$ul_pathname:"",$ul_host:"",$ul_referrer:"",$ul_referring_domain:"",$ul_query:""}}}},exports.SessionRecorder=class{constructor({WRITE_CODE:r,userId:s,recordingOptions:n={}}){if(Qy.add(this),this.sessionEvents=[],this.rrwebStop=null,qy.set(this,void 0),nw.set(this,()=>{document.visibilityState&&gc()}),"undefined"==typeof window&&console.error("Userlens SDK error: unavailable outside of browser environment."),!(null==r?void 0:r.trim()))throw new Error("Userlens SDK Error: WRITE_CODE is required and must be a string");(null==s?void 0:s.trim())||console.error("Userlens SDK Error: userId is required to identify session user.");const{TIMEOUT:i=18e5,BUFFER_SIZE:o=10,maskingOptions:a=["passwords"]}=n;if("string"!=typeof r)throw new Error("WRITE_CODE must be a string to base64 encode it");Ky(r),this.userId=s,this.TIMEOUT=i,this.BUFFER_SIZE=o,this.maskingOptions=a,this.sessionEvents=[],t(this,qy,e(this,Qy,"m",ow).call(this,()=>{e(this,Qy,"m",aw).call(this)},5e3),"f"),e(this,Qy,"m",ew).call(this)}stop(){this.rrwebStop&&(this.rrwebStop(),this.rrwebStop=null,e(this,Qy,"m",lw).call(this),e(this,Qy,"m",cw).call(this),window.removeEventListener("visibilitychange",e(this,nw,"f")))}};
8
+ /*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */function Aw(){return kw||(kw=1,e=Ow,function(t){e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var t,r=String(e),s=r.length,n=-1,i="",o=r.charCodeAt(0);++n<s;)0!=(t=r.charCodeAt(n))?i+=t>=1&&t<=31||127==t||0==n&&t>=48&&t<=57||1==n&&t>=48&&t<=57&&45==o?"\\"+t.toString(16)+" ":0==n&&1==s&&45==t||!(t>=128||45==t||95==t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122)?"\\"+r.charAt(n):r.charAt(n):i+="�";return i};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(t)}(void 0!==Iw?Iw:Mw)),Ow.exports;var e}var Ew,Rw,Nw,Tw={};var Pw,Fw,Dw,Lw,Bw,_w,Uw,jw,zw,Ww,Vw,Gw,Zw,Yw,Jw,$w,Xw,Hw,Kw,Qw=function(){if(Nw)return Rw;Nw=1,Aw();const{ShadowRootTypes:e,nodeNameInCorrectCase:t,NodeType:r}=(Ew||(Ew=1,Tw.nodeNameInCorrectCase=function(e){const t=e.shadowRoot&&e.shadowRoot.mode;return t?"#shadow-root ("+t+")":e.localName?e.localName.length!==e.nodeName.length?e.nodeName:e.localName:e.nodeName},Tw.shadowRootType=function(e){const t=e.ancestorShadowRoot();return t?t.mode:null},Tw.NodeType={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9},Tw.ShadowRootTypes={UserAgent:"user-agent",Open:"open",Closed:"closed"}),Tw);let s={DOMPath:{}};return s.DOMPath.fullQualifiedSelector=function(e,t){try{return e.nodeType!==r.ELEMENT_NODE?e.localName||e.nodeName.toLowerCase():s.DOMPath.cssPath(e,t)}catch(e){return null}},s.DOMPath.cssPath=function(e,t){if(e.nodeType!==r.ELEMENT_NODE)return"";const n=[];let i=e;for(;i;){const r=s.DOMPath._cssPathStep(i,!!t,i===e);if(!r)break;if(n.push(r),r.optimized)break;i=i.parentNode}return n.reverse(),n.join(" > ")},s.DOMPath.canGetJSPath=function(t){let r=t;for(;r;){if(r.shadowRoot&&r.shadowRoot.mode!==e.Open)return!1;r=r.shadowRoot&&r.shadowRoot.host}return!0},s.DOMPath.jsPath=function(e,t){if(e.nodeType!==r.ELEMENT_NODE)return"";const n=[];let i=e;for(;i;)n.push(s.DOMPath.cssPath(i,t)),i=i.shadowRoot&&i.shadowRoot.host;n.reverse();let o="";for(let e=0;e<n.length;++e){const t=JSON.stringify(n[e]);o+=e?`.shadowRoot.querySelector(${t})`:`document.querySelector(${t})`}return o},s.DOMPath._cssPathStep=function(e,n,i){if(e.nodeType!==r.ELEMENT_NODE)return null;const o=e.getAttribute("id");if(n){if(o)return new s.DOMPath.Step(h(o),!0);const r=e.nodeName.toLowerCase();if("body"===r||"head"===r||"html"===r)return new s.DOMPath.Step(t(e),!0)}const a=t(e);if(o)return new s.DOMPath.Step(a+h(o),!0);const l=e.parentNode;if(!l||l.nodeType===r.DOCUMENT_NODE)return new s.DOMPath.Step(a,!0);function c(e){const t=e.getAttribute("class");return t?t.split(/\s+/g).filter(Boolean).map(function(e){return"$"+e}):[]}function h(e){return"#"+CSS.escape(e)}const u=c(e);let p=!1,d=!1,f=-1,m=-1;const g=l.children;for(let s=0;(-1===f||!d)&&s<g.length;++s){const n=g[s];if(n.nodeType!==r.ELEMENT_NODE)continue;if(m+=1,n===e){f=m;continue}if(d)continue;if(t(n)!==a)continue;p=!0;const i=new Set(u);if(!i.size){d=!0;continue}const o=c(n);for(let e=0;e<o.length;++e){const t=o[e];if(i.has(t)&&(i.delete(t),!i.size)){d=!0;break}}}let y=a;if(i&&"input"===a.toLowerCase()&&e.getAttribute("type")&&!e.getAttribute("id")&&!e.getAttribute("class")&&(y+="[type="+CSS.escape(e.getAttribute("type"))+"]"),d)y+=":nth-child("+(f+1)+")";else if(p)for(const e of u)y+="."+CSS.escape(e.slice(1));return new s.DOMPath.Step(y,!1)},s.DOMPath.xPath=function(e,t){if(e.nodeType===r.DOCUMENT_NODE)return"/";const n=[];let i=e;for(;i;){const e=s.DOMPath._xPathValue(i,t);if(!e)break;if(n.push(e),e.optimized)break;i=i.parentNode}return n.reverse(),(n.length&&n[0].optimized?"":"/")+n.join("/")},s.DOMPath._xPathValue=function(e,t){let n;const i=s.DOMPath._xPathIndex(e);if(-1===i)return null;switch(e.nodeType){case r.ELEMENT_NODE:if(t&&e.getAttribute("id"))return new s.DOMPath.Step('//*[@id="'+e.getAttribute("id")+'"]',!0);n=e.localName;break;case r.ATTRIBUTE_NODE:n="@"+e.nodeName;break;case r.TEXT_NODE:case r.CDATA_SECTION_NODE:n="text()";break;case r.PROCESSING_INSTRUCTION_NODE:n="processing-instruction()";break;case r.COMMENT_NODE:n="comment()";break;case r.DOCUMENT_NODE:default:n=""}return i>0&&(n+="["+i+"]"),new s.DOMPath.Step(n,e.nodeType===r.DOCUMENT_NODE)},s.DOMPath._xPathIndex=function(e){function t(e,t){if(e===t)return!0;if(e.nodeType===r.ELEMENT_NODE&&t.nodeType===r.ELEMENT_NODE)return e.localName===t.localName;if(e.nodeType===t.nodeType)return!0;return(e.nodeType===r.CDATA_SECTION_NODE?r.TEXT_NODE:e.nodeType)===(t.nodeType===r.CDATA_SECTION_NODE?r.TEXT_NODE:t.nodeType)}const s=e.parentNode?e.parentNode.children:null;if(!s)return 0;let n;for(let r=0;r<s.length;++r)if(t(e,s[r])&&s[r]!==e){n=!0;break}if(!n)return 0;let i=1;for(let r=0;r<s.length;++r)if(t(e,s[r])){if(s[r]===e)return i;++i}return-1},s.DOMPath.Step=class{constructor(e,t){this.value=e,this.optimized=t||!1}toString(){return this.value}},Rw=s.DOMPath}(),qw=xw(Qw);Fw=new WeakMap,Dw=new WeakMap,Lw=new WeakMap,Bw=new WeakMap,_w=new WeakMap,Jw=new WeakMap,Pw=new WeakSet,Uw=function(){document.addEventListener("click",e(this,Bw,"f"),!0)},jw=function(t){try{const r=t.target;if(!(r instanceof HTMLElement))return;const s=qw.xPath(r,!0),n=this.useLighterSnapshot?e(this,Pw,"m",zw).call(this,r):e(this,Pw,"m",Ww).call(this,r),i={event:s,is_raw:!0,snapshot:n?[n]:[],properties:{...this.getUserContext(),...this.getPageMetadata()}};this.userId&&(i.userId=this.userId),this.events.push(i),this.events.length>100&&(this.events=this.events.slice(-100))}catch(e){}},zw=function(t){if(!(t instanceof HTMLElement))return null;const r=document.body;if(!r)return null;const s=[];let n=t;for(;n&&1===n.nodeType&&n!==r;)s.unshift(n),n=n.parentElement;const i=[r,...s.filter(e=>e!==r)];let o=null,a=null;for(let t=0;t<i.length;t++){const r=i[t],s=t===i.length-1,n=e(this,Pw,"m",Vw).call(this,r,{isTarget:s,leadsToTarget:!s});o||(o=n),a&&(a.children||(a.children=[]),a.children.push(n)),a=n}const l=a;return l&&t.children.length>0&&(l.children=Array.from(t.children).filter(e=>e instanceof HTMLElement).map(t=>e(this,Pw,"m",Vw).call(this,t,{includeChildren:!0})).filter(Boolean)),o},Ww=function(t){if(!(t instanceof HTMLElement))return null;const r=[];let s=t;for(;s&&1===s.nodeType;)r.unshift(s),s=s.parentElement;let n=null,i=null;for(let t=0;t<r.length;t++){const s=r[t],o=t>=r.length-3,a=t===r.length-1,l=e(this,Pw,"m",Vw).call(this,s,{isTarget:a,leadsToTarget:!0});let c=[l];if(o&&s.parentElement){c=[l,...Array.from(s.parentElement.children).filter(e=>e!==s&&e instanceof HTMLElement).map(t=>e(this,Pw,"m",Vw).call(this,t,{includeChildren:!0})).filter(Boolean)]}n||(n=l),i&&(i.children||(i.children=[]),i.children.push(...c)),i=l}return n},Vw=function t(r,{isTarget:s=!1,includeChildren:n=!1,leadsToTarget:i=!1}={}){var o,a;const l=r.tagName.toLowerCase(),c=r.classList.length?Array.from(r.classList):null,h=r.id||null,u=r.getAttribute("href")||null,p=Array.from((null===(o=r.parentNode)||void 0===o?void 0:o.children)||[]).indexOf(r)+1,d=Array.from((null===(a=r.parentNode)||void 0===a?void 0:a.children)||[]).filter(e=>e instanceof HTMLElement&&e.tagName===r.tagName).indexOf(r)+1,f={};for(let e of Array.from(r.attributes))f[`attr__${e.name}`]=e.value;const m=Array.from(r.childNodes).filter(e=>e.nodeType===Node.TEXT_NODE),g=m.map(e=>{var t;return null===(t=e.textContent)||void 0===t?void 0:t.trim()}).filter(Boolean).join(" ")||null,y={tag_name:l,nth_child:p,nth_of_type:d,attributes:f,...c?{attr_class:c}:{},...h?{attr_id:h}:{},...u?{href:u}:{},...g?{text:g}:{},...s?{is_target:!0}:{},...i&&!s?{leads_to_target:!0}:{}};return(n&&r.children.length>0||s)&&(y.children=Array.from(r.children).filter(e=>e instanceof HTMLElement).map(r=>e(this,Pw,"m",t).call(this,r,{includeChildren:!0})).filter(Boolean)),y},Gw=function(){t(this,Fw,setInterval(()=>{e(this,Jw,"f").call(this)},this.intervalTime),"f")},Zw=function(){t(this,Dw,history.pushState,"f"),t(this,Lw,history.replaceState,"f"),history.pushState=(...t)=>{e(this,Dw,"f").apply(history,t),e(this,Pw,"m",Yw).call(this)},history.replaceState=(...t)=>{e(this,Lw,"f").apply(history,t),e(this,Pw,"m",Yw).call(this)},window.addEventListener("popstate",e(this,_w,"f"))},Yw=function(){if(function(){if("undefined"==typeof window)return!1;const e=window.location.hostname;return"localhost"===e||"127.0.0.1"===e||"::1"===e||e.endsWith(".localhost")}())return;const e={event:"$ul_pageview",properties:this.getPageMetadata()};this.userId&&(e.userId=this.userId),this.events.push(e)},$w=function(){this.events=[]},Xw=function(){document.removeEventListener("click",e(this,Bw,"f"),!0)},Hw=function(){e(this,Jw,"f").call(this),clearInterval(e(this,Fw,"f")),e(this,Pw,"m",$w).call(this)},Kw=function(){history.pushState=e(this,Dw,"f"),history.replaceState=e(this,Lw,"f"),window.removeEventListener("popstate",e(this,_w,"f"))},exports.EventCollector=class{constructor(t){if(Pw.add(this),this.useLighterSnapshot=!1,this.userContext=null,Fw.set(this,void 0),Dw.set(this,void 0),Lw.set(this,void 0),Bw.set(this,e(this,Pw,"m",jw).bind(this)),_w.set(this,e(this,Pw,"m",Yw).bind(this)),Jw.set(this,()=>{if(0===this.events.length)return;const t=[...this.events];if(this.callback){try{this.callback(t)}catch(e){}e(this,Pw,"m",$w).call(this)}else Promise.allSettled([this.userId&&this.userTraits?Xy({userId:this.userId,traits:this.userTraits}):null,Hy(t)]),e(this,Pw,"m",$w).call(this)}),"undefined"==typeof window)return;const{userId:r,WRITE_CODE:s,callback:n,intervalTime:i=5e3,skipRawEvents:o=!1,useLighterSnapshot:a=!1}=t,l=t.userTraits;this.autoUploadModeEnabled=!n,this.autoUploadModeEnabled&&!(null==r?void 0:r.length)||this.autoUploadModeEnabled&&!(null==s?void 0:s.length)||(this.autoUploadModeEnabled&&Ky(s),(this.autoUploadModeEnabled||"function"==typeof n)&&(this.userId=r,this.userTraits="object"==typeof l&&null!==l?l:{},this.callback=n,this.intervalTime=i,this.events=[],o||(this.useLighterSnapshot=a,e(this,Pw,"m",Uw).call(this),e(this,Pw,"m",Zw).call(this)),e(this,Pw,"m",Gw).call(this),this.userContext=this.getUserContext()))}pushEvent(e){const t={is_raw:!1,...e,properties:{...null==e?void 0:e.properties,...this.getUserContext(),...this.getPageMetadata()}};this.userId&&(t.userId=this.userId),this.events.push(t)}identify(e,t){return Xy({userId:e,traits:t})}group(e,t){return(async e=>{if(!(null==e?void 0:e.groupId))return;const{groupId:t,traits:r,userId:s}=e,n={type:"group",groupId:t,...s&&{userId:s},source:"userlens-js-analytics-sdk",traits:r};if(!(await fetch(`${Jy}/event`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${$y()}`},body:JSON.stringify(n)})).ok)throw new Error("Userlens HTTP error: failed to identify");return"ok"})({groupId:e,traits:t,userId:this.userId})}updateUserTraits(e){this.userTraits=e}stop(){e(this,Pw,"m",Xw).call(this),e(this,Pw,"m",Hw).call(this),e(this,Pw,"m",Kw).call(this)}getUserContext(){var e,t,r,s,n,i,o;if(this.userContext)return this.userContext;const a=Cw.getParser(window.navigator.userAgent),l=a.getBrowser(),c=a.getOS(),h={$ul_browser:null!==(e=l.name)&&void 0!==e?e:"Unknown",$ul_browser_version:null!==(t=l.version)&&void 0!==t?t:"Unknown",$ul_os:null!==(r=c.name)&&void 0!==r?r:"Unknown",$ul_os_version:null!==(s=c.versionName)&&void 0!==s?s:"Unknown",$ul_browser_language:null!==(n=navigator.language)&&void 0!==n?n:"en-US",$ul_browser_language_prefix:null!==(o=null===(i=navigator.language)||void 0===i?void 0:i.split("-")[0])&&void 0!==o?o:"en",$ul_screen_width:window.screen.width,$ul_screen_height:window.screen.height,$ul_viewport_width:window.innerWidth,$ul_viewport_height:window.innerHeight,$ul_lib:"userlens.js",$ul_lib_version:"0.1.81",$ul_device_type:/Mobi|Android/i.test(navigator.userAgent)?"Mobile":"Desktop",$ul_timezone:Intl.DateTimeFormat().resolvedOptions().timeZone};return this.userContext=h,h}getPageMetadata(){try{const e=new URL(window.location.href);let t=document.referrer||"$direct",r="$direct";try{t&&/^https?:\/\//.test(t)&&(r=new URL(t).hostname)}catch(e){}const s=e.search.slice(1);return{$ul_page:e.origin+e.pathname,$ul_pathname:e.pathname,$ul_host:e.host,$ul_referrer:t,$ul_referring_domain:r,$ul_query:s}}catch(e){return{$ul_page:"",$ul_pathname:"",$ul_host:"",$ul_referrer:"",$ul_referring_domain:"",$ul_query:""}}}},exports.SessionRecorder=class{constructor({WRITE_CODE:r,userId:s,recordingOptions:n={}}){if(Qy.add(this),this.sessionEvents=[],this.rrwebStop=null,qy.set(this,void 0),nw.set(this,()=>{document.visibilityState&&gc()}),"undefined"==typeof window&&console.error("Userlens SDK error: unavailable outside of browser environment."),!(null==r?void 0:r.trim()))throw new Error("Userlens SDK Error: WRITE_CODE is required and must be a string");(null==s?void 0:s.trim())||console.error("Userlens SDK Error: userId is required to identify session user.");const{TIMEOUT:i=18e5,BUFFER_SIZE:o=10,maskingOptions:a=["passwords"]}=n;if("string"!=typeof r)throw new Error("WRITE_CODE must be a string to base64 encode it");Ky(r),this.userId=s,this.TIMEOUT=i,this.BUFFER_SIZE=o,this.maskingOptions=a,this.sessionEvents=[],t(this,qy,e(this,Qy,"m",ow).call(this,()=>{e(this,Qy,"m",aw).call(this)},5e3),"f"),e(this,Qy,"m",ew).call(this)}stop(){this.rrwebStop&&(this.rrwebStop(),this.rrwebStop=null,e(this,Qy,"m",lw).call(this),e(this,Qy,"m",cw).call(this),window.removeEventListener("visibilitychange",e(this,nw,"f")))}};
9
9
  //# sourceMappingURL=main.cjs.js.map