@bigchill101/iris 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,13 +1,20 @@
1
+ interface AutocaptureConfig {
2
+ pageviews?: boolean;
3
+ webvitals?: boolean;
4
+ clicks?: boolean;
5
+ }
1
6
  interface IrisConfig {
2
7
  host: string;
3
8
  siteId: string;
4
- autocapture?: boolean;
9
+ autocapture?: AutocaptureConfig | false;
5
10
  debug?: boolean;
6
11
  }
7
12
 
8
13
  declare class Iris {
9
14
  private transport;
10
15
  private config;
16
+ private isStarted;
17
+ private originalPushState;
11
18
  constructor(config: IrisConfig);
12
19
  start(): void;
13
20
  track(name: string, props?: object): void;
@@ -17,4 +24,4 @@ declare class Iris {
17
24
  stop(): void;
18
25
  }
19
26
 
20
- export { Iris };
27
+ export { type AutocaptureConfig, Iris, type IrisConfig };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,20 @@
1
+ interface AutocaptureConfig {
2
+ pageviews?: boolean;
3
+ webvitals?: boolean;
4
+ clicks?: boolean;
5
+ }
1
6
  interface IrisConfig {
2
7
  host: string;
3
8
  siteId: string;
4
- autocapture?: boolean;
9
+ autocapture?: AutocaptureConfig | false;
5
10
  debug?: boolean;
6
11
  }
7
12
 
8
13
  declare class Iris {
9
14
  private transport;
10
15
  private config;
16
+ private isStarted;
17
+ private originalPushState;
11
18
  constructor(config: IrisConfig);
12
19
  start(): void;
13
20
  track(name: string, props?: object): void;
@@ -17,4 +24,4 @@ declare class Iris {
17
24
  stop(): void;
18
25
  }
19
26
 
20
- export { Iris };
27
+ export { type AutocaptureConfig, Iris, type IrisConfig };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var S=(e,t)=>{for(var i in t)c(e,i,{get:t[i],enumerable:!0})},P=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of w(t))!I.call(e,o)&&o!==i&&c(e,o,{get:()=>t[o],enumerable:!(n=b(t,o))||n.enumerable});return e};var E=e=>P(c({},"__esModule",{value:!0}),e);var k={};S(k,{Iris:()=>p});module.exports=E(k);var s=class{constructor(t){this.config=t}send(t){let i=`${this.config.host}/api/event`,n=JSON.stringify(t);if(navigator.sendBeacon){let o=new Blob([n],{type:"application/json"});navigator.sendBeacon(i,o)}else fetch(i,{method:"POST",body:n,keepalive:!0,headers:{"Content-Type":"application/json"}}).catch(o=>{this.config.debug&&console.error("Iris: Failed to send",o)});this.config.debug&&console.log("Iris: Event Sent",t)}};function u(e){window.addEventListener("click",t=>{var l;let n=t.target.closest('button, a, input[type="submit"], [role="button"]');if(!n||n.classList.contains("iris-ignore")||n instanceof HTMLInputElement&&n.type==="password")return;let o=n.tagName.toLowerCase(),y="$click",d={$tag:o,$id:n.id||void 0,$class:n.className||void 0,$text:((l=n.innerText)==null?void 0:l.slice(0,50))||""};if(o==="a"){let g=n.getAttribute("href");g&&(d.$href=g)}e(y,d)},{capture:!0})}var r=require("web-vitals");function f(e){let t=i=>{e("$web_vital",{$id:i.id,$name:i.name,$val:i.value,$rating:i.rating})};(0,r.onCLS)(t),(0,r.onINP)(t),(0,r.onLCP)(t)}var h="iris_vid",x="iris_sid";function a(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function m(){try{let e=localStorage.getItem(h);return e||(e=a(),localStorage.setItem(h,e)),e}catch{return a()}}function v(){try{let e=sessionStorage.getItem(x);return e||(e=a(),sessionStorage.setItem(x,e)),e}catch{return a()}}var p=class{transport;config;constructor(t){this.config={autocapture:!0,debug:!1,...t},this.transport=new s(this.config)}start(){this.trackPageview(),this.enableHistoryPatch(),this.config.autocapture&&u(this.track.bind(this)),f(this.track.bind(this))}track(t,i){let n={n:t,u:window.location.href,d:window.location.hostname,r:document.referrer||null,w:window.innerWidth,s:this.config.siteId,sid:v(),vid:m(),p:i};this.transport.send(n)}trackPageview(){this.track("$pageview")}handlePopState=()=>{this.trackPageview()};enableHistoryPatch(){let t=history.pushState;history.pushState=(...i)=>{t.apply(history,i),this.trackPageview()},window.addEventListener("popstate",this.handlePopState)}stop(){window.removeEventListener("popstate",this.handlePopState)}};0&&(module.exports={Iris});
1
+ var c=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var I=(e,t)=>{for(var i in t)c(e,i,{get:t[i],enumerable:!0})},P=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of w(t))!b.call(e,r)&&r!==i&&c(e,r,{get:()=>t[r],enumerable:!(n=S(t,r))||n.enumerable});return e};var C=e=>P(c({},"__esModule",{value:!0}),e);var k={};I(k,{Iris:()=>p});module.exports=C(k);var s=class{constructor(t){this.config=t}send(t){let i=`${this.config.host}/api/event`,n=JSON.stringify(t);if(navigator.sendBeacon){let r=new Blob([n],{type:"application/json"});navigator.sendBeacon(i,r)}else fetch(i,{method:"POST",body:n,keepalive:!0,headers:{"Content-Type":"application/json"}}).catch(r=>{this.config.debug&&console.error("Iris: Failed to send",r)});this.config.debug&&console.log("Iris: Event Sent",t)}};function f(e){window.addEventListener("click",t=>{var d;let n=t.target.closest('button, a, input[type="submit"], [role="button"]');if(!n||n.classList.contains("iris-ignore")||n instanceof HTMLInputElement&&n.type==="password")return;let r=n.tagName.toLowerCase(),y="$click",l={$tag:r,$id:n.id||void 0,$class:n.className||void 0,$text:((d=n.innerText)==null?void 0:d.slice(0,50))||""};if(r==="a"){let u=n.getAttribute("href");u&&(l.$href=u)}e(y,l)},{capture:!0})}var o=require("web-vitals");function g(e){let t=i=>{e("$web_vital",{$id:i.id,$name:i.name,$val:i.value,$rating:i.rating})};(0,o.onCLS)(t),(0,o.onINP)(t),(0,o.onLCP)(t)}var h="iris_vid",x="iris_sid";function a(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function v(){try{let e=localStorage.getItem(h);return e||(e=a(),localStorage.setItem(h,e)),e}catch{return a()}}function m(){try{let e=sessionStorage.getItem(x);return e||(e=a(),sessionStorage.setItem(x,e)),e}catch{return a()}}var p=class{transport;config;isStarted=!1;originalPushState=null;constructor(t){this.config={autocapture:!1,debug:!1,...t},this.transport=new s(this.config)}start(){if(this.isStarted)return;this.isStarted=!0;let t=this.config.autocapture;t&&t.pageviews!==!1&&(this.trackPageview(),this.enableHistoryPatch()),t&&t.clicks!==!1&&f(this.track.bind(this)),t&&t.webvitals!==!1&&g(this.track.bind(this))}track(t,i){let n={n:t,u:window.location.href,d:window.location.hostname,r:document.referrer||null,w:window.innerWidth,s:this.config.siteId,sid:m(),vid:v(),p:i};this.transport.send(n)}trackPageview(){this.track("$pageview")}handlePopState=()=>{this.trackPageview()};enableHistoryPatch(){this.originalPushState=history.pushState;let t=this;history.pushState=function(...i){t.originalPushState.apply(history,i),t.trackPageview()},window.addEventListener("popstate",this.handlePopState)}stop(){this.isStarted&&(this.isStarted=!1,this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),window.removeEventListener("popstate",this.handlePopState))}};0&&(module.exports={Iris});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var r=class{constructor(t){this.config=t}send(t){let n=`${this.config.host}/api/event`,i=JSON.stringify(t);if(navigator.sendBeacon){let o=new Blob([i],{type:"application/json"});navigator.sendBeacon(n,o)}else fetch(n,{method:"POST",body:i,keepalive:!0,headers:{"Content-Type":"application/json"}}).catch(o=>{this.config.debug&&console.error("Iris: Failed to send",o)});this.config.debug&&console.log("Iris: Event Sent",t)}};function d(e){window.addEventListener("click",t=>{var c;let i=t.target.closest('button, a, input[type="submit"], [role="button"]');if(!i||i.classList.contains("iris-ignore")||i instanceof HTMLInputElement&&i.type==="password")return;let o=i.tagName.toLowerCase(),m="$click",a={$tag:o,$id:i.id||void 0,$class:i.className||void 0,$text:((c=i.innerText)==null?void 0:c.slice(0,50))||""};if(o==="a"){let p=i.getAttribute("href");p&&(a.$href=p)}e(m,a)},{capture:!0})}import{onCLS as v,onINP as y,onLCP as b}from"web-vitals";function l(e){let t=n=>{e("$web_vital",{$id:n.id,$name:n.name,$val:n.value,$rating:n.rating})};v(t),y(t),b(t)}var g="iris_vid",u="iris_sid";function s(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function f(){try{let e=localStorage.getItem(g);return e||(e=s(),localStorage.setItem(g,e)),e}catch{return s()}}function h(){try{let e=sessionStorage.getItem(u);return e||(e=s(),sessionStorage.setItem(u,e)),e}catch{return s()}}var x=class{transport;config;constructor(t){this.config={autocapture:!0,debug:!1,...t},this.transport=new r(this.config)}start(){this.trackPageview(),this.enableHistoryPatch(),this.config.autocapture&&d(this.track.bind(this)),l(this.track.bind(this))}track(t,n){let i={n:t,u:window.location.href,d:window.location.hostname,r:document.referrer||null,w:window.innerWidth,s:this.config.siteId,sid:h(),vid:f(),p:n};this.transport.send(i)}trackPageview(){this.track("$pageview")}handlePopState=()=>{this.trackPageview()};enableHistoryPatch(){let t=history.pushState;history.pushState=(...n)=>{t.apply(history,n),this.trackPageview()},window.addEventListener("popstate",this.handlePopState)}stop(){window.removeEventListener("popstate",this.handlePopState)}};export{x as Iris};
1
+ var o=class{constructor(t){this.config=t}send(t){let n=`${this.config.host}/api/event`,i=JSON.stringify(t);if(navigator.sendBeacon){let r=new Blob([i],{type:"application/json"});navigator.sendBeacon(n,r)}else fetch(n,{method:"POST",body:i,keepalive:!0,headers:{"Content-Type":"application/json"}}).catch(r=>{this.config.debug&&console.error("Iris: Failed to send",r)});this.config.debug&&console.log("Iris: Event Sent",t)}};function l(e){window.addEventListener("click",t=>{var c;let i=t.target.closest('button, a, input[type="submit"], [role="button"]');if(!i||i.classList.contains("iris-ignore")||i instanceof HTMLInputElement&&i.type==="password")return;let r=i.tagName.toLowerCase(),v="$click",a={$tag:r,$id:i.id||void 0,$class:i.className||void 0,$text:((c=i.innerText)==null?void 0:c.slice(0,50))||""};if(r==="a"){let p=i.getAttribute("href");p&&(a.$href=p)}e(v,a)},{capture:!0})}import{onCLS as m,onINP as y,onLCP as S}from"web-vitals";function d(e){let t=n=>{e("$web_vital",{$id:n.id,$name:n.name,$val:n.value,$rating:n.rating})};m(t),y(t),S(t)}var u="iris_vid",f="iris_sid";function s(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function g(){try{let e=localStorage.getItem(u);return e||(e=s(),localStorage.setItem(u,e)),e}catch{return s()}}function h(){try{let e=sessionStorage.getItem(f);return e||(e=s(),sessionStorage.setItem(f,e)),e}catch{return s()}}var x=class{transport;config;isStarted=!1;originalPushState=null;constructor(t){this.config={autocapture:!1,debug:!1,...t},this.transport=new o(this.config)}start(){if(this.isStarted)return;this.isStarted=!0;let t=this.config.autocapture;t&&t.pageviews!==!1&&(this.trackPageview(),this.enableHistoryPatch()),t&&t.clicks!==!1&&l(this.track.bind(this)),t&&t.webvitals!==!1&&d(this.track.bind(this))}track(t,n){let i={n:t,u:window.location.href,d:window.location.hostname,r:document.referrer||null,w:window.innerWidth,s:this.config.siteId,sid:h(),vid:g(),p:n};this.transport.send(i)}trackPageview(){this.track("$pageview")}handlePopState=()=>{this.trackPageview()};enableHistoryPatch(){this.originalPushState=history.pushState;let t=this;history.pushState=function(...n){t.originalPushState.apply(history,n),t.trackPageview()},window.addEventListener("popstate",this.handlePopState)}stop(){this.isStarted&&(this.isStarted=!1,this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),window.removeEventListener("popstate",this.handlePopState))}};export{x as Iris};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigchill101/iris",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Privacy-first, self-hosted analytics client",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",