UNPKG

posthog-js

Version:

Posthog-js allows you to automatically capture usage and send events to PostHog.

3 lines (2 loc) • 16 kB
var e={DEBUG:!1,LIB_VERSION:"0.7.1",LIB_NAME:"browser-common"};function r(){return r=Object.assign?Object.assign.bind():function(e){for(var r=1;arguments.length>r;r++){var n=arguments[r];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},r.apply(null,arguments)}function n(e,r){return-1!==e.indexOf(r)}e.DEBUG=!1,e.LIB_VERSION="1.424.1",e.LIB_NAME="web";var i=Object.prototype,t=i.hasOwnProperty,o=i.toString,a=Array.isArray||function(e){return"[object Array]"===o.call(e)},l=e=>e===Object(e)&&!a(e),u=e=>{if(l(e)){for(var r in e)if(t.call(e,r))return!1;return!0}return!1},d=e=>void 0===e,v=e=>d(e)||(e=>null===e)(e),c=e=>"[object Number]"==o.call(e)&&e==e,s=e=>e instanceof FormData;function f(e,r,n,i,t){return r>n&&(i.warn("min cannot be greater than max."),r=n),c(e)?e>n?(i.warn(" cannot be greater than max: "+n+". Using max value instead."),n):r>e?(i.warn(" cannot be less than min: "+r+". Using min value instead."),r):e:(i.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+t),f(n,r,n,i))}class p{constructor(e){this.C={},this.I=e.I,this.R=f(e.bucketSize,0,100,e.A),this.O=f(e.refillRate,0,this.R,e.A),this.N=f(e.refillInterval,0,864e5,e.A)}F(e,r){var n=Math.floor((r-e.lastAccess)/this.N);n>0&&(e.tokens=Math.min(e.tokens+n*this.O,this.R),e.lastAccess=e.lastAccess+n*this.N)}consumeRateLimit(e){var r,n=Date.now(),i=String(e),t=this.C[i];return t?this.F(t,n):this.C[i]=t={tokens:this.R,lastAccess:n},0===t.tokens||(t.tokens--,0===t.tokens&&(null==(r=this.I)||r.call(this,e)),0===t.tokens)}stop(){this.C={}}}var g="Mobile",w="iOS",h="Android",m="Tablet",x=h+" "+m,_="iPad",b="Apple",E=b+" Watch",R="Safari",y="BlackBerry",S="Samsung",k=S+"Browser",P=S+" Internet",B="Chrome",O=B+" OS",M=B+" "+w,A="Internet Explorer",T=A+" "+g,C="Opera",D=C+" Mini",I="Edge",W="Microsoft "+I,U="Firefox",j=U+" "+w,N="Nintendo",G="PlayStation",z="Xbox",F=h+" "+g,L=g+" "+R,K="Windows",X=K+" Phone",H="Nokia",V="Ouya",q="Generic",Y=q+" "+g.toLowerCase(),Q=q+" "+m.toLowerCase(),Z="Konqueror",J="Oculus Browser",ee="Vivaldi",re="Yandex",ne="Whale",ie="DuckDuckGo",te="Pale Moon",oe="Waterfox",ae="Brave",le="Claude",ue="Codex",de="ChatGPT",ve="Google Search App",ce="(\\d+(\\.\\d+)?)",se=new RegExp("Version/"+ce),fe=new RegExp("("+le+"|"+ue+"|"+de+")\\/"+ce),pe=new RegExp(z,"i"),ge=new RegExp(G+" \\w+","i"),we=new RegExp(N+" \\w+","i"),he=new RegExp(y+"|PlayBook|BB10","i"),me={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},xe=function(e,r,i,t){r=r||"";var o=function(e){return null!=e&&e.brave?ae:null}(i);return o||(null!=t&&t.detectGoogleSearchApp&&n(e,"GSA/")?ve:n(e," OPR/")&&n(e,"Mini")?D:n(e," OPR/")?C:he.test(e)?y:n(e,"IE"+g)||n(e,"WPDesktop")?T:n(e,"OculusBrowser")?J:n(e,k)?P:n(e,I)||n(e,"Edg/")?W:n(e,ee+"/")?ee:n(e,"YaBrowser/")?re:n(e,ne+"/")?ne:n(e,ie+"/")||n(e,"Ddg/")?ie:n(e,le+"/")?le:n(e,ue+"/")?ue:n(e,de+"/")?de:n(e,"FBIOS")?"Facebook "+g:n(e,"UCWEB")||n(e,"UCBrowser")?"UC Browser":n(e,"CriOS")?M:n(e,"CrMo")||n(e,B)?B:n(e,h)&&n(e,R)?F:n(e,"FxiOS")?j:n(e.toLowerCase(),Z.toLowerCase())?Z:n(e,ae+"/")?ae:((e,r)=>r&&n(r,b)||function(e){return n(e,R)&&!n(e,B)&&!n(e,h)}(e))(e,r)?n(e,g)?L:R:n(e,"PaleMoon/")?te:n(e,oe+"/")?oe:n(e,U)?U:n(e,"MSIE")||n(e,"Trident/")?A:n(e,"Gecko")?U:"")},_e={[T]:[new RegExp("rv:"+ce)],[W]:[new RegExp(I+"?\\/"+ce)],[B]:[new RegExp("("+B+"|CrMo)\\/"+ce)],[M]:[new RegExp("CriOS\\/"+ce)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+ce)],[R]:[se],[L]:[se],[C]:[new RegExp("(Opera|OPR)\\/"+ce)],[U]:[new RegExp(U+"\\/"+ce)],[j]:[new RegExp("FxiOS\\/"+ce)],[Z]:[new RegExp("Konqueror[:/]?"+ce,"i")],[y]:[new RegExp(y+" "+ce),se],[F]:[new RegExp("android\\s"+ce,"i")],[P]:[new RegExp(k+"\\/"+ce)],[J]:[new RegExp("OculusBrowser\\/"+ce)],[ee]:[new RegExp(ee+"\\/"+ce)],[re]:[new RegExp("YaBrowser\\/"+ce)],[ne]:[new RegExp(ne+"\\/"+ce)],[ae]:[new RegExp(ae+"\\/"+ce)],[le]:[fe],[ue]:[fe],[de]:[fe],[ie]:[new RegExp("(DuckDuckGo|Ddg)\\/"+ce)],[te]:[new RegExp("PaleMoon\\/"+ce)],[oe]:[new RegExp(oe+"\\/"+ce)],[ve]:[new RegExp("GSA\\/"+ce)],[A]:[new RegExp("(rv:|MSIE )"+ce)],Mozilla:[new RegExp("rv:"+ce)]},be=function(e,r,n,i){var t=xe(e,r,n,i),o=_e[t];if(d(o))return null;for(var a=0;o.length>a;a++){var l=e.match(o[a]);if(l)return parseFloat(l[l.length-2])}return null},Ee=[[new RegExp(z+"; "+z+" (.*?)[);]","i"),e=>[z,e&&e[1]||""]],[new RegExp(N,"i"),[N,""]],[new RegExp(G,"i"),[G,""]],[he,[y,""]],[new RegExp(K,"i"),(e,r)=>{if(/Phone/.test(r)||/WPDesktop/.test(r))return[X,""];if(new RegExp(g).test(r)&&!/IEMobile\b/.test(r))return[K+" "+g,""];var n=/Windows NT ([0-9.]+)/i.exec(r);if(n&&n[1]){var i=me[n[1]]||"";return/arm/i.test(r)&&(i="RT"),[K,i]}return[K,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>e&&e[3]?[w,[e[3],e[4],e[5]||"0"].join(".")]:[w,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{var r="";return e&&e.length>=3&&(r=d(e[2])?e[3]:e[2]),["watchOS",r]}],[new RegExp("("+h+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+h+")","i"),e=>e&&e[2]?[h,[e[2],e[3],e[4]||"0"].join(".")]:[h,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,e=>{var r=["Mac OS X",""];return e&&e[1]&&(r[1]=[e[1],e[2],e[3]||"0"].join(".")),r}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[O,""]],[/Linux|debian/i,["Linux",""]]],Re=function(e){return we.test(e)?N:ge.test(e)?G:pe.test(e)?z:new RegExp(V,"i").test(e)?V:new RegExp("("+X+"|WPDesktop)","i").test(e)?X:/iPad/.test(e)?_:/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(e)?E:he.test(e)?y:/(kobo)\s(ereader|touch)/i.test(e)?"Kobo":new RegExp(H,"i").test(e)?H:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(e)||/(kf[a-z]+)( bui|\)).+silk\//i.test(e)?"Kindle Fire":/(Android|ZTE)/i.test(e)?new RegExp(g).test(e)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(e)||/pixel[\daxl ]{1,6}/i.test(e)&&!/pixel c/i.test(e)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(e)||/lmy47v/i.test(e)&&!/QTAQZ3/i.test(e)?h:x:new RegExp("(pda|"+g+")","i").test(e)?Y:new RegExp(m,"i").test(e)&&!new RegExp(m+" pc","i").test(e)?Q:""},$e="undefined"!=typeof window?window:void 0,ye="undefined"!=typeof globalThis?globalThis:$e,Se=null==ye?void 0:ye.navigator,ke=null==ye?void 0:ye.document,Pe=null==ye?void 0:ye.location;null!=ye&&ye.XMLHttpRequest&&new ye.XMLHttpRequest;var Be=null==Se?void 0:Se.userAgent,Oe=function(r,n){var i=(void 0===n?{}:n).debugEnabled,t={q(n){if($e&&(e.DEBUG||$e.POSTHOG_DEBUG||i)&&!d($e.console)&&$e.console){for(var t=("__rrweb_original__"in $e.console[n]?$e.console[n].__rrweb_original__:$e.console[n]),o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];t(r,...a)}},debug(){for(var e=arguments.length,r=new Array(e),n=0;e>n;n++)r[n]=arguments[n];t.q("debug",...r)},info(){for(var e=arguments.length,r=new Array(e),n=0;e>n;n++)r[n]=arguments[n];t.q("log",...r)},warn(){for(var e=arguments.length,r=new Array(e),n=0;e>n;n++)r[n]=arguments[n];t.q("warn",...r)},error(){for(var e=arguments.length,r=new Array(e),n=0;e>n;n++)r[n]=arguments[n];t.q("error",...r)},critical(){for(var e=arguments.length,n=new Array(e),i=0;e>i;i++)n[i]=arguments[i];console.error(r,...n)},uninitializedWarning(e){t.error("You must initialize PostHog before calling "+e)},createLogger:(e,n)=>Oe(r+" "+e,n)};return t},Me=Oe("[PostHog.js]"),Ae=Me.createLogger;function Te(e,r){if(!v(e))if(a(e))e.forEach(r);else if(s(e))e.forEach(((e,n)=>r(e,n)));else for(var n in e)t.call(e,n)&&r(e[n],n)}var Ce=function(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;r>i;i++)n[i-1]=arguments[i];for(var t of n)for(var o in t)void 0!==t[o]&&(e[o]=t[o]);return e},De=function(e,r,n){if(!e||!r||!r.length)return e;for(var i=e.split("#"),t=i[1],o=(i[0]||"").split("?"),l=o[1],u=o[0],d=(l||"").split("&"),v=[],c=0;d.length>c;c++){var s=d[c].split("=");a(s)&&(r.includes(s[0])?v.push(s[0]+"="+n):v.push(d[c]))}var f=u;return null!=l&&(f+="?"+v.join("&")),null!=t&&(f+="#"+t),f},Ie=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],We=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...Ie],Ue=["$app_build","$app_name","$app_namespace","$app_version","$browser","$browser_version","$device_type","$current_url","$pathname","$os","$os_name","$os_version","$referring_domain","$referrer","$screen_height","$screen_width","$viewport_height","$viewport_width","$raw_user_agent"],je="<masked>",Ne=["li_fat_id"];function Ge(e,r,n){if(!ke)return{};var i,t,o,l=r?[...Ie,...n||[]]:[],u=(i=De(ke.URL,l,je),t=We.concat(e||[]),o={},Te(t,(function(e){var r=function(e,r){for(var n,i=((e.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),t=0;i.length>t;t++){var o=i[t].split("=");if(o[0]===r){n=o;break}}if(!a(n)||2>n.length)return"";var l=n[1];try{l=decodeURIComponent(l)}catch(e){Me.error("Skipping decoding for malformed query param: "+l)}return l.replace(/\+/g," ")}(i,e);o[e]=r||null})),o),d=function(){var e={};return Te(Ne,(function(r){var n=(e=>{if(ke){try{for(var r=e+"=",n=ke.cookie.split(";").filter((e=>e.length)),i=0;n.length>i;i++){for(var t=n[i];" "==t.charAt(0);)t=t.substring(1,t.length);if(0===t.indexOf(r))return decodeURIComponent(t.substring(r.length,t.length))}}catch(e){}return null}})(r);e[r]=n||null})),e}();return Ce(d,u)}function ze(){return navigator.language||navigator.userLanguage}var Fe="$direct";function Le(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){return}}function Ke(){try{return(new Date).getTimezoneOffset()}catch(e){return}}function Xe(r,n,i,t){var a,l,u,v;if(void 0===t&&(t=!1),!Be)return{};var s,f=r?[...Ie,...n||[]]:[],p=function(e){for(var r=0;Ee.length>r;r++){var n=Ee[r],i=n[1],t=n[0].exec(e),o=t&&("function"==typeof i?i(t,e):i);if(o)return o}return["",""]}(Be),w=p[0],h=p[1],b=null!=(s="undefined"!=typeof navigator?navigator:void 0)&&s.brave?{brave:!0}:{},R={};d(i)||(R.detectGoogleSearchApp=i);var y={},S=null==(a=navigator)||null==(a=a.userAgentData)?void 0:a.platform,k=null==(l=navigator)?void 0:l.maxTouchPoints,P=null==$e||null==(u=$e.screen)?void 0:u.width,B=null==$e||null==(v=$e.screen)?void 0:v.height,O=null==$e?void 0:$e.devicePixelRatio;d(S)||(y.userAgentDataPlatform=S),d(k)||(y.maxTouchPoints=k),d(P)||(y.screenWidth=P),d(B)||(y.screenHeight=B),d(O)||(y.devicePixelRatio=O);var M,A,T,C,D,I,W,U,j,F,L,K=Ce((F={$os:w,$os_version:h,$browser:xe(Be,navigator.vendor,b,R),$device:Re(Be),$device_type:(T=Be,C=y,j=Re(T),j===_||j===x||"Kobo"===j||"Kindle Fire"===j||j===Q?m:j===N||j===z||j===G||j===V?"Console":j===E?"Wearable":j?g:"Android"===(null==C?void 0:C.userAgentDataPlatform)&&(null!==(D=null==C?void 0:C.maxTouchPoints)&&void 0!==D?D:0)>0?600>Math.min(null!==(I=null==C?void 0:C.screenWidth)&&void 0!==I?I:0,null!==(W=null==C?void 0:C.screenHeight)&&void 0!==W?W:0)/(null!==(U=null==C?void 0:C.devicePixelRatio)&&void 0!==U?U:1)?g:m:"Desktop"),$timezone:Le(),$timezone_offset:Ke()},L={},Te(F,(function(e,r){("[object String]"==o.call(e)&&e.length>0||c(e))&&(L[r]=e)})),L),{$current_url:De(t?(A=null==Pe?void 0:Pe.href,A?A.split("#")[0]:A):null==Pe?void 0:Pe.href,f,je),$host:null==Pe?void 0:Pe.host,$pathname:null==Pe?void 0:Pe.pathname,$raw_user_agent:Be.length>1e3?Be.substring(0,997)+"...":Be,$browser_version:be(Be,navigator.vendor,b,R),$browser_language:ze(),$browser_language_prefix:(M=ze(),"string"==typeof M?M.split("-")[0]:void 0),$screen_height:null==$e?void 0:$e.screen.height,$screen_width:null==$e?void 0:$e.screen.width,$viewport_height:null==$e?void 0:$e.innerHeight,$viewport_width:null==$e?void 0:$e.innerWidth,$lib:e.LIB_NAME,$lib_version:e.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return e.SDK_DIST_CHANNEL&&(K.$sdk_dist_channel=e.SDK_DIST_CHANNEL),K}var He=e=>{var r,i,t,o=Ce({},Xe(e.config.mask_personal_data_properties,e.config.custom_personal_data_properties,e.config.detect_google_search_app,e.config.disable_capture_url_hashes),Ge(e.config.custom_campaign_params,e.config.mask_personal_data_properties,e.config.custom_personal_data_properties),{$referrer:(null==ke?void 0:ke.referrer)||Fe,$referring_domain:null!=ke&&ke.referrer&&(null==(i=ke.referrer,t=null==ke?void 0:ke.createElement("a"),r=d(t)?null:(t.href=i,t))?void 0:r.host)||Fe}),a={};Te(o,(function(e,r){(n(We,r)||n(Ue,r))&&(a[r]=e)})),e.setPersonPropertiesForFlags(a)};function Ve(e,r){return[...e||[],...a(r)?r:[r]]}function qe(e,r){return(d(e)?1:e)*r}function Ye(e,r){return function(e){for(var r=0,n=0;e.length>n;n++)r=(r<<5)-r+e.charCodeAt(n),r|=0;return Math.abs(r)}(e)%100<f(100*r,0,100,Me)}function Qe(e){return n=>n&&Ye(n.properties.distinct_id,e)?r({},n,{properties:r({},n.properties,{$sample_type:["sampleByDistinctId"],$sample_threshold:e})}):null}function Ze(e){return n=>n&&Ye(n.properties.$session_id,e)?r({},n,{properties:r({},n.properties,{$sample_type:Ve(n.properties.$sample_type,"sampleBySessionId"),$sample_threshold:qe(n.properties.$sample_threshold,e)})}):null}function Je(e,i){return t=>{var o,a,l;return t?n(e,t.event)?100*Math.random()<f(100*i,0,100,Me)?r({},t,{properties:r({},t.properties,{$sample_type:Ve(null==(o=t.properties)?void 0:o.$sample_type,"sampleByEvent"),$sample_threshold:qe(null==(a=t.properties)?void 0:a.$sample_threshold,i),$sampled_events:Ve(null==(l=t.properties)?void 0:l.$sampled_events,e)})}):null:t:null}}var er=e=>(console.log("Would have sent event:",e),null),rr=["type"];function nr(e){var r=e.executionTimeMs;return e.type+(v(r)?"":" ("+r.toFixed(2)+"ms)")}var ir=Ae("[PostHog Action RateLimiting]");function tr(e,r){console.log(e,r)}var or=e=>(r,n)=>{var i;null==e||null==(i=e.sessionRecording)||i.tryAddCustomEvent("app-state",{title:r,stateEvent:n})};function ar(e,r,n){if(void 0===n&&(n=5),"object"!=typeof e||"object"!=typeof r)return{};if(e===r)return{};if(!e&&r)return r;if(!r||!e)return{};var i={},t=new Set([...Object.keys(e),...Object.keys(r)]);for(var o of t){var a=e[o],c=r[o];if(d(a))i[o]=c;else if(d(c))i[o]=a;else if(!(a===c||v(a)&&v(c)))if(l(a)&&l(c))if(n>1){var s=ar(a,c,n-1);u(s)||(i[o]=s)}else i[o]="max depth reached, checking for changed value";else i[o]=c}return i}var lr,ur,dr,vr=(lr=null,ur=0,dr=null,{info(e){dr!==e&&(ur=0,dr=e),ur++,lr&&clearTimeout(lr),lr=setTimeout((()=>{ir.info(1===ur?'action "'+e+'" has been rate limited':'action "'+e+'" has been rate limited ('+ur+" times)"),ur=0,lr=null}),1e3)}});function cr(e){void 0===e&&(e={});var r=sr(e);return{name:"posthog-kea-logger",events:{beforeReduxStore(e){e.middleware.push(r)}}}}function sr(e){void 0===e&&(e={});var r=e.maskAction,n=e.maskState,i=e.titleFunction,t=void 0===i?nr:i,o=e.logger,a=void 0===o?tr:o,l=e.include,u=void 0===l?{prevState:!0,nextState:!1,changedState:!0}:l,d=e.rateLimiterRefillRate,v=e.rateLimiterBucketSize,c=e.__stateComparisonDepth,s=new p({refillRate:void 0===d?1:d,bucketSize:void 0===v?10:v,refillInterval:1e3,A:ir});return e=>i=>o=>{var l=o,d=e.getState(),v=performance.now(),f=i(l),p=performance.now()-v,g=e.getState(),w=r?r(l):l;if(!w)return f;if(s.consumeRateLimit(l.type))vr.info(l.type);else try{var h=n?n(d,w):d,m=n?n(g,w):g,x=u.changedState?ar(h,m,null!=c?c:5):void 0,_={type:w.type,payload:function(e,r){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==r.indexOf(i))continue;n[i]=e[i]}return n}(w,rr),timestamp:Date.now(),executionTimeMs:p,prevState:u.prevState?h:void 0,nextState:u.nextState?m:void 0,changedState:u.changedState?x:void 0},b=t(_);a(b,_)}catch(e){ir.error("Error logging state:",e)}return f}}export{tr as browserConsoleLogger,cr as posthogKeaLogger,sr as posthogReduxLogger,er as printAndDropEverything,Qe as sampleByDistinctId,Je as sampleByEvent,Ze as sampleBySessionId,or as sessionRecordingLoggerForPostHogInstance,He as setAllPersonProfilePropertiesAsPersonPropertiesForFlags}; //# sourceMappingURL=customizations.js.map