| 1 |
- "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}var Config={LIB_VERSION:"1.8.1",LIB_NAME:"MG"},_={},ArrayProto=Array.prototype,ObjProto=Object.prototype,slice=ArrayProto.slice,nativeToString=ObjProto.toString,nativeHasOwnProperty=Object.prototype.hasOwnProperty,nativeForEach=ArrayProto.forEach,nativeIsArray=Array.isArray,breaker={};_.each=function(e,t,n){if(null==e)return!1;if(nativeForEach&&e.forEach===nativeForEach)e.forEach(t,n);else if(e.length===+e.length){for(var i=0,r=e.length;i<r;i++)if(i in e&&t.call(n,e[i],i,e)===breaker)return!1}else for(var a in e)if(nativeHasOwnProperty.call(e,a)&&t.call(n,e[a],a,e)===breaker)return!1},_.extend=function(n){return _.each(slice.call(arguments,1),function(e){for(var t in e)void 0!==e[t]&&(n[t]=e[t])}),n},_.extend2Layers=function(n){return _.each(slice.call(arguments,1),function(e){for(var t in e)void 0!==e[t]&&(_.isObject(e[t])&&_.isObject(n[t])?_.extend(n[t],e[t]):n[t]=e[t])}),n},_.isArray=nativeIsArray||function(e){return"[object Array]"===nativeToString.call(e)},_.isFunction=function(e){try{return"function"==typeof e}catch(e){return!1}},_.isPromise=function(e){return"[object Promise]"===nativeToString.call(e)&&null!==e},_.isObject=function(e){return"[object Object]"===nativeToString.call(e)&&null!==e},_.isEmptyObject=function(e){if(_.isObject(e)){for(var t in e)if(nativeHasOwnProperty.call(e,t))return!1;return!0}return!1},_.isUndefined=function(e){return void 0===e},_.isString=function(e){return"[object String]"===nativeToString.call(e)},_.isDate=function(e){return"[object Date]"===nativeToString.call(e)},_.isBoolean=function(e){return"[object Boolean]"===nativeToString.call(e)},_.isNumber=function(e){return"[object Number]"===nativeToString.call(e)&&/[\d\.]+/.test(String(e))},_.isJSONString=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},_.decodeURIComponent=function(t){var n="";try{n=decodeURIComponent(t)}catch(e){n=t}return n},_.encodeDates=function(n){return _.each(n,function(e,t){_.isDate(e)?n[t]=_.formatDate(e):_.isObject(e)&&(n[t]=_.encodeDates(e))}),n},_.formatDate=function(e){function t(e){return e<10?"0"+e:e}return e.getFullYear()+"-"+t(e.getMonth()+1)+"-"+t(e.getDate())+" "+t(e.getHours())+":"+t(e.getMinutes())+":"+t(e.getSeconds())+"."+((n=e.getMilliseconds())<100&&9<n?"0"+n:n<10?"00"+n:n);var n},_.searchObjDate=function(n){try{(_.isObject(n)||_.isArray(n))&&_.each(n,function(e,t){_.isObject(e)||_.isArray(e)?_.searchObjDate(n[t]):_.isDate(e)&&(n[t]=_.formatDate(e))})}catch(e){logger$1.warn(e)}},_.UUID=function(){var e=(new Date).getTime();return String(Math.random()).replace(".","").slice(1,11)+"-"+e},_.UUIDv4=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})},_.setMpPlatform=function(e){_.mpPlatform=e},_.getMpPlatform=function(){return _.mpPlatform},_.createExtraHeaders=function(){return{"TA-Integration-Type":Config.LIB_NAME,"TA-Integration-Version":Config.LIB_VERSION,"TA-Integration-Count":1,"TA-Integration-Extra":_.getMpPlatform()}};var logger$1="object"===_typeof(logger$1)?logger$1:{};logger$1.info=function(){if("object"===("undefined"==typeof console?"undefined":_typeof(console))&&console.log&&logger$1.enabled)try{return console.log.apply(console,arguments)}catch(e){console.log(arguments[0])}},logger$1.warn=function(){if("object"===("undefined"==typeof console?"undefined":_typeof(console))&&console.log&&logger$1.enabled)try{return console.warn.apply(console,arguments)}catch(e){console.warn(arguments[0])}};var KEY_NAME_MATCH_REGEX=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,PropertyChecker=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"stripProperties",value:function(e){return _.isObject(e)&&_.each(e,function(e,t){_.isString(e)||_.isNumber(e)||_.isDate(e)||_.isBoolean(e)||_.isArray(e)||logger$1.warn("您的数据-",t,e,"-格式不满足要求,可能无法正确入库")}),e}},{key:"_checkPropertiesKey",value:function(e){var n=!0;return _.each(e,function(e,t){KEY_NAME_MATCH_REGEX.test(t)||(logger$1.warn("不合法的 KEY 值: "+t),n=!1)}),n}},{key:"event",value:function(e){return!(!_.isString(e)||!KEY_NAME_MATCH_REGEX.test(e))||(logger$1.warn("请检查参数格式, eventName 必须是英文字母开头, 包含字母和数字和下划线的不超过50个字符的字符串: "+e),!1)}},{key:"propertyName",value:function(e){return!(!_.isString(e)||!KEY_NAME_MATCH_REGEX.test(e))||(logger$1.warn("请检查参数格式, propertyName 必须是英文字母开头, 包含字母和数字和下划线的不超过50个字符的字符串: "+e),!1)}},{key:"properties",value:function(e){return this.stripProperties(e),!e||(_.isObject(e)?!!this._checkPropertiesKey(e)||(logger$1.warn("请检查参数格式, properties 的 key 只能以字母开头,包含数字、字母和下划线 _,长度最大为50个字符"),!1):(logger$1.warn("properties 可以没有,但有的话必须是对象"),!1))}},{key:"propertiesMust",value:function(e){return this.stripProperties(e),void 0===e||!_.isObject(e)||_.isEmptyObject(e)?(logger$1.warn("properties必须是对象且有值"),!1):!!this._checkPropertiesKey(e)||(logger$1.warn("请检查参数格式, properties 的 key 只能以字母开头,包含数字、字母和下划线 _,长度最大为50个字符"),!1)}},{key:"userId",value:function(e){return!(!_.isString(e)||!/^.{1,64}$/.test(e))||(logger$1.warn("用户 id 必须是不能为空,且小于 64 位的字符串"),!1)}},{key:"userAddProperties",value:function(e){if(!this.propertiesMust(e))return!1;for(var t in e)if(!_.isNumber(e[t]))return logger$1.warn("userAdd 的属性需要为数值类型"),!1;return!0}},{key:"userAppendProperties",value:function(e){if(!this.propertiesMust(e))return!1;for(var t in e)if(!_.isArray(e[t]))return logger$1.warn("userAppend 的属性需要为 Array 类型"),!1;return!0}}]),e}(),AutoTrackBridge=function(){function n(e,t){_classCallCheck(this,n),this.taInstance=e,this.config=t||{},this.referrer="直接打开",this.config.isPlugin?(e.App=function(){App.apply(this,arguments)},inension(e.Page)):(e=App,App=this._initAppExtention(e),e=Page,Page=this._initPageExtension(e))}return _createClass(n,[{key:"_initPageExtension",value:function(i){var r=this;return function(e){var t=e.onShow,n=e.onShareAppMessage;return e.onShow=function(e){r.onPageShow(),"function"==typeof t&&t.call(this,e)},"function"==typeof n&&(e.onShareAppMessage=function(e){e=n.call(this,e);return r.onPageShare(e)}),i(e)}}},{key:"_initAppExtention",value:function(r){var a=this;return function(e){var t=e.onLaunch,n=e.onShow,i=e.onHide;return e.onLaunch=function(e){a.onAppLaunch(e,this),"function"==typeof t&&t.call(this,e)},e.onShow=function(e){a.onAppShow(e),"function"==typeof n&&n.call(this,e)},e.onHide=function(){a.onAppHide(),"function"==typeof i&&i.call(this)},r(e)}}},{key:"onAppLaunch",value:function(e,t){this._setAutoTrackProperties(e),_.isUndefined(t)||(t[this.taInstance.name]=this.taInstance),this.config.appLaunch&&(t={},e&&e.path&&(t["#url_path"]=this._getPath(e.path)),this.taInstance._internalTrack("ta_mp_launch",t))}},{key:"onAppShow",value:function(e){var t;this.config.appHide&&this.taInstance.timeEvent("ta_mp_hide"),this._setAutoTrackProperties(e),this.config.appShow&&(t={},e&&e.path&&(t["#url_path"]=this._getPath(e.path)),this.taInstance._internalTrack("ta_mp_show",t))}},{key:"onAppHide",value:function(){var e;this.config.appHide&&(e={"#url_path":this._getCurrentPath()},this.taInstance._internalTrack("ta_mp_hide",e))}},{key:"_getCurrentPath",value:function(){var e="未取到";try{var t=getCurrentPages(),e=t[t.length-1].route}catch(e){logger$1.info(e)}return e}},{key:"_setAutoTrackProperties",value:function(e){e={"#scene":e.scene};this.taInstance._setAutoTrackProperties(e)}},{key:"_getPath",value:function(e){return"string"==typeof e?e.replace(/^\//,""):"取值异常"}},{key:"onPageShare",value:function(e){return this.config.pageShare&&this.taInstance._internalTrack("ta_mp_share",{"#url_path":this._getCurrentPath()}),_.isObject(e)?e:{}}},{key:"onPageShow",value:function(){var e,t;this.config.pageShow&&(t={"#url_path":(e=this._getCurrentPath())||"系统没有取到值","#referrer":this.referrer},this.referrer=e,this.taInstance._internalTrack("ta_mp_view",t))}}]),n}(),AutoTrackBridge$1=function(){function r(e,t,n){var i=this;_classCallCheck(this,r),this.taInstance=e,this.config=t||{};t=n.getLaunchOptionsSync();this._onShow(t),this.startTracked=!0,n.onShow(function(e){i._onShow(e)}),n.onHide(function(){i.startTracked=!1,i.config.appHide&&i.taInstance._internalTrack("ta_mg_hide")})}return _createClass(r,[{key:"_onShow",value:function(e){this.startTracked||(this.config.appHide&&this.taInstance.timeEvent("ta_mg_hide"),e&&e.scene&&this.taInstance._setAutoTrackProperties({"#scene":e.scene}),this.config.appShow&&this.taInstance._internalTrack("ta_mg_show"))}}]),r}(),PlatformProxy=function(){function i(e,t,n){_classCallCheck(this,i),this.api=e,this.config=t,this._config=n}return _createClass(i,[{key:"getConfig",value:function(){return this.config}},{key:"getStorage",value:function(e,t,n){if(!t){if("dd_mp"===this._config.platform){var i=this.api.getStorageSync({key:e});return _.isJSONString(i.data)?JSON.parse(i.data):{}}i=this.api.getStorageSync(e);return _.isJSONString(i)?JSON.parse(i):{}}this.api.getStorage({key:e,success:function(e){e=_.isJSONString(e.data)?JSON.parse(e.data):{};n(e)},fail:function(){logger$1.warn("getStorage faild"),n({})}})}},{key:"setStorage",value:function(e,t){this.api.setStorage({key:e,data:t})}},{key:"_getPlatform",value:function(){return""}},{key:"getSystemInfo",value:function(t){var n=this._config.mpPlatform;this.api.getSystemInfo({success:function(e){_.isFunction(n)?e.mp_platform=n(e):e.mp_platform=n,t.success(e)},complete:function(){t.complete()}})}},{key:"getNetworkType",value:function(t){this.api.getNetworkType({success:function(e){t.success(e)},complete:function(){t.complete()}})}},{key:"onNetworkStatusChange",value:function(e){this.api.onNetworkStatusChange(e)}},{key:"request",value:function(t){if("ali_mp"!==this._config.platform&&"dd_mp"!==this._config.platform)return this.api.request(t);var e=_.extend({},t);return e.headers=t.header,e.success=function(e){e.statusCode=e.status,t.success(e)},e.fail=function(e){e.errMsg=e.errorMessage,t.fail(e)},"dd_mp"===this._config.platform?this.api.httpRequest(e):this.api.request(e)}},{key:"initAutoTrackInstance",value:function(e,t){return _.isObject(t.autoTrack)&&(t.autoTrack.isPlugin=t.is_plugin),new(this._config.mp?AutoTrackBridge:AutoTrackBridge$1)(e,t.autoTrack,this.api)}},{key:"setGlobal",value:function(e,t){this._config.mp?logger$1.warn("ThinkingAnalytics: we do not set global name for TA instance when you do not enable auto track."):GameGlobal[t]=e}},{key:"getAppOptions",value:function(e){var t={};try{t=this.api.getLaunchOptionsSync()}catch(e){logger$1.warn("Cannot get launch options.")}if(_.isFunction(e))try{this._config.mp?this.api.onAppShow(e):this.api.onShow(e)}catch(e){logger$1.warn("Cannot register onShow callback.")}return t}},{key:"showToast",value:function(e){var t;_.isFunction(this.api.showToast)&&(t={title:e},"dd_mp"!==this._config.platform&&"ali_mp"!==this._config.platform||(t.content=e),this.api.showToast(t))}}],[{key:"createInstance",value:function(){return this._createInstance("R_CURRENT_PLATFORM")}},{key:"_createInstance",value:function(e){switch(e){case"wechat_mp":return new i(wx,{persistenceName:"thinkingdata_wechat"},{mpPlatform:"wechat",mp:!0,platform:e});case"wechat_mg":return new i(wx,{persistenceName:"thinkingdata_wechat_game"},{mpPlatform:"wechat",platform:e});case"qq_mg":return new i(qq,{persistenceName:"thinkingdata_qq_game"},{mpPlatform:"qq",platform:e});case"baidu_mp":return new i(swan,{persistenceName:"thinkingdata_swan"},{mpPlatform:function(e){return e.host},mp:!0,platform:e});case"baidu_mg":return new i(swan,{persistenceName:"thinkingdata_swan_game"},{mpPlatform:function(e){return e.host},platform:e});case"tt_mg":return new i(tt,{persistenceName:"thinkingdata_tt_game"},{mpPlatform:function(e){return e.appName},platform:e});case"tt_mp":return new i(tt,{persistenceName:"thinkingdata_tt"},{mpPlatform:function(e){return e.appName},mp:!0,platform:e});case"ali_mp":return new i(my,{persistenceName:"thinkingdata_ali"},{mpPlatform:function(e){return e.app},mp:!0,platform:e});case"dd_mp":return new i(dd,{persistenceName:"thinkingdata_dd"},{mpPlatform:"dingding",mp:!0,platform:e});case"bl_mg":return new i(bl,{persistenceName:"thinkingdata_mg"},{mpPlatform:"bilibili",platform:e});case"kuaishou_mp":return new i(ks,{persistenceName:"thinkingdata_kuaishou"},{mpPlatform:"kuaishou",mp:!0,platform:e})}}}]),i}(),AutoTrackBridge$2=function e(t,n){var i=this;_classCallCheck(this,e),this.taInstance=t,this.config=n||{},this.config.appShow&&this.taInstance._internalTrack("ta_mg_show"),this.config.appHide&&this.taInstance.timeEvent("ta_mg_hide"),qg.onShow(function(){i.config.appHide&&i.taInstance.timeEvent("ta_mg_hide"),i.config.appShow&&i.taInstance._internalTrack("ta_mg_show")}),qg.onHide(function(){i.config.appHide&&i.taInstance._internalTrack("ta_mg_hide")})},PlatformProxy$1=function(){function e(){_classCallCheck(this,e),this.config={persistenceName:"thinkingdata_qg_vivo_game",asyncPersistence:!0}}return _createClass(e,[{key:"getConfig",value:function(){return this.config||{}}},{key:"getStorage",value:function(e,t,n){t||logger$1.warn("TA: invalid storage configuration"),qg.getStorage({key:e,success:function(e){e=_.isJSONString(e)?JSON.parse(e):{};n(e)},fail:function(){n({})}})}},{key:"setStorage",value:function(e,t){qg.setStorage({key:e,value:t})}},{key:"getSystemInfo",value:function(i){qg.getSystemInfo({success:function(e){var t=e,n=[e.osType,e.osVersionName].join(" ");t.brand=e.manufacturer,t.system=n,t.mp_platform="vivo_qg",i.success(t)},complete:function(){i.complete()}})}},{key:"getNetworkType",value:function(n){qg.getNetworkType({success:function(e){var t=e;t.networkType=e.type,n.success(t)},complete:function(){n.complete()}})}},{key:"onNetworkStatusChange",value:function(n){qg.subscribeNetworkStatus({callback:function(e){var t=e;t.networkType=e.type,n(t)}})}},{key:"request",value:function(t){return qg.request({url:t.url,data:t.data,method:t.method,header:t.header,success:function(e){t.success(e)},fail:function(e){t.fail(e)}})}},{key:"initAutoTrackInstance",value:function(e,t){return new AutoTrackBridge$2(e,t.autoTrack)}},{key:"setGlobal",value:function(e,t){globalThis[t]=e}},{key:"getAppOptions",value:function(){return{}}},{key:"showToast",value:function(e){qg.showToast({message:e,duration:0})}}],[{key:"createInstance",value:function(){return new e}}]),e}(),AutoTrackBridge$3=function e(t,n,i){var r=this;_classCallCheck(this,e),this.taInstance=t,this.config=n||{},this.config.appShow&&this.taInstance._internalTrack("ta_mg_show"),this.config.appHide&&this.taInstance.timeEvent("ta_mg_hide"),i.onShow(function(){r.config.appHide&&r.taInstance.timeEvent("ta_mg_hide"),r.config.appShow&&r.taInstance._internalTrack("ta_mg_show")}),i.onHide(function(){r.config.appHide&&r.taInstance._internalTrack("ta_mg_hide")})},PlatformProxy$2=function(){function i(e,t,n){_classCallCheck(this,i),this.api=e,this.config=t,this._config=n}return _createClass(i,[{key:"getConfig",value:function(){return this.config||{}}},{key:"getStorage",value:function(e,t){t&&logger.warn("TA: invalid storage configuration");e=localStorage.getItem(e);return _.isJSONString(e)?JSON.parse(e):{}}},{key:"setStorage",value:function(e,t){localStorage.setItem(e,t)}},{key:"getSystemInfo",value:function(t){var n=this._config.mpPlatform;this.api.getSystemInfo({success:function(e){e.mp_platform=n,t.success(e)},complete:function(){t.complete()}})}},{key:"getNetworkType",value:function(t){this.api.getNetworkType({success:function(e){t.success(e)},complete:function(){t.complete()}})}},{key:"onNetworkStatusChange",value:function(t){this.api.onNetworkStatusChange({callback:function(e){t(e)}})}},{key:"request",value:function(t){var n=new XMLHttpRequest;if(n.open(t.method,t.url),t.header)for(var e in t.header)n.setRequestHeader(e,t.header[e]);return n.onreadystatechange=function(){var e;4===n.readyState&&200===n.status&&(e={statusCode:200},_.isJSONString(n.responseText)&&(e.data=JSON.parse(n.responseText)),t.success(e))},n.ontimeout=function(){var e={errMsg:"timeout"};t.fail(e)},n.send(t.data),n}},{key:"initAutoTrackInstance",value:function(e,t){return new AutoTrackBridge$3(e,t.autoTrack,this.api)}},{key:"setGlobal",value:function(e,t){globalThis[t]=e}},{key:"getAppOptions",value:function(){return this.api.getLaunchOptionsSync()}},{key:"showToast",value:function(e){this.api.showToast({title:e,icon:"none",duration:2e3})}}],[{key:"createInstance",value:function(){return this._createInstance("R_CURRENT_PLATFORM")}},{key:"_createInstance",value:function(e){switch(e){case"oppo":return new i(qg,{persistenceName:"thinkingdata_qg_oppo_game"},{mpPlatform:"oppo_qg"});case"huawei":return new i(hbs,{persistenceName:"thinkingdata_qg_huawei_game"},{mpPlatform:"huawei_qg"});case"mz":return new i(qg,{persistenceName:"thinkingdata_qg_mz_game"},{mpPlatform:"mz"});case"xiaomi":return new i(qg,{persistenceName:"thinkingdata_qg"},{mpPlatform:"xiaomi"})}}}]),i}(),PlatformProxy$3=function(){function e(){_classCallCheck(this,e),this.config={persistenceName:"thinkingdata_mg"}}return _createClass(e,[{key:"getConfig",value:function(){return this.config}},{key:"getStorage",value:function(e,t){t&&logger.warn("TA: invalid storage configuration");e=localStorage.getItem(e);return _.isJSONString(e)?JSON.parse(e):{}}},{key:"setStorage",value:function(e,t){localStorage.setItem(e,t)}},{key:"_setSystemProxy",value:function(e){this._sysCallback=e}},{key:"getSystemInfo",value:function(e){var t={mp_platform:"web",system:this._getOs(),screenWidth:window.screen.width,screenHeight:window.screen.height};this._sysCallback&&(t=_.extend(t,this._sysCallback(e))),e.success(t),e.complete()}},{key:"_getOs",value:function(){var e=navigator.userAgent;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(e)?"iOS":/Android/.test(e)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Mac/i.test(e)?"MacOS":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"ChromeOS":""}},{key:"getNetworkType",value:function(e){e.complete()}},{key:"onNetworkStatusChange",value:function(){}},{key:"request",value:function(t){var n=new XMLHttpRequest;if(n.open(t.method,t.url),t.header)for(var e in t.header)n.setRequestHeader(e,t.header[e]);return n.onreadystatechange=function(){var e;4===n.readyState&&200===n.status&&(e={statusCode:200},_.isJSONString(n.responseText)&&(e.data=JSON.parse(n.responseText)),t.success(e))},n.ontimeout=function(){var e={errMsg:"timeout"};t.fail(e)},n.send(t.data),n}},{key:"initAutoTrackInstance",value:function(){}},{key:"setGlobal",value:function(e,t){window[t]=e}},{key:"getAppOptions",value:function(){return this.api.getLaunchOptionsSync()}},{key:"showToast",value:function(){}}],[{key:"createInstance",value:function(){return new e}}]),e}(),PlatformProxyCC=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"createInstance",value:function(){if(cc.sys.platform===cc.sys.WECHAT_GAME)return PlatformProxy._createInstance("wechat_mg");if(cc.sys.platform===cc.sys.BAIDU_GAME)return PlatformProxy._createInstance("baidu_mg");if(cc.sys.platform===cc.sys.VIVO_GAME)return PlatformProxy$1.createInstance();if(cc.sys.platform===cc.sys.QQ_PLAY)return PlatformProxy._createInstance("qq_mg");if(cc.sys.platform===cc.sys.OPPO_GAME)return PlatformProxy$2._createInstance("oppo");if(cc.sys.platform===cc.sys.HUAWEI_GAME)return PlatformProxy$2._createInstance("huawei");if(cc.sys.platform===cc.sys.XIAOMI_GAME)return PlatformProxy$2._createInstance("xiaomi");if(cc.sys.platform===cc.sys.BYTEDANCE_GAME)return PlatformProxy._createInstance("tt_mg");var e=PlatformProxy$3.createInstance();return e._sysCallback=function(){return{system:cc.sys.os+" "+cc.sys.osVersion}},e}}]),e}(),PlatformAPI=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"_getCurrentPlatform",value:function(){return this.currentPlatform||(this.currentPlatform=PlatformProxyCC.createInstance())}},{key:"getConfig",value:function(){return this._getCurrentPlatform().getConfig()}},{key:"getStorage",value:function(e,t,n){return this._getCurrentPlatform().getStorage(e,t,n)}},{key:"setStorage",value:function(e,t){return this._getCurrentPlatform().setStorage(e,t)}},{key:"getSystemInfo",value:function(e){return this._getCurrentPlatform().getSystemInfo(e)}},{key:"getNetworkType",value:function(e){return this._getCurrentPlatform().getNetworkType(e)}},{key:"onNetworkStatusChange",value:function(e){this._getCurrentPlatform().onNetworkStatusChange(e)}},{key:"request",value:function(e){return this._getCurrentPlatform().request(e)}},{key:"initAutoTrackInstance",value:function(e,t){return this._getCurrentPlatform().initAutoTrackInstance(e,t)}},{key:"setGlobal",value:function(e,t){e&&t&&this._getCurrentPlatform().setGlobal(e,t)}},{key:"getAppOptions",value:function(e){return this._getCurrentPlatform().getAppOptions(e)}},{key:"showDebugToast",value:function(e){this._getCurrentPlatform().showToast(e)}}]),e}(),HttpTask=function(){function a(e,t,n,i,r){_classCallCheck(this,a),this.data=e,this.serverUrl=t,this.callback=r,this.tryCount=_.isNumber(n)?n:1,this.timeout=_.isNumber(i)?i:3e3}return _createClass(a,[{key:"run",value:function(){var t=this,e=_.createExtraHeaders();e["content-type"]="application/json";var n=PlatformAPI.request({url:this.serverUrl,method:"POST",data:this.data,header:e,success:function(e){t.onSuccess(e)},fail:function(e){t.onFailed(e)}});setTimeout(function(){(_.isObject(n)||_.isPromise(n))&&_.isFunction(n.abort)&&n.abort()},this.timeout)}},{key:"onSuccess",value:function(e){if(200===e.statusCode){var t;switch(e.data.code){case 0:t="success";break;case-1:t="invalid data";break;case-2:t="invalid APP ID";break;default:t="Unknown return code"}this.callback({code:e.data.code,msg:t})}else this.callback({code:-3,msg:e.statusCode})}},{key:"onFailed",value:function(e){0<--this.tryCount?this.run():this.callback({code:-3,msg:e.errMsg})}}]),a}(),HttpTaskDebug=function(){function o(e,t,n,i,r,a,s){_classCallCheck(this,o),this.data=e,this.serverDebugUrl=t,this.callback=s,this.tryCount=_.isNumber(n)?n:1,this.timeout=_.isNumber(i)?i:3e3,this.dryrun=r,this.deviceId=a}return _createClass(o,[{key:"run",value:function(){var t=this,e="appid="+this.data["#app_id"]+"&source=client&dryRun="+this.dryrun+"&deviceId="+this.deviceId+"&data="+encodeURIComponent(JSON.stringify(this.data.data[0])),n=_.createExtraHeaders();n["content-type"]="application/x-www-form-urlencoded";var i=PlatformAPI.request({url:this.serverDebugUrl,method:"POST",data:e,header:n,success:function(e){t.onSuccess(e)},fail:function(e){t.onFailed(e)}});setTimeout(function(){(_.isObject(i)||_.isPromise(i))&&_.isFunction(i.abort)&&i.abort()},this.timeout)}},{key:"onSuccess",value:function(e){if(200===e.statusCode){var t;if(0===e.data.errorLevel)t="Verify data success.";else if(1===e.data.errorLevel){for(var n=e.data.errorProperties,i="",r=0;r<n.length;r++)var a=n[r].errorReason,i=i+" propertyName:"+n[r].propertyName+" errorReasons:"+a+"\n";t="Debug data error. errorLevel:"+e.data.errorLevel+" reason:"+i}else 2!==e.data.errorLevel&&-1!==e.data.errorLevel||(t="Debug data error. errorLevel:"+e.data.errorLevel+" reason:"+e.data.errorReasons);logger$1.info(t),this.callback({code:e.data.errorLevel,msg:t})}else this.callback({code:-3,msg:e.statusCode})}},{key:"onFailed",value:function(e){0<--this.tryCount?this.run():this.callback({code:-3,msg:e.errMsg})}}]),o}(),SenderQueue=function(){function e(){_classCallCheck(this,e),this.items=[],this.isRunning=!1,this.showDebug=!1}return _createClass(e,[{key:"enqueue",value:function(e,t,n){var i=this,t="debug"===n.debugMode?new HttpTaskDebug(e,t,n.maxRetries,n.sendTimeout,0,n.deviceId,function(e){i.isRunning=!1,_.isFunction(n.callback)&&n.callback(e),i._runNext(),!1===i.showDebug&&(0!==e.code&&1!==e.code&&2!==e.code||(i.showDebug=!0,_.isFunction(PlatformAPI.showDebugToast)&&PlatformAPI.showDebugToast("当前为 debug 模式")))}):"debugOnly"===n.debugMode?new HttpTaskDebug(e,t,n.maxRetries,n.sendTimeout,1,n.deviceId,function(e){i.isRunning=!1,_.isFunction(n.callback)&&n.callback(e),i._runNext(),!1===i.showDebug&&(0!==e.code&&1!==e.code&&2!==e.code||(i.showDebug=!0,_.isFunction(PlatformAPI.showDebugToast)&&PlatformAPI.showDebugToast("当前为 debugOnly 模式")))}):new HttpTask(JSON.stringify(e),t,n.maxRetries,n.sendTimeout,function(e){i.isRunning=!1,_.isFunction(n.callback)&&n.callback(e),i._runNext()});this.items.push(t),this._runNext()}},{key:"_dequeue",value:function(){return this.items.shift()}},{key:"_runNext",value:function(){0<this.items.length&&!this.isRunning&&(this.isRunning=!0,this._dequeue().run())}}]),e}(),senderQueue=new SenderQueue,DEFAULT_CONFIG={name:"thinkingdata",is_plugin:!1,maxRetries:3,sendTimeout:3e3,enablePersistence:!0,asyncPersistence:!1,enableLog:!0,strict:!1,debugMode:"none"},systemInformation={properties:{"#lib":Config.LIB_NAME,"#lib_version":Config.LIB_VERSION},initDeviceId:function(e){_.isString(e)&&(this.properties["#device_id"]=e)},getSystemInfo:function(e){var n=this;PlatformAPI.onNetworkStatusChange(function(e){n.properties["#network_type"]=e.networkType}),PlatformAPI.getNetworkType({success:function(e){n.properties["#network_type"]=e.networkType},complete:function(){PlatformAPI.getSystemInfo({success:function(e){logger$1.info(JSON.stringify(e,null,4));var t=e.system?e.system.replace(/\s+/g," ").split(" "):[],t={"#manufacturer":e.brand,"#device_model":e.model,"#screen_width":Number(e.screenWidth),"#screen_height":Number(e.screenHeight),"#os":t[0],"#os_version":t[1],"#mp_platform":e.mp_platform};_.extend(n.properties,t),_.setMpPlatform(e.mp_platform)},complete:function(){e()}})}})}},ThinkingDataPersistence=function(){function e(t,n){var i=this;_classCallCheck(this,e),this.enabled=t.enablePersistence,this.enabled?(t.isChildInstance?this.name=t.persistenceName+"_"+t.name:this.name=t.persistenceName,t.asyncPersistence?(this._state={},PlatformAPI.getStorage(this.name,!0,function(e){i._state=_.extend2Layers({},e,i._state),i._init(t,n),i._save()})):(this._state=PlatformAPI.getStorage(this.name)||{},this._init(t,n))):(this._state={},this._init(t,n))}return _createClass(e,[{key:"_init",value:function(e,t){this.getDistinctId()||this.setDistinctId(_.UUID()),e.isChildInstance||(this.getDeviceId()||this._setDeviceId(_.UUID()),systemInformation.initDeviceId(this.getDeviceId())),this.initComplete=!0,"function"==typeof t&&t(),this._save()}},{key:"_save",value:function(){this.enabled&&this.initComplete&&PlatformAPI.setStorage(this.name,JSON.stringify(this._state))}},{key:"_set",value:function(e,t){var n,i=this;"string"==typeof e?(n={})[e]=t:"object"===_typeof(e)&&(n=e),_.each(n,function(e,t){i._state[t]=e}),this._save()}},{key:"setEventTimer",value:function(e,t){var n=this._state.event_timers||{};n[e]=t,this._set("event_timers",n)}},{key:"removeEventTimer",value:function(e){var t=(this._state.event_timers||{})[e];return _.isUndefined(t)||(delete this._state.event_timers[e],this._save()),t}},{key:"getDeviceId",value:function(){return this._state.device_id}},{key:"_setDeviceId",value:function(e){this.getDeviceId()?logger$1.warn("cannot modify the device id."):this._set("device_id",e)}},{key:"getDistinctId",value:function(){return this._state.distinct_id}},{key:"setDistinctId",value:function(e){this._set("distinct_id",e)}},{key:"getAccountId",value:function(){return this._state.account_id}},{key:"setAccountId",value:function(e){this._set("account_id",e)}},{key:"getSuperProperties",value:function(){return this._state.props||{}}},{key:"setSuperProperties",value:function(e,t){e=t?e:_.extend(this.getSuperProperties(),e);this._set("props",e)}}]),e}(),ThinkingDataAPI=function(){function n(e){_classCallCheck(this,n);var t=_.extend({},DEFAULT_CONFIG,PlatformAPI.getConfig());_.isObject(e)?this.config=_.extend(t,e):this.config=t,this._init(this.config)}return _createClass(n,[{key:"_init",value:function(e){var t=this;this.name=e.name,this.appId=e.appId||e.appid;var n=e.serverUrl||e.server_url;this.serverUrl=n+"/sync_xcx",this.serverDebugUrl=n+"/data_debug",this.autoTrackProperties={},this._queue=[],e.isChildInstance?this._state={}:(logger$1.enabled=e.enableLog,this.instances=[],this._state={getSystemInfo:!1,initComplete:!1},systemInformation.getSystemInfo(function(){t._updateState({getSystemInfo:!0})}),PlatformAPI.setGlobal(this,this.name),e.autoTrack?this.autoTrack=PlatformAPI.initAutoTrackInstance(this,e):(n=PlatformAPI.getAppOptions(function(e){e&&e.scene&&t._setAutoTrackProperties({"#scene":e.scene})})).scene&&this._setAutoTrackProperties({"#scene":n.scene})),this.store=new ThinkingDataPersistence(e,function(){t.config.asyncPersistence&&_.isFunction(t.config.persistenceComplete)&&t.config.persistenceComplete(t),t._updateState()})}},{key:"initInstance",value:function(e,t){if(this.config.isChildInstance)logger$1.warn("initInstance() cannot be called on child instance");else{if(_.isString(e)&&e!==this.name&&_.isUndefined(this[e])){t=new n(_.extend({},this.config,{enablePersistence:!1,isChildInstance:!0,name:e},t));return this[e]=t,this.instances.push(e),this[e]._state=this._state,t}logger$1.warn("initInstance() failed due to the name is invalid: "+e)}}},{key:"lightInstance",value:function(e){return this[e]}},{key:"_setAutoTrackProperties",value:function(e){_.extend(this.autoTrackProperties,e)}},{key:"init",value:function(){if(this._state.initComplete)return!1;this._updateState({initComplete:!0})}},{key:"_isReady",value:function(){return this._state.getSystemInfo&&this._state.initComplete&&this.store.initComplete&&this.getDeviceId()}},{key:"_updateState",value:function(e){var t=this;_.isObject(e)&&_.extend(this._state,e),this._onStateChange(),_.each(this.instances,function(e){t[e]._onStateChange()})}},{key:"_onStateChange",value:function(){var t=this;this._isReady()&&this._queue&&0<this._queue.length&&(_.each(this._queue,function(e){t[e[0]].apply(t,slice.call(e[1]))}),this._queue=[])}},{key:"_sendRequest",value:function(e,t){t=_.isDate(t)?t:new Date;var n={data:[{"#type":e.type,"#time":_.formatDate(t),"#distinct_id":this.store.getDistinctId()}]};this.store.getAccountId()&&(n.data[0]["#account_id"]=this.store.getAccountId()),"track"===e.type||"track_update"===e.type||"track_overwrite"===e.type?(n.data[0]["#event_name"]=e.eventName,"track_update"===e.type||"track_overwrite"===e.type?n.data[0]["#event_id"]=e.extraId:e.firstCheckId&&(n.data[0]["#first_check_id"]=e.firstCheckId),n.data[0].properties=_.extend({"#zone_offset":0-t.getTimezoneOffset()/60},systemInformation.properties,this.autoTrackProperties,this.store.getSuperProperties(),this.dynamicProperties?this.dynamicProperties():{}),t=this.store.removeEventTimer(e.eventName),_.isUndefined(t)||(i=(new Date).getTime()-t,n.data[0].properties["#duration"]=parseFloat((i/1e3).toFixed(3)))):n.data[0].properties={},_.isObject(e.properties)&&!_.isEmptyObject(e.properties)&&_.extend(n.data[0].properties,e.properties),_.searchObjDate(n.data[0]),1<this.config.maxRetries&&(n.data[0]["#uuid"]=_.UUIDv4()),n["#app_id"]=this.appId,logger$1.info(JSON.stringify(n,null,4));var i="debug"===this.config.debugMode||"debugOnly"===this.config.debugMode?this.serverDebugUrl:this.serverUrl;senderQueue.enqueue(n,i,{maxRetries:this.config.maxRetries,sendTimeout:this.config.sendTimeout,callback:e.onComplete,debugMode:this.config.debugMode,deviceId:this.getDeviceId()})}},{key:"_isObjectParams",value:function(e){return _.isObject(e)&&_.isFunction(e.onComplete)}},{key:"track",value:function(e,t,n,i){var r;this._isObjectParams(e)&&(e=(r=e).eventName,t=r.properties,n=r.time,i=r.onComplete),PropertyChecker.event(e)&&PropertyChecker.properties(t)||!this.config.strict?this._internalTrack(e,t,n,i):_.isFunction(i)&&i({code:-1,msg:"invalid parameters"})}},{key:"trackUpdate",value:function(e){var t;e&&e.eventId&&(PropertyChecker.event(e.eventName)&&PropertyChecker.properties(e.properties)||!this.config.strict)?(t=_.isDate(e.time)?e.time:new Date,this._isReady()?this._sendRequest({type:"track_update",eventName:e.eventName,properties:e.properties,onComplete:e.onComplete,extraId:e.eventId},t):(e.time=t,this._queue.push(["trackUpdate",[e]]))):(logger$1.warn("Invalide parameter for trackUpdate: you should pass an object contains eventId to trackUpdate()"),_.isFunction(e.onComplete)&&e.onComplete({code:-1,msg:"invalid parameters"}))}},{key:"trackOverwrite",value:function(e){var t;e&&e.eventId&&(PropertyChecker.event(e.eventName)&&PropertyChecker.properties(e.properties)||!this.config.strict)?(t=_.isDate(e.time)?e.time:new Date,this._isReady()?this._sendRequest({type:"track_overwrite",eventName:e.eventName,properties:e.properties,onComplete:e.onComplete,extraId:e.eventId},t):(e.time=t,this._queue.push(["trackOverwrite",[e]]))):(logger$1.warn("Invalide parameter for trackOverwrite: you should pass an object contains eventId to trackOverwrite()"),_.isFunction(e.onComplete)&&e.onComplete({code:-1,msg:"invalid parameters"}))}},{key:"trackFirstEvent",value:function(e){var t;e&&e.eventName&&(PropertyChecker.event(e.eventName)&&PropertyChecker.properties(e.properties)||!this.config.strict)?(t=_.isDate(e.time)?e.time:new Date,this._isReady()?this._sendRequest({type:"track",eventName:e.eventName,properties:e.properties,onComplete:e.onComplete,firstCheckId:e.firstCheckId||this.getDeviceId()},t):(e.time=t,this._queue.push(["trackFirstEvent",[e]]))):(logger$1.warn("Invalide parameter for trackFirstEvent: you should pass an object contains eventName to trackFirstEvent()"),_.isFunction(e.onComplete)&&e.onComplete({code:-1,msg:"invalid parameters"}))}},{key:"_internalTrack",value:function(e,t,n,i){n=_.isDate(n)?n:new Date,this._isReady()?this._sendRequest({type:"track",eventName:e,properties:t,onComplete:i},n):this._queue.push(["_internalTrack",[e,t,n,i]])}},{key:"userSet",value:function(e,t,n){var i;this._isObjectParams(e)&&(e=(i=e).properties,t=i.time,n=i.onComplete),PropertyChecker.propertiesMust(e)||!this.config.strict?(t=_.isDate(t)?t:new Date,this._isReady()?this._sendRequest({type:"user_set",properties:e,onComplete:n},t):this._queue.push(["userSet",[e,t,n]])):(logger$1.warn("calling userSet failed due to invalid arguments"),_.isFunction(n)&&n({code:-1,msg:"invalid parameters"}))}},{key:"userSetOnce",value:function(e,t,n){var i;this._isObjectParams(e)&&(e=(i=e).properties,t=i.time,n=i.onComplete),PropertyChecker.propertiesMust(e)||!this.config.strict?(t=_.isDate(t)?t:new Date,this._isReady()?this._sendRequest({type:"user_setOnce",properties:e,onComplete:n},t):this._queue.push(["userSetOnce",[e,t,n]])):(logger$1.warn("calling userSetOnce failed due to invalid arguments"),_.isFunction(n)&&n({code:-1,msg:"invalid parameters"}))}},{key:"userUnset",value:function(e,t,n){var i;this._isObjectParams(i)&&(e=i.property,n=i.time,t=i.onComplete),PropertyChecker.propertyName(e)||!this.config.strict?(n=_.isDate(n)?n:new Date,this._isReady()?((i={})[e]=0,this._sendRequest({type:"user_unset",properties:i,onComplete:t},n)):this._queue.push(["userUnset",[e,t,n]])):(logger$1.warn("calling userUnset failed due to invalid arguments"),_.isFunction(t)&&t({code:-1,msg:"invalid parameters"}))}},{key:"userDel",value:function(e,t){var n;this._isObjectParams(e)&&(e=(n=e).time,t=n.onComplete),e=_.isDate(e)?e:new Date,this._isReady()?this._sendRequest({type:"user_del",onComplete:t},e):this._queue.push(["userDel",[e,t]])}},{key:"userAdd",value:function(e,t,n){var i;this._isObjectParams(e)&&(e=(i=e).properties,t=i.time,n=i.onComplete),PropertyChecker.userAddProperties(e)||!this.config.strict?(t=_.isDate(t)?t:new Date,this._isReady()?this._sendRequest({type:"user_add",properties:e,onComplete:n},t):this._queue.push(["userAdd",[e,t,n]])):(logger$1.warn("calling userAdd failed due to invalid arguments"),_.isFunction(n)&&n({code:-1,msg:"invalid parameters"}))}},{key:"userAppend",value:function(e,t,n){var i;this._isObjectParams(e)&&(e=(i=e).properties,t=i.time,n=i.onComplete),PropertyChecker.userAppendProperties(e)||!this.config.strict?(t=_.isDate(t)?t:new Date,this._isReady()?this._sendRequest({type:"user_append",properties:e,onComplete:n},t):this._queue.push(["userAppend",[e,t,n]])):(logger$1.warn("calling userAppend failed due to invalid arguments"),_.isFunction(n)&&n({code:-1,msg:"invalid parameters"}))}},{key:"authorizeOpenID",value:function(e){this.identify(e)}},{key:"identify",value:function(e){if("number"==typeof e)e=String(e);else if("string"!=typeof e)return!1;this.store.setDistinctId(e)}},{key:"getDistinctId",value:function(){return this.store.getDistinctId()}},{key:"login",value:function(e){if("number"==typeof e)e=String(e);else if("string"!=typeof e)return!1;this.store.setAccountId(e)}},{key:"getAccountId",value:function(){return this.store.getAccountId()}},{key:"logout",value:function(){this.store.setAccountId(null)}},{key:"setSuperProperties",value:function(e){PropertyChecker.propertiesMust(e)||!this.config.strict?this.store.setSuperProperties(e):logger$1.warn("setSuperProperties 的参数必须是合法的属性值")}},{key:"clearSuperProperties",value:function(){this.store.setSuperProperties({},!0)}},{key:"unsetSuperProperty",value:function(e){var t;_.isString(e)&&(delete(t=this.getSuperProperties())[e],this.store.setSuperProperties(t,!0))}},{key:"getSuperProperties",value:function(){return this.store.getSuperProperties()}},{key:"setDynamicSuperProperties",value:function(e){"function"==typeof e?PropertyChecker.properties(e())||!this.config.strict?this.dynamicProperties=e:logger$1.warn("动态公共属性必须返回合法的属性值"):logger$1.warn("setDynamicSuperProperties 的参数必须是 function 类型")}},{key:"timeEvent",value:function(e,t){t=_.isDate(t)?t:new Date,this._isReady()?PropertyChecker.event(e)||!this.config.strict?this.store.setEventTimer(e,t.getTime()):logger$1.warn("calling timeEvent failed due to invalid eventName: "+e):this._queue.push(["timeEvent",[e,t]])}},{key:"getDeviceId",value:function(){return systemInformation.properties["#device_id"]}}]),n}();window.ThinkingAnalyticsAPI=ThinkingDataAPI;
|