@fle-sdk/event-tracking-web 1.2.0-beta.0 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -185,6 +185,7 @@ WebTracking
185
185
  application/x-www-form-urlencoded | 否 | application/x-www-form-urlencoded |
186
186
  | business | {[key: string]: any} | 全局自定义业务参数(如果后续手动上报了业务字段,会进行合并) | 否 | - |
187
187
  | platform | string | 手动指定应用平台类型 | 否 | - |
188
+ | header | {[key: string]: any} | 自定义请求头 | 否 | - |
188
189
 
189
190
 
190
191
  #### 例子
@@ -230,6 +231,7 @@ export default App;
230
231
  application/x-www-form-urlencoded | 否 | application/x-www-form-urlencoded |
231
232
  | business | {[key: string]: any} | 手动埋点参数 | 否 | {} |
232
233
  | platform | string | 手动指定应用平台类型 | 否 | - |
234
+ | header | {[key: string]: any} | 自定义请求头 | 否 | - |
233
235
 
234
236
  #### 例子
235
237
  ```jsx
@@ -324,6 +326,7 @@ export default Test;
324
326
  | partkey | numberstring | 上报事件 Key(由前后端协商定义或由后端接口生成,该应用下需唯一且具有一定意义,例:goods_detail_pv) | 是 | - |
325
327
  | desc | string | 上报事件描述 | 否 | 自定义上报事件 |
326
328
  | business | {[key: string]: any} | 上报的业务参数 | 否 | - |
329
+ | header | {[key: string]: any} | 自定义请求头 | 否 | - |
327
330
 
328
331
 
329
332
  #### 例子
package/lib/index.esm.js CHANGED
@@ -12,5 +12,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
12
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
13
  PERFORMANCE OF THIS SOFTWARE.
14
14
  ***************************************************************************** */
15
- var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};var t=function(){return(t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},n=new(function(n){function r(){var e=n.call(this)||this;return e.userInfo=null,e.currentUrl="",e.pageKey="",e.eventDescMap={PageView:"Web 浏览页面",WebClick:"Web 元素点击",PageRetained:"Web 页面浏览时长",CustomTrack:"Web 自定义代码上报"},e.init=function(t){e.preset(t);var n=window.location.pathname;e.currentUrl=window.location.href,e.pageKey=n.replace(/\//g,"_").substr(1),e.systemsInfo=e.getSystemsInfo(t.platform),e.setCookie("retainedStartTime",e.getTimeStamp())},e.preset=function(t){t instanceof Object&&e.each(t,(function(t,n){e.initConfig.hasOwnProperty(n)&&(e.initConfig[n]=t)})),/^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-\(\)]*[\w@?^=%&/~+#-\(\)])?$/.test(e.initConfig.serverUrl)||(e.printLog("当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!"),e.initConfig.showLog=!0),e.initConfig.autoTrack?e.listener():e.unlistener()},e.login=function(t){e.isObject(t)&&(e.userInfo=t)},e.track=function(t){var n=t.desc,r=t.partkey,i=t.business,o=e.getParams({desc:n,event:"CustomTrack",itemKey:e.getItemKey(r),privateParamMap:{business:i}});return e.sendData(o)},e.listener=function(){e.initConfig.isTrackSinglePage&&(e.rewriteHistory(),e.addSinglePageEvent(e.onPageViewCallback)),e.each(["load","beforeunload"],(function(t){e.addEventListener(window,t,e.onPageViewCallback)})),e.addEventListener(window,"click",e.onClickCallback)},e.unlistener=function(){if(e.initConfig.isTrackSinglePage){var t=window.history.pushState?"popstate":"hashchange";e.each(["pushState","replaceState",t],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)}))}e.each(["load","beforeunload"],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)})),e.removeEventListener(window,"click",e.onClickCallback)},e.onClickCallback=function(t){var n,r;if(null===(r=null===(n=null==t?void 0:t.target)||void 0===n?void 0:n.dataset)||void 0===r?void 0:r.partKey){var i=[t.pageX,t.pageY],o=t.target.id,a=t.target.className,s={id:o,nodeName:t.target.nodeName,className:a,position:i},c=e.getParams({event:"WebClick",desc:e.eventDescMap.WebClick,itemKey:e.getItemKey(t.target.dataset.partKey),privateParamMap:{targetEle:s,pointerType:t.pointerType,currentUrl:e.currentUrl,elementSelector:e.getDomSelector(t.target)}});return e.sendData(c)}},e.onPageViewCallback=function(t){var n,r,i=window.location.origin,o=e.getParams({event:"PageView",desc:e.eventDescMap.PageView,privateParamMap:{currentUrl:e.currentUrl,targetUrl:(null===(n=t.arguments)||void 0===n?void 0:n[2])?i+(null===(r=t.arguments)||void 0===r?void 0:r[2]):null}});e.currentUrl=window.location.href,e.pageKey=window.location.pathname.replace(/\//g,"_").substring(1),e.sendRetained(t.type),e.sendData(o)},e.getParams=function(n){var r=n.event,i=n.desc,o=n.privateParamMap,a=void 0===o?{}:o,s=n.itemKey,c=e.initConfig.business,u=window.innerWidth,l=window.innerHeight,d=window.screen.width,p=window.screen.height;return{desc:i,event:r,itemKey:s||e.getItemKey(),requestTime:e.getTimeStamp(),deviceId:e.getDistinctId(),privateParamMap:t(t({},a),{pageWidth:u,pageHeight:l,screenWidth:d,screenHeight:p,sdkVersion:e.sdkVersion,systemsInfo:e.systemsInfo,urlParams:e.getQueryValue(),userInfo:e.userInfo,currentUrl:a.currentUrl||e.currentUrl,business:t(t({},c||{}),a.business||{})})}},e.sendData=function(t){var n=e.initConfig,r=n.serverUrl,i=n.sendTimeout,o=n.contentType;return n.showLog&&e.printLog(t),!0===e.isSupportBeaconSend()?e.sendBeacon({url:r,data:t}):new Promise((function(n,a){e.ajax({url:r,type:"POST",data:JSON.stringify(t),contentType:o,credentials:!1,timeout:i,cors:!0,success:function(e){return n(e)},error:function(e){return a(e)}})}))},e.sendRetained=function(n){var r=e.getParams({event:"PageRetained",desc:e.eventDescMap.PageRetained});if(["beforeunload","pushState","replaceState","hashchange","popstate"].indexOf(n)>=0){var i=e.getCookie("retainedStartTime"),o=i?+i:e.getTimeStamp(),a=t(t({},r),{privateParamMap:t(t({},r.privateParamMap),{retainedDuration:Math.max(r.requestTime-o,0)})});e.sendData(a),e.setCookie("retainedStartTime",e.getTimeStamp())}},e.getItemKey=function(t){return[e.initConfig.appKey,e.pageKey,t?t.toString():void 0].filter((function(e){return!!e})).reduce((function(e,t){return e+(e.length?".":"")+t}),"")},e.sdkVersion="1.1.0",e.initConfig={appKey:"",platform:void 0,showLog:!1,serverUrl:"",autoTrack:!1,sendTimeout:3e3,isTrackSinglePage:!1,contentType:"application/x-www-form-urlencoded",business:{}},e.systemsInfo={},e}return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}(r,n),r.prototype.addSinglePageEvent=function(e){var t=this,n=window.history.pushState?"popstate":"hashchange";this.each(["pushState","replaceState",n],(function(n){t.addEventListener(window,n,e)}))},r}(function(){function e(){var e=this;this.getSystemsInfo=function(e){var t=navigator.userAgent,n="other",r=[],i={language:navigator.language},o=t.match(/MicroMessenger\/([\d\.]+)/i),a=o&&o[1]?o[1]:null,s=t.match(/(ipod).*\s([\d_]+)/i),c=t.match(/(ipad).*\s([\d_]+)/i),u=t.match(/(iphone)\sos\s([\d_]+)/i),l=t.match(/(android)\s([\d\.]+)/i),d=t.match(/(Windows NT)\s([\d\.]+)/i),p=t.match(/(Mac OS X)\s([\d_]+)/i);r=[],l?(r.push("Android "+l[2]),n="h5"):u?(r.push("iPhone, iOS "+u[2].replace(/_/g,".")),n="h5"):c?(r.push("iPad, iOS "+c[2].replace(/_/g,".")),n="ipad"):s?(r.push("iPod, iOS "+s[2].replace(/_/g,".")),n="h5"):d?(r.push("Windows "+d[2].replace(/_/g,".")),n="pc"):p&&(r.push("Mac, MacOS "+p[2].replace(/_/g,".")),n="pc"),a&&r.push("WeChat "+a),i.client=r.length?r.join(", "):"Unknown",i.platform=e||n;var g=t.toLowerCase().match(/ nettype\/([^ ]+)/g);return g&&g[0]&&(r=[(g=g[0].split("/"))[1]],i.network=r.length?r.join(", "):"Unknown"),i.ua=t,i},this.addEventListener=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,(function(t){return n.call(e,t)}),!1)},this.removeEventListener=function(e,t,n){e.removeEventListener?e.removeEventListener(t,n):e.detachEvent&&e.detachEvent("on"+t,(function(t){return n.call(e,t)}),!0)},this.rewriteHistory=function(){var e=window.history,t=function(e){var t=window.history,n=t[e],r=new Event(e);return function(){var e=n.apply(t,arguments);return r.arguments=arguments,window.dispatchEvent(r),e}};window.history.pushState&&(e.pushState=t("pushState"),e.replaceState=t("replaceState"))},this.isArray=Array.isArray||function(e){return"[object Array]"===toString.call(e)},this.formatJsonString=function(e){try{return JSON.stringify(e,null," ")}catch(t){return JSON.stringify(e)}},this.nativeForEach=Array.prototype.forEach,this.slice=Array.prototype.slice,this.hasOwnProperty=Object.prototype.hasOwnProperty,this.breaker={},this.each=function(t,n,r){if(null==t)return!1;if(e.nativeForEach&&t.forEach===e.nativeForEach)t.forEach(n,r);else if(e.isArray(t)&&t.length===+t.length){for(var i=0,o=t.length;i<o;i++)if(i in t&&n.call(r,t[i],i,t)===e.breaker)return!1}else for(var a in t)if(e.hasOwnProperty.call(t,a)&&n.call(r,t[a],a,t)===e.breaker)return!1},this.getDomIndex=function(e){if(!e.parentNode)return-1;for(var t=0,n=e.tagName,r=e.parentNode.children,i=0;i<r.length;i++)if(r[i].tagName===n){if(e===r[i])return t;t++}return-1},this.selector=function(t){var n=t.parentNode&&9==t.parentNode.nodeType?-1:e.getDomIndex(t);return t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?"#"+t.getAttribute("id"):t.tagName.toLowerCase()+(~n?":nth-of-type("+(n+1)+")":"")},this.getDomSelector=function(t,n){if(!t||!t.parentNode||!t.parentNode.children)return!1;n=n&&n.join?n:[];var r=t.nodeName.toLowerCase();return t&&"body"!==r&&1==t.nodeType?(n.unshift(e.selector(t)),t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?n.join(" > "):e.getDomSelector(t.parentNode,n)):(n.unshift("body"),n.join(" > "))},this.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var i=n[r];" "==i.charAt(0);)i=i.substring(1,i.length);if(0==i.indexOf(t))return this._decodeURIComponent(i.substring(t.length,i.length))}return null},this.setCookie=function(e,t,n){var r,i="";n=null==n?73e3:n;var o=this.getMainHost();if(r=o?"; domain="+o:"",0!==n){var a=new Date;"s"===String(n).slice(-1)?a.setTime(a.getTime()+1e3*Number(String(n).slice(0,-1))):a.setTime(a.getTime()+24*n*60*60*1e3),i="; expires="+a.toUTCString()}function s(e){return e||!1}var c="",u="",l="";e&&(c=s(e)),t&&(u=s(t)),r&&(l=s(r)),c&&u&&(document.cookie=c+"="+encodeURIComponent(u)+i+"; path=/"+l)},this.removeCookie=function(t){e.setCookie(t,"",-1)},this.getTimeStamp=function(){return(new Date).getTime()},this.uuid=function(){return"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},this.getDistinctId=function(){var t=e.getCookie("distinctId");return t||(t=e.uuid(),e.setCookie("distinctId",t),t)},this.getQueryValue=function(){for(var e=decodeURI(window.location.href).match(new RegExp("[?&][^?&]+=[^?&]+","g"))||[],t={},n=0;n<e.length;n++){var r=e[n].replace(/\?|\&/,"").split("=");t[r[0]]=r[1]}return t},this.ajax=function(t){function n(e){if(!e)return"";try{return JSON.parse(e)}catch(e){return{}}}t.timeout=t.timeout||3e4,t.credentials=void 0===t.credentials||t.credentials;var r=e.xhr(t.cors);if(!r)return!1;t.type||(t.type=t.data?"POST":"GET");var i,o=t.success,a=t.error;t.success=function(e){o(e),i&&(clearTimeout(i),i=null)},t.error=function(e){a(e),i&&(clearTimeout(i),i=null)},i=setTimeout((function(){!function(){try{e.isObject(r)&&r.abort&&r.abort()}catch(t){e.printLog(t)}i&&(clearTimeout(i),i=null,t.error&&t.error(),r.onreadystatechange=null,r.onload=null,r.onerror=null)}()}),t.timeout),r.onreadystatechange=function(){try{4==r.readyState&&(r.status>=200&&r.status<300||304==r.status?t.success(n(r.responseText)):t.error(n(r.responseText),r.status),r.onreadystatechange=null,r.onload=null)}catch(e){r.onreadystatechange=null,r.onload=null}},r.open(t.type,t.url,!0);try{t.credentials&&(r.withCredentials=!0),e.isObject(t.header)&&e.each(t.header,(function(e,t){r.setRequestHeader&&r.setRequestHeader(t,e)})),t.data&&(t.cors||r.setRequestHeader&&r.setRequestHeader("X-Requested-With","XMLHttpRequest"),"application/json"===t.contentType?r.setRequestHeader&&r.setRequestHeader("Content-type","application/json; charset=UTF-8"):r.setRequestHeader&&r.setRequestHeader("Content-type","application/x-www-form-urlencoded"))}catch(t){e.printLog(t)}r.send(t.data||null)},this.xhr=function(e){return e?void 0!==window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest?new XMLHttpRequest:null:void 0!==window.XMLHttpRequest?new XMLHttpRequest:null},this.getUA=function(){var e,t={},n=navigator.userAgent.toLowerCase();return(e=n.match(/opera.([\d.]+)/))?t.opera=Number(e[1].split(".")[0]):(e=n.match(/msie ([\d.]+)/))?t.ie=Number(e[1].split(".")[0]):(e=n.match(/edge.([\d.]+)/))?t.edge=Number(e[1].split(".")[0]):(e=n.match(/firefox\/([\d.]+)/))?t.firefox=Number(e[1].split(".")[0]):(e=n.match(/chrome\/([\d.]+)/))?t.chrome=Number(e[1].split(".")[0]):(e=n.match(/version\/([\d.]+).*safari/))?t.safari=Number(e[1].match(/^\d*.\d*/)):(e=n.match(/trident\/([\d.]+)/))&&(t.ie=11),t},this.isSupportBeaconSend=function(){var t=!1;if("object"!=typeof navigator||"function"!=typeof navigator.sendBeacon)return t;var n=e.getUA(),r=navigator.userAgent.toLowerCase();if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)){var i=(r.match(/os [\d._]*/gi)+"").replace(/[^0-9|_.]/gi,"").replace(/_/gi,".").split(".");void 0===n.safari&&(n.safari=i[0]),i[0]&&+i[0]<13?(n.chrome>41||n.firefox>30||n.opera>25||n.safari>12)&&(t=!0):(n.chrome>41||n.firefox>30||n.opera>25||n.safari>11.3)&&(t=!0)}else(n.chrome>38||n.edge>13||n.firefox>30||n.opera>25||n.safari>11)&&(t=!0);return t},this.sendBeacon=function(t){return!0===e.isSupportBeaconSend()?navigator.sendBeacon(t.url,new URLSearchParams(JSON.stringify(t.data||{})))?Promise.resolve({success:!0}):Promise.reject({success:!1}):Promise.reject({message:"不支持sendBeacon,发送失败!",success:!1})}}return e.prototype.printLog=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(this.isObject(e[0])&&(e[0]=this.formatJsonString(e[0])),"object"==typeof console&&console.log)try{return console.log.apply(console,e)}catch(t){console.log(e[0])}},e.prototype.isObject=function(e){return null!=e&&"[object Object]"==toString.call(e)},e.prototype.isUndefined=function(e){return void 0===e},e.prototype.isString=function(e){return"[object String]"==toString.call(e)},e.prototype.isDate=function(e){return"[object Date]"==toString.call(e)},e.prototype.isBoolean=function(e){return"[object Boolean]"==toString.call(e)},e.prototype.isNumber=function(e){return"[object Number]"==toString.call(e)&&/[\d\.]+/.test(String(e))},e.prototype.isElement=function(e){return!(!e||1!==e.nodeType)},e.prototype.isFunction=function(e){if(!e)return!1;var t=toString.call(e);return"[object Function]"==t||"[object AsyncFunction]"==t},e.prototype.isJSONString=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},e.prototype._decodeURIComponent=function(e){var t=e;try{t=decodeURIComponent(e)}catch(n){t=e}return t},e.prototype.getMainHost=function(){var e="mh_"+Math.random(),t=new RegExp("(^|;)\\s*"+e+"=12345"),n=new Date(0),r=document.domain.split("."),i=[];for(i.unshift(r.pop());r.length;){i.unshift(r.pop());var o=i.join("."),a=e+"=12345;domain=."+o;if(document.cookie=a,t.test(document.cookie))return document.cookie=a+";expires="+n,o}},e}()));export default n;
15
+ var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};var t=function(){return(t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},n=new(function(n){function r(){var e=n.call(this)||this;return e.userInfo=null,e.currentUrl="",e.pageKey="",e.eventDescMap={PageView:"Web 浏览页面",WebClick:"Web 元素点击",PageRetained:"Web 页面浏览时长",CustomTrack:"Web 自定义代码上报"},e.init=function(t){e.preset(t);var n=window.location.pathname;e.currentUrl=window.location.href,e.pageKey=n.replace(/\//g,"_").substr(1),e.systemsInfo=e.getSystemsInfo(t.platform),e.setCookie("retainedStartTime",e.getTimeStamp())},e.preset=function(t){t instanceof Object&&e.each(t,(function(t,n){e.initConfig.hasOwnProperty(n)&&(e.initConfig[n]=t)})),/^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-\(\)]*[\w@?^=%&/~+#-\(\)])?$/.test(e.initConfig.serverUrl)||(e.printLog("当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!"),e.initConfig.showLog=!0),e.initConfig.autoTrack?e.listener():e.unlistener()},e.login=function(t){e.isObject(t)&&(e.userInfo=t)},e.track=function(t){var n=t.desc,r=t.partkey,i=t.business,o=t.header,a=e.getParams({desc:n,event:"CustomTrack",itemKey:e.getItemKey(r),privateParamMap:{business:i}});return e.sendData(a,o)},e.listener=function(){e.initConfig.isTrackSinglePage&&(e.rewriteHistory(),e.addSinglePageEvent(e.onPageViewCallback)),e.each(["load","beforeunload"],(function(t){e.addEventListener(window,t,e.onPageViewCallback)})),e.addEventListener(window,"click",e.onClickCallback)},e.unlistener=function(){if(e.initConfig.isTrackSinglePage){var t=window.history.pushState?"popstate":"hashchange";e.each(["pushState","replaceState",t],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)}))}e.each(["load","beforeunload"],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)})),e.removeEventListener(window,"click",e.onClickCallback)},e.onClickCallback=function(t){var n,r;if(null===(r=null===(n=null==t?void 0:t.target)||void 0===n?void 0:n.dataset)||void 0===r?void 0:r.partKey){var i=[t.pageX,t.pageY],o=t.target.id,a=t.target.className,s={id:o,nodeName:t.target.nodeName,className:a,position:i},c=e.getParams({event:"WebClick",desc:e.eventDescMap.WebClick,itemKey:e.getItemKey(t.target.dataset.partKey),privateParamMap:{targetEle:s,pointerType:t.pointerType,currentUrl:e.currentUrl,elementSelector:e.getDomSelector(t.target)}});return e.sendData(c)}},e.onPageViewCallback=function(t){var n,r,i=window.location.origin,o=e.getParams({event:"PageView",desc:e.eventDescMap.PageView,privateParamMap:{currentUrl:e.currentUrl,targetUrl:(null===(n=t.arguments)||void 0===n?void 0:n[2])?i+(null===(r=t.arguments)||void 0===r?void 0:r[2]):null}});e.currentUrl=window.location.href,e.pageKey=window.location.pathname.replace(/\//g,"_").substring(1),e.sendRetained(t.type),e.sendData(o)},e.getParams=function(n){var r=n.event,i=n.desc,o=n.privateParamMap,a=void 0===o?{}:o,s=n.itemKey,c=e.initConfig.business,u=window.innerWidth,l=window.innerHeight,d=window.screen.width,p=window.screen.height;return{desc:i,event:r,itemKey:s||e.getItemKey(),requestTime:e.getTimeStamp(),deviceId:e.getDistinctId(),privateParamMap:t(t({},a),{pageWidth:u,pageHeight:l,screenWidth:d,screenHeight:p,sdkVersion:e.sdkVersion,systemsInfo:e.systemsInfo,urlParams:e.getQueryValue(),userInfo:e.userInfo,currentUrl:a.currentUrl||e.currentUrl,business:t(t({},c||{}),a.business||{})})}},e.sendData=function(t,n){var r=e.initConfig,i=r.serverUrl,o=r.sendTimeout,a=r.contentType,s=r.showLog,c=r.header;return s&&e.printLog(t),!0!==e.isSupportBeaconSend()||n||c?new Promise((function(r,s){e.ajax({header:n||c,url:i,type:"POST",data:JSON.stringify(t),contentType:a,credentials:!1,timeout:o,cors:!0,success:function(e){return r(e)},error:function(e){return s(e)}})})):e.sendBeacon({contentType:a,url:i,data:t})},e.sendRetained=function(n){var r=e.getParams({event:"PageRetained",desc:e.eventDescMap.PageRetained});if(["beforeunload","pushState","replaceState","hashchange","popstate"].indexOf(n)>=0){var i=e.getCookie("retainedStartTime"),o=i?+i:e.getTimeStamp(),a=t(t({},r),{privateParamMap:t(t({},r.privateParamMap),{retainedDuration:Math.max(r.requestTime-o,0)})});e.sendData(a),e.setCookie("retainedStartTime",e.getTimeStamp())}},e.getItemKey=function(t){return[e.initConfig.appKey,e.pageKey,t?t.toString():void 0].filter((function(e){return!!e})).reduce((function(e,t){return e+(e.length?".":"")+t}),"")},e.sdkVersion="1.1.0",e.initConfig={appKey:"",platform:void 0,showLog:!1,serverUrl:"",autoTrack:!1,sendTimeout:3e3,isTrackSinglePage:!1,contentType:"application/json",business:{},header:void 0},e.systemsInfo={},e}return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}(r,n),r.prototype.addSinglePageEvent=function(e){var t=this,n=window.history.pushState?"popstate":"hashchange";this.each(["pushState","replaceState",n],(function(n){t.addEventListener(window,n,e)}))},r}(function(){function e(){var e=this;this.getSystemsInfo=function(e){var t=navigator.userAgent,n="other",r=[],i={language:navigator.language},o=t.match(/MicroMessenger\/([\d\.]+)/i),a=o&&o[1]?o[1]:null,s=t.match(/(ipod).*\s([\d_]+)/i),c=t.match(/(ipad).*\s([\d_]+)/i),u=t.match(/(iphone)\sos\s([\d_]+)/i),l=t.match(/(android)\s([\d\.]+)/i),d=t.match(/(Windows NT)\s([\d\.]+)/i),p=t.match(/(Mac OS X)\s([\d_]+)/i);r=[],l?(r.push("Android "+l[2]),n="h5"):u?(r.push("iPhone, iOS "+u[2].replace(/_/g,".")),n="h5"):c?(r.push("iPad, iOS "+c[2].replace(/_/g,".")),n="ipad"):s?(r.push("iPod, iOS "+s[2].replace(/_/g,".")),n="h5"):d?(r.push("Windows "+d[2].replace(/_/g,".")),n="pc"):p&&(r.push("Mac, MacOS "+p[2].replace(/_/g,".")),n="pc"),a&&r.push("WeChat "+a),i.client=r.length?r.join(", "):"Unknown",i.platform=e||n;var g=t.toLowerCase().match(/ nettype\/([^ ]+)/g);return g&&g[0]&&(r=[(g=g[0].split("/"))[1]],i.network=r.length?r.join(", "):"Unknown"),i.ua=t,i},this.addEventListener=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,(function(t){return n.call(e,t)}),!1)},this.removeEventListener=function(e,t,n){e.removeEventListener?e.removeEventListener(t,n):e.detachEvent&&e.detachEvent("on"+t,(function(t){return n.call(e,t)}),!0)},this.rewriteHistory=function(){var e=window.history,t=function(e){var t=window.history,n=t[e],r=new Event(e);return function(){var e=n.apply(t,arguments);return r.arguments=arguments,window.dispatchEvent(r),e}};window.history.pushState&&(e.pushState=t("pushState"),e.replaceState=t("replaceState"))},this.isArray=Array.isArray||function(e){return"[object Array]"===toString.call(e)},this.formatJsonString=function(e){try{return JSON.stringify(e,null," ")}catch(t){return JSON.stringify(e)}},this.nativeForEach=Array.prototype.forEach,this.slice=Array.prototype.slice,this.hasOwnProperty=Object.prototype.hasOwnProperty,this.breaker={},this.each=function(t,n,r){if(null==t)return!1;if(e.nativeForEach&&t.forEach===e.nativeForEach)t.forEach(n,r);else if(e.isArray(t)&&t.length===+t.length){for(var i=0,o=t.length;i<o;i++)if(i in t&&n.call(r,t[i],i,t)===e.breaker)return!1}else for(var a in t)if(e.hasOwnProperty.call(t,a)&&n.call(r,t[a],a,t)===e.breaker)return!1},this.getDomIndex=function(e){if(!e.parentNode)return-1;for(var t=0,n=e.tagName,r=e.parentNode.children,i=0;i<r.length;i++)if(r[i].tagName===n){if(e===r[i])return t;t++}return-1},this.selector=function(t){var n=t.parentNode&&9==t.parentNode.nodeType?-1:e.getDomIndex(t);return t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?"#"+t.getAttribute("id"):t.tagName.toLowerCase()+(~n?":nth-of-type("+(n+1)+")":"")},this.getDomSelector=function(t,n){if(!t||!t.parentNode||!t.parentNode.children)return!1;n=n&&n.join?n:[];var r=t.nodeName.toLowerCase();return t&&"body"!==r&&1==t.nodeType?(n.unshift(e.selector(t)),t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?n.join(" > "):e.getDomSelector(t.parentNode,n)):(n.unshift("body"),n.join(" > "))},this.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var i=n[r];" "==i.charAt(0);)i=i.substring(1,i.length);if(0==i.indexOf(t))return this._decodeURIComponent(i.substring(t.length,i.length))}return null},this.setCookie=function(e,t,n){var r,i="";n=null==n?73e3:n;var o=this.getMainHost();if(r=o?"; domain="+o:"",0!==n){var a=new Date;"s"===String(n).slice(-1)?a.setTime(a.getTime()+1e3*Number(String(n).slice(0,-1))):a.setTime(a.getTime()+24*n*60*60*1e3),i="; expires="+a.toUTCString()}function s(e){return e||!1}var c="",u="",l="";e&&(c=s(e)),t&&(u=s(t)),r&&(l=s(r)),c&&u&&(document.cookie=c+"="+encodeURIComponent(u)+i+"; path=/"+l)},this.removeCookie=function(t){e.setCookie(t,"",-1)},this.getTimeStamp=function(){return(new Date).getTime()},this.uuid=function(){return"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},this.getDistinctId=function(){var t=e.getCookie("distinctId");return t||(t=e.uuid(),e.setCookie("distinctId",t),t)},this.getQueryValue=function(){for(var e=decodeURI(window.location.href).match(new RegExp("[?&][^?&]+=[^?&]+","g"))||[],t={},n=0;n<e.length;n++){var r=e[n].replace(/\?|\&/,"").split("=");t[r[0]]=r[1]}return t},this.ajax=function(t){function n(e){if(!e)return"";try{return JSON.parse(e)}catch(e){return{}}}t.timeout=t.timeout||3e4,t.credentials=void 0===t.credentials||t.credentials;var r=e.xhr(t.cors);if(!r)return!1;t.type||(t.type=t.data?"POST":"GET");var i,o=t.success,a=t.error;t.success=function(e){o(e),i&&(clearTimeout(i),i=null)},t.error=function(e){a(e),i&&(clearTimeout(i),i=null)},i=setTimeout((function(){!function(){try{e.isObject(r)&&r.abort&&r.abort()}catch(t){e.printLog(t)}i&&(clearTimeout(i),i=null,t.error&&t.error(),r.onreadystatechange=null,r.onload=null,r.onerror=null)}()}),t.timeout),r.onreadystatechange=function(){try{4==r.readyState&&(r.status>=200&&r.status<300||304==r.status?t.success(n(r.responseText)):t.error(n(r.responseText),r.status),r.onreadystatechange=null,r.onload=null)}catch(e){r.onreadystatechange=null,r.onload=null}},r.open(t.type,t.url,!0);try{t.credentials&&(r.withCredentials=!0),e.isObject(t.header)&&e.each(t.header,(function(e,t){r.setRequestHeader&&r.setRequestHeader(t,e)})),t.data&&(t.cors||r.setRequestHeader&&r.setRequestHeader("X-Requested-With","XMLHttpRequest"),"application/json"===t.contentType?r.setRequestHeader&&r.setRequestHeader("Content-type","application/json; charset=UTF-8"):r.setRequestHeader&&r.setRequestHeader("Content-type","application/x-www-form-urlencoded"))}catch(t){e.printLog(t)}r.send(t.data||null)},this.xhr=function(e){return e?void 0!==window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest?new XMLHttpRequest:null:void 0!==window.XMLHttpRequest?new XMLHttpRequest:null},this.getUA=function(){var e,t={},n=navigator.userAgent.toLowerCase();return(e=n.match(/opera.([\d.]+)/))?t.opera=Number(e[1].split(".")[0]):(e=n.match(/msie ([\d.]+)/))?t.ie=Number(e[1].split(".")[0]):(e=n.match(/edge.([\d.]+)/))?t.edge=Number(e[1].split(".")[0]):(e=n.match(/firefox\/([\d.]+)/))?t.firefox=Number(e[1].split(".")[0]):(e=n.match(/chrome\/([\d.]+)/))?t.chrome=Number(e[1].split(".")[0]):(e=n.match(/version\/([\d.]+).*safari/))?t.safari=Number(e[1].match(/^\d*.\d*/)):(e=n.match(/trident\/([\d.]+)/))&&(t.ie=11),t},this.isSupportBeaconSend=function(){var t=!1;if("object"!=typeof navigator||"function"!=typeof navigator.sendBeacon)return t;var n=e.getUA(),r=navigator.userAgent.toLowerCase();if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)){var i=(r.match(/os [\d._]*/gi)+"").replace(/[^0-9|_.]/gi,"").replace(/_/gi,".").split(".");void 0===n.safari&&(n.safari=i[0]),i[0]&&+i[0]<13?(n.chrome>41||n.firefox>30||n.opera>25||n.safari>12)&&(t=!0):(n.chrome>41||n.firefox>30||n.opera>25||n.safari>11.3)&&(t=!0)}else(n.chrome>38||n.edge>13||n.firefox>30||n.opera>25||n.safari>11)&&(t=!0);return t},this.sendBeacon=function(t){if(!0===e.isSupportBeaconSend()){var n={type:t.contentType},r=new Blob([JSON.stringify(t.data)],n);return navigator.sendBeacon(t.url,r)?Promise.resolve({success:!0}):Promise.reject({success:!1})}return Promise.reject({message:"不支持sendBeacon,发送失败!",success:!1})}}return e.prototype.printLog=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(this.isObject(e[0])&&(e[0]=this.formatJsonString(e[0])),"object"==typeof console&&console.log)try{return console.log.apply(console,e)}catch(t){console.log(e[0])}},e.prototype.isObject=function(e){return null!=e&&"[object Object]"==toString.call(e)},e.prototype.isUndefined=function(e){return void 0===e},e.prototype.isString=function(e){return"[object String]"==toString.call(e)},e.prototype.isDate=function(e){return"[object Date]"==toString.call(e)},e.prototype.isBoolean=function(e){return"[object Boolean]"==toString.call(e)},e.prototype.isNumber=function(e){return"[object Number]"==toString.call(e)&&/[\d\.]+/.test(String(e))},e.prototype.isElement=function(e){return!(!e||1!==e.nodeType)},e.prototype.isFunction=function(e){if(!e)return!1;var t=toString.call(e);return"[object Function]"==t||"[object AsyncFunction]"==t},e.prototype.isJSONString=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},e.prototype._decodeURIComponent=function(e){var t=e;try{t=decodeURIComponent(e)}catch(n){t=e}return t},e.prototype.getMainHost=function(){var e="mh_"+Math.random(),t=new RegExp("(^|;)\\s*"+e+"=12345"),n=new Date(0),r=document.domain.split("."),i=[];for(i.unshift(r.pop());r.length;){i.unshift(r.pop());var o=i.join("."),a=e+"=12345;domain=."+o;if(document.cookie=a,t.test(document.cookie))return document.cookie=a+";expires="+n,o}},e}()));export default n;
16
16
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/index.ts","../src/lib/tools.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * web 数据埋点 SDK\n * @class WebTracking\n * @version 1.1.0\n * key由这几部分组成:appkey.pagekey.partkey 通过“.”来分割\n * appkey:应用唯一标识\n * pagekey:页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n * partkey:控件/自定义事件唯一标识,可通过接口获取或自定义\n */\nimport Tools from \"./tools\";\nimport {\n EventParams,\n InitParams,\n SystemsInfoTypes,\n TrackParams,\n PresetParams,\n TrackingPostParams,\n HistoryType,\n TargetEleProps,\n JsonProps,\n EventTypes,\n PrivateParamProps,\n} from \"./type\";\n\nclass WebTracking extends Tools {\n initConfig: InitParams;\n sdkVersion: string;\n systemsInfo: SystemsInfoTypes;\n\n constructor() {\n super();\n this.sdkVersion = \"1.1.0\"; // sdk版本\n this.initConfig = {\n appKey: \"\", // 应用唯一标识(由接口生成)\n platform: undefined, // 手动指定客户端平台类型(h5、pc、ipad、other)\n showLog: false, // (是否在网页控制台打印发送的数据)默认:不打印\n serverUrl: \"\", // 数据接收地址\n autoTrack: false, //(是否开启全埋点)指的是:页面浏览、元素点击事件自动上报 默认: 关闭\n sendTimeout: 3000, //(接口发送超时时长,超过该时长未发送成功将强制取消)3000ms(默认)\n isTrackSinglePage: false, //(是否采集单页面应用的路由变化)默认: 不采集\n contentType: \"application/x-www-form-urlencoded\", // 数据类型,默认form data\n business: {}, // 全局业务参数\n };\n // 系统信息\n this.systemsInfo = {};\n }\n\n // 用户信息\n protected userInfo?: JsonProps = null;\n // 当前路由\n protected currentUrl: string = \"\";\n // 页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n protected pageKey: string = \"\";\n // 上传事件描述\n protected eventDescMap: { [key: string]: string } = {\n PageView: \"Web 浏览页面\",\n WebClick: \"Web 元素点击\",\n PageRetained: \"Web 页面浏览时长\",\n CustomTrack: \"Web 自定义代码上报\",\n };\n\n /**\n * @description 初始化函数\n * @param {object} InitParams [初始化参数]\n */\n public init = (initParams: InitParams) => {\n this.preset(initParams);\n\n const pathname = window.location.pathname;\n this.currentUrl = window.location.href;\n this.pageKey = pathname.replace(/\\//g, \"_\").substr(1);\n\n this.systemsInfo = this.getSystemsInfo(initParams.platform);\n\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n };\n\n /**\n * TODO: 需要判断有哪些不能被预制的参数\n * @description 预置参数\n * @param {object} PresetParams [预置参数]\n */\n public preset = (presetParams: PresetParams) => {\n if (presetParams instanceof Object) {\n this.each(presetParams, (val, key) => {\n if (this.initConfig.hasOwnProperty(key)) {\n // TODO:后面加一些校验\n this.initConfig[key] = val;\n }\n });\n }\n \n if (\n !/^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-\\(\\)]*[\\w@?^=%&/~+#-\\(\\)])?$/.test(\n this.initConfig[\"serverUrl\"]\n )\n ) {\n this.printLog(\n \"当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!\"\n );\n this.initConfig[\"showLog\"] = true;\n }\n\n // 如果启用了全埋点\n if (!!this.initConfig[\"autoTrack\"]) {\n // 启用监听\n this.listener();\n } else {\n // 取消监听\n this.unlistener();\n }\n };\n\n /**\n * 用户登录\n */\n public login = (userInfo: JsonProps) => {\n if (this.isObject(userInfo)) this.userInfo = userInfo;\n };\n\n /**\n * 自定义代码埋点上报\n * @param {object} TrackParams [自定义上报参数]\n * @return {Promise} [回调]\n */\n public track = ({ desc, partkey, business }: TrackParams): Promise<{}> => {\n const params = this.getParams({\n desc,\n event: \"CustomTrack\",\n itemKey: this.getItemKey(partkey),\n privateParamMap: {\n business,\n },\n });\n return this.sendData(params);\n };\n\n /**\n * @description 监听全埋点事件\n */\n protected listener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n this.rewriteHistory();\n this.addSinglePageEvent(this.onPageViewCallback);\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.addEventListener(window, \"click\", this.onClickCallback);\n };\n\n /**\n * @description 取消全埋点事件\n */\n protected unlistener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n const historyPushState = window.history.pushState;\n const singlePageEvent = !!historyPushState ? \"popstate\" : \"hashchange\";\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyName: string) => {\n this.removeEventListener(window, historyName, this.onPageViewCallback);\n });\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.removeEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.removeEventListener(window, \"click\", this.onClickCallback);\n };\n\n protected onClickCallback = (e: any): Promise<{}> => {\n if (!e?.target?.dataset?.partKey) return;\n\n const position: [number, number] = [e.pageX, e.pageY];\n const id = e.target.id;\n const className = e.target.className;\n const nodeName = e.target.nodeName;\n const targetEle: TargetEleProps = {\n id,\n nodeName,\n className,\n position,\n };\n\n const params = this.getParams({\n event: \"WebClick\",\n desc: this.eventDescMap[\"WebClick\"],\n itemKey: this.getItemKey(e.target.dataset.partKey),\n privateParamMap: {\n targetEle,\n pointerType: e.pointerType,\n currentUrl: this.currentUrl,\n elementSelector: this.getDomSelector(e.target),\n },\n });\n\n return this.sendData(params);\n };\n\n /**\n * @description 添加单页面监听事件\n * @param callback\n */\n public addSinglePageEvent(callback: (e: EventParams) => void) {\n const historyPushState = window.history.pushState;\n\n const singlePageEvent = historyPushState ? \"popstate\" : \"hashchange\";\n\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, callback);\n });\n }\n\n /**\n * @description 路由触发事件\n */\n protected onPageViewCallback = (e: EventParams) => {\n const ORGIN = window.location.origin;\n const params = this.getParams({\n event: \"PageView\",\n desc: this.eventDescMap[\"PageView\"],\n privateParamMap: {\n currentUrl: this.currentUrl,\n targetUrl: e.arguments?.[2] ? ORGIN + e.arguments?.[2] : null,\n },\n });\n\n this.currentUrl = window.location.href;\n this.pageKey = window.location.pathname.replace(/\\//g, \"_\").substring(1);\n\n this.sendRetained(e.type);\n this.sendData(params);\n };\n\n getParams = ({\n event,\n desc,\n privateParamMap = {},\n itemKey,\n }: {\n event: EventTypes;\n desc: string;\n privateParamMap?: PrivateParamProps;\n itemKey?: string;\n }): TrackingPostParams => {\n const { business } = this.initConfig;\n\n const pageWidth = window.innerWidth;\n const pageHeight = window.innerHeight;\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const params = {\n desc,\n event,\n itemKey: itemKey || this.getItemKey(),\n requestTime: this.getTimeStamp(),\n deviceId: this.getDistinctId(),\n privateParamMap: {\n ...privateParamMap,\n pageWidth,\n pageHeight,\n screenWidth,\n screenHeight,\n sdkVersion: this.sdkVersion,\n systemsInfo: this.systemsInfo,\n urlParams: this.getQueryValue(),\n userInfo: this.userInfo,\n currentUrl: privateParamMap.currentUrl || this.currentUrl,\n business: { ...(business || {}), ...(privateParamMap.business || {}) },\n },\n };\n\n return params;\n };\n\n /**\n * 发送数据通用函数\n */\n sendData = (params: TrackingPostParams): Promise<{}> => {\n const { serverUrl, sendTimeout, contentType, showLog } = this.initConfig;\n\n if (!!showLog) this.printLog(params);\n\n if (this.isSupportBeaconSend() === true) {\n return this.sendBeacon({\n url: serverUrl,\n data: params,\n });\n } else {\n return new Promise((resolve, reject) => {\n this.ajax({\n url: serverUrl,\n type: \"POST\",\n data: JSON.stringify(params),\n contentType: contentType,\n credentials: false,\n timeout: sendTimeout,\n cors: true,\n success: (res) => resolve(res),\n error: (err) => reject(err),\n });\n });\n }\n };\n\n /**\n * @description 留存时长上报\n * @param type\n */\n sendRetained = (type: string) => {\n const params = this.getParams({ event: \"PageRetained\", desc: this.eventDescMap[\"PageRetained\"] });\n\n if ([\"beforeunload\", \"pushState\", \"replaceState\", \"hashchange\", \"popstate\"].indexOf(type) >= 0) {\n const __time = this.getCookie(\"retainedStartTime\");\n const retainedStartTime = __time ? +__time : this.getTimeStamp();\n const retainedData: TrackingPostParams = {\n ...params,\n privateParamMap: {\n ...params.privateParamMap,\n retainedDuration: Math.max(params.requestTime - retainedStartTime, 0),\n },\n };\n\n this.sendData(retainedData);\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n }\n };\n\n /**\n * @description 获取 itemKey\n * @param {[string]} partkey [控件/自定义事件的唯一标识]\n * @return {[string]}\n */\n protected getItemKey = (partkey?: string | number): string => {\n const appKey = this.initConfig.appKey;\n const keys: string[] = [appKey, this.pageKey, partkey ? partkey.toString() : undefined].filter(\n (key: string | undefined) => !!key\n );\n return keys.reduce((str, key) => str + `${str.length ? \".\" : \"\"}` + key, \"\");\n };\n}\n\nexport default new WebTracking();\n","/**\n * 埋点工具函数\n */\nimport { Target, SystemsInfoTypes, JsonProps, PlatformType } from \"./type\";\n\nexport default class WebTrackingTools {\n constructor() {}\n\n /**\n * 打印log\n */\n public printLog(...rest: any) {\n if (this.isObject(rest[0])) {\n rest[0] = this.formatJsonString(rest[0]);\n }\n\n if (typeof console === \"object\" && console.log) {\n try {\n return console.log.apply(console, rest);\n } catch (e) {\n console.log(rest[0]);\n }\n }\n }\n\n /**\n * 系统信息\n */\n public getSystemsInfo = (platform: PlatformType | string): SystemsInfoTypes => {\n // print system info\n const ua = navigator.userAgent;\n const language = navigator.language;\n\n let _platform: PlatformType = \"other\";\n let logMsg: string[] = [];\n let systemsInfo: SystemsInfoTypes = {\n language,\n };\n\n // wechat client version\n const wxVersionMatch = ua.match(/MicroMessenger\\/([\\d\\.]+)/i);\n const wxVersion = wxVersionMatch && wxVersionMatch[1] ? wxVersionMatch[1] : null;\n\n // device & system\n const ipod = ua.match(/(ipod).*\\s([\\d_]+)/i),\n ipad = ua.match(/(ipad).*\\s([\\d_]+)/i),\n iphone = ua.match(/(iphone)\\sos\\s([\\d_]+)/i),\n android = ua.match(/(android)\\s([\\d\\.]+)/i),\n windows = ua.match(/(Windows NT)\\s([\\d\\.]+)/i),\n mac = ua.match(/(Mac OS X)\\s([\\d_]+)/i);\n\n logMsg = [];\n if (android) {\n logMsg.push(\"Android \" + android[2]);\n _platform = \"h5\";\n } else if (iphone) {\n logMsg.push(\"iPhone, iOS \" + iphone[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (ipad) {\n logMsg.push(\"iPad, iOS \" + ipad[2].replace(/_/g, \".\"));\n _platform = \"ipad\";\n } else if (ipod) {\n logMsg.push(\"iPod, iOS \" + ipod[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (windows) {\n logMsg.push(\"Windows \" + windows[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n } else if (mac) {\n logMsg.push(\"Mac, MacOS \" + mac[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n }\n\n if (wxVersion) {\n logMsg.push(\"WeChat \" + wxVersion);\n }\n\n systemsInfo[\"client\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n systemsInfo[\"platform\"] = platform || _platform;\n\n // network type\n let network = ua.toLowerCase().match(/ nettype\\/([^ ]+)/g);\n\n if (network && network[0]) {\n // @ts-ignore\n network = network[0].split(\"/\");\n logMsg = [network[1]];\n systemsInfo[\"network\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n }\n\n // User Agent\n systemsInfo[\"ua\"] = ua;\n\n return systemsInfo;\n };\n\n /**\n * 监听事件\n * @param {Window | Element} target\n * @param {String} type\n * @param {Function} handler\n */\n protected addEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.addEventListener) {\n target.addEventListener(type, handler, false);\n } else {\n target.attachEvent &&\n target.attachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n false\n );\n }\n };\n\n /**\n * 移除监听事件\n * @param {Element} target\n * @param {String} type\n * @param {Funtion} handler\n */\n protected removeEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.removeEventListener) {\n target.removeEventListener(type, handler);\n } else {\n target.detachEvent &&\n target.detachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n true\n );\n }\n };\n\n /**\n * 重写history[pushState][replaceState]方法\n */\n public rewriteHistory = () => {\n const history = window.history;\n\n const historyWrap = function (type: \"pushState\" | \"replaceState\") {\n const history = window.history;\n const orig: any = history[type];\n const e: any = new Event(type);\n return function () {\n const rv = orig.apply(history, arguments);\n e.arguments = arguments;\n window.dispatchEvent(e);\n return rv;\n };\n };\n\n // 重写\n if (!!window.history.pushState) {\n history.pushState = historyWrap(\"pushState\");\n history.replaceState = historyWrap(\"replaceState\");\n }\n };\n\n /**\n * @description 检验是否是对象\n */\n public isObject(obj) {\n if (obj == null) {\n return false;\n } else {\n return toString.call(obj) == \"[object Object]\";\n }\n }\n\n public isUndefined(obj) {\n return obj === void 0;\n }\n\n public isArray =\n Array.isArray ||\n function (obj) {\n return toString.call(obj) === \"[object Array]\";\n };\n\n public isString(obj) {\n return toString.call(obj) == \"[object String]\";\n }\n\n public isDate(obj) {\n return toString.call(obj) == \"[object Date]\";\n }\n\n public isBoolean(obj) {\n return toString.call(obj) == \"[object Boolean]\";\n }\n\n public isNumber(obj) {\n return toString.call(obj) == \"[object Number]\" && /[\\d\\.]+/.test(String(obj));\n }\n\n public isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n }\n\n public isFunction(f) {\n if (!f) {\n return false;\n }\n const type = toString.call(f);\n return type == \"[object Function]\" || type == \"[object AsyncFunction]\";\n }\n\n public isJSONString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n /**\n * 将json序列化成json字符串\n * @param obj\n * @returns {[JsonString]} [json字符串]\n */\n protected formatJsonString = (obj): string => {\n try {\n return JSON.stringify(obj, null, \" \");\n } catch (e) {\n return JSON.stringify(obj);\n }\n };\n\n public nativeForEach = Array.prototype.forEach;\n public slice = Array.prototype.slice;\n public hasOwnProperty = Object.prototype.hasOwnProperty;\n public breaker = {};\n\n /**\n * @description 循环遍历\n */\n public each = (obj, iterator, context?: null) => {\n if (obj == null) {\n return false;\n }\n\n if (this.nativeForEach && obj.forEach === this.nativeForEach) {\n obj.forEach(iterator, context);\n } else if (this.isArray(obj) && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === this.breaker) {\n return false;\n }\n }\n } else {\n for (let key in obj) {\n if (this.hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === this.breaker) {\n return false;\n }\n }\n }\n }\n };\n\n public _decodeURIComponent(val) {\n let result = val;\n try {\n result = decodeURIComponent(val);\n } catch (e) {\n result = val;\n }\n return result;\n }\n\n public getMainHost() {\n let key = `mh_${Math.random()}`;\n let keyR = new RegExp(`(^|;)\\\\s*${key}=12345`);\n let expiredTime = new Date(0);\n let domain = document.domain;\n let domainList = domain.split(\".\");\n\n let urlItems = [];\n // 主域名一定会有两部分组成\n urlItems.unshift(domainList.pop());\n // 慢慢从后往前测试\n while (domainList.length) {\n urlItems.unshift(domainList.pop());\n let mainHost = urlItems.join(\".\");\n let cookie = `${key}=${12345};domain=.${mainHost}`;\n\n document.cookie = cookie;\n\n //如果cookie存在,则说明域名合法\n if (keyR.test(document.cookie)) {\n document.cookie = `${cookie};expires=${expiredTime}`;\n return mainHost;\n }\n }\n }\n\n protected getDomIndex = (el: Element): number => {\n if (!el.parentNode) return -1;\n let i = 0;\n const nodeName = el.tagName;\n const list = el.parentNode.children;\n for (let n = 0; n < list.length; n++) {\n if (list[n].tagName === nodeName) {\n if (el === list[n]) {\n return i;\n } else {\n i++;\n }\n }\n }\n return -1;\n };\n\n protected selector = (el: Element): string => {\n const i = el.parentNode && 9 == el.parentNode.nodeType ? -1 : this.getDomIndex(el);\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\"))) {\n return \"#\" + el.getAttribute(\"id\");\n } else {\n return el.tagName.toLowerCase() + (~i ? \":nth-of-type(\" + (i + 1) + \")\" : \"\");\n }\n };\n\n public getDomSelector = (el: any, arr?: string[]) => {\n if (!el || !el.parentNode || !el.parentNode.children) {\n return false;\n }\n arr = arr && arr.join ? arr : [];\n const name = el.nodeName.toLowerCase();\n if (!el || name === \"body\" || 1 != el.nodeType) {\n arr.unshift(\"body\");\n return arr.join(\" > \");\n }\n arr.unshift(this.selector(el));\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\")))\n return arr.join(\" > \");\n return this.getDomSelector(el.parentNode, arr);\n };\n\n /**\n * @description 增强cookie操作\n */\n public getCookie = function (name) {\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == \" \") {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) == 0) {\n return this._decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n };\n public setCookie = function (name: string, value: string | number, days?: number) {\n let cdomain = \"\",\n expires = \"\",\n secure = \"\",\n samesite = \"\";\n days = days == null ? 73000 : days;\n\n const domain = this.getMainHost();\n cdomain = domain ? \"; domain=\" + domain : \"\";\n\n if (days !== 0) {\n const date = new Date();\n if (String(days).slice(-1) === \"s\") {\n date.setTime(date.getTime() + Number(String(days).slice(0, -1)) * 1000);\n } else {\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n\n expires = \"; expires=\" + date.toUTCString();\n }\n\n function getValid(data) {\n if (data) {\n return data;\n } else {\n return false;\n }\n }\n let valid_name = \"\";\n let valid_value = \"\";\n let valid_domain = \"\";\n if (name) {\n valid_name = getValid(name);\n }\n if (value) {\n valid_value = getValid(value);\n }\n if (cdomain) {\n valid_domain = getValid(cdomain);\n }\n if (valid_name && valid_value) {\n document.cookie =\n valid_name + \"=\" + encodeURIComponent(valid_value) + expires + \"; path=/\" + valid_domain + samesite + secure;\n }\n };\n public removeCookie = (name) => {\n this.setCookie(name, \"\", -1);\n };\n\n /**\n * 获取当前时间戳\n * @return {number} [当前时间戳]\n */\n public getTimeStamp = (): number => {\n return new Date().getTime();\n };\n\n /**\n * 获取 UUID\n * @return {string} [UUID唯一值]\n */\n public uuid = () => {\n return \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n };\n\n /**\n * 获取设备Id\n * @return {number} [设备Id]\n */\n public getDistinctId = () => {\n let distinctId = this.getCookie(\"distinctId\");\n if (distinctId) return distinctId;\n distinctId = this.uuid();\n this.setCookie(\"distinctId\", distinctId);\n return distinctId;\n };\n\n /**\n * 获取url中的参数\n * @param {[string]} name [参数名]\n */\n public getQueryValue = (): null | JsonProps => {\n const _href = decodeURI(window.location.href);\n const queryArr = _href.match(new RegExp(\"[?&][^?&]+=[^?&]+\", \"g\")) || [];\n const paramsObj: JsonProps = {};\n for (let i = 0; i < queryArr.length; i++) {\n const _item = queryArr[i].replace(/\\?|\\&/, \"\");\n const pair = _item.split(\"=\");\n\n paramsObj[pair[0]] = pair[1];\n }\n return paramsObj;\n };\n\n /**\n *\n * @param {[object]} para [ajax参数]\n * @returns\n */\n public ajax = (para: any) => {\n para.timeout = para.timeout || 30000;\n\n para.credentials = typeof para.credentials === \"undefined\" ? true : para.credentials;\n\n function getJSON(data) {\n if (!data) {\n return \"\";\n }\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n\n const g = this.xhr(para.cors);\n if (!g) {\n return false;\n }\n\n if (!para.type) {\n para.type = para.data ? \"POST\" : \"GET\";\n }\n\n const oldsuccess = para.success;\n const olderror = para.error;\n let errorTimer;\n\n const abort = () => {\n try {\n if (this.isObject(g) && g.abort) {\n g.abort();\n }\n } catch (error) {\n this.printLog(error);\n }\n\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n para.error && para.error();\n g.onreadystatechange = null;\n g.onload = null;\n g.onerror = null;\n }\n };\n\n para.success = function (data) {\n oldsuccess(data);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n para.error = function (err) {\n olderror(err);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n errorTimer = setTimeout(function () {\n abort();\n }, para.timeout);\n\n g.onreadystatechange = function () {\n try {\n if (g.readyState == 4) {\n if ((g.status >= 200 && g.status < 300) || g.status == 304) {\n para.success(getJSON(g.responseText));\n } else {\n para.error(getJSON(g.responseText), g.status);\n }\n g.onreadystatechange = null;\n g.onload = null;\n }\n } catch (e) {\n g.onreadystatechange = null;\n g.onload = null;\n }\n };\n\n g.open(para.type, para.url, true);\n\n try {\n if (para.credentials) {\n g.withCredentials = true;\n }\n if (this.isObject(para.header)) {\n this.each(para.header, function (v, i) {\n g.setRequestHeader && g.setRequestHeader(i, v);\n });\n }\n\n if (para.data) {\n if (!para.cors) {\n g.setRequestHeader && g.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n }\n if (para.contentType === \"application/json\") {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/json; charset=UTF-8\");\n } else {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n }\n } catch (e) {\n this.printLog(e);\n }\n\n g.send(para.data || null);\n };\n public xhr = (cors) => {\n if (cors) {\n if (typeof window.XMLHttpRequest !== \"undefined\" && \"withCredentials\" in new XMLHttpRequest()) {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n } else if (typeof window.XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n };\n\n public getUA = () => {\n const Sys: JsonProps = {};\n const ua = navigator.userAgent.toLowerCase();\n let s;\n if ((s = ua.match(/opera.([\\d.]+)/))) {\n Sys.opera = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/msie ([\\d.]+)/))) {\n Sys.ie = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/edge.([\\d.]+)/))) {\n Sys.edge = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/firefox\\/([\\d.]+)/))) {\n Sys.firefox = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/chrome\\/([\\d.]+)/))) {\n Sys.chrome = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/version\\/([\\d.]+).*safari/))) {\n Sys.safari = Number(s[1].match(/^\\d*.\\d*/));\n } else if ((s = ua.match(/trident\\/([\\d.]+)/))) {\n Sys.ie = 11;\n }\n return Sys;\n };\n\n public isSupportBeaconSend = (): Boolean => {\n let supported = false;\n if (typeof navigator !== \"object\" || typeof navigator.sendBeacon !== \"function\") {\n return supported;\n }\n\n let Sys = this.getUA();\n var ua = navigator.userAgent.toLowerCase();\n\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\n var reg = /os [\\d._]*/gi;\n var verinfo = ua.match(reg);\n var version = (verinfo + \"\").replace(/[^0-9|_.]/gi, \"\").replace(/_/gi, \".\");\n var ver = version.split(\".\");\n\n if (typeof Sys.safari === \"undefined\") {\n Sys.safari = ver[0];\n }\n\n if (ver[0] && +ver[0] < 13) {\n if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 12) {\n supported = true;\n }\n } else if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.3) {\n supported = true;\n }\n } else {\n if (Sys.chrome > 38 || Sys.edge > 13 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.0) {\n supported = true;\n }\n }\n return supported;\n };\n\n /**\n * beacon请求\n * @param {[string]} url\n * @param {[object]} params\n */\n public sendBeacon = (para: any): Promise<{ message?: string; success: boolean }> => {\n if (this.isSupportBeaconSend() === true) {\n const supportType = navigator.sendBeacon(para.url, new URLSearchParams(JSON.stringify(para.data || {})));\n\n if (supportType) {\n return Promise.resolve({ success: true });\n } else {\n return Promise.reject({ success: false });\n }\n } else {\n return Promise.reject({ message: \"不支持sendBeacon,发送失败!\", success: false });\n }\n };\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__assign","assign","t","s","i","n","arguments","length","apply","this","_super","_this","PageView","WebClick","PageRetained","CustomTrack","initParams","preset","pathname","window","location","currentUrl","href","pageKey","replace","substr","systemsInfo","getSystemsInfo","platform","setCookie","getTimeStamp","presetParams","each","val","key","initConfig","test","printLog","listener","unlistener","userInfo","isObject","_a","desc","partkey","business","params","getParams","event","itemKey","getItemKey","privateParamMap","sendData","isTrackSinglePage","rewriteHistory","addSinglePageEvent","onPageViewCallback","historyType","addEventListener","onClickCallback","singlePageEvent","history","pushState","historyName","removeEventListener","e","target","dataset","partKey","position","pageX","pageY","id","className","targetEle","nodeName","eventDescMap","pointerType","elementSelector","getDomSelector","ORGIN","origin","targetUrl","substring","sendRetained","type","_b","pageWidth","innerWidth","pageHeight","innerHeight","screenWidth","screen","width","screenHeight","height","requestTime","deviceId","getDistinctId","sdkVersion","urlParams","getQueryValue","serverUrl","sendTimeout","contentType","isSupportBeaconSend","sendBeacon","url","data","Promise","resolve","reject","ajax","JSON","stringify","credentials","timeout","cors","success","res","error","err","indexOf","__time","getCookie","retainedStartTime","retainedData","retainedDuration","Math","max","appKey","toString","undefined","filter","reduce","str","showLog","autoTrack","TypeError","String","__","constructor","create","__extends","WebTracking","callback","ua","navigator","userAgent","_platform","logMsg","language","wxVersionMatch","match","wxVersion","ipod","ipad","iphone","android","windows","mac","push","join","network","toLowerCase","split","handler","attachEvent","detachEvent","historyWrap","orig","Event","rv","dispatchEvent","replaceState","isArray","obj","forEach","slice","iterator","context","nativeForEach","l","breaker","el","parentNode","tagName","list","children","nodeType","getDomIndex","getAttribute","arr","name","unshift","selector","nameEQ","ca","document","cookie","c","charAt","_decodeURIComponent","value","days","cdomain","expires","domain","getMainHost","date","Date","setTime","getTime","Number","toUTCString","getValid","valid_name","valid_value","valid_domain","encodeURIComponent","r","random","distinctId","uuid","queryArr","decodeURI","RegExp","paramsObj","pair","para","getJSON","parse","g","xhr","errorTimer","oldsuccess","olderror","clearTimeout","setTimeout","abort","onreadystatechange","onload","onerror","readyState","status","responseText","open","withCredentials","header","v","setRequestHeader","send","XMLHttpRequest","Sys","opera","ie","edge","firefox","chrome","safari","supported","getUA","ver","URLSearchParams","message","WebTrackingTools","_i","rest","formatJsonString","console","log","f","result","decodeURIComponent","keyR","expiredTime","domainList","urlItems","pop","mainHost"],"mappings":";;;;;;;;;;;;;;AAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC,IAWrB,IAAIS,EAAW,WAQlB,OAPAA,EAAWR,OAAOS,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIR,KADTO,EAAIG,UAAUF,GACOZ,OAAOK,UAAUC,eAAeC,KAAKI,EAAGP,KAAIM,EAAEN,GAAKO,EAAEP,IAE9E,OAAOM,IAEKM,MAAMC,KAAMH,cCkTjB,gBA5Tb,aAAA,MACEI,0BAkBQC,WAAuB,KAEvBA,aAAqB,GAErBA,UAAkB,GAElBA,eAA0C,CAClDC,SAAU,WACVC,SAAU,WACVC,aAAc,aACdC,YAAa,eAORJ,OAAO,SAACK,GACbL,EAAKM,OAAOD,GAEZ,IAAME,EAAWC,OAAOC,SAASF,SACjCP,EAAKU,WAAaF,OAAOC,SAASE,KAClCX,EAAKY,QAAUL,EAASM,QAAQ,MAAO,KAAKC,OAAO,GAEnDd,EAAKe,YAAcf,EAAKgB,eAAeX,EAAWY,UAElDjB,EAAKkB,UAAU,oBAAqBlB,EAAKmB,iBAQpCnB,SAAS,SAACoB,GACXA,aAAwBvC,QAC1BmB,EAAKqB,KAAKD,GAAc,SAACE,EAAKC,GACxBvB,EAAKwB,WAAWrC,eAAeoC,KAEjCvB,EAAKwB,WAAWD,GAAOD,MAM1B,uFAAuFG,KACtFzB,EAAKwB,WAAsB,aAG7BxB,EAAK0B,SACH,oEAEF1B,EAAKwB,WAAoB,SAAI,GAIzBxB,EAAKwB,WAAsB,UAE/BxB,EAAK2B,WAGL3B,EAAK4B,cAOF5B,QAAQ,SAAC6B,GACV7B,EAAK8B,SAASD,KAAW7B,EAAK6B,SAAWA,IAQxC7B,QAAQ,SAAC+B,OAAEC,SAAMC,YAASC,aACzBC,EAASnC,EAAKoC,UAAU,CAC5BJ,OACAK,MAAO,cACPC,QAAStC,EAAKuC,WAAWN,GACzBO,gBAAiB,CACfN,cAGJ,OAAOlC,EAAKyC,SAASN,IAMbnC,WAAW,WACbA,EAAKwB,WAAWkB,oBACpB1C,EAAK2C,iBACL3C,EAAK4C,mBAAmB5C,EAAK6C,qBAG/B7C,EAAKqB,KAAK,CAAC,OAAQ,iBAAiB,SAACyB,GACnC9C,EAAK+C,iBAAiBvC,OAAQsC,EAAa9C,EAAK6C,uBAGlD7C,EAAK+C,iBAAiBvC,OAAQ,QAASR,EAAKgD,kBAMpChD,aAAa,WACrB,GAAMA,EAAKwB,WAAWkB,kBAAmB,CACvC,IACMO,EADmBzC,OAAO0C,QAAQC,UACK,WAAa,aAC1DnD,EAAKqB,KAAK,CAAC,YAAa,eAAgB4B,IAAkB,SAACG,GACzDpD,EAAKqD,oBAAoB7C,OAAQ4C,EAAapD,EAAK6C,uBAIvD7C,EAAKqB,KAAK,CAAC,OAAQ,iBAAiB,SAACyB,GACnC9C,EAAKqD,oBAAoB7C,OAAQsC,EAAa9C,EAAK6C,uBAGrD7C,EAAKqD,oBAAoB7C,OAAQ,QAASR,EAAKgD,kBAGvChD,kBAAkB,SAACsD,WAC3B,uBAAKA,MAAAA,SAAAA,EAAGC,6BAAQC,8BAASC,QAAzB,CAEA,IAAMC,EAA6B,CAACJ,EAAEK,MAAOL,EAAEM,OACzCC,EAAKP,EAAEC,OAAOM,GACdC,EAAYR,EAAEC,OAAOO,UAErBC,EAA4B,CAChCF,KACAG,SAHeV,EAAEC,OAAOS,SAIxBF,YACAJ,YAGIvB,EAASnC,EAAKoC,UAAU,CAC5BC,MAAO,WACPL,KAAMhC,EAAKiE,aAAuB,SAClC3B,QAAStC,EAAKuC,WAAWe,EAAEC,OAAOC,QAAQC,SAC1CjB,gBAAiB,CACfuB,YACAG,YAAaZ,EAAEY,YACfxD,WAAYV,EAAKU,WACjByD,gBAAiBnE,EAAKoE,eAAed,EAAEC,WAI3C,OAAOvD,EAAKyC,SAASN,KAoBbnC,qBAAqB,SAACsD,WACxBe,EAAQ7D,OAAOC,SAAS6D,OACxBnC,EAASnC,EAAKoC,UAAU,CAC5BC,MAAO,WACPL,KAAMhC,EAAKiE,aAAuB,SAClCzB,gBAAiB,CACf9B,WAAYV,EAAKU,WACjB6D,qBAAWjB,EAAE3D,gCAAY,IAAK0E,aAAQf,EAAE3D,gCAAY,IAAK,QAI7DK,EAAKU,WAAaF,OAAOC,SAASE,KAClCX,EAAKY,QAAUJ,OAAOC,SAASF,SAASM,QAAQ,MAAO,KAAK2D,UAAU,GAEtExE,EAAKyE,aAAanB,EAAEoB,MACpB1E,EAAKyC,SAASN,IAGhBnC,YAAY,SAAC+B,OACXM,UACAL,SACA2C,oBAAAnC,aAAkB,KAClBF,YAOQJ,EAAalC,EAAKwB,oBAEpBoD,EAAYpE,OAAOqE,WACnBC,EAAatE,OAAOuE,YACpBC,EAAcxE,OAAOyE,OAAOC,MAC5BC,EAAe3E,OAAOyE,OAAOG,OAuBnC,MArBe,CACbpD,OACAK,QACAC,QAASA,GAAWtC,EAAKuC,aACzB8C,YAAarF,EAAKmB,eAClBmE,SAAUtF,EAAKuF,gBACf/C,uBACKA,IACHoC,YACAE,aACAE,cACAG,eACAK,WAAYxF,EAAKwF,WACjBzE,YAAaf,EAAKe,YAClB0E,UAAWzF,EAAK0F,gBAChB7D,SAAU7B,EAAK6B,SACfnB,WAAY8B,EAAgB9B,YAAcV,EAAKU,WAC/CwB,gBAAgBA,GAAY,IAASM,EAAgBN,UAAY,QAUvElC,WAAW,SAACmC,GACJ,IAAAJ,EAAmD/B,EAAKwB,WAAtDmE,cAAWC,gBAAaC,gBAIhC,kBAFe7F,EAAK0B,SAASS,IAEM,IAA/BnC,EAAK8F,sBACA9F,EAAK+F,WAAW,CACrBC,IAAKL,EACLM,KAAM9D,IAGD,IAAI+D,SAAQ,SAACC,EAASC,GAC3BpG,EAAKqG,KAAK,CACRL,IAAKL,EACLjB,KAAM,OACNuB,KAAMK,KAAKC,UAAUpE,GACrB0D,YAAaA,EACbW,aAAa,EACbC,QAASb,EACTc,MAAM,EACNC,QAAS,SAACC,GAAQ,OAAAT,EAAQS,IAC1BC,MAAO,SAACC,GAAQ,OAAAV,EAAOU,UAU/B9G,eAAe,SAAC0E,GACd,IAAMvC,EAASnC,EAAKoC,UAAU,CAAEC,MAAO,eAAgBL,KAAMhC,EAAKiE,aAA2B,eAE7F,GAAI,CAAC,eAAgB,YAAa,eAAgB,aAAc,YAAY8C,QAAQrC,IAAS,EAAG,CAC9F,IAAMsC,EAAShH,EAAKiH,UAAU,qBACxBC,EAAoBF,GAAUA,EAAShH,EAAKmB,eAC5CgG,SACDhF,IACHK,uBACKL,EAAOK,kBACV4E,iBAAkBC,KAAKC,IAAInF,EAAOkD,YAAc6B,EAAmB,OAIvElH,EAAKyC,SAAS0E,GACdnH,EAAKkB,UAAU,oBAAqBlB,EAAKmB,kBASnCnB,aAAa,SAACiC,GAKtB,MAHuB,CADRjC,EAAKwB,WAAW+F,OACCvH,EAAKY,QAASqB,EAAUA,EAAQuF,gBAAaC,GAAWC,QACtF,SAACnG,GAA4B,QAAEA,KAErBoG,QAAO,SAACC,EAAKrG,GAAQ,OAAAqG,GAASA,EAAIhI,OAAS,IAAM,IAAO2B,IAAK,KAtTzEvB,EAAKwF,WAAa,QAClBxF,EAAKwB,WAAa,CAChB+F,OAAQ,GACRtG,cAAUwG,EACVI,SAAS,EACTlC,UAAW,GACXmC,WAAW,EACXlC,YAAa,IACblD,mBAAmB,EACnBmD,YAAa,oCACb3D,SAAU,IAGZlC,EAAKe,YAAc,KA2SvB,ODhUO,SAAmBpC,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImJ,UAAU,uBAAyBC,OAAOpJ,GAAK,iCAE7D,SAASqJ,IAAOnI,KAAKoI,YAAcvJ,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOsJ,OAAOvJ,IAAMqJ,EAAG/I,UAAYN,EAAEM,UAAW,IAAI+I,GCJzDG,MAqLjBC,+BAAP,SAA0BC,GAA1B,WAGQrF,EAFmBzC,OAAO0C,QAAQC,UAEG,WAAa,aAExDrD,KAAKuB,KAAK,CAAC,YAAa,eAAgB4B,IAAkB,SAACH,GACzD9C,EAAK+C,iBAAiBvC,OAAQsC,EAAawF,qBC7M/C,aAAA,WAsBOxI,oBAAiB,SAACmB,GAEvB,IAAMsH,EAAKC,UAAUC,UAGjBC,EAA0B,QAC1BC,EAAmB,GACnB5H,EAAgC,CAClC6H,SALeJ,UAAUI,UASrBC,EAAiBN,EAAGO,MAAM,8BAC1BC,EAAYF,GAAkBA,EAAe,GAAKA,EAAe,GAAK,KAGtEG,EAAOT,EAAGO,MAAM,uBACpBG,EAAOV,EAAGO,MAAM,uBAChBI,EAASX,EAAGO,MAAM,2BAClBK,EAAUZ,EAAGO,MAAM,yBACnBM,EAAUb,EAAGO,MAAM,4BACnBO,EAAMd,EAAGO,MAAM,yBAEjBH,EAAS,GACLQ,GACFR,EAAOW,KAAK,WAAaH,EAAQ,IACjCT,EAAY,MACHQ,GACTP,EAAOW,KAAK,eAAiBJ,EAAO,GAAGrI,QAAQ,KAAM,MACrD6H,EAAY,MACHO,GACTN,EAAOW,KAAK,aAAeL,EAAK,GAAGpI,QAAQ,KAAM,MACjD6H,EAAY,QACHM,GACTL,EAAOW,KAAK,aAAeN,EAAK,GAAGnI,QAAQ,KAAM,MACjD6H,EAAY,MACHU,GACTT,EAAOW,KAAK,WAAaF,EAAQ,GAAGvI,QAAQ,KAAM,MAClD6H,EAAY,MACHW,IACTV,EAAOW,KAAK,cAAgBD,EAAI,GAAGxI,QAAQ,KAAM,MACjD6H,EAAY,MAGVK,GACFJ,EAAOW,KAAK,UAAYP,GAG1BhI,EAAoB,OAAI4H,EAAO/I,OAAS+I,EAAOY,KAAK,MAAQ,UAC5DxI,EAAsB,SAAIE,GAAYyH,EAGtC,IAAIc,EAAUjB,EAAGkB,cAAcX,MAAM,sBAYrC,OAVIU,GAAWA,EAAQ,KAGrBb,EAAS,EADTa,EAAUA,EAAQ,GAAGE,MAAM,MACT,IAClB3I,EAAqB,QAAI4H,EAAO/I,OAAS+I,EAAOY,KAAK,MAAQ,WAI/DxI,EAAgB,GAAIwH,EAEbxH,GASCjB,sBAAmB,SAACyD,EAAgBmB,EAAciF,GACtDpG,EAAOR,iBACTQ,EAAOR,iBAAiB2B,EAAMiF,GAAS,GAEvCpG,EAAOqG,aACLrG,EAAOqG,YACL,KAAOlF,GACP,SAAUrC,GACR,OAAOsH,EAAQvK,KAAKmE,EAAQlB,MAE9B,IAWEvC,yBAAsB,SAACyD,EAAgBmB,EAAciF,GACzDpG,EAAOF,oBACTE,EAAOF,oBAAoBqB,EAAMiF,GAEjCpG,EAAOsG,aACLtG,EAAOsG,YACL,KAAOnF,GACP,SAAUrC,GACR,OAAOsH,EAAQvK,KAAKmE,EAAQlB,MAE9B,IAQDvC,oBAAiB,WACtB,IAAMoD,EAAU1C,OAAO0C,QAEjB4G,EAAc,SAAUpF,GAC5B,IAAMxB,EAAU1C,OAAO0C,QACjB6G,EAAY7G,EAAQwB,GACpBpB,EAAS,IAAI0G,MAAMtF,GACzB,OAAO,WACL,IAAMuF,EAAKF,EAAKlK,MAAMqD,EAASvD,WAG/B,OAFA2D,EAAE3D,UAAYA,UACda,OAAO0J,cAAc5G,GACd2G,IAKLzJ,OAAO0C,QAAQC,YACnBD,EAAQC,UAAY2G,EAAY,aAChC5G,EAAQiH,aAAeL,EAAY,kBAmBhChK,aACLd,MAAMoL,SACN,SAAUC,GACR,MAA8B,mBAAvB7C,SAASpI,KAAKiL,IA6CfvK,sBAAmB,SAACuK,GAC5B,IACE,OAAO/D,KAAKC,UAAU8D,EAAK,KAAM,MACjC,MAAO/G,GACP,OAAOgD,KAAKC,UAAU8D,KAInBvK,mBAAgBd,MAAME,UAAUoL,QAChCxK,WAAQd,MAAME,UAAUqL,MACxBzK,oBAAiBjB,OAAOK,UAAUC,eAClCW,aAAU,GAKVA,UAAO,SAACuK,EAAKG,EAAUC,GAC5B,GAAW,MAAPJ,EACF,OAAO,EAGT,GAAIrK,EAAK0K,eAAiBL,EAAIC,UAAYtK,EAAK0K,cAC7CL,EAAIC,QAAQE,EAAUC,QACjB,GAAIzK,EAAKoK,QAAQC,IAAQA,EAAIzK,UAAYyK,EAAIzK,QAClD,IAAK,IAAIH,EAAI,EAAGkL,EAAIN,EAAIzK,OAAQH,EAAIkL,EAAGlL,IACrC,GAAIA,KAAK4K,GAAOG,EAASpL,KAAKqL,EAASJ,EAAI5K,GAAIA,EAAG4K,KAASrK,EAAK4K,QAC9D,OAAO,OAIX,IAAK,IAAIrJ,KAAO8I,EACd,GAAIrK,EAAKb,eAAeC,KAAKiL,EAAK9I,IAC5BiJ,EAASpL,KAAKqL,EAASJ,EAAI9I,GAAMA,EAAK8I,KAASrK,EAAK4K,QACtD,OAAO,GA2CP9K,iBAAc,SAAC+K,GACvB,IAAKA,EAAGC,WAAY,OAAQ,EAI5B,IAHA,IAAIrL,EAAI,EACFuE,EAAW6G,EAAGE,QACdC,EAAOH,EAAGC,WAAWG,SAClBvL,EAAI,EAAGA,EAAIsL,EAAKpL,OAAQF,IAC/B,GAAIsL,EAAKtL,GAAGqL,UAAY/G,EAAU,CAChC,GAAI6G,IAAOG,EAAKtL,GACd,OAAOD,EAEPA,IAIN,OAAQ,GAGAK,cAAW,SAAC+K,GACpB,IAAMpL,EAAIoL,EAAGC,YAAc,GAAKD,EAAGC,WAAWI,UAAY,EAAIlL,EAAKmL,YAAYN,GAC/E,OAAIA,EAAGO,cAAgBP,EAAGO,aAAa,OAAS,6BAA6B3J,KAAKoJ,EAAGO,aAAa,OACzF,IAAMP,EAAGO,aAAa,MAEtBP,EAAGE,QAAQtB,gBAAkBhK,EAAI,iBAAmBA,EAAI,GAAK,IAAM,KAIvEK,oBAAiB,SAAC+K,EAASQ,GAChC,IAAKR,IAAOA,EAAGC,aAAeD,EAAGC,WAAWG,SAC1C,OAAO,EAETI,EAAMA,GAAOA,EAAI9B,KAAO8B,EAAM,GAC9B,IAAMC,EAAOT,EAAG7G,SAASyF,cACzB,OAAKoB,GAAe,SAATS,GAAmB,GAAKT,EAAGK,UAItCG,EAAIE,QAAQvL,EAAKwL,SAASX,IACtBA,EAAGO,cAAgBP,EAAGO,aAAa,OAAS,6BAA6B3J,KAAKoJ,EAAGO,aAAa,OACzFC,EAAI9B,KAAK,OACXvJ,EAAKoE,eAAeyG,EAAGC,WAAYO,KANxCA,EAAIE,QAAQ,QACLF,EAAI9B,KAAK,SAWbzJ,eAAY,SAAUwL,GAG3B,IAFA,IAAMG,EAASH,EAAO,IAChBI,EAAKC,SAASC,OAAOlC,MAAM,KACxBjK,EAAI,EAAGA,EAAIiM,EAAG9L,OAAQH,IAAK,CAElC,IADA,IAAIoM,EAAIH,EAAGjM,GACW,KAAfoM,EAAEC,OAAO,IACdD,EAAIA,EAAErH,UAAU,EAAGqH,EAAEjM,QAEvB,GAAyB,GAArBiM,EAAE9E,QAAQ0E,GACZ,OAAO3L,KAAKiM,oBAAoBF,EAAErH,UAAUiH,EAAO7L,OAAQiM,EAAEjM,SAGjE,OAAO,MAEFE,eAAY,SAAUwL,EAAcU,EAAwBC,GACjE,IAAIC,EACFC,EAAU,GAGZF,EAAe,MAARA,EAAe,KAAQA,EAE9B,IAAMG,EAAStM,KAAKuM,cAGpB,GAFAH,EAAUE,EAAS,YAAcA,EAAS,GAE7B,IAATH,EAAY,CACd,IAAMK,EAAO,IAAIC,KACc,MAA3BvE,OAAOiE,GAAM1B,OAAO,GACtB+B,EAAKE,QAAQF,EAAKG,UAAgD,IAApCC,OAAO1E,OAAOiE,GAAM1B,MAAM,GAAI,KAE5D+B,EAAKE,QAAQF,EAAKG,UAAmB,GAAPR,EAAY,GAAK,GAAK,KAGtDE,EAAU,aAAeG,EAAKK,cAGhC,SAASC,EAAS3G,GAChB,OAAIA,IAGK,EAGX,IAAI4G,EAAa,GACbC,EAAc,GACdC,EAAe,GACfzB,IACFuB,EAAaD,EAAStB,IAEpBU,IACFc,EAAcF,EAASZ,IAErBE,IACFa,EAAeH,EAASV,IAEtBW,GAAcC,IAChBnB,SAASC,OACPiB,EAAa,IAAMG,mBAAmBF,GAAeX,EAAU,WAAaY,IAG3EjN,kBAAe,SAACwL,GACrBtL,EAAKkB,UAAUoK,EAAM,IAAK,IAOrBxL,kBAAe,WACpB,OAAO,IAAIyM,MAAOE,WAOb3M,UAAO,WACZ,MAAO,mCAAmCe,QAAQ,SAAS,SAAUgL,GACnE,IAAMoB,EAAqB,GAAhB5F,KAAK6F,SAAiB,EAEjC,OADW,KAALrB,EAAWoB,EAAS,EAAJA,EAAW,GACxBzF,SAAS,QAQf1H,mBAAgB,WACrB,IAAIqN,EAAanN,EAAKiH,UAAU,cAChC,OAAIkG,IACJA,EAAanN,EAAKoN,OAClBpN,EAAKkB,UAAU,aAAciM,GACtBA,IAOFrN,mBAAgB,WAIrB,IAHA,IACMuN,EADQC,UAAU9M,OAAOC,SAASE,MACjBmI,MAAM,IAAIyE,OAAO,oBAAqB,OAAS,GAChEC,EAAuB,GACpB/N,EAAI,EAAGA,EAAI4N,EAASzN,OAAQH,IAAK,CACxC,IACMgO,EADQJ,EAAS5N,GAAGoB,QAAQ,QAAS,IACxB6I,MAAM,KAEzB8D,EAAUC,EAAK,IAAMA,EAAK,GAE5B,OAAOD,GAQF1N,UAAO,SAAC4N,GAKb,SAASC,EAAQ1H,GACf,IAAKA,EACH,MAAO,GAET,IACE,OAAOK,KAAKsH,MAAM3H,GAClB,MAAO3C,GACP,MAAO,IAXXoK,EAAKjH,QAAUiH,EAAKjH,SAAW,IAE/BiH,EAAKlH,iBAA0C,IAArBkH,EAAKlH,aAAqCkH,EAAKlH,YAazE,IAAMqH,EAAI7N,EAAK8N,IAAIJ,EAAKhH,MACxB,IAAKmH,EACH,OAAO,EAGJH,EAAKhJ,OACRgJ,EAAKhJ,KAAOgJ,EAAKzH,KAAO,OAAS,OAGnC,IAEI8H,EAFEC,EAAaN,EAAK/G,QAClBsH,EAAWP,EAAK7G,MAsBtB6G,EAAK/G,QAAU,SAAUV,GACvB+H,EAAW/H,GACP8H,IACFG,aAAaH,GACbA,EAAa,OAGjBL,EAAK7G,MAAQ,SAAUC,GACrBmH,EAASnH,GACLiH,IACFG,aAAaH,GACbA,EAAa,OAGjBA,EAAaI,YAAW,YAjCV,WACZ,IACMnO,EAAK8B,SAAS+L,IAAMA,EAAEO,OACxBP,EAAEO,QAEJ,MAAOvH,GACP7G,EAAK0B,SAASmF,GAGZkH,IACFG,aAAaH,GACbA,EAAa,KACbL,EAAK7G,OAAS6G,EAAK7G,QACnBgH,EAAEQ,mBAAqB,KACvBR,EAAES,OAAS,KACXT,EAAEU,QAAU,MAmBdH,KACCV,EAAKjH,SAERoH,EAAEQ,mBAAqB,WACrB,IACsB,GAAhBR,EAAEW,aACCX,EAAEY,QAAU,KAAOZ,EAAEY,OAAS,KAAoB,KAAZZ,EAAEY,OAC3Cf,EAAK/G,QAAQgH,EAAQE,EAAEa,eAEvBhB,EAAK7G,MAAM8G,EAAQE,EAAEa,cAAeb,EAAEY,QAExCZ,EAAEQ,mBAAqB,KACvBR,EAAES,OAAS,MAEb,MAAOhL,GACPuK,EAAEQ,mBAAqB,KACvBR,EAAES,OAAS,OAIfT,EAAEc,KAAKjB,EAAKhJ,KAAMgJ,EAAK1H,KAAK,GAE5B,IACM0H,EAAKlH,cACPqH,EAAEe,iBAAkB,GAElB5O,EAAK8B,SAAS4L,EAAKmB,SACrB7O,EAAKqB,KAAKqM,EAAKmB,QAAQ,SAAUC,EAAGrP,GAClCoO,EAAEkB,kBAAoBlB,EAAEkB,iBAAiBtP,EAAGqP,MAI5CpB,EAAKzH,OACFyH,EAAKhH,MACRmH,EAAEkB,kBAAoBlB,EAAEkB,iBAAiB,mBAAoB,kBAEtC,qBAArBrB,EAAK7H,YACPgI,EAAEkB,kBAAoBlB,EAAEkB,iBAAiB,eAAgB,mCAEzDlB,EAAEkB,kBAAoBlB,EAAEkB,iBAAiB,eAAgB,sCAG7D,MAAOzL,GACPtD,EAAK0B,SAAS4B,GAGhBuK,EAAEmB,KAAKtB,EAAKzH,MAAQ,OAEfnG,SAAM,SAAC4G,GACZ,OAAIA,OACmC,IAA1BlG,OAAOyO,gBAAkC,oBAAqB,IAAIA,eACpE,IAAIA,eAEJ,UAEiC,IAA1BzO,OAAOyO,eAChB,IAAIA,eAEJ,MAIJnP,WAAQ,WACb,IAEIN,EAFE0P,EAAiB,GACjB3G,EAAKC,UAAUC,UAAUgB,cAiB/B,OAfKjK,EAAI+I,EAAGO,MAAM,mBAChBoG,EAAIC,MAAQzC,OAAOlN,EAAE,GAAGkK,MAAM,KAAK,KACzBlK,EAAI+I,EAAGO,MAAM,kBACvBoG,EAAIE,GAAK1C,OAAOlN,EAAE,GAAGkK,MAAM,KAAK,KACtBlK,EAAI+I,EAAGO,MAAM,kBACvBoG,EAAIG,KAAO3C,OAAOlN,EAAE,GAAGkK,MAAM,KAAK,KACxBlK,EAAI+I,EAAGO,MAAM,sBACvBoG,EAAII,QAAU5C,OAAOlN,EAAE,GAAGkK,MAAM,KAAK,KAC3BlK,EAAI+I,EAAGO,MAAM,qBACvBoG,EAAIK,OAAS7C,OAAOlN,EAAE,GAAGkK,MAAM,KAAK,KAC1BlK,EAAI+I,EAAGO,MAAM,8BACvBoG,EAAIM,OAAS9C,OAAOlN,EAAE,GAAGsJ,MAAM,cACrBtJ,EAAI+I,EAAGO,MAAM,wBACvBoG,EAAIE,GAAK,IAEJF,GAGFpP,yBAAsB,WAC3B,IAAI2P,GAAY,EAChB,GAAyB,iBAAdjH,WAA0D,mBAAzBA,UAAUzC,WACpD,OAAO0J,EAGT,IAAIP,EAAMlP,EAAK0P,QACXnH,EAAKC,UAAUC,UAAUgB,cAE7B,GAAI,6CAA6ChI,KAAK+G,UAAUC,WAAY,CAC1E,IAGIkH,GAFUpH,EAAGO,MADP,gBAEe,IAAIjI,QAAQ,cAAe,IAAIA,QAAQ,MAAO,KACrD6I,MAAM,UAEE,IAAfwF,EAAIM,SACbN,EAAIM,OAASG,EAAI,IAGfA,EAAI,KAAOA,EAAI,GAAK,IAClBT,EAAIK,OAAS,IAAML,EAAII,QAAU,IAAMJ,EAAIC,MAAQ,IAAMD,EAAIM,OAAS,MACxEC,GAAY,IAELP,EAAIK,OAAS,IAAML,EAAII,QAAU,IAAMJ,EAAIC,MAAQ,IAAMD,EAAIM,OAAS,QAC/EC,GAAY,QAGVP,EAAIK,OAAS,IAAML,EAAIG,KAAO,IAAMH,EAAII,QAAU,IAAMJ,EAAIC,MAAQ,IAAMD,EAAIM,OAAS,MACzFC,GAAY,GAGhB,OAAOA,GAQF3P,gBAAa,SAAC4N,GACnB,OAAmC,IAA/B1N,EAAK8F,sBACa0C,UAAUzC,WAAW2H,EAAK1H,IAAK,IAAI4J,gBAAgBtJ,KAAKC,UAAUmH,EAAKzH,MAAQ,MAG1FC,QAAQC,QAAQ,CAAEQ,SAAS,IAE3BT,QAAQE,OAAO,CAAEO,SAAS,IAG5BT,QAAQE,OAAO,CAAEyJ,QAAS,sBAAuBlJ,SAAS,KAGvE,OA3oBSmJ,qBAAP,eAAgB,aAAAC,mBAAAA,IAAAC,kBAKd,GAJIlQ,KAAKgC,SAASkO,EAAK,MACrBA,EAAK,GAAKlQ,KAAKmQ,iBAAiBD,EAAK,KAGhB,iBAAZE,SAAwBA,QAAQC,IACzC,IACE,OAAOD,QAAQC,IAAItQ,MAAMqQ,QAASF,GAClC,MAAO1M,GACP4M,QAAQC,IAAIH,EAAK,MAiJhBF,qBAAP,SAAgBzF,GACd,OAAW,MAAPA,GAG2B,mBAAtB7C,SAASpI,KAAKiL,IAIlByF,wBAAP,SAAmBzF,GACjB,YAAe,IAARA,GASFyF,qBAAP,SAAgBzF,GACd,MAA6B,mBAAtB7C,SAASpI,KAAKiL,IAGhByF,mBAAP,SAAczF,GACZ,MAA6B,iBAAtB7C,SAASpI,KAAKiL,IAGhByF,sBAAP,SAAiBzF,GACf,MAA6B,oBAAtB7C,SAASpI,KAAKiL,IAGhByF,qBAAP,SAAgBzF,GACd,MAA6B,mBAAtB7C,SAASpI,KAAKiL,IAA6B,UAAU5I,KAAKuG,OAAOqC,KAGnEyF,sBAAP,SAAiBzF,GACf,SAAUA,GAAwB,IAAjBA,EAAIa,WAGhB4E,uBAAP,SAAkBM,GAChB,IAAKA,EACH,OAAO,EAET,IAAM1L,EAAO8C,SAASpI,KAAKgR,GAC3B,MAAe,qBAAR1L,GAAuC,0BAARA,GAGjCoL,yBAAP,SAAoBlI,GAClB,IACEtB,KAAKsH,MAAMhG,GACX,MAAOtE,GACP,OAAO,EAET,OAAO,GAgDFwM,gCAAP,SAA2BxO,GACzB,IAAI+O,EAAS/O,EACb,IACE+O,EAASC,mBAAmBhP,GAC5B,MAAOgC,GACP+M,EAAS/O,EAEX,OAAO+O,GAGFP,wBAAP,WACE,IAAIvO,EAAM,MAAM8F,KAAK6F,SACjBqD,EAAO,IAAIhD,OAAO,YAAYhM,YAC9BiP,EAAc,IAAIjE,KAAK,GAEvBkE,EADS9E,SAASS,OACE1C,MAAM,KAE1BgH,EAAW,GAIf,IAFAA,EAASnF,QAAQkF,EAAWE,OAErBF,EAAW7Q,QAAQ,CACxB8Q,EAASnF,QAAQkF,EAAWE,OAC5B,IAAIC,EAAWF,EAASnH,KAAK,KACzBqC,EAAYrK,EAAAA,kBAAwBqP,EAKxC,GAHAjF,SAASC,OAASA,EAGd2E,EAAK9O,KAAKkK,SAASC,QAErB,OADAD,SAASC,OAAYA,cAAkB4E,EAChCI"}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/index.ts","../src/lib/tools.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * web 数据埋点 SDK\n * @class WebTracking\n * @version 1.1.0\n * key由这几部分组成:appkey.pagekey.partkey 通过“.”来分割\n * appkey:应用唯一标识\n * pagekey:页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n * partkey:控件/自定义事件唯一标识,可通过接口获取或自定义\n */\nimport Tools from \"./tools\";\nimport {\n EventParams,\n InitParams,\n SystemsInfoTypes,\n TrackParams,\n PresetParams,\n TrackingPostParams,\n HistoryType,\n TargetEleProps,\n JsonProps,\n EventTypes,\n PrivateParamProps,\n} from \"./type\";\n\nclass WebTracking extends Tools {\n initConfig: InitParams;\n sdkVersion: string;\n systemsInfo: SystemsInfoTypes;\n\n constructor() {\n super();\n this.sdkVersion = \"1.1.0\"; // sdk版本\n this.initConfig = {\n appKey: \"\", // 应用唯一标识(由接口生成)\n platform: undefined, // 手动指定客户端平台类型(h5、pc、ipad、other)\n showLog: false, // (是否在网页控制台打印发送的数据)默认:不打印\n serverUrl: \"\", // 数据接收地址\n autoTrack: false, //(是否开启全埋点)指的是:页面浏览、元素点击事件自动上报 默认: 关闭\n sendTimeout: 3000, //(接口发送超时时长,超过该时长未发送成功将强制取消)3000ms(默认)\n isTrackSinglePage: false, //(是否采集单页面应用的路由变化)默认: 不采集\n contentType: \"application/json\", // 数据类型,默认json\n business: {}, // 全局业务参数\n header: undefined, // 请求头\n };\n // 系统信息\n this.systemsInfo = {};\n }\n\n // 用户信息\n protected userInfo?: JsonProps = null;\n // 当前路由\n protected currentUrl: string = \"\";\n // 页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n protected pageKey: string = \"\";\n // 上传事件描述\n protected eventDescMap: { [key: string]: string } = {\n PageView: \"Web 浏览页面\",\n WebClick: \"Web 元素点击\",\n PageRetained: \"Web 页面浏览时长\",\n CustomTrack: \"Web 自定义代码上报\",\n };\n\n /**\n * @description 初始化函数\n * @param {object} InitParams [初始化参数]\n */\n public init = (initParams: InitParams) => {\n this.preset(initParams);\n\n const pathname = window.location.pathname;\n this.currentUrl = window.location.href;\n this.pageKey = pathname.replace(/\\//g, \"_\").substr(1);\n\n this.systemsInfo = this.getSystemsInfo(initParams.platform);\n\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n };\n\n /**\n * TODO: 需要判断有哪些不能被预制的参数\n * @description 预置参数\n * @param {object} PresetParams [预置参数]\n */\n public preset = (presetParams: PresetParams) => {\n if (presetParams instanceof Object) {\n this.each(presetParams, (val, key) => {\n if (this.initConfig.hasOwnProperty(key)) {\n // TODO:后面加一些校验\n this.initConfig[key] = val;\n }\n });\n }\n\n if (\n !/^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-\\(\\)]*[\\w@?^=%&/~+#-\\(\\)])?$/.test(\n this.initConfig[\"serverUrl\"]\n )\n ) {\n this.printLog(\n \"当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!\"\n );\n this.initConfig[\"showLog\"] = true;\n }\n\n // 如果启用了全埋点\n if (!!this.initConfig[\"autoTrack\"]) {\n // 启用监听\n this.listener();\n } else {\n // 取消监听\n this.unlistener();\n }\n };\n\n /**\n * 用户登录\n */\n public login = (userInfo: JsonProps) => {\n if (this.isObject(userInfo)) this.userInfo = userInfo;\n };\n\n /**\n * 自定义代码埋点上报\n * @param {object} TrackParams [自定义上报参数]\n * @return {Promise} [回调]\n */\n public track = ({ desc, partkey, business, header }: TrackParams): Promise<{}> => {\n const params = this.getParams({\n desc,\n event: \"CustomTrack\",\n itemKey: this.getItemKey(partkey),\n privateParamMap: {\n business,\n },\n });\n return this.sendData(params, header);\n };\n\n /**\n * @description 监听全埋点事件\n */\n protected listener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n this.rewriteHistory();\n this.addSinglePageEvent(this.onPageViewCallback);\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.addEventListener(window, \"click\", this.onClickCallback);\n };\n\n /**\n * @description 取消全埋点事件\n */\n protected unlistener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n const historyPushState = window.history.pushState;\n const singlePageEvent = !!historyPushState ? \"popstate\" : \"hashchange\";\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyName: string) => {\n this.removeEventListener(window, historyName, this.onPageViewCallback);\n });\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.removeEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.removeEventListener(window, \"click\", this.onClickCallback);\n };\n\n protected onClickCallback = (e: any): Promise<{}> => {\n if (!e?.target?.dataset?.partKey) return;\n\n const position: [number, number] = [e.pageX, e.pageY];\n const id = e.target.id;\n const className = e.target.className;\n const nodeName = e.target.nodeName;\n const targetEle: TargetEleProps = {\n id,\n nodeName,\n className,\n position,\n };\n\n const params = this.getParams({\n event: \"WebClick\",\n desc: this.eventDescMap[\"WebClick\"],\n itemKey: this.getItemKey(e.target.dataset.partKey),\n privateParamMap: {\n targetEle,\n pointerType: e.pointerType,\n currentUrl: this.currentUrl,\n elementSelector: this.getDomSelector(e.target),\n },\n });\n\n return this.sendData(params);\n };\n\n /**\n * @description 添加单页面监听事件\n * @param callback\n */\n public addSinglePageEvent(callback: (e: EventParams) => void) {\n const historyPushState = window.history.pushState;\n\n const singlePageEvent = historyPushState ? \"popstate\" : \"hashchange\";\n\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, callback);\n });\n }\n\n /**\n * @description 路由触发事件\n */\n protected onPageViewCallback = (e: EventParams) => {\n const ORGIN = window.location.origin;\n const params = this.getParams({\n event: \"PageView\",\n desc: this.eventDescMap[\"PageView\"],\n privateParamMap: {\n currentUrl: this.currentUrl,\n targetUrl: e.arguments?.[2] ? ORGIN + e.arguments?.[2] : null,\n },\n });\n\n this.currentUrl = window.location.href;\n this.pageKey = window.location.pathname.replace(/\\//g, \"_\").substring(1);\n\n this.sendRetained(e.type);\n this.sendData(params);\n };\n\n getParams = ({\n event,\n desc,\n privateParamMap = {},\n itemKey,\n }: {\n event: EventTypes;\n desc: string;\n privateParamMap?: PrivateParamProps;\n itemKey?: string;\n }): TrackingPostParams => {\n const { business } = this.initConfig;\n\n const pageWidth = window.innerWidth;\n const pageHeight = window.innerHeight;\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const params = {\n desc,\n event,\n itemKey: itemKey || this.getItemKey(),\n requestTime: this.getTimeStamp(),\n deviceId: this.getDistinctId(),\n privateParamMap: {\n ...privateParamMap,\n pageWidth,\n pageHeight,\n screenWidth,\n screenHeight,\n sdkVersion: this.sdkVersion,\n systemsInfo: this.systemsInfo,\n urlParams: this.getQueryValue(),\n userInfo: this.userInfo,\n currentUrl: privateParamMap.currentUrl || this.currentUrl,\n business: { ...(business || {}), ...(privateParamMap.business || {}) },\n },\n };\n\n return params;\n };\n\n /**\n * 发送数据通用函数\n */\n sendData = (params: TrackingPostParams, header?: { [key: string]: any }): Promise<{}> => {\n const { serverUrl, sendTimeout, contentType, showLog, header: initHeader } = this.initConfig;\n\n if (!!showLog) this.printLog(params);\n\n if (this.isSupportBeaconSend() === true && !header && !initHeader) {\n return this.sendBeacon({\n contentType,\n url: serverUrl,\n data: params,\n });\n } else {\n return new Promise((resolve, reject) => {\n this.ajax({\n header: header || initHeader,\n url: serverUrl,\n type: \"POST\",\n data: JSON.stringify(params),\n contentType: contentType,\n credentials: false,\n timeout: sendTimeout,\n cors: true,\n success: (res) => resolve(res),\n error: (err) => reject(err),\n });\n });\n }\n };\n\n /**\n * @description 留存时长上报\n * @param type\n */\n sendRetained = (type: string) => {\n const params = this.getParams({ event: \"PageRetained\", desc: this.eventDescMap[\"PageRetained\"] });\n\n if ([\"beforeunload\", \"pushState\", \"replaceState\", \"hashchange\", \"popstate\"].indexOf(type) >= 0) {\n const __time = this.getCookie(\"retainedStartTime\");\n const retainedStartTime = __time ? +__time : this.getTimeStamp();\n const retainedData: TrackingPostParams = {\n ...params,\n privateParamMap: {\n ...params.privateParamMap,\n retainedDuration: Math.max(params.requestTime - retainedStartTime, 0),\n },\n };\n\n this.sendData(retainedData);\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n }\n };\n\n /**\n * @description 获取 itemKey\n * @param {[string]} partkey [控件/自定义事件的唯一标识]\n * @return {[string]}\n */\n protected getItemKey = (partkey?: string | number): string => {\n const appKey = this.initConfig.appKey;\n const keys: string[] = [appKey, this.pageKey, partkey ? partkey.toString() : undefined].filter(\n (key: string | undefined) => !!key\n );\n return keys.reduce((str, key) => str + `${str.length ? \".\" : \"\"}` + key, \"\");\n };\n}\n\nexport default new WebTracking();\n","/**\n * 埋点工具函数\n */\nimport type { Target, SystemsInfoTypes, JsonProps, PlatformType, ContentType } from \"./type\";\n\nexport default class WebTrackingTools {\n constructor() {}\n\n /**\n * 打印log\n */\n public printLog(...rest: any) {\n if (this.isObject(rest[0])) {\n rest[0] = this.formatJsonString(rest[0]);\n }\n\n if (typeof console === \"object\" && console.log) {\n try {\n return console.log.apply(console, rest);\n } catch (e) {\n console.log(rest[0]);\n }\n }\n }\n\n /**\n * 系统信息\n */\n public getSystemsInfo = (platform: PlatformType | string): SystemsInfoTypes => {\n // print system info\n const ua = navigator.userAgent;\n const language = navigator.language;\n\n let _platform: PlatformType = \"other\";\n let logMsg: string[] = [];\n let systemsInfo: SystemsInfoTypes = {\n language,\n };\n\n // wechat client version\n const wxVersionMatch = ua.match(/MicroMessenger\\/([\\d\\.]+)/i);\n const wxVersion = wxVersionMatch && wxVersionMatch[1] ? wxVersionMatch[1] : null;\n\n // device & system\n const ipod = ua.match(/(ipod).*\\s([\\d_]+)/i),\n ipad = ua.match(/(ipad).*\\s([\\d_]+)/i),\n iphone = ua.match(/(iphone)\\sos\\s([\\d_]+)/i),\n android = ua.match(/(android)\\s([\\d\\.]+)/i),\n windows = ua.match(/(Windows NT)\\s([\\d\\.]+)/i),\n mac = ua.match(/(Mac OS X)\\s([\\d_]+)/i);\n\n logMsg = [];\n if (android) {\n logMsg.push(\"Android \" + android[2]);\n _platform = \"h5\";\n } else if (iphone) {\n logMsg.push(\"iPhone, iOS \" + iphone[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (ipad) {\n logMsg.push(\"iPad, iOS \" + ipad[2].replace(/_/g, \".\"));\n _platform = \"ipad\";\n } else if (ipod) {\n logMsg.push(\"iPod, iOS \" + ipod[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (windows) {\n logMsg.push(\"Windows \" + windows[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n } else if (mac) {\n logMsg.push(\"Mac, MacOS \" + mac[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n }\n\n if (wxVersion) {\n logMsg.push(\"WeChat \" + wxVersion);\n }\n\n systemsInfo[\"client\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n systemsInfo[\"platform\"] = platform || _platform;\n\n // network type\n let network = ua.toLowerCase().match(/ nettype\\/([^ ]+)/g);\n\n if (network && network[0]) {\n // @ts-ignore\n network = network[0].split(\"/\");\n logMsg = [network[1]];\n systemsInfo[\"network\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n }\n\n // User Agent\n systemsInfo[\"ua\"] = ua;\n\n return systemsInfo;\n };\n\n /**\n * 监听事件\n * @param {Window | Element} target\n * @param {String} type\n * @param {Function} handler\n */\n protected addEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.addEventListener) {\n target.addEventListener(type, handler, false);\n } else {\n target.attachEvent &&\n target.attachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n false\n );\n }\n };\n\n /**\n * 移除监听事件\n * @param {Element} target\n * @param {String} type\n * @param {Funtion} handler\n */\n protected removeEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.removeEventListener) {\n target.removeEventListener(type, handler);\n } else {\n target.detachEvent &&\n target.detachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n true\n );\n }\n };\n\n /**\n * 重写history[pushState][replaceState]方法\n */\n public rewriteHistory = () => {\n const history = window.history;\n\n const historyWrap = function (type: \"pushState\" | \"replaceState\") {\n const history = window.history;\n const orig: any = history[type];\n const e: any = new Event(type);\n return function () {\n const rv = orig.apply(history, arguments);\n e.arguments = arguments;\n window.dispatchEvent(e);\n return rv;\n };\n };\n\n // 重写\n if (!!window.history.pushState) {\n history.pushState = historyWrap(\"pushState\");\n history.replaceState = historyWrap(\"replaceState\");\n }\n };\n\n /**\n * @description 检验是否是对象\n */\n public isObject(obj) {\n if (obj == null) {\n return false;\n } else {\n return toString.call(obj) == \"[object Object]\";\n }\n }\n\n public isUndefined(obj) {\n return obj === void 0;\n }\n\n public isArray =\n Array.isArray ||\n function (obj) {\n return toString.call(obj) === \"[object Array]\";\n };\n\n public isString(obj) {\n return toString.call(obj) == \"[object String]\";\n }\n\n public isDate(obj) {\n return toString.call(obj) == \"[object Date]\";\n }\n\n public isBoolean(obj) {\n return toString.call(obj) == \"[object Boolean]\";\n }\n\n public isNumber(obj) {\n return toString.call(obj) == \"[object Number]\" && /[\\d\\.]+/.test(String(obj));\n }\n\n public isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n }\n\n public isFunction(f) {\n if (!f) {\n return false;\n }\n const type = toString.call(f);\n return type == \"[object Function]\" || type == \"[object AsyncFunction]\";\n }\n\n public isJSONString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n /**\n * 将json序列化成json字符串\n * @param obj\n * @returns {[JsonString]} [json字符串]\n */\n protected formatJsonString = (obj): string => {\n try {\n return JSON.stringify(obj, null, \" \");\n } catch (e) {\n return JSON.stringify(obj);\n }\n };\n\n public nativeForEach = Array.prototype.forEach;\n public slice = Array.prototype.slice;\n public hasOwnProperty = Object.prototype.hasOwnProperty;\n public breaker = {};\n\n /**\n * @description 循环遍历\n */\n public each = (obj, iterator, context?: null) => {\n if (obj == null) {\n return false;\n }\n\n if (this.nativeForEach && obj.forEach === this.nativeForEach) {\n obj.forEach(iterator, context);\n } else if (this.isArray(obj) && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === this.breaker) {\n return false;\n }\n }\n } else {\n for (let key in obj) {\n if (this.hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === this.breaker) {\n return false;\n }\n }\n }\n }\n };\n\n public _decodeURIComponent(val) {\n let result = val;\n try {\n result = decodeURIComponent(val);\n } catch (e) {\n result = val;\n }\n return result;\n }\n\n public getMainHost() {\n let key = `mh_${Math.random()}`;\n let keyR = new RegExp(`(^|;)\\\\s*${key}=12345`);\n let expiredTime = new Date(0);\n let domain = document.domain;\n let domainList = domain.split(\".\");\n\n let urlItems = [];\n // 主域名一定会有两部分组成\n urlItems.unshift(domainList.pop());\n // 慢慢从后往前测试\n while (domainList.length) {\n urlItems.unshift(domainList.pop());\n let mainHost = urlItems.join(\".\");\n let cookie = `${key}=${12345};domain=.${mainHost}`;\n\n document.cookie = cookie;\n\n //如果cookie存在,则说明域名合法\n if (keyR.test(document.cookie)) {\n document.cookie = `${cookie};expires=${expiredTime}`;\n return mainHost;\n }\n }\n }\n\n protected getDomIndex = (el: Element): number => {\n if (!el.parentNode) return -1;\n let i = 0;\n const nodeName = el.tagName;\n const list = el.parentNode.children;\n for (let n = 0; n < list.length; n++) {\n if (list[n].tagName === nodeName) {\n if (el === list[n]) {\n return i;\n } else {\n i++;\n }\n }\n }\n return -1;\n };\n\n protected selector = (el: Element): string => {\n const i = el.parentNode && 9 == el.parentNode.nodeType ? -1 : this.getDomIndex(el);\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\"))) {\n return \"#\" + el.getAttribute(\"id\");\n } else {\n return el.tagName.toLowerCase() + (~i ? \":nth-of-type(\" + (i + 1) + \")\" : \"\");\n }\n };\n\n public getDomSelector = (el: any, arr?: string[]) => {\n if (!el || !el.parentNode || !el.parentNode.children) {\n return false;\n }\n arr = arr && arr.join ? arr : [];\n const name = el.nodeName.toLowerCase();\n if (!el || name === \"body\" || 1 != el.nodeType) {\n arr.unshift(\"body\");\n return arr.join(\" > \");\n }\n arr.unshift(this.selector(el));\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\")))\n return arr.join(\" > \");\n return this.getDomSelector(el.parentNode, arr);\n };\n\n /**\n * @description 增强cookie操作\n */\n public getCookie = function (name) {\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == \" \") {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) == 0) {\n return this._decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n };\n public setCookie = function (name: string, value: string | number, days?: number) {\n let cdomain = \"\",\n expires = \"\",\n secure = \"\",\n samesite = \"\";\n days = days == null ? 73000 : days;\n\n const domain = this.getMainHost();\n cdomain = domain ? \"; domain=\" + domain : \"\";\n\n if (days !== 0) {\n const date = new Date();\n if (String(days).slice(-1) === \"s\") {\n date.setTime(date.getTime() + Number(String(days).slice(0, -1)) * 1000);\n } else {\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n\n expires = \"; expires=\" + date.toUTCString();\n }\n\n function getValid(data) {\n if (data) {\n return data;\n } else {\n return false;\n }\n }\n let valid_name = \"\";\n let valid_value = \"\";\n let valid_domain = \"\";\n if (name) {\n valid_name = getValid(name);\n }\n if (value) {\n valid_value = getValid(value);\n }\n if (cdomain) {\n valid_domain = getValid(cdomain);\n }\n if (valid_name && valid_value) {\n document.cookie =\n valid_name + \"=\" + encodeURIComponent(valid_value) + expires + \"; path=/\" + valid_domain + samesite + secure;\n }\n };\n public removeCookie = (name) => {\n this.setCookie(name, \"\", -1);\n };\n\n /**\n * 获取当前时间戳\n * @return {number} [当前时间戳]\n */\n public getTimeStamp = (): number => {\n return new Date().getTime();\n };\n\n /**\n * 获取 UUID\n * @return {string} [UUID唯一值]\n */\n public uuid = () => {\n return \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n };\n\n /**\n * 获取设备Id\n * @return {number} [设备Id]\n */\n public getDistinctId = () => {\n let distinctId = this.getCookie(\"distinctId\");\n if (distinctId) return distinctId;\n distinctId = this.uuid();\n this.setCookie(\"distinctId\", distinctId);\n return distinctId;\n };\n\n /**\n * 获取url中的参数\n * @param {[string]} name [参数名]\n */\n public getQueryValue = (): null | JsonProps => {\n const _href = decodeURI(window.location.href);\n const queryArr = _href.match(new RegExp(\"[?&][^?&]+=[^?&]+\", \"g\")) || [];\n const paramsObj: JsonProps = {};\n for (let i = 0; i < queryArr.length; i++) {\n const _item = queryArr[i].replace(/\\?|\\&/, \"\");\n const pair = _item.split(\"=\");\n\n paramsObj[pair[0]] = pair[1];\n }\n return paramsObj;\n };\n\n /**\n *\n * @param {[object]} para [ajax参数]\n * @returns\n */\n public ajax = (para: any) => {\n para.timeout = para.timeout || 30000;\n\n para.credentials = typeof para.credentials === \"undefined\" ? true : para.credentials;\n\n function getJSON(data) {\n if (!data) {\n return \"\";\n }\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n\n const g = this.xhr(para.cors);\n if (!g) {\n return false;\n }\n\n if (!para.type) {\n para.type = para.data ? \"POST\" : \"GET\";\n }\n\n const oldsuccess = para.success;\n const olderror = para.error;\n let errorTimer;\n\n const abort = () => {\n try {\n if (this.isObject(g) && g.abort) {\n g.abort();\n }\n } catch (error) {\n this.printLog(error);\n }\n\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n para.error && para.error();\n g.onreadystatechange = null;\n g.onload = null;\n g.onerror = null;\n }\n };\n\n para.success = function (data) {\n oldsuccess(data);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n para.error = function (err) {\n olderror(err);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n errorTimer = setTimeout(function () {\n abort();\n }, para.timeout);\n\n g.onreadystatechange = function () {\n try {\n if (g.readyState == 4) {\n if ((g.status >= 200 && g.status < 300) || g.status == 304) {\n para.success(getJSON(g.responseText));\n } else {\n para.error(getJSON(g.responseText), g.status);\n }\n g.onreadystatechange = null;\n g.onload = null;\n }\n } catch (e) {\n g.onreadystatechange = null;\n g.onload = null;\n }\n };\n\n g.open(para.type, para.url, true);\n\n try {\n if (para.credentials) {\n g.withCredentials = true;\n }\n if (this.isObject(para.header)) {\n this.each(para.header, function (v, i) {\n g.setRequestHeader && g.setRequestHeader(i, v);\n });\n }\n\n if (para.data) {\n if (!para.cors) {\n g.setRequestHeader && g.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n }\n if (para.contentType === \"application/json\") {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/json; charset=UTF-8\");\n } else {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n }\n } catch (e) {\n this.printLog(e);\n }\n\n g.send(para.data || null);\n };\n public xhr = (cors) => {\n if (cors) {\n if (typeof window.XMLHttpRequest !== \"undefined\" && \"withCredentials\" in new XMLHttpRequest()) {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n } else if (typeof window.XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n };\n\n public getUA = () => {\n const Sys: JsonProps = {};\n const ua = navigator.userAgent.toLowerCase();\n let s;\n if ((s = ua.match(/opera.([\\d.]+)/))) {\n Sys.opera = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/msie ([\\d.]+)/))) {\n Sys.ie = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/edge.([\\d.]+)/))) {\n Sys.edge = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/firefox\\/([\\d.]+)/))) {\n Sys.firefox = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/chrome\\/([\\d.]+)/))) {\n Sys.chrome = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/version\\/([\\d.]+).*safari/))) {\n Sys.safari = Number(s[1].match(/^\\d*.\\d*/));\n } else if ((s = ua.match(/trident\\/([\\d.]+)/))) {\n Sys.ie = 11;\n }\n return Sys;\n };\n\n public isSupportBeaconSend = (): Boolean => {\n let supported = false;\n if (typeof navigator !== \"object\" || typeof navigator.sendBeacon !== \"function\") {\n return supported;\n }\n\n let Sys = this.getUA();\n var ua = navigator.userAgent.toLowerCase();\n\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\n var reg = /os [\\d._]*/gi;\n var verinfo = ua.match(reg);\n var version = (verinfo + \"\").replace(/[^0-9|_.]/gi, \"\").replace(/_/gi, \".\");\n var ver = version.split(\".\");\n\n if (typeof Sys.safari === \"undefined\") {\n Sys.safari = ver[0];\n }\n\n if (ver[0] && +ver[0] < 13) {\n if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 12) {\n supported = true;\n }\n } else if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.3) {\n supported = true;\n }\n } else {\n if (Sys.chrome > 38 || Sys.edge > 13 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.0) {\n supported = true;\n }\n }\n return supported;\n };\n\n /**\n * beacon请求\n * @param {[string]} url\n * @param {[object]} params\n */\n public sendBeacon = (para: {\n url: string;\n data: any;\n contentType: ContentType;\n }): Promise<{ message?: string; success: boolean }> => {\n if (this.isSupportBeaconSend() === true) {\n const headers = {\n type: para.contentType,\n };\n const blob = new Blob([JSON.stringify(para.data)], headers);\n const supportType = navigator.sendBeacon(para.url, blob);\n\n if (supportType) {\n return Promise.resolve({ success: true });\n } else {\n return Promise.reject({ success: false });\n }\n } else {\n return Promise.reject({ message: \"不支持sendBeacon,发送失败!\", success: false });\n }\n };\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__assign","assign","t","s","i","n","arguments","length","apply","this","_super","_this","PageView","WebClick","PageRetained","CustomTrack","initParams","preset","pathname","window","location","currentUrl","href","pageKey","replace","substr","systemsInfo","getSystemsInfo","platform","setCookie","getTimeStamp","presetParams","each","val","key","initConfig","test","printLog","listener","unlistener","userInfo","isObject","_a","desc","partkey","business","header","params","getParams","event","itemKey","getItemKey","privateParamMap","sendData","isTrackSinglePage","rewriteHistory","addSinglePageEvent","onPageViewCallback","historyType","addEventListener","onClickCallback","singlePageEvent","history","pushState","historyName","removeEventListener","e","target","dataset","partKey","position","pageX","pageY","id","className","targetEle","nodeName","eventDescMap","pointerType","elementSelector","getDomSelector","ORGIN","origin","targetUrl","substring","sendRetained","type","_b","pageWidth","innerWidth","pageHeight","innerHeight","screenWidth","screen","width","screenHeight","height","requestTime","deviceId","getDistinctId","sdkVersion","urlParams","getQueryValue","serverUrl","sendTimeout","contentType","showLog","initHeader","isSupportBeaconSend","Promise","resolve","reject","ajax","url","data","JSON","stringify","credentials","timeout","cors","success","res","error","err","sendBeacon","indexOf","__time","getCookie","retainedStartTime","retainedData","retainedDuration","Math","max","appKey","toString","undefined","filter","reduce","str","autoTrack","TypeError","String","__","constructor","create","__extends","WebTracking","callback","ua","navigator","userAgent","_platform","logMsg","language","wxVersionMatch","match","wxVersion","ipod","ipad","iphone","android","windows","mac","push","join","network","toLowerCase","split","handler","attachEvent","detachEvent","historyWrap","orig","Event","rv","dispatchEvent","replaceState","isArray","obj","forEach","slice","iterator","context","nativeForEach","l","breaker","el","parentNode","tagName","list","children","nodeType","getDomIndex","getAttribute","arr","name","unshift","selector","nameEQ","ca","document","cookie","c","charAt","_decodeURIComponent","value","days","cdomain","expires","domain","getMainHost","date","Date","setTime","getTime","Number","toUTCString","getValid","valid_name","valid_value","valid_domain","encodeURIComponent","r","random","distinctId","uuid","queryArr","decodeURI","RegExp","paramsObj","pair","para","getJSON","parse","g","xhr","errorTimer","oldsuccess","olderror","clearTimeout","setTimeout","abort","onreadystatechange","onload","onerror","readyState","status","responseText","open","withCredentials","v","setRequestHeader","send","XMLHttpRequest","Sys","opera","ie","edge","firefox","chrome","safari","supported","getUA","ver","headers","blob","Blob","message","WebTrackingTools","_i","rest","formatJsonString","console","log","f","result","decodeURIComponent","keyR","expiredTime","domainList","urlItems","pop","mainHost"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -12,5 +12,5 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};var t=function(){return(t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};return new(function(n){function r(){var e=n.call(this)||this;return e.userInfo=null,e.currentUrl="",e.pageKey="",e.eventDescMap={PageView:"Web 浏览页面",WebClick:"Web 元素点击",PageRetained:"Web 页面浏览时长",CustomTrack:"Web 自定义代码上报"},e.init=function(t){e.preset(t);var n=window.location.pathname;e.currentUrl=window.location.href,e.pageKey=n.replace(/\//g,"_").substr(1),e.systemsInfo=e.getSystemsInfo(t.platform),e.setCookie("retainedStartTime",e.getTimeStamp())},e.preset=function(t){t instanceof Object&&e.each(t,(function(t,n){e.initConfig.hasOwnProperty(n)&&(e.initConfig[n]=t)})),/^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-\(\)]*[\w@?^=%&/~+#-\(\)])?$/.test(e.initConfig.serverUrl)||(e.printLog("当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!"),e.initConfig.showLog=!0),e.initConfig.autoTrack?e.listener():e.unlistener()},e.login=function(t){e.isObject(t)&&(e.userInfo=t)},e.track=function(t){var n=t.desc,r=t.partkey,i=t.business,o=e.getParams({desc:n,event:"CustomTrack",itemKey:e.getItemKey(r),privateParamMap:{business:i}});return e.sendData(o)},e.listener=function(){e.initConfig.isTrackSinglePage&&(e.rewriteHistory(),e.addSinglePageEvent(e.onPageViewCallback)),e.each(["load","beforeunload"],(function(t){e.addEventListener(window,t,e.onPageViewCallback)})),e.addEventListener(window,"click",e.onClickCallback)},e.unlistener=function(){if(e.initConfig.isTrackSinglePage){var t=window.history.pushState?"popstate":"hashchange";e.each(["pushState","replaceState",t],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)}))}e.each(["load","beforeunload"],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)})),e.removeEventListener(window,"click",e.onClickCallback)},e.onClickCallback=function(t){var n,r;if(null===(r=null===(n=null==t?void 0:t.target)||void 0===n?void 0:n.dataset)||void 0===r?void 0:r.partKey){var i=[t.pageX,t.pageY],o=t.target.id,a=t.target.className,s={id:o,nodeName:t.target.nodeName,className:a,position:i},c=e.getParams({event:"WebClick",desc:e.eventDescMap.WebClick,itemKey:e.getItemKey(t.target.dataset.partKey),privateParamMap:{targetEle:s,pointerType:t.pointerType,currentUrl:e.currentUrl,elementSelector:e.getDomSelector(t.target)}});return e.sendData(c)}},e.onPageViewCallback=function(t){var n,r,i=window.location.origin,o=e.getParams({event:"PageView",desc:e.eventDescMap.PageView,privateParamMap:{currentUrl:e.currentUrl,targetUrl:(null===(n=t.arguments)||void 0===n?void 0:n[2])?i+(null===(r=t.arguments)||void 0===r?void 0:r[2]):null}});e.currentUrl=window.location.href,e.pageKey=window.location.pathname.replace(/\//g,"_").substring(1),e.sendRetained(t.type),e.sendData(o)},e.getParams=function(n){var r=n.event,i=n.desc,o=n.privateParamMap,a=void 0===o?{}:o,s=n.itemKey,c=e.initConfig.business,u=window.innerWidth,l=window.innerHeight,d=window.screen.width,p=window.screen.height;return{desc:i,event:r,itemKey:s||e.getItemKey(),requestTime:e.getTimeStamp(),deviceId:e.getDistinctId(),privateParamMap:t(t({},a),{pageWidth:u,pageHeight:l,screenWidth:d,screenHeight:p,sdkVersion:e.sdkVersion,systemsInfo:e.systemsInfo,urlParams:e.getQueryValue(),userInfo:e.userInfo,currentUrl:a.currentUrl||e.currentUrl,business:t(t({},c||{}),a.business||{})})}},e.sendData=function(t){var n=e.initConfig,r=n.serverUrl,i=n.sendTimeout,o=n.contentType;return n.showLog&&e.printLog(t),!0===e.isSupportBeaconSend()?e.sendBeacon({url:r,data:t}):new Promise((function(n,a){e.ajax({url:r,type:"POST",data:JSON.stringify(t),contentType:o,credentials:!1,timeout:i,cors:!0,success:function(e){return n(e)},error:function(e){return a(e)}})}))},e.sendRetained=function(n){var r=e.getParams({event:"PageRetained",desc:e.eventDescMap.PageRetained});if(["beforeunload","pushState","replaceState","hashchange","popstate"].indexOf(n)>=0){var i=e.getCookie("retainedStartTime"),o=i?+i:e.getTimeStamp(),a=t(t({},r),{privateParamMap:t(t({},r.privateParamMap),{retainedDuration:Math.max(r.requestTime-o,0)})});e.sendData(a),e.setCookie("retainedStartTime",e.getTimeStamp())}},e.getItemKey=function(t){return[e.initConfig.appKey,e.pageKey,t?t.toString():void 0].filter((function(e){return!!e})).reduce((function(e,t){return e+(e.length?".":"")+t}),"")},e.sdkVersion="1.1.0",e.initConfig={appKey:"",platform:void 0,showLog:!1,serverUrl:"",autoTrack:!1,sendTimeout:3e3,isTrackSinglePage:!1,contentType:"application/x-www-form-urlencoded",business:{}},e.systemsInfo={},e}return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}(r,n),r.prototype.addSinglePageEvent=function(e){var t=this,n=window.history.pushState?"popstate":"hashchange";this.each(["pushState","replaceState",n],(function(n){t.addEventListener(window,n,e)}))},r}(function(){function e(){var e=this;this.getSystemsInfo=function(e){var t=navigator.userAgent,n="other",r=[],i={language:navigator.language},o=t.match(/MicroMessenger\/([\d\.]+)/i),a=o&&o[1]?o[1]:null,s=t.match(/(ipod).*\s([\d_]+)/i),c=t.match(/(ipad).*\s([\d_]+)/i),u=t.match(/(iphone)\sos\s([\d_]+)/i),l=t.match(/(android)\s([\d\.]+)/i),d=t.match(/(Windows NT)\s([\d\.]+)/i),p=t.match(/(Mac OS X)\s([\d_]+)/i);r=[],l?(r.push("Android "+l[2]),n="h5"):u?(r.push("iPhone, iOS "+u[2].replace(/_/g,".")),n="h5"):c?(r.push("iPad, iOS "+c[2].replace(/_/g,".")),n="ipad"):s?(r.push("iPod, iOS "+s[2].replace(/_/g,".")),n="h5"):d?(r.push("Windows "+d[2].replace(/_/g,".")),n="pc"):p&&(r.push("Mac, MacOS "+p[2].replace(/_/g,".")),n="pc"),a&&r.push("WeChat "+a),i.client=r.length?r.join(", "):"Unknown",i.platform=e||n;var f=t.toLowerCase().match(/ nettype\/([^ ]+)/g);return f&&f[0]&&(r=[(f=f[0].split("/"))[1]],i.network=r.length?r.join(", "):"Unknown"),i.ua=t,i},this.addEventListener=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,(function(t){return n.call(e,t)}),!1)},this.removeEventListener=function(e,t,n){e.removeEventListener?e.removeEventListener(t,n):e.detachEvent&&e.detachEvent("on"+t,(function(t){return n.call(e,t)}),!0)},this.rewriteHistory=function(){var e=window.history,t=function(e){var t=window.history,n=t[e],r=new Event(e);return function(){var e=n.apply(t,arguments);return r.arguments=arguments,window.dispatchEvent(r),e}};window.history.pushState&&(e.pushState=t("pushState"),e.replaceState=t("replaceState"))},this.isArray=Array.isArray||function(e){return"[object Array]"===toString.call(e)},this.formatJsonString=function(e){try{return JSON.stringify(e,null," ")}catch(t){return JSON.stringify(e)}},this.nativeForEach=Array.prototype.forEach,this.slice=Array.prototype.slice,this.hasOwnProperty=Object.prototype.hasOwnProperty,this.breaker={},this.each=function(t,n,r){if(null==t)return!1;if(e.nativeForEach&&t.forEach===e.nativeForEach)t.forEach(n,r);else if(e.isArray(t)&&t.length===+t.length){for(var i=0,o=t.length;i<o;i++)if(i in t&&n.call(r,t[i],i,t)===e.breaker)return!1}else for(var a in t)if(e.hasOwnProperty.call(t,a)&&n.call(r,t[a],a,t)===e.breaker)return!1},this.getDomIndex=function(e){if(!e.parentNode)return-1;for(var t=0,n=e.tagName,r=e.parentNode.children,i=0;i<r.length;i++)if(r[i].tagName===n){if(e===r[i])return t;t++}return-1},this.selector=function(t){var n=t.parentNode&&9==t.parentNode.nodeType?-1:e.getDomIndex(t);return t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?"#"+t.getAttribute("id"):t.tagName.toLowerCase()+(~n?":nth-of-type("+(n+1)+")":"")},this.getDomSelector=function(t,n){if(!t||!t.parentNode||!t.parentNode.children)return!1;n=n&&n.join?n:[];var r=t.nodeName.toLowerCase();return t&&"body"!==r&&1==t.nodeType?(n.unshift(e.selector(t)),t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?n.join(" > "):e.getDomSelector(t.parentNode,n)):(n.unshift("body"),n.join(" > "))},this.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var i=n[r];" "==i.charAt(0);)i=i.substring(1,i.length);if(0==i.indexOf(t))return this._decodeURIComponent(i.substring(t.length,i.length))}return null},this.setCookie=function(e,t,n){var r,i="";n=null==n?73e3:n;var o=this.getMainHost();if(r=o?"; domain="+o:"",0!==n){var a=new Date;"s"===String(n).slice(-1)?a.setTime(a.getTime()+1e3*Number(String(n).slice(0,-1))):a.setTime(a.getTime()+24*n*60*60*1e3),i="; expires="+a.toUTCString()}function s(e){return e||!1}var c="",u="",l="";e&&(c=s(e)),t&&(u=s(t)),r&&(l=s(r)),c&&u&&(document.cookie=c+"="+encodeURIComponent(u)+i+"; path=/"+l)},this.removeCookie=function(t){e.setCookie(t,"",-1)},this.getTimeStamp=function(){return(new Date).getTime()},this.uuid=function(){return"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},this.getDistinctId=function(){var t=e.getCookie("distinctId");return t||(t=e.uuid(),e.setCookie("distinctId",t),t)},this.getQueryValue=function(){for(var e=decodeURI(window.location.href).match(new RegExp("[?&][^?&]+=[^?&]+","g"))||[],t={},n=0;n<e.length;n++){var r=e[n].replace(/\?|\&/,"").split("=");t[r[0]]=r[1]}return t},this.ajax=function(t){function n(e){if(!e)return"";try{return JSON.parse(e)}catch(e){return{}}}t.timeout=t.timeout||3e4,t.credentials=void 0===t.credentials||t.credentials;var r=e.xhr(t.cors);if(!r)return!1;t.type||(t.type=t.data?"POST":"GET");var i,o=t.success,a=t.error;t.success=function(e){o(e),i&&(clearTimeout(i),i=null)},t.error=function(e){a(e),i&&(clearTimeout(i),i=null)},i=setTimeout((function(){!function(){try{e.isObject(r)&&r.abort&&r.abort()}catch(t){e.printLog(t)}i&&(clearTimeout(i),i=null,t.error&&t.error(),r.onreadystatechange=null,r.onload=null,r.onerror=null)}()}),t.timeout),r.onreadystatechange=function(){try{4==r.readyState&&(r.status>=200&&r.status<300||304==r.status?t.success(n(r.responseText)):t.error(n(r.responseText),r.status),r.onreadystatechange=null,r.onload=null)}catch(e){r.onreadystatechange=null,r.onload=null}},r.open(t.type,t.url,!0);try{t.credentials&&(r.withCredentials=!0),e.isObject(t.header)&&e.each(t.header,(function(e,t){r.setRequestHeader&&r.setRequestHeader(t,e)})),t.data&&(t.cors||r.setRequestHeader&&r.setRequestHeader("X-Requested-With","XMLHttpRequest"),"application/json"===t.contentType?r.setRequestHeader&&r.setRequestHeader("Content-type","application/json; charset=UTF-8"):r.setRequestHeader&&r.setRequestHeader("Content-type","application/x-www-form-urlencoded"))}catch(t){e.printLog(t)}r.send(t.data||null)},this.xhr=function(e){return e?void 0!==window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest?new XMLHttpRequest:null:void 0!==window.XMLHttpRequest?new XMLHttpRequest:null},this.getUA=function(){var e,t={},n=navigator.userAgent.toLowerCase();return(e=n.match(/opera.([\d.]+)/))?t.opera=Number(e[1].split(".")[0]):(e=n.match(/msie ([\d.]+)/))?t.ie=Number(e[1].split(".")[0]):(e=n.match(/edge.([\d.]+)/))?t.edge=Number(e[1].split(".")[0]):(e=n.match(/firefox\/([\d.]+)/))?t.firefox=Number(e[1].split(".")[0]):(e=n.match(/chrome\/([\d.]+)/))?t.chrome=Number(e[1].split(".")[0]):(e=n.match(/version\/([\d.]+).*safari/))?t.safari=Number(e[1].match(/^\d*.\d*/)):(e=n.match(/trident\/([\d.]+)/))&&(t.ie=11),t},this.isSupportBeaconSend=function(){var t=!1;if("object"!=typeof navigator||"function"!=typeof navigator.sendBeacon)return t;var n=e.getUA(),r=navigator.userAgent.toLowerCase();if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)){var i=(r.match(/os [\d._]*/gi)+"").replace(/[^0-9|_.]/gi,"").replace(/_/gi,".").split(".");void 0===n.safari&&(n.safari=i[0]),i[0]&&+i[0]<13?(n.chrome>41||n.firefox>30||n.opera>25||n.safari>12)&&(t=!0):(n.chrome>41||n.firefox>30||n.opera>25||n.safari>11.3)&&(t=!0)}else(n.chrome>38||n.edge>13||n.firefox>30||n.opera>25||n.safari>11)&&(t=!0);return t},this.sendBeacon=function(t){return!0===e.isSupportBeaconSend()?navigator.sendBeacon(t.url,new URLSearchParams(JSON.stringify(t.data||{})))?Promise.resolve({success:!0}):Promise.reject({success:!1}):Promise.reject({message:"不支持sendBeacon,发送失败!",success:!1})}}return e.prototype.printLog=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(this.isObject(e[0])&&(e[0]=this.formatJsonString(e[0])),"object"==typeof console&&console.log)try{return console.log.apply(console,e)}catch(t){console.log(e[0])}},e.prototype.isObject=function(e){return null!=e&&"[object Object]"==toString.call(e)},e.prototype.isUndefined=function(e){return void 0===e},e.prototype.isString=function(e){return"[object String]"==toString.call(e)},e.prototype.isDate=function(e){return"[object Date]"==toString.call(e)},e.prototype.isBoolean=function(e){return"[object Boolean]"==toString.call(e)},e.prototype.isNumber=function(e){return"[object Number]"==toString.call(e)&&/[\d\.]+/.test(String(e))},e.prototype.isElement=function(e){return!(!e||1!==e.nodeType)},e.prototype.isFunction=function(e){if(!e)return!1;var t=toString.call(e);return"[object Function]"==t||"[object AsyncFunction]"==t},e.prototype.isJSONString=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},e.prototype._decodeURIComponent=function(e){var t=e;try{t=decodeURIComponent(e)}catch(n){t=e}return t},e.prototype.getMainHost=function(){var e="mh_"+Math.random(),t=new RegExp("(^|;)\\s*"+e+"=12345"),n=new Date(0),r=document.domain.split("."),i=[];for(i.unshift(r.pop());r.length;){i.unshift(r.pop());var o=i.join("."),a=e+"=12345;domain=."+o;if(document.cookie=a,t.test(document.cookie))return document.cookie=a+";expires="+n,o}},e}()))}));
15
+ ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(t,n)};var t=function(){return(t=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};return new(function(n){function r(){var e=n.call(this)||this;return e.userInfo=null,e.currentUrl="",e.pageKey="",e.eventDescMap={PageView:"Web 浏览页面",WebClick:"Web 元素点击",PageRetained:"Web 页面浏览时长",CustomTrack:"Web 自定义代码上报"},e.init=function(t){e.preset(t);var n=window.location.pathname;e.currentUrl=window.location.href,e.pageKey=n.replace(/\//g,"_").substr(1),e.systemsInfo=e.getSystemsInfo(t.platform),e.setCookie("retainedStartTime",e.getTimeStamp())},e.preset=function(t){t instanceof Object&&e.each(t,(function(t,n){e.initConfig.hasOwnProperty(n)&&(e.initConfig[n]=t)})),/^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-\(\)]*[\w@?^=%&/~+#-\(\)])?$/.test(e.initConfig.serverUrl)||(e.printLog("当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!"),e.initConfig.showLog=!0),e.initConfig.autoTrack?e.listener():e.unlistener()},e.login=function(t){e.isObject(t)&&(e.userInfo=t)},e.track=function(t){var n=t.desc,r=t.partkey,i=t.business,o=t.header,a=e.getParams({desc:n,event:"CustomTrack",itemKey:e.getItemKey(r),privateParamMap:{business:i}});return e.sendData(a,o)},e.listener=function(){e.initConfig.isTrackSinglePage&&(e.rewriteHistory(),e.addSinglePageEvent(e.onPageViewCallback)),e.each(["load","beforeunload"],(function(t){e.addEventListener(window,t,e.onPageViewCallback)})),e.addEventListener(window,"click",e.onClickCallback)},e.unlistener=function(){if(e.initConfig.isTrackSinglePage){var t=window.history.pushState?"popstate":"hashchange";e.each(["pushState","replaceState",t],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)}))}e.each(["load","beforeunload"],(function(t){e.removeEventListener(window,t,e.onPageViewCallback)})),e.removeEventListener(window,"click",e.onClickCallback)},e.onClickCallback=function(t){var n,r;if(null===(r=null===(n=null==t?void 0:t.target)||void 0===n?void 0:n.dataset)||void 0===r?void 0:r.partKey){var i=[t.pageX,t.pageY],o=t.target.id,a=t.target.className,s={id:o,nodeName:t.target.nodeName,className:a,position:i},c=e.getParams({event:"WebClick",desc:e.eventDescMap.WebClick,itemKey:e.getItemKey(t.target.dataset.partKey),privateParamMap:{targetEle:s,pointerType:t.pointerType,currentUrl:e.currentUrl,elementSelector:e.getDomSelector(t.target)}});return e.sendData(c)}},e.onPageViewCallback=function(t){var n,r,i=window.location.origin,o=e.getParams({event:"PageView",desc:e.eventDescMap.PageView,privateParamMap:{currentUrl:e.currentUrl,targetUrl:(null===(n=t.arguments)||void 0===n?void 0:n[2])?i+(null===(r=t.arguments)||void 0===r?void 0:r[2]):null}});e.currentUrl=window.location.href,e.pageKey=window.location.pathname.replace(/\//g,"_").substring(1),e.sendRetained(t.type),e.sendData(o)},e.getParams=function(n){var r=n.event,i=n.desc,o=n.privateParamMap,a=void 0===o?{}:o,s=n.itemKey,c=e.initConfig.business,u=window.innerWidth,l=window.innerHeight,d=window.screen.width,p=window.screen.height;return{desc:i,event:r,itemKey:s||e.getItemKey(),requestTime:e.getTimeStamp(),deviceId:e.getDistinctId(),privateParamMap:t(t({},a),{pageWidth:u,pageHeight:l,screenWidth:d,screenHeight:p,sdkVersion:e.sdkVersion,systemsInfo:e.systemsInfo,urlParams:e.getQueryValue(),userInfo:e.userInfo,currentUrl:a.currentUrl||e.currentUrl,business:t(t({},c||{}),a.business||{})})}},e.sendData=function(t,n){var r=e.initConfig,i=r.serverUrl,o=r.sendTimeout,a=r.contentType,s=r.showLog,c=r.header;return s&&e.printLog(t),!0!==e.isSupportBeaconSend()||n||c?new Promise((function(r,s){e.ajax({header:n||c,url:i,type:"POST",data:JSON.stringify(t),contentType:a,credentials:!1,timeout:o,cors:!0,success:function(e){return r(e)},error:function(e){return s(e)}})})):e.sendBeacon({contentType:a,url:i,data:t})},e.sendRetained=function(n){var r=e.getParams({event:"PageRetained",desc:e.eventDescMap.PageRetained});if(["beforeunload","pushState","replaceState","hashchange","popstate"].indexOf(n)>=0){var i=e.getCookie("retainedStartTime"),o=i?+i:e.getTimeStamp(),a=t(t({},r),{privateParamMap:t(t({},r.privateParamMap),{retainedDuration:Math.max(r.requestTime-o,0)})});e.sendData(a),e.setCookie("retainedStartTime",e.getTimeStamp())}},e.getItemKey=function(t){return[e.initConfig.appKey,e.pageKey,t?t.toString():void 0].filter((function(e){return!!e})).reduce((function(e,t){return e+(e.length?".":"")+t}),"")},e.sdkVersion="1.1.0",e.initConfig={appKey:"",platform:void 0,showLog:!1,serverUrl:"",autoTrack:!1,sendTimeout:3e3,isTrackSinglePage:!1,contentType:"application/json",business:{},header:void 0},e.systemsInfo={},e}return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}(r,n),r.prototype.addSinglePageEvent=function(e){var t=this,n=window.history.pushState?"popstate":"hashchange";this.each(["pushState","replaceState",n],(function(n){t.addEventListener(window,n,e)}))},r}(function(){function e(){var e=this;this.getSystemsInfo=function(e){var t=navigator.userAgent,n="other",r=[],i={language:navigator.language},o=t.match(/MicroMessenger\/([\d\.]+)/i),a=o&&o[1]?o[1]:null,s=t.match(/(ipod).*\s([\d_]+)/i),c=t.match(/(ipad).*\s([\d_]+)/i),u=t.match(/(iphone)\sos\s([\d_]+)/i),l=t.match(/(android)\s([\d\.]+)/i),d=t.match(/(Windows NT)\s([\d\.]+)/i),p=t.match(/(Mac OS X)\s([\d_]+)/i);r=[],l?(r.push("Android "+l[2]),n="h5"):u?(r.push("iPhone, iOS "+u[2].replace(/_/g,".")),n="h5"):c?(r.push("iPad, iOS "+c[2].replace(/_/g,".")),n="ipad"):s?(r.push("iPod, iOS "+s[2].replace(/_/g,".")),n="h5"):d?(r.push("Windows "+d[2].replace(/_/g,".")),n="pc"):p&&(r.push("Mac, MacOS "+p[2].replace(/_/g,".")),n="pc"),a&&r.push("WeChat "+a),i.client=r.length?r.join(", "):"Unknown",i.platform=e||n;var f=t.toLowerCase().match(/ nettype\/([^ ]+)/g);return f&&f[0]&&(r=[(f=f[0].split("/"))[1]],i.network=r.length?r.join(", "):"Unknown"),i.ua=t,i},this.addEventListener=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,(function(t){return n.call(e,t)}),!1)},this.removeEventListener=function(e,t,n){e.removeEventListener?e.removeEventListener(t,n):e.detachEvent&&e.detachEvent("on"+t,(function(t){return n.call(e,t)}),!0)},this.rewriteHistory=function(){var e=window.history,t=function(e){var t=window.history,n=t[e],r=new Event(e);return function(){var e=n.apply(t,arguments);return r.arguments=arguments,window.dispatchEvent(r),e}};window.history.pushState&&(e.pushState=t("pushState"),e.replaceState=t("replaceState"))},this.isArray=Array.isArray||function(e){return"[object Array]"===toString.call(e)},this.formatJsonString=function(e){try{return JSON.stringify(e,null," ")}catch(t){return JSON.stringify(e)}},this.nativeForEach=Array.prototype.forEach,this.slice=Array.prototype.slice,this.hasOwnProperty=Object.prototype.hasOwnProperty,this.breaker={},this.each=function(t,n,r){if(null==t)return!1;if(e.nativeForEach&&t.forEach===e.nativeForEach)t.forEach(n,r);else if(e.isArray(t)&&t.length===+t.length){for(var i=0,o=t.length;i<o;i++)if(i in t&&n.call(r,t[i],i,t)===e.breaker)return!1}else for(var a in t)if(e.hasOwnProperty.call(t,a)&&n.call(r,t[a],a,t)===e.breaker)return!1},this.getDomIndex=function(e){if(!e.parentNode)return-1;for(var t=0,n=e.tagName,r=e.parentNode.children,i=0;i<r.length;i++)if(r[i].tagName===n){if(e===r[i])return t;t++}return-1},this.selector=function(t){var n=t.parentNode&&9==t.parentNode.nodeType?-1:e.getDomIndex(t);return t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?"#"+t.getAttribute("id"):t.tagName.toLowerCase()+(~n?":nth-of-type("+(n+1)+")":"")},this.getDomSelector=function(t,n){if(!t||!t.parentNode||!t.parentNode.children)return!1;n=n&&n.join?n:[];var r=t.nodeName.toLowerCase();return t&&"body"!==r&&1==t.nodeType?(n.unshift(e.selector(t)),t.getAttribute&&t.getAttribute("id")&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(t.getAttribute("id"))?n.join(" > "):e.getDomSelector(t.parentNode,n)):(n.unshift("body"),n.join(" > "))},this.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r<n.length;r++){for(var i=n[r];" "==i.charAt(0);)i=i.substring(1,i.length);if(0==i.indexOf(t))return this._decodeURIComponent(i.substring(t.length,i.length))}return null},this.setCookie=function(e,t,n){var r,i="";n=null==n?73e3:n;var o=this.getMainHost();if(r=o?"; domain="+o:"",0!==n){var a=new Date;"s"===String(n).slice(-1)?a.setTime(a.getTime()+1e3*Number(String(n).slice(0,-1))):a.setTime(a.getTime()+24*n*60*60*1e3),i="; expires="+a.toUTCString()}function s(e){return e||!1}var c="",u="",l="";e&&(c=s(e)),t&&(u=s(t)),r&&(l=s(r)),c&&u&&(document.cookie=c+"="+encodeURIComponent(u)+i+"; path=/"+l)},this.removeCookie=function(t){e.setCookie(t,"",-1)},this.getTimeStamp=function(){return(new Date).getTime()},this.uuid=function(){return"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},this.getDistinctId=function(){var t=e.getCookie("distinctId");return t||(t=e.uuid(),e.setCookie("distinctId",t),t)},this.getQueryValue=function(){for(var e=decodeURI(window.location.href).match(new RegExp("[?&][^?&]+=[^?&]+","g"))||[],t={},n=0;n<e.length;n++){var r=e[n].replace(/\?|\&/,"").split("=");t[r[0]]=r[1]}return t},this.ajax=function(t){function n(e){if(!e)return"";try{return JSON.parse(e)}catch(e){return{}}}t.timeout=t.timeout||3e4,t.credentials=void 0===t.credentials||t.credentials;var r=e.xhr(t.cors);if(!r)return!1;t.type||(t.type=t.data?"POST":"GET");var i,o=t.success,a=t.error;t.success=function(e){o(e),i&&(clearTimeout(i),i=null)},t.error=function(e){a(e),i&&(clearTimeout(i),i=null)},i=setTimeout((function(){!function(){try{e.isObject(r)&&r.abort&&r.abort()}catch(t){e.printLog(t)}i&&(clearTimeout(i),i=null,t.error&&t.error(),r.onreadystatechange=null,r.onload=null,r.onerror=null)}()}),t.timeout),r.onreadystatechange=function(){try{4==r.readyState&&(r.status>=200&&r.status<300||304==r.status?t.success(n(r.responseText)):t.error(n(r.responseText),r.status),r.onreadystatechange=null,r.onload=null)}catch(e){r.onreadystatechange=null,r.onload=null}},r.open(t.type,t.url,!0);try{t.credentials&&(r.withCredentials=!0),e.isObject(t.header)&&e.each(t.header,(function(e,t){r.setRequestHeader&&r.setRequestHeader(t,e)})),t.data&&(t.cors||r.setRequestHeader&&r.setRequestHeader("X-Requested-With","XMLHttpRequest"),"application/json"===t.contentType?r.setRequestHeader&&r.setRequestHeader("Content-type","application/json; charset=UTF-8"):r.setRequestHeader&&r.setRequestHeader("Content-type","application/x-www-form-urlencoded"))}catch(t){e.printLog(t)}r.send(t.data||null)},this.xhr=function(e){return e?void 0!==window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest?new XMLHttpRequest:null:void 0!==window.XMLHttpRequest?new XMLHttpRequest:null},this.getUA=function(){var e,t={},n=navigator.userAgent.toLowerCase();return(e=n.match(/opera.([\d.]+)/))?t.opera=Number(e[1].split(".")[0]):(e=n.match(/msie ([\d.]+)/))?t.ie=Number(e[1].split(".")[0]):(e=n.match(/edge.([\d.]+)/))?t.edge=Number(e[1].split(".")[0]):(e=n.match(/firefox\/([\d.]+)/))?t.firefox=Number(e[1].split(".")[0]):(e=n.match(/chrome\/([\d.]+)/))?t.chrome=Number(e[1].split(".")[0]):(e=n.match(/version\/([\d.]+).*safari/))?t.safari=Number(e[1].match(/^\d*.\d*/)):(e=n.match(/trident\/([\d.]+)/))&&(t.ie=11),t},this.isSupportBeaconSend=function(){var t=!1;if("object"!=typeof navigator||"function"!=typeof navigator.sendBeacon)return t;var n=e.getUA(),r=navigator.userAgent.toLowerCase();if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)){var i=(r.match(/os [\d._]*/gi)+"").replace(/[^0-9|_.]/gi,"").replace(/_/gi,".").split(".");void 0===n.safari&&(n.safari=i[0]),i[0]&&+i[0]<13?(n.chrome>41||n.firefox>30||n.opera>25||n.safari>12)&&(t=!0):(n.chrome>41||n.firefox>30||n.opera>25||n.safari>11.3)&&(t=!0)}else(n.chrome>38||n.edge>13||n.firefox>30||n.opera>25||n.safari>11)&&(t=!0);return t},this.sendBeacon=function(t){if(!0===e.isSupportBeaconSend()){var n={type:t.contentType},r=new Blob([JSON.stringify(t.data)],n);return navigator.sendBeacon(t.url,r)?Promise.resolve({success:!0}):Promise.reject({success:!1})}return Promise.reject({message:"不支持sendBeacon,发送失败!",success:!1})}}return e.prototype.printLog=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(this.isObject(e[0])&&(e[0]=this.formatJsonString(e[0])),"object"==typeof console&&console.log)try{return console.log.apply(console,e)}catch(t){console.log(e[0])}},e.prototype.isObject=function(e){return null!=e&&"[object Object]"==toString.call(e)},e.prototype.isUndefined=function(e){return void 0===e},e.prototype.isString=function(e){return"[object String]"==toString.call(e)},e.prototype.isDate=function(e){return"[object Date]"==toString.call(e)},e.prototype.isBoolean=function(e){return"[object Boolean]"==toString.call(e)},e.prototype.isNumber=function(e){return"[object Number]"==toString.call(e)&&/[\d\.]+/.test(String(e))},e.prototype.isElement=function(e){return!(!e||1!==e.nodeType)},e.prototype.isFunction=function(e){if(!e)return!1;var t=toString.call(e);return"[object Function]"==t||"[object AsyncFunction]"==t},e.prototype.isJSONString=function(e){try{JSON.parse(e)}catch(e){return!1}return!0},e.prototype._decodeURIComponent=function(e){var t=e;try{t=decodeURIComponent(e)}catch(n){t=e}return t},e.prototype.getMainHost=function(){var e="mh_"+Math.random(),t=new RegExp("(^|;)\\s*"+e+"=12345"),n=new Date(0),r=document.domain.split("."),i=[];for(i.unshift(r.pop());r.length;){i.unshift(r.pop());var o=i.join("."),a=e+"=12345;domain=."+o;if(document.cookie=a,t.test(document.cookie))return document.cookie=a+";expires="+n,o}},e}()))}));
16
16
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/index.ts","../src/lib/tools.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * web 数据埋点 SDK\n * @class WebTracking\n * @version 1.1.0\n * key由这几部分组成:appkey.pagekey.partkey 通过“.”来分割\n * appkey:应用唯一标识\n * pagekey:页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n * partkey:控件/自定义事件唯一标识,可通过接口获取或自定义\n */\nimport Tools from \"./tools\";\nimport {\n EventParams,\n InitParams,\n SystemsInfoTypes,\n TrackParams,\n PresetParams,\n TrackingPostParams,\n HistoryType,\n TargetEleProps,\n JsonProps,\n EventTypes,\n PrivateParamProps,\n} from \"./type\";\n\nclass WebTracking extends Tools {\n initConfig: InitParams;\n sdkVersion: string;\n systemsInfo: SystemsInfoTypes;\n\n constructor() {\n super();\n this.sdkVersion = \"1.1.0\"; // sdk版本\n this.initConfig = {\n appKey: \"\", // 应用唯一标识(由接口生成)\n platform: undefined, // 手动指定客户端平台类型(h5、pc、ipad、other)\n showLog: false, // (是否在网页控制台打印发送的数据)默认:不打印\n serverUrl: \"\", // 数据接收地址\n autoTrack: false, //(是否开启全埋点)指的是:页面浏览、元素点击事件自动上报 默认: 关闭\n sendTimeout: 3000, //(接口发送超时时长,超过该时长未发送成功将强制取消)3000ms(默认)\n isTrackSinglePage: false, //(是否采集单页面应用的路由变化)默认: 不采集\n contentType: \"application/x-www-form-urlencoded\", // 数据类型,默认form data\n business: {}, // 全局业务参数\n };\n // 系统信息\n this.systemsInfo = {};\n }\n\n // 用户信息\n protected userInfo?: JsonProps = null;\n // 当前路由\n protected currentUrl: string = \"\";\n // 页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n protected pageKey: string = \"\";\n // 上传事件描述\n protected eventDescMap: { [key: string]: string } = {\n PageView: \"Web 浏览页面\",\n WebClick: \"Web 元素点击\",\n PageRetained: \"Web 页面浏览时长\",\n CustomTrack: \"Web 自定义代码上报\",\n };\n\n /**\n * @description 初始化函数\n * @param {object} InitParams [初始化参数]\n */\n public init = (initParams: InitParams) => {\n this.preset(initParams);\n\n const pathname = window.location.pathname;\n this.currentUrl = window.location.href;\n this.pageKey = pathname.replace(/\\//g, \"_\").substr(1);\n\n this.systemsInfo = this.getSystemsInfo(initParams.platform);\n\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n };\n\n /**\n * TODO: 需要判断有哪些不能被预制的参数\n * @description 预置参数\n * @param {object} PresetParams [预置参数]\n */\n public preset = (presetParams: PresetParams) => {\n if (presetParams instanceof Object) {\n this.each(presetParams, (val, key) => {\n if (this.initConfig.hasOwnProperty(key)) {\n // TODO:后面加一些校验\n this.initConfig[key] = val;\n }\n });\n }\n \n if (\n !/^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-\\(\\)]*[\\w@?^=%&/~+#-\\(\\)])?$/.test(\n this.initConfig[\"serverUrl\"]\n )\n ) {\n this.printLog(\n \"当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!\"\n );\n this.initConfig[\"showLog\"] = true;\n }\n\n // 如果启用了全埋点\n if (!!this.initConfig[\"autoTrack\"]) {\n // 启用监听\n this.listener();\n } else {\n // 取消监听\n this.unlistener();\n }\n };\n\n /**\n * 用户登录\n */\n public login = (userInfo: JsonProps) => {\n if (this.isObject(userInfo)) this.userInfo = userInfo;\n };\n\n /**\n * 自定义代码埋点上报\n * @param {object} TrackParams [自定义上报参数]\n * @return {Promise} [回调]\n */\n public track = ({ desc, partkey, business }: TrackParams): Promise<{}> => {\n const params = this.getParams({\n desc,\n event: \"CustomTrack\",\n itemKey: this.getItemKey(partkey),\n privateParamMap: {\n business,\n },\n });\n return this.sendData(params);\n };\n\n /**\n * @description 监听全埋点事件\n */\n protected listener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n this.rewriteHistory();\n this.addSinglePageEvent(this.onPageViewCallback);\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.addEventListener(window, \"click\", this.onClickCallback);\n };\n\n /**\n * @description 取消全埋点事件\n */\n protected unlistener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n const historyPushState = window.history.pushState;\n const singlePageEvent = !!historyPushState ? \"popstate\" : \"hashchange\";\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyName: string) => {\n this.removeEventListener(window, historyName, this.onPageViewCallback);\n });\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.removeEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.removeEventListener(window, \"click\", this.onClickCallback);\n };\n\n protected onClickCallback = (e: any): Promise<{}> => {\n if (!e?.target?.dataset?.partKey) return;\n\n const position: [number, number] = [e.pageX, e.pageY];\n const id = e.target.id;\n const className = e.target.className;\n const nodeName = e.target.nodeName;\n const targetEle: TargetEleProps = {\n id,\n nodeName,\n className,\n position,\n };\n\n const params = this.getParams({\n event: \"WebClick\",\n desc: this.eventDescMap[\"WebClick\"],\n itemKey: this.getItemKey(e.target.dataset.partKey),\n privateParamMap: {\n targetEle,\n pointerType: e.pointerType,\n currentUrl: this.currentUrl,\n elementSelector: this.getDomSelector(e.target),\n },\n });\n\n return this.sendData(params);\n };\n\n /**\n * @description 添加单页面监听事件\n * @param callback\n */\n public addSinglePageEvent(callback: (e: EventParams) => void) {\n const historyPushState = window.history.pushState;\n\n const singlePageEvent = historyPushState ? \"popstate\" : \"hashchange\";\n\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, callback);\n });\n }\n\n /**\n * @description 路由触发事件\n */\n protected onPageViewCallback = (e: EventParams) => {\n const ORGIN = window.location.origin;\n const params = this.getParams({\n event: \"PageView\",\n desc: this.eventDescMap[\"PageView\"],\n privateParamMap: {\n currentUrl: this.currentUrl,\n targetUrl: e.arguments?.[2] ? ORGIN + e.arguments?.[2] : null,\n },\n });\n\n this.currentUrl = window.location.href;\n this.pageKey = window.location.pathname.replace(/\\//g, \"_\").substring(1);\n\n this.sendRetained(e.type);\n this.sendData(params);\n };\n\n getParams = ({\n event,\n desc,\n privateParamMap = {},\n itemKey,\n }: {\n event: EventTypes;\n desc: string;\n privateParamMap?: PrivateParamProps;\n itemKey?: string;\n }): TrackingPostParams => {\n const { business } = this.initConfig;\n\n const pageWidth = window.innerWidth;\n const pageHeight = window.innerHeight;\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const params = {\n desc,\n event,\n itemKey: itemKey || this.getItemKey(),\n requestTime: this.getTimeStamp(),\n deviceId: this.getDistinctId(),\n privateParamMap: {\n ...privateParamMap,\n pageWidth,\n pageHeight,\n screenWidth,\n screenHeight,\n sdkVersion: this.sdkVersion,\n systemsInfo: this.systemsInfo,\n urlParams: this.getQueryValue(),\n userInfo: this.userInfo,\n currentUrl: privateParamMap.currentUrl || this.currentUrl,\n business: { ...(business || {}), ...(privateParamMap.business || {}) },\n },\n };\n\n return params;\n };\n\n /**\n * 发送数据通用函数\n */\n sendData = (params: TrackingPostParams): Promise<{}> => {\n const { serverUrl, sendTimeout, contentType, showLog } = this.initConfig;\n\n if (!!showLog) this.printLog(params);\n\n if (this.isSupportBeaconSend() === true) {\n return this.sendBeacon({\n url: serverUrl,\n data: params,\n });\n } else {\n return new Promise((resolve, reject) => {\n this.ajax({\n url: serverUrl,\n type: \"POST\",\n data: JSON.stringify(params),\n contentType: contentType,\n credentials: false,\n timeout: sendTimeout,\n cors: true,\n success: (res) => resolve(res),\n error: (err) => reject(err),\n });\n });\n }\n };\n\n /**\n * @description 留存时长上报\n * @param type\n */\n sendRetained = (type: string) => {\n const params = this.getParams({ event: \"PageRetained\", desc: this.eventDescMap[\"PageRetained\"] });\n\n if ([\"beforeunload\", \"pushState\", \"replaceState\", \"hashchange\", \"popstate\"].indexOf(type) >= 0) {\n const __time = this.getCookie(\"retainedStartTime\");\n const retainedStartTime = __time ? +__time : this.getTimeStamp();\n const retainedData: TrackingPostParams = {\n ...params,\n privateParamMap: {\n ...params.privateParamMap,\n retainedDuration: Math.max(params.requestTime - retainedStartTime, 0),\n },\n };\n\n this.sendData(retainedData);\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n }\n };\n\n /**\n * @description 获取 itemKey\n * @param {[string]} partkey [控件/自定义事件的唯一标识]\n * @return {[string]}\n */\n protected getItemKey = (partkey?: string | number): string => {\n const appKey = this.initConfig.appKey;\n const keys: string[] = [appKey, this.pageKey, partkey ? partkey.toString() : undefined].filter(\n (key: string | undefined) => !!key\n );\n return keys.reduce((str, key) => str + `${str.length ? \".\" : \"\"}` + key, \"\");\n };\n}\n\nexport default new WebTracking();\n","/**\n * 埋点工具函数\n */\nimport { Target, SystemsInfoTypes, JsonProps, PlatformType } from \"./type\";\n\nexport default class WebTrackingTools {\n constructor() {}\n\n /**\n * 打印log\n */\n public printLog(...rest: any) {\n if (this.isObject(rest[0])) {\n rest[0] = this.formatJsonString(rest[0]);\n }\n\n if (typeof console === \"object\" && console.log) {\n try {\n return console.log.apply(console, rest);\n } catch (e) {\n console.log(rest[0]);\n }\n }\n }\n\n /**\n * 系统信息\n */\n public getSystemsInfo = (platform: PlatformType | string): SystemsInfoTypes => {\n // print system info\n const ua = navigator.userAgent;\n const language = navigator.language;\n\n let _platform: PlatformType = \"other\";\n let logMsg: string[] = [];\n let systemsInfo: SystemsInfoTypes = {\n language,\n };\n\n // wechat client version\n const wxVersionMatch = ua.match(/MicroMessenger\\/([\\d\\.]+)/i);\n const wxVersion = wxVersionMatch && wxVersionMatch[1] ? wxVersionMatch[1] : null;\n\n // device & system\n const ipod = ua.match(/(ipod).*\\s([\\d_]+)/i),\n ipad = ua.match(/(ipad).*\\s([\\d_]+)/i),\n iphone = ua.match(/(iphone)\\sos\\s([\\d_]+)/i),\n android = ua.match(/(android)\\s([\\d\\.]+)/i),\n windows = ua.match(/(Windows NT)\\s([\\d\\.]+)/i),\n mac = ua.match(/(Mac OS X)\\s([\\d_]+)/i);\n\n logMsg = [];\n if (android) {\n logMsg.push(\"Android \" + android[2]);\n _platform = \"h5\";\n } else if (iphone) {\n logMsg.push(\"iPhone, iOS \" + iphone[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (ipad) {\n logMsg.push(\"iPad, iOS \" + ipad[2].replace(/_/g, \".\"));\n _platform = \"ipad\";\n } else if (ipod) {\n logMsg.push(\"iPod, iOS \" + ipod[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (windows) {\n logMsg.push(\"Windows \" + windows[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n } else if (mac) {\n logMsg.push(\"Mac, MacOS \" + mac[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n }\n\n if (wxVersion) {\n logMsg.push(\"WeChat \" + wxVersion);\n }\n\n systemsInfo[\"client\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n systemsInfo[\"platform\"] = platform || _platform;\n\n // network type\n let network = ua.toLowerCase().match(/ nettype\\/([^ ]+)/g);\n\n if (network && network[0]) {\n // @ts-ignore\n network = network[0].split(\"/\");\n logMsg = [network[1]];\n systemsInfo[\"network\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n }\n\n // User Agent\n systemsInfo[\"ua\"] = ua;\n\n return systemsInfo;\n };\n\n /**\n * 监听事件\n * @param {Window | Element} target\n * @param {String} type\n * @param {Function} handler\n */\n protected addEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.addEventListener) {\n target.addEventListener(type, handler, false);\n } else {\n target.attachEvent &&\n target.attachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n false\n );\n }\n };\n\n /**\n * 移除监听事件\n * @param {Element} target\n * @param {String} type\n * @param {Funtion} handler\n */\n protected removeEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.removeEventListener) {\n target.removeEventListener(type, handler);\n } else {\n target.detachEvent &&\n target.detachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n true\n );\n }\n };\n\n /**\n * 重写history[pushState][replaceState]方法\n */\n public rewriteHistory = () => {\n const history = window.history;\n\n const historyWrap = function (type: \"pushState\" | \"replaceState\") {\n const history = window.history;\n const orig: any = history[type];\n const e: any = new Event(type);\n return function () {\n const rv = orig.apply(history, arguments);\n e.arguments = arguments;\n window.dispatchEvent(e);\n return rv;\n };\n };\n\n // 重写\n if (!!window.history.pushState) {\n history.pushState = historyWrap(\"pushState\");\n history.replaceState = historyWrap(\"replaceState\");\n }\n };\n\n /**\n * @description 检验是否是对象\n */\n public isObject(obj) {\n if (obj == null) {\n return false;\n } else {\n return toString.call(obj) == \"[object Object]\";\n }\n }\n\n public isUndefined(obj) {\n return obj === void 0;\n }\n\n public isArray =\n Array.isArray ||\n function (obj) {\n return toString.call(obj) === \"[object Array]\";\n };\n\n public isString(obj) {\n return toString.call(obj) == \"[object String]\";\n }\n\n public isDate(obj) {\n return toString.call(obj) == \"[object Date]\";\n }\n\n public isBoolean(obj) {\n return toString.call(obj) == \"[object Boolean]\";\n }\n\n public isNumber(obj) {\n return toString.call(obj) == \"[object Number]\" && /[\\d\\.]+/.test(String(obj));\n }\n\n public isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n }\n\n public isFunction(f) {\n if (!f) {\n return false;\n }\n const type = toString.call(f);\n return type == \"[object Function]\" || type == \"[object AsyncFunction]\";\n }\n\n public isJSONString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n /**\n * 将json序列化成json字符串\n * @param obj\n * @returns {[JsonString]} [json字符串]\n */\n protected formatJsonString = (obj): string => {\n try {\n return JSON.stringify(obj, null, \" \");\n } catch (e) {\n return JSON.stringify(obj);\n }\n };\n\n public nativeForEach = Array.prototype.forEach;\n public slice = Array.prototype.slice;\n public hasOwnProperty = Object.prototype.hasOwnProperty;\n public breaker = {};\n\n /**\n * @description 循环遍历\n */\n public each = (obj, iterator, context?: null) => {\n if (obj == null) {\n return false;\n }\n\n if (this.nativeForEach && obj.forEach === this.nativeForEach) {\n obj.forEach(iterator, context);\n } else if (this.isArray(obj) && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === this.breaker) {\n return false;\n }\n }\n } else {\n for (let key in obj) {\n if (this.hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === this.breaker) {\n return false;\n }\n }\n }\n }\n };\n\n public _decodeURIComponent(val) {\n let result = val;\n try {\n result = decodeURIComponent(val);\n } catch (e) {\n result = val;\n }\n return result;\n }\n\n public getMainHost() {\n let key = `mh_${Math.random()}`;\n let keyR = new RegExp(`(^|;)\\\\s*${key}=12345`);\n let expiredTime = new Date(0);\n let domain = document.domain;\n let domainList = domain.split(\".\");\n\n let urlItems = [];\n // 主域名一定会有两部分组成\n urlItems.unshift(domainList.pop());\n // 慢慢从后往前测试\n while (domainList.length) {\n urlItems.unshift(domainList.pop());\n let mainHost = urlItems.join(\".\");\n let cookie = `${key}=${12345};domain=.${mainHost}`;\n\n document.cookie = cookie;\n\n //如果cookie存在,则说明域名合法\n if (keyR.test(document.cookie)) {\n document.cookie = `${cookie};expires=${expiredTime}`;\n return mainHost;\n }\n }\n }\n\n protected getDomIndex = (el: Element): number => {\n if (!el.parentNode) return -1;\n let i = 0;\n const nodeName = el.tagName;\n const list = el.parentNode.children;\n for (let n = 0; n < list.length; n++) {\n if (list[n].tagName === nodeName) {\n if (el === list[n]) {\n return i;\n } else {\n i++;\n }\n }\n }\n return -1;\n };\n\n protected selector = (el: Element): string => {\n const i = el.parentNode && 9 == el.parentNode.nodeType ? -1 : this.getDomIndex(el);\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\"))) {\n return \"#\" + el.getAttribute(\"id\");\n } else {\n return el.tagName.toLowerCase() + (~i ? \":nth-of-type(\" + (i + 1) + \")\" : \"\");\n }\n };\n\n public getDomSelector = (el: any, arr?: string[]) => {\n if (!el || !el.parentNode || !el.parentNode.children) {\n return false;\n }\n arr = arr && arr.join ? arr : [];\n const name = el.nodeName.toLowerCase();\n if (!el || name === \"body\" || 1 != el.nodeType) {\n arr.unshift(\"body\");\n return arr.join(\" > \");\n }\n arr.unshift(this.selector(el));\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\")))\n return arr.join(\" > \");\n return this.getDomSelector(el.parentNode, arr);\n };\n\n /**\n * @description 增强cookie操作\n */\n public getCookie = function (name) {\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == \" \") {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) == 0) {\n return this._decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n };\n public setCookie = function (name: string, value: string | number, days?: number) {\n let cdomain = \"\",\n expires = \"\",\n secure = \"\",\n samesite = \"\";\n days = days == null ? 73000 : days;\n\n const domain = this.getMainHost();\n cdomain = domain ? \"; domain=\" + domain : \"\";\n\n if (days !== 0) {\n const date = new Date();\n if (String(days).slice(-1) === \"s\") {\n date.setTime(date.getTime() + Number(String(days).slice(0, -1)) * 1000);\n } else {\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n\n expires = \"; expires=\" + date.toUTCString();\n }\n\n function getValid(data) {\n if (data) {\n return data;\n } else {\n return false;\n }\n }\n let valid_name = \"\";\n let valid_value = \"\";\n let valid_domain = \"\";\n if (name) {\n valid_name = getValid(name);\n }\n if (value) {\n valid_value = getValid(value);\n }\n if (cdomain) {\n valid_domain = getValid(cdomain);\n }\n if (valid_name && valid_value) {\n document.cookie =\n valid_name + \"=\" + encodeURIComponent(valid_value) + expires + \"; path=/\" + valid_domain + samesite + secure;\n }\n };\n public removeCookie = (name) => {\n this.setCookie(name, \"\", -1);\n };\n\n /**\n * 获取当前时间戳\n * @return {number} [当前时间戳]\n */\n public getTimeStamp = (): number => {\n return new Date().getTime();\n };\n\n /**\n * 获取 UUID\n * @return {string} [UUID唯一值]\n */\n public uuid = () => {\n return \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n };\n\n /**\n * 获取设备Id\n * @return {number} [设备Id]\n */\n public getDistinctId = () => {\n let distinctId = this.getCookie(\"distinctId\");\n if (distinctId) return distinctId;\n distinctId = this.uuid();\n this.setCookie(\"distinctId\", distinctId);\n return distinctId;\n };\n\n /**\n * 获取url中的参数\n * @param {[string]} name [参数名]\n */\n public getQueryValue = (): null | JsonProps => {\n const _href = decodeURI(window.location.href);\n const queryArr = _href.match(new RegExp(\"[?&][^?&]+=[^?&]+\", \"g\")) || [];\n const paramsObj: JsonProps = {};\n for (let i = 0; i < queryArr.length; i++) {\n const _item = queryArr[i].replace(/\\?|\\&/, \"\");\n const pair = _item.split(\"=\");\n\n paramsObj[pair[0]] = pair[1];\n }\n return paramsObj;\n };\n\n /**\n *\n * @param {[object]} para [ajax参数]\n * @returns\n */\n public ajax = (para: any) => {\n para.timeout = para.timeout || 30000;\n\n para.credentials = typeof para.credentials === \"undefined\" ? true : para.credentials;\n\n function getJSON(data) {\n if (!data) {\n return \"\";\n }\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n\n const g = this.xhr(para.cors);\n if (!g) {\n return false;\n }\n\n if (!para.type) {\n para.type = para.data ? \"POST\" : \"GET\";\n }\n\n const oldsuccess = para.success;\n const olderror = para.error;\n let errorTimer;\n\n const abort = () => {\n try {\n if (this.isObject(g) && g.abort) {\n g.abort();\n }\n } catch (error) {\n this.printLog(error);\n }\n\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n para.error && para.error();\n g.onreadystatechange = null;\n g.onload = null;\n g.onerror = null;\n }\n };\n\n para.success = function (data) {\n oldsuccess(data);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n para.error = function (err) {\n olderror(err);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n errorTimer = setTimeout(function () {\n abort();\n }, para.timeout);\n\n g.onreadystatechange = function () {\n try {\n if (g.readyState == 4) {\n if ((g.status >= 200 && g.status < 300) || g.status == 304) {\n para.success(getJSON(g.responseText));\n } else {\n para.error(getJSON(g.responseText), g.status);\n }\n g.onreadystatechange = null;\n g.onload = null;\n }\n } catch (e) {\n g.onreadystatechange = null;\n g.onload = null;\n }\n };\n\n g.open(para.type, para.url, true);\n\n try {\n if (para.credentials) {\n g.withCredentials = true;\n }\n if (this.isObject(para.header)) {\n this.each(para.header, function (v, i) {\n g.setRequestHeader && g.setRequestHeader(i, v);\n });\n }\n\n if (para.data) {\n if (!para.cors) {\n g.setRequestHeader && g.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n }\n if (para.contentType === \"application/json\") {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/json; charset=UTF-8\");\n } else {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n }\n } catch (e) {\n this.printLog(e);\n }\n\n g.send(para.data || null);\n };\n public xhr = (cors) => {\n if (cors) {\n if (typeof window.XMLHttpRequest !== \"undefined\" && \"withCredentials\" in new XMLHttpRequest()) {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n } else if (typeof window.XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n };\n\n public getUA = () => {\n const Sys: JsonProps = {};\n const ua = navigator.userAgent.toLowerCase();\n let s;\n if ((s = ua.match(/opera.([\\d.]+)/))) {\n Sys.opera = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/msie ([\\d.]+)/))) {\n Sys.ie = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/edge.([\\d.]+)/))) {\n Sys.edge = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/firefox\\/([\\d.]+)/))) {\n Sys.firefox = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/chrome\\/([\\d.]+)/))) {\n Sys.chrome = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/version\\/([\\d.]+).*safari/))) {\n Sys.safari = Number(s[1].match(/^\\d*.\\d*/));\n } else if ((s = ua.match(/trident\\/([\\d.]+)/))) {\n Sys.ie = 11;\n }\n return Sys;\n };\n\n public isSupportBeaconSend = (): Boolean => {\n let supported = false;\n if (typeof navigator !== \"object\" || typeof navigator.sendBeacon !== \"function\") {\n return supported;\n }\n\n let Sys = this.getUA();\n var ua = navigator.userAgent.toLowerCase();\n\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\n var reg = /os [\\d._]*/gi;\n var verinfo = ua.match(reg);\n var version = (verinfo + \"\").replace(/[^0-9|_.]/gi, \"\").replace(/_/gi, \".\");\n var ver = version.split(\".\");\n\n if (typeof Sys.safari === \"undefined\") {\n Sys.safari = ver[0];\n }\n\n if (ver[0] && +ver[0] < 13) {\n if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 12) {\n supported = true;\n }\n } else if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.3) {\n supported = true;\n }\n } else {\n if (Sys.chrome > 38 || Sys.edge > 13 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.0) {\n supported = true;\n }\n }\n return supported;\n };\n\n /**\n * beacon请求\n * @param {[string]} url\n * @param {[object]} params\n */\n public sendBeacon = (para: any): Promise<{ message?: string; success: boolean }> => {\n if (this.isSupportBeaconSend() === true) {\n const supportType = navigator.sendBeacon(para.url, new URLSearchParams(JSON.stringify(para.data || {})));\n\n if (supportType) {\n return Promise.resolve({ success: true });\n } else {\n return Promise.reject({ success: false });\n }\n } else {\n return Promise.reject({ message: \"不支持sendBeacon,发送失败!\", success: false });\n }\n };\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__assign","assign","t","s","i","n","arguments","length","apply","this","_super","_this","PageView","WebClick","PageRetained","CustomTrack","initParams","preset","pathname","window","location","currentUrl","href","pageKey","replace","substr","systemsInfo","getSystemsInfo","platform","setCookie","getTimeStamp","presetParams","each","val","key","initConfig","test","printLog","listener","unlistener","userInfo","isObject","_a","desc","partkey","business","params","getParams","event","itemKey","getItemKey","privateParamMap","sendData","isTrackSinglePage","rewriteHistory","addSinglePageEvent","onPageViewCallback","historyType","addEventListener","onClickCallback","singlePageEvent","history","pushState","historyName","removeEventListener","e","target","dataset","partKey","position","pageX","pageY","id","className","targetEle","nodeName","eventDescMap","pointerType","elementSelector","getDomSelector","ORGIN","origin","targetUrl","substring","sendRetained","type","_b","pageWidth","innerWidth","pageHeight","innerHeight","screenWidth","screen","width","screenHeight","height","requestTime","deviceId","getDistinctId","sdkVersion","urlParams","getQueryValue","serverUrl","sendTimeout","contentType","isSupportBeaconSend","sendBeacon","url","data","Promise","resolve","reject","ajax","JSON","stringify","credentials","timeout","cors","success","res","error","err","indexOf","__time","getCookie","retainedStartTime","retainedData","retainedDuration","Math","max","appKey","toString","undefined","filter","reduce","str","showLog","autoTrack","TypeError","String","__","constructor","create","__extends","WebTracking","callback","ua","navigator","userAgent","_platform","logMsg","language","wxVersionMatch","match","wxVersion","ipod","ipad","iphone","android","windows","mac","push","join","network","toLowerCase","split","handler","attachEvent","detachEvent","historyWrap","orig","Event","rv","dispatchEvent","replaceState","isArray","obj","forEach","slice","iterator","context","nativeForEach","l","breaker","el","parentNode","tagName","list","children","nodeType","getDomIndex","getAttribute","arr","name","unshift","selector","nameEQ","ca","document","cookie","c","charAt","_decodeURIComponent","value","days","cdomain","expires","domain","getMainHost","date","Date","setTime","getTime","Number","toUTCString","getValid","valid_name","valid_value","valid_domain","encodeURIComponent","r","random","distinctId","uuid","queryArr","decodeURI","RegExp","paramsObj","pair","para","getJSON","parse","g","xhr","errorTimer","oldsuccess","olderror","clearTimeout","setTimeout","abort","onreadystatechange","onload","onerror","readyState","status","responseText","open","withCredentials","header","v","setRequestHeader","send","XMLHttpRequest","Sys","opera","ie","edge","firefox","chrome","safari","supported","getUA","ver","URLSearchParams","message","WebTrackingTools","_i","rest","formatJsonString","console","log","f","result","decodeURIComponent","keyR","expiredTime","domainList","urlItems","pop","mainHost"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/index.ts","../src/lib/tools.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * web 数据埋点 SDK\n * @class WebTracking\n * @version 1.1.0\n * key由这几部分组成:appkey.pagekey.partkey 通过“.”来分割\n * appkey:应用唯一标识\n * pagekey:页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n * partkey:控件/自定义事件唯一标识,可通过接口获取或自定义\n */\nimport Tools from \"./tools\";\nimport {\n EventParams,\n InitParams,\n SystemsInfoTypes,\n TrackParams,\n PresetParams,\n TrackingPostParams,\n HistoryType,\n TargetEleProps,\n JsonProps,\n EventTypes,\n PrivateParamProps,\n} from \"./type\";\n\nclass WebTracking extends Tools {\n initConfig: InitParams;\n sdkVersion: string;\n systemsInfo: SystemsInfoTypes;\n\n constructor() {\n super();\n this.sdkVersion = \"1.1.0\"; // sdk版本\n this.initConfig = {\n appKey: \"\", // 应用唯一标识(由接口生成)\n platform: undefined, // 手动指定客户端平台类型(h5、pc、ipad、other)\n showLog: false, // (是否在网页控制台打印发送的数据)默认:不打印\n serverUrl: \"\", // 数据接收地址\n autoTrack: false, //(是否开启全埋点)指的是:页面浏览、元素点击事件自动上报 默认: 关闭\n sendTimeout: 3000, //(接口发送超时时长,超过该时长未发送成功将强制取消)3000ms(默认)\n isTrackSinglePage: false, //(是否采集单页面应用的路由变化)默认: 不采集\n contentType: \"application/json\", // 数据类型,默认json\n business: {}, // 全局业务参数\n header: undefined, // 请求头\n };\n // 系统信息\n this.systemsInfo = {};\n }\n\n // 用户信息\n protected userInfo?: JsonProps = null;\n // 当前路由\n protected currentUrl: string = \"\";\n // 页面唯一标识,取当前路由 window.location.pathname.replace(/\\//g, '_').substr(1)\n protected pageKey: string = \"\";\n // 上传事件描述\n protected eventDescMap: { [key: string]: string } = {\n PageView: \"Web 浏览页面\",\n WebClick: \"Web 元素点击\",\n PageRetained: \"Web 页面浏览时长\",\n CustomTrack: \"Web 自定义代码上报\",\n };\n\n /**\n * @description 初始化函数\n * @param {object} InitParams [初始化参数]\n */\n public init = (initParams: InitParams) => {\n this.preset(initParams);\n\n const pathname = window.location.pathname;\n this.currentUrl = window.location.href;\n this.pageKey = pathname.replace(/\\//g, \"_\").substr(1);\n\n this.systemsInfo = this.getSystemsInfo(initParams.platform);\n\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n };\n\n /**\n * TODO: 需要判断有哪些不能被预制的参数\n * @description 预置参数\n * @param {object} PresetParams [预置参数]\n */\n public preset = (presetParams: PresetParams) => {\n if (presetParams instanceof Object) {\n this.each(presetParams, (val, key) => {\n if (this.initConfig.hasOwnProperty(key)) {\n // TODO:后面加一些校验\n this.initConfig[key] = val;\n }\n });\n }\n\n if (\n !/^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-\\(\\)]*[\\w@?^=%&/~+#-\\(\\)])?$/.test(\n this.initConfig[\"serverUrl\"]\n )\n ) {\n this.printLog(\n \"当前 server_url 为空或不正确,只在控制台打印日志,network 中不会发数据,请配置正确的 server_url!\"\n );\n this.initConfig[\"showLog\"] = true;\n }\n\n // 如果启用了全埋点\n if (!!this.initConfig[\"autoTrack\"]) {\n // 启用监听\n this.listener();\n } else {\n // 取消监听\n this.unlistener();\n }\n };\n\n /**\n * 用户登录\n */\n public login = (userInfo: JsonProps) => {\n if (this.isObject(userInfo)) this.userInfo = userInfo;\n };\n\n /**\n * 自定义代码埋点上报\n * @param {object} TrackParams [自定义上报参数]\n * @return {Promise} [回调]\n */\n public track = ({ desc, partkey, business, header }: TrackParams): Promise<{}> => {\n const params = this.getParams({\n desc,\n event: \"CustomTrack\",\n itemKey: this.getItemKey(partkey),\n privateParamMap: {\n business,\n },\n });\n return this.sendData(params, header);\n };\n\n /**\n * @description 监听全埋点事件\n */\n protected listener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n this.rewriteHistory();\n this.addSinglePageEvent(this.onPageViewCallback);\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.addEventListener(window, \"click\", this.onClickCallback);\n };\n\n /**\n * @description 取消全埋点事件\n */\n protected unlistener = () => {\n if (!!this.initConfig.isTrackSinglePage) {\n const historyPushState = window.history.pushState;\n const singlePageEvent = !!historyPushState ? \"popstate\" : \"hashchange\";\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyName: string) => {\n this.removeEventListener(window, historyName, this.onPageViewCallback);\n });\n }\n\n this.each([\"load\", \"beforeunload\"], (historyType: HistoryType) => {\n this.removeEventListener(window, historyType, this.onPageViewCallback);\n });\n\n this.removeEventListener(window, \"click\", this.onClickCallback);\n };\n\n protected onClickCallback = (e: any): Promise<{}> => {\n if (!e?.target?.dataset?.partKey) return;\n\n const position: [number, number] = [e.pageX, e.pageY];\n const id = e.target.id;\n const className = e.target.className;\n const nodeName = e.target.nodeName;\n const targetEle: TargetEleProps = {\n id,\n nodeName,\n className,\n position,\n };\n\n const params = this.getParams({\n event: \"WebClick\",\n desc: this.eventDescMap[\"WebClick\"],\n itemKey: this.getItemKey(e.target.dataset.partKey),\n privateParamMap: {\n targetEle,\n pointerType: e.pointerType,\n currentUrl: this.currentUrl,\n elementSelector: this.getDomSelector(e.target),\n },\n });\n\n return this.sendData(params);\n };\n\n /**\n * @description 添加单页面监听事件\n * @param callback\n */\n public addSinglePageEvent(callback: (e: EventParams) => void) {\n const historyPushState = window.history.pushState;\n\n const singlePageEvent = historyPushState ? \"popstate\" : \"hashchange\";\n\n this.each([\"pushState\", \"replaceState\", singlePageEvent], (historyType: HistoryType) => {\n this.addEventListener(window, historyType, callback);\n });\n }\n\n /**\n * @description 路由触发事件\n */\n protected onPageViewCallback = (e: EventParams) => {\n const ORGIN = window.location.origin;\n const params = this.getParams({\n event: \"PageView\",\n desc: this.eventDescMap[\"PageView\"],\n privateParamMap: {\n currentUrl: this.currentUrl,\n targetUrl: e.arguments?.[2] ? ORGIN + e.arguments?.[2] : null,\n },\n });\n\n this.currentUrl = window.location.href;\n this.pageKey = window.location.pathname.replace(/\\//g, \"_\").substring(1);\n\n this.sendRetained(e.type);\n this.sendData(params);\n };\n\n getParams = ({\n event,\n desc,\n privateParamMap = {},\n itemKey,\n }: {\n event: EventTypes;\n desc: string;\n privateParamMap?: PrivateParamProps;\n itemKey?: string;\n }): TrackingPostParams => {\n const { business } = this.initConfig;\n\n const pageWidth = window.innerWidth;\n const pageHeight = window.innerHeight;\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const params = {\n desc,\n event,\n itemKey: itemKey || this.getItemKey(),\n requestTime: this.getTimeStamp(),\n deviceId: this.getDistinctId(),\n privateParamMap: {\n ...privateParamMap,\n pageWidth,\n pageHeight,\n screenWidth,\n screenHeight,\n sdkVersion: this.sdkVersion,\n systemsInfo: this.systemsInfo,\n urlParams: this.getQueryValue(),\n userInfo: this.userInfo,\n currentUrl: privateParamMap.currentUrl || this.currentUrl,\n business: { ...(business || {}), ...(privateParamMap.business || {}) },\n },\n };\n\n return params;\n };\n\n /**\n * 发送数据通用函数\n */\n sendData = (params: TrackingPostParams, header?: { [key: string]: any }): Promise<{}> => {\n const { serverUrl, sendTimeout, contentType, showLog, header: initHeader } = this.initConfig;\n\n if (!!showLog) this.printLog(params);\n\n if (this.isSupportBeaconSend() === true && !header && !initHeader) {\n return this.sendBeacon({\n contentType,\n url: serverUrl,\n data: params,\n });\n } else {\n return new Promise((resolve, reject) => {\n this.ajax({\n header: header || initHeader,\n url: serverUrl,\n type: \"POST\",\n data: JSON.stringify(params),\n contentType: contentType,\n credentials: false,\n timeout: sendTimeout,\n cors: true,\n success: (res) => resolve(res),\n error: (err) => reject(err),\n });\n });\n }\n };\n\n /**\n * @description 留存时长上报\n * @param type\n */\n sendRetained = (type: string) => {\n const params = this.getParams({ event: \"PageRetained\", desc: this.eventDescMap[\"PageRetained\"] });\n\n if ([\"beforeunload\", \"pushState\", \"replaceState\", \"hashchange\", \"popstate\"].indexOf(type) >= 0) {\n const __time = this.getCookie(\"retainedStartTime\");\n const retainedStartTime = __time ? +__time : this.getTimeStamp();\n const retainedData: TrackingPostParams = {\n ...params,\n privateParamMap: {\n ...params.privateParamMap,\n retainedDuration: Math.max(params.requestTime - retainedStartTime, 0),\n },\n };\n\n this.sendData(retainedData);\n this.setCookie(\"retainedStartTime\", this.getTimeStamp());\n }\n };\n\n /**\n * @description 获取 itemKey\n * @param {[string]} partkey [控件/自定义事件的唯一标识]\n * @return {[string]}\n */\n protected getItemKey = (partkey?: string | number): string => {\n const appKey = this.initConfig.appKey;\n const keys: string[] = [appKey, this.pageKey, partkey ? partkey.toString() : undefined].filter(\n (key: string | undefined) => !!key\n );\n return keys.reduce((str, key) => str + `${str.length ? \".\" : \"\"}` + key, \"\");\n };\n}\n\nexport default new WebTracking();\n","/**\n * 埋点工具函数\n */\nimport type { Target, SystemsInfoTypes, JsonProps, PlatformType, ContentType } from \"./type\";\n\nexport default class WebTrackingTools {\n constructor() {}\n\n /**\n * 打印log\n */\n public printLog(...rest: any) {\n if (this.isObject(rest[0])) {\n rest[0] = this.formatJsonString(rest[0]);\n }\n\n if (typeof console === \"object\" && console.log) {\n try {\n return console.log.apply(console, rest);\n } catch (e) {\n console.log(rest[0]);\n }\n }\n }\n\n /**\n * 系统信息\n */\n public getSystemsInfo = (platform: PlatformType | string): SystemsInfoTypes => {\n // print system info\n const ua = navigator.userAgent;\n const language = navigator.language;\n\n let _platform: PlatformType = \"other\";\n let logMsg: string[] = [];\n let systemsInfo: SystemsInfoTypes = {\n language,\n };\n\n // wechat client version\n const wxVersionMatch = ua.match(/MicroMessenger\\/([\\d\\.]+)/i);\n const wxVersion = wxVersionMatch && wxVersionMatch[1] ? wxVersionMatch[1] : null;\n\n // device & system\n const ipod = ua.match(/(ipod).*\\s([\\d_]+)/i),\n ipad = ua.match(/(ipad).*\\s([\\d_]+)/i),\n iphone = ua.match(/(iphone)\\sos\\s([\\d_]+)/i),\n android = ua.match(/(android)\\s([\\d\\.]+)/i),\n windows = ua.match(/(Windows NT)\\s([\\d\\.]+)/i),\n mac = ua.match(/(Mac OS X)\\s([\\d_]+)/i);\n\n logMsg = [];\n if (android) {\n logMsg.push(\"Android \" + android[2]);\n _platform = \"h5\";\n } else if (iphone) {\n logMsg.push(\"iPhone, iOS \" + iphone[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (ipad) {\n logMsg.push(\"iPad, iOS \" + ipad[2].replace(/_/g, \".\"));\n _platform = \"ipad\";\n } else if (ipod) {\n logMsg.push(\"iPod, iOS \" + ipod[2].replace(/_/g, \".\"));\n _platform = \"h5\";\n } else if (windows) {\n logMsg.push(\"Windows \" + windows[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n } else if (mac) {\n logMsg.push(\"Mac, MacOS \" + mac[2].replace(/_/g, \".\"));\n _platform = \"pc\";\n }\n\n if (wxVersion) {\n logMsg.push(\"WeChat \" + wxVersion);\n }\n\n systemsInfo[\"client\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n systemsInfo[\"platform\"] = platform || _platform;\n\n // network type\n let network = ua.toLowerCase().match(/ nettype\\/([^ ]+)/g);\n\n if (network && network[0]) {\n // @ts-ignore\n network = network[0].split(\"/\");\n logMsg = [network[1]];\n systemsInfo[\"network\"] = logMsg.length ? logMsg.join(\", \") : \"Unknown\";\n }\n\n // User Agent\n systemsInfo[\"ua\"] = ua;\n\n return systemsInfo;\n };\n\n /**\n * 监听事件\n * @param {Window | Element} target\n * @param {String} type\n * @param {Function} handler\n */\n protected addEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.addEventListener) {\n target.addEventListener(type, handler, false);\n } else {\n target.attachEvent &&\n target.attachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n false\n );\n }\n };\n\n /**\n * 移除监听事件\n * @param {Element} target\n * @param {String} type\n * @param {Funtion} handler\n */\n protected removeEventListener = (target: Target, type: string, handler: (e: Event) => void) => {\n if (target.removeEventListener) {\n target.removeEventListener(type, handler);\n } else {\n target.detachEvent &&\n target.detachEvent(\n \"on\" + type,\n function (event) {\n return handler.call(target, event);\n },\n true\n );\n }\n };\n\n /**\n * 重写history[pushState][replaceState]方法\n */\n public rewriteHistory = () => {\n const history = window.history;\n\n const historyWrap = function (type: \"pushState\" | \"replaceState\") {\n const history = window.history;\n const orig: any = history[type];\n const e: any = new Event(type);\n return function () {\n const rv = orig.apply(history, arguments);\n e.arguments = arguments;\n window.dispatchEvent(e);\n return rv;\n };\n };\n\n // 重写\n if (!!window.history.pushState) {\n history.pushState = historyWrap(\"pushState\");\n history.replaceState = historyWrap(\"replaceState\");\n }\n };\n\n /**\n * @description 检验是否是对象\n */\n public isObject(obj) {\n if (obj == null) {\n return false;\n } else {\n return toString.call(obj) == \"[object Object]\";\n }\n }\n\n public isUndefined(obj) {\n return obj === void 0;\n }\n\n public isArray =\n Array.isArray ||\n function (obj) {\n return toString.call(obj) === \"[object Array]\";\n };\n\n public isString(obj) {\n return toString.call(obj) == \"[object String]\";\n }\n\n public isDate(obj) {\n return toString.call(obj) == \"[object Date]\";\n }\n\n public isBoolean(obj) {\n return toString.call(obj) == \"[object Boolean]\";\n }\n\n public isNumber(obj) {\n return toString.call(obj) == \"[object Number]\" && /[\\d\\.]+/.test(String(obj));\n }\n\n public isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n }\n\n public isFunction(f) {\n if (!f) {\n return false;\n }\n const type = toString.call(f);\n return type == \"[object Function]\" || type == \"[object AsyncFunction]\";\n }\n\n public isJSONString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n /**\n * 将json序列化成json字符串\n * @param obj\n * @returns {[JsonString]} [json字符串]\n */\n protected formatJsonString = (obj): string => {\n try {\n return JSON.stringify(obj, null, \" \");\n } catch (e) {\n return JSON.stringify(obj);\n }\n };\n\n public nativeForEach = Array.prototype.forEach;\n public slice = Array.prototype.slice;\n public hasOwnProperty = Object.prototype.hasOwnProperty;\n public breaker = {};\n\n /**\n * @description 循环遍历\n */\n public each = (obj, iterator, context?: null) => {\n if (obj == null) {\n return false;\n }\n\n if (this.nativeForEach && obj.forEach === this.nativeForEach) {\n obj.forEach(iterator, context);\n } else if (this.isArray(obj) && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(context, obj[i], i, obj) === this.breaker) {\n return false;\n }\n }\n } else {\n for (let key in obj) {\n if (this.hasOwnProperty.call(obj, key)) {\n if (iterator.call(context, obj[key], key, obj) === this.breaker) {\n return false;\n }\n }\n }\n }\n };\n\n public _decodeURIComponent(val) {\n let result = val;\n try {\n result = decodeURIComponent(val);\n } catch (e) {\n result = val;\n }\n return result;\n }\n\n public getMainHost() {\n let key = `mh_${Math.random()}`;\n let keyR = new RegExp(`(^|;)\\\\s*${key}=12345`);\n let expiredTime = new Date(0);\n let domain = document.domain;\n let domainList = domain.split(\".\");\n\n let urlItems = [];\n // 主域名一定会有两部分组成\n urlItems.unshift(domainList.pop());\n // 慢慢从后往前测试\n while (domainList.length) {\n urlItems.unshift(domainList.pop());\n let mainHost = urlItems.join(\".\");\n let cookie = `${key}=${12345};domain=.${mainHost}`;\n\n document.cookie = cookie;\n\n //如果cookie存在,则说明域名合法\n if (keyR.test(document.cookie)) {\n document.cookie = `${cookie};expires=${expiredTime}`;\n return mainHost;\n }\n }\n }\n\n protected getDomIndex = (el: Element): number => {\n if (!el.parentNode) return -1;\n let i = 0;\n const nodeName = el.tagName;\n const list = el.parentNode.children;\n for (let n = 0; n < list.length; n++) {\n if (list[n].tagName === nodeName) {\n if (el === list[n]) {\n return i;\n } else {\n i++;\n }\n }\n }\n return -1;\n };\n\n protected selector = (el: Element): string => {\n const i = el.parentNode && 9 == el.parentNode.nodeType ? -1 : this.getDomIndex(el);\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\"))) {\n return \"#\" + el.getAttribute(\"id\");\n } else {\n return el.tagName.toLowerCase() + (~i ? \":nth-of-type(\" + (i + 1) + \")\" : \"\");\n }\n };\n\n public getDomSelector = (el: any, arr?: string[]) => {\n if (!el || !el.parentNode || !el.parentNode.children) {\n return false;\n }\n arr = arr && arr.join ? arr : [];\n const name = el.nodeName.toLowerCase();\n if (!el || name === \"body\" || 1 != el.nodeType) {\n arr.unshift(\"body\");\n return arr.join(\" > \");\n }\n arr.unshift(this.selector(el));\n if (el.getAttribute && el.getAttribute(\"id\") && /^[A-Za-z][-A-Za-z0-9_:.]*$/.test(el.getAttribute(\"id\")))\n return arr.join(\" > \");\n return this.getDomSelector(el.parentNode, arr);\n };\n\n /**\n * @description 增强cookie操作\n */\n public getCookie = function (name) {\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == \" \") {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) == 0) {\n return this._decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n };\n public setCookie = function (name: string, value: string | number, days?: number) {\n let cdomain = \"\",\n expires = \"\",\n secure = \"\",\n samesite = \"\";\n days = days == null ? 73000 : days;\n\n const domain = this.getMainHost();\n cdomain = domain ? \"; domain=\" + domain : \"\";\n\n if (days !== 0) {\n const date = new Date();\n if (String(days).slice(-1) === \"s\") {\n date.setTime(date.getTime() + Number(String(days).slice(0, -1)) * 1000);\n } else {\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n\n expires = \"; expires=\" + date.toUTCString();\n }\n\n function getValid(data) {\n if (data) {\n return data;\n } else {\n return false;\n }\n }\n let valid_name = \"\";\n let valid_value = \"\";\n let valid_domain = \"\";\n if (name) {\n valid_name = getValid(name);\n }\n if (value) {\n valid_value = getValid(value);\n }\n if (cdomain) {\n valid_domain = getValid(cdomain);\n }\n if (valid_name && valid_value) {\n document.cookie =\n valid_name + \"=\" + encodeURIComponent(valid_value) + expires + \"; path=/\" + valid_domain + samesite + secure;\n }\n };\n public removeCookie = (name) => {\n this.setCookie(name, \"\", -1);\n };\n\n /**\n * 获取当前时间戳\n * @return {number} [当前时间戳]\n */\n public getTimeStamp = (): number => {\n return new Date().getTime();\n };\n\n /**\n * 获取 UUID\n * @return {string} [UUID唯一值]\n */\n public uuid = () => {\n return \"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n };\n\n /**\n * 获取设备Id\n * @return {number} [设备Id]\n */\n public getDistinctId = () => {\n let distinctId = this.getCookie(\"distinctId\");\n if (distinctId) return distinctId;\n distinctId = this.uuid();\n this.setCookie(\"distinctId\", distinctId);\n return distinctId;\n };\n\n /**\n * 获取url中的参数\n * @param {[string]} name [参数名]\n */\n public getQueryValue = (): null | JsonProps => {\n const _href = decodeURI(window.location.href);\n const queryArr = _href.match(new RegExp(\"[?&][^?&]+=[^?&]+\", \"g\")) || [];\n const paramsObj: JsonProps = {};\n for (let i = 0; i < queryArr.length; i++) {\n const _item = queryArr[i].replace(/\\?|\\&/, \"\");\n const pair = _item.split(\"=\");\n\n paramsObj[pair[0]] = pair[1];\n }\n return paramsObj;\n };\n\n /**\n *\n * @param {[object]} para [ajax参数]\n * @returns\n */\n public ajax = (para: any) => {\n para.timeout = para.timeout || 30000;\n\n para.credentials = typeof para.credentials === \"undefined\" ? true : para.credentials;\n\n function getJSON(data) {\n if (!data) {\n return \"\";\n }\n try {\n return JSON.parse(data);\n } catch (e) {\n return {};\n }\n }\n\n const g = this.xhr(para.cors);\n if (!g) {\n return false;\n }\n\n if (!para.type) {\n para.type = para.data ? \"POST\" : \"GET\";\n }\n\n const oldsuccess = para.success;\n const olderror = para.error;\n let errorTimer;\n\n const abort = () => {\n try {\n if (this.isObject(g) && g.abort) {\n g.abort();\n }\n } catch (error) {\n this.printLog(error);\n }\n\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n para.error && para.error();\n g.onreadystatechange = null;\n g.onload = null;\n g.onerror = null;\n }\n };\n\n para.success = function (data) {\n oldsuccess(data);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n para.error = function (err) {\n olderror(err);\n if (errorTimer) {\n clearTimeout(errorTimer);\n errorTimer = null;\n }\n };\n errorTimer = setTimeout(function () {\n abort();\n }, para.timeout);\n\n g.onreadystatechange = function () {\n try {\n if (g.readyState == 4) {\n if ((g.status >= 200 && g.status < 300) || g.status == 304) {\n para.success(getJSON(g.responseText));\n } else {\n para.error(getJSON(g.responseText), g.status);\n }\n g.onreadystatechange = null;\n g.onload = null;\n }\n } catch (e) {\n g.onreadystatechange = null;\n g.onload = null;\n }\n };\n\n g.open(para.type, para.url, true);\n\n try {\n if (para.credentials) {\n g.withCredentials = true;\n }\n if (this.isObject(para.header)) {\n this.each(para.header, function (v, i) {\n g.setRequestHeader && g.setRequestHeader(i, v);\n });\n }\n\n if (para.data) {\n if (!para.cors) {\n g.setRequestHeader && g.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n }\n if (para.contentType === \"application/json\") {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/json; charset=UTF-8\");\n } else {\n g.setRequestHeader && g.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n }\n } catch (e) {\n this.printLog(e);\n }\n\n g.send(para.data || null);\n };\n public xhr = (cors) => {\n if (cors) {\n if (typeof window.XMLHttpRequest !== \"undefined\" && \"withCredentials\" in new XMLHttpRequest()) {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n } else if (typeof window.XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n } else {\n return null;\n }\n };\n\n public getUA = () => {\n const Sys: JsonProps = {};\n const ua = navigator.userAgent.toLowerCase();\n let s;\n if ((s = ua.match(/opera.([\\d.]+)/))) {\n Sys.opera = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/msie ([\\d.]+)/))) {\n Sys.ie = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/edge.([\\d.]+)/))) {\n Sys.edge = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/firefox\\/([\\d.]+)/))) {\n Sys.firefox = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/chrome\\/([\\d.]+)/))) {\n Sys.chrome = Number(s[1].split(\".\")[0]);\n } else if ((s = ua.match(/version\\/([\\d.]+).*safari/))) {\n Sys.safari = Number(s[1].match(/^\\d*.\\d*/));\n } else if ((s = ua.match(/trident\\/([\\d.]+)/))) {\n Sys.ie = 11;\n }\n return Sys;\n };\n\n public isSupportBeaconSend = (): Boolean => {\n let supported = false;\n if (typeof navigator !== \"object\" || typeof navigator.sendBeacon !== \"function\") {\n return supported;\n }\n\n let Sys = this.getUA();\n var ua = navigator.userAgent.toLowerCase();\n\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\n var reg = /os [\\d._]*/gi;\n var verinfo = ua.match(reg);\n var version = (verinfo + \"\").replace(/[^0-9|_.]/gi, \"\").replace(/_/gi, \".\");\n var ver = version.split(\".\");\n\n if (typeof Sys.safari === \"undefined\") {\n Sys.safari = ver[0];\n }\n\n if (ver[0] && +ver[0] < 13) {\n if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 12) {\n supported = true;\n }\n } else if (Sys.chrome > 41 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.3) {\n supported = true;\n }\n } else {\n if (Sys.chrome > 38 || Sys.edge > 13 || Sys.firefox > 30 || Sys.opera > 25 || Sys.safari > 11.0) {\n supported = true;\n }\n }\n return supported;\n };\n\n /**\n * beacon请求\n * @param {[string]} url\n * @param {[object]} params\n */\n public sendBeacon = (para: {\n url: string;\n data: any;\n contentType: ContentType;\n }): Promise<{ message?: string; success: boolean }> => {\n if (this.isSupportBeaconSend() === true) {\n const headers = {\n type: para.contentType,\n };\n const blob = new Blob([JSON.stringify(para.data)], headers);\n const supportType = navigator.sendBeacon(para.url, blob);\n\n if (supportType) {\n return Promise.resolve({ success: true });\n } else {\n return Promise.reject({ success: false });\n }\n } else {\n return Promise.reject({ message: \"不支持sendBeacon,发送失败!\", success: false });\n }\n };\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__assign","assign","t","s","i","n","arguments","length","apply","this","_super","_this","PageView","WebClick","PageRetained","CustomTrack","initParams","preset","pathname","window","location","currentUrl","href","pageKey","replace","substr","systemsInfo","getSystemsInfo","platform","setCookie","getTimeStamp","presetParams","each","val","key","initConfig","test","printLog","listener","unlistener","userInfo","isObject","_a","desc","partkey","business","header","params","getParams","event","itemKey","getItemKey","privateParamMap","sendData","isTrackSinglePage","rewriteHistory","addSinglePageEvent","onPageViewCallback","historyType","addEventListener","onClickCallback","singlePageEvent","history","pushState","historyName","removeEventListener","e","target","dataset","partKey","position","pageX","pageY","id","className","targetEle","nodeName","eventDescMap","pointerType","elementSelector","getDomSelector","ORGIN","origin","targetUrl","substring","sendRetained","type","_b","pageWidth","innerWidth","pageHeight","innerHeight","screenWidth","screen","width","screenHeight","height","requestTime","deviceId","getDistinctId","sdkVersion","urlParams","getQueryValue","serverUrl","sendTimeout","contentType","showLog","initHeader","isSupportBeaconSend","Promise","resolve","reject","ajax","url","data","JSON","stringify","credentials","timeout","cors","success","res","error","err","sendBeacon","indexOf","__time","getCookie","retainedStartTime","retainedData","retainedDuration","Math","max","appKey","toString","undefined","filter","reduce","str","autoTrack","TypeError","String","__","constructor","create","__extends","WebTracking","callback","ua","navigator","userAgent","_platform","logMsg","language","wxVersionMatch","match","wxVersion","ipod","ipad","iphone","android","windows","mac","push","join","network","toLowerCase","split","handler","attachEvent","detachEvent","historyWrap","orig","Event","rv","dispatchEvent","replaceState","isArray","obj","forEach","slice","iterator","context","nativeForEach","l","breaker","el","parentNode","tagName","list","children","nodeType","getDomIndex","getAttribute","arr","name","unshift","selector","nameEQ","ca","document","cookie","c","charAt","_decodeURIComponent","value","days","cdomain","expires","domain","getMainHost","date","Date","setTime","getTime","Number","toUTCString","getValid","valid_name","valid_value","valid_domain","encodeURIComponent","r","random","distinctId","uuid","queryArr","decodeURI","RegExp","paramsObj","pair","para","getJSON","parse","g","xhr","errorTimer","oldsuccess","olderror","clearTimeout","setTimeout","abort","onreadystatechange","onload","onerror","readyState","status","responseText","open","withCredentials","v","setRequestHeader","send","XMLHttpRequest","Sys","opera","ie","edge","firefox","chrome","safari","supported","getUA","ver","headers","blob","Blob","message","WebTrackingTools","_i","rest","formatJsonString","console","log","f","result","decodeURIComponent","keyR","expiredTime","domainList","urlItems","pop","mainHost"],"mappings":"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"}
@@ -40,7 +40,7 @@ declare class WebTracking extends Tools {
40
40
  * @param {object} TrackParams [自定义上报参数]
41
41
  * @return {Promise} [回调]
42
42
  */
43
- track: ({ desc, partkey, business }: TrackParams) => Promise<{}>;
43
+ track: ({ desc, partkey, business, header }: TrackParams) => Promise<{}>;
44
44
  /**
45
45
  * @description 监听全埋点事件
46
46
  */
@@ -68,7 +68,9 @@ declare class WebTracking extends Tools {
68
68
  /**
69
69
  * 发送数据通用函数
70
70
  */
71
- sendData: (params: TrackingPostParams) => Promise<{}>;
71
+ sendData: (params: TrackingPostParams, header?: {
72
+ [key: string]: any;
73
+ }) => Promise<{}>;
72
74
  /**
73
75
  * @description 留存时长上报
74
76
  * @param type
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 埋点工具函数
3
3
  */
4
- import { Target, SystemsInfoTypes, JsonProps, PlatformType } from "./type";
4
+ import type { Target, SystemsInfoTypes, JsonProps, PlatformType, ContentType } from "./type";
5
5
  export default class WebTrackingTools {
6
6
  constructor();
7
7
  /**
@@ -102,7 +102,11 @@ export default class WebTrackingTools {
102
102
  * @param {[string]} url
103
103
  * @param {[object]} params
104
104
  */
105
- sendBeacon: (para: any) => Promise<{
105
+ sendBeacon: (para: {
106
+ url: string;
107
+ data: any;
108
+ contentType: ContentType;
109
+ }) => Promise<{
106
110
  message?: string;
107
111
  success: boolean;
108
112
  }>;
@@ -10,6 +10,7 @@ export interface Target extends Window {
10
10
  */
11
11
  attachEvent?: (type: string, fun: (event: Event) => void, bol: boolean) => void;
12
12
  }
13
+ export declare type ContentType = "application/x-www-form-urlencoded" | "application/json";
13
14
  export interface EventParams extends Event {
14
15
  /**
15
16
  * @description 重写添加 arguments
@@ -64,9 +65,9 @@ export interface PresetParams {
64
65
  isTrackSinglePage?: boolean;
65
66
  /**
66
67
  * @description 数据类型
67
- * @default "application/x-www-form-urlencoded"
68
+ * @default "application/json"
68
69
  */
69
- contentType?: "application/x-www-form-urlencoded" | "application/json";
70
+ contentType?: ContentType;
70
71
  /**
71
72
  * @description 全局自定义业务参数
72
73
  * @default {}
@@ -74,6 +75,13 @@ export interface PresetParams {
74
75
  business?: {
75
76
  [key: string]: any;
76
77
  };
78
+ /**
79
+ * @description 请求头
80
+ * @default {}
81
+ */
82
+ header?: {
83
+ [key: string]: any;
84
+ };
77
85
  }
78
86
  export interface InitParams extends PresetParams {
79
87
  /**
@@ -119,6 +127,13 @@ export interface TrackParams {
119
127
  business?: {
120
128
  [key: string]: any;
121
129
  };
130
+ /**
131
+ * @description 请求头
132
+ * @default {}
133
+ */
134
+ header?: {
135
+ [key: string]: any;
136
+ };
122
137
  }
123
138
  export interface TargetEleProps {
124
139
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fle-sdk/event-tracking-web",
3
- "version": "1.2.0-beta.0",
3
+ "version": "1.2.0-beta.1",
4
4
  "description": "event tracking in web",
5
5
  "author": "飞象前端团队",
6
6
  "license": "ISC",