UNPKG

inapp-spy

Version:
2 lines 4.38 kB
"use strict";(()=>{var T=Object.defineProperty,F=Object.defineProperties;var B=Object.getOwnPropertyDescriptors;var S=Object.getOwnPropertySymbols;var N=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable;var A=(e,t,n)=>t in e?T(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,c=(e,t)=>{for(var n in t||(t={}))N.call(t,n)&&A(e,n,t[n]);if(S)for(var n of S(t))_.call(t,n)&&A(e,n,t[n]);return e},m=(e,t)=>F(e,B(t));var u=(e,t,n)=>new Promise((a,o)=>{var r=i=>{try{s(n.next(i))}catch(w){o(w)}},p=i=>{try{s(n.throw(i))}catch(w){o(w)}},s=i=>i.done?a(i.value):Promise.resolve(i.value).then(r,p);s((n=n.apply(e,t)).next())});var C="Window is not available and no user agent was provided.",l=()=>{var e,t;if(typeof window!="undefined"){let n=((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.vendor)||(window==null?void 0:window.opera);if(n)return n}return console.error(C),""},d={isInApp:!1,appKey:void 0,appName:void 0,skipped:!1},L=e=>e.match(/(iPhone|iPad|iPod|Macintosh)/)!==null,k=({skip:e,appKey:t,ua:n})=>{if(!e||e.length===0)return!1;let a=L(n);return e.some(({appKey:o,platform:r})=>t===o&&(!r||a&&r==="apple"||!a&&r==="android"))};var g=()=>"TelegramWebview"in window||"TelegramWebviewProxy"in window||"TelegramWebviewProxyProto"in window;var x={telegram:{name:"Telegram"}},b=()=>{if(typeof window!="undefined"&&g())return"telegram"},J=Object.keys(x);var f={messenger:{regex:/(\bFB[\w_]+\/(Messenger))|(^(?!.*\buseragents)(?!.*\bIABMV).*(FB_IAB|FBAN).*)/i,name:"Facebook Messenger"},instagram:{regex:/\bInstagram/i,name:"Instagram"},facebook:{regex:/\bFB[\w_]+\//,name:"Facebook"},twitter:{regex:/\bTwitter/i,name:"Twitter"},line:{regex:/\bLine\//i,name:"Line"},wechat:{regex:/\bMicroMessenger\//i,name:"WeChat"},threads:{regex:/\bBarcelona/i,name:"Threads"},tiktok:{regex:/musical_ly|Bytedance/i,name:"TikTok"},snapchat:{regex:/Snapchat/i,name:"Snapchat"},linkedin:{regex:/LinkedInApp/i,name:"LinkedIn"},gsa:{regex:/GSA/i,name:"Google Search App"}},M=Object.keys(f),h=e=>M.find(t=>f[t].regex.test(e));var R=["WebView","(iPhone|iPod|iPad)(?!.*Safari/)","Android.*wv\\)","FB_\\w|FB\\w","Snapchat","GSA"],I=new RegExp(`${R.map(e=>`(${e})`).join("|")}`,"ig");var V=new RegExp(/Mozilla\/5\.0 \([^\)]+\) AppleWebKit\/[^\s]+ \(KHTML, like Gecko\) Version\/[^\s]+ (Mobile\/[^\s]+ )?Safari\/[^\s]+$/),D=e=>V.test(e),W=e=>["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(e)||window&&window.document&&e.includes("Mac")&&"ontouchend"in window.document,G=e=>[...e.matchAll(/Version\/([^\s]+)/g)][0][1],y=(e,t)=>e.localeCompare(t,void 0,{numeric:!0,sensitivity:"base"});function O(){return u(this,null,function*(){return new Promise(e=>{if(window.document.readyState==="complete")e(!0);else{let t=()=>{e(!0),window.removeEventListener("load",t)};window.addEventListener("load",t)}})})}var U=a=>u(void 0,[a],function*({maxTime:e,properties:t,interval:n}){let o=0;return new Promise(r=>{let p=setInterval(()=>{o+=n;for(let s of t)if(s in window){clearInterval(p),r(!0);return}o>=e&&(clearInterval(p),r(!1))},n)})}),P=({note:e,debug:t,last:n})=>{t&&console.log(e,"SchemaDataExtractor"in window||"MicrodataExtractor"in window?"This is Safari":n?"Did not detect Safari - assuming SFSVC":"Still checking if Safari",performance.now())},K="17",v=(...a)=>u(void 0,[...a],function*({debug:e=!1,maxVersion:t,maxTime:n=300}={}){let o=l();if(!o||!W(o)||!D(o)||"clearAppBadge"in((window==null?void 0:window.navigator)||{}))return!1;let r=G(o);if(y(r,K)<0||t!==void 0&&(y(t,K)<0||y(r,t)>0)||g())return!1;yield O(),e&&P({note:"Page loaded",debug:e});let p=yield U({interval:60,maxTime:n,properties:["SchemaDataExtractor","MicrodataExtractor"]});return e&&P({note:"Extra polling done",debug:e,last:!0}),!p});var E=(e={})=>{var p,s;let{skip:t,ua:n=""}=e,a=n||l();if(!a)return m(c({},d),{ua:a});let o=i=>k({skip:t,appKey:i,ua:a});if(a.match(I)!==null){let i=h(a);return o(i)?m(c({},d),{ua:a,skipped:!0}):{isInApp:!0,appKey:i,appName:i?f[i].name:void 0,ua:a,skipped:!1}}let r=b();return r?o(r)?m(c({},d),{ua:a,skipped:!0}):{isInApp:!0,appKey:r,appName:(s=(p=x)==null?void 0:p[r])==null?void 0:s.name,ua:a,skipped:!1}:m(c({},d),{ua:a})},j=v,ce=E;typeof window!="undefined"&&(window.InAppSpy=E,window.SFSVCExperimental=j);})(); //# sourceMappingURL=index.global.js.map