UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

113 lines (112 loc) 4.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const spring4js_nodejs_1 = require("spring4js-nodejs"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const path_1 = tslib_1.__importDefault(require("path")); const moment_1 = tslib_1.__importDefault(require("moment")); const random_1 = tslib_1.__importDefault(require("random")); const download_1 = tslib_1.__importDefault(require("download")); const tunnel_1 = tslib_1.__importDefault(require("tunnel")); let MpRemoteDebugService = class MpRemoteDebugService { constructor() { } async start() { console.log('start'); } async requestBuild(projectId) { const { proName } = await this.projectService.getProjectById(projectId); const config = await this.getMpConfig(projectId); const releaseId = `devTool${moment_1.default().format('YYYYMMDDHHmmss')}${random_1.default.int(101, 999)}`; const params = Object.assign({ diyAppName: proName, releaseId }, config); const result = await this.requestService.get('https://baymax.qima-inc.com/api/mp-manage/devtool/request-build', { params }); return releaseId; } async getBuildTaskByReleaseId(releaseId) { const result = await this.requestService.get('https://baymax.qima-inc.com/api/mp-manage/devtool/build-detail', { params: { releaseId } }); return result.data; } async getBuildTaskList(buildTaskQueryDTO) { const { projectId } = buildTaskQueryDTO; const { proName } = await this.projectService.getProjectById(projectId); const result = await this.requestService.get('https://baymax.qima-inc.com/api/mp-manage/devtool/build-list', { params: Object.assign({ appName: proName }, buildTaskQueryDTO) }); return result.data; } async getLog(releaseId, type) { const result = await this.requestService.get('https://baymax.qima-inc.com/api/mp-manage/devtool/download', { params: { releaseId, type } }); return result; } async downloadAndDebug(releaseId) { let dataDir = this.configService.getDataDir(); let dir = path_1.default.resolve(dataDir, 'mp-remote-debug'); await fs_extra_1.default.remove(dir); const url = `https://baymax.qima-inc.com/api/mp-manage/devtool/download?releaseId=${releaseId}&type=artifact`; let useProxy = this.configService.isUseProxy(); const options = { extract: true, strip: 1, }; if (useProxy) { let host = this.configService.getProxyHost(); let port = this.configService.getProxyPort(); options.agent = { https: tunnel_1.default.httpsOverHttp({ proxy: { host, port }, rejectUnauthorized: false, }) }; } ; await download_1.default(url, dir, options); this.executeService.promiseExecFile(`/Applications/wechatwebdevtools.app/Contents/MacOS/cli`, ['preview']); return dir; } async getMpConfig(projectId) { let dataDir = this.configService.getDataDir(); const { proName } = await this.projectService.getProjectById(projectId); let mpConfigFIle = path_1.default.resolve(dataDir, `mp-remote-debug-config.${proName}.json`); let exists = await fs_extra_1.default.pathExists(mpConfigFIle); if (exists) { const config = await fs_extra_1.default.readJson(mpConfigFIle); return config; } return {}; } async saveMpConfig(projectId, config) { let dataDir = this.configService.getDataDir(); const { proName } = await this.projectService.getProjectById(projectId); let mpConfigFile = path_1.default.resolve(dataDir, `mp-remote-debug-config.${proName}.json`); await fs_extra_1.default.writeJson(mpConfigFile, config, { spaces: 2 }); } }; tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], MpRemoteDebugService.prototype, "configService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], MpRemoteDebugService.prototype, "projectService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], MpRemoteDebugService.prototype, "requestService", void 0); tslib_1.__decorate([ spring4js_nodejs_1.Resource() ], MpRemoteDebugService.prototype, "executeService", void 0); MpRemoteDebugService = tslib_1.__decorate([ spring4js_nodejs_1.Service() ], MpRemoteDebugService); exports.default = MpRemoteDebugService;