🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

web-glede

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

web-glede - npm Package Compare versions

Comparing version
1.1.7
to
1.1.8
+1
-1
lib/web-glede.js

@@ -1,1 +0,1 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Tracker=e()}(this,(function(){"use strict";function t(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function e(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?t(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function r(){r=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=e&&e.prototype instanceof p?e:p,i=Object.create(o.prototype),a=new _(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return x()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=E(a,r);if(c){if(c===l)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=s(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}(t,r,a),i}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var l={};function p(){}function h(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(j([])));g&&g!==e&&n.call(g,i)&&(y=g);var m=d.prototype=p.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){function r(o,i,a,c){var u=s(t[o],t,i);if("throw"!==u.type){var f=u.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var o;this._invoke=function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}}function E(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=s(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,l;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function j(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:x}}function x(){return{value:void 0,done:!0}}return h.prototype=d,u(m,"constructor",d),u(d,"constructor",h),h.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===h||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},w(b.prototype),u(b.prototype,a,(function(){return this})),t.AsyncIterator=b,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new b(f(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(m),u(m,c,"Generator"),u(m,i,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=j,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),l},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:j(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}function n(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}var c=Object.prototype.toString;function u(t){return c.call(t).toLowerCase()}function f(t){return"[object object]"===u(t)}function s(t){return"[object string]"===u(t)}f.require="object",s.require="string";var l={origin:"",pt:["home","circle","message","person"],logType:{pv:"pv",nt:"nt",busi:"feBusi",err:"feErr",perf:"fePerf"},error:!0,errorHoldTime:7200,perf:!0,request:!0,reqRegExp:["/api"]};var p,h="1.1.7";function d(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];Object.keys(t).forEach((function(n){l.suppleInfo[n]?l.suppleInfo[n]=r?t[n]:e(e({},l.suppleInfo[n]),t[n]):l.baseInfo[n]=t[n]}))}function y(){return p}l.baseInfo={sdk:h},l.suppleInfo={business:{},error:{},perf:{},request:{}},["click","touchstart"].forEach((function(t){document.addEventListener(t,(function(t){p=t}),{capture:!0,passive:!0})}));var v=/(?:@|(?:at\s+.*?))\s*\(?(https?:\/\/.+):(\d+):(\d+)\)?/;function g(t,e){return t.reverse().filter((function(t){return t!==document&&t!==window})).map((function(t){return t.id?"".concat(t.nodeName.toLowerCase(),"#").concat(t.id):t.className&&"string"==typeof t.className?"".concat(t.nodeName.toLowerCase(),".").concat(t.className.split(" ").filter((function(t){return!!t})).join(".")):t.nodeName.toLowerCase()})).join(e)}function m(t){if(!t){var e=y();t=e?e.target:null}return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" > ",r=[];t&&t!==document.documentElement;)r.push(t),t=t.parentNode;return g(r,e)}(t)}function w(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v,r={entry:"",line:0,column:0};if(t&&"string"==typeof t){var n=t.match(e);n&&(r.entry=n[1].split("/").slice(-1)[0].trim(),r.line=+n[2],r.column=+n[3])}return r}var b=["debug","vite","end of input","ping"],E=[".html",".js"];function L(t,e){if(!t)return!0;if(t.d&&t.d.msg){var r,n=a(b);try{for(n.s();!(r=n.n()).done;){var o=r.value;if(t.d.msg.includes(o))return!0}}catch(t){n.e(t)}finally{n.f()}}if("error"===e){if(function(t){var e=t.entry;return!(0==+t.act||e&&"string"==typeof e&&E.some((function(t){return e.endsWith(t)})))}(t))return!0;var i=JSON.parse(localStorage.getItem("__WEB_GLEDE__"))||{t:Math.trunc(Date.now()/1e3)},c=function(t){t=t.toString();for(var e=0,r=0;r<t.length;r++)e=(e<<5)-e+t.charCodeAt(r)&4294967295;return Math.abs(e)}(JSON.stringify(t));if(Date.now()/1e3-i.t>l.errorHoldTime)i={t:Math.trunc(Date.now()/1e3)};else if(i[c])return!0;i[c]=1,localStorage.setItem("__WEB_GLEDE__",JSON.stringify(i))}return!1}function O(t,r){return e(e({__proto__:null},t),function(t){var r=location.pathname,n=r.match(/\/[\w-@%\.]+/g),i="pb",a=r;return!n&&["/","//"].includes(r)?(i="pt",a="/"):n&&1===n.length&&!r.includes("//")&&l.pt.some((function(t){return t===n[0].slice(1)}))&&(i="pt",a=n[0]),e(e(e({},l.baseInfo),l.suppleInfo[t]),{},o({t:Math.trunc(Date.now()/1e3),dwh:"".concat(screen.width,"_").concat(screen.height)},i,a))}(r))}function _(t,e){if(!L(e,t)){var r=new URLSearchParams,n=O(e,t);for(var o in n)void 0!==n[o]&&r.append(o,f(n[o])?JSON.stringify(n[o]):n[o]);(new Image).src="".concat(l.origin,"?").concat(r)}}function j(){var t,e=performance.getEntriesByType("navigation").length>0?performance.getEntriesByType("navigation")[0]:performance.timing;t=function(){setTimeout((function(){var t=e.domInteractive,r=e.domLoading,n=e.domainLookupEnd,o=e.fetchStart,i=e.connectStart,a=e.connectEnd,c=e.requestStart,u=e.responseStart,f=e.responseEnd,s=e.domContentLoadedEventStart,p=e.loadEventEnd,h={typ:l.logType.perf};h.tti=(t||r)-o|0,h.dns=n-o|0,h.tcp=a-i|0,h.ttfb=u-c|0,h.dt=f-u|0,h.dpt=s-o|0,h.drt=p-o|0,_("perf",h)}))},"complete"===document.readyState?t():window.addEventListener("load",t)}function x(){var t=window.XMLHttpRequest,e=window.fetch,o=t.prototype.open,i=t.prototype.send;function c(t,e){var r,n=a(e);try{for(n.s();!(r=n.n()).done;){var o=r.value;if("*"===o)return!0;var i=o;if(s(o)&&(i=new RegExp(o.startsWith("/")?o:"/".concat(o))),t.match(i))return!0}}catch(t){n.e(t)}finally{n.f()}return!1}t.prototype.open=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this.matched=c(e[1],l.reqRegExp),o.apply(this,e)},t.prototype.send=function(){if(this.matched){var t=Date.now(),e=function(e){_("request",{typ:l.logType.nt,act:+("load"===e.type),d:{dur:Date.now()-t}})};this.addEventListener("load",e,!1),this.addEventListener("error",e,!1)}for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return i.apply(this,n)},Object.defineProperty(window,"fetch",{value:function(t,o){var i="";return s(t)?i=t:f(t)&&s(t.url)&&(i=t.url),c(i,l.reqRegExp)?new Promise(function(){var i,a=(i=r().mark((function n(i,a){var c,u,f;return r().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return c=Date.now(),u=1,r.prev=2,r.next=5,e(t,o);case 5:f=r.sent,i(f),f.ok||304===f.status||(u=0),r.next=14;break;case 10:r.prev=10,r.t0=r.catch(2),a(r.t0),u=0;case 14:_("request",{typ:l.logType.nt,act:u,d:{dur:Date.now()-c}});case 15:case"end":return r.stop()}}),n,null,[[2,10]])})),function(){var t=this,e=arguments;return new Promise((function(r,o){var a=i.apply(t,e);function c(t){n(a,r,o,c,u,"next",t)}function u(t){n(a,r,o,c,u,"throw",t)}c(void 0)}))});return function(t,e){return a.apply(this,arguments)}}()):e(t,o)}})}return Object.freeze({__proto__:null,version:h,init:function(t){if(!f(t)||!t.origin)throw new Error("[web-trace]: init::arguments type error");!function(t){Object.keys(t).forEach((function(r){l.hasOwnProperty(r)&&(f(t[r])&&f(l[r])?l[r]=e(e({},l[r]),t[r]):l[r]=t[r])}))}(t),f(t.baseInfo)&&d(t.baseInfo),l.perf&&j(),l.error&&function(){function t(t,e){return t&&"string"==typeof t?t.split(e).slice(-1)[0].trim():""}window.addEventListener("error",(function(e){var r={};if(e.target&&(e.target.src||e.target.href))r={typ:l.logType.err,act:0,d:{msg:e.target.src||e.target.href,path:m(e.target)}};else{var n=e.error||{},o=w(n.stack);r={typ:l.logType.err,act:1,d:{msg:n&&n.message?n.message:t(e.message,":"),path:m()},entry:o.entry||t(e.filename,"/"),pos:"".concat(o.line||e.lineno,"_").concat(o.column||e.colno)}}_("error",r)}),!0),window.addEventListener("unhandledrejection",(function(t){var e=t.reason||{},r=w(e.stack);_("error",{typ:l.logType.err,act:2,d:{msg:e.message||"",path:m()},entry:r.entry,pos:"".concat(r.line,"_").concat(r.column)})}))}(),l.request&&x();var r=localStorage.getItem("__WEB_GLEDE__");(!r||Date.now()/1e3-JSON.parse(r).t>l.errorHoldTime)&&localStorage.setItem("__WEB_GLEDE__",JSON.stringify({t:Math.trunc(Date.now()/1e3)}))},sendLog:_,setBaseInfo:d,getConfig:function(){return JSON.parse(JSON.stringify(l))},getXpath:m,getErrorDetail:w})}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Tracker=e()}(this,(function(){"use strict";function t(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function e(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?t(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function r(){r=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=e&&e.prototype instanceof p?e:p,i=Object.create(o.prototype),a=new _(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return x()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=E(a,r);if(c){if(c===l)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=s(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}(t,r,a),i}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var l={};function p(){}function h(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(j([])));g&&g!==e&&n.call(g,i)&&(y=g);var m=d.prototype=p.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){function r(o,i,a,c){var u=s(t[o],t,i);if("throw"!==u.type){var f=u.arg,l=f.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var o;this._invoke=function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}}function E(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=s(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,l;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function j(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:x}}function x(){return{value:void 0,done:!0}}return h.prototype=d,u(m,"constructor",d),u(d,"constructor",h),h.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===h||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},w(b.prototype),u(b.prototype,a,(function(){return this})),t.AsyncIterator=b,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new b(f(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(m),u(m,c,"Generator"),u(m,i,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=j,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),l},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:j(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}function n(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function a(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw a}}}}var c=Object.prototype.toString;function u(t){return c.call(t).toLowerCase()}function f(t){return"[object object]"===u(t)}function s(t){return"[object string]"===u(t)}f.require="object",s.require="string";var l={origin:"",pt:["home","circle","message","person"],logType:{pv:"pv",nt:"nt",busi:"feBusi",err:"feErr",perf:"fePerf"},error:!0,errorHoldTime:7200,perf:!0,request:!0,reqRegExp:["/api/"]};var p,h="1.1.7";function d(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];Object.keys(t).forEach((function(n){l.suppleInfo[n]?l.suppleInfo[n]=r?t[n]:e(e({},l.suppleInfo[n]),t[n]):l.baseInfo[n]=t[n]}))}function y(){return p}l.baseInfo={sdk:h},l.suppleInfo={business:{},error:{},perf:{},request:{}},["click","touchstart"].forEach((function(t){document.addEventListener(t,(function(t){p=t}),{capture:!0,passive:!0})}));var v=/(?:@|(?:at\s+.*?))\s*\(?(https?:\/\/.+):(\d+):(\d+)\)?/;function g(t,e){return t.reverse().filter((function(t){return t!==document&&t!==window})).map((function(t){return t.id?"".concat(t.nodeName.toLowerCase(),"#").concat(t.id):t.className&&"string"==typeof t.className?"".concat(t.nodeName.toLowerCase(),".").concat(t.className.split(" ").filter((function(t){return!!t})).join(".")):t.nodeName.toLowerCase()})).join(e)}function m(t){if(!t){var e=y();t=e?e.target:null}return function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" > ",r=[];t&&t!==document.documentElement;)r.push(t),t=t.parentNode;return g(r,e)}(t)}function w(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v,r={entry:"",line:0,column:0};if(t&&"string"==typeof t){var n=t.match(e);n&&(r.entry=n[1].split("/").slice(-1)[0].trim(),r.line=+n[2],r.column=+n[3])}return r}var b=["debug","vite","end of input","ping"],E=[".html",".js"];function L(t,e){if(!t)return!0;if(t.d&&t.d.msg){var r,n=a(b);try{for(n.s();!(r=n.n()).done;){var o=r.value;if(t.d.msg.includes(o))return!0}}catch(t){n.e(t)}finally{n.f()}}if("error"===e){if(function(t){var e=t.entry;return!(0==+t.act||e&&"string"==typeof e&&E.some((function(t){return e.endsWith(t)})))}(t))return!0;var i=JSON.parse(localStorage.getItem("__WEB_GLEDE__"))||{t:Math.trunc(Date.now()/1e3)},c=function(t){t=t.toString();for(var e=0,r=0;r<t.length;r++)e=(e<<5)-e+t.charCodeAt(r)&4294967295;return Math.abs(e)}(JSON.stringify(t));if(Date.now()/1e3-i.t>l.errorHoldTime)i={t:Math.trunc(Date.now()/1e3)};else if(i[c])return!0;i[c]=1,localStorage.setItem("__WEB_GLEDE__",JSON.stringify(i))}return!1}function O(t,r){return e(e({__proto__:null},t),function(t){var r=location.pathname,n=r.match(/\/[\w-@%\.]+/g),i="pb",a=r;return!n&&["/","//"].includes(r)?(i="pt",a="/"):n&&1===n.length&&!r.includes("//")&&l.pt.some((function(t){return t===n[0].slice(1)}))&&(i="pt",a=n[0]),e(e(e({},l.baseInfo),l.suppleInfo[t]),{},o({t:Math.trunc(Date.now()/1e3),dwh:"".concat(screen.width,"_").concat(screen.height)},i,a))}(r))}function _(t,e){if(!L(e,t)){var r=new URLSearchParams,n=O(e,t);for(var o in n)void 0!==n[o]&&r.append(o,f(n[o])?JSON.stringify(n[o]):n[o]);(new Image).src="".concat(l.origin,"?").concat(r)}}function j(){var t,e=performance.getEntriesByType("navigation").length>0?performance.getEntriesByType("navigation")[0]:performance.timing;t=function(){setTimeout((function(){var t=e.domInteractive,r=e.domLoading,n=e.domainLookupEnd,o=e.fetchStart,i=e.connectStart,a=e.connectEnd,c=e.requestStart,u=e.responseStart,f=e.responseEnd,s=e.domContentLoadedEventStart,p=e.loadEventEnd,h={typ:l.logType.perf};h.tti=(t||r)-o|0,h.dns=n-o|0,h.tcp=a-i|0,h.ttfb=u-c|0,h.dt=f-u|0,h.dpt=s-o|0,h.drt=p-o|0,_("perf",h)}))},"complete"===document.readyState?t():window.addEventListener("load",t)}function x(){var t=window.XMLHttpRequest,e=window.fetch,o=t.prototype.open,i=t.prototype.send;function c(t,e){var r,n=a(e);try{for(n.s();!(r=n.n()).done;){var o=r.value;if("*"===o)return new URL(t).pathname;var i=o;if(s(o)&&(i=new RegExp(o.startsWith("/")?o:"/".concat(o))),t.match(i))return new URL(t).pathname}}catch(t){n.e(t)}finally{n.f()}return!1}t.prototype.open=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return this.matched=c(e[1],l.reqRegExp),o.apply(this,e)},t.prototype.send=function(){var t=this;if(this.matched){var e=Date.now(),r=function(r){_("request",{typ:l.logType.nt,act:+("load"===r.type),d:{dur:Date.now()-e,api:t.matched}})};this.addEventListener("load",r,!1),this.addEventListener("error",r,!1)}for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];return i.apply(this,o)},Object.defineProperty(window,"fetch",{value:function(t,o){var i="";s(t)?i=t:f(t)&&s(t.url)&&(i=t.url);var a=c(i,l.reqRegExp);return a?new Promise(function(){var i,c=(i=r().mark((function n(i,c){var u,f,s;return r().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return u=Date.now(),f=1,r.prev=2,r.next=5,e(t,o);case 5:s=r.sent,i(s),s.ok||304===s.status||(f=0),r.next=14;break;case 10:r.prev=10,r.t0=r.catch(2),c(r.t0),f=0;case 14:_("request",{typ:l.logType.nt,act:f,d:{dur:Date.now()-u,api:a}});case 15:case"end":return r.stop()}}),n,null,[[2,10]])})),function(){var t=this,e=arguments;return new Promise((function(r,o){var a=i.apply(t,e);function c(t){n(a,r,o,c,u,"next",t)}function u(t){n(a,r,o,c,u,"throw",t)}c(void 0)}))});return function(t,e){return c.apply(this,arguments)}}()):e(t,o)}})}return Object.freeze({__proto__:null,version:h,init:function(t){if(!f(t)||!t.origin)throw new Error("[web-trace]: init::arguments type error");!function(t){Object.keys(t).forEach((function(r){l.hasOwnProperty(r)&&(f(t[r])&&f(l[r])?l[r]=e(e({},l[r]),t[r]):l[r]=t[r])}))}(t),f(t.baseInfo)&&d(t.baseInfo),l.perf&&j(),l.error&&function(){function t(t,e){return t&&"string"==typeof t?t.split(e).slice(-1)[0].trim():""}window.addEventListener("error",(function(e){var r={};if(e.target&&(e.target.src||e.target.href))r={typ:l.logType.err,act:0,d:{msg:e.target.src||e.target.href,path:m(e.target)}};else{var n=e.error||{},o=w(n.stack);r={typ:l.logType.err,act:1,d:{msg:n&&n.message?n.message:t(e.message,":"),path:m()},entry:o.entry||t(e.filename,"/"),pos:"".concat(o.line||e.lineno,"_").concat(o.column||e.colno)}}_("error",r)}),!0),window.addEventListener("unhandledrejection",(function(t){var e=t.reason||{},r=w(e.stack);_("error",{typ:l.logType.err,act:2,d:{msg:e.message||"",path:m()},entry:r.entry,pos:"".concat(r.line,"_").concat(r.column)})}))}(),l.request&&x();var r=localStorage.getItem("__WEB_GLEDE__");(!r||Date.now()/1e3-JSON.parse(r).t>l.errorHoldTime)&&localStorage.setItem("__WEB_GLEDE__",JSON.stringify({t:Math.trunc(Date.now()/1e3)}))},sendLog:_,setBaseInfo:d,getConfig:function(){return JSON.parse(JSON.stringify(l))},getXpath:m,getErrorDetail:w})}));

@@ -1,1 +0,1 @@

{"version":3,"file":"web-glede.js","sources":["../src/utils/util.js","../src/config.js","../src/utils/webUtil/getLastEvent.js","../src/web/baseInfo.js","../src/utils/webUtil/getSelector.js","../src/utils/hashcode.js","../src/utils/send.js","../src/web/core/perf.js","../src/utils/webUtil/onload.js","../src/web/core/request.js","../src/web/index.js","../src/web/init.js","../src/web/core/error.js"],"sourcesContent":["const { toString } = Object.prototype;\n\nexport function getLowerString(data) {\n return toString.call(data).toLowerCase()\n}\n\n// 判断对象类型\nexport function isObj (data) {\n return getLowerString(data) === '[object object]';\n}\nisObj.require = 'object';\n\n// 判断对象类型\nexport function isArr (data) {\n return getLowerString(data) === '[object array]'\n}\nisArr.require = 'array';\n\n// 判断数字类型\nexport function isNum (data) {\n return getLowerString(data) === '[object number]'\n}\nisNum.require = 'number';\n\n// 判断字符串类型\nexport function isStr (data) {\n return getLowerString(data) === '[object string]'\n}\nisStr.require = 'string';\n\n// 判断Null类型\nexport function isNull (data) {\n return getLowerString(data) === '[object null]'\n}\n\n// 判断undefined类型\nexport function isUndefined (data) {\n return getLowerString(data) === '[object undefined]'\n}\n","import { isObj } from './utils/util';\n\nconst config = {\n\n // 请求发送的目的地\n origin: '',\n\n // 路由配置,决定了pt / pb字段\n pt: ['home', 'circle', 'message', 'person'],\n\n // 日志类型\n logType: {\n pv: 'pv',\n nt: 'nt',\n busi: 'feBusi',\n err: 'feErr',\n perf: 'fePerf'\n },\n\n // 错误监控 默认采集\n error: true,\n\n // 相同错误阻止时长, 默认2小时, 单位s\n errorHoldTime: 2 * 3600,\n\n // 性能监控 默认采集\n perf: true,\n\n // 请求监控 默认采集\n request: true,\n\n // 请求监控需要匹配的URI正则列表, 支持通配符 '*'\n reqRegExp: [\n '/api'\n ]\n};\n\nexport function setConfig(props) {\n Object.keys(props).forEach(key => {\n if (config.hasOwnProperty(key)) {\n if (isObj(props[key]) && isObj(config[key])) {\n config[key] = {\n ...config[key],\n ...props[key]\n }\n }\n else {\n config[key] = props[key];\n }\n };\n });\n}\n\nexport function getConfig() {\n return JSON.parse(JSON.stringify(config));\n}\n\nexport default config;\n","let lastEvent;\n\n['click', 'touchstart'].forEach(eventType => {\n document.addEventListener(eventType, (event) => {\n lastEvent = event;\n }, {\n capture: true, // 捕获阶段执行\n passive: true, // 不阻止事件\n });\n});\n\n/**\n * 获取最后一次交互的事件对象\n * @returns {Event | null}\n */\nexport function getLastEvent() {\n return lastEvent;\n}\n","/**\n * 公共上报参数信息\n */\nimport config from '../config';\nimport { version } from '../../package.json';\n\nconfig.baseInfo = {\n sdk: version\n};\n\nconfig.suppleInfo = {\n business: {},\n error: {},\n perf: {},\n request: {}\n};\n\nexport function setBaseInfo(params, overide = false) {\n Object.keys(params).forEach(key => {\n if (config.suppleInfo[key]) {\n if (overide) {\n config.suppleInfo[key] = params[key];\n }\n else {\n config.suppleInfo[key] = {\n ...config.suppleInfo[key],\n ...params[key]\n };\n }\n }\n else {\n config.baseInfo[key] = params[key];\n }\n });\n}\n\nexport function getBaseInfo(type) {\n const pathname = location.pathname;\n const pathList = pathname.match(/\\/[\\w-@%\\.]+/g);\n let pathKey = 'pb';\n let pathVal = pathname;\n\n // 处理pb / pt\n if (!pathList && ['/', '//'].includes(pathname)) {\n pathKey = 'pt';\n pathVal = '/';\n }\n else if (pathList && pathList.length === 1 && !pathname.includes('//')) {\n if (config.pt.some(name => name === pathList[0].slice(1))) {\n pathKey = 'pt';\n pathVal = pathList[0];\n }\n }\n\n return {\n ...config.baseInfo,\n ...config.suppleInfo[type],\n t: Math.trunc(Date.now() / 1000),\n dwh: `${screen.width}_${screen.height}`,\n [pathKey]: pathVal\n };\n}\n","import { getLastEvent } from './getLastEvent';\n\n// 匹配错误堆栈正则\nconst ERROR_REG = /(?:@|(?:at\\s+.*?))\\s*\\(?(https?:\\/\\/.+):(\\d+):(\\d+)\\)?/;\n\nfunction getSelectors(path, separator) {\n return path.reverse().filter(el => {\n return el !== document && el !== window;\n }).map(el => {\n if (el.id) {\n return `${el.nodeName.toLowerCase()}#${el.id}`;\n }\n else if (el.className && typeof el.className === 'string') {\n return `${el.nodeName.toLowerCase()}.${el.className.split(' ').filter(item => !!item).join('.')}`;\n }\n else {\n return el.nodeName.toLowerCase();\n }\n }).join(separator);\n}\n\nfunction getSelector(path, separator = ' > ') {\n let pathArr = [];\n\n while (path && path !== document.documentElement) {\n pathArr.push(path);\n path = path.parentNode;\n }\n\n return getSelectors(pathArr, separator);\n}\n\n/**\n * 获取最近交互的xpath路径\n * @param {EventTarget} target \n * @returns {string}\n */\nexport function getXpath(target) {\n if (!target) {\n const lastEvent = getLastEvent();\n target = lastEvent ? lastEvent.target : null;\n }\n\n return getSelector(target);\n}\n\n/**\n * 解析错误堆栈, 得到目标文件名、错误行、错误列\n * @param {string} stack 错误堆栈字符串\n * @param {RegExp} reg 匹配错误的正则表达式\n * @returns {{entry: string; line: number; column: number;}}\n */\nexport function getErrorDetail(stack, reg = ERROR_REG) {\n const result = {\n entry: '',\n line: 0,\n column: 0\n };\n\n if (stack && typeof stack === 'string') {\n const matchResult = stack.match(reg);\n \n if (matchResult) {\n result.entry = matchResult[1].split('/').slice(-1)[0].trim();\n result.line = +matchResult[2];\n result.column = +matchResult[3];\n }\n }\n\n return result;\n}\n","export const hashcode = str => {\n str = str.toString();\n\n let hash = 0;\n\n for (let i = 0; i < str.length; i++) {\n hash = (((hash << 5) - hash) + str.charCodeAt(i)) & 0xFFFFFFFF;\n }\n\n return Math.abs(hash);\n}\n","/**\n * @author liuzichao\n * @description 上报方法\n */\nimport config from '@config';\nimport { isObj } from './util';\nimport { hashcode } from './hashcode';\nimport { getBaseInfo } from '../web/baseInfo';\n\n/**\n * 判定是否为无效日志\n * @param {any} params 日志内容\n * @param {string} type 日志类型\n */\nconst ivdArr = ['debug', 'vite', 'end of input', 'ping'];\nconst vdExt = ['.html', '.js'];\n\nfunction isInvalidEntry(params) {\n const { entry, act } = params;\n\n if (+act === 0) {\n return false;\n }\n if (!entry || typeof entry !== 'string') {\n return true;\n }\n\n return !vdExt.some(extname => entry.endsWith(extname));\n}\n\nfunction isInvalidLog(params, type) {\n if (!params) {\n return true;\n }\n\n if (params.d && params.d.msg) {\n for (const keyword of ivdArr) {\n if (params.d.msg.includes(keyword)) {\n return true;\n }\n }\n }\n\n if (type === 'error') {\n if (isInvalidEntry(params)) {\n return true;\n }\n\n let interceptor = JSON.parse(localStorage.getItem('__WEB_GLEDE__')) || { t: Math.trunc(Date.now() / 1000) };\n const hash = hashcode(JSON.stringify(params));\n\n if ((Date.now() / 1000 - interceptor.t) > config.errorHoldTime) {\n interceptor = { t: Math.trunc(Date.now() / 1000) };\n }\n else if (interceptor[hash]) {\n return true;\n }\n\n interceptor[hash] = 1;\n localStorage.setItem('__WEB_GLEDE__', JSON.stringify(interceptor));\n }\n\n return false;\n}\n\nfunction mixinParams(params, type) {\n return {\n __proto__: null,\n ...params,\n ...getBaseInfo(type),\n };\n}\n\nexport function send(logType, params) {\n if (isInvalidLog(params, logType)) {\n return;\n }\n\n const schema = new URLSearchParams();\n const logData = mixinParams(params, logType);\n\n for (const key in logData) {\n if (logData[key] !== undefined) {\n schema.append(key, isObj(logData[key]) ? JSON.stringify(logData[key]) : logData[key]);\n }\n }\n\n new Image().src = `${config.origin}?${schema}`;\n}\n","import { onload, send } from \"@utils\";\nimport config from \"@config\";\n\nexport function Performance() {\n const timing = performance.getEntriesByType('navigation').length > 0\n ? performance.getEntriesByType('navigation')[0] : performance.timing;\n\n onload(() => {\n setTimeout(() => {\n const {\n domInteractive,\n domLoading,\n domainLookupEnd,\n fetchStart,\n connectStart,\n connectEnd,\n requestStart,\n responseStart,\n responseEnd,\n domContentLoadedEventStart,\n loadEventEnd\n } = timing;\n\n const times = { typ: config.logType.perf };\n\n // 核心指标\n times.tti = (domInteractive || domLoading) - fetchStart | 0;\n\n // 网络指标\n times.dns = domainLookupEnd - fetchStart | 0;\n times.tcp = connectEnd - connectStart | 0;\n times.ttfb = responseStart - requestStart | 0;\n times.dt = responseEnd - responseStart | 0;\n\n // 解析指标\n times.dpt = domContentLoadedEventStart - fetchStart | 0;\n times.drt = loadEventEnd - fetchStart | 0;\n\n send('perf', times)\n });\n });\n}","export function onload(callback) {\n if (document.readyState === 'complete') {\n callback();\n } else {\n window.addEventListener('load', callback);\n }\n}","import { send, isStr, isObj } from \"@utils\";\nimport config from \"@config\";\n\nexport function ReqError() {\n const XMLHttpRequest = window.XMLHttpRequest;\n const oldFetch = window.fetch;\n const oldOpen = XMLHttpRequest.prototype.open;\n const oldSend = XMLHttpRequest.prototype.send;\n\n XMLHttpRequest.prototype.open = function(...args) {\n this.matched = matchReq(args[1], config.reqRegExp);\n\n return oldOpen.apply(this, args)\n }\n\n XMLHttpRequest.prototype.send = function(...args) {\n if (this.matched) {\n const startTime = Date.now();\n const handler = event => {\n send('request', {\n typ: config.logType.nt,\n act: +(event.type === 'load'),\n d: {\n dur: Date.now() - startTime\n }\n })\n };\n\n this.addEventListener('load', handler, false);\n this.addEventListener('error', handler, false);\n }\n\n return oldSend.apply(this, args);\n }\n\n Object.defineProperty(window, 'fetch', {\n value: function(input, opts) {\n let url = '';\n\n if (isStr(input)) {\n url = input;\n }\n else if (isObj(input) && isStr(input.url)) {\n url = input.url;\n }\n\n if (!matchReq(url, config.reqRegExp)) {\n return oldFetch(input, opts);\n }\n \n return new Promise(async (resolve, reject) => {\n const startTime = Date.now();\n let noError = 1;\n\n try {\n const response = await oldFetch(input, opts);\n resolve(response);\n\n if (!response.ok && response.status !== 304) {\n noError = 0;\n }\n }\n catch (err) {\n reject(err);\n noError = 0;\n }\n\n send('request', {\n typ: config.logType.nt,\n act: noError,\n d: {\n dur: Date.now() - startTime\n }\n });\n });\n }\n });\n\n\n /**\n * 判定本次请求是否需要上报\n * @param {string} url\n * @param {Array<RegExp>} rules\n */\n function matchReq(url, rules) {\n for (const reg of rules) {\n if (reg === '*') {\n return true;\n }\n\n let curReg = reg;\n\n if (isStr(reg)) {\n curReg = new RegExp(reg.startsWith('/') ? reg : `/${reg}`);\n }\n if (url.match(curReg)) {\n return true;\n }\n }\n\n return false;\n }\n}","import { setBaseInfo } from './baseInfo';\nimport { getConfig } from '../config';\nimport init from './init';\nimport { send, getXpath, getErrorDetail } from '../utils';\nimport { version } from '../../package.json';\n\n\nexport default Object.freeze({\n __proto__: null,\n version,\n init,\n sendLog: send,\n setBaseInfo,\n getConfig,\n getXpath,\n getErrorDetail\n});\n","import config, { setConfig } from \"../config\";\nimport { isObj } from \"@utils\";\nimport { RTError, ReqError, Performance } from \"./core\";\nimport { setBaseInfo } from \"./baseInfo\";\n\nfunction init(props) {\n if (!isObj(props) || !props.origin) {\n throw new Error('[web-trace]: init::arguments type error');\n }\n\n // 初始配置赋值\n setConfig(props);\n\n if (isObj(props.baseInfo)) {\n setBaseInfo(props.baseInfo)\n }\n\n // 监控性能\n if (config.perf) {\n Performance();\n }\n\n // 运行时错误\n if (config.error) {\n RTError();\n }\n\n // 请求错误\n if (config.request) {\n ReqError();\n }\n\n const state = localStorage.getItem('__WEB_GLEDE__');\n\n if (!state || (Date.now() / 1000 - JSON.parse(state).t) > config.errorHoldTime) {\n localStorage.setItem('__WEB_GLEDE__', JSON.stringify({\n t: Math.trunc(Date.now() / 1000)\n }));\n }\n}\n\nexport default init;\n","import {\n getXpath,\n getErrorDetail,\n send\n} from '@utils'\nimport config from '@config';\n\n/**\n * 运行时错误\n */\nexport function RTError() {\n window.addEventListener('error', event => {\n let errLog = {};\n\n if (event.target && (event.target.src || event.target.href)) {\n errLog = {\n typ: config.logType.err,\n act: 0, // 资源错误\n d: {\n msg: event.target.src || event.target.href,\n path: getXpath(event.target)\n }\n }\n }\n else {\n const error = event.error || {};\n const errDetail = getErrorDetail(error.stack);\n\n errLog = {\n typ: config.logType.err,\n act: 1, // JS执行错误\n d: {\n msg: (error && error.message) ? error.message : pickLstStr(event.message, ':'),\n path: getXpath()\n },\n entry: errDetail.entry || pickLstStr(event.filename, '/'),\n pos: `${errDetail.line || event.lineno}_${errDetail.column || event.colno}`\n }\n }\n\n send('error', errLog);\n }, true);\n\n window.addEventListener('unhandledrejection', event => {\n const error = event.reason || {};\n const errDetail = getErrorDetail(error.stack);\n\n const errLog = {\n typ: config.logType.err,\n act: 2, // Promise执行错误\n d: {\n msg: error.message || '',\n path: getXpath()\n },\n entry: errDetail.entry,\n pos: `${errDetail.line}_${errDetail.column}`,\n }\n\n send('error', errLog);\n });\n\n /**\n * 获取分割后的终项子串\n * @param {string} str \n * @param {string} separator \n */\n function pickLstStr(str, separator) {\n if (!str || typeof str !== 'string') {\n return '';\n }\n\n return str.split(separator).slice(-1)[0].trim();\n }\n}\n"],"names":["toString","Object","prototype","getLowerString","data","call","toLowerCase","isObj","isStr","require","config","origin","pt","logType","pv","nt","busi","err","perf","error","errorHoldTime","request","reqRegExp","lastEvent","setBaseInfo","params","overide","keys","forEach","key","suppleInfo","baseInfo","getLastEvent","sdk","version","business","eventType","document","addEventListener","event","capture","passive","ERROR_REG","getSelectors","path","separator","reverse","filter","el","window","map","id","nodeName","concat","className","split","item","join","getXpath","target","pathArr","documentElement","push","parentNode","getSelector","getErrorDetail","stack","reg","result","entry","line","column","matchResult","match","slice","trim","ivdArr","vdExt","isInvalidLog","type","d","msg","_step","_iterator","_createForOfIteratorHelper","s","n","done","keyword","value","includes","e","f","act","some","extname","endsWith","isInvalidEntry","interceptor","JSON","parse","localStorage","getItem","t","Math","trunc","Date","now","hash","str","i","length","charCodeAt","abs","hashcode","stringify","setItem","mixinParams","_objectSpread","__proto__","pathname","location","pathList","pathKey","pathVal","name","_defineProperty","dwh","screen","width","height","getBaseInfo","send","schema","URLSearchParams","logData","undefined","append","Image","src","Performance","callback","timing","performance","getEntriesByType","setTimeout","domInteractive","domLoading","domainLookupEnd","fetchStart","connectStart","connectEnd","requestStart","responseStart","responseEnd","domContentLoadedEventStart","loadEventEnd","times","typ","tti","dns","tcp","ttfb","dt","dpt","drt","readyState","ReqError","XMLHttpRequest","oldFetch","fetch","oldOpen","open","oldSend","matchReq","url","rules","curReg","RegExp","startsWith","_len","arguments","args","Array","_key","this","matched","apply","startTime","handler","dur","_len2","_key2","defineProperty","input","opts","Promise","_ref","_regeneratorRuntime","mark","_callee","resolve","reject","noError","response","wrap","_context","prev","next","sent","ok","status","t0","stop","_x","_x2","freeze","init","props","Error","hasOwnProperty","setConfig","pickLstStr","errLog","href","errDetail","message","filename","pos","lineno","colno","reason","RTError","state","sendLog","getConfig"],"mappings":"w0QAAA,IAAQA,EAAaC,OAAOC,UAApBF,SAED,SAASG,EAAeC,GAC3B,OAAOJ,EAASK,KAAKD,GAAME,cAIxB,SAASC,EAAOH,GACnB,MAAgC,oBAAzBD,EAAeC,GAiBnB,SAASI,EAAOJ,GACnB,MAAgC,oBAAzBD,EAAeC,GAhB1BG,EAAME,QAAU,SAkBhBD,EAAMC,QAAU,SC1BhB,IAAMC,EAAS,CAGXC,OAAQ,GAGRC,GAAI,CAAC,OAAQ,SAAU,UAAW,UAGlCC,QAAS,CACLC,GAAI,KACJC,GAAI,KACJC,KAAM,SACNC,IAAK,QACLC,KAAM,UAIVC,OAAO,EAGPC,cAAe,KAGfF,MAAM,EAGNG,SAAS,EAGTC,UAAW,CACP,aCjCJC,YCiBG,SAASC,EAAYC,GAAyB,IAAjBC,0DAChCzB,OAAO0B,KAAKF,GAAQG,SAAQ,SAAAC,GACpBnB,EAAOoB,WAAWD,GAEdnB,EAAOoB,WAAWD,GADlBH,EACyBD,EAAOI,UAIzBnB,EAAOoB,WAAWD,IAClBJ,EAAOI,IAKlBnB,EAAOqB,SAASF,GAAOJ,EAAOI,MDhBnC,SAASG,IACZ,OAAOT,ECVXb,EAAOqB,SAAW,CACdE,IAAKC,GAGTxB,EAAOoB,WAAa,CAChBK,SAAU,GACVhB,MAAO,GACPD,KAAM,GACNG,QAAS,IDZb,CAAC,QAAS,cAAcO,SAAQ,SAAAQ,GAC5BC,SAASC,iBAAiBF,GAAW,SAACG,GAClChB,EAAYgB,IACb,CACCC,SAAS,EACTC,SAAS,OEJjB,IAAMC,EAAY,yDAElB,SAASC,EAAaC,EAAMC,GACxB,OAAOD,EAAKE,UAAUC,QAAO,SAAAC,GACzB,OAAOA,IAAOX,UAAYW,IAAOC,UAClCC,KAAI,SAAAF,GACH,OAAIA,EAAGG,GACOH,GAAAA,OAAAA,EAAGI,SAAS9C,cAAtB,KAAA+C,OAAuCL,EAAGG,IAErCH,EAAGM,WAAqC,iBAAjBN,EAAGM,UAC/B,GAAAD,OAAUL,EAAGI,SAAS9C,0BAAiB0C,EAAGM,UAAUC,MAAM,KAAKR,QAAO,SAAAS,GAAI,QAAMA,KAAMC,KAAK,MAGpFT,EAAGI,SAAS9C,iBAExBmD,KAAKZ,GAmBL,SAASa,EAASC,GACrB,IAAKA,EAAQ,CACT,IAAMpC,EAAYS,IAClB2B,EAASpC,EAAYA,EAAUoC,OAAS,KAG5C,OAtBJ,SAAqBf,GAGjB,IAH0C,IAAnBC,yDAAY,MAC/Be,EAAU,GAEPhB,GAAQA,IAASP,SAASwB,iBAC7BD,EAAQE,KAAKlB,GACbA,EAAOA,EAAKmB,WAGhB,OAAOpB,EAAaiB,EAASf,GActBmB,CAAYL,GAShB,SAASM,EAAeC,GAAwB,IAAjBC,yDAAMzB,EAClC0B,EAAS,CACXC,MAAO,GACPC,KAAM,EACNC,OAAQ,GAGZ,GAAIL,GAA0B,iBAAVA,EAAoB,CACpC,IAAMM,EAAcN,EAAMO,MAAMN,GAE5BK,IACAJ,EAAOC,MAAQG,EAAY,GAAGjB,MAAM,KAAKmB,OAAO,GAAG,GAAGC,OACtDP,EAAOE,MAAQE,EAAY,GAC3BJ,EAAOG,QAAUC,EAAY,IAIrC,OAAOJ,ECrEJ,ICcDQ,EAAS,CAAC,QAAS,OAAQ,eAAgB,QAC3CC,EAAQ,CAAC,QAAS,OAexB,SAASC,EAAarD,EAAQsD,GAC1B,IAAKtD,EACD,OAAO,EAGX,GAAIA,EAAOuD,GAAKvD,EAAOuD,EAAEC,IAAK,CAAA,IAAAC,EAAAC,EAAAC,EACJR,GADI,IAC1B,IAA8BO,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAA,CAAA,IAAnBC,EAAmBN,EAAAO,MAC1B,GAAIhE,EAAOuD,EAAEC,IAAIS,SAASF,GACtB,OAAO,GAHW,MAAAvE,GAAAkE,EAAAQ,EAAA1E,GAAA,QAAAkE,EAAAS,KAQ9B,GAAa,UAATb,EAAkB,CAClB,GA3BR,SAAwBtD,GACpB,IAAQ4C,EAAe5C,EAAf4C,MAER,QAAa,IAFU5C,EAARoE,KAKVxB,GAA0B,iBAAVA,GAIbQ,EAAMiB,MAAK,SAAAC,GAAO,OAAI1B,EAAM2B,SAASD,OAiBrCE,CAAexE,GACf,OAAO,EAGX,IAAIyE,EAAcC,KAAKC,MAAMC,aAAaC,QAAQ,mBAAqB,CAAEC,EAAGC,KAAKC,MAAMC,KAAKC,MAAQ,MAC9FC,EDjDU,SAAAC,GACpBA,EAAMA,EAAI7G,WAIV,IAFA,IAAI4G,EAAO,EAEFE,EAAI,EAAGA,EAAID,EAAIE,OAAQD,IAC5BF,GAAUA,GAAQ,GAAKA,EAAQC,EAAIG,WAAWF,GAAM,WAGxD,OAAON,KAAKS,IAAIL,GCwCCM,CAASf,KAAKgB,UAAU1F,IAErC,GAAKiF,KAAKC,MAAQ,IAAOT,EAAYK,EAAK7F,EAAOU,cAC7C8E,EAAc,CAAEK,EAAGC,KAAKC,MAAMC,KAAKC,MAAQ,WAE1C,GAAIT,EAAYU,GACjB,OAAO,EAGXV,EAAYU,GAAQ,EACpBP,aAAae,QAAQ,gBAAiBjB,KAAKgB,UAAUjB,IAGzD,OAAO,EAGX,SAASmB,EAAY5F,EAAQsD,GACzB,OAAAuC,EAAAA,EAAA,CACIC,UAAW,MACR9F,GHhCJ,SAAqBsD,GACxB,IAAMyC,EAAWC,SAASD,SACpBE,EAAWF,EAAS/C,MAAM,iBAC5BkD,EAAU,KACVC,EAAUJ,EAcd,OAXKE,GAAY,CAAC,IAAK,MAAMhC,SAAS8B,IAClCG,EAAU,KACVC,EAAU,KAELF,GAAgC,IAApBA,EAASX,SAAiBS,EAAS9B,SAAS,OACzDhF,EAAOE,GAAGkF,MAAK,SAAA+B,GAAI,OAAIA,IAASH,EAAS,GAAGhD,MAAM,QAClDiD,EAAU,KACVC,EAAUF,EAAS,IAKpBhH,EAAAA,EAAAA,EAAAA,GAAAA,EAAOqB,UACPrB,EAAOoB,WAAWiD,IAFzB,GAAA+C,EAAA,CAGIvB,EAAGC,KAAKC,MAAMC,KAAKC,MAAQ,KAC3BoB,cAAQC,OAAOC,MAASD,KAAAA,OAAAA,OAAOE,SAC9BP,EAAUC,IGURO,CAAYpD,IAIhB,SAASqD,EAAKvH,EAASY,GAC1B,IAAIqD,EAAarD,EAAQZ,GAAzB,CAIA,IAAMwH,EAAS,IAAIC,gBACbC,EAAUlB,EAAY5F,EAAQZ,GAEpC,IAAK,IAAMgB,KAAO0G,OACOC,IAAjBD,EAAQ1G,IACRwG,EAAOI,OAAO5G,EAAKtB,EAAMgI,EAAQ1G,IAAQsE,KAAKgB,UAAUoB,EAAQ1G,IAAQ0G,EAAQ1G,KAIxF,IAAI6G,OAAQC,IAAZ,GAAAtF,OAAqB3C,EAAOC,mBAAU0H,ICpFnC,SAASO,IACZ,ICJmBC,EDIbC,EAASC,YAAYC,iBAAiB,cAAcjC,OAAS,EAC/DgC,YAAYC,iBAAiB,cAAc,GAAKD,YAAYD,OCL7CD,EDOZ,WACHI,YAAW,WACP,IACIC,EAWAJ,EAXAI,eACAC,EAUAL,EAVAK,WACAC,EASAN,EATAM,gBACAC,EAQAP,EARAO,WACAC,EAOAR,EAPAQ,aACAC,EAMAT,EANAS,WACAC,EAKAV,EALAU,aACAC,EAIAX,EAJAW,cACAC,EAGAZ,EAHAY,YACAC,EAEAb,EAFAa,2BACAC,EACAd,EADAc,aAGEC,EAAQ,CAAEC,IAAKpJ,EAAOG,QAAQK,MAGpC2I,EAAME,KAAOb,GAAkBC,GAAcE,EAAa,EAG1DQ,EAAMG,IAAMZ,EAAkBC,EAAa,EAC3CQ,EAAMI,IAAMV,EAAaD,EAAe,EACxCO,EAAMK,KAAOT,EAAgBD,EAAe,EAC5CK,EAAMM,GAAKT,EAAcD,EAAgB,EAGzCI,EAAMO,IAAMT,EAA6BN,EAAa,EACtDQ,EAAMQ,IAAMT,EAAeP,EAAa,EAExCjB,EAAK,OAAQyB,OCrCO,aAAxBxH,SAASiI,WACTzB,IAEA5F,OAAOX,iBAAiB,OAAQuG,GCDjC,SAAS0B,IACZ,IAAMC,EAAiBvH,OAAOuH,eACxBC,EAAWxH,OAAOyH,MAClBC,EAAUH,EAAetK,UAAU0K,KACnCC,EAAUL,EAAetK,UAAUkI,KA6EzC,SAAS0C,EAASC,EAAKC,GAAO,IAAA9F,EAAAC,EAAAC,EACR4F,GADQ,IAC1B,IAAyB7F,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAA,CAAA,IAAdpB,EAAce,EAAAO,MACrB,GAAY,MAARtB,EACA,OAAO,EAGX,IAAI8G,EAAS9G,EAKb,GAHI3D,EAAM2D,KACN8G,EAAS,IAAIC,OAAO/G,EAAIgH,WAAW,KAAOhH,EAAUA,IAAAA,OAAAA,KAEpD4G,EAAItG,MAAMwG,GACV,OAAO,GAZW,MAAAhK,GAAAkE,EAAAQ,EAAA1E,GAAA,QAAAkE,EAAAS,IAgB1B,OAAO,EA3FX4E,EAAetK,UAAU0K,KAAO,WAAkB,IAAA,IAAAQ,EAAAC,UAAAtE,OAANuE,EAAM,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAANF,EAAME,GAAAH,UAAAG,GAG9C,OAFAC,KAAKC,QAAUZ,EAASQ,EAAK,GAAI5K,EAAOY,WAEjCqJ,EAAQgB,MAAMF,KAAMH,IAG/Bd,EAAetK,UAAUkI,KAAO,WAC5B,GAAIqD,KAAKC,QAAS,CACd,IAAME,EAAYlF,KAAKC,MACjBkF,EAAU,SAAAtJ,GACZ6F,EAAK,UAAW,CACZ0B,IAAKpJ,EAAOG,QAAQE,GACpB8E,MAAsB,SAAftD,EAAMwC,MACbC,EAAG,CACC8G,IAAKpF,KAAKC,MAAQiF,MAK9BH,KAAKnJ,iBAAiB,OAAQuJ,GAAS,GACvCJ,KAAKnJ,iBAAiB,QAASuJ,GAAS,GAdE,IAAA,IAAAE,EAAAV,UAAAtE,OAANuE,EAAM,IAAAC,MAAAQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANV,EAAMU,GAAAX,UAAAW,GAiB9C,OAAOnB,EAAQc,MAAMF,KAAMH,IAG/BrL,OAAOgM,eAAehJ,OAAQ,QAAS,CACnCwC,MAAO,SAASyG,EAAOC,GACnB,IAAIpB,EAAM,GASV,OAPIvK,EAAM0L,GACNnB,EAAMmB,EAED3L,EAAM2L,IAAU1L,EAAM0L,EAAMnB,OACjCA,EAAMmB,EAAMnB,KAGXD,EAASC,EAAKrK,EAAOY,WAInB,IAAI8K,QAAJ,WAAA,MAAYC,KAAAC,IAAAC,MAAA,SAAAC,EAAOC,EAASC,GAAhB,IAAAd,EAAAe,EAAAC,EAAA,OAAAN,IAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OACTpB,EAAYlF,KAAKC,MACnBgG,EAAU,EAFCG,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAKYvC,EAASyB,EAAOC,GAL5B,KAAA,EAKLS,EALKE,EAAAG,KAMXR,EAAQG,GAEHA,EAASM,IAA0B,MAApBN,EAASO,SACzBR,EAAU,GATHG,EAAAE,KAAA,GAAA,MAAA,KAAA,GAAAF,EAAAC,KAAA,GAAAD,EAAAM,GAAAN,EAAA,MAAA,GAaXJ,EAAAI,EAAAM,IACAT,EAAU,EAdC,KAAA,GAiBfvE,EAAK,UAAW,CACZ0B,IAAKpJ,EAAOG,QAAQE,GACpB8E,IAAK8G,EACL3H,EAAG,CACC8G,IAAKpF,KAAKC,MAAQiF,KArBX,KAAA,GAAA,IAAA,MAAA,OAAAkB,EAAAO,UAAAb,EAAA,KAAA,CAAA,CAAA,EAAA,wLAAZ,OAAA,SAAAc,EAAAC,GAAA,OAAAlB,EAAAV,MAAAF,KAAAJ,YAAA,IAHIZ,EAASyB,EAAOC,aCxCxBlM,OAAOuN,OAAO,CACzBjG,UAAW,KACXrF,QAAAA,EACAuL,KCLJ,SAAcC,GACV,IAAKnN,EAAMmN,KAAWA,EAAM/M,OACxB,MAAM,IAAIgN,MAAM,4CV8BjB,SAAmBD,GACtBzN,OAAO0B,KAAK+L,GAAO9L,SAAQ,SAAAC,GACnBnB,EAAOkN,eAAe/L,KAClBtB,EAAMmN,EAAM7L,KAAStB,EAAMG,EAAOmB,IAClCnB,EAAOmB,GAAPyF,EAAAA,EAAA,GACO5G,EAAOmB,IACP6L,EAAM7L,IAIbnB,EAAOmB,GAAO6L,EAAM7L,OUpChCgM,CAAUH,GAENnN,EAAMmN,EAAM3L,WACZP,EAAYkM,EAAM3L,UAIlBrB,EAAOQ,MACP0H,IAIAlI,EAAOS,OCbR,WAwDH,SAAS2M,EAAWjH,EAAKhE,GACrB,OAAKgE,GAAsB,iBAARA,EAIZA,EAAItD,MAAMV,GAAW6B,OAAO,GAAG,GAAGC,OAH9B,GAzDf1B,OAAOX,iBAAiB,SAAS,SAAAC,GAC7B,IAAIwL,EAAS,GAEb,GAAIxL,EAAMoB,SAAWpB,EAAMoB,OAAOgF,KAAOpG,EAAMoB,OAAOqK,MAClDD,EAAS,CACLjE,IAAKpJ,EAAOG,QAAQI,IACpB4E,IAAK,EACLb,EAAG,CACCC,IAAK1C,EAAMoB,OAAOgF,KAAOpG,EAAMoB,OAAOqK,KACtCpL,KAAMc,EAASnB,EAAMoB,cAI5B,CACD,IAAMxC,EAAQoB,EAAMpB,OAAS,GACvB8M,EAAYhK,EAAe9C,EAAM+C,OAEvC6J,EAAS,CACLjE,IAAKpJ,EAAOG,QAAQI,IACpB4E,IAAK,EACLb,EAAG,CACCC,IAAM9D,GAASA,EAAM+M,QAAW/M,EAAM+M,QAAUJ,EAAWvL,EAAM2L,QAAS,KAC1EtL,KAAMc,KAEVW,MAAO4J,EAAU5J,OAASyJ,EAAWvL,EAAM4L,SAAU,KACrDC,IAAQH,GAAAA,OAAAA,EAAU3J,MAAQ/B,EAAM8L,OAA7B,KAAAhL,OAAuC4K,EAAU1J,QAAUhC,EAAM+L,QAI5ElG,EAAK,QAAS2F,MACf,GAEH9K,OAAOX,iBAAiB,sBAAsB,SAAAC,GAC1C,IAAMpB,EAAQoB,EAAMgM,QAAU,GACxBN,EAAYhK,EAAe9C,EAAM+C,OAavCkE,EAAK,QAXU,CACX0B,IAAKpJ,EAAOG,QAAQI,IACpB4E,IAAK,EACLb,EAAG,CACCC,IAAK9D,EAAM+M,SAAW,GACtBtL,KAAMc,KAEVW,MAAO4J,EAAU5J,MACjB+J,cAAQH,EAAU3J,KAAQ2J,KAAAA,OAAAA,EAAU1J,aD/BxCiK,GAIA9N,EAAOW,SACPkJ,IAGJ,IAAMkE,EAAQpI,aAAaC,QAAQ,mBAE9BmI,GAAU/H,KAAKC,MAAQ,IAAOR,KAAKC,MAAMqI,GAAOlI,EAAK7F,EAAOU,gBAC7DiF,aAAae,QAAQ,gBAAiBjB,KAAKgB,UAAU,CACjDZ,EAAGC,KAAKC,MAAMC,KAAKC,MAAQ,SDzBnC+H,QAAStG,EACT5G,YAAAA,EACAmN,UTwCG,WACH,OAAOxI,KAAKC,MAAMD,KAAKgB,UAAUzG,KSxCjCgD,SAAAA,EACAO,eAAAA"}
{"version":3,"file":"web-glede.js","sources":["../src/utils/util.js","../src/config.js","../src/utils/webUtil/getLastEvent.js","../src/web/baseInfo.js","../src/utils/webUtil/getSelector.js","../src/utils/hashcode.js","../src/utils/send.js","../src/web/core/perf.js","../src/utils/webUtil/onload.js","../src/web/core/request.js","../src/web/index.js","../src/web/init.js","../src/web/core/error.js"],"sourcesContent":["const { toString } = Object.prototype;\n\nexport function getLowerString(data) {\n return toString.call(data).toLowerCase()\n}\n\n// 判断对象类型\nexport function isObj (data) {\n return getLowerString(data) === '[object object]';\n}\nisObj.require = 'object';\n\n// 判断对象类型\nexport function isArr (data) {\n return getLowerString(data) === '[object array]'\n}\nisArr.require = 'array';\n\n// 判断数字类型\nexport function isNum (data) {\n return getLowerString(data) === '[object number]'\n}\nisNum.require = 'number';\n\n// 判断字符串类型\nexport function isStr (data) {\n return getLowerString(data) === '[object string]'\n}\nisStr.require = 'string';\n\n// 判断Null类型\nexport function isNull (data) {\n return getLowerString(data) === '[object null]'\n}\n\n// 判断undefined类型\nexport function isUndefined (data) {\n return getLowerString(data) === '[object undefined]'\n}\n","import { isObj } from './utils/util';\n\nconst config = {\n\n // 请求发送的目的地\n origin: '',\n\n // 路由配置,决定了pt / pb字段\n pt: ['home', 'circle', 'message', 'person'],\n\n // 日志类型\n logType: {\n pv: 'pv',\n nt: 'nt',\n busi: 'feBusi',\n err: 'feErr',\n perf: 'fePerf'\n },\n\n // 错误监控 默认采集\n error: true,\n\n // 相同错误阻止时长, 默认2小时, 单位s\n errorHoldTime: 2 * 3600,\n\n // 性能监控 默认采集\n perf: true,\n\n // 请求监控 默认采集\n request: true,\n\n // 请求监控需要匹配的URI正则列表, 支持通配符 '*'\n reqRegExp: [\n '/api/'\n ]\n};\n\nexport function setConfig(props) {\n Object.keys(props).forEach(key => {\n if (config.hasOwnProperty(key)) {\n if (isObj(props[key]) && isObj(config[key])) {\n config[key] = {\n ...config[key],\n ...props[key]\n }\n }\n else {\n config[key] = props[key];\n }\n };\n });\n}\n\nexport function getConfig() {\n return JSON.parse(JSON.stringify(config));\n}\n\nexport default config;\n","let lastEvent;\n\n['click', 'touchstart'].forEach(eventType => {\n document.addEventListener(eventType, (event) => {\n lastEvent = event;\n }, {\n capture: true, // 捕获阶段执行\n passive: true, // 不阻止事件\n });\n});\n\n/**\n * 获取最后一次交互的事件对象\n * @returns {Event | null}\n */\nexport function getLastEvent() {\n return lastEvent;\n}\n","/**\n * 公共上报参数信息\n */\nimport config from '../config';\nimport { version } from '../../package.json';\n\nconfig.baseInfo = {\n sdk: version\n};\n\nconfig.suppleInfo = {\n business: {},\n error: {},\n perf: {},\n request: {}\n};\n\nexport function setBaseInfo(params, overide = false) {\n Object.keys(params).forEach(key => {\n if (config.suppleInfo[key]) {\n if (overide) {\n config.suppleInfo[key] = params[key];\n }\n else {\n config.suppleInfo[key] = {\n ...config.suppleInfo[key],\n ...params[key]\n };\n }\n }\n else {\n config.baseInfo[key] = params[key];\n }\n });\n}\n\nexport function getBaseInfo(type) {\n const pathname = location.pathname;\n const pathList = pathname.match(/\\/[\\w-@%\\.]+/g);\n let pathKey = 'pb';\n let pathVal = pathname;\n\n // 处理pb / pt\n if (!pathList && ['/', '//'].includes(pathname)) {\n pathKey = 'pt';\n pathVal = '/';\n }\n else if (pathList && pathList.length === 1 && !pathname.includes('//')) {\n if (config.pt.some(name => name === pathList[0].slice(1))) {\n pathKey = 'pt';\n pathVal = pathList[0];\n }\n }\n\n return {\n ...config.baseInfo,\n ...config.suppleInfo[type],\n t: Math.trunc(Date.now() / 1000),\n dwh: `${screen.width}_${screen.height}`,\n [pathKey]: pathVal\n };\n}\n","import { getLastEvent } from './getLastEvent';\n\n// 匹配错误堆栈正则\nconst ERROR_REG = /(?:@|(?:at\\s+.*?))\\s*\\(?(https?:\\/\\/.+):(\\d+):(\\d+)\\)?/;\n\nfunction getSelectors(path, separator) {\n return path.reverse().filter(el => {\n return el !== document && el !== window;\n }).map(el => {\n if (el.id) {\n return `${el.nodeName.toLowerCase()}#${el.id}`;\n }\n else if (el.className && typeof el.className === 'string') {\n return `${el.nodeName.toLowerCase()}.${el.className.split(' ').filter(item => !!item).join('.')}`;\n }\n else {\n return el.nodeName.toLowerCase();\n }\n }).join(separator);\n}\n\nfunction getSelector(path, separator = ' > ') {\n let pathArr = [];\n\n while (path && path !== document.documentElement) {\n pathArr.push(path);\n path = path.parentNode;\n }\n\n return getSelectors(pathArr, separator);\n}\n\n/**\n * 获取最近交互的xpath路径\n * @param {EventTarget} target \n * @returns {string}\n */\nexport function getXpath(target) {\n if (!target) {\n const lastEvent = getLastEvent();\n target = lastEvent ? lastEvent.target : null;\n }\n\n return getSelector(target);\n}\n\n/**\n * 解析错误堆栈, 得到目标文件名、错误行、错误列\n * @param {string} stack 错误堆栈字符串\n * @param {RegExp} reg 匹配错误的正则表达式\n * @returns {{entry: string; line: number; column: number;}}\n */\nexport function getErrorDetail(stack, reg = ERROR_REG) {\n const result = {\n entry: '',\n line: 0,\n column: 0\n };\n\n if (stack && typeof stack === 'string') {\n const matchResult = stack.match(reg);\n \n if (matchResult) {\n result.entry = matchResult[1].split('/').slice(-1)[0].trim();\n result.line = +matchResult[2];\n result.column = +matchResult[3];\n }\n }\n\n return result;\n}\n","export const hashcode = str => {\n str = str.toString();\n\n let hash = 0;\n\n for (let i = 0; i < str.length; i++) {\n hash = (((hash << 5) - hash) + str.charCodeAt(i)) & 0xFFFFFFFF;\n }\n\n return Math.abs(hash);\n}\n","/**\n * @author liuzichao\n * @description 上报方法\n */\nimport config from '@config';\nimport { isObj } from './util';\nimport { hashcode } from './hashcode';\nimport { getBaseInfo } from '../web/baseInfo';\n\n/**\n * 判定是否为无效日志\n * @param {any} params 日志内容\n * @param {string} type 日志类型\n */\nconst ivdArr = ['debug', 'vite', 'end of input', 'ping'];\nconst vdExt = ['.html', '.js'];\n\nfunction isInvalidEntry(params) {\n const { entry, act } = params;\n\n if (+act === 0) {\n return false;\n }\n if (!entry || typeof entry !== 'string') {\n return true;\n }\n\n return !vdExt.some(extname => entry.endsWith(extname));\n}\n\nfunction isInvalidLog(params, type) {\n if (!params) {\n return true;\n }\n\n if (params.d && params.d.msg) {\n for (const keyword of ivdArr) {\n if (params.d.msg.includes(keyword)) {\n return true;\n }\n }\n }\n\n if (type === 'error') {\n if (isInvalidEntry(params)) {\n return true;\n }\n\n let interceptor = JSON.parse(localStorage.getItem('__WEB_GLEDE__')) || { t: Math.trunc(Date.now() / 1000) };\n const hash = hashcode(JSON.stringify(params));\n\n if ((Date.now() / 1000 - interceptor.t) > config.errorHoldTime) {\n interceptor = { t: Math.trunc(Date.now() / 1000) };\n }\n else if (interceptor[hash]) {\n return true;\n }\n\n interceptor[hash] = 1;\n localStorage.setItem('__WEB_GLEDE__', JSON.stringify(interceptor));\n }\n\n return false;\n}\n\nfunction mixinParams(params, type) {\n return {\n __proto__: null,\n ...params,\n ...getBaseInfo(type),\n };\n}\n\nexport function send(logType, params) {\n if (isInvalidLog(params, logType)) {\n return;\n }\n\n const schema = new URLSearchParams();\n const logData = mixinParams(params, logType);\n\n for (const key in logData) {\n if (logData[key] !== undefined) {\n schema.append(key, isObj(logData[key]) ? JSON.stringify(logData[key]) : logData[key]);\n }\n }\n\n new Image().src = `${config.origin}?${schema}`;\n}\n","import { onload, send } from \"@utils\";\nimport config from \"@config\";\n\nexport function Performance() {\n const timing = performance.getEntriesByType('navigation').length > 0\n ? performance.getEntriesByType('navigation')[0] : performance.timing;\n\n onload(() => {\n setTimeout(() => {\n const {\n domInteractive,\n domLoading,\n domainLookupEnd,\n fetchStart,\n connectStart,\n connectEnd,\n requestStart,\n responseStart,\n responseEnd,\n domContentLoadedEventStart,\n loadEventEnd\n } = timing;\n\n const times = { typ: config.logType.perf };\n\n // 核心指标\n times.tti = (domInteractive || domLoading) - fetchStart | 0;\n\n // 网络指标\n times.dns = domainLookupEnd - fetchStart | 0;\n times.tcp = connectEnd - connectStart | 0;\n times.ttfb = responseStart - requestStart | 0;\n times.dt = responseEnd - responseStart | 0;\n\n // 解析指标\n times.dpt = domContentLoadedEventStart - fetchStart | 0;\n times.drt = loadEventEnd - fetchStart | 0;\n\n send('perf', times)\n });\n });\n}","export function onload(callback) {\n if (document.readyState === 'complete') {\n callback();\n } else {\n window.addEventListener('load', callback);\n }\n}","import { send, isStr, isObj } from \"@utils\";\nimport config from \"@config\";\n\nexport function ReqError() {\n const XMLHttpRequest = window.XMLHttpRequest;\n const oldFetch = window.fetch;\n const oldOpen = XMLHttpRequest.prototype.open;\n const oldSend = XMLHttpRequest.prototype.send;\n\n XMLHttpRequest.prototype.open = function(...args) {\n this.matched = matchReq(args[1], config.reqRegExp);\n\n return oldOpen.apply(this, args)\n }\n\n XMLHttpRequest.prototype.send = function(...args) {\n if (this.matched) {\n const startTime = Date.now();\n const handler = event => {\n send('request', {\n typ: config.logType.nt,\n act: +(event.type === 'load'),\n d: {\n dur: Date.now() - startTime,\n api: this.matched\n }\n })\n };\n\n this.addEventListener('load', handler, false);\n this.addEventListener('error', handler, false);\n }\n\n return oldSend.apply(this, args);\n }\n\n Object.defineProperty(window, 'fetch', {\n value: function(input, opts) {\n let url = '';\n\n if (isStr(input)) {\n url = input;\n }\n else if (isObj(input) && isStr(input.url)) {\n url = input.url;\n }\n\n const matched = matchReq(url, config.reqRegExp);\n\n if (!matched) {\n return oldFetch(input, opts);\n }\n \n return new Promise(async (resolve, reject) => {\n const startTime = Date.now();\n let noError = 1;\n\n try {\n const response = await oldFetch(input, opts);\n resolve(response);\n\n if (!response.ok && response.status !== 304) {\n noError = 0;\n }\n }\n catch (err) {\n reject(err);\n noError = 0;\n }\n\n send('request', {\n typ: config.logType.nt,\n act: noError,\n d: {\n dur: Date.now() - startTime,\n api: matched\n }\n });\n });\n }\n });\n\n\n /**\n * 判定本次请求是否需要上报\n * @param {string} url\n * @param {Array<RegExp>} rules\n */\n function matchReq(url, rules) {\n for (const reg of rules) {\n if (reg === '*') {\n return new URL(url).pathname;\n }\n\n let curReg = reg;\n\n if (isStr(reg)) {\n curReg = new RegExp(reg.startsWith('/') ? reg : `/${reg}`);\n }\n if (url.match(curReg)) {\n return new URL(url).pathname;\n }\n }\n\n return false;\n }\n}","import { setBaseInfo } from './baseInfo';\nimport { getConfig } from '../config';\nimport init from './init';\nimport { send, getXpath, getErrorDetail } from '../utils';\nimport { version } from '../../package.json';\n\n\nexport default Object.freeze({\n __proto__: null,\n version,\n init,\n sendLog: send,\n setBaseInfo,\n getConfig,\n getXpath,\n getErrorDetail\n});\n","import config, { setConfig } from \"../config\";\nimport { isObj } from \"@utils\";\nimport { RTError, ReqError, Performance } from \"./core\";\nimport { setBaseInfo } from \"./baseInfo\";\n\nfunction init(props) {\n if (!isObj(props) || !props.origin) {\n throw new Error('[web-trace]: init::arguments type error');\n }\n\n // 初始配置赋值\n setConfig(props);\n\n if (isObj(props.baseInfo)) {\n setBaseInfo(props.baseInfo)\n }\n\n // 监控性能\n if (config.perf) {\n Performance();\n }\n\n // 运行时错误\n if (config.error) {\n RTError();\n }\n\n // 请求错误\n if (config.request) {\n ReqError();\n }\n\n const state = localStorage.getItem('__WEB_GLEDE__');\n\n if (!state || (Date.now() / 1000 - JSON.parse(state).t) > config.errorHoldTime) {\n localStorage.setItem('__WEB_GLEDE__', JSON.stringify({\n t: Math.trunc(Date.now() / 1000)\n }));\n }\n}\n\nexport default init;\n","import {\n getXpath,\n getErrorDetail,\n send\n} from '@utils'\nimport config from '@config';\n\n/**\n * 运行时错误\n */\nexport function RTError() {\n window.addEventListener('error', event => {\n let errLog = {};\n\n if (event.target && (event.target.src || event.target.href)) {\n errLog = {\n typ: config.logType.err,\n act: 0, // 资源错误\n d: {\n msg: event.target.src || event.target.href,\n path: getXpath(event.target)\n }\n }\n }\n else {\n const error = event.error || {};\n const errDetail = getErrorDetail(error.stack);\n\n errLog = {\n typ: config.logType.err,\n act: 1, // JS执行错误\n d: {\n msg: (error && error.message) ? error.message : pickLstStr(event.message, ':'),\n path: getXpath()\n },\n entry: errDetail.entry || pickLstStr(event.filename, '/'),\n pos: `${errDetail.line || event.lineno}_${errDetail.column || event.colno}`\n }\n }\n\n send('error', errLog);\n }, true);\n\n window.addEventListener('unhandledrejection', event => {\n const error = event.reason || {};\n const errDetail = getErrorDetail(error.stack);\n\n const errLog = {\n typ: config.logType.err,\n act: 2, // Promise执行错误\n d: {\n msg: error.message || '',\n path: getXpath()\n },\n entry: errDetail.entry,\n pos: `${errDetail.line}_${errDetail.column}`,\n }\n\n send('error', errLog);\n });\n\n /**\n * 获取分割后的终项子串\n * @param {string} str \n * @param {string} separator \n */\n function pickLstStr(str, separator) {\n if (!str || typeof str !== 'string') {\n return '';\n }\n\n return str.split(separator).slice(-1)[0].trim();\n }\n}\n"],"names":["toString","Object","prototype","getLowerString","data","call","toLowerCase","isObj","isStr","require","config","origin","pt","logType","pv","nt","busi","err","perf","error","errorHoldTime","request","reqRegExp","lastEvent","setBaseInfo","params","overide","keys","forEach","key","suppleInfo","baseInfo","getLastEvent","sdk","version","business","eventType","document","addEventListener","event","capture","passive","ERROR_REG","getSelectors","path","separator","reverse","filter","el","window","map","id","nodeName","concat","className","split","item","join","getXpath","target","pathArr","documentElement","push","parentNode","getSelector","getErrorDetail","stack","reg","result","entry","line","column","matchResult","match","slice","trim","ivdArr","vdExt","isInvalidLog","type","d","msg","_step","_iterator","_createForOfIteratorHelper","s","n","done","keyword","value","includes","e","f","act","some","extname","endsWith","isInvalidEntry","interceptor","JSON","parse","localStorage","getItem","t","Math","trunc","Date","now","hash","str","i","length","charCodeAt","abs","hashcode","stringify","setItem","mixinParams","_objectSpread","__proto__","pathname","location","pathList","pathKey","pathVal","name","_defineProperty","dwh","screen","width","height","getBaseInfo","send","schema","URLSearchParams","logData","undefined","append","Image","src","Performance","callback","timing","performance","getEntriesByType","setTimeout","domInteractive","domLoading","domainLookupEnd","fetchStart","connectStart","connectEnd","requestStart","responseStart","responseEnd","domContentLoadedEventStart","loadEventEnd","times","typ","tti","dns","tcp","ttfb","dt","dpt","drt","readyState","ReqError","XMLHttpRequest","oldFetch","fetch","oldOpen","open","oldSend","matchReq","url","rules","URL","curReg","RegExp","startsWith","_len","arguments","args","Array","_key","this","matched","apply","_this","startTime","handler","dur","api","_len2","_key2","defineProperty","input","opts","Promise","_ref","_regeneratorRuntime","mark","_callee","resolve","reject","noError","response","wrap","_context","prev","next","sent","ok","status","t0","stop","_x","_x2","freeze","init","props","Error","hasOwnProperty","setConfig","pickLstStr","errLog","href","errDetail","message","filename","pos","lineno","colno","reason","RTError","state","sendLog","getConfig"],"mappings":"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"}
{
"name": "web-glede",
"version": "1.1.7",
"version": "1.1.8",
"description": "web日志前端库",

@@ -5,0 +5,0 @@ "author": "liuzichao, Perfumere",