UNPKG

detect-features

Version:
3 lines (2 loc) 20.8 kB
function e(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{d(n.next(e))}catch(e){o(e)}}function s(e){try{d(n.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}d((n=n.apply(e,t||[])).next())}))}function t(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{d(n.next(e))}catch(e){o(e)}}function s(e){try{d(n.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}d((n=n.apply(e,t||[])).next())}))}const r=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","radeon r9 200","sgx 543","sgx543"],n=e=>e.toLowerCase().replace(/angle \((.+)\)*$/,"$1").replace(/\s+([0-9]+gb|direct3d.+$)|\(r\)| \([^\)]+\)$/g,""),i=(()=>{const{userAgent:e,platform:t,maxTouchPoints:r}=window.navigator,n=/(iphone|ipod|ipad)/i.test(e),i="iPad"===t||"MacIntel"===t&&r>0&&!window.MSStream;return{isIpad:i,isMobile:/android/i.test(e)||n||i,isSafari12:/Version\/12.+Safari/.test(e)}})(),o=[],a=[],s=(e,t)=>{if(e===t)return 0;const r=e;e.length>t.length&&(e=t,t=r);let n=e.length,i=t.length;for(;n>0&&e.charCodeAt(~-n)===t.charCodeAt(~-i);)n--,i--;let s,d=0;for(;d<n&&e.charCodeAt(d)===t.charCodeAt(d);)d++;if(n-=d,i-=d,0===n)return i;let c,u,m=0,p=0,l=0;for(;p<n;)a[p]=e.charCodeAt(d+p),o[p]=++p;for(;l<i;)for(s=t.charCodeAt(d+l),c=l++,m=l,p=0;p<n;p++)u=s===a[p]?c:c+1,c=o[p],m=o[p]=c>m?u>m?m+1:u:u>c?c+1:u;return m},d="undefined"==typeof window,c={},u=({mobileTiers:e=[0,15,30,60],desktopTiers:o=[0,15,30,60],override:{renderer:a,isIpad:u=Boolean(null==i?void 0:i.isIpad),isMobile:m=Boolean(null==i?void 0:i.isMobile),screenSize:p=window.screen,loadBenchmarks:l}={},glContext:g,failIfMajorPerformanceCaveat:f=!1,benchmarksURL:x="https://unpkg.com/detect-gpu@2.0.3/dist/benchmarks"}={})=>t(void 0,void 0,void 0,(function*(){if(d)return{tier:0,type:"IS_SRR"};const h=(e,t,r,n,i)=>({device:i,fps:n,gpu:r,isMobile:m,tier:e,type:t});let w;if(a)w=[a=n(a)];else{const e=g||((e,t=!1)=>{const r={alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:t,powerPreference:"high-performance",stencil:!1};e&&delete r.powerPreference;const n=document.createElement("canvas");return n.getContext("webgl",r)||n.getContext("experimental-webgl",r)||void 0})(null==i?void 0:i.isSafari12,f);if(!e)return h(0,"WEBGL_UNSUPPORTED");const t=e.getExtension("WEBGL_debug_renderer_info");if(t&&(a=e.getParameter(t.UNMASKED_RENDERER_WEBGL)),!a)return h(1,"FALLBACK");w=((e,t,r)=>"apple gpu"===t?((e,t,r)=>{let n=[t];if(r){const t="\n precision highp float;\n attribute vec3 aPosition;\n varying float vvv;\n void main() {\n vvv = 0.31622776601683794;\n gl_Position = vec4(aPosition, 1.0);\n }\n ",r="\n precision highp float;\n varying float vvv;\n void main() {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n gl_FragColor = enc;\n }\n ",o=e.createShader(35633),a=e.createShader(35632),s=e.createProgram();if(a&&o&&s){e.shaderSource(o,t),e.shaderSource(a,r),e.compileShader(o),e.compileShader(a),e.attachShader(s,o),e.attachShader(s,a),e.linkProgram(s),e.detachShader(s,o),e.detachShader(s,a),e.deleteShader(o),e.deleteShader(a),e.useProgram(s);const d=e.createBuffer();e.bindBuffer(34962,d),e.bufferData(34962,new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),35044);const c=e.getAttribLocation(s,"aPosition");e.vertexAttribPointer(c,3,5126,!1,0,0),e.enableVertexAttribArray(c),e.clearColor(1,1,1,1),e.clear(16384),e.viewport(0,0,1,1),e.drawArrays(4,0,3);const u=new Uint8Array(4);e.readPixels(0,0,1,1,6408,5121,u),e.deleteProgram(s),e.deleteBuffer(d),n={801621810:(null==i?void 0:i.isIpad)?["apple a12x gpu"]:["apple a11 gpu","apple a12 gpu","apple a13 gpu"],8016218135:(null==i?void 0:i.isIpad)?["apple a9x gpu","apple a10 gpu","apple a10x gpu"]:["apple a9 gpu","apple a10 gpu"]}[u.join("")]||n}}return n})(e,t,r):[t])(e,a=n(a),m)}const b=yield Promise.all(w.map((e=>((e=(e=>t(void 0,void 0,void 0,(function*(){try{const t=yield fetch(`${x}/${e}`).then((e=>e.json()));return t.shift(),t}catch(e){return void console.error(e)}}))),r)=>t(void 0,void 0,void 0,(function*(){const t=m?["adreno","apple","mali-t","mali","nvidia","powervr"]:["intel","amd","radeon","nvidia","geforce"];let n;for(let e=0;e<t.length;e++){const i=t[e];if(r.indexOf(i)>-1){n=i;break}}if(!n)return[];const i=`${m?"m":"d"}-${n}.json`,o=c[i]=c[i]||e(i),a=yield o;if(!a)return[];const d=(e=>{var t;const r=(e=e.replace(/\([^\)]+\)/,"")).match(/[\d]+/)||e.match(/(\W|^)([a-zA-Z]{1,3})(\W|$)/g);return null!==(t=null==r?void 0:r.join("").replace(/\W|amd/g,""))&&void 0!==t?t:""})(r),l="apple"===n;let g=a.filter((([,e])=>e===d));g.length||(g=a.filter((([e])=>e.indexOf(r)>-1)));const f=g.length;if(0===f)return[];let x,[h,,,w]=f>1?g.map((e=>[e,s(r,e[0])])).sort((([,e],[,t])=>e-t))[0][0]:g[0],b=Number.MAX_VALUE;const{devicePixelRatio:S}=window,v=p.width*S*(p.height*S);l&&m&&(w=w.filter((([,,,e])=>{var t;return(null!==(t=null==e?void 0:e.indexOf(u?"ipad":"iphone"))&&void 0!==t?t:-1)>-1})));for(let e=0;e<w.length;e++){const t=w[e],[r,n]=t,i=r*n,o=Math.abs(v-i);o<b&&(b=o,x=t)}const[,,_,E]=x;return[b,_,h,E]})))(l,e)))),S=1===b.length?b[0]:b.sort((([e=Number.MAX_VALUE],[t=Number.MAX_VALUE])=>e-t))[0];if(0===S.length)return r.filter((e=>(null==a?void 0:a.indexOf(e))>-1))[0]?h(0,"BLOCKLISTED",a):h(1,"FALLBACK",a);const[,v,_,E]=S;if(-1===v)return h(0,"BLOCKLISTED",_,v,E);const A=m?e:o;let C=0;for(let e=0;e<A.length;e++)v>=A[e]&&(C=e);return h(C,"BENCHMARK",_,v,E)}));var m="undefined"==typeof window;const p=new(function(){function e(e){this.userAgent=e||(!m&&window.navigator?window.navigator.userAgent:""),this.isAndroidDevice=!/like android/i.test(this.userAgent)&&/android/i.test(this.userAgent),this.iOSDevice=this.match(1,/(iphone|ipod|ipad)/i).toLowerCase(),!m&&"MacIntel"===navigator.platform&&navigator.maxTouchPoints>2&&!window.MSStream&&(this.iOSDevice="ipad")}return e.prototype.match=function(e,t){var r=this.userAgent.match(t);return r&&r.length>1&&r[e]||""},Object.defineProperty(e.prototype,"isMobile",{get:function(){return!this.isTablet&&(/[^-]mobi/i.test(this.userAgent)||"iphone"===this.iOSDevice||"ipod"===this.iOSDevice||this.isAndroidDevice||/nexus\s*[0-6]\s*/i.test(this.userAgent))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isTablet",{get:function(){return/tablet/i.test(this.userAgent)&&!/tablet pc/i.test(this.userAgent)||"ipad"===this.iOSDevice||this.isAndroidDevice&&!/[^-]mobi/i.test(this.userAgent)||!/nexus\s*[0-6]\s*/i.test(this.userAgent)&&/nexus\s*[0-9]+/i.test(this.userAgent)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isDesktop",{get:function(){return!this.isMobile&&!this.isTablet},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isMacOS",{get:function(){return/macintosh/i.test(this.userAgent)&&{version:this.match(1,/mac os x (\d+(\.?_?\d+)+)/i).replace(/[_\s]/g,".").split(".").map((function(e){return e}))[1]}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isWindows",{get:function(){return/windows /i.test(this.userAgent)&&{version:this.match(1,/Windows ((NT|XP)( \d\d?.\d)?)/i)}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isiOS",{get:function(){return!!this.iOSDevice&&{version:this.match(1,/os (\d+([_\s]\d+)*) like mac os x/i).replace(/[_\s]/g,".")||this.match(1,/version\/(\d+(\.\d+)?)/i)}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isAndroid",{get:function(){return this.isAndroidDevice&&{version:this.match(1,/android[ \/-](\d+(\.\d+)*)/i)}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"browser",{get:function(){var e=this.match(1,/version\/(\d+(\.\d+)?)/i);return/opera/i.test(this.userAgent)?{name:"Opera",version:e||this.match(1,/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(this.userAgent)?{name:"Opera",version:this.match(1,/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||e}:/SamsungBrowser/i.test(this.userAgent)?{name:"Samsung Internet for Android",version:e||this.match(1,/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/yabrowser/i.test(this.userAgent)?{name:"Yandex Browser",version:e||this.match(1,/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(this.userAgent)?{name:"UC Browser",version:this.match(1,/(?:ucbrowser)[\s\/](\d+(\.\d+)?)/i)}:/msie|trident/i.test(this.userAgent)?{name:"Internet Explorer",version:this.match(1,/(?:msie |rv:)(\d+(\.\d+)?)/i)}:/(edge|edgios|edga|edg)/i.test(this.userAgent)?{name:"Microsoft Edge",version:this.match(2,/(edge|edgios|edga|edg)\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(this.userAgent)?{name:"Firefox",version:this.match(1,/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)}:/chromium/i.test(this.userAgent)?{name:"Chromium",version:this.match(1,/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||e}:/chrome|crios|crmo/i.test(this.userAgent)?{name:"Chrome",version:this.match(1,/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/safari|applewebkit/i.test(this.userAgent)?{name:"Safari",version:e}:{name:this.match(1,/^(.*)\/(.*) /),version:this.match(2,/^(.*)\/(.*) /)}},enumerable:!1,configurable:!0}),e}()),{isMobile:l,isTablet:g,isDesktop:f,isiOS:x,isAndroid:h,browser:w}=p,b="object"==typeof w&&"Chrome"===w.name,S="object"==typeof w&&"Firefox"===w.name,v="object"==typeof w&&"Safari"===w.name,_="object"==typeof w&&"Microsoft Edge"===w.name,E="object"==typeof w&&"Internet Explorer"===w.name,A="object"==typeof w&&"Opera"===w.name,C="object"==typeof w&&"Samsung Internet for Android"===w.name,B="object"==typeof w&&"Yandex Browser"===w.name,T="object"==typeof w&&"UC Browser"===w.name,y="object"==typeof w&&"Chromium"===w.name;var P={browserName:"object"==typeof w&&w.name||"",browserVersion:"object"==typeof w&&w.version||"",isAndroid:h,isChrome:b,isChromium:y,isDesktop:f,isEdge:_,isFirefox:S,isInternetExplorer:E,isMobile:l,isOpera:A,isSafari:v,isSamsungBrowser:C,isTablet:g,isUCBrowser:T,isYandexBrowser:B,isiOS:x},W=(()=>{const e=new Audio,t=document.createElement("video");function r(e,t){const r=e.canPlayType(t);return!("probably"!==r&&"maybe"!==r)}return{audio:{MP3:r(e,"audio/mpeg"),Ogg:r(e,"audio/ogg"),WAV:r(e,"audio/wav")},video:{HLS:r(t,"application/vnd.apple.mpegURL")||r(t,"application/x-mpegurl"),MP4:r(t,"video/mp4"),Ogg:r(t,"video/ogg"),WebM:r(t,"video/webm")}}})();const M=(e,t)=>e.getParameter(t),L=(e,t,r)=>e.getShaderPrecisionFormat(t,r),R=(e,t)=>e.getExtension(t);var O=(()=>{const e={stencil:!0},t=document.createElement("canvas"),r=t.getContext("webgl",e)||t.getContext("experimental-webgl",e);if(!(r&&r instanceof WebGLRenderingContext))return!1;const n=R(r,"WEBGL_debug_renderer_info");r.enable(2960);const i=R(r,"EXT_texture_filter_anisotropic")||R(r,"WEBKIT_EXT_texture_filter_anisotropic")||R(r,"MOZ_EXT_texture_filter_anisotropic"),o=R(r,"WEBGL_draw_buffers");return{base:{renderer:M(r,7937),rendererUnmasked:n&&M(r,n.UNMASKED_RENDERER_WEBGL),shaderVersion:M(r,35724),vendor:M(r,7936),vendorUnmasked:n&&M(r,n.UNMASKED_VENDOR_WEBGL),version:M(r,7938)},general:{aliasedLineWidthRange:M(r,33902).toString(),aliasedPointSizeRange:M(r,33901).toString(),alphaBits:M(r,3413),antialias:!!r.getContextAttributes().antialias,blueBits:M(r,3412),depthBits:M(r,3414),greenBits:M(r,3411),maxCombinedTextureImageUnits:M(r,35661),maxCubeMapTextureSize:M(r,34076),maxFragmentUniformVectors:M(r,36349),maxRenderBufferSize:M(r,34024),maxTextureImageUnits:M(r,34930),maxTextureSize:M(r,3379),maxVaryingVectors:M(r,36348),maxVertexAttributes:M(r,34921),maxVertexTextureImageUnits:M(r,35660),maxVertexUniformVectors:M(r,36347),maxViewportDimensions:M(r,3386).toString(),precision:{fragmentShaderHighPrecision:[L(r,35632,36338).rangeMin,L(r,35632,36338).rangeMax,L(r,35632,36338).precision].toString(),fragmentShaderLowPrecision:[L(r,35632,36336).rangeMin,L(r,35632,36336).rangeMax,L(r,35632,36336).precision].toString(),fragmentShaderMediumPrecision:[L(r,35632,36337).rangeMin,L(r,35632,36337).rangeMax,L(r,35632,36337).precision].toString(),vertexShaderHighPrecision:[L(r,35633,36338).rangeMin,L(r,35633,36338).rangeMax,L(r,35633,36338).precision].toString(),vertexShaderLowPrecision:[L(r,35633,36336).rangeMin,L(r,35633,36336).rangeMax,L(r,35633,36336).precision].toString(),vertexShaderMediumPrecision:[L(r,35633,36337).rangeMin,L(r,35633,36337).rangeMax,L(r,35633,36337).precision].toString()},redBits:M(r,3410),stencilBits:M(r,3415),subPixelBits:M(r,3408)},extensions:{maxAnisotropy:i?M(r,i.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,maxDrawBuffers:o?M(r,o.MAX_DRAW_BUFFERS_WEBGL):0,supportedExtensions:r.getSupportedExtensions(),compressedTextureASTCExtension:R(r,"WEBGL_compressed_texture_astc")||null,compressedTextureATCExtension:R(r,"WEBGL_compressed_texture_atc")||null,compressedTextureETC1Extension:R(r,"WEBGL_compressed_texture_etc1")||null,compressedTextureETCExtension:R(r,"WEBGL_compressed_texture_etc")||null,compressedTexturePVRTCExtension:R(r,"WEBGL_compressed_texture_pvrtc")||R(r,"WEBKIT_WEBGL_compressed_texture_pvrtc")||null,compressedTextureS3TCExtension:R(r,"WEBGL_compressed_texture_s3tc")||null,compressedTextureS3TCSRGBExtension:R(r,"WEBGL_compressed_texture_s3tc_srgb")||null}}})(),U=(()=>{const e=document.createElement("canvas").getContext("webgl2",{stencil:!0});if(!(e&&e instanceof WebGL2RenderingContext))return!1;const t=R(e,"WEBGL_debug_renderer_info");e.enable(2960);const r=R(e,"EXT_texture_filter_anisotropic")||R(e,"WEBKIT_EXT_texture_filter_anisotropic")||R(e,"MOZ_EXT_texture_filter_anisotropic");return{base:{renderer:M(e,7937),rendererUnmasked:t&&M(e,t.UNMASKED_RENDERER_WEBGL),shaderVersion:M(e,35724),vendor:M(e,7936),vendorUnmasked:t&&M(e,t.UNMASKED_VENDOR_WEBGL),version:M(e,7938)},general:{aliasedLineWidthRange:M(e,33902).toString(),aliasedPointSizeRange:M(e,33901).toString(),alphaBits:M(e,3413),antialias:!!e.getContextAttributes().antialias,blueBits:M(e,3412),depthBits:M(e,3414),greenBits:M(e,3411),maxCombinedTextureImageUnits:M(e,35661),maxCubeMapTextureSize:M(e,34076),maxFragmentUniformVectors:M(e,36349),maxRenderBufferSize:M(e,34024),maxTextureImageUnits:M(e,34930),maxTextureSize:M(e,3379),maxVaryingVectors:M(e,36348),maxVertexAttributes:M(e,34921),maxVertexTextureImageUnits:M(e,35660),maxVertexUniformVectors:M(e,36347),maxViewportDimensions:M(e,3386).toString(),precision:{fragmentShaderHighPrecision:[L(e,35632,36338).rangeMin,L(e,35632,36338).rangeMax,L(e,35632,36338).precision].toString(),fragmentShaderLowPrecision:[L(e,35632,36336).rangeMin,L(e,35632,36336).rangeMax,L(e,35632,36336).precision].toString(),fragmentShaderMediumPrecision:[L(e,35632,36337).rangeMin,L(e,35632,36337).rangeMax,L(e,35632,36337).precision].toString(),vertexShaderHighPrecision:[L(e,35633,36338).rangeMin,L(e,35633,36338).rangeMax,L(e,35633,36338).precision].toString(),vertexShaderLowPrecision:[L(e,35633,36336).rangeMin,L(e,35633,36336).rangeMax,L(e,35633,36336).precision].toString(),vertexShaderMediumPrecision:[L(e,35633,36337).rangeMin,L(e,35633,36337).rangeMax,L(e,35633,36337).precision].toString()},redBits:M(e,3410),stencilBits:M(e,3415),subPixelBits:M(e,3408)},extensions:{maxAnisotropy:r?M(e,r.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,supportedExtensions:e.getSupportedExtensions(),compressedTextureASTCExtension:R(e,"WEBGL_compressed_texture_astc")||null,compressedTextureATCExtension:R(e,"WEBGL_compressed_texture_atc")||null,compressedTextureETC1Extension:R(e,"WEBGL_compressed_texture_etc1")||null,compressedTextureETCExtension:R(e,"WEBGL_compressed_texture_etc")||null,compressedTexturePVRTCExtension:R(e,"WEBGL_compressed_texture_pvrtc")||R(e,"WEBKIT_WEBGL_compressed_texture_pvrtc")||null,compressedTextureS3TCExtension:R(e,"WEBGL_compressed_texture_s3tc")||null,compressedTextureS3TCSRGBExtension:R(e,"WEBGL_compressed_texture_s3tc_srgb")||null},specific:{max3DTextureSize:M(e,32883),maxArrayTextureLayers:M(e,35071),maxClientWaitTimeout:M(e,37447),maxColorAttachments:M(e,36063),maxCombinedFragmentUniformComponents:M(e,35379),maxCombinedUniformBlocks:M(e,35374),maxCombinedVertexUniformComponents:M(e,35377),maxDrawBuffers:M(e,34852),maxElementIndex:M(e,36203),maxElementsIndices:M(e,33001),maxElementsVertices:M(e,33e3),maxFragmentInputComponents:M(e,37157),maxFragmentUniformBlocks:M(e,35373),maxFragmentUniformComponents:M(e,35657),maxProgramTexelOffset:M(e,35077),maxSamples:M(e,36183),maxServerWaitTimeout:M(e,37137),maxTextureLODBias:M(e,34045),maxTransformFeedbackInterleavedComponents:M(e,35978),maxTransformFeedbackSeparateAttribs:M(e,35979),maxTransformFeedbackSeparateComponents:M(e,35968),maxUniformBlockSize:M(e,35376),maxUniformBufferBindings:M(e,35375),maxVaryingComponents:M(e,35659),maxVertexOutputComponents:M(e,37154),maxVertexUniformBlocks:M(e,35371),maxVertexUniformComponents:M(e,35658),minProgramTexelOffset:M(e,35076),uniformBufferOffsetAlignment:M(e,35380)}}})(),k=!!window.CSS&&!!window.CSS.animationWorklet||!1,I=!!window.AudioWorklet||!1,D=!!window.BroadcastChannel||!1,G=!!window.crypto&&!!window.crypto.getRandomValues||!1,V=!!window.fetch||!1,j=!!window.Gamepad||!1,F=!!window.ImageBitmap&&!!window.createImageBitmap||!1,N=(()=>{try{return!!(new Image).decode}catch(e){return!1}})(),X=(()=>{try{return!!window.indexedDB}catch(e){return!1}})(),z=!!window.IntersectionObserver||!1,K=!!window.CSS&&!!window.CSS.layoutWorklet||!1,$=(()=>{try{return!!window.localStorage}catch(e){return!1}})(),q=!!window.MutationObserver||!1,H=!!window.OffscreenCanvas||!1,Y=!!window.CSS&&!!window.CSS.paintWorklet||!1,Z=!(!window.performance||!window.performance.now)||!1,J=!!window.PerformanceObserver||!1,Q=!!window.requestIdleCallback||!1,ee=!!navigator.serviceWorker||!1,te=(()=>{try{return!!window.sessionStorage}catch(e){return!1}})(),re=(()=>{try{return!!navigator.userActivation}catch(e){return!1}})(),ne=!!window.WebAssembly||!1,ie=!!window.AudioContext||!!window.webkitAudioContext||!1,oe=(()=>{const e=document.createElement("canvas");return e.width=1,e.height=1,!!e.toDataURL&&5===e.toDataURL("image/webp").indexOf("image/webp")})(),ae=!!(window.RTCPeerConnection&&window.RTCDataChannelEvent||window.webkitRTCPeerConnection||window.mozRTCPeerConnection||window.msRTCPeerConnection||window.oRTCPeerConnection),se=!!window.WebSocket||!1,de=!!navigator.getVRDisplays||!1,ce=(()=>{try{const e=window.URL||window.webkitURL;if(void 0===e||void 0===window.Blob||void 0===window.Worker)return!1;const t=new Blob([""]),r=e.createObjectURL(t),n=new Worker(r);return e.revokeObjectURL(r),!!n&&(n.terminate(),!0)}catch(e){return!1}})(),ue=!!window.Worker||!1,me=!!navigator.xr||!1,pe=!!navigator.cookieEnabled||!1,le=(()=>{const e=navigator.doNotTrack||!1;return!(!e||"unspecified"===e)})(),ge=navigator.hardwareConcurrency||0,fe=window.devicePixelRatio||1,xe=(()=>{if(null!==window.ArrayBuffer){const e=new ArrayBuffer(4),t=new Uint32Array(e),r=new Uint8Array(e);return t[0]=1,1===r[0]?"little":"big"}return"Unknown"})();const he=()=>e(void 0,void 0,void 0,(function*(){return{browserFeatures:{browserType:P,isAnimationWorkletSupported:k,isAudioWorkletSupported:I,isBroadcastChannelSupported:D,isCryptoSupported:G,isFetchSupported:V,isGamepadSupported:j,isImageBitmapSupported:F,isImageDecodeSupported:N,isIndexedDBSupported:X,isIntersectionObserverSupported:z,isLayoutWorkletSupported:K,isLocalStorageSupported:$,isMutationObserverSupported:q,isOffscreenCanvasSupported:H,isPaintWorkletSupported:Y,isPerformanceNowSupported:Z,isPerformanceObserverSupported:J,isRequestIdleCallbackSupported:Q,isServiceWorkerSupported:ee,isSessionStorageSupported:te,isUserActivationSupported:re,isWebAssemblySupported:ne,isWebAudioSupported:ie,isWebGL2Supported:!1!==U,isWebGLSupported:!1!==O,isWebPSupported:oe,isWebRTCSupported:ae,isWebSocketSupported:se,isWebVRSupported:de,isWebWorkerInlineSupported:ce,isWebWorkerSupported:ue,isWebXRSupported:me,mediaFeatures:W,webGL2Features:U,webGLFeatures:O},browserSettings:{isCookieEnabled:pe,isDoNotTrackEnabled:le},hardwareFeatures:{GPUTier:yield u(),availableCPUCores:ge,devicePixelRatio:fe,endianness:xe}}}));export{he as getFeatures}; //# sourceMappingURL=detect-features.esm.js.map