UNPKG

youzanyun-devtool-worker

Version:

180 lines (179 loc) 7.53 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 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${(0, moment_1.default)().format('YYYYMMDDHHmmss')}${Math.floor(Math.random() * 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.getYouzanyunWokrspace(); let dir = path_1.default.resolve(dataDir, 'mp-remote-debug'); const autoStartWxDevTool = this.configService.getConfig('autoStartWxDevTool'); const wxDevToolPath = this.configService.getConfig('wxDevToolPath'); if (autoStartWxDevTool && wxDevToolPath) { console.log('close'); try { await this.executeService.promiseExecFile(wxDevToolPath, ['close', '--project', dir]); } catch (e) { console.error('......', e); } console.log('close down'); } 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 (0, download_1.default)(url, dir, options); const extJsonPath = path_1.default.resolve(dir, 'ext.json'); const extJson = await fs_extra_1.default.readJSON(extJsonPath); delete extJson.plugins; await fs_extra_1.default.writeJSON(extJsonPath, extJson); await this.removeComponentInPage(dir, [ { jsonFile: 'packages/goods/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/home/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/levelcenter/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/salesman/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/shop/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/short-video/single-video/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/ump/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, { jsonFile: 'packages/usercenter/components/showcase/video-plugin/index.json', componentName: 'plugin-video' }, ]); if (autoStartWxDevTool && wxDevToolPath) { console.log('preview'); try { await this.executeService.promiseExecFile(wxDevToolPath, ['open', '--project', dir]); } catch (e) { console.error('++++++', e); } console.log('preview down'); } return dir; } async removeComponentInPage(dir, taskList) { for (let task of taskList) { const jsonPath = path_1.default.resolve(dir, task.jsonFile); const json = await fs_extra_1.default.readJSON(jsonPath); const components = json.usingComponents; delete components[task.componentName]; await fs_extra_1.default.writeJSON(jsonPath, json); } } 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([ (0, spring4js_nodejs_1.Resource)() ], MpRemoteDebugService.prototype, "configService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], MpRemoteDebugService.prototype, "projectService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], MpRemoteDebugService.prototype, "requestService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], MpRemoteDebugService.prototype, "executeService", void 0); MpRemoteDebugService = tslib_1.__decorate([ (0, spring4js_nodejs_1.Service)() ], MpRemoteDebugService); exports.default = MpRemoteDebugService;