getEnv.js 2.9 KB

1
  1. var _PlatformRegExpMap;import{global}from"./global";export var InvokerContainerTypeEnum;!function(n){n.DingTalk="DingTalk",n.mPaaS="mPaaS",n.Alipay="Alipay",n.Unknown="unknown"}(InvokerContainerTypeEnum||(InvokerContainerTypeEnum={}));export var InvokerPlatformTypeEnum;!function(n){n.Android="Android",n.IOS="IOS",n.Mac="Mac",n.Linux="Linux",n.Windows="Windows",n.Unknown="Unknown"}(InvokerPlatformTypeEnum||(InvokerPlatformTypeEnum={}));export var InvokerAppTypeEnum;!function(n){n.Mobile="mobile",n.Desktop="desktop",n.MiniApp="mini",n.Web="web",n.Unknown="unknown"}(InvokerAppTypeEnum||(InvokerAppTypeEnum={}));export var InvokerRuntimeTypeEnum;!function(n){n.Module="module",n.Plugin="plugin",n.App="app",n.Unknown="Unknown"}(InvokerRuntimeTypeEnum||(InvokerRuntimeTypeEnum={}));export var UA_IDENTIFIER=(null==global?void 0:global.navigator)&&(navigator.swuserAgent||navigator.userAgent)||"";export function getUAIdentifier(){return(null==global?void 0:global.navigator)&&(navigator.swuserAgent||navigator.userAgent)||""}var REG_TAURUS_CLIENT_INFO=/TaurusApp\((\S*)\/(\S*)\)/,uaResult=UA_IDENTIFIER.match(REG_TAURUS_CLIENT_INFO),PlatformRegExpMap=((_PlatformRegExpMap={})[InvokerPlatformTypeEnum.Android]=/Android/i,_PlatformRegExpMap[InvokerPlatformTypeEnum.IOS]=/iPhone|iPad|iPod|iOS/i,_PlatformRegExpMap[InvokerPlatformTypeEnum.Windows]=/Windows NT|Windows/i,_PlatformRegExpMap[InvokerPlatformTypeEnum.Mac]=/Macintosh|Mac/i,_PlatformRegExpMap[InvokerPlatformTypeEnum.Linux]=/Linux/i,_PlatformRegExpMap[InvokerPlatformTypeEnum.Unknown]=/[a-zA-Z]/,_PlatformRegExpMap);export var getContainerType=function(){return"unknown"!==APP_NAME&&APP_VERSION?/DingTalk/g.test(UA_IDENTIFIER)?InvokerContainerTypeEnum.DingTalk:InvokerContainerTypeEnum.mPaaS:/(mPaaSClient)|(AlipayClient)/g.test(UA_IDENTIFIER)?InvokerContainerTypeEnum.Alipay:InvokerContainerTypeEnum.Unknown};function isUndef(n){return"undefined"===n}function isMiniApp(){return!isUndef(typeof my)&&null!==my&&!isUndef(typeof my.alert)}export var APP_NAME=uaResult?uaResult[1]:"unknown";export var APP_VERSION=uaResult?uaResult[2]:"unknown";export var getPlatformType=function(){var n=InvokerPlatformTypeEnum.Unknown;return Object.keys(PlatformRegExpMap).some((function(e){return!!PlatformRegExpMap[e].test(UA_IDENTIFIER)&&(n=e,!0)})),n};export var getAppType=function(){var n,e,o,r=InvokerAppTypeEnum.Unknown,p=getPlatformType();return p!==InvokerPlatformTypeEnum.Android&&p!==InvokerPlatformTypeEnum.IOS||"unknown"===APP_NAME||isMiniApp()?(null===(n=window)||void 0===n||null===(e=n.navigator)||void 0===e||null===(o=e.userAgent)||void 0===o?void 0:o.indexOf("dingtalk-win"))>=0?r=InvokerAppTypeEnum.Desktop:isUndef(typeof my)||null===my||isUndef(typeof my.alert)?/[http|https]/.test(location.protocol)?r=InvokerAppTypeEnum.Web:(console.warn("[ENV] 检测到页面在非钉钉客户端中打开,JSAPI 调用不会生效!"),r=InvokerAppTypeEnum.Unknown):r=InvokerAppTypeEnum.MiniApp:r=InvokerAppTypeEnum.Mobile,r};