UNPKG

monitors-js

Version:

monitor-js 是一个轻量级前端错误监控上报插件

1 lines 13.2 kB
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(1),o=(r=i)&&r.__esModule?r:{default:r};window.Monitor=o.default,t.default=o.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=s(n(2)),a=s(n(5)),u=s(n(6));function s(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),r=e.exclude,i=void 0===r?[]:r,o=e.match,a=void 0===o?[]:o,u=e.url,s=e.filterTag,c=e.autoPush,l=void 0===c||c,f=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["exclude","match","url","filterTag","autoPush"]);return n.config=f,n.exclude=i,n.match=a,n.url=u,n.autoPush=l,n.plugins=[],n.filterTag=s,n.attrName="action",n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,a.default),i(t,[{key:"initEvent",value:function(){this.windowError(),this.domEvent()}},{key:"setConfig",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.config=r({},this.config,e),this}},{key:"addPlugin",value:function(e){return this.plugins.push(e),this}},{key:"captureException",value:function(e,t){var n=document.createElement("img"),i=o.default.stringify(r({},e,{actions:JSON.stringify(e.actions)}));n.src=this.url+"?_t="+ +new Date+i,n.style.display="none",document.body.appendChild(n),n.parentNode.removeChild(n)}},{key:"getCurrInfo",value:function(){return this.device||(this.device=(new u.default).getDevice()),r({},this.device,{reportTime:this.dateFormat(new Date,"yyyy-MM-dd hh:mm:sss"),url:window.location.href},this.config)}},{key:"dateFormat",value:function(e,t){var n={"M+":e.getMonth()+1,"d+":e.getDate(),"H+":e.getHours(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};for(var r in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length))),n)new RegExp("("+r+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?n[r]:("00"+n[r]).substr((""+n[r]).length)));return t}},{key:"install",value:function(){for(var e=0;e<this.plugins.length;)this.plugins[e].call(this),e++;return this.initEvent(),this.emit("onInstall"),this}},{key:"pushException",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.isDomainfilter()&&!this.isErrorfilter(t.details)){var n=r({},this.getCurrInfo(),{actions:this.getStorageAction()},t);delete n.browserVer,this.emit("captureBefore",n),this.autoPush&&setTimeout(function(){e.captureException(n)},0)}}},{key:"isErrorfilter",value:function(e){return this.exclude.filter(function(t){return-1!==e.indexOf(t)}).length>0}},{key:"isDomainfilter",value:function(){var e=window.location.href;return!(this.match.filter(function(t){return-1!==e.indexOf(t)}).length>=0)}},{key:"windowError",value:function(){var e=this;window.onerror=function(t,n,r,i,o){var a=t+" line:"+r;e.pushException({route:n,details:a,errorDetails:o&&o.stack})}}},{key:"getStorageAction",value:function(){var e=sessionStorage.getItem("_actions");if(!e)return[];try{return JSON.parse(e)||[]}catch(e){return[]}}},{key:"setStorageAction",value:function(e){if("string"!=typeof e){e instanceof Array&&e.length>8&&e.shift();try{sessionStorage.setItem("_actions",JSON.stringify(e))}catch(e){}}else sessionStorage.setItem("_actions",e)}},{key:"domEvent",value:function(){var e=this;window.addEventListener("click",function(t){t=t||window.event;var n=e.getStorageAction(),r=e.getCurrHtml(t);r&&(n.push({type:t.type,target:r,time:e.dateFormat(new Date,"yyyy-MM-dd hh:mm:sss")}),e.setStorageAction(n))})}},{key:"getCurrHtml",value:function(e){var t=e.srcElement?e.srcElement:e.target,n=t.localName,r=t.id,i=t.className,o=t.innerText,a=void 0===o?"":o;if(!(this.filterTag||function(e){return-1===["body","html"].indexOf(e)})(n))return"";var u=t.getAttribute(this.attrName);if(u&&-1!==u.indexOf("{")&&-1!==u.indexOf("}"))try{var s=JSON.parse(u);this.emit("onPointClick",s)}catch(e){this.emit("onPointClick",{value:u})}return a=a.replace(/\s/g,"").substring(0,20),r=r&&'id="'+r+'"'||"",i=i&&'className="'+i+'"'||"","<"+n+" "+(u=u&&'action="'+u+'"'||"")+" "+r+" "+i+">"+(a=a.replace(/\s/g,"").substring(0,20))+"</"+n+">"}},{key:"setAttrName",value:function(e){if("string"!=typeof e)throw new Error("name type string!");this.attrName=e}},{key:"getAttrName",value:function(){return this.attrName}}]),t}();t.default=c},function(e,t,n){"use strict";t.decode=t.parse=n(3),t.encode=t.stringify=n(4)},function(e,t,n){"use strict";function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,o){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var u=/\+/g;e=e.split(t);var s=1e3;o&&"number"==typeof o.maxKeys&&(s=o.maxKeys);var c=e.length;s>0&&c>s&&(c=s);for(var l=0;l<c;++l){var f,h,d,p,v=e[l].replace(u,"%20"),y=v.indexOf(n);y>=0?(f=v.substr(0,y),h=v.substr(y+1)):(f=v,h=""),d=decodeURIComponent(f),p=decodeURIComponent(h),r(a,d)?i(a[d])?a[d].push(p):a[d]=[a[d],p]:a[d]=p}return a};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,u){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?o(a(e),function(a){var u=encodeURIComponent(r(a))+n;return i(e[a])?o(e[a],function(e){return u+encodeURIComponent(r(e))}).join(t):u+encodeURIComponent(r(e[a]))}).join(t):u?encodeURIComponent(r(u))+n+encodeURIComponent(r(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var a=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.listens={}}return r(e,[{key:"on",value:function(e,t){var n=this.listens[e];return this.listens[e]=n||[],this.listens[e].push(t),this}},{key:"emit",value:function(e,t){var n=this,r=this.listens[e];return r&&r.length>0&&r.map(function(e){e.call(n,t)}),this}},{key:"remove",value:function(e,t){var n=this.listens[e];if(t){var r=n.filter(function(e){return e!==t});return r.length!==n.length&&(this.listens[e]=r),this}return this.listens[e]=void 0,this}},{key:"removeAll",value:function(){return this.listens={},this}}]),e}();t.default=i},function(e,t,n){var r;"undefined"!=typeof self&&self,r=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=(r=n(1))&&r.__esModule?r:{default:r};window.Device=i.default,t.default=i.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=(r=n(2))&&r.__esModule?r:{default:r},a=function(){function e(t){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),t)return this.ua=t.toLowerCase();if(window)return this.ua=window.navigator.userAgent.toLowerCase();throw new Error("userAgent is not defined!")}return i(e,[{key:"getDevice",value:function(){var e={browserVer:"",browserName:"",phoneSystemType:"",phoneSystemVer:"",phoneName:""};if(e.browserName=this.getBrowser(),this.isMobile()){var t=this.getPhoneSystemType();return"IOS"==t&&(e.phoneSystemVer=this.getIOSV(),e.phoneName=(new o.default).getPhoneType()),"Android"==t&&(e.phoneSystemVer=this.getAndroidV(),e.phoneName="Android"),e.phoneSystemType=t,e}return e}},{key:"getAndroidV",value:function(){var e=this.ua,t="";return e.indexOf("android")>0&&(t=(e.match(/android [\d._]+/gi)+"").replace(/[^0-9|_.]/gi,"").replace(/_/gi,".")),t}},{key:"getIOSV",value:function(){var e=this.ua,t="";return e.indexOf("like mac os x")>0&&(t=(e.match(/os [\d._]+/gi)+"").replace(/[^0-9|_.]/gi,"").replace(/_/gi,".")),t}},{key:"getPhoneSystemType",value:function(){var e=this.ua,t=e.indexOf("android")>-1||e.indexOf("adr")>-1,n=!!e.match(/\(i[^;]+;( u;)? cpu.+mac os x/),r=e.indexOf("Windows Phone".toLowerCase())>-1;return t?"Android":n?"IOS":r?"Windows Phone":""}},{key:"isPC",value:function(){return!this.ua.match(/(iPhone|iPod|android|ios|iPad|windows phone|tablet)/i)}},{key:"isMobile",value:function(){return!this.isPC()}},{key:"getBrowser",value:function(){var e=this.ua,t=function(t){return e.indexOf(t.toLowerCase())>-1};return t("Opera")?"Opera":t("compatible")&&t("MSIE")?"IE":t("NET4.0C")&&t("rv")&&t("Windows")?"IE":"ActiveXObject"in window?"IE11":t("Edge")&&t("NT")?"Edge":t("Firefox")?"Firefox":t("micromessenger")?"WeiXin":t("UCBrowser")?"UCBrowser":t("QQBrowser")?"QQBrowser":t("Safari")&&!t("Chrome")?"Safari":t("Safari")&&t("Chrome")?"Chrome":""}}]),e}();t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.devices={"Apple A7 GPU":{1136:["iPhone 5","iPhone 5s"],2048:["iPad Air","iPad Mini 2","iPad Mini 3"]},"Apple A8 GPU":{1136:["iPod touch (6th generation)"],1334:["iPhone 6"],2001:["iPhone 6 Plus"],2048:["iPad Air 2","iPad Mini 4"]},"Apple A9 GPU":{1136:["iPhone SE"],1334:["iPhone 6s"],2001:["iPhone 6s Plus"],2224:["iPad Pro (9.7-inch)"],2732:["iPad Pro (12.9-inch)"]},"Apple A10 GPU":{1334:["iPhone 7"],2001:["iPhone 7 Plus"]},"Apple A11 GPU":{1334:["iPhone 8"],2208:["iPhone 8 Plus"],2436:["iPhone X"]}}}return r(e,[{key:"getGlRenderer",value:function(){try{var e=document.createElement("canvas").getContext("experimental-webgl"),t=e.getExtension("WEBGL_debug_renderer_info");return e.getParameter(t.UNMASKED_RENDERER_WEBGL)}catch(e){return""}}},{key:"getHeight",value:function(){return Math.max(screen.width,screen.height)*(window.devicePixelRatio||1)}},{key:"getPhoneType",value:function(e){var t=this.getHeight();e=e||this.getGlRenderer();var n=this.devices[e];return n&&n[t][0]?n[t][0]:""}}]),e}();t.default=i}])},e.exports=r()}])});