@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 3.27 kB
JavaScript
import*as Host from"../../core/host/host.js";import*as i18n from"../../core/i18n/i18n.js";import*as Components from"../../ui/legacy/components/utils/utils.js";import*as SDK from"../../core/sdk/sdk.js";const UIStrings={main:"Main",nodejsS:"Node.js: {PH1}"},str_=i18n.i18n.registerUIStrings("entrypoints/node_app/NodeMain.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);let nodeMainImplInstance;export class NodeMainImpl{static instance(e={forceNew:null}){const{forceNew:t}=e;return nodeMainImplInstance&&!t||(nodeMainImplInstance=new NodeMainImpl),nodeMainImplInstance}async run(){Host.userMetrics.actionTaken(Host.UserMetrics.Action.ConnectToNodeJSFromFrontend),SDK.Connections.initMainConnection((async()=>{SDK.TargetManager.TargetManager.instance().createTarget("main",i18nString(UIStrings.main),SDK.Target.Type.Browser,null).setInspectedURL("Node.js")}),Components.TargetDetachedDialog.TargetDetachedDialog.webSocketConnectionLost)}}export class NodeChildTargetManager extends SDK.SDKModel.SDKModel{#e;#t;#n;#s;#o;constructor(e){super(e),this.#e=e.targetManager(),this.#t=e,this.#n=e.targetAgent(),this.#s=new Map,this.#o=new Map,e.registerTargetDispatcher(this),this.#n.invoke_setDiscoverTargets({discover:!0}),Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(Host.InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged,this.#i,this),Host.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!1),Host.InspectorFrontendHost.InspectorFrontendHostInstance.setDevicesUpdatesEnabled(!0)}#i({data:e}){const t=[];for(const n of e.networkDiscoveryConfig){const e=n.split(":"),s=parseInt(e[1],10);e[0]&&s&&t.push({host:e[0],port:s})}this.#n.invoke_setRemoteLocations({locations:t})}dispose(){Host.InspectorFrontendHost.InspectorFrontendHostInstance.events.removeEventListener(Host.InspectorFrontendHostAPI.Events.DevicesDiscoveryConfigChanged,this.#i,this);for(const e of this.#s.keys())this.detachedFromTarget({sessionId:e})}targetCreated({targetInfo:e}){"node"!==e.type||e.attached||this.#n.invoke_attachToTarget({targetId:e.targetId,flatten:!1})}targetInfoChanged(e){}targetDestroyed(e){}attachedToTarget({sessionId:e,targetInfo:t}){const n=i18nString(UIStrings.nodejsS,{PH1:t.url}),s=new NodeConnection(this.#n,e);this.#o.set(e,s);const o=this.#e.createTarget(t.targetId,n,SDK.Target.Type.Node,this.#t,void 0,void 0,s);this.#s.set(e,o),o.runtimeAgent().invoke_runIfWaitingForDebugger()}detachedFromTarget({sessionId:e}){const t=this.#s.get(e);t&&t.dispose("target terminated"),this.#s.delete(e),this.#o.delete(e)}receivedMessageFromTarget({sessionId:e,message:t}){const n=this.#o.get(e),s=n?n.onMessage:null;s&&s.call(null,t)}targetCrashed(e){}}export class NodeConnection{#n;#a;onMessage;#r;constructor(e,t){this.#n=e,this.#a=t,this.onMessage=null,this.#r=null}setOnMessage(e){this.onMessage=e}setOnDisconnect(e){this.#r=e}sendRawMessage(e){this.#n.invoke_sendMessageToTarget({message:e,sessionId:this.#a})}async disconnect(){this.#r&&this.#r.call(null,"force disconnect"),this.#r=null,this.onMessage=null,await this.#n.invoke_detachFromTarget({sessionId:this.#a})}}SDK.SDKModel.SDKModel.register(NodeChildTargetManager,{capabilities:SDK.Target.Capability.Target,autostart:!0});