-
Notifications
You must be signed in to change notification settings - Fork 20
/
profileWorker.min.js
1 lines (1 loc) · 3.68 KB
/
profileWorker.min.js
1
function ScriptProfileNode(a,b){var c=dataTable[a]||["root",0,""];this.id=util.getUniqueId(),this.functionName=c[0],this.lineNumber=c[1],this.url=c[2],this.callUID=a,this.startTime=b,this.numberOfCalls=1,this.visible=!0,this.children=[]}function ScriptProfile(a){this.title=a,this.uid=store.length+1,this.head=new ScriptProfileNode(this.uid,"(root)","",0,Date.now()),this.active=!0,this.depth=0}function getActiveProfiles(){return util.filter(store,function(a){return!!a.active})}function getProfileByTitle(a){var b;return util.every(store,function(c){return c.active&&c.title===a?(b=c,!1):!0}),b}var dataTable={},store=[],util={};util.noop=function(){},util.getUniqueId=function(){var a=0;return function(){return++a}}(),util.every=function(){return Array.prototype.every?function(a,b,c){return(a||[]).every(b,c)}:function(a,b,c){a=a||[];var d=0,e=a.length;if(e)do if(!b.call(c||a,a[d],d,a))return!1;while(++d<e);return!0}}(),util.filter=function(){return Array.prototype.filter?function(a,b,c){return(a||[]).filter(b,c)}:function(a,b,c){a=a||[];var d=0,e=a.length,f=[];if(e)do b.call(c||a,a[d],d,a)&&f.push(a[d]);while(++d<e);return f}}(),util.forEach=function(){return Array.prototype.forEach?function(a,b,c){(a||[]).forEach(b,c)}:function(a,b,c){a=a||[];var d=0,e=a.length;if(e)do b.call(c||a,a[d],d,a);while(++d<e)}}(),util.forEachProperty=function(a,b,c){var d;for(d in a)b.call(c||a,a[d],d,a)},util.extend=function(a,b){return util.forEachProperty(b,function(b,c){a[c]=b}),a},util.asyncForEach=function(a,b,c,d){a=[].concat(a||[]),util.asyncIteration(a,b||util.noop,c||util.noop,d)},util.asyncIteration=function(a,b,c,d){a.length>0?setTimeout(function(){b.call(d||a,a.shift(),function(){util.asyncIteration(a,b,c,d)})},4):c.call(d)},ScriptProfileNode.prototype.finish=function(a){if(this.children.length>0){var b,c;util.asyncForEach(this.children,function(a,d){a.finish(function(){var e=a.totalTime+a.startTime;b=Math.min(b||a.startTime,a.startTime),c=Math.max(c||e,e),d()})},function(){var d=this.totalTime?this.totalTime+this.startTime:Date.now();this.totalTime=Math.max(c,d)-Math.min(b,this.startTime),this.selfTime=this.totalTime-(c-b),a()},this)}else this.totalTime||(this.totalTime=Date.now()-this.startTime),this.selfTime=this.totalTime,a()},ScriptProfileNode.prototype.getNodeByCallerId=function(a){var b;return util.every(this.children,function(c){return c.callUID===a?(b=c,!1):!0}),b},ScriptProfileNode.prototype.getActiveNode=function(){var a=this.children.length;return a>0?this.children[a-1]:null},ScriptProfileNode.prototype.begin=function(a,b){var c=this.getNodeByCallerId(a);c?++c.numberOfCalls:(c=new ScriptProfileNode(a,b),this.children.push(c))},ScriptProfileNode.prototype.end=function(a,b){var c=this.getNodeByCallerId(a);c&&(c.totalTime=b-c.startTime)},ScriptProfile.prototype.finish=function(a){delete this.active,delete this.depth,this.head.finish(a)},ScriptProfile.prototype.getActiveNode=function(){for(var a,b=0,c=this.head;this.depth>++b&&(a=c.getActiveNode());)c=a;return c||this.head},ScriptProfile.prototype.begin=function(a,b,c){c&&(this.depth=0),this.depth++;var d=this.getActiveNode();d.begin(a,b)},ScriptProfile.prototype.end=function(a,b){var c=this.getActiveNode();c.end(a,b),this.depth--},onmessage=function(a){var b=a.data;switch(b.type){case"begin":util.forEach(getActiveProfiles(),function(a){a.begin(b.callId,b.time,b.reset)});break;case"end":util.forEach(getActiveProfiles(),function(a){a.end(b.callId,b.time)});break;case"start":store.push(new ScriptProfile(b.title));break;case"finish":var c=getProfileByTitle(b.title);c&&c.finish(function(){postMessage({type:"report",report:c})});break;case"load":util.forEachProperty(b.table,function(a){a.push(b.file)}),util.extend(dataTable,b.table);break;case"clear":store=[]}};