youzanyun-devtool-worker
Version:
- web - ws - proxy
73 lines (72 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const url_1 = require("url");
const axios_1 = tslib_1.__importDefault(require("axios"));
const spring4js_nodejs_1 = require("spring4js-nodejs");
let ToolWindowService = class ToolWindowService {
constructor() {
this.stateMap = new Map();
this._toolWindowEvent = new spring4js_nodejs_1.Emitter();
this.onToolWindowEvent = this._toolWindowEvent.registerEvent;
this._devtoolEvent = new spring4js_nodejs_1.Emitter();
this.onDevtoolEvent = this._devtoolEvent.registerEvent;
}
async getToolWindowState(workbenchId) {
let state = this.stateMap.get(workbenchId);
if (!state) {
state = {
workbenchId,
show: false
};
this.stateMap.set(workbenchId, state);
}
return state;
}
async openToolWindow(workbenchId) {
let state = await this.getToolWindowState(workbenchId);
state.show = true;
this._toolWindowEvent.fire(state);
}
async closeToolWindow(workbenchId) {
let state = await this.getToolWindowState(workbenchId);
state.show = false;
this._toolWindowEvent.fire(state);
}
async openDevtool(workbenchId, url) {
this._devtoolEvent.fire({
workbenchId,
isOpen: true,
url
});
}
async closeDevtool(workbenchId) {
this._devtoolEvent.fire({
workbenchId,
isOpen: false,
});
}
async getDevtoolUrl(webviewUrl) {
let webviewUrlObj = new url_1.URL(webviewUrl);
let remoteDebugPort = this.configService.getRenderRemoteDebugPort();
let res = await axios_1.default.get(`http://127.0.0.1:${remoteDebugPort}/json/list?t=${Date.now()}`);
let pageList = res.data;
let devtoolUrl;
for (let page of pageList) {
let { devtoolsFrontendUrl, parentId, url, webSocketDebuggerUrl } = page;
let currentUrlObj = new url_1.URL(url);
if (parentId && webviewUrlObj.pathname == currentUrlObj.pathname) {
devtoolUrl = `http://127.0.0.1:${remoteDebugPort}${devtoolsFrontendUrl}`;
break;
}
}
return devtoolUrl;
}
};
tslib_1.__decorate([
spring4js_nodejs_1.Resource()
], ToolWindowService.prototype, "configService", void 0);
ToolWindowService = tslib_1.__decorate([
spring4js_nodejs_1.Service()
], ToolWindowService);
exports.default = ToolWindowService;