@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 1.62 kB
JavaScript
import*as Common from"../../core/common/common.js";export function parseSourcePositionsFromErrorStack(r,n){if(!/^[\w.]*Error\b/.test(n))return null;const e=r.debuggerModel(),t=r.target().inspectedURL(),o=n.split("\n"),i=[];for(const r of o){const n=/^\s*at\s/.test(r);if(!n&&i.length&&i[i.length-1].link)return null;if(!n){i.push({line:r});continue}let o=-1,s=-1;const l=/\([^\)\(]+:\d+:\d+\)/g,u=/\([^\)\(]+\)/g;let c,m=null;for(;c=l.exec(r);)m=c;if(!m)for(;c=u.exec(r);)m=c;m&&(o=m.index,s=m.index+m[0].length-1);const a=-1!==o;let f=a?o+1:r.indexOf("at")+3;a||r.indexOf("async ")!==f||(f+=6);const d=a?s:r.length,p=r.substring(f,d),h=Common.ParsedURL.ParsedURL.splitLineAndColumn(p);if("<anonymous>"===h.url){i.push({line:r});continue}let g=parseOrScriptMatch(e,h.url);if(!g&&Common.ParsedURL.ParsedURL.isRelativeURL(h.url)&&(g=parseOrScriptMatch(e,Common.ParsedURL.ParsedURL.completeURL(t,h.url))),!g)return null;i.push({line:r,link:{url:g,prefix:r.substring(0,f),suffix:r.substring(d),enclosedInBraces:a,lineNumber:h.lineNumber,columnNumber:h.columnNumber}})}return i}function parseOrScriptMatch(r,n){if(!n)return null;if(Common.ParsedURL.ParsedURL.isValidUrlString(n))return n;if(r.scriptsForSourceURL(n).length)return n;const e=new URL(n,"file://");return r.scriptsForSourceURL(e.href).length?e.href:null}export function augmentErrorStackWithScriptIds(r,n){for(const e of r){const r=n.callFrames.find((r=>framesMatch(e,r)));r&&e.link&&(e.link.scriptId=r.scriptId)}}function framesMatch(r,n){if(!r.link)return!1;const{url:e,lineNumber:t,columnNumber:o}=r.link;return e===n.url&&t===n.lineNumber&&o===n.columnNumber}