hiper-weimai
Version:
🚀 A statistical analysis tool for performance testing
1 lines • 25.5 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.autoComputeFirstScreenTime=t():e.autoComputeFirstScreenTime=t()}(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)}([function(e,t){e.exports={watchingNavStartChange:!1,navigationTagChangeMap:{realChangeList:[],usedChangeList:[]},onloadFinished:!1,supportPerformance:window.performance&&window.performance.getEntries&&"function"==typeof window.performance.getEntries&&window.performance.getEntries()instanceof Array}},function(e,t,r){var n=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,o=r(0),i=Array.prototype.slice;e.exports={version:"5.7.3",getDomReadyTime:function(e,t){if(e._isUsingOriginalNavStart){var r=0,n=function(){0!=performance.timing.domContentLoadedEventStart&&t(performance.timing.domContentLoadedEventStart,"domContentLoadedEventStart"),(++r>=50||0!=performance.timing.domContentLoadedEventStart)&&clearInterval(o)},o=setInterval(n,500);n()}else e.domUpdateTimeStamp?t(e.domUpdateTimeStamp,"domUpdateTimeStamp"):t(e.forcedNavStartTimeStamp,"forcedNavStartTimeStamp")},_getImgSrcFromBgImg:function(e){var t,r=e.match(/url\(.*?\)/g);if(r&&r.length){var n=r[r.length-1].replace(/^url\([\'\"]?/,"").replace(/[\'\"]?\)$/,"");(/^http/.test(n)||/^\/\//.test(n))&&(t=n)}return t},getImgSrcFromDom:function(e,t){var r;if("IMG"==e.nodeName.toUpperCase())r=e.getAttribute("src");else{var n=window.getComputedStyle(e),o=n.getPropertyValue("background-image")||n.getPropertyValue("background"),i=this._getImgSrcFromBgImg(o,t);i&&this._isImg(i,t)&&(r=i)}return r},_isImg:function(e,t){for(var r=0,n=t.length;r<n;r++)if(t[r].test(e))return!0;return!1},currentPos:{scrollTop:0,top:0,bottom:0,left:0,right:0},recordCurrentPos:function(e,t){var r,n=e.getBoundingClientRect(),o=document.querySelector(t.scrollWrapper);if(o){var i=o.getBoundingClientRect();r=i.top<0?-i.top:0}else r=document.documentElement.scrollTop||document.body.scrollTop;var a=n.top,s=n.bottom,c=n.left,m=n.right;this.currentPos.scrollTop=r,this.currentPos.top=a,this.currentPos.bottom=s,this.currentPos.left=c,this.currentPos.right=m},isInFirstScreen:function(e){if(!this.currentPos.top&&!this.currentPos.bottom)return!1;var t=window.innerHeight,r=window.innerWidth,n=this.currentPos.scrollTop,o=this.currentPos.top,i=this.currentPos.left,a=this.currentPos.right;return n+o<t&&a>0&&i<r},queryAllNode:function(e){var t=this;return document.createNodeIterator(document.body,NodeFilter.SHOW_ELEMENT,function(r){if(!t._shouldIgnoreNode(r,e))return NodeFilter.FILTER_ACCEPT})},_shouldIgnoreNode:function(e,t){for(var r=document.querySelectorAll(t),n=0,o=r.length;n<o;n++)if(this._isChild(e,r[n]))return!0;return!1},_isChild:function(e,t){for(var r=!1;e;){if(e===t){r=!0;break}e=e.parentNode}return r},parseUrl:function(e){var t=document.createElement("a");return t.href=e,t},transRequestDetails2Arr:function(e){var t=[],r={};for(var n in e.requestDetails){var o=n.split(">time")[0].replace(/^http(s)?:/,"").replace(/^\/\//,"");for(var i in r={src:o},e.requestDetails[n])r[i]=e.requestDetails[n][i];t.push(r)}return t},_formateUrlByRemove:function(e){return e.replace(/^http(s)?\:/,"").replace(/^\/\//,"")},_formateUrlByAdd:function(e){return/^http/.test(e)?e:window.location.protocol+"//"+this._formateUrlByRemove(e)},formateUrlList:function(e,t){for(var r,n=[],o=0,i=e.length;o<i;o++)r="add"==t?this._formateUrlByAdd(e[o]):this._formateUrlByRemove(e[o]),-1===n.indexOf(r)&&n.push(r);return n},initGlobal:function(){return{stopCatchingRequest:!1,isFirstRequestSent:!1,catchRequestTimeSections:[],ignoredImages:[],device:{},requestDetails:{},delayAll:0,ignoreTag:"[perf-ignore]",scrollWrapper:"[perf-scroll]",urlChangeStore:[],hasReported:!1,reportDesc:"",domUpdateTimeStamp:0,handExcuteTime:0,forcedNavStartTimeStamp:window.performance.timing.navigationStart,_originalNavStart:window.performance.timing.navigationStart,_isUsingOriginalNavStart:!0,_errorWatcher:function(){},errorMessages:[],abortReport:!1,onReport:function(){},onStableStatusFound:function(){},onNavigationStartChange:function(){},request:{limitedIn:[],exclude:[/(sockjs)|(socketjs)|(socket\.io)/]},renderTimeAfterGettingData:500,watingTimeWhenDefineStaticPage:2e3,img:[/(\.)(png|jpg|jpeg|gif|webp|ico|bmp|tiff|svg)/i],watchPerfStartChange:!0,delayReport:0,domChangeList:[],navigationStartChangeTag:["data-perf-start","perf-start"],navigationStartChangeDebounceTime:200,domUpdateMutationObserver:null,scriptLoadingMutationObserver:null,jsonpFilter:/callback=jsonp/,reportTimeFrom:"",stableTime:""}},getTime:function(){return(new Date).getTime()},mergeGlobal:function(e,t){var r;for(r in t)e[r]=t[r];return e},forEach:function(e,t){if("object"==typeof e&&e.length)for(var r=0,n=e.length;r<n;r++)t(e[r],r)},overrideRequest:function(e,t){var r=this,o={},a=function(t){e.requestDetails[t]||(e.requestDetails[t]={status:"",sendTime:"",completeTime:"",type:"",duration:""})},s=function(t,n){e.isFirstRequestSent||(e.isFirstRequestSent=!0);var i=t+">time:"+r.getTime();return a(i),e.requestDetails[i].status="sent",e.requestDetails[i].type=n,e.requestDetails[i].sendTime=r.getTime()-e.forcedNavStartTimeStamp,o[i]="start",{requestKey:i}},c=function(n){var i=r.getTime();a(n),e.requestDetails[n].status="complete",e.requestDetails[n].completeTime=i-e.forcedNavStartTimeStamp,e.requestDetails[n].duration=e.requestDetails[n].completeTime-e.requestDetails[n].sendTime,e.catchRequestTimeSections.push([i,i+e.renderTimeAfterGettingData]);var s=setTimeout(function(){o[n]="stopped",function(){for(var t in e.requestDetails)if(e.requestDetails[t]&&"complete"!==e.requestDetails[t].status)return!1;return!0}()&&function(){for(var e in o)if("stopped"!==o[e])return!1;return!0}()&&t(),clearTimeout(s)},e.renderTimeAfterGettingData)};!function(e,t){if(window.fetch&&"function"==typeof Promise){var r=window.fetch;window.fetch=function(){var n=this,o=arguments;return new Promise(function(i,a){var s,c;"string"==typeof o[0]?s=o[0]:"object"==typeof o[0]&&(s=o[0].url),s&&(c=e(s,"fetch").requestKey),r.apply(n,o).then(function(e){c&&t(c),i(e)}).catch(function(e){c&&t(c),a(e)})})}}}(s,c),function(t,n){var o=XMLHttpRequest.prototype,a=o.send,s=o.open;o.open=function(e,t){return this.acfst_http=this._http||{},this.acfst_http.method=e,this.acfst_http.url=t,s.apply(this,i.call(arguments))},o.send=function(){if(function(t){var n=!0;e.stopCatchingRequest&&(n=!1);for(var o=r.getTime(),i=0;i<e.catchRequestTimeSections.length;i++){var a=e.catchRequestTimeSections[i];if(o>=a[0]&&o<=a[1])break}e.catchRequestTimeSections.length&&i===e.catchRequestTimeSections.length&&(n=!1);for(var s=0,c=e.request.limitedIn.length;s<c;s++)e.request.limitedIn[s].test(t)||(n=!1);for(s=0,c=e.request.exclude.length;s<c;s++)e.request.exclude[s].test(t)&&(n=!1);return n}(this.acfst_http.url)){var o=t(this.acfst_http.url,"xhr").requestKey,s=this.onreadystatechange;this.onreadystatechange=function(){4===this.readyState&&(e.requestDetails[o].response=this.response,n(o)),s&&s.apply&&s.apply(this,arguments)}}return a.apply(this,i.call(arguments))}}(s,c),function(t,o){var a={},s={},c=function(e){s[e]||(s[e]=!0,o(e))},m=function(r){var n=function(e){return/script/i.test(e.tagName)&&/^http/.test(e.src)?e.src:""}(r);if(n&&e.jsonpFilter.test(n)&&!a[n]){a[n]=!0;var o=t(n,"jsonp").requestKey,i=setTimeout(function(){c(o),clearTimeout(i)},3e3);r.readyState?r.addEventListener("readystatechange",function(){"loaded"!=script.readyState&&"complete"!=script.readyState||(c(o),clearTimeout(i))}):(r.addEventListener("load",function(){c(o),clearTimeout(i)}),r.addEventListener("error",function(){c(o),clearTimeout(i)}))}},u=function(e){for(var t=document.getElementsByTagName("script"),r=i.call(t,0),n=0,o=r.length;n<o;n++)e(r[n])};n?(e.scriptLoadingMutationObserver=new n(function(e,t){r.forEach(e,function(e){e.addedNodes&&r.forEach(e.addedNodes,function(e){m(e)})})}),e.scriptLoadingMutationObserver.observe(document.body,{attributes:!1,childList:!0,subtree:!0}),u(function(e){m(e)})):(e.scriptLoadingMutationObserverMockTimer=setInterval(function(){u(function(e){m(e)})},200),u(function(e){m(e)}))}(s,c)},stopCatchingRequest:function(e){e.scriptLoadingMutationObserverMockTimer&&clearInterval(e.scriptLoadingMutationObserverMockTimer),e.scriptLoadingMutationObserver&&e.scriptLoadingMutationObserver.disconnect()},mergeUserConfig:function(e,t){if(t){for(var r in t)-1!==["watingTimeWhenDefineStaticPage","onReport","onStableStatusFound","renderTimeAfterGettingData","onAllXhrResolved","onNavigationStartChange","watchPerfStartChange","forcedNavStartTimeStamp","delayReport","navigationStartChangeTag","jsonpFilter"].indexOf(r)&&(e[r]=t[r]);var n=t.request||t.xhr;n&&(n.limitedIn&&(e.request.limitedIn=e.request.limitedIn.concat(n.limitedIn)),n.exclude&&(e.request.exclude=e.request.exclude.concat(n.exclude))),t.img&&("object"==typeof t.img&&"function"==typeof t.img.test?e.img.push(t.img):console.error('[auto-compute-first-screen-time] param "img" should be type RegExp'))}e._isUsingOriginalNavStart=e.forcedNavStartTimeStamp==e._originalNavStart},testStaticPage:function(e,t){var r=function(){o.onloadFinished=!0;var r=setTimeout(function(){clearTimeout(r),t.isFirstRequestSent||e()},t.watingTimeWhenDefineStaticPage)};o.onloadFinished?r():window.addEventListener("load",r)},watchDomUpdate:function(e){n&&(e.domUpdateMutationObserver=new n(function(){e.domUpdateTimeStamp=(new Date).getTime(),e.domChangeList.unshift({timeStamp:e.domUpdateTimeStamp,duration:e.domUpdateTimeStamp-e.forcedNavStartTimeStamp})}),e.domUpdateMutationObserver.observe(document.body,{childList:!0,subtree:!0}))},stopWatchDomUpdate:function(e){e.domUpdateMutationObserver&&e.domUpdateMutationObserver.disconnect()},onNavigationStartChange:function(e,t){var r=this;if(e.watchPerfStartChange&&!o.watchingNavStartChange){o.watchingNavStartChange=!0;var i,a=o.navigationTagChangeMap.realChangeList,s=o.navigationTagChangeMap.usedChangeList,c=function(){var r=function(e){for(var t,r=0,n=e.length;r<n;r++)if(t=document.body.getAttribute(e[r]))return t;return""}(e.navigationStartChangeTag);if(function(e,t){return!(!t||t==e)||!(t||!e)}(i,r)){var n=(new Date).getTime(),o={preTagValue:i,curTagValue:r,value:r,timeStamp:n,time:n-e._originalNavStart};if(a.push(o),i=r,1===a.length)s.push(o);else{var c=s.length;n-s[c-1].timeStamp>=e.navigationStartChangeDebounceTime&&(s.push(o),t(o))}}};if(n)new n(function(t,n){r.forEach(t,function(t,r){-1!==e.navigationStartChangeTag.indexOf(t.attributeName)&&c()})}).observe(document.body,{attributes:!0,childList:!1,subtree:!1});else setInterval(c,250)}},_getUnuniqueDetailFromSource:function(e,t,r){for(var n=[],o=0,i=e.length;o<i;o++){var a=e[o];if(this._isImg(a.name,r)){var s=this._formateUrlByRemove(a.name);-1!==t.indexOf(s)&&n.push({src:s,responseEnd:parseInt(a.responseEnd),fetchStart:parseInt(a.fetchStart),from:"performance"})}}return n},_getSrcMapFromUnuniqueDetail:function(e){var t={};return this.forEach(e,function(e,r){var n="imgUrl-"+e.src;t[n]||(t[n]=[]),t[n].push(r)}),t},_getUniquedFirstScreenDetail:function(e,t){var r=[];for(var n in t)if(/^imgUrl\-/.test(n)){var o=t[n];if(1==o.length)r.push(e[o[0]]);else if(o.length>1){var i=e[o[0]];this.forEach(o,function(t){e[t].responseEnd<i.responseEnd&&(i=e[t])}),r.push(i)}}return r},cycleGettingPerformaceTime:function(e,t,r,n){var o=5,i=this,a=i.formateUrlList(t,"remove"),s=function(t){var n=t[0].responseEnd;n>0&&n<1e6&&r({firstScreenTime:parseInt(n),firstScreenTimeStamp:parseInt(n)+e._originalNavStart,firstScreenImagesDetail:t})},c=function(){var t=performance.getEntries(),r=i._getUnuniqueDetailFromSource(t,a,e.img),c=[],u=i._getSrcMapFromUnuniqueDetail(r);(c=i._getUniquedFirstScreenDetail(r,u)).sort(function(e,t){return t.responseEnd-e.responseEnd}),--o>=0?c.length===a.length&&(clearInterval(m),s(c)):(c.length>0?s(c):n(),clearInterval(m))},m=setInterval(c,1e3);c()},watchError:function(e){window.addEventListener&&(e._errorWatcher=function(t){var r={lineno:t.lineno,colno:t.colno,time:(new Date).getTime()-e.forcedNavStartTimeStamp};t.error&&(r.message=t.error.message,r.stack=t.error.stack),e.errorMessages.push(r)},window.addEventListener("error",e._errorWatcher))},stopWatchingError:function(e){window.removeEventListener&&e._errorWatcher&&window.removeEventListener("error",e._errorWatcher)},generateNetwork:function(){var e=[];if(window.performance&&"function"==typeof window.performance.getEntries){var t=window.performance.getEntries();t&&t.length&&(e=t)}return e}}},function(e,t,r){var n=window,o=(n.document,r(1)),i=r(0),a=0;function s(){var e=o.mergeGlobal(o.initGlobal(),{intervalDotTimer:null,hasStoppedObserve:!1,dotList:[],imgMap:{},dotDelay:250,abortTimeWhenDelay:500});function t(t){var r=e.dotList[0],n=function(){return!e.hasReported&&!e.abortReport};if(e.abortByDelayTimeout)e.onReport({success:!1,delayFirstScreen:e.delayAll,abortTimeSetting:e.abortTimeWhenDelay,url:window.location.href.substring(0,200),dotList:e.dotList,globalIndex:e.globalIndex,type:"dot"});else{var a=function(){var n,a,s=null,c=[],m=[];for(n=0,a=e.dotList.length;n<a;n++)if(e.dotList[n].isTargetDot){s=e.dotList[n].firstScreenImages;break}if(s)for(n=0,a=s.length;n<a;n++)c.push(s[n].replace(/^http(s)?:/,"").replace(/^\/\//,""));var u=0;for(n=0,a=e.dotList.length;n<a;n++)e.dotList[n].delay&&e.dotList[n].dotTimeStamp<=t.dotTimeStamp&&(u+=e.dotList[n].delay);for(var f in e.requestDetails){var l=f.split(">time")[0].replace(/^http(s)?:/,"").replace(/^\/\//,"");m.push(l)}return{type:"dot",success:!0,maxErrorTime:t.maxErrorTime,dotList:e.dotList,isStaticPage:!e.isFirstRequestSent&&(!!/auto/.test(e.reportDesc)||"unknown"),requests:o.transRequestDetails2Arr(e),firstScreenTime:t.firstScreenTimeStamp-e.forcedNavStartTimeStamp,firstScreenTimeStamp:t.firstScreenTimeStamp,firstScreenImages:r.firstScreenImages,firstScreenImagesLength:r.firstScreenImages.length,firstScreenImagesDetail:t.firstScreenImagesDetail,navigationStartTimeStamp:e.forcedNavStartTimeStamp,navigationStartTime:e.forcedNavStartTimeStamp-e._originalNavStart,isOriginalNavStart:e.forcedNavStartTimeStamp===e._originalNavStart,delayFirstScreen:u,delayAll:e.delayAll,version:o.version,reportDesc:e.reportDesc,url:window.location.href.substring(0,200),ignoredImages:e.ignoredImages,device:e.device,globalIndex:e.globalIndex,domChangeList:e.domChangeList,navigationTagChangeMap:i.navigationTagChangeMap,reportTimeFrom:t.reportTimeFrom,errorMessages:e.errorMessages,stableTime:e.stableTime,tryReportTime:o.getTime()-e.forcedNavStartTimeStamp}}();if(e.delayReport)var s=setTimeout(function(){n()&&(a.reportTime=o.getTime()-e.forcedNavStartTimeStamp,e.onReport(a),e.hasReported=!0),clearTimeout(s)},e.delayReport);else n()&&(a.reportTime=o.getTime()-e.forcedNavStartTimeStamp,e.onReport(a),e.hasReported=!0)}}function r(t){var r=t&&t.recordFirstScreen;if(e.delayAll>=e.abortTimeWhenDelay)e.abortByDelayTimeout=!0;else{var i=o.getTime(),a=function(t){var r=n.innerHeight,i=n.innerWidth;e.device.screenWidth||(e.device.screenWidth=i);e.device.screenHeight||(e.device.screenHeight=r);var a=t&&t.searchInFirstScreen,s=o.queryAllNode(e.ignoreTag),c=s.nextNode(),m=[],u=function(e){var t=o.parseUrl(e).protocol;t&&0===t.indexOf("http")&&-1===m.indexOf(e)&&m.push(e)};for(;c;){var f=o.getImgSrcFromDom(c,e.img);if(f){if(a)if(o.recordCurrentPos(c,e),o.isInFirstScreen(c))u(f);else{var l=o.currentPos;e.ignoredImages.push({src:f,screenHeight:r,screenWidth:i,scrollTop:l.scrollTop,top:l.top,bottom:l.bottom,vertical:l.scrollTop+l.top<=r,left:l.left,right:l.right,horizontal:l.right>=0&&l.left<=i})}else u(f);c=s.nextNode()}else c=s.nextNode()}return o.formateUrlList(m,"add")}({searchInFirstScreen:r}),s=o.getTime();e.delayAll+=s-i;var c={type:"dot",isImgInFirstScreen:r||!1,isFromInternal:!(!t||!t.isFromInternal),firstScreenImages:a,firstScreenImagesLength:a.length,dotIndex:e.dotList.length,dotTimeStamp:i,dotTime:i-e.forcedNavStartTimeStamp,delay:s-i,finished:!1,isTargetDot:t&&t.isTargetDot||!1,firstScreenTimeStamp:-1,reportTimeFrom:"",firstScreenImagesDetail:[],maxErrorTime:"unkown"};if(e.dotList.push(c),a.length){var m=0,u=function(e){++m===a.length&&(c.finished=!0)},f=function(t){var r=o.getTime();return{requestTime:t.requestTime,onloadTimeStamp:r,onloadTime:r-e.forcedNavStartTimeStamp,maxErrorTime:t.maxErrorTime,type:t.type}};o.forEach(a,function(t){if(e.imgMap[t])u();else{var r=new Image;r.src=t;var n=o.getTime();if(r.complete){if(!e.imgMap[t]){var i=e.dotList[c.dotIndex-1]?c.dotTimeStamp-e.dotList[c.dotIndex-1].dotTimeStamp:0;e.imgMap[t]=f({requestTime:n-e.forcedNavStartTimeStamp,maxErrorTime:i,type:"complete"})}u()}else r.onload=r.onerror=function(){e.imgMap[t]||(e.imgMap[t]=f({requestTime:n-e.forcedNavStartTimeStamp,maxErrorTime:0,type:"onload"})),u()}}})}else c.finished=!0}}function s(){if(!e.hasStoppedObserve){e.hasStoppedObserve=!0,e.stopCatchingRequest=!0,e.stableTime=o.getTime()-e.forcedNavStartTimeStamp,o.stopWatchDomUpdate(e),o.stopCatchingRequest(e),o.stopWatchingError(e),clearInterval(e.intervalDotTimer),r({recordFirstScreen:!0});var n=function(){e.dotList.sort(function(e,t){return e.dotTimeStamp<t.dotTimeStamp?1:-1});var t,r=e.dotList.slice(1),n=e.dotList[0].firstScreenImages,o=function(e,t){for(var r=0,n=t.length;r<n;r++)if(-1===e.indexOf(t[r]))return!1;return!0};if(n.length>0){for(var i=0,a=r.length;i<a;i++)o(r[i].firstScreenImages,n)&&(t=r[i]);t||(t=e.dotList[0])}else(t=e.dotList[0]).firstScreenTimeStamp=performance.timing.domComplete,t.firstScreenTime=performance.timing.domComplete-e.forcedNavStartTimeStamp;return t}(e.dotList);e.onStableStatusFound(n),n.isTargetDot=!0,e.onAllXhrResolved&&e.onAllXhrResolved(n.dotTimeStamp);var i=null,a=function(){n.finished&&(!function(r){var n=e.dotList[0],i=function(){for(var t=[],r=n.firstScreenImages,o=0,i=r.length;o<i;o++){var a=r[o],s=e.imgMap[a];s&&t.push({src:a,type:s.type,maxErrorTime:s.maxErrorTime,requestTime:s.requestTime,onloadTimeStamp:s.onloadTimeStamp,onloadTime:s.onloadTime,from:"dot"})}return t.sort(function(e,t){return t.onloadTime-e.onloadTime}),t};0===r.firstScreenImages.length?/^hand/.test(e.reportDesc)?(r.firstScreenTimeStamp=e.handExcuteTime,r.reportTimeFrom="dot-hand-from-force",r.firstScreenImagesDetail=i(),t(r)):o.getDomReadyTime(e,function(e,n){r.firstScreenTimeStamp=e,r.reportTimeFrom=n,r.firstScreenImagesDetail=i(),t(r)}):function(a){var s=function(t){var r=[];return o.forEach(t,function(t){r.push(e.imgMap[t])}),r.sort(function(e,t){return e.onloadTimeStamp<t.onloadTimeStamp?1:-1}),r[0]}(n.firstScreenImages);r.firstScreenTimeStamp=s.onloadTimeStamp,r.maxErrorTime=s.maxErrorTime,r.reportTimeFrom=a,r.firstScreenImagesDetail=i(),t(r)}("dot-img-from-onload")}(n),clearInterval(i))};i=setInterval(a,1e3),a()}}return e.globalIndex="dot-"+a++,o.watchDomUpdate(e),{mergeUserConfig:function(t){o.mergeUserConfig(e,t)},testStaticPage:function(){o.testStaticPage(function(){s()},e)},observeDomChange:function(){var t,n=function(n){var i=o.getTime();t&&i-t<e.dotDelay||(t=i,r(n))};e.intervalDotTimer=setInterval(function(){n({isFromInternal:!0})},e.dotDelay),n()},overrideRequest:function(){o.overrideRequest(e,function(){s()})},recordDomInfo:r,onStopObserving:s,watchError:function(){o.watchError(e)},global:e}}e.exports={auto:function(e){var t=function(){var t=s();return t.global.reportDesc="auto-dot",t.watchError(),t.mergeUserConfig(e),t.testStaticPage(),t.observeDomChange(),t.overrideRequest(),t},r=t(),n=r.global;return o.onNavigationStartChange(r.global,function(r){n.abortReport=!0,n.onNavigationStartChange(r),e.forcedNavStartTimeStamp=r.timeStamp,n=t().global}),r.global},hand:function(e){var t=s();t.global.reportDesc="hand-dot",t.global.handExcuteTime=o.getTime(),t.mergeUserConfig(e),t.onStopObserving()}}},function(e,t,r){var n=!!document.querySelector,o=window.performance&&window.performance.timing,i=window.performance&&window.performance.getEntries&&"function"==typeof window.performance.getEntries&&window.performance.getEntries()instanceof Array,a=function(e,t){return function(r){if(n&&o){var a="perf";if(r&&r.type&&(a=r.type),"auto"===a||"perf"===a||"dot"===a){var s=n&&i;"auto"===a?s?e(r):t(r):"perf"===a?s?e(r):console.log('[auto-compute-first-screen-time] current browser doesn\'t support performance API. So forced type "perf" is ignored.'):"dot"===a&&t(r)}else!function(e){console&&"function"==typeof console.error&&console.error(e)}('[auto-compute-first-screen-time] error message: config option of "type" should be one of values as below: "auto/perf/dot"')}else!function(e){console&&"function"==typeof console.log&&console.log(e)}("[auto-compute-first-screen-time] current browser doesn't support performance.timing. Page performance computation failed.")}},s=r(4),c=r(2);e.exports=a(s.auto,c.auto),e.exports.report=a(s.hand,c.hand)},function(e,t,r){var n=window,o=(n.document,r(1)),i=r(0),a=0;function s(){var e=o.mergeGlobal(o.initGlobal(),{hasStableFound:!1});function t(){if(!e.hasStableFound){o.stopWatchDomUpdate(e),o.stopCatchingRequest(e),o.stopWatchingError(e),e.hasStableFound=!0,e.stopCatchingRequest=!0,e.stableTime=o.getTime()-e.forcedNavStartTimeStamp;var t=s();e.onStableStatusFound(t)}}function r(t){var r=function(){return!e.hasReported&&!e.abortReport};if(t.ignoredImages=e.ignoredImages,t.device=e.device,t.success=!0,t.tryReportTime=o.getTime()-e.forcedNavStartTimeStamp,t.errorMessages=e.errorMessages,t.network=o.generateNetwork(),e.delayReport)var n=setTimeout(function(){r()&&(e.hasReported=!0,t.reportTime=o.getTime()-e.forcedNavStartTimeStamp,e.onReport(t)),clearTimeout(n)},e.delayReport);else r()&&(t.reportTime=o.getTime()-e.forcedNavStartTimeStamp,e.onReport(t))}function s(){var t=o.getTime(),a=function(){var t=n.innerHeight,r=n.innerWidth;e.device.screenHeight=t,e.device.screenWidth=r;var i=o.queryAllNode(e.ignoreTag),a=i.nextNode(),s=[],c=function(e){var t=o.parseUrl(e).protocol;t&&0===t.indexOf("http")&&-1===s.indexOf(e)&&s.push(e)};for(;a;){var m=o.getImgSrcFromDom(a,e.img);if(m){if(o.recordCurrentPos(a,e),o.isInFirstScreen(a))c(m);else{var u=o.currentPos;e.ignoredImages.push({src:m,screenHeight:t,screenWidth:r,scrollTop:u.scrollTop,top:u.top,bottom:u.bottom,vertical:u.scrollTop+u.top<=t,left:u.left,right:u.right,horizontal:u.right>=0&&u.left<=r})}a=i.nextNode()}else a=i.nextNode()}return o.formateUrlList(s,"add")}(),s=o.getTime(),c={type:"perf",isStaticPage:!e.isFirstRequestSent&&(!!/auto/.test(e.reportDesc)||"unknown"),firstScreenImages:[],firstScreenImagesLength:0,firstScreenImagesDetail:[],requests:o.transRequestDetails2Arr(e),delayAll:s-t,delayFirstScreen:s-t,firstScreenTime:-1,firstScreenTimeStamp:-1,maxErrorTime:0,navigationStartTimeStamp:e.forcedNavStartTimeStamp,navigationStartTime:e.forcedNavStartTimeStamp-e._originalNavStart,isOriginalNavStart:e.forcedNavStartTimeStamp===e._originalNavStart,version:o.version,recordTime:o.getTime()-e.forcedNavStartTimeStamp,reportDesc:e.reportDesc,url:window.location.href.substring(0,200),globalIndex:e.globalIndex,domChangeList:e.domChangeList,navigationTagChangeMap:i.navigationTagChangeMap,reportTimeFrom:e.reportTimeFrom,errorMessages:[],network:[],stableTime:e.stableTime},m=function(){/^hand/.test(e.reportDesc)?(c.firstScreenTimeStamp=e.handExcuteTime,c.firstScreenTime=e.handExcuteTime-e._originalNavStart,c.reportTimeFrom="perf-hand-from-force",r(c)):o.getDomReadyTime(e,function(t,n){c.firstScreenTimeStamp=t,c.firstScreenTime=t-e._originalNavStart,c.reportTimeFrom=n,r(c)})};return c.firstScreenImages=a,c.firstScreenImagesLength=a.length,a.length?o.cycleGettingPerformaceTime(e,a,function(e){c.firstScreenTime=e.firstScreenTime,c.firstScreenTimeStamp=e.firstScreenTimeStamp,c.firstScreenImagesDetail=e.firstScreenImagesDetail,c.reportTimeFrom="perf-img-from-performance",r(c)},function(){m()}):m(),c}return e.globalIndex="perf-"+a++,o.watchDomUpdate(e),{mergeUserConfig:function(t){o.mergeUserConfig(e,t)},testStaticPage:function(){o.testStaticPage(function(){t()},e)},overrideRequest:function(){o.overrideRequest(e,function(){t()})},recordFirstScreenInfo:s,watchError:function(){o.watchError(e)},global:e}}e.exports={auto:function(e){var t=function(){var t=s();return t.global.reportDesc="auto-perf",t.watchError(),t.mergeUserConfig(e),t.testStaticPage(),t.overrideRequest(),t}(),n=t.global;return o.onNavigationStartChange(t.global,function(t){n.abortReport=!0,n.onNavigationStartChange(t),e.forcedNavStartTimeStamp=t.timeStamp,n=r(2).auto(e)}),t.global},hand:function(e){var t=s();t.global.reportDesc="hand-perf",t.global.handExcuteTime=o.getTime(),t.mergeUserConfig(e),t.recordFirstScreenInfo("perf-hand")}}}])});