@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 1.44 kB
JavaScript
import*as Common from"../../core/common/common.js";import*as SDK from"../../core/sdk/sdk.js";import{NetworkLog}from"./NetworkLog.js";const modelToEventListeners=new WeakMap;let instance=null;export class LogManager{constructor(){SDK.TargetManager.TargetManager.instance().observeModels(SDK.LogModel.LogModel,this)}static instance({forceNew:e}={forceNew:!1}){return instance&&!e||(instance=new LogManager),instance}modelAdded(e){const t=[];t.push(e.addEventListener(SDK.LogModel.Events.EntryAdded,this.logEntryAdded,this)),modelToEventListeners.set(e,t)}modelRemoved(e){const t=modelToEventListeners.get(e);t&&Common.EventTarget.removeEventListeners(t)}logEntryAdded(e){const{logModel:t,entry:o}=e.data,s=t.target(),r={url:o.url,line:o.lineNumber,parameters:[o.text,...o.args??[]],stackTrace:o.stackTrace,timestamp:o.timestamp,workerId:o.workerId,category:o.category,affectedResources:o.networkRequestId?{requestId:o.networkRequestId}:void 0},n=new SDK.ConsoleModel.ConsoleMessage(s.model(SDK.RuntimeModel.RuntimeModel),o.source,o.level,o.text,r);o.networkRequestId&&NetworkLog.instance().associateConsoleMessageWithRequest(n,o.networkRequestId);const a=s.model(SDK.ConsoleModel.ConsoleModel);if("worker"===n.source){const e=n.workerId||"";if(SDK.TargetManager.TargetManager.instance().targetById(e))return;window.setTimeout((()=>{SDK.TargetManager.TargetManager.instance().targetById(e)||a?.addMessage(n)}),1e3)}else a?.addMessage(n)}}