UNPKG

express-useragent

Version:

JS Library & ExpressJS user-agent middleware exposing

2 lines (1 loc) 17.2 kB
"use strict";var expressUseragent=(()=>{var u=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var L=(o,e)=>{for(var t in e)u(o,t,{get:e[t],enumerable:!0})},I=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of K(e))!T.call(o,s)&&s!==t&&u(o,s,{get:()=>e[s],enumerable:!(i=B(e,s))||i.enumerable});return o};var R=o=>I(u({},"__esModule",{value:!0}),o);var ee={};L(ee,{UserAgent:()=>n,default:()=>Z,hydrate:()=>X,parse:()=>F});var D=["\\+https:\\/\\/developers.google.com\\/\\+\\/web\\/snippet\\/","ad\\smonitoring","adsbot","apex","applebot","archive.org_bot","baiduspider","bingbot","chromeheadless","cloudflare","cloudinary","crawler","curl","discordbot","duckduckbot","embedly","exabot","facebookexternalhit","facebot","flipboard","google","googlebot","gsa-crawler","gurujibot","guzzlehttp","heritrix","ia_archiver","insights","linkedinbot","ltx71","mediapartners","msnbot","odklbot","phantom\\.js","phantomjs","pingdom","pinterest","python","rtlnieuws","skypeuripreview","slackbot","slurp","spbot","telegrambot","test\\scertificate","testing","tiabot","tumblr ","twitterbot","vkshare","web\\sscraper","wget","yandexbot","whatsapp","orangebot","smtbot","qwantify","mj12bot","ahrefsbot","seznambot","panscient\\.com","duckduckgo-favicons-bot","uptimerobot","semrushbot","postman","dotbot","zoominfobot","ifttt","sogou","ru_bot","researchscan","nimbostratus-bot","slack-imgproxy","node-superagent","go-http-client","jersey","dataprovider.com","github-camo","dispatch","checkmarknetwork","screaming frog","whatweb","daum","netcraftsurveyagent","mojeekbot","surdotlybot","springbot"],V=new RegExp(`^.*(${D.join("|")}).*$`,"i"),J=/silk/i,H=/Silk-Accelerated=true/i,G=/smart-tv|smarttv|googletv|appletv|hbbtv|pov_tv|netcast.tv/i,N=/mobile/i,U=/mobile|^ios-/i,j=/dalvik/i,q=/scale/i,Y=/applewebkit/i,$=/micromessenger/i,z={isYaBrowser:!1,isAuthoritative:!0,isMobile:!1,isMobileNative:!1,isTablet:!1,isiPad:!1,isiPod:!1,isiPhone:!1,isiPhoneNative:!1,isAndroid:!1,isAndroidNative:!1,isBlackberry:!1,isOpera:!1,isIE:!1,isEdge:!1,isIECompatibilityMode:!1,isSafari:!1,isFirefox:!1,isWebkit:!1,isChrome:!1,isKonqueror:!1,isOmniWeb:!1,isSeaMonkey:!1,isFlock:!1,isAmaya:!1,isPhantomJS:!1,isEpiphany:!1,isDesktop:!1,isWindows:!1,isLinux:!1,isLinux64:!1,isMac:!1,isChromeOS:!1,isBada:!1,isSamsung:!1,isRaspberry:!1,isBot:!1,isCurl:!1,isAndroidTablet:!1,isWinJs:!1,isKindleFire:!1,isSilk:!1,isCaptive:!1,isSmartTV:!1,isUC:!1,isFacebook:!1,isAlamoFire:!1,isElectron:!1,silkAccelerated:!1,browser:"unknown",version:"unknown",os:"unknown",platform:"unknown",isWechat:!1,isWindowsPhone:!1,SilkAccelerated:!1,geoIp:{},source:"",electronVersion:""};function l(){return{...z,geoIp:{},source:"",electronVersion:""}}var n=class o{constructor(){this.versions={Edge:/(?:edge|edga|edgios|edg)\/([\d\w.-]+)/i,Firefox:/(?:firefox|fxios)\/([\d\w.-]+)/i,IE:/msie\s([\d.]+[\d])|trident\/\d+\.\d+;.*[rv:]+(\d+\.\d)/i,Chrome:/(?:chrome|crios)\/([\d\w.-]+)/i,Chromium:/chromium\/([\d\w.-]+)/i,Safari:/(version|safari)\/([\d\w.-]+)/i,Opera:/version\/([\d\w.-]+)|OPR\/([\d\w.-]+)/i,Ps3:/([\d\w.-]+)\)\s*$/i,Psp:/([\d\w.-]+)\)?\s*$/i,Amaya:/amaya\/([\d\w.-]+)/i,SeaMonkey:/seamonkey\/([\d\w.-]+)/i,OmniWeb:/omniweb\/v([\d\w.-]+)/i,Flock:/flock\/([\d\w.-]+)/i,Epiphany:/epiphany\/([\d\w.-]+)/i,WinJs:/msapphost\/([\d\w.-]+)/i,PhantomJS:/phantomjs\/([\d\w.-]+)/i,AlamoFire:/alamofire\/([\d\w.-]+)/i,UC:/ucbrowser\/([\d\w.]+)/i,Facebook:/FBAV\/([\d\w.]+)/i,WebKit:/applewebkit\/([\d\w.]+)/i,Wechat:/micromessenger\/([\d\w.]+)/i,Electron:/Electron\/([\d\w.]+)/i};this.browsers={YaBrowser:/yabrowser/i,Edge:/edge|edga|edgios|edg/i,Amaya:/amaya/i,Konqueror:/konqueror/i,Epiphany:/epiphany/i,SeaMonkey:/seamonkey/i,Flock:/flock/i,OmniWeb:/omniweb/i,Chromium:/chromium/i,Chrome:/chrome|crios/i,Safari:/safari/i,IE:/msie|trident/i,Opera:/opera|OPR\//i,PS3:/playstation 3/i,PSP:/playstation portable/i,Firefox:/firefox|fxios/i,WinJs:/msapphost/i,PhantomJS:/phantomjs/i,AlamoFire:/alamofire/i,UC:/UCBrowser/i,Facebook:/FBA[NV]/};this.os={Windows11:/\bwindows(?:\s|_|)11(?:\.\d+)?/i,Windows10:/windows nt 10\.0/i,Windows81:/windows nt 6\.3/i,Windows8:/windows nt 6\.2/i,Windows7:/windows nt 6\.1/i,UnknownWindows:/windows nt 6\.\d+/i,WindowsVista:/windows nt 6\.0/i,Windows2003:/windows nt 5\.2/i,WindowsXP:/windows nt 5\.1/i,Windows2000:/windows nt 5\.0/i,WindowsPhone81:/windows phone 8\.1/i,WindowsPhone80:/windows phone 8\.0/i,OSXCheetah:/os x 10[._]0/i,OSXPuma:/os x 10[._]1(\D|$)/i,OSXJaguar:/os x 10[._]2/i,OSXPanther:/os x 10[._]3/i,OSXTiger:/os x 10[._]4/i,OSXLeopard:/os x 10[._]5/i,OSXSnowLeopard:/os x 10[._]6/i,OSXLion:/os x 10[._]7/i,OSXMountainLion:/os x 10[._]8/i,OSXMavericks:/os x 10[._]9/i,OSXYosemite:/os x 10[._]10/i,OSXElCapitan:/os x 10[._]11/i,MacOSSierra:/os x 10[._]12/i,MacOSHighSierra:/os x 10[._]13/i,MacOSMojave:/os x 10[._]14/i,MacOSCatalina:/os x 10[._]15/i,MacOSBigSur:/(mac os x 10[._]16(?:[._]\d+)?|mac os (?:x )?11[._]\d+)/i,MacOSMonterey:/mac os (?:x )?12[._]\d+/i,MacOSVentura:/mac os (?:x )?13[._]\d+/i,MacOSSonoma:/mac os (?:x )?14[._]\d+/i,MacOSSequoia:/mac os (?:x )?15[._]\d+/i,MacOSTahoe:/mac os (?:x )?26[._]\d+/i,Mac:/os x/i,Linux:/linux/i,Linux64:/linux x86_64/i,ChromeOS:/cros/i,Wii:/wii/i,PS3:/playstation 3/i,PSP:/playstation portable/i,iPad:/\(iPad.*os (\d+)[._](\d+)/i,iPhone:/\(iPhone.*os (\d+)[._](\d+)/i,iOS:/ios/i,Bada:/Bada\/(\d+)\.(\d+)/i,Curl:/curl\/(\d+)\.(\d+)\.(\d+)/i,Electron:/Electron\/(\d+)\.(\d+)\.(\d+)/i};this.platform={Windows:/windows nt/i,WindowsPhone:/windows phone/i,Mac:/macintosh/i,Linux:/linux/i,Wii:/wii/i,Playstation:/playstation/i,iPad:/ipad/i,iPod:/ipod/i,iPhone:/iphone/i,Android:/android/i,Blackberry:/blackberry/i,Samsung:/samsung/i,Curl:/curl/i,Electron:/Electron/i,iOS:/^ios-/i};this.Agent=l()}reset(){return this.Agent=l(),this}testNginxGeoIP(e){return Object.entries(e!=null?e:{}).forEach(([t,i])=>{/^GEOIP/i.test(t)&&i!==void 0&&(this.Agent.geoIp[t]=Array.isArray(i)?i.join(","):i)}),this}testBot(){let e=V.exec(this.Agent.source.toLowerCase());e?this.Agent.isBot=e[1]:this.Agent.isAuthoritative||(this.Agent.isBot=/bot/i.test(this.Agent.source))}testSmartTV(){this.Agent.isSmartTV=G.test(this.Agent.source.toLowerCase())}testMobile(){this.Agent.isWindows||this.Agent.isLinux||this.Agent.isMac||this.Agent.isChromeOS?this.Agent.isDesktop=!0:(this.Agent.isAndroid||this.Agent.isSamsung)&&(this.Agent.isMobile=!0),(this.Agent.isiPad||this.Agent.isiPod||this.Agent.isiPhone||this.Agent.isBada||this.Agent.isBlackberry||this.Agent.isAndroid||this.Agent.isWindowsPhone)&&(this.Agent.isMobile=!0,this.Agent.isDesktop=!1),U.test(this.Agent.source)&&(this.Agent.isMobile=!0,this.Agent.isDesktop=!1),j.test(this.Agent.source)&&(this.Agent.isAndroidNative=!0,this.Agent.isMobileNative=!0),q.test(this.Agent.source)&&(this.Agent.isiPhoneNative=!0,this.Agent.isMobileNative=!0)}testAndroidTablet(){this.Agent.isAndroid&&!N.test(this.Agent.source)&&(this.Agent.isAndroidTablet=!0)}testTablet(){(this.Agent.isiPad||this.Agent.isAndroidTablet||this.Agent.isKindleFire)&&(this.Agent.isTablet=!0),/tablet/i.test(this.Agent.source)&&(this.Agent.isTablet=!0)}testCompatibilityMode(){if(!this.Agent.isIE)return;let e=/Trident\/(\d)\.0/i.exec(this.Agent.source);if(!e)return;let t=parseInt(e[1],10),i=parseInt(String(this.Agent.version),10);i===7&&t===7&&(this.Agent.isIECompatibilityMode=!0,this.Agent.version="11.0"),i===7&&t===6&&(this.Agent.isIECompatibilityMode=!0,this.Agent.version="10.0"),i===7&&t===5&&(this.Agent.isIECompatibilityMode=!0,this.Agent.version="9.0"),i===7&&t===4&&(this.Agent.isIECompatibilityMode=!0,this.Agent.version="8.0")}testSilk(){return J.test(this.Agent.source)&&(this.Agent.isSilk=!0),H.test(this.Agent.source)&&(this.Agent.silkAccelerated=!0,this.Agent.SilkAccelerated=!0),this.Agent.isSilk?"Silk":!1}testKindleFire(){let{source:e}=this.Agent;return/KFOT/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire"):/KFTT/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HD"):/KFJWI/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HD 8.9"):/KFJWA/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HD 8.9 4G"):/KFSOWI/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HD 7"):/KFTHWI/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HDX 7"):/KFTHWA/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HDX 7 4G"):/KFAPWI/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HDX 8.9"):/KFAPWA/gi.test(e)?(this.Agent.isKindleFire=!0,"Kindle Fire HDX 8.9 4G"):!1}testCaptiveNetwork(){return/CaptiveNetwork/gi.test(this.Agent.source)?(this.Agent.isCaptive=!0,this.Agent.isMac=!0,this.Agent.platform="Apple Mac","CaptiveNetwork"):!1}testWebkit(){this.Agent.browser==="unknown"&&Y.test(this.Agent.source)&&(this.Agent.browser="Apple WebKit",this.Agent.isWebkit=!0)}testWechat(){$.test(this.Agent.source)&&(this.Agent.isWechat=!0,this.Agent.version=this.getWechatVersion(this.Agent.source))}parse(e){return new o().hydrate(e).Agent}hydrate(e){return this.Agent=l(),this.Agent.source=e.trim(),this.Agent.os=this.getOS(this.Agent.source),this.Agent.platform=this.getPlatform(this.Agent.source),this.Agent.browser=this.getBrowser(this.Agent.source),this.Agent.version=this.getBrowserVersion(this.Agent.source),this.Agent.electronVersion=this.getElectronVersion(this.Agent.source),this.testBot(),this.testSmartTV(),this.testMobile(),this.testAndroidTablet(),this.testTablet(),this.testCompatibilityMode(),this.testSilk(),this.testKindleFire(),this.testCaptiveNetwork(),this.testWebkit(),this.testWechat(),this}getBrowser(e){let t=this.Agent;if(this.browsers.YaBrowser.test(e))return t.isYaBrowser=!0,"YaBrowser";if(this.browsers.AlamoFire.test(e))return t.isAlamoFire=!0,"AlamoFire";if(this.browsers.Edge.test(e))return t.isEdge=!0,"Edge";if(this.browsers.PhantomJS.test(e))return t.isPhantomJS=!0,"PhantomJS";if(this.browsers.Konqueror.test(e))return t.isKonqueror=!0,"Konqueror";if(this.browsers.Amaya.test(e))return t.isAmaya=!0,"Amaya";if(this.browsers.Epiphany.test(e))return t.isEpiphany=!0,"Epiphany";if(this.browsers.SeaMonkey.test(e))return t.isSeaMonkey=!0,"SeaMonkey";if(this.browsers.Flock.test(e))return t.isFlock=!0,"Flock";if(this.browsers.OmniWeb.test(e))return t.isOmniWeb=!0,"OmniWeb";if(this.browsers.Opera.test(e))return t.isOpera=!0,"Opera";if(this.browsers.Chromium.test(e))return t.isChrome=!0,"Chromium";if(this.browsers.Facebook.test(e))return t.isFacebook=!0,"Facebook";if(this.browsers.Chrome.test(e))return t.isChrome=!0,"Chrome";if(this.browsers.WinJs.test(e))return t.isWinJs=!0,"WinJs";if(this.browsers.IE.test(e))return t.isIE=!0,"IE";if(this.browsers.Firefox.test(e))return t.isFirefox=!0,"Firefox";if(this.browsers.Safari.test(e))return t.isSafari=!0,"Safari";if(this.browsers.PS3.test(e))return"ps3";if(this.browsers.PSP.test(e))return"psp";if(this.browsers.UC.test(e))return t.isUC=!0,"UCBrowser";if(e.includes("Dalvik"))return"unknown";if(!e.startsWith("Mozilla")){let i=/^([\d\w.-]+)\/[\d\w.-]+/i.exec(e);if(i)return t.isAuthoritative=!1,i[1]}return"unknown"}getBrowserVersion(e){var c,d,f,A,b,g,w,p,m,S,k,O,W,P,M,v,y,E;let i=this.Agent.browser,s=(r,a=1)=>{var x,C;let h=e.match(r);return h?(C=(x=h[a])!=null?x:h[1])!=null?C:"unknown":null};switch(i){case"Edge":return(c=s(this.versions.Edge))!=null?c:"unknown";case"PhantomJS":return(d=s(this.versions.PhantomJS))!=null?d:"unknown";case"Chrome":return(f=s(this.versions.Chrome))!=null?f:"unknown";case"Chromium":return(A=s(this.versions.Chromium))!=null?A:"unknown";case"Safari":return(b=s(this.versions.Safari,2))!=null?b:"unknown";case"Opera":{let r=e.match(this.versions.Opera);return r&&(r[1]||r[2])||"unknown"}case"Firefox":return(g=s(this.versions.Firefox))!=null?g:"unknown";case"WinJs":return(w=s(this.versions.WinJs))!=null?w:"unknown";case"IE":{let r=e.match(this.versions.IE);return r&&(m=(p=r[2])!=null?p:r[1])!=null?m:"unknown"}case"ps3":return(S=s(this.versions.Ps3))!=null?S:"unknown";case"psp":return(k=s(this.versions.Psp))!=null?k:"unknown";case"Amaya":return(O=s(this.versions.Amaya))!=null?O:"unknown";case"Epiphany":return(W=s(this.versions.Epiphany))!=null?W:"unknown";case"SeaMonkey":return(P=s(this.versions.SeaMonkey))!=null?P:"unknown";case"Flock":return(M=s(this.versions.Flock))!=null?M:"unknown";case"OmniWeb":return(v=s(this.versions.OmniWeb))!=null?v:"unknown";case"UCBrowser":return(y=s(this.versions.UC))!=null?y:"unknown";case"Facebook":return(E=s(this.versions.Facebook))!=null?E:"unknown";default:if(i!=="unknown"){let r=new RegExp(`${i}[\\/ ]([\\d\\w.\\-]+)`,"i"),a=e.match(r);if(a)return a[1]}else if(this.testWebkit(),this.Agent.isWebkit){let r=e.match(this.versions.WebKit);if(r)return r[1]}}return"unknown"}getWechatVersion(e){let t=e.match(this.versions.Wechat);return t?t[1]:"unknown"}getElectronVersion(e){let t=e.match(this.versions.Electron);return t?(this.Agent.isElectron=!0,t[1]):""}getOS(e){if(this.os.WindowsVista.test(e))return this.Agent.isWindows=!0,"Windows Vista";if(this.os.Windows7.test(e))return this.Agent.isWindows=!0,"Windows 7";if(this.os.Windows8.test(e))return this.Agent.isWindows=!0,"Windows 8";if(this.os.Windows81.test(e))return this.Agent.isWindows=!0,"Windows 8.1";if(this.os.Windows11.test(e))return this.Agent.isWindows=!0,"Windows 11";if(this.os.Windows10.test(e))return this.Agent.isWindows=!0,"Windows 10.0";if(this.os.Windows2003.test(e))return this.Agent.isWindows=!0,"Windows 2003";if(this.os.WindowsXP.test(e))return this.Agent.isWindows=!0,"Windows XP";if(this.os.Windows2000.test(e))return this.Agent.isWindows=!0,"Windows 2000";if(this.os.WindowsPhone81.test(e))return this.Agent.isWindowsPhone=!0,"Windows Phone 8.1";if(this.os.WindowsPhone80.test(e))return this.Agent.isWindowsPhone=!0,"Windows Phone 8.0";if(this.os.Linux64.test(e))return this.Agent.isLinux=!0,this.Agent.isLinux64=!0,"Linux 64";if(this.os.Linux.test(e))return this.Agent.isLinux=!0,"Linux";if(this.os.ChromeOS.test(e))return this.Agent.isChromeOS=!0,"Chrome OS";if(this.os.Wii.test(e))return"Wii";if(this.os.PS3.test(e)||this.os.PSP.test(e))return"Playstation";if(this.os.OSXCheetah.test(e))return this.Agent.isMac=!0,"OS X Cheetah";if(this.os.OSXPuma.test(e))return this.Agent.isMac=!0,"OS X Puma";if(this.os.OSXJaguar.test(e))return this.Agent.isMac=!0,"OS X Jaguar";if(this.os.OSXPanther.test(e))return this.Agent.isMac=!0,"OS X Panther";if(this.os.OSXTiger.test(e))return this.Agent.isMac=!0,"OS X Tiger";if(this.os.OSXLeopard.test(e))return this.Agent.isMac=!0,"OS X Leopard";if(this.os.OSXSnowLeopard.test(e))return this.Agent.isMac=!0,"OS X Snow Leopard";if(this.os.OSXLion.test(e))return this.Agent.isMac=!0,"OS X Lion";if(this.os.OSXMountainLion.test(e))return this.Agent.isMac=!0,"OS X Mountain Lion";if(this.os.OSXMavericks.test(e))return this.Agent.isMac=!0,"OS X Mavericks";if(this.os.OSXYosemite.test(e))return this.Agent.isMac=!0,"OS X Yosemite";if(this.os.OSXElCapitan.test(e))return this.Agent.isMac=!0,"OS X El Capitan";if(this.os.MacOSSierra.test(e))return this.Agent.isMac=!0,"macOS Sierra";if(this.os.MacOSHighSierra.test(e))return this.Agent.isMac=!0,"macOS High Sierra";if(this.os.MacOSMojave.test(e))return this.Agent.isMac=!0,"macOS Mojave";if(this.os.MacOSCatalina.test(e))return this.Agent.isMac=!0,"macOS Catalina";if(this.os.MacOSBigSur.test(e))return this.Agent.isMac=!0,"macOS Big Sur";if(this.os.MacOSMonterey.test(e))return this.Agent.isMac=!0,"macOS Monterey";if(this.os.MacOSVentura.test(e))return this.Agent.isMac=!0,"macOS Ventura";if(this.os.MacOSSonoma.test(e))return this.Agent.isMac=!0,"macOS Sonoma";if(this.os.MacOSSequoia.test(e))return this.Agent.isMac=!0,"macOS Sequoia";if(this.os.MacOSTahoe.test(e))return this.Agent.isMac=!0,"macOS Tahoe";if(this.os.Mac.test(e))return this.Agent.isMac=!0,"OS X";let t=e.match(this.os.iPad);if(t)return this.Agent.isiPad=!0,t[0].replace("_",".");let i=e.match(this.os.iPhone);return i?(this.Agent.isiPhone=!0,i[0].replace("_",".")):this.os.Bada.test(e)?(this.Agent.isBada=!0,"Bada"):this.os.Curl.test(e)?(this.Agent.isCurl=!0,"Curl"):this.os.iOS.test(e)?(this.Agent.isiPhone=!0,"iOS"):this.os.Electron.test(e)?(this.Agent.isElectron=!0,"Electron"):"unknown"}getPlatform(e){return this.platform.Windows.test(e)?"Microsoft Windows":this.platform.WindowsPhone.test(e)?(this.Agent.isWindowsPhone=!0,"Microsoft Windows Phone"):this.platform.Mac.test(e)?"Apple Mac":this.platform.Curl.test(e)?"Curl":this.platform.Electron.test(e)?(this.Agent.isElectron=!0,"Electron"):this.platform.Android.test(e)?(this.Agent.isAndroid=!0,"Android"):this.platform.Blackberry.test(e)?(this.Agent.isBlackberry=!0,"Blackberry"):this.platform.Linux.test(e)?"Linux":this.platform.Wii.test(e)?"Wii":this.platform.Playstation.test(e)?"Playstation":this.platform.iPad.test(e)?(this.Agent.isiPad=!0,"iPad"):this.platform.iPod.test(e)?(this.Agent.isiPod=!0,"iPod"):this.platform.iPhone.test(e)?(this.Agent.isiPhone=!0,"iPhone"):this.platform.Samsung.test(e)?(this.Agent.isSamsung=!0,"Samsung"):this.platform.iOS.test(e)?"Apple iOS":"unknown"}};var Q=new n,F=o=>new n().parse(o),X=o=>new n().hydrate(o),_=Object.assign(Q,{UserAgent:n,parse:F,hydrate:X});if(typeof globalThis!="undefined"){let o=globalThis;o.UserAgent=n,o.useragent=_}var Z=_;return R(ee);})();