youzanyun-devtool-worker
Version:
- web - ws - proxy
113 lines (112 loc) • 4.78 kB
JavaScript
;
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;