| declare const wx: { | 
|     getSystemInfoSync: Function | 
| }; | 
|   | 
| class Browser { | 
|     firefox = false | 
|     ie = false | 
|     edge = false | 
|     newEdge = false | 
|     weChat = false | 
|     version: string | number | 
| } | 
|   | 
| class Env { | 
|     browser = new Browser() | 
|     node = false | 
|     wxa = false | 
|     worker = false | 
|   | 
|     svgSupported = false | 
|     touchEventsSupported = false | 
|     pointerEventsSupported = false | 
|     domSupported = false | 
|     transformSupported = false | 
|     transform3dSupported = false | 
|   | 
|     hasGlobalWindow = typeof window !== 'undefined' | 
| } | 
|   | 
| const env = new Env(); | 
|   | 
| if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') { | 
|     env.wxa = true; | 
|     env.touchEventsSupported = true; | 
| } | 
| else if (typeof document === 'undefined' && typeof self !== 'undefined') { | 
|     // In worker | 
|     env.worker = true; | 
| } | 
| else if (!env.hasGlobalWindow || 'Deno' in window) { | 
|     // In node | 
|     env.node = true; | 
|     env.svgSupported = true; | 
| } | 
| else { | 
|     detect(navigator.userAgent, env); | 
| } | 
|   | 
| // Zepto.js | 
| // (c) 2010-2013 Thomas Fuchs | 
| // Zepto.js may be freely distributed under the MIT license. | 
|   | 
| function detect(ua: string, env: Env) { | 
|     const browser = env.browser; | 
|     const firefox = ua.match(/Firefox\/([\d.]+)/); | 
|     const ie = ua.match(/MSIE\s([\d.]+)/) | 
|         // IE 11 Trident/7.0; rv:11.0 | 
|         || ua.match(/Trident\/.+?rv:(([\d.]+))/); | 
|     const edge = ua.match(/Edge?\/([\d.]+)/); // IE 12 and 12+ | 
|   | 
|     const weChat = (/micromessenger/i).test(ua); | 
|   | 
|     if (firefox) { | 
|         browser.firefox = true; | 
|         browser.version = firefox[1]; | 
|     } | 
|     if (ie) { | 
|         browser.ie = true; | 
|         browser.version = ie[1]; | 
|     } | 
|   | 
|     if (edge) { | 
|         browser.edge = true; | 
|         browser.version = edge[1]; | 
|         browser.newEdge = +edge[1].split('.')[0] > 18; | 
|     } | 
|   | 
|     // It is difficult to detect WeChat in Win Phone precisely, because ua can | 
|     // not be set on win phone. So we do not consider Win Phone. | 
|     if (weChat) { | 
|         browser.weChat = true; | 
|     } | 
|   | 
|     env.svgSupported = typeof SVGRect !== 'undefined'; | 
|     env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge; | 
|     env.pointerEventsSupported = 'onpointerdown' in window | 
|         && (browser.edge || (browser.ie && +browser.version >= 11)); | 
|     env.domSupported = typeof document !== 'undefined'; | 
|   | 
|     const style = document.documentElement.style; | 
|   | 
|     env.transform3dSupported = ( | 
|         // IE9 only supports transform 2D | 
|         // transform 3D supported since IE10 | 
|         // we detect it by whether 'transition' is in style | 
|         (browser.ie && 'transition' in style) | 
|         // edge | 
|         || browser.edge | 
|         // webkit | 
|         || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix())) | 
|         // gecko-based browsers | 
|         || 'MozPerspective' in style | 
|     ) // Opera supports CSS transforms after version 12 | 
|       && !('OTransition' in style); | 
|   | 
|     // except IE 6-8 and very old firefox 2-3 & opera 10.1 | 
|     // other browsers all support `transform` | 
|     env.transformSupported = env.transform3dSupported | 
|         // transform 2D is supported in IE9 | 
|         || (browser.ie && +browser.version >= 9); | 
|   | 
| } | 
|   | 
|   | 
| export default env; |