OverviewFilesCommitsIssuesDocsReleasesPeers

holepunchto-deps / @holepunchto / keet-core / lib / api / v1 / inspector.js

1 lines · javascript ref:
const{Console:e,Server:s}=require("bare-inspector"),{once:o}=require("bare-events"),r=require("safety-catch");module.exports=class{constructor({port:e=0,host:s="127.0.0.1"}={}){this.port=e,this.host=s,this._server=null,this._url=null,this._bareConsole=null,this._oldConsole=global.console}get key(){return this._url}_overrideConsole(){this._bareConsole||(this._bareConsole=new e);const s={};for(const e of Object.keys(this._bareConsole))s[e]=(...s)=>{this._bareConsole[e](...s),this._oldConsole[e](...s)};global.console=s}_resetConsole(){global.console=this._oldConsole}async enable(){this._server=new s(this.port,this.host),this._server._server.on("connection",e=>{e.on("error",r)}),this._server.on("close",()=>{this._resetConsole()}),await o(this._server,"listening"),this._overrideConsole();const{port:e}=this._server.address();return this._url=`devtools://devtools/bundled/js_app.html?ws=127.0.0.1:${e}`,console.log(`Keet core inspector url: ${this._url}`),this._url}async disable(){this._server&&(await new Promise(e=>{this._server.close(e)}),this._server=null,this._resetConsole(),this._bareConsole=null,this._url=null)}};