UNPKG

youzanyun-devtool-worker

Version:

165 lines (164 loc) 7.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const path_1 = tslib_1.__importDefault(require("path")); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const download_1 = tslib_1.__importDefault(require("download")); const AppHandler_1 = tslib_1.__importDefault(require("./AppHandler")); const spring4js_nodejs_1 = require("spring4js-nodejs"); let MiniProgramService = class MiniProgramService { constructor() { this.serverGuideInfoMap = { 'wsc-mp': { name: 'wsc-mp', version: '1.3.8', url: 'https://file.yzcdn.cn/upload_files/yz-file/2023/02/17/Fv24qEdaonswR2tpRojcSU4uBtPX.gz', }, 'retail-mp': { name: 'retail-mp', version: '1.3.8', url: 'https://file.yzcdn.cn/upload_files/yz-file/2023/02/17/Fi7LHGekJc_be25g-tXZVc4-fW_x.gz', }, 'beauty-mp': { name: 'beauty-mp', version: '0.0.1', url: 'http://file.yzcdn.cn/upload_files/yz-file/2020/04/01/FpXkipG46X4Fnt5myk7o6ycTC-8P.gz', }, }; this.appCustomHandlerCache = {}; this.categoryHandlerCache = {}; this.pageHandlerCache = {}; } async start() { this.guideConfigDir = this.configService.getMpGuideConfigDir(); this.guideLocalDevelop = this.configService.isMpGuideLocalDevelop(); let packageJson = await fs_extra_1.default.readJson(path_1.default.resolve(this.configService.getWorkerDir(), 'package.json')); this.devtoolVersion = packageJson.version; await fs_extra_1.default.ensureDir(this.guideConfigDir); try { const [wscMpTplInfo = { frameworkVersion: '', url: '' }, retailMpTplInfo = { frameworkVersion: '', url: '' },] = await Promise.all([ await this.customApiService.getRemoteWscTemplateConfig(), await this.customApiService.getRemoteRetailTemplateConfig(), ]); this.serverGuideInfoMap = Object.assign(Object.assign({}, this.serverGuideInfoMap), { 'wsc-mp': { name: 'wsc-mp', version: wscMpTplInfo.frameworkVersion || this.serverGuideInfoMap['wsc-mp'].version, url: wscMpTplInfo.url || this.serverGuideInfoMap['wsc-mp'].url, }, 'retail-mp': { name: 'retail-mp', version: retailMpTplInfo.frameworkVersion || this.serverGuideInfoMap['retail-mp'].version, url: retailMpTplInfo.url || this.serverGuideInfoMap['retail-mp'].url, } }); } catch (error) { console.log('获取模板异常', error); } } async getAppCustomHandler({ projectId, youzanMpName, isDesignPlatform = false, }) { let cacheKey = `${projectId}-${youzanMpName}`; let handler = this.appCustomHandlerCache[cacheKey]; if (handler) { return handler; } console.log('guideLocalDevelop', this.guideLocalDevelop); if (!this.guideLocalDevelop) { await this.checkGuideConfigUpdated(youzanMpName); } let project = await this.projectService.getProjectById(projectId); handler = new AppHandler_1.default({ isDesignPlatform, projectId, projectRootDir: project.proPath, projectName: project.proName, youzanMpName, guideConfigDir: path_1.default.resolve(this.guideConfigDir, youzanMpName), devtoolVersion: this.devtoolVersion, }); await handler.start(); if (!this.guideLocalDevelop) { this.appCustomHandlerCache[cacheKey] = handler; } return handler; } async getCategoryHandler({ projectId, youzanMpName, categoryName }, isDesignPlatform) { let cacheKey = `${projectId}-${youzanMpName}-${categoryName}`; let categoryHandler = this.categoryHandlerCache[cacheKey]; if (categoryHandler) { return categoryHandler; } let appHandler = await this.getAppCustomHandler({ projectId, youzanMpName, isDesignPlatform, }); categoryHandler = await appHandler.getCategoryHandler({ categoryName }); if (!this.guideLocalDevelop) { this.categoryHandlerCache[cacheKey] = categoryHandler; } return categoryHandler; } async getPageHandler({ projectId, youzanMpName, categoryName, pageName, version, }, isDesignPlatform) { let cacheKey = `${projectId}-${youzanMpName}-${categoryName}-${pageName}-${version}`; let pageHandler = this.pageHandlerCache[cacheKey]; if (pageHandler) { return pageHandler; } let categoryHandler = await this.getCategoryHandler({ projectId, youzanMpName, categoryName, }, isDesignPlatform); pageHandler = await categoryHandler.getPageHandler({ pageName, version, }); if (!this.guideLocalDevelop) { this.pageHandlerCache[cacheKey] = pageHandler; } return pageHandler; } async checkGuideConfigUpdated(youzanMpName) { let guideDir = path_1.default.resolve(this.guideConfigDir, youzanMpName); let exist = await fs_extra_1.default.pathExists(guideDir); let serverGuideInfo = this.serverGuideInfoMap[youzanMpName]; if (exist) { try { let guideInfo = await fs_extra_1.default.readJson(path_1.default.resolve(guideDir, 'guide.meta.json')); if (!serverGuideInfo.version || guideInfo.version == serverGuideInfo.version) { return; } } catch (e) { console.log(`${youzanMpName}向导升级异常`, e); } } await this.downloadGuideConfig(youzanMpName, serverGuideInfo.url, serverGuideInfo.version); } async downloadGuideConfig(mpName, url, version) { let dir = path_1.default.resolve(this.guideConfigDir, mpName); await fs_extra_1.default.remove(dir); await (0, download_1.default)(url, dir, { extract: true, strip: 1, }); let guideMetaJson = { version, downloadTimestamp: Date.now(), downloadUrl: url, }; await fs_extra_1.default.writeJson(path_1.default.resolve(dir, 'guide.meta.json'), guideMetaJson, { spaces: 2 }); } }; tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], MiniProgramService.prototype, "projectService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], MiniProgramService.prototype, "customApiService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], MiniProgramService.prototype, "configService", void 0); MiniProgramService = tslib_1.__decorate([ (0, spring4js_nodejs_1.Service)() ], MiniProgramService); exports.default = MiniProgramService;