youzanyun-devtool-worker
Version:
165 lines (164 loc) • 7.15 kB
JavaScript
;
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;